DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_WRKFLOW_PKG

Source


1 PACKAGE BODY IGS_AD_WRKFLOW_PKG AS
2 /* $Header: IGSADC6B.pls 120.3 2006/05/26 07:21:04 pfotedar ship $ */
3 
4 PROCEDURE   Extract_Applications
5                        (  errbuf OUT NOCOPY VARCHAR2,
6                           retcode OUT NOCOPY NUMBER ,
7 			  p_person_id          		IN   hz_parties.party_id%TYPE,
8                           p_person_id_group             IN   igs_pe_prsid_grp_mem_all.group_id%TYPE,
9                           p_calendar_details    	IN   VARCHAR2,
10                           p_apc  			IN   VARCHAR2,
11 			  p_appl_type			IN   VARCHAR2,
12 			  p_prog_code			IN   VARCHAR2,
13 			  p_location			IN   VARCHAR2,
14 			  p_att_type			IN   VARCHAR2,
15 			  p_att_mode			IN   VARCHAR2,
16 			  p_appl_no_calendar		IN   VARCHAR2,
17 			  p_appl_range			IN   VARCHAR2
18 			) IS
19 
20  l_appl_exist VARCHAR2(1);
21  l_user_id NUMBER;
22  l_per_num hz_parties.party_number%type;
23  l_per_num1 hz_parties.party_number%type;
24  l_person_id NUMBER;
25  l_user_name VARCHAR2(100);
26  l_full_name VARCHAR2(1000);
27  l_count number := 0;
28 
29  l_adm_cal varchar2(10) := RTRIM(SUBSTR(p_calendar_details, 23, 10));
30  l_acad_cal varchar2(10):= RTRIM(SUBSTR(p_calendar_details,1,10));
31  l_acad_cal_seq_num number := IGS_GE_NUMBER.TO_NUM(SUBSTR(p_calendar_details,14,6));
32  l_adm_cal_seq_num number :=IGS_GE_NUMBER.TO_NUM(SUBSTR(p_calendar_details,37,6));
33  l_adm_cat VARCHAR2(10) := RTRIM(SUBSTR(p_apc,1, 10));
34  l_adm_proc_type varchar2(15) := RTRIM(SUBSTR(p_apc, 11, 30));
35  l_appl_type varchar2(30) := RTRIM(SUBSTR(p_appl_type, 1, 30));
36 
37 
38 /*  No program parameter has been provided,include application without calendar is YES and calendar range is CURRENT */
39      Cursor c_incom_appl_nopgm_curr_anc IS
40 	Select aa.person_id
41 	From IGS_SS_ADM_APPL_STG aa
42 	Where
43 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
44 	AND (p_person_id_group IS NOT NULL AND
45 	aa.person_id IN (SELECT person_id
46                  FROM igs_pe_prsid_grp_mem pgm
47                  WHERE pgm.group_id = nvl(p_person_id_group, pgm.group_id)
48 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
49                  OR
50                 (p_person_id_group is null))
51 	AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
52 	AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
53         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
54    	AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
55 	AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
56 	AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
57 	Group BY aa.person_id
58     UNION
59         Select aa.person_id
60         From IGS_SS_ADM_APPL_STG aa
61 	Where
62 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))  AND
63         (p_person_id_group IS NOT NULL AND
64         aa.person_id IN (SELECT person_id
65                  FROM igs_pe_prsid_grp_mem pgm
66                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
67 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
68                  OR
69                 (p_person_id_group is null)) AND
70 	(aa.ACAD_CAL_TYPE IS NULL And aa.ACAD_CAL_SEQ_NUMBER IS NULL And aa.ADM_CAL_TYPE IS NULL And aa.ADM_CAL_SEQ_NUMBER IS NULL)
71         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
72         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
73 	AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
74 	AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
75     Group BY aa.person_id;
76 
77 /*  No program parameter has been provided,include application without calendar is NO and calendar range is CURRENT */
78      Cursor c_incom_appl_nopgm_curr IS
79 	Select aa.person_id
80 	From IGS_SS_ADM_APPL_STG aa
81 	Where ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
82         AND (p_person_id_group IS NOT NULL AND
83         aa.person_id IN (SELECT person_id
84                  FROM igs_pe_prsid_grp_mem pgm
85                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
86 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
87                  OR
88                 (p_person_id_group is null))
89 	AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
90 	AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
91         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
92         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
93 	AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
94 	AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
95     Group BY aa.person_id;
96 
97 /*  Program parameter has been provided,include application without calendar is YES and calendar range is CURRENT */
98      Cursor c_incom_appl_pgm_curr_anc IS
99         Select aa.person_id
100         From IGS_SS_ADM_APPL_STG aa, IGS_SS_APP_PGM_STG aap
101         Where
102 	aap.SS_ADM_APPL_ID = aa.SS_ADM_APPL_ID(+)
103         And ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
104         AND (p_person_id_group IS NOT NULL AND
105         aa.person_id IN (SELECT person_id
106                  FROM igs_pe_prsid_grp_mem pgm
107                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
108 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
109                  OR
110                 (p_person_id_group is null))
111         AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
112         AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
113         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
114         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
115         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
116         AND ((aap.NOMINATED_COURSE_CD = p_prog_code AND p_prog_code IS NOT NULL ) OR (p_prog_code IS NULL))
117         AND ((aap.LOCATION_CD = p_location AND p_location IS NOT NULL ) OR (p_location IS NULL))
118         AND ((aap.ATTENDANCE_TYPE = p_att_type AND p_att_type IS NOT NULL ) OR (p_att_type IS NULL))
119         AND ((aap.ATTENDANCE_MODE = p_att_mode AND p_att_mode IS NOT NULL ) OR (p_att_mode IS NULL))
120         AND aa.APP_SOURCE_ID IN (select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
121 	Group BY aa.person_id
122     UNION
123         Select aa.person_id
124         From IGS_SS_ADM_APPL_STG aa
125         Where
126         ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
127         AND (p_person_id_group IS NOT NULL AND
128         aa.person_id IN (SELECT person_id
129                  FROM igs_pe_prsid_grp_mem pgm
130                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
131 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
132                  OR
133                 (p_person_id_group is null))
134 	AND (aa.ACAD_CAL_TYPE IS NULL And aa.ACAD_CAL_SEQ_NUMBER IS NULL And aa.ADM_CAL_TYPE IS NULL And aa.ADM_CAL_SEQ_NUMBER IS NULL)
135 	AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
136 	AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
137         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
138         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
139     	Group BY aa.person_id;
140 
141 /*  Program parameter has been provided,include application without calendar is NO and calendar range is CURRENT */
142      Cursor c_incom_appl_pgm_curr IS
143         Select aa.person_id
144         From IGS_SS_ADM_APPL_STG aa, IGS_SS_APP_PGM_STG aap
145         Where aap.SS_ADM_APPL_ID = aa.SS_ADM_APPL_ID(+)
146         And ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
147         AND (p_person_id_group IS NOT NULL AND
148         aa.person_id IN (SELECT person_id
149                  FROM igs_pe_prsid_grp_mem pgm
150                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
151 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
152                  OR
153                 (p_person_id_group is null))
154 	AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
155 	AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
156 	AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
157 	AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
158         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
159         AND ((aap.NOMINATED_COURSE_CD = p_prog_code AND p_prog_code IS NOT NULL ) OR (p_prog_code IS NULL))
160         AND ((aap.LOCATION_CD = p_location AND p_location IS NOT NULL ) OR (p_location IS NULL))
161         AND ((aap.ATTENDANCE_TYPE = p_att_type AND p_att_type IS NOT NULL ) OR (p_att_type IS NULL))
162         AND ((aap.ATTENDANCE_MODE = p_att_mode AND p_att_mode IS NOT NULL ) OR (p_att_mode IS NULL))
163         AND aa.APP_SOURCE_ID IN (select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
164     Group BY aa.person_id;
165 
166 /*  No program parameter has been provided,include application without calendar is YES and calendar range is CURRFUTURE */
167      Cursor c_incom_appl_nopgm_cnf_anc IS
168         Select aa.person_id
169         From IGS_SS_ADM_APPL_STG aa
170         Where
171 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
172         AND (p_person_id_group IS NOT NULL
173         AND aa.person_id IN (SELECT person_id
174                  FROM igs_pe_prsid_grp_mem pgm
175                  WHERE pgm.group_id = p_person_id_group
176 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
177                  OR
178                 (p_person_id_group is null))
179 	AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
180         AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
181         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
182         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
183         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
184         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
185 	UNION
186 	Select aa.person_id
187         From IGS_SS_ADM_APPL_STG aa
188         Where
189 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
190         AND (p_person_id_group IS NOT NULL
191         AND aa.person_id IN (SELECT person_id
192                  FROM igs_pe_prsid_grp_mem pgm
193                  WHERE pgm.group_id = p_person_id_group
194 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
195                  OR
196                 (p_person_id_group is null))
197 	AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
198 	AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
199         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type
200    	AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
201  	AND ((aa.acad_cal_type,aa.acad_cal_seq_number,aa.adm_cal_type, aa.adm_cal_seq_number) in
202    	(
203    	select
204            r.sup_cal_type,
205            r.sup_ci_sequence_number,
206            r.sub_cal_type,
207            r.sub_ci_sequence_number
208    	from
209            igs_ca_inst_rel r
210    	, igs_ca_type t1
211    	, igs_ca_type t2
212    	, igs_ca_inst acad
213    	, igs_ca_inst adm
214    	where
215         sup_cal_type = t1.cal_type
216    	and t1.s_cal_cat = 'ACADEMIC'
217    	and sub_cal_type = t2.cal_type
218    	and t2.s_cal_cat = 'ADMISSION'
219    	and sup_cal_type = acad.cal_type
220    	and sup_ci_sequence_number = acad.sequence_number
221    	and sub_cal_type = adm.cal_type
222    	and sub_ci_sequence_number = adm.sequence_number
223    	and acad.start_dt > ( 	select ci.start_dt
224 			      	from igs_ca_inst ci
225  			      	where ci.cal_type = l_acad_cal
226  			      	and ci.sequence_number = l_acad_cal_seq_num)
227    	and adm.start_dt > ( 	select ci.start_dt
228  				from igs_ca_inst ci
229  			   	where ci.cal_type = l_adm_cal
230  				and ci.sequence_number = l_adm_cal_seq_num)
231   	 )
232         )
233         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
234 	Group BY aa.person_id
235     UNION
236         Select aa.person_id
237         From IGS_SS_ADM_APPL_STG aa
238         Where
239 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
240         AND (p_person_id_group IS NOT NULL
241         AND aa.person_id IN (SELECT person_id
242                  FROM igs_pe_prsid_grp_mem pgm
243                  WHERE pgm.group_id = p_person_id_group
244 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
245                  OR
246                 (p_person_id_group is null))
247 	AND (aa.ACAD_CAL_TYPE IS NULL And aa.ACAD_CAL_SEQ_NUMBER IS NULL And aa.ADM_CAL_TYPE IS NULL And aa.ADM_CAL_SEQ_NUMBER IS NULL)
248         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
249         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
250         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
251         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
252         Group BY aa.person_id;
253 
254 /*  No program parameter has been provided,include application without calendar is NO and calendar range is CURRFUTURE */
255      Cursor c_incom_appl_nopgm_cnf IS
256         Select aa.person_id
257         From IGS_SS_ADM_APPL_STG aa
258         Where ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
259         AND (p_person_id_group IS NOT NULL AND
260         aa.person_id IN (SELECT person_id
261                  FROM igs_pe_prsid_grp_mem pgm
262                  WHERE pgm.group_id = p_person_id_group
263 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
264                  OR
265                 (p_person_id_group is null))
266         AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
267         AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
268         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
269         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
270         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
271         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
272 	Group BY aa.person_id
273 	UNION
274 	Select aa.person_id
275         From IGS_SS_ADM_APPL_STG aa
276         Where
277 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
278         AND (p_person_id_group IS NOT NULL AND
279         aa.person_id IN (SELECT person_id
280                  FROM igs_pe_prsid_grp_mem pgm
281                  WHERE pgm.group_id = p_person_id_group
282 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
283                  OR
284                 (p_person_id_group is null))
285         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
286         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
287         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type
288    	AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
289  	AND ((aa.acad_cal_type,aa.acad_cal_seq_number,aa.adm_cal_type, aa.adm_cal_seq_number) in
290    	(
291    	select
292            r.sup_cal_type,
293            r.sup_ci_sequence_number,
294            r.sub_cal_type,
295            r.sub_ci_sequence_number
296    	from
297            igs_ca_inst_rel r
298    	, igs_ca_type t1
299    	, igs_ca_type t2
300    	, igs_ca_inst acad
301    	, igs_ca_inst adm
302    	where
303         sup_cal_type = t1.cal_type
304    	and t1.s_cal_cat = 'ACADEMIC'
305    	and sub_cal_type = t2.cal_type
306    	and t2.s_cal_cat = 'ADMISSION'
307    	and sup_cal_type = acad.cal_type
308    	and sup_ci_sequence_number = acad.sequence_number
309    	and sub_cal_type = adm.cal_type
310    	and sub_ci_sequence_number = adm.sequence_number
311    	and acad.start_dt > ( 	select ci.start_dt
312 			      	from igs_ca_inst ci
313  			      	where ci.cal_type = l_acad_cal
314  			      	and ci.sequence_number = l_acad_cal_seq_num)
315    	and adm.start_dt > ( 	select ci.start_dt
316  				from igs_ca_inst ci
317  			   	where ci.cal_type = l_adm_cal
318  				and ci.sequence_number = l_adm_cal_seq_num)
319   	 )
320         )
321         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
322         Group BY aa.person_id;
323 
324 /*  Program parameter has been provided,include application without calendar is YES and calendar range is CURRFUTURE */
325      Cursor c_incom_appl_pgm_cnf_anc IS
326         Select aa.person_id
327         From IGS_SS_ADM_APPL_STG aa, IGS_SS_APP_PGM_STG aap
328         Where
329 	aap.SS_ADM_APPL_ID = aa.SS_ADM_APPL_ID(+)
330         And ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
331         AND (p_person_id_group IS NOT NULL AND
332         aa.person_id IN (SELECT person_id
333                  FROM igs_pe_prsid_grp_mem pgm
334                  WHERE pgm.group_id = p_person_id_group
335 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
336                  OR
337                 (p_person_id_group is null))
338         AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
339         AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
340         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
341         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
342         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
343         AND ((aap.NOMINATED_COURSE_CD = p_prog_code AND p_prog_code IS NOT NULL ) OR (p_prog_code IS NULL))
344         AND ((aap.LOCATION_CD = p_location AND p_location IS NOT NULL ) OR (p_location IS NULL))
345         AND ((aap.ATTENDANCE_TYPE = p_att_type AND p_att_type IS NOT NULL ) OR (p_att_type IS NULL))
346         AND ((aap.ATTENDANCE_MODE = p_att_mode AND p_att_mode IS NOT NULL ) OR (p_att_mode IS NULL))
347         AND aa.APP_SOURCE_ID IN (select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
348 	Group BY aa.person_id
349 	UNION
350 	Select aa.person_id
351         From IGS_SS_ADM_APPL_STG aa
352         Where
353 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
354         AND (p_person_id_group IS NOT NULL AND
355         aa.person_id IN (SELECT person_id
356                  FROM igs_pe_prsid_grp_mem pgm
357                  WHERE pgm.group_id = p_person_id_group
358 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
359                  OR
360                 (p_person_id_group is null))
361         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
362         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
363         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type
364    	AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
365  	AND ((aa.acad_cal_type,aa.acad_cal_seq_number,aa.adm_cal_type, aa.adm_cal_seq_number) in
366    	(
367    	select
368            r.sup_cal_type,
369            r.sup_ci_sequence_number,
370            r.sub_cal_type,
371            r.sub_ci_sequence_number
372    	from
373            igs_ca_inst_rel r
374    	, igs_ca_type t1
375    	, igs_ca_type t2
376    	, igs_ca_inst acad
377    	, igs_ca_inst adm
378    	where
379         sup_cal_type = t1.cal_type
380    	and t1.s_cal_cat = 'ACADEMIC'
381    	and sub_cal_type = t2.cal_type
382    	and t2.s_cal_cat = 'ADMISSION'
383    	and sup_cal_type = acad.cal_type
384    	and sup_ci_sequence_number = acad.sequence_number
385    	and sub_cal_type = adm.cal_type
386    	and sub_ci_sequence_number = adm.sequence_number
387    	and acad.start_dt > ( 	select ci.start_dt
388 			      	from igs_ca_inst ci
389  			      	where ci.cal_type = l_acad_cal
390  			      	and ci.sequence_number = l_acad_cal_seq_num)
391    	and adm.start_dt > ( 	select ci.start_dt
392  				from igs_ca_inst ci
393  			   	where ci.cal_type = l_adm_cal
394  				and ci.sequence_number = l_adm_cal_seq_num)
395   	 )
396         )
397         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
398 	Group BY aa.person_id
399     UNION
400         Select aa.person_id
401         From IGS_SS_ADM_APPL_STG aa
402         Where
403         ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
404         AND (p_person_id_group IS NOT NULL AND
405         aa.person_id IN (SELECT person_id
406                  FROM igs_pe_prsid_grp_mem pgm
407                  WHERE pgm.group_id = p_person_id_group
408 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
409                  OR
410                 (p_person_id_group is null))
411         AND (aa.ACAD_CAL_TYPE IS NULL And aa.ACAD_CAL_SEQ_NUMBER IS NULL And aa.ADM_CAL_TYPE IS NULL And aa.ADM_CAL_SEQ_NUMBER IS NULL)
412         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
413         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
414         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
415         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
416         Group BY aa.person_id;
417 
418 /*  Program parameter has been provided,include application without calendar is YES and calendar range is CURRFUTURE */
419      Cursor c_incom_appl_pgm_cnf IS
420         Select aa.person_id
421         From IGS_SS_ADM_APPL_STG aa, IGS_SS_APP_PGM_STG aap
422         Where aap.SS_ADM_APPL_ID = aa.SS_ADM_APPL_ID(+)
423         And ((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
424         AND (p_person_id_group IS NOT NULL AND
425         aa.person_id IN (SELECT person_id
426                  FROM igs_pe_prsid_grp_mem pgm
427                  WHERE pgm.group_id = p_person_id_group
428 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
429                  OR
430                 (p_person_id_group is null))
431         AND ((aa.ACAD_CAL_TYPE= l_acad_cal) AND (aa.ACAD_CAL_SEQ_NUMBER= l_acad_cal_seq_num)
432         AND (aa.ADM_CAL_TYPE= l_adm_cal) AND (aa.ADM_CAL_SEQ_NUMBER= l_adm_cal_seq_num))
433         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
434         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
435         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
436         AND ((aap.NOMINATED_COURSE_CD = p_prog_code AND p_prog_code IS NOT NULL ) OR (p_prog_code IS NULL))
437         AND ((aap.LOCATION_CD = p_location AND p_location IS NOT NULL ) OR (p_location IS NULL))
438         AND ((aap.ATTENDANCE_TYPE = p_att_type AND p_att_type IS NOT NULL ) OR (p_att_type IS NULL))
439         AND ((aap.ATTENDANCE_MODE = p_att_mode AND p_att_mode IS NOT NULL ) OR (p_att_mode IS NULL))
440         AND aa.APP_SOURCE_ID IN (select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
441 	UNION
442 	Select aa.person_id
443         From IGS_SS_ADM_APPL_STG aa
444         Where
445 	((aa.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
446         AND (p_person_id_group IS NOT NULL AND
447         aa.person_id IN (SELECT person_id
448                  FROM igs_pe_prsid_grp_mem pgm
449                  WHERE pgm.group_id = p_person_id_group
450 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
451                  OR
452                 (p_person_id_group is null))
453         AND (((aa.ADMISSION_CAT = l_adm_cat) AND (aa.S_ADM_PROCESS_TYPE = l_adm_proc_type)
454         AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
455         AND ((aa.ADMISSION_APPLICATION_TYPE = p_appl_type
456    	AND p_appl_type IS NOT NULL ) OR (p_appl_type IS NULL))
457  	AND ((aa.acad_cal_type,aa.acad_cal_seq_number,aa.adm_cal_type, aa.adm_cal_seq_number) in
458    	(
459    	select
460            r.sup_cal_type,
461            r.sup_ci_sequence_number,
462            r.sub_cal_type,
463            r.sub_ci_sequence_number
464    	from
465            igs_ca_inst_rel r
466    	, igs_ca_type t1
467    	, igs_ca_type t2
468    	, igs_ca_inst acad
469    	, igs_ca_inst adm
470    	where
471         sup_cal_type = t1.cal_type
472    	and t1.s_cal_cat = 'ACADEMIC'
473    	and sub_cal_type = t2.cal_type
474    	and t2.s_cal_cat = 'ADMISSION'
475    	and sup_cal_type = acad.cal_type
476    	and sup_ci_sequence_number = acad.sequence_number
477    	and sub_cal_type = adm.cal_type
478    	and sub_ci_sequence_number = adm.sequence_number
479    	and acad.start_dt > ( 	select ci.start_dt
480 			      	from igs_ca_inst ci
481  			      	where ci.cal_type = l_acad_cal
482  			      	and ci.sequence_number = l_acad_cal_seq_num)
483    	and adm.start_dt > ( 	select ci.start_dt
484  				from igs_ca_inst ci
485  			   	where ci.cal_type = l_adm_cal
486  				and ci.sequence_number = l_adm_cal_seq_num)
487   	 )
488         )
489         AND aa.APP_SOURCE_ID IN ( select code_id from igs_ad_code_classes where CLASS = 'SYS_APPL_SOURCE' and system_status = 'WEB_APPL' AND CLASS_TYPE_CODE='ADM_CODE_CLASSES')
490 	Group BY aa.person_id;
491 
492 
493  CURSOR cur_user(cp_person_id igs_ss_adm_appl_stg.person_id%TYPE) IS
494    SELECT user_id, user_name, description
495    FROM   FND_USER
496    WHERE  person_party_id = cp_person_id ;
497 
498  CURSOR c_per_num IS
499    SELECT party_number
500    FROM   HZ_PARTIES
501    WHERE  party_id = p_person_id ;
502 
503  CURSOR c_per_num1(cp_person_id igs_ss_adm_appl_stg.person_id%TYPE) IS
504    SELECT party_number
505    FROM   HZ_PARTIES
506    WHERE  party_id = cp_person_id ;
507 
508 BEGIN
509 
510     -- The following code is added for disabling of OSS in R12.IGS.A - Bug 4955192
511     igs_ge_gen_003.set_org_id(null);
512 
513     RETCODE := 0;
514     ERRBUF  := NULL;
515 
516     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_APPNTF_PRMS');
517     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
518 
519     OPEN c_per_num;
520     FETCH c_per_num INTO l_per_num;
521     CLOSE c_per_num;
522 
523     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_PNUM');
524     FND_MESSAGE.SET_TOKEN ('PNUM', l_per_num);
525     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
526 
527     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_PID_GRP');
528     FND_MESSAGE.SET_TOKEN ('PGPID', p_person_id_group);
529     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
530 
531     FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APP_LG_CL_DTLS');
532     FND_MESSAGE.SET_TOKEN('CLDTLS', p_calendar_details);
533     FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
534 
535     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_APC');
536     FND_MESSAGE.SET_TOKEN ('APC', p_apc);
537     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
538 
539     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_APPL_TYPE');
540     FND_MESSAGE.SET_TOKEN ('APPLTYPE', p_appl_type);
541     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
542 
543     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_CRCD');
544     FND_MESSAGE.SET_TOKEN ('CRCD', p_prog_code);
545     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
546 
547     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_LOC');
548     FND_MESSAGE.SET_TOKEN ('LOC', p_location);
549     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
550 
551     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_ATT_TYPE');
552     FND_MESSAGE.SET_TOKEN ('ATTTYPE', p_att_type);
553     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
554 
555     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_ATT_MODE');
556     FND_MESSAGE.SET_TOKEN ('ATTMODE', p_att_mode);
557     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
558 
559     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_APPL_NC');
560     FND_MESSAGE.SET_TOKEN ('APPLNOCAL', p_appl_no_calendar);
561     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
562 
563     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_APPL_RANGE');
564     FND_MESSAGE.SET_TOKEN ('APPLRNGE', p_appl_range);
565     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
566     FND_FILE.PUT_LINE (FND_FILE.LOG, '');
567     FND_FILE.PUT_LINE (FND_FILE.LOG, '');
568 
569         IF (p_person_id IS NOT NULL AND p_person_id_group IS NOT NULL ) THEN
570 
571 	  FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_NO_PERID_PERIDGRP');
572           FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
573 
574 	ELSIF NVL( p_appl_range, 'CURRENT') = 'CURRFUTURE' THEN
575 
576 		IF p_prog_code IS NULL THEN
577 
578 			IF NVL(p_appl_no_calendar,'N') = 'Y' THEN
579 
580 			 	l_count := 0;
581 
582 	   			OPEN c_incom_appl_nopgm_cnf_anc;
583 				LOOP
584 				FETCH c_incom_appl_nopgm_cnf_anc INTO l_person_id;
585 				EXIT WHEN c_incom_appl_nopgm_cnf_anc%NOTFOUND;
586 
587 		  	    	IF c_incom_appl_nopgm_cnf_anc%FOUND THEN
588 					l_count := l_count+1;
589 
590 	  		    		OPEN cur_user(l_person_id);
591 	  		    		FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
592 
593                         		IF cur_user%FOUND THEN
594 
595     					OPEN c_per_num1(l_person_id);
596     					FETCH c_per_num1 INTO l_per_num1;
597     					CLOSE c_per_num1;
598 
599 					FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
600 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
601 					FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
602 
603                                 		WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
604 					ELSE
605 				 	-- write in the log that no user_id exists in the FND_USER table for this person_id
606                                 	FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
607 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
608                                 	FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
609 
610                         		END IF;
611 
612                             		CLOSE cur_user;
613 
614 				END IF; /* c_incom_appl_nopgm_cnf_anc */
615 				END LOOP;
616 
617                                 IF l_count = 0 THEN
618                                 -- write in the log file that no record exists
619                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
620                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
621                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
622                                 END IF;
623 
624 				CLOSE c_incom_appl_nopgm_cnf_anc;
625 
626 	      		ELSIF NVL(p_appl_no_calendar,'N') = 'N' THEN
627 				l_count := 0;
628    				OPEN c_incom_appl_nopgm_cnf;
629 				LOOP
630 				FETCH c_incom_appl_nopgm_cnf INTO l_person_id;
631 				EXIT WHEN c_incom_appl_nopgm_cnf%NOTFOUND;
632 
633 			  	IF c_incom_appl_nopgm_cnf%FOUND THEN
634 					l_count := l_count+1;
635 
636 	  		  		OPEN cur_user(l_person_id);
637 	  				FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
638 
639 	  				IF cur_user%FOUND THEN
640 
641                                         OPEN c_per_num1(l_person_id);
642                                         FETCH c_per_num1 INTO l_per_num1;
643                                         CLOSE c_per_num1;
644 
645                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
646                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
647                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
648 
649 	   					WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
650 					ELSE
651                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
652                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
653 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
654                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
655 
656 	  				END IF; /* cur_user */
657 
658 	  		  		CLOSE cur_user;
659 
660 				END IF; /* c_incom_appl_nopgm_cnf */
661 				END LOOP;
662 
663                                 IF l_count = 0 THEN
664                                 -- write in the log file that no record exists
665                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
666                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
667                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
668                                 END IF;
669 
670 				CLOSE c_incom_appl_nopgm_cnf;
671 
672 	    		END IF; /* p_appl_no_calendar */
673 
674 		ELSIF p_prog_code IS NOT NULL THEN -- i.e.program parameter has been supplied
675 
676 	    		IF NVL(p_appl_no_calendar,'N') = 'Y' THEN
677 
678 				l_count := 0;
679                    		OPEN c_incom_appl_pgm_cnf_anc;
680 				LOOP
681                    		FETCH c_incom_appl_pgm_cnf_anc INTO l_person_id;
682 				EXIT WHEN c_incom_appl_pgm_cnf_anc%NOTFOUND;
683 
684                 		IF c_incom_appl_pgm_cnf_anc%FOUND THEN
685 					l_count := l_count+1;
686 
687                         		OPEN cur_user(l_person_id);
688 
689                         		FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
690 
691                         		IF cur_user%FOUND THEN
692 
693                                         OPEN c_per_num1(l_person_id);
694                                         FETCH c_per_num1 INTO l_per_num1;
695                                         CLOSE c_per_num1;
696 
697                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
698                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
699                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
700 
701                         			WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
702 					ELSE
703                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
704                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
705 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
706                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
707 
708                         		END IF; /* cur_user */
709 
710                         		CLOSE cur_user;
711 
712                 		END IF; /* c_incom_appl_pgm_cnf_anc */
713 				END LOOP;
714 
715                                 IF l_count = 0 THEN
716                                 -- write in the log file that no record exists
717                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
718                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
719                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
720                                 END IF;
721 
722                 		CLOSE c_incom_appl_pgm_cnf_anc;
723 
724 	    		ELSIF NVL(p_appl_no_calendar,'N') = 'N' THEN
725 
726 				l_count := 0;
727                 		OPEN c_incom_appl_pgm_cnf;
728 				LOOP
729 
730                 		FETCH c_incom_appl_pgm_cnf INTO l_person_id;
731 				EXIT WHEN c_incom_appl_pgm_cnf%NOTFOUND;
732 
733                 		IF c_incom_appl_pgm_cnf%FOUND THEN
734 					l_count := l_count+1;
735 
736                         		OPEN cur_user(l_person_id);
737 
738                         		FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
739 
740                         		IF cur_user%FOUND THEN
741 
742                                         OPEN c_per_num1(l_person_id);
743                                         FETCH c_per_num1 INTO l_per_num1;
744                                         CLOSE c_per_num1;
745 
746                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
747                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
748                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
749 
750                                 		WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
751 					ELSE
752                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
753                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
754 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
755                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
756 
757                         		END IF; /* cur_user */
758 
759                         		CLOSE cur_user;
760 
761                 		END IF; /* c_incom_appl_pgm_cnf */
762 				END LOOP;
763 
764                                 IF l_count = 0 THEN
765                                 -- write in the log file that no record exists
766                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
767                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
768                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
769                                 END IF;
770 
771                 		CLOSE c_incom_appl_pgm_cnf;
772 
773 	    		END IF; /* p_appl_no_calendar */
774 
775 		END IF; /* p_prog_code */
776 
777         ELSIF NVL(p_appl_range, 'CURRENT') = 'CURRENT' THEN
778 
779                 IF p_prog_code IS NULL THEN
780 
781                         IF NVL(p_appl_no_calendar,'N') = 'Y' THEN
782 				l_count := 0;
783                                 OPEN c_incom_appl_nopgm_curr_anc;
784 
785 				LOOP
786 
787                                 FETCH c_incom_appl_nopgm_curr_anc INTO l_person_id;
788 				EXIT WHEN c_incom_appl_nopgm_curr_anc%NOTFOUND;
789 
790                                 IF c_incom_appl_nopgm_curr_anc%FOUND THEN
791 					l_count := l_count+1;
792 
793                                         OPEN cur_user(l_person_id);
794                                         FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
795 
796                                         IF cur_user%FOUND THEN
797 
798                                         OPEN c_per_num1(l_person_id);
799                                         FETCH c_per_num1 INTO l_per_num1;
800                                         CLOSE c_per_num1;
801 
802                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
803                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
804                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
805 
806                                                 WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
807                                         ELSE
808                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
809                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
810 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
811                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
812 
813                                         END IF;
814 
815                                         CLOSE cur_user;
816                                END IF; /* c_incom_appl_nopgm_curr_anc */
817 				END LOOP;
818                                 IF l_count = 0 THEN
819                                 -- write in the log file that no record exists
820                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
821                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
822                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
823 
824 				END IF;
825 
826 
827                                 CLOSE c_incom_appl_nopgm_curr_anc;
828 
829                         ELSIF NVL(p_appl_no_calendar,'N') = 'N' THEN
830 				l_count := 0;
831                                 OPEN c_incom_appl_nopgm_curr;
832 				LOOP
833                                 FETCH c_incom_appl_nopgm_curr INTO l_person_id;
834 				EXIT WHEN c_incom_appl_nopgm_curr%NOTFOUND;
835 
836                                 IF c_incom_appl_nopgm_curr%FOUND THEN
837 					l_count := l_count +1;
838 
839                                         OPEN cur_user(l_person_id);
840                                         FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
841 
842                                         IF cur_user%FOUND THEN
843 
844                                         OPEN c_per_num1(l_person_id);
845                                         FETCH c_per_num1 INTO l_per_num1;
846                                         CLOSE c_per_num1;
847 
848                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
849                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
850                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
851 
852                                                 WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
853 
854                                         ELSE
855                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
856                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
857 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
858                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
859 
860                                         END IF; /* cur_user */
861 
862                                         CLOSE cur_user;
863                                 END IF; /* c_incom_appl_nopgm_curr */
864 				END LOOP;
865 				IF l_count = 0 THEN
866                                 -- write in the log file that no record exists
867                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
868                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
869                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
870 				END IF;
871 
872                                 CLOSE c_incom_appl_nopgm_curr;
873 
874                         END IF; /* p_appl_no_calendar */
875 
876                 ELSIF p_prog_code IS NOT NULL THEN -- i.e.program parameter has been supplied
877 
878                         IF NVL(p_appl_no_calendar,'N') = 'Y' THEN
879 			l_count := 0;
880 
881                                 OPEN c_incom_appl_pgm_curr_anc;
882 				LOOP
883                                 FETCH c_incom_appl_pgm_curr_anc INTO l_person_id;
884 				EXIT WHEN c_incom_appl_pgm_curr_anc%NOTFOUND;
885 
886                                 IF c_incom_appl_pgm_curr_anc%FOUND THEN
887 					l_count := l_count +1;
888 
889                                         OPEN cur_user(l_person_id);
890 
891                                         FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
892 
893                                         IF cur_user%FOUND THEN
894 
895                                         OPEN c_per_num1(l_person_id);
896                                         FETCH c_per_num1 INTO l_per_num1;
897                                         CLOSE c_per_num1;
898 
899                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
900                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
901                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
902 
903                                                 WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
904                                         ELSE
905                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
906                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
907 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
908                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
909 
910                                         END IF; /* cur_user */
911 
912                                         CLOSE cur_user;
913 
914                                 END IF; /* c_incom_appl_pgm_curr_anc */
915 				END LOOP;
916 
917                                 IF l_count = 0 THEN
918                                 -- write in the log file that no record exists
919                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
920                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
921                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
922                                 END IF;
923 
924                                 CLOSE c_incom_appl_pgm_curr_anc;
925 
926                         ELSIF NVL(p_appl_no_calendar,'N') = 'N' THEN
927 				l_count := 0;
928                                 OPEN c_incom_appl_pgm_curr;
929 
930 				LOOP
931                                 FETCH c_incom_appl_pgm_curr INTO l_person_id;
932 				EXIT WHEN c_incom_appl_pgm_curr%NOTFOUND;
933 
934                                 IF c_incom_appl_pgm_curr%FOUND THEN
935 					l_count := l_count+1;
936 
937                                         OPEN cur_user(l_person_id);
938 
939                                         FETCH cur_user INTO l_user_id, l_user_name, l_full_name;
940 
941                                         IF cur_user%FOUND THEN
942 
943                                         OPEN c_per_num1(l_person_id);
944                                         FETCH c_per_num1 INTO l_per_num1;
945                                         CLOSE c_per_num1;
946 
947                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF1');
948                                         FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
949                                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
950 
951                                                 WF_Inform_Applicant_INAP(l_user_id, l_user_name, l_full_name);
952                                         ELSE
953                                         -- write in the log that no user_id exists in the FND_USER table for this person_id
954                                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_USR_PER_INV_COMB');
955 					FND_MESSAGE.SET_TOKEN ('PERSONNUM', l_per_num1);
956                                         FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
957 
958                                         END IF; /* cur_user */
959 
960                                         CLOSE cur_user;
961 
962                                 END IF; /* c_incom_appl_pgm_curr */
963 				END LOOP;
964                                 IF l_count = 0 THEN
965                                 -- write in the log file that no record exists
966                                 -- Invalid parameters entered. Valid combinations for parameters to be entered
967                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
968                                 FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
969                                 END IF;
970 
971                                 CLOSE c_incom_appl_pgm_curr;
972 
973                         END IF; /* p_appl_no_calendar */
974 
975                 END IF; /* p_prog_code */
976 
977 	END IF; /* p_appl_range */
978 
979   EXCEPTION
980      WHEN OTHERS THEN
981        RETCODE := 2;
982        ERRBUF  := fnd_message.get_string( 'IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
983        IGS_GE_MSG_STACK.CONC_EXCEPTION_HNDL;
984 
985    IF c_incom_appl_nopgm_curr_anc%ISOPEN THEN
986       CLOSE c_incom_appl_nopgm_curr_anc;
987    END IF;
988    IF c_incom_appl_nopgm_curr%ISOPEN THEN
989       CLOSE c_incom_appl_nopgm_curr;
990    END IF;
991    IF c_incom_appl_pgm_curr_anc%ISOPEN THEN
992       CLOSE c_incom_appl_pgm_curr_anc;
993    END IF;
994    IF c_incom_appl_pgm_curr%ISOPEN THEN
995       CLOSE c_incom_appl_pgm_curr;
996    END IF;
997    IF c_incom_appl_nopgm_cnf_anc%ISOPEN THEN
998       CLOSE c_incom_appl_nopgm_cnf_anc;
999    END IF;
1000    IF c_incom_appl_nopgm_cnf%ISOPEN THEN
1001       CLOSE c_incom_appl_nopgm_cnf;
1002    END IF;
1003    IF c_incom_appl_pgm_cnf_anc%ISOPEN THEN
1004       CLOSE c_incom_appl_pgm_cnf_anc;
1005    END IF;
1006    IF c_incom_appl_pgm_cnf%ISOPEN THEN
1007       CLOSE c_incom_appl_pgm_cnf;
1008    END IF;
1009    IF c_per_num%ISOPEN THEN
1010       CLOSE c_per_num;
1011    END IF;
1012    IF c_per_num1%ISOPEN THEN
1013       CLOSE c_per_num1;
1014    END IF;
1015 
1016 
1017 END Extract_Applications;
1018 
1019 /* *************************************************************************************/
1020 -- This Procedure raises an event when there incomplete application concurrent job is submitted.
1021 /* *************************************************************************************/
1022 
1023 PROCEDURE  Wf_Inform_Applicant_INAP
1024                        (  p_applicant_id        IN   NUMBER,
1025                           p_applicant_name      IN   VARCHAR2,
1026                           p_applicant_full_name IN   VARCHAR2
1027                         )
1028 IS
1029     l_event_t             wf_event_t;
1030     l_parameter_list_t    wf_parameter_list_t;
1031     l_itemKey             varchar2(100);
1032     l_incomplt_appl_url   varchar2(1000);
1033 
1034 
1035      CURSOR  cur_seq IS
1036          SELECT IGS_AD_WF_INAPPL_S.NEXTVAL
1037          FROM dual;
1038 
1039 
1040 BEGIN
1041 
1042          -- initialize the wf_event_t object
1043          --
1044          wf_event_t.Initialize(l_event_t);
1045 
1046     	 OPEN cur_seq ;
1047     	 FETCH cur_seq INTO l_itemKey ;
1048     	 CLOSE cur_seq ;
1049 
1050 
1051 
1052          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_ID',p_Value => p_applicant_id, p_parameterlist=>l_parameter_list_t);
1053          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_NAME',p_Value => p_applicant_name, p_parameterlist=>l_parameter_list_t);
1054          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_FULL_NAME',p_Value => p_applicant_full_name, p_parameterlist=>l_parameter_list_t);
1055 --       wf_event.AddParameterToList ( p_Name => 'IA_INCOM_APPL_URL',p_Value => l_incomplt_appl_url, p_parameterlist=>l_parameter_list_t);
1056 
1057 -- raise the event
1058 
1059 WF_EVENT.RAISE (p_event_name => 'oracle.apps.igs.ad.appl.incmpl_appl',
1060                 p_event_key  => l_itemKey,
1061                 p_parameters => l_parameter_list_t);
1062 
1063 l_parameter_list_t.delete;
1064 
1065 END Wf_Inform_Applicant_INAP ;
1066 
1067 
1068 PROCEDURE wf_set_url_inap (itemtype    IN  VARCHAR2  ,
1069                         itemkey     IN  VARCHAR2  ,
1070                         actid       IN  NUMBER   ,
1071                         funcmode    IN  VARCHAR2  ,
1072                         resultout   OUT NOCOPY VARCHAR2
1073                        ) AS
1074 
1075    l_date_prod            VARCHAR2(30);
1076    l_doc_type             VARCHAR2(30);
1077    l_role_name            VARCHAR2(320);
1078    l_role_display_name    VARCHAR2(320) := 'Adhoc Role for IGSAS006';
1079    l_person_id_sep        VARCHAR2(4000);
1080    l_person_id            VARCHAR2(30);
1081 --   l_profile_value	  VARCHAR2(200) := FND_PROFILE.VALUE('APPS_JSP_AGENT');
1082 
1083 
1084  l_url varchar2(4000) := 'http://qapache.us.oracle.com:16526/OA_HTML/OA.jsp?akRegionCode=IGS_AD_APPL_INCOMPLETE_PAGE&akRegionApplicationId=8405';
1085  l_value varchar2(100);
1086 
1087  BEGIN
1088    IF (funcmode  = 'RUN') THEN
1089 
1090        Wf_Engine.SetItemAttrText(  ItemType  =>  itemtype,
1091                                  ItemKey   =>  itemkey,
1092                                  aname     =>  'IA_INCOM_APPL_URL',
1093                                  avalue    =>  l_url
1094                                 );
1095 
1096        l_value  := Wf_Engine.GetItemAttrText(itemtype,itemkey,'IA_INCOM_APPL_URL');
1097      Resultout:= 'COMPLETE:';
1098      RETURN;
1099    END IF;
1100 END wf_set_url_inap;
1101 
1102 
1103 PROCEDURE   Adm_Application_Req
1104                        (  errbuf OUT NOCOPY VARCHAR2,
1105                           retcode OUT NOCOPY NUMBER ,
1106                           p_person_id                   IN   hz_parties.party_id%TYPE,
1107                           p_person_id_group             IN   igs_pe_prsid_grp_mem_all.group_id%TYPE,
1108 			  p_appl_id             	IN   igs_ad_appl.application_id%Type,
1109 			  p_calendar_details            IN   VARCHAR2,
1110 			  p_tracking_type		IN   VARCHAR2,
1111                           p_apc                         IN   VARCHAR2,
1112 			  p_appl_type			IN   VARCHAR2,
1113 			  p_prog_code			IN   VARCHAR2,
1114 			  p_location			IN   VARCHAR2,
1115 			  p_att_type			IN   VARCHAR2,
1116 			  p_att_mode			IN   VARCHAR2
1117                         ) IS
1118 
1119  l_appl_exist VARCHAR2(1);
1120  l_user_id NUMBER;
1121  l_person_id NUMBER;
1122  l_per_num hz_parties.party_number%type;
1123  lv_person_id VARCHAR2(300);
1124  l_person_name VARCHAR2(320);
1125  l_display_name VARCHAR2(360);
1126  l_user_name VARCHAR2(100);
1127  l_full_name VARCHAR2(1000);
1128  l_count number := 0;
1129 
1130  l_adm_cal igs_ca_inst_all.cal_type%TYPE := RTRIM(SUBSTR(p_calendar_details, 23, 10));
1131  l_acad_cal igs_ca_inst_all.cal_type%TYPE := RTRIM(SUBSTR(p_calendar_details,1,10));
1132  l_acad_cal_seq_num igs_ca_inst_all.sequence_number%TYPE := IGS_GE_NUMBER.TO_NUM(SUBSTR(p_calendar_details,14,6));
1133  l_adm_cal_seq_num igs_ca_inst_all.sequence_number%TYPE :=IGS_GE_NUMBER.TO_NUM(SUBSTR(p_calendar_details,37,6));
1134  l_adm_cat VARCHAR2(10) := RTRIM(SUBSTR(p_apc,1, 10));
1135  l_adm_proc_type varchar2(15) := RTRIM(SUBSTR(p_apc, 11, 30));
1136 
1137  l_alt_code_acad igs_ca_inst.alternate_code%TYPE;
1138  l_alt_code_adm igs_ca_inst.alternate_code%TYPE;
1139 
1140  Cursor c_per_adm_req IS
1141  select a.person_id
1142  from igs_ad_appl_all a,
1143  igs_ad_ps_appl_inst_all i,
1144  igs_ad_aplins_admreq r,
1145  igs_tr_item_all t,
1146  igs_tr_type_all ty
1147  where a.person_id = i.person_id
1148         and (p_person_id_group IS NOT NULL and
1149         a.person_id IN (SELECT person_id
1150                  FROM igs_pe_prsid_grp_mem pgm
1151                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
1152 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
1153                  OR
1154                 (p_person_id_group is null))
1155  and a.admission_appl_number = i.admission_appl_number
1156  and i.person_id = r.person_id
1157  and i.nominated_course_cd = r.course_cd
1158  and i.admission_appl_number = r.admission_appl_number
1159  and i.sequence_number = r.sequence_number
1160  and r.tracking_id = t.tracking_id
1161  and t.tracking_status in (select tracking_status from igs_tr_status where s_tracking_status = 'ACTIVE')
1162  AND ((a.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
1163  AND ((a.ACAD_CAL_TYPE= l_acad_cal) AND (a.ACAD_CI_SEQUENCE_NUMBER= l_acad_cal_seq_num))
1164  AND ((a.ADM_CAL_TYPE= l_adm_cal) AND (a.ADM_CI_SEQUENCE_NUMBER= l_adm_cal_seq_num))
1165  AND (((a.ADMISSION_CAT =  l_adm_cat) AND (a.S_ADMISSION_PROCESS_TYPE = l_adm_proc_type)
1166  AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
1167  AND ((a.application_id = p_appl_id and p_appl_id IS NOT NULL) OR (p_appl_id is NULL))
1168  AND ((a.application_type = p_appl_type and p_appl_type IS NOT NULL) OR (p_appl_type is NULL))
1169  AND ((i.nominated_course_cd = p_prog_code and p_prog_code IS NOT NULL) OR (p_prog_code is NULL))
1170  AND ((i.location_cd = p_location and p_location IS NOT NULL) OR (p_location is NULL))
1171  AND ((i.attendance_mode = p_att_mode and p_att_mode IS NOT NULL) OR (p_att_mode is NULL))
1172  AND ((i.attendance_type = p_att_type and p_att_type IS NOT NULL) OR (p_att_type is NULL))
1173  and t.tracking_type = ty.tracking_type
1174  and ty.s_tracking_type = 'ADM_PROCESSING'
1175  Group by a.person_id;
1176 
1177  Cursor c_per_post_adm_req IS
1178  select a.person_id
1179  from igs_ad_appl_all a,
1180  igs_ad_ps_appl_inst_all i,
1181  igs_ad_aplins_admreq r,
1182  igs_tr_item_all t,
1183  igs_tr_type_all ty
1184  where a.person_id = i.person_id
1185         and (p_person_id_group IS NOT NULL and
1186         a.person_id IN (SELECT person_id
1187                  FROM igs_pe_prsid_grp_mem pgm
1188                  WHERE pgm.group_id = nvl(p_person_id_group,pgm.group_id)
1189 		 And SYSDATE BETWEEN nvl(START_DATE, SYSDATE) AND nvl(END_DATE, SYSDATE))
1190                  OR
1191                 (p_person_id_group is null))
1192  and a.admission_appl_number = i.admission_appl_number
1193  and i.person_id = r.person_id
1194  and i.nominated_course_cd = r.course_cd
1195  and i.admission_appl_number = r.admission_appl_number
1196  and i.sequence_number = r.sequence_number
1197  and r.tracking_id = t.tracking_id
1198  and t.tracking_status in (select tracking_status from igs_tr_status where s_tracking_status = 'ACTIVE')
1199  AND ((a.person_id = p_person_id AND p_person_id IS NOT NULL) OR (p_person_id is NULL))
1200  AND ((a.ACAD_CAL_TYPE = l_acad_cal) AND (a.ACAD_CI_SEQUENCE_NUMBER = l_acad_cal_seq_num))
1201  AND ((a.ADM_CAL_TYPE = l_adm_cal) AND (a.ADM_CI_SEQUENCE_NUMBER = l_adm_cal_seq_num))
1202  AND (((a.ADMISSION_CAT = l_adm_cat) AND (a.S_ADMISSION_PROCESS_TYPE = l_adm_proc_type)
1203  AND (p_apc IS NOT NULL)) OR (p_apc is NULL))
1204  AND ((a.application_id = p_appl_id and p_appl_id IS NOT NULL) OR (p_appl_id is NULL))
1205  AND ((a.application_type = p_appl_type and p_appl_type IS NOT NULL) OR (p_appl_type is NULL))
1206  AND ((i.nominated_course_cd = p_prog_code and p_prog_code IS NOT NULL) OR (p_prog_code is NULL))
1207  AND ((i.location_cd = p_location and p_location IS NOT NULL) OR (p_location is NULL))
1208  AND ((i.attendance_mode = p_att_mode and p_att_mode IS NOT NULL) OR (p_att_mode is NULL))
1209  AND ((i.attendance_type = p_att_type and p_att_type IS NOT NULL) OR (p_att_type is NULL))
1210  and t.tracking_type = ty.tracking_type
1211  and ty.s_tracking_type = 'POST_ADMISSION'
1212  group by a.person_id;
1213 
1214  CURSOR c_get_alt_code(cp_cal_type igs_ca_inst.cal_type%TYPE,cp_seq_no igs_ca_inst.sequence_number%TYPE) IS
1215    SELECT alternate_code
1216    FROM IGS_CA_INST
1217    WHERE cal_type = cp_cal_type AND
1218          sequence_number = cp_seq_no;
1219 
1220  CURSOR cur_user(cp_person_id igs_ad_appl_all.person_id%TYPE) IS
1221    SELECT user_name, description
1222    FROM   FND_USER
1223    WHERE  person_party_id = cp_person_id ;
1224 
1225  CURSOR c_per_num IS
1226    SELECT party_number
1227    FROM   HZ_PARTIES
1228    WHERE  party_id = p_person_id ;
1229 
1230 BEGIN
1231 
1232     -- The following code is added for disabling of OSS in R12.IGS.A - Bug 4955192
1233     igs_ge_gen_003.set_org_id(null);
1234 
1235     RETCODE := 0;
1236     ERRBUF  := NULL;
1237 
1238     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_APPNTF_PRMS');
1239     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1240 
1241     OPEN c_per_num;
1242     FETCH c_per_num INTO l_per_num;
1243     CLOSE c_per_num;
1244 
1245     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_PNUM');
1246     FND_MESSAGE.SET_TOKEN ('PNUM', l_per_num);
1247     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1248 
1249     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_PID_GRP');
1250     FND_MESSAGE.SET_TOKEN ('PGPID', p_person_id_group);
1251     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1252 
1253     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_APPLID');
1254     FND_MESSAGE.SET_TOKEN ('APPLID', p_appl_id);
1255     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1256 
1257     FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APP_LG_CL_DTLS');
1258     FND_MESSAGE.SET_TOKEN('CLDTLS', p_calendar_details);
1259     FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
1260 
1261     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_TRKTYP');
1262     FND_MESSAGE.SET_TOKEN ('TRKTYP', p_tracking_type);
1263     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1264 
1265     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_APC');
1266     FND_MESSAGE.SET_TOKEN ('APC', p_apc);
1267     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1268 
1269     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_APPL_TYPE');
1270     FND_MESSAGE.SET_TOKEN ('APPLTYPE', p_appl_type);
1271     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1272 
1273     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_APP_LG_CRCD');
1274     FND_MESSAGE.SET_TOKEN ('CRCD', p_prog_code);
1275     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1276 
1277     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_LOC');
1278     FND_MESSAGE.SET_TOKEN ('LOC', p_location);
1279     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1280 
1281     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_ATT_TYPE');
1282     FND_MESSAGE.SET_TOKEN ('ATTTYPE', p_att_type);
1283     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1284 
1285     FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_LG_INAP_ATT_MODE');
1286     FND_MESSAGE.SET_TOKEN ('ATTMODE', p_att_mode);
1287     FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1288 
1289     FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1290     FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1291 
1292   IF (p_person_id IS NOT NULL AND p_person_id_group IS NOT NULL ) THEN
1293 
1294           FND_MESSAGE.SET_NAME ('IGS', 'IGS_AD_NO_PERID_PERIDGRP');
1295           FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET ());
1296 
1297   ELSIF NVL(p_tracking_type, 'ADM_PROCESSING') = 'ADM_PROCESSING' THEN
1298 
1299 	l_count := 0;
1300 
1301 	OPEN c_per_adm_req;
1302 
1303 	LOOP
1304 
1305 	FETCH c_per_adm_req INTO l_person_id;
1306 
1307 	EXIT WHEN c_per_adm_req%NOTFOUND;
1308 
1309 	IF c_per_adm_req%FOUND THEN
1310 
1311 		l_count := l_count+1;
1312                 lv_person_id := IGS_GE_NUMBER.TO_CANN(l_person_id);
1313 
1314 --              The following code should be uncommented once the TCA HZ.J patch is applied
1315 /*		Wf_Directory.GetRoleName('HZ_PARTY', lv_person_id, l_person_name, l_display_name);
1316 
1317 		IF l_person_name IS NOT NULL THEN
1318 
1319                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF2');
1320                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1321 
1322     		FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1323                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF6');
1324                 FND_MESSAGE.SET_TOKEN ('PNAME', l_display_name);
1325                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1326 
1327                 ELSE
1328                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF4');
1329                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1330                 END IF; */
1331                 ---------------------------------------------------------------------------------
1332                 --Get Alternate Code
1333                 ---------------------------------------------------------------------------------
1334                 OPEN c_get_alt_code(l_acad_cal,l_acad_cal_seq_num);
1335                 FETCH c_get_alt_code INTO l_alt_code_acad;
1336                 CLOSE c_get_alt_code;
1337 
1338                 OPEN c_get_alt_code(l_adm_cal,l_adm_cal_seq_num);
1339                 FETCH c_get_alt_code INTO l_alt_code_adm;
1340                 CLOSE c_get_alt_code;
1341 
1342 		OPEN cur_user(l_person_id);
1343                 FETCH cur_user INTO  l_person_name, l_display_name;
1344 
1345                 	IF cur_user%FOUND THEN
1346 
1347                 	FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF2');
1348                 	FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1349 
1350                 	FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1351                 	FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF6');
1352                 	FND_MESSAGE.SET_TOKEN ('PNAME', l_display_name);
1353                 	FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1354 
1355                 	Wf_Admission_Req (l_person_id, l_person_name, l_display_name, l_alt_code_acad, l_alt_code_adm);
1356 
1357 			ELSE
1358 			Wf_Directory.GetRoleName('HZ_PARTY', lv_person_id, l_person_name, l_display_name);
1359 
1360 				IF l_person_name IS NOT NULL THEN
1361 
1362                 		FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF2');
1363                 		FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1364 
1365     				FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1366                 		FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF6');
1367                 		FND_MESSAGE.SET_TOKEN ('PNAME', l_display_name);
1368                 		FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1369 
1370                 		Wf_Admission_Req (l_person_id, l_person_name, l_display_name, l_alt_code_acad, l_alt_code_adm);
1371 
1372                 		ELSE
1373                 		FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF4');
1374                 		FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1375 
1376 				END IF ; /* l_person_name */
1377 
1378                 	END IF; /* cur_user */
1379 		CLOSE cur_user;
1380 
1381 	END IF; /* c_per_adm_req */
1382 
1383 	END LOOP;
1384 
1385 	        IF l_count = 0 THEN
1386 	        -- write in the log file that no record exists
1387 	        -- Invalid parameters entered. Valid combinations for parameters to be entered
1388 	        FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
1389 	        FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
1390 	        END IF;
1391 
1392 	CLOSE c_per_adm_req;
1393 
1394 
1395   ELSIF NVL(p_tracking_type, 'ADM_PROCESSING') = 'POST_ADMISSION' THEN
1396 
1397 	l_count := 0;
1398 
1399 	OPEN c_per_post_adm_req;
1400 
1401 	LOOP
1402 
1403 	FETCH c_per_post_adm_req INTO l_person_id;
1404 
1405 	EXIT WHEN c_per_post_adm_req%NOTFOUND;
1406 
1407 	IF c_per_post_adm_req%FOUND THEN
1408 
1409 		l_count := l_count+1;
1410 
1411 		lv_person_id := IGS_GE_NUMBER.TO_CANN(l_person_id);
1412 
1413 --  		The following code should be uncommented once the TCA HZ.J patch is applied
1414 /*		Wf_Directory.GetRoleName('HZ_PARTY', l_person_id, l_person_name, l_display_name);
1415 
1416                 IF l_person_name IS NOT NULL THEN
1417 
1418                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF3');
1419                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1420 
1421     		FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1422                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF6');
1423                 FND_MESSAGE.SET_TOKEN ('PNAME', l_display_name);
1424                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1425 
1426                 ELSE
1427                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF4');
1428                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1429 
1430                 END IF; */
1431 
1432                 ---------------------------------------------------------------------------------
1433                 --Get Alternate Code
1434                 ---------------------------------------------------------------------------------
1435                 OPEN c_get_alt_code(l_acad_cal,l_acad_cal_seq_num);
1436                 FETCH c_get_alt_code INTO l_alt_code_acad;
1437                 CLOSE c_get_alt_code;
1438 
1439                 OPEN c_get_alt_code(l_adm_cal,l_adm_cal_seq_num);
1440                 FETCH c_get_alt_code INTO l_alt_code_adm;
1441                 CLOSE c_get_alt_code;
1442 
1443                 OPEN cur_user(l_person_id);
1444                 FETCH cur_user INTO  l_person_name, l_display_name;
1445 
1446                         IF cur_user%FOUND THEN
1447 
1448                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF2');
1449                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1450 
1451                         FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1452                         FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF6');
1453                         FND_MESSAGE.SET_TOKEN ('PNAME', l_display_name);
1454                         FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1455 
1456                         Wf_Post_Adm_Req (l_person_id, l_person_name, l_display_name, l_alt_code_acad, l_alt_code_adm);
1457 
1458                         ELSE
1459                         Wf_Directory.GetRoleName('HZ_PARTY', lv_person_id, l_person_name, l_display_name);
1460 
1461                                 IF l_person_name IS NOT NULL THEN
1462 
1463                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF2');
1464                                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1465 
1466                                 FND_FILE.PUT_LINE (FND_FILE.LOG, '');
1467                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF6');
1468                                 FND_MESSAGE.SET_TOKEN ('PNAME', l_display_name);
1469                                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1470 
1471                                 Wf_Post_Adm_Req (l_person_id, l_person_name, l_display_name, l_alt_code_acad, l_alt_code_adm);
1472 
1473                                 ELSE
1474                                 FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF4');
1475                                 FND_FILE.PUT_LINE (FND_FILE.LOG, FND_MESSAGE.GET());
1476 
1477                                 END IF ; /* l_person_name */
1478 
1479                         END IF; /* cur_user */
1480                 CLOSE cur_user;
1481 
1482 	END IF; /* c_per_post_adm_req */
1483 
1484 	END LOOP;
1485 
1486         	IF l_count = 0 THEN
1487         	-- write in the log file that no record exists
1488 	        -- Invalid parameters entered. Valid combinations for parameters to be entered
1489 	        FND_MESSAGE.SET_NAME('IGS', 'IGS_AD_APNTF_INV_PRM_COMB');
1490 	        FND_FILE.PUT_LINE( FND_FILE.LOG, FND_MESSAGE.GET());
1491         	END IF;
1492 
1493 	CLOSE c_per_post_adm_req;
1494 
1495 END IF; /* p_tracking_type */
1496 
1497   EXCEPTION
1498      WHEN OTHERS THEN
1499        RETCODE := 2;
1500        ERRBUF  := fnd_message.get_string( 'IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
1501        IGS_GE_MSG_STACK.CONC_EXCEPTION_HNDL;
1502 
1503    IF c_per_adm_req%ISOPEN THEN
1504       CLOSE c_per_adm_req;
1505    END IF;
1506    IF c_per_post_adm_req%ISOPEN THEN
1507       CLOSE c_per_post_adm_req;
1508    END IF;
1509    IF c_get_alt_code%ISOPEN THEN
1510       CLOSE c_get_alt_code;
1511    END IF;
1512    IF c_per_num%ISOPEN THEN
1513       CLOSE c_per_num;
1514    END IF;
1515    IF cur_user%ISOPEN THEN
1516       CLOSE cur_user;
1517    END IF;
1518 
1519 
1520 END Adm_Application_Req;
1521 
1522 /* *************************************************************************************/
1523 -- This Procedure raises an event when the admission requirement concurrent job is submitted.
1524 /* *************************************************************************************/
1525 
1526 PROCEDURE  Wf_Admission_Req
1527                        (  p_applicant_id        	IN   NUMBER,
1528 			  p_applicant_name      	IN   VARCHAR2,
1529 			  p_applicant_display_name      IN   VARCHAR2,
1530 			  p_alt_code_acad		IN   VARCHAR2,
1531 			  p_alt_code_adm		IN   VARCHAR2
1532                         )
1533 IS
1534     l_event_t             wf_event_t;
1535     l_parameter_list_t    wf_parameter_list_t;
1536     l_itemKey             varchar2(100);
1537     l_incomplt_appl_url   varchar2(1000);
1538 
1539 
1540      CURSOR cur_seq IS
1541          SELECT IGS_AD_WF_ADREQ_S.NEXTVAL
1542          FROM dual;
1543 
1544 
1545 BEGIN
1546 
1547          -- initialize the wf_event_t object
1548          --
1549          wf_event_t.Initialize(l_event_t);
1550 
1551          OPEN cur_seq ;
1552          FETCH cur_seq INTO l_itemKey ;
1553          CLOSE cur_seq ;
1554 
1555 
1556 
1557          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_ID',p_Value => p_applicant_id, p_parameterlist=>l_parameter_list_t);
1558          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_NAME',p_Value => p_applicant_name, p_parameterlist=>l_parameter_list_t);
1559          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_FULL_NAME',p_Value => p_applicant_display_name, p_parameterlist=>l_parameter_list_t);
1560 
1561          wf_event.AddParameterToList ( p_Name => 'IA_ACAD_CALENDAR',p_Value => p_alt_code_acad, p_parameterlist=>l_parameter_list_t);
1562          wf_event.AddParameterToList ( p_Name => 'IA_ADM_CALENDAR',p_Value => p_alt_code_adm, p_parameterlist=>l_parameter_list_t);
1563 
1564 --
1565 -- raise the event
1566 --
1567 WF_EVENT.RAISE (p_event_name => 'oracle.apps.igs.ad.appl.adm_req',
1568                 p_event_key  => l_itemKey,
1569                 p_parameters => l_parameter_list_t);
1570 
1571  l_parameter_list_t.delete;
1572 
1573 END Wf_Admission_Req ;
1574 
1575 /* *************************************************************************************/
1576 -- This Procedure raises an event when the post-admission requirement concurrent job is submitted.
1577 /* *************************************************************************************/
1578 
1579 PROCEDURE  Wf_Post_Adm_Req
1580                        (  p_applicant_id        	IN   NUMBER,
1581 			  p_applicant_name      	IN   VARCHAR2,
1582 			  p_applicant_display_name      IN   VARCHAR2,
1583                           p_alt_code_acad            	IN   VARCHAR2,
1584                           p_alt_code_adm             	IN   VARCHAR2
1585                         )
1586 IS
1587     l_event_t             wf_event_t;
1588     l_parameter_list_t    wf_parameter_list_t;
1589     l_itemKey             varchar2(100);
1590     l_incomplt_appl_url   varchar2(1000);
1591 
1592 
1593      CURSOR cur_seq IS
1594          SELECT IGS_AD_WF_POSTREQ_S.NEXTVAL
1595          FROM dual;
1596 
1597 
1598 BEGIN
1599 
1600          -- initialize the wf_event_t object
1601          --
1602          wf_event_t.Initialize(l_event_t);
1603 
1604          OPEN cur_seq ;
1605          FETCH cur_seq INTO l_itemKey ;
1606          CLOSE cur_seq ;
1607 
1608 
1609          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_ID',p_Value => p_applicant_id, p_parameterlist=>l_parameter_list_t);
1610          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_NAME',p_Value => p_applicant_name, p_parameterlist=>l_parameter_list_t);
1611          wf_event.AddParameterToList ( p_Name => 'IA_PERSON_FULL_NAME',p_Value => p_applicant_display_name, p_parameterlist=>l_parameter_list_t);
1612 
1613          wf_event.AddParameterToList ( p_Name => 'IA_ACAD_CALENDAR',p_Value => p_alt_code_acad, p_parameterlist=>l_parameter_list_t);
1614          wf_event.AddParameterToList ( p_Name => 'IA_ADM_CALENDAR',p_Value => p_alt_code_adm, p_parameterlist=>l_parameter_list_t);
1615 
1616 --
1617 -- raise the event
1618 --
1619 
1620 WF_EVENT.RAISE (p_event_name => 'oracle.apps.igs.ad.appl.post_adm_req',
1621                 p_event_key  => l_itemKey,
1622                 p_parameters => l_parameter_list_t);
1623 
1624  l_parameter_list_t.delete;
1625 
1626 END Wf_Post_Adm_Req ;
1627 
1628 END IGS_AD_WRKFLOW_PKG;