[Home] [Help]
PACKAGE BODY: APPS.IGS_SV_BATCH_PROCESS_PKG
Source
1 PACKAGE BODY IGS_SV_BATCH_PROCESS_PKG AS
2 /* $Header: IGSSV01B.pls 120.25 2006/07/28 14:31:42 prbhardw noship $ */
3
4 /******************************************************************
5
6 Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
7 All rights reserved.
8
9 Created By : Don Shellito
10
11 Date Created By : Oct-01-2002
12
13 Purpose : This package is to be used for the processing and
14 gathering of the SEVIS related information that is
15 to be sent for transmital.
16
17 The concurrent programs that are to be executed are
18 defined globally. All other procedures are to be
19 defined internally.
20
21 remarks : None
22
23 Change History
24
25 Who When What
26 -----------------------------------------------------------
27 Arkadi Tereshenkov Oct-14-2002 New Package created.
28 pkpatel 23-APR-2003 Bug 2908378(Solved Multiple Issues)
29 gmaheswa 12-Nov-2003 Bug 3227107 address related changes
30 pkpatel 4-Dec-2003 Bug 3227107 (Used the status column for address in Validate_Site_Info)
31 ssaleem 13-Apr-2005 Bug 4293911 Fnd User customer Id replaced with person
32 party id
33 ******************************************************************/
34
35 /*************** Values from addresses bug #2630743***********************************
36 SEVIS_PRIMARY_US - SEVIS Primary US Address/SEVIS Primary Address in United States
37 SEVIS_PRIMARY_FOREIGN - SEVIS Primary Foreign Address/SEVIS Primary Address outside of United States
38 SEVIS_SITE_OF_ACTIVITY - SEVIS Site of Activity/SEVIS Site of Activity
39 ***********************************************************************************/
40
41 G_PKG_NAME CONSTANT VARCHAR2(30) := 'IGS_SV_BATCH_PROCESS_PKG';
42 g_us_addr_usage CONSTANT VARCHAR2(30) := 'SEVIS_PRIMARY_US';
43 g_f_addr_usage CONSTANT VARCHAR2(30) := 'SEVIS_PRIMARY_FOREIGN';
44 g_site_addr_usage CONSTANT VARCHAR2(30) := 'SEVIS_SITE_OF_ACTIVITY';
45 g_school_sevis_id CONSTANT VARCHAR2(30) := 'SV_SCH_CD';
46 g_person_sevis_id CONSTANT VARCHAR2(30) := 'SEVIS_ID';
47 g_sch_p_sevis_id CONSTANT VARCHAR2(30) := 'SV_PRG_CD';
48 g_block_mode CONSTANT NUMBER(1) := 1; --Insert mode 0:1. If 1 - inserts only changed optional info in the block. , if 0 - all parts of the block
49 g_prod VARCHAR2(3) := 'IGS';
50 g_debug_level NUMBER(1) := 0;
51 g_update_login NUMBER(15);
52 g_update_by NUMBER(15);
53 g_delimeter CONSTANT VARCHAR2(1) := '|';
54 g_create_count NUMBER(15) := 0; -- prbhardw CP enhancement
55 g_update_count NUMBER(15) := 0; -- prbhardw CP enhancement
56 g_running_create_batch NUMBER(15); -- prbhardw CP enhancement
57 g_running_update_batch NUMBER(15); -- prbhardw CP enhancement
58 l_prog_label CONSTANT VARCHAR2(500) :='igs.plsql.igs_sv_batch_process_pkg';
59 l_label VARCHAR2(4000);
60 l_debug_str VARCHAR2(32000);
61 g_person_status VARCHAR2(6) := 'NEW';
62 g_legal_status VARCHAR2(6) := 'NEW';
63 g_nonimg_form_id NUMBER(15);
64 TYPE g_address_rec_type IS TABLE OF IGS_SV_ADDRESSES%ROWTYPE INDEX BY BINARY_INTEGER;
65 TYPE g_edu_rec_type IS TABLE OF IGS_SV_PRGMS_INFO%ROWTYPE INDEX BY BINARY_INTEGER;
66 TYPE g_dependent_rec_type IS TABLE OF IGS_SV_DEPDNT_INFO%ROWTYPE INDEX BY BINARY_INTEGER;
67 TYPE g_convictions_rec_type IS TABLE OF IGS_SV_CONVICTIONS%ROWTYPE INDEX BY BINARY_INTEGER;
68 TYPE g_empl_rec_type IS TABLE OF IGS_SV_EMPL_INFO%ROWTYPE INDEX BY BINARY_INTEGER;
69 TYPE g_parallel_batches_tbl IS TABLE OF IGS_SV_BATCHES.BATCH_ID%TYPE INDEX BY BINARY_INTEGER;
70 TYPE g_running_batches_tbl IS TABLE OF IGS_SV_BATCHES.BATCH_ID%TYPE INDEX BY BINARY_INTEGER;
71
72 g_parallel_batches g_parallel_batches_tbl;
73 g_running_batches g_running_batches_tbl;
74
75 TYPE c_stdnt_list IS RECORD
76 (
77 person_id igs_pe_nonimg_form.person_id%TYPE,
78 form_id igs_pe_ev_form.ev_form_id%TYPE ,
79 person_number hz_parties.party_number%TYPE,
80 no_show_flag igs_pe_ev_form.no_show_flag%TYPE ,
81 reprint_reason igs_pe_ev_form.reprint_reason%TYPE
82 );
83
84 TYPE t_student_rec IS RECORD
85 ( person_id igs_sv_persons.person_id%TYPE,
86 batch_id igs_sv_persons.batch_id%TYPE,
87 record_number igs_sv_persons.record_number%TYPE,
88 record_status igs_sv_persons.record_status%TYPE, --(N)ew (C)hanged
89 person_number igs_sv_persons.person_number%TYPE,
90 sevis_user_id igs_sv_batches.sevis_user_id%TYPE,
91 batch_type igs_sv_batches.batch_type%TYPE,
92 form_id igs_sv_persons.form_id%TYPE,
93 print_form igs_sv_persons.print_form%TYPE,
94 dep_flag VARCHAR2(1),
95 person_status VARCHAR2(1),
96 changes_found VARCHAR2(1),
97 issue_status VARCHAR2(1),
98 bio_status VARCHAR2(1),
99 empl_status VARCHAR2(1),
100 other_status VARCHAR2(1),
101 f_addr_status VARCHAR2(1),
102 us_addr_status VARCHAR2(1),
103 edu_status VARCHAR2(1),
104 dep_status VARCHAR2(1),
105 fin_status VARCHAR2(1),
106 conv_status VARCHAR2(1),
107 site_addr_status VARCHAR2(1),
108 legal_status VARCHAR2(1),
109 dep_count NUMBER(3),
110 edu_count NUMBER(3),
111 no_show_flag igs_sv_persons.no_show_flag%TYPE,
112 reprint_reason igs_sv_persons.reprint_rsn_code%TYPE -- prbhardw
113 );
114
115
116
117 PROCEDURE Put_Log_Msg (
118 p_message IN VARCHAR2,
119 p_level IN NUMBER
120 );
121
122 PROCEDURE Generate_Message;
123
124 PROCEDURE Create_Batch(
125 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
126 retcode OUT NOCOPY NUMBER , -- Request standard return status
127 p_batch_type IN VARCHAR2, -- Batch type E(ev), I(international)
128 p_validate_only IN VARCHAR2, -- Validate only flag 'Y' 'N'
129 p_org_id IN VARCHAR2,
130 p_dso_id IN VARCHAR2,
131 p_dso_party_id IN NUMBER,
132 p_org_party_id IN NUMBER
133 ) ;
134
135 PROCEDURE Purge_Batch(
136 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
137 retcode OUT NOCOPY NUMBER , -- Request standard return status
138 p_batch_type IN VARCHAR2 -- Batch type E(ev), I(international)
139 ) ;
140
141 PROCEDURE Insert_Summary_Info(
142 p_batch_id IN igs_sv_btch_summary.batch_id%TYPE,
143 p_person_id IN igs_sv_btch_summary.person_id%TYPE,
144 p_action_code IN igs_sv_btch_summary.action_code%TYPE,
145 p_tag_code IN igs_sv_btch_summary.tag_code%TYPE,
146 p_adm_action IN igs_sv_btch_summary.adm_action_code%TYPE,
147 p_owner_table_name IN igs_sv_btch_summary.owner_table_name%TYPE,
148 p_owner_table_id IN igs_sv_btch_summary.OWNER_TABLE_IDENTIFIER%TYPE
149 );
150
151 PROCEDURE compose_log_file;
152 PROCEDURE xml_log_file (p_batch_id IN igs_sv_btch_summary.batch_id%TYPE);
153 /*****************************************************************/
154 PROCEDURE Submit_Event (
155 p_batch_type IN VARCHAR2,
156 p_batch_id IN IGS_SV_BATCHES.BATCH_ID%TYPE
157 )
158 IS
159
160 l_parameter_list wf_parameter_list_t := wf_parameter_list_t();
161 l_event_name VARCHAR2(255);
162 l_event_key VARCHAR2(255);
163 l_party_id HZ_PARTY_SITES.PARTY_ID%TYPE;
164 l_party_site_id HZ_PARTY_SITES.PARTY_SITE_ID%TYPE;
165 l_trans_type VARCHAR2(30) :='IGS_SV';
166 l_trans_subtype VARCHAR2(30) ;
167 l_debug_level NUMBER := 0;
168 l_user_id VARCHAR2(100);
169 l_party_type VARCHAR2(30) :='C';
170
171 CURSOR c_party_data IS
172 SELECT party_id,
173 party_site_id
174 FROM ecx_tp_headers
175 WHERE tp_header_id IN
176 ( SELECT tp_header_id
177 FROM ecx_tp_details
178 WHERE ext_process_id IN
179 ( SELECT ext_process_id
180 FROM ecx_ext_processes
181 WHERE direction = 'OUT'
182 AND transaction_id IN
183 ( SELECT transaction_id
184 FROM ecx_transactions
185 WHERE transaction_type=l_trans_type
186 AND transaction_subtype =l_trans_subtype
187 )
188 )
189 );
190
191 CURSOR c_get_user_id IS
192 SELECT sevis_user_id
193 FROM igs_sv_batches
194 WHERE batch_id = p_batch_id;
195
196 l_con_req_id NUMBER;
197 BEGIN
198 /* Debug */
199 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
200 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Submit_Event';
201 l_debug_str := 'Entering Submit_Event. p_batch_type is ' || p_batch_type || 'and p_batch_id is ' || p_batch_id;
202 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
203 END IF;
204
205 IF p_batch_type = 'E' THEN
206
207 l_event_name := 'oracle.apps.igs.sv.ev.submit';
208 l_trans_subtype :='SEVISEVO';
209
210 ELSE
211
212 l_event_name := 'oracle.apps.igs.sv.ni.submit';
213 l_trans_subtype :='SEVISO';
214 END IF;
215
216 --SELECT FND_GLOBAL.CONC_REQUEST_ID INTO l_con_req_id FROM DUAL;
217
218 l_con_req_id := FND_GLOBAL.CONC_REQUEST_ID;
219
220 OPEN c_party_data;
221 FETCH c_party_data INTO l_party_id, l_party_site_id;
222 CLOSE c_party_data;
223
224 IF l_party_id IS NULL THEN
225 /* Debug */
226 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
227 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Submit_Event';
228 l_debug_str := 'IGS_SV_PRTNR_STP_ERR error in Submit_Event.';
229 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
230 END IF;
231
232 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_PRTNR_STP_ERR'); -- No trading partner setup found
233 FND_MSG_PUB.Add;
234 RAISE FND_API.G_EXC_ERROR;
235
236 END IF;
237
238 OPEN c_get_user_id;
239 FETCH c_get_user_id INTO l_user_id;
240 CLOSE c_get_user_id;
241
242 l_event_key := p_batch_id || l_con_req_id;
243
244 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
245 l_label := 'igs.plsql.igs_sv_batch_process_pkg.event_parameters';
246 l_debug_str := 'batch_id= '|| p_batch_id || 'l_party_id= '|| l_party_id || ' l_party_site_id='||l_party_site_id || 'l_trans_type= ' || l_trans_type || ' l_trans_subtype= ' || l_trans_subtype || ' l_debug_level = ' || l_debug_level ;
247 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
248 END IF;
249 /* Manoj
250 wf_event.AddParameterToList(p_name=>'DOC_ID',p_value=>p_batch_id,p_parameterlist=>l_parameter_list);
251 wf_event.AddParameterToList(p_name=>'PARTY_ID',p_value=>l_party_id,p_parameterlist=>l_parameter_list);
252 wf_event.AddParameterToList(p_name=>'PARTY_SITE_ID',p_value=>l_party_site_id,p_parameterlist=>l_parameter_list);
253 wf_event.AddParameterToList(p_name=>'TRANS_TYPE',p_value=>l_trans_type,p_parameterlist=>l_parameter_list);
254 wf_event.AddParameterToList(p_name=>'TRANS_SUB_TYPE',p_value=>l_trans_subtype,p_parameterlist=>l_parameter_list);
255 Manoj*/
256 --l_user_id := '999-999-777';
257 wf_event.AddParameterToList(p_name=>'ECX_DOCUMENT_ID',p_value=>p_batch_id,p_parameterlist=>l_parameter_list);
258 wf_event.AddParameterToList(p_name=>'ECX_PARTY_ID',p_value=>l_party_id,p_parameterlist=>l_parameter_list);
259 wf_event.AddParameterToList(p_name=>'ECX_PARTY_SITE_ID',p_value=>l_party_site_id,p_parameterlist=>l_parameter_list);
260 wf_event.AddParameterToList(p_name=>'ECX_TRANSACTION_TYPE',p_value=>l_trans_type,p_parameterlist=>l_parameter_list);
261 wf_event.AddParameterToList(p_name=>'ECX_TRANSACTION_SUBTYPE',p_value=>l_trans_subtype,p_parameterlist=>l_parameter_list);
262 wf_event.AddParameterToList(p_name=>'ECX_PARTY_TYPE',p_value=>l_party_type,p_parameterlist=>l_parameter_list);
263 wf_event.AddParameterToList(p_name=>'ECX_DEBUG_LEVEL',p_value=>l_debug_level,p_parameterlist=>l_parameter_list);
264 wf_event.AddParameterToList(p_name=>'PARAMETER1',p_value=>p_batch_id,p_parameterlist=>l_parameter_list);
265 wf_event.AddParameterToList(p_name=>'PARAMETER2',p_value=>l_user_id,p_parameterlist=>l_parameter_list);
266
267
268 -- Raise the Event without the message
269 -- The Generate Function Callback will create the XML Document
270 -- Also possible that an API might be called from here to
271 -- to generate the XML document
272 wf_event.raise( p_event_name => l_event_name,
273 p_event_key => l_event_key,
274 p_parameters => l_parameter_list);
275
276
277 l_parameter_list.DELETE;
278
279 /* Debug */
280 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
281 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Submit_Event';
282 l_debug_str := 'Exiting Submit_Event. l_event_key: '||l_event_key;
283 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
284 END IF;
285
286 END;
287
288
289 /******************************************************************
290 Created By : Arkadi Tereshenkov
291 Date Created By : Oct 14, 2002
292 Purpose :
293 remarks :
294
295 Change History
296 Who When What
297 ------------------------------------------------------------------------
298
299 ******************************************************************/
300 PROCEDURE Dump_Current_Person(
301 p_student_rec IN t_student_rec
302 ) IS
303
304 l_str VARCHAR2(2000);
305
306 BEGIN
307 /* Debug */
308 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
309 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Dump_Current_Person';
310 l_debug_str := 'Entering Dump_Current_Person. p_student_rec.person_id is '|| p_student_rec.person_id;
311 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
312 END IF;
313
314 -- This is a debug procedure used to output a current person info if an error occurs
315 Put_Log_Msg('****** Execution error - dumping current person *********',1);
316
317 Put_Log_Msg(' person_id '|| p_student_rec.person_id ,1);
318 Put_Log_Msg(' form_id '|| p_student_rec.form_id ,1);
319 Put_Log_Msg(' print_form '|| p_student_rec.print_form ,1);
320 Put_Log_Msg(' record_number '|| p_student_rec.record_number ,1);
321 Put_Log_Msg(' record_status '|| p_student_rec.record_status ,1);
322 Put_Log_Msg(' person_number '|| p_student_rec.person_number ,1);
323 Put_Log_Msg(' sevis_user_id '|| p_student_rec.sevis_user_id ,1);
324 Put_Log_Msg(' form_id '|| p_student_rec.form_id ,1);
325 Put_Log_Msg(' person_status '|| p_student_rec.person_status ,1);
326 Put_Log_Msg(' issue_status '|| p_student_rec.issue_status ,1);
327 Put_Log_Msg(' bio_status '|| p_student_rec.bio_status ,1);
328 Put_Log_Msg(' other_status '|| p_student_rec.other_status ,1);
329 Put_Log_Msg(' f_addr_status '|| p_student_rec.f_addr_status ,1);
330 Put_Log_Msg(' us_addr_status '|| p_student_rec.us_addr_status ,1);
331 Put_Log_Msg(' edu_status '|| p_student_rec.edu_status ,1);
332 Put_Log_Msg(' dep_status '|| p_student_rec.dep_status ,1);
333 Put_Log_Msg(' fin_status '|| p_student_rec.fin_status ,1);
334 Put_Log_Msg(' dep_count '|| p_student_rec.dep_count ,1);
335 Put_Log_Msg(' edu_count '|| p_student_rec.edu_count ,1);
336
337 Put_Log_Msg('********************************************************',1);
338 /* Debug */
339 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
340 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Dump_Current_Person';
341 l_debug_str := 'Exiting Dump_Current_Person.';
342 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
343 END IF;
344 END Dump_Current_Person;
345
346 /******************************************************************
347 Created By : Arkadi Tereshenkov
348 Date Created By : Oct 14, 2002
349 Purpose :
350 remarks :
351
352 Change History
353 Who When What
354 pkpatel 22-APR-2003 Bug No: 2908378
355 Modified the query to select the Active local institution. Added closed_ind = 'N'
356 while selecting the ORG_ALTERNATE_ID_TYPE
357 9-DEC-2003 Bug No: 2908378 (Used the profile for local Institution)
358 ------------------------------------------------------------------------
359
360
361 FUNCTION Get_School_Sevis_Id (
362 p_batch_type IN VARCHAR2
363 ) RETURN VARCHAR2
364 IS
365
366 CURSOR c_alt_id (cp_local_inst hz_parties.party_number%TYPE)
367 IS
368 SELECT org_alternate_id
369 FROM igs_or_org_alt_ids
370 WHERE org_structure_id = cp_local_inst
371 AND sysdate BETWEEN NVL(start_date,sysdate-1) and NVL(end_date,sysdate+1)
372 AND ( ( org_alternate_id_type =
373 ( SELECT org_alternate_id_type
374 FROM igs_or_org_alt_idtyp
375 WHERE system_id_type = g_school_sevis_id AND
376 close_ind = 'N' AND
377 inst_flag = 'Y'
378 ) AND p_batch_type ='I')
379 OR ( org_alternate_id_type =
380 ( SELECT org_alternate_id_type
381 FROM igs_or_org_alt_idtyp
382 WHERE system_id_type = g_sch_p_sevis_id AND
383 close_ind = 'N' AND
384 inst_flag = 'Y'
385 )
386 AND p_batch_type ='E')
387 );
388
389 l_alt_id VARCHAR2(255);
390 l_local_inst hz_parties.party_number%TYPE;
391
392 BEGIN
393 /* Debug
394 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
395 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_School_Sevis_Id';
396 l_debug_str := 'Entering Get_School_Sevis_Id. p_batch_type is '|| p_batch_type;
397 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
398 END IF;
399
400 l_local_inst := FND_PROFILE.VALUE('IGS_OR_LOCAL_INST');
401
402 OPEN c_alt_id(l_local_inst);
403 FETCH c_alt_id INTO l_alt_id;
404 CLOSE c_alt_id;
405
406 /* Debug
407 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
408 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_School_Sevis_Id';
409 l_debug_str := 'Exiting Get_School_Sevis_Id with return value '|| l_alt_id;
410 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
411 END IF;
412
413 RETURN l_alt_id;
414
415
416 END Get_School_Sevis_Id;
417 ******************************************************************/
418 /******************************************************************
419 Created By : prbhardw
420
421 Date Created By : Jan 03, 2006
422
423 Purpose : Function to check mutually exclusive tags.
424
425 Change History
426 Who When What
427 ------------------------------------------------------------------------
428
429 ******************************************************************/
430 FUNCTION chk_mut_exclusive(p_batch_id igs_sv_btch_summary.batch_id%TYPE,
431 p_person_id igs_sv_btch_summary.person_id%TYPE,
432 p_action igs_sv_btch_summary.action_code%TYPE,
433 p_tag_code igs_sv_btch_summary.tag_code%TYPE
434 )
435 RETURN NUMBER
436 IS
437 l_is_mut_excl BOOLEAN := TRUE;
438 l_return_batch_id NUMBER(14) := -1;
439 l_num_parallel_rec NUMBER(4) := 0;
440 l_rec_count NUMBER(5) := 0;
441 BEGIN
442 l_is_mut_excl := igs_sv_util.ismutuallyexclusive(p_person_id,
443 p_batch_id,
444 p_action,
445 p_tag_code);
446 IF l_is_mut_excl = TRUE THEN
447 IF(g_parallel_batches.COUNT >0) THEN
448 FOR i IN g_parallel_batches.FIRST..g_parallel_batches.LAST LOOP
449 l_rec_count := l_rec_count +1;
450 l_is_mut_excl := igs_sv_util.ismutuallyexclusive(p_person_id,
451 g_parallel_batches(l_rec_count),
452 p_action,
453 p_tag_code);
454 IF l_is_mut_excl = FALSE THEN
455 l_return_batch_id := g_parallel_batches(l_rec_count);
456 igs_sv_util.create_Person_Rec(p_person_id,p_batch_id,l_return_batch_id);
457 EXIT;
458 END IF;
459 END LOOP;
460 END IF;
461 ELSE
462 l_return_batch_id := p_batch_id;
463 END IF;
464
465 IF l_is_mut_excl = TRUE THEN
466 l_num_parallel_rec := g_parallel_batches.count + 1;
467 l_return_batch_id := igs_sv_util.open_new_batch(p_person_id,p_batch_id, 'CONN_JOB');
468 g_parallel_batches(l_num_parallel_rec) := l_return_batch_id;
469 END IF;
470 RETURN l_return_batch_id;
471
472 END chk_mut_exclusive;
473
474
475 /******************************************************************
476 Created By : Arkadi Tereshenkov
477 Date Created By : Oct 14, 2002
478 Purpose :
479 remarks :
480
481 Change History
482 Who When What
483 ------------------------------------------------------------------------
484
485 ******************************************************************/
486 FUNCTION Is_Number (
487 p_num VARCHAR2
488 ) RETURN VARCHAR2
489 IS
490
491 BEGIN
492 /* Debug */
493 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
494 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Is_Number';
495 l_debug_str := 'Entering Is_Number. p_num is '|| p_num;
496 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
497 END IF;
498 Put_Log_Msg('Is_Number begins',0);
499
500 RETURN to_char(to_number(p_num));
501
502 EXCEPTION
503
504 WHEN VALUE_ERROR THEN
505 /* Debug */
506 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
507 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Is_Number';
508 l_debug_str := 'Exception in Is_Number'||SQLERRM;
509 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
510 END IF;
511
512 RETURN '';
513
514 END Is_Number;
515
516 /******************************************************************
517 Created By : Arkadi Tereshenkov
518 Date Created By : Oct 14, 2002
519 Purpose :
520 remarks :
521
522 Change History
523 Who When What
524 ------------------------------------------------------------------------
525
526 ******************************************************************/
527 FUNCTION Get_Lookup_Name (
528 p_type VARCHAR2 ,
529 p_code VARCHAR2
530
531 ) RETURN VARCHAR2
532 IS
533
534 CURSOR c_blk_name IS
535 SELECT meaning
536 FROM fnd_lookup_values
537 WHERE lookup_code = p_code
538 AND view_application_id = 8405
539 AND enabled_flag='Y'
540 AND language = USERENV('LANG')
541 AND lookup_type = p_type
542 AND SYSDATE BETWEEN NVL(start_date_active,SYSDATE-1) AND NVL(end_date_active, SYSDATE + 1);
543
544 l_block_name VARCHAR2(255);
545
546 BEGIN
547 /* Debug */
548 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
549 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Lookup_Name';
550 l_debug_str := 'Entering Get_Lookup_Name. p_type is '||p_type ||' and p_code is '|| p_code;
551 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
552 END IF;
553
554 OPEN c_blk_name;
555 FETCH c_blk_name INTO l_block_name;
556 CLOSE c_blk_name;
557
558 /* Debug */
559 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
560 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Lookup_Name';
561 l_debug_str := 'Returning from Get_Lookup_Name with value '||l_block_name;
562 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
563 END IF;
564
565 RETURN l_block_name;
566
567 END Get_Lookup_Name;
568
569
570
571 /******************************************************************
572 Created By : Arkadi Tereshenkov
573 Date Created By : Oct 14, 2002
574 Purpose :
575 remarks :
576
577 Change History
578 Who When What
579 ------------------------------------------------------------------------
580
581 ******************************************************************/
582 FUNCTION Convert_Country_Code (
583
584 p_code VARCHAR2
585
586 ) RETURN VARCHAR2
587 IS
588
589 CURSOR c_blk_name IS
590 SELECT SUBSTR(meaning,5,2)
591 FROM fnd_lookup_values
592 WHERE lookup_type = 'PQP_US_COUNTRY_TRANSLATE'
593 AND view_application_id = 3
594 AND lookup_code=p_code
595 AND SYSDATE BETWEEN NVL(start_date_active,SYSDATE-1) AND NVL(end_date_active, SYSDATE + 1);
596
597 CURSOR chk_iso_country (cp_cntry_code VARCHAR2) IS
598 SELECT alternate_territory_code
599 FROM fnd_territories_vl
600 WHERE territory_code = cp_cntry_code;
601
602 l_block_name VARCHAR2(255);
603 l_alt_code VARCHAR2(12);
604
605 BEGIN
606 /* Debug */
607 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
608 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Convert_Country_Code';
609 l_debug_str := 'Entering Convert_Country_Code. p_code is '||p_code;
610 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
611 END IF;
612 --Code for non-ISO countries
613 OPEN chk_iso_country(p_code);
614 FETCH chk_iso_country INTO l_alt_code;
615 CLOSE chk_iso_country;
616
617 IF INSTR(l_alt_code,'IGS_') <> 0 THEN
618 RETURN substr(l_alt_code,5);
619 END IF;
620
621 OPEN c_blk_name;
622 FETCH c_blk_name INTO l_block_name;
623 CLOSE c_blk_name;
624 -- change for country code inconsistency bug 3738488
625 IF l_block_name IS NULL THEN
626 IF p_code = 'AU' THEN
627 l_block_name := 'AT';
628 Put_Log_Msg('ISO Country Code (AU) converted into US Country Code (AT)',0);
629 ELSIF p_code = 'UM' THEN
630 l_block_name := 'BQ';
631 Put_Log_Msg('ISO Country Code (UM) converted into US Country Code (BQ)',0);
632 ELSIF p_code = 'RE' THEN
633 l_block_name := 'JU';
634 Put_Log_Msg('ISO Country Code (RE) converted into US Country Code (JU)',0);
635 ELSIF p_code = 'SJ' THEN
636 l_block_name := 'JN';
637 Put_Log_Msg('ISO Country Code (SJ) converted into US Country Code (JN)',0);
638 ELSIF p_code = 'GB' THEN
639 l_block_name := 'IM';
640 Put_Log_Msg('ISO Country Code (GB) converted into US Country Code (IM)',0);
641 ELSIF p_code = 'PF' THEN
642 l_block_name := 'IP';
643 Put_Log_Msg('ISO Country Code (PF) converted into US Country Code (IP)',0);
644 ELSIF p_code = 'JE' OR p_code = 'WS' THEN
645 l_block_name := p_code;
646 Put_Log_Msg('ISO Country Code ('||p_code||') has same value for US Country Code. No conversion.',0);
647 END IF;
648 END IF;
649
650 /* Debug */
651 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
652 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Convert_Country_Code';
653 l_debug_str := 'Returning from Convert_Country_Code with value '|| l_block_name;
654 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
655 END IF;
656
657 RETURN NVL(l_block_name,p_code);
658
659
660 END Convert_Country_Code;
661
662
663
664 /******************************************************************
665 Created By : Arkadi Tereshenkov
666
667 Date Created By : Oct 14, 2002
668
669 Purpose : Validate information pertaining to the
670 Legal information block of student.
671 (IGS_SV_LEGAL_INFO)
672
673 Remarks : Return result:
674 'S' - record found and validated
675 'E' - validation error
676 'U' - Unexpected error
677 'N' - data not found
678
679 Change History
680 Who When What
681 ------------------------------------------------------------------------
682
683 ******************************************************************/
684 FUNCTION Convert_Visa_Type (
685 p_visa_meaning VARCHAR2
686 ) RETURN VARCHAR2 IS
687
688 CURSOR c_visa_type IS
689 SELECT lv.lookup_code
690 FROM fnd_lookup_values lv
691 WHERE lv.lookup_type = 'SV_MAP_HR_VISA_TYPES'
692 AND lv.meaning = p_visa_meaning
693 AND SYSDATE BETWEEN NVL(start_date_active,SYSDATE-1) AND NVL(end_date_active, SYSDATE + 1);
694
695 l_sv_visa_code VARCHAR2(30);
696
697 BEGIN
698 /* Debug */
699 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
700 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Convert_Visa_Type';
701 l_debug_str := 'Entering Convert_Visa_Type. p_visa_meaning is '||p_visa_meaning;
702 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
703 END IF;
704
705 OPEN c_visa_type;
706
707 FETCH c_visa_type
708 INTO l_sv_visa_code;
709
710 CLOSE c_visa_type;
711 /* Debug */
712 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
713 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Convert_Visa_Type';
714 l_debug_str := 'Returning from Convert_Visa_Type with value '|| l_sv_visa_code;
715 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
716 END IF;
717
718 RETURN l_sv_visa_code;
719
720 END Convert_Visa_Type;
721
722
723
724 /******************************************************************
725 Created By : Arkadi Tereshenkov
726 Date Created By : Oct 14, 2002
727 Purpose :
728 remarks :
729
730 Change History
731 Who When What
732 ------------------------------------------------------------------------
733
734 ******************************************************************/
735 FUNCTION Convert_Suffix(
736 p_person_num IN VARCHAR2,
737 p_code IN VARCHAR2,
738 p_type IN VARCHAR2
739 ) RETURN VARCHAR2
740 IS
741
742 CURSOR c_name_suffix IS
743 SELECT tag
744 FROM fnd_lookup_values
745 WHERE lookup_code = p_code
746 AND view_application_id = 8405
747 AND enabled_flag = 'Y'
748 AND language = USERENV('LANG')
749 AND lookup_type = p_type
750 AND SYSDATE BETWEEN NVL(start_date_active,SYSDATE-1) AND NVL(end_date_active, SYSDATE + 1);
751
752 l_name_suffix VARCHAR2(30);
753
754 BEGIN
755 /* Debug */
756 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
757 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Convert_Suffix';
758 l_debug_str := 'Entering Convert_Suffix. p_person_num is '||p_person_num || ', p_code is '||p_code||' and p_type is '||p_type;
759 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
760 END IF;
761
762 OPEN c_name_suffix;
763 FETCH c_name_suffix
764 INTO l_name_suffix;
765
766 IF (c_name_suffix%NOTFOUND) AND p_code IS NOT NULL THEN
767
768 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_WARN_FLD_ERR'); -- Warning message for optional field
769 FND_MESSAGE.SET_TOKEN('FIELD_NAME', 'Suffix');
770 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_num);
771 Put_Log_Msg(FND_MESSAGE.Get,1);
772
773 l_name_suffix := NULL;
774
775 END IF;
776 CLOSE c_name_suffix;
777
778 /* Debug */
779 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
780 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Convert_Suffix';
781 l_debug_str := 'Returning from Convert_Suffix with value '|| l_name_suffix;
782 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
783 END IF;
784
785 RETURN l_name_suffix;
786
787 END Convert_Suffix;
788
789
790
791 /******************************************************************
792 Created By : Arkadi Tereshenkov
793 Date Created By : Oct 14, 2002
794 Purpose :
795 remarks :
796
797 Change History
798 Who When What
799 ------------------------------------------------------------------------
800
801 ******************************************************************/
802 FUNCTION Get_Block_Name (
803 p_block VARCHAR2
804 ) RETURN VARCHAR2
805 IS
806
807 BEGIN
808 /* Debug */
809 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
810 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Block_Name';
811 l_debug_str := 'Inside Get_Block_Name. p_block is '||p_block;
812 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
813 END IF;
814
815 RETURN get_lookup_name ('SV_VALIDATIONS',p_block);
816
817 END Get_Block_Name;
818
819
820
821 /******************************************************************
822 Created By : Arkadi Tereshenkov
823 Date Created By : Oct 14, 2002
824 Purpose :
825 remarks :
826
827 Change History
828 Who When What
829 ------------------------------------------------------------------------
830
831 ******************************************************************/
832 FUNCTION Get_Person_Sevis_Id (
833 p_person_id IN NUMBER
834 ) RETURN VARCHAR2
835 IS
836
837 CURSOR c_alt_id IS
838 SELECT api_person_id
839 FROM igs_pe_alt_pers_id
840 WHERE pe_person_id = p_person_id
841 AND person_id_type
842 IN (SELECT person_id_type
843 FROM igs_pe_person_id_typ
844 WHERE s_person_id_type = g_person_sevis_id)
845 AND start_dt <= trunc(sysdate)
846 AND NVL(end_dt,sysdate+1) >= trunc(sysdate);
847
848 l_alt_id VARCHAR2(255);
849
850 BEGIN
851 /* Debug */
852 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
853 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Person_Sevis_Id';
854 l_debug_str := 'Entering Get_Person_Sevis_Id. p_person_id is '||p_person_id;
855 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
856 END IF;
857
858 OPEN c_alt_id;
859 FETCH c_alt_id INTO l_alt_id;
860 CLOSE c_alt_id;
861
862
863 IF l_alt_id IS NOT NULL AND LENGTH(l_alt_id)<=11 THEN
864
865 /* Debug */
866 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
867 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Person_Sevis_Id';
868 l_debug_str := 'Returning from Get_Person_Sevis_Id with value '||l_alt_id;
869 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
870 END IF;
871
872 RETURN l_alt_id;
873
874 END IF;
875 /* Debug */
876 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
877 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Person_Sevis_Id';
878 l_debug_str := 'Returning from Get_Person_Sevis_Id ';
879 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
880 END IF;
881
882 RETURN '';
883
884 END Get_Person_Sevis_Id;
885
886
887 FUNCTION Check_US_Terr(
888 p_person_num IN VARCHAR2,
889 p_code IN VARCHAR2
890 ) RETURN VARCHAR2
891 IS
892
893 CURSOR c_name IS
894 SELECT tag
895 FROM fnd_lookup_values
896 WHERE lookup_code = p_code
897 AND view_application_id = 8405
898 AND enabled_flag = 'Y'
899 AND language = USERENV('LANG')
900 AND lookup_type = 'SV_US_TERRITORY_CODES'
901 AND SYSDATE BETWEEN NVL(start_date_active,SYSDATE-1) AND NVL(end_date_active, SYSDATE + 1);
902
903 l_name_suffix VARCHAR2(30);
904
905 BEGIN
906 /* Debug */
907 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
908 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Check_US_Terr';
909 l_debug_str := 'Entering Check_US_Terr. p_person_num is '||p_person_num ||' and p_code is '||p_code;
910 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
911 END IF;
912
913 OPEN c_name;
914 FETCH c_name
915 INTO l_name_suffix;
916
917 IF p_code IS NOT NULL AND c_name%FOUND THEN
918
919 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_US_TERR_CD_ERR'); -- Error
920 FND_MESSAGE.SET_TOKEN('CNTRY_CODE', p_code);
921 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_num);
922 Put_Log_Msg(FND_MESSAGE.Get,1);
923
924 CLOSE c_name;
925 /* Debug */
926 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
927 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Check_US_Terr';
928 l_debug_str := 'Returning E from Check_US_Terr ';
929 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
930 END IF;
931
932 RETURN 'E';
933
934 END IF;
935
936 CLOSE c_name;
937
938 /* Debug */
939 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
940 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Check_US_Terr';
941 l_debug_str := 'Returning S from Check_US_Terr ';
942 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
943 END IF;
944
945 RETURN 'S';
946
947 END Check_US_Terr;
948
949 /******************************************************************
950 Created By : Arkadi Tereshenkov
951 Date Created By : Oct 14, 2002
952 Purpose :
953 remarks :
954
955 Change History
956 Who When What
957 ------------------------------------------------------------------------
958
959 ******************************************************************/
960 FUNCTION Get_Prev_Dep (
961 p_person_id IN NUMBER,
962 p_depdnt_id IN NUMBER,
963 p_batch_id IN NUMBER,
964 p_action_type VARCHAR2
965 ) RETURN BOOLEAN
966 IS
967
968 CURSOR c_dep_exist IS
969 SELECT COUNT('X')
970 FROM igs_sv_depdnt_info
971 WHERE person_id = p_person_id
972 AND depdnt_id = p_depdnt_id
973 AND batch_id < p_batch_id;
974
975 l_dep_exists BOOLEAN := TRUE;
976 l_count NUMBER := 0;
977 BEGIN
978 /* Debug */
979 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
980 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Prev_Dep';
981 l_debug_str := 'Entering Get_Prev_Dep. p_person_id is '||p_person_id||' dependent id is'||p_depdnt_id;
982 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
983 END IF;
984
985 OPEN c_dep_exist;
986 FETCH c_dep_exist INTO l_count;
987 CLOSE c_dep_exist;
988
989 IF p_action_type = 'T' AND l_count = 0 THEN
990 l_dep_exists := FALSE;
991 END IF;
992
993 RETURN l_dep_exists;
994
995
996 END Get_Prev_Dep;
997
998 /******************************************************************
999 Created By : Arkadi Tereshenkov
1000 Date Created By : Oct 14, 2002
1001 Purpose :
1002 remarks :
1003
1004 Change History
1005 Who When What
1006 ------------------------------------------------------------------------
1007
1008 ******************************************************************/
1009 FUNCTION is_valid_addr (
1010 p_batch_type VARCHAR2,
1011 p_person_id NUMBER,
1012 p_site_id NUMBER
1013 ) RETURN BOOLEAN
1014 IS
1015 l_valid_addr BOOLEAN;
1016 l_count NUMBER;
1017
1018 CURSOR c_f_addr_exists(cp_person_id igs_sv_addresses.person_id%TYPE, cp_party_site_id igs_sv_addresses.party_site_id%TYPE)
1019 IS
1020 SELECT 1
1021 FROM igs_pe_addr_v adr,
1022 igs_pe_partysiteuse_v usg
1023 WHERE person_id = cp_person_id
1024 AND ( adr.status = 'A' AND SYSDATE BETWEEN NVL(start_dt,SYSDATE) AND NVL(end_dt, SYSDATE + 1) )
1025 AND usg.party_site_id = adr.party_site_id
1026 AND adr.party_site_id = cp_party_site_id
1027 AND usg.site_use_type = g_f_addr_usage
1028 AND usg.active = 'A';
1029
1030 CURSOR c_us_addr_exists(cp_person_id igs_sv_addresses.person_id%TYPE, cp_party_site_id igs_sv_addresses.party_site_id%TYPE)
1031 IS
1032 SELECT 1
1033 FROM igs_pe_addr_v adr,
1034 igs_pe_partysiteuse_v usg
1035 WHERE person_id = cp_person_id
1036 AND ( adr.status = 'A' AND SYSDATE BETWEEN NVL(start_dt,SYSDATE) AND NVL(end_dt, SYSDATE + 1) )
1037 AND usg.party_site_id = adr.party_site_id
1038 AND adr.party_site_id = cp_party_site_id
1039 AND usg.site_use_type = g_us_addr_usage
1040 AND usg.active = 'A';
1041
1042 CURSOR c_soa_exists(cp_person_id igs_sv_addresses.person_id%TYPE, cp_party_site_id igs_sv_addresses.party_site_id%TYPE)
1043 IS
1044 SELECT 1
1045 FROM hz_locations loc,
1046 hz_party_sites ps,
1047 igs_pe_hz_pty_sites igsps,
1048 hz_party_site_uses usg
1049 WHERE
1050 ps.location_id = loc.location_id
1051 AND ps.party_site_id = igsps.party_site_id (+)
1052 AND ps.party_site_id = cp_party_site_id
1053 AND ps.party_id = cp_person_id
1054 AND ( ps.status = 'A' AND SYSDATE BETWEEN NVL(IGSPS.start_date,SYSDATE) AND NVL(IGSPS.end_date, SYSDATE + 1))
1055 AND usg.party_site_id = ps.party_site_id
1056 AND usg.site_use_type = g_site_addr_usage
1057 AND usg.status = 'A'
1058 UNION
1059 SELECT 1
1060 FROM hz_locations adr,
1061 igs_pe_act_site usg
1062 WHERE usg.person_id = cp_person_id
1063 AND SYSDATE BETWEEN nvl(ADDRESS_EFFECTIVE_DATE,sysdate-1) AND NVL(ADDRESS_EXPIRATION_DATE, SYSDATE + 1)
1064 AND usg.location_id = adr.location_id
1065 AND adr.location_id = cp_party_site_id
1066 AND sysdate BETWEEN usg.start_date AND NVL(usg.end_date,sysdate+1);
1067
1068 BEGIN
1069 /* Debug */
1070 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1071 l_label := 'igs.plsql.igs_sv_batch_process_pkg.is_valid_addr';
1072 l_debug_str := 'Entering is_valid_addr. person id: '||p_person_id ||'site id: '|| p_site_id;
1073 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1074 END IF;
1075 Put_Log_Msg('is_valid_addr begins',0);
1076
1077 l_valid_addr := TRUE;
1078 l_count := 0;
1079 IF p_batch_type = 'E' THEN
1080 OPEN c_us_addr_exists(p_person_id, p_site_id);
1081 FETCH c_us_addr_exists INTO l_count;
1082 CLOSE c_us_addr_exists;
1083
1084 IF l_count > 0 THEN
1085 l_count := 0;
1086 OPEN c_soa_exists(p_person_id, p_site_id);
1087 FETCH c_soa_exists INTO l_count;
1088 CLOSE c_soa_exists;
1089 IF l_count > 0 THEN
1090 l_valid_addr := FALSE;
1091 END IF;
1092 END IF;
1093
1094 ELSE
1095 OPEN c_f_addr_exists(p_person_id, p_site_id);
1096 FETCH c_f_addr_exists INTO l_count;
1097 CLOSE c_f_addr_exists;
1098
1099 IF l_count > 0 THEN
1100 l_count := 0;
1101 OPEN c_us_addr_exists(p_person_id, p_site_id);
1102 FETCH c_us_addr_exists INTO l_count;
1103 CLOSE c_us_addr_exists;
1104 IF l_count > 0 THEN
1105 l_valid_addr := FALSE;
1106 END IF;
1107 END IF;
1108 END IF;
1109
1110
1111 Put_Log_Msg('returning from is_valid_addr',0);
1112 RETURN l_valid_addr;
1113
1114 EXCEPTION
1115
1116 WHEN OTHERS THEN
1117 /* Debug */
1118 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1119 l_label := 'igs.plsql.igs_sv_batch_process_pkg.is_valid_addr';
1120 l_debug_str := 'Exception in is_valid_addr'||SQLERRM;
1121 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1122 END IF;
1123
1124 RETURN l_valid_addr;
1125
1126 END is_valid_addr;
1127 /***************** Validation procedures *************************************
1128
1129 OIB Other Information
1130 FAB Foreign Address Information
1131 UAB US Address Information
1132 AAB Site of Activity Address Information
1133 EIB Education Information
1134 FIB Financial Information
1135 DIB Dependent Information
1136 CIB Conviction Information
1137 LIB Legal Information
1138 EMB Employment Information
1139 PIB Program Information
1140
1141 *******************************************************************************/
1142
1143 /******************************************************************
1144 Created By : Arkadi Tereshenkov
1145
1146 Date Created By : Oct 14, 2002
1147
1148 Purpose : Validate the information for the block that
1149 is to be used for the Person Info Block
1150 (IGS_SV_PERSONS)
1151
1152 Remarks : Return result:
1153 'S' - record found and validated
1154 'E' - validation error
1155 'U' - Unexpected error
1156 'N' - data not found
1157
1158 Change History
1159 Who When What
1160 ------------------------------------------------------------------------
1161
1162 ******************************************************************/
1163 FUNCTION Validate_Issue_Info (
1164 p_person_rec IN t_student_rec,
1165 p_data_rec IN OUT NOCOPY IGS_SV_PERSONS%ROWTYPE -- Data record
1166 ) RETURN VARCHAR2
1167 IS
1168
1169 l_api_name CONSTANT VARCHAR(30) := 'Validate_Issue_Info';
1170
1171 CURSOR c_data IS
1172 SELECT issue_reason ,
1173 curr_session_end_date ,
1174 next_session_start_date ,
1175 other_reason,
1176 transfer_from_school,
1177 prgm_start_date,
1178 last_session_flag,
1179 adjudicated_flag
1180 FROM igs_pe_nonimg_form
1181 WHERE nonimg_form_id = p_person_rec.form_id ;
1182
1183 CURSOR c_ev_data IS
1184 SELECT create_reason ,
1185 prgm_start_date ,
1186 prgm_end_date ,
1187 ev_form_number ,
1188 init_prgm_start_date ,
1189 no_show_flag
1190 FROM igs_pe_ev_form
1191 WHERE ev_form_id = p_person_rec.form_id ;
1192
1193
1194 l_not_valid boolean := FALSE;
1195 l_prog_start_date igs_pe_nonimg_form.prgm_start_date%TYPE;
1196
1197 BEGIN
1198
1199 /* Debug */
1200 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1201 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1202 l_debug_str := 'Entering Validate_Issue_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
1203 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1204 END IF;
1205
1206 Put_Log_Msg(l_api_name||' starts ',0);
1207
1208 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
1209
1210 IF p_person_rec.batch_type = 'I' THEN
1211
1212 FOR c_data_rec IN c_data LOOP
1213
1214 p_data_rec.batch_id := p_person_rec.batch_id;
1215 p_data_rec.person_id := p_person_rec.person_id;
1216 p_data_rec.print_form := p_person_rec.print_form;
1217 p_data_rec.record_number := p_person_rec.record_number ;
1218 p_data_rec.form_id := p_person_rec.form_id ;
1219 p_data_rec.record_status := p_person_rec.record_status ;
1220 p_data_rec.person_number := p_person_rec.person_number ;
1221 p_data_rec.sevis_user_id := p_person_rec.sevis_user_id ;
1222 l_prog_start_date := c_data_rec.prgm_start_date ;
1223
1224 p_data_rec.creation_date := sysdate;
1225 p_data_rec.created_by := g_update_by;
1226 p_data_rec.last_updated_by := g_update_by;
1227 p_data_rec.last_update_date := sysdate;
1228 p_data_rec.last_update_login := g_update_login;
1229
1230 p_data_rec.issuing_reason := c_data_rec.issue_reason;
1231 p_data_rec.curr_session_end_date:= to_char(c_data_rec.curr_session_end_date,'YYYY-MM-DD');
1232 p_data_rec.next_session_start_date:= to_char(c_data_rec.next_session_start_date,'YYYY-MM-DD');
1233 p_data_rec.other_reason:= c_data_rec.other_reason;
1234 p_data_rec.Transfer_from_school:= c_data_rec.Transfer_from_school;
1235 p_data_rec.last_session_flag := c_data_rec.last_session_flag;
1236 p_data_rec.adjudicated_flag := c_data_rec.adjudicated_flag;
1237
1238 /* Debug */
1239 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1240 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1241 l_debug_str := 'Exiting from for loop of Validate_Issue_Info';
1242 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1243 END IF;
1244
1245 EXIT; -- one record is enough
1246
1247 END LOOP;
1248
1249 ELSE
1250
1251 FOR c_data_rec IN c_ev_data LOOP
1252
1253 p_data_rec.batch_id := p_person_rec.batch_id;
1254 p_data_rec.person_id := p_person_rec.person_id;
1255 p_data_rec.print_form := p_person_rec.print_form;
1256 p_data_rec.record_number := p_person_rec.record_number ;
1257 p_data_rec.form_id := p_person_rec.form_id ;
1258 p_data_rec.record_status := p_person_rec.record_status ;
1259 p_data_rec.person_number := p_person_rec.person_number ;
1260 p_data_rec.sevis_user_id := p_person_rec.sevis_user_id ;
1261
1262 p_data_rec.creation_date := sysdate;
1263 p_data_rec.created_by := g_update_by;
1264 p_data_rec.last_updated_by := g_update_by;
1265 p_data_rec.last_update_date := sysdate;
1266 p_data_rec.last_update_login := g_update_login;
1267
1268 p_data_rec.ev_create_reason := c_data_rec.create_reason;
1269 p_data_rec.ev_form_number:= c_data_rec.ev_form_number;
1270
1271 --These fields are used for EV program start date
1272
1273 p_data_rec.curr_session_end_date:= to_char(c_data_rec.prgm_end_date,'YYYY-MM-DD');
1274 p_data_rec.next_session_start_date:= to_char(c_data_rec.prgm_start_date,'YYYY-MM-DD');
1275 p_data_rec.init_prgm_start_date:= to_char(c_data_rec.init_prgm_start_date,'YYYY-MM-DD');
1276 p_data_rec.no_show_flag := c_data_rec.no_show_flag;
1277
1278 /* Debug */
1279 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1280 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1281 l_debug_str := 'Exiting from for loop of Validate_Issue_Info';
1282 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1283 END IF;
1284 EXIT; -- one record is enough
1285
1286 END LOOP;
1287
1288
1289 END IF;
1290
1291
1292 IF p_data_rec.batch_id IS NULL THEN
1293
1294 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
1295 /* Debug */
1296 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1297 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1298 l_debug_str := 'Returning N from Validate_Issue_Info';
1299 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1300 END IF;
1301
1302 RETURN 'N';
1303
1304 ELSE
1305
1306 IF p_data_rec.issuing_reason = 'C' THEN
1307
1308 IF p_data_rec.curr_session_end_date IS NULL OR p_data_rec.next_session_start_date IS NULL THEN
1309
1310 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_ISSUE_C_REQ_ERR'); -- SEVIS common error
1311 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1312
1313 Put_Log_Msg(FND_MESSAGE.Get,1);
1314 l_not_valid := TRUE;
1315
1316 END IF;
1317
1318 ELSIF p_data_rec.issuing_reason = 'T' THEN
1319
1320 IF p_data_rec.Transfer_from_school IS NULL THEN
1321
1322 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_ISSUE_T_REQ_ERR'); -- SEVIS common error
1323 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1324
1325 Put_Log_Msg(FND_MESSAGE.Get,1);
1326 l_not_valid := TRUE;
1327
1328 END IF;
1329
1330 ELSIF p_data_rec.issuing_reason = 'I' THEN
1331
1332 IF l_prog_start_date IS NULL OR l_prog_start_date < trunc(sysdate) THEN
1333
1334 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_PRG_START_DT_ERR'); -- SEVIS common error
1335 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1336 FND_MESSAGE.SET_TOKEN('PRGM_DATE', l_prog_start_date );
1337
1338 Put_Log_Msg(FND_MESSAGE.Get,1);
1339 l_not_valid := TRUE;
1340
1341 END IF;
1342
1343
1344 ELSIF p_data_rec.issuing_reason = 'O' THEN
1345
1346 IF p_data_rec.other_reason IS NULL THEN
1347
1348 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_ISSUE_O_REQ_ERR'); -- SEVIS common error
1349 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1350
1351 Put_Log_Msg(FND_MESSAGE.Get,1);
1352 l_not_valid := TRUE;
1353
1354 END IF;
1355
1356 ELSIF p_person_rec.batch_type = 'E' AND p_data_rec.issuing_reason = 'CONT' AND p_data_rec.init_prgm_start_date IS NULL THEN
1357
1358 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EV_PRG_RQD_FLD_ERR'); -- error - no initial date specified
1359 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1360
1361 Put_Log_Msg(FND_MESSAGE.Get,1);
1362 l_not_valid := TRUE;
1363
1364 ELSIF p_person_rec.batch_type = 'E'
1365 AND ( p_data_rec.curr_session_end_date IS NULL
1366 OR p_data_rec.next_session_start_date IS NULL ) THEN
1367
1368 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EV_PRG_RQD_FLD_ERR'); -- error
1369 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1370
1371 Put_Log_Msg(FND_MESSAGE.Get,1);
1372 l_not_valid := TRUE;
1373
1374 END IF;
1375
1376 IF p_person_rec.batch_type = 'I' THEN
1377 IF ( p_data_rec.last_session_flag = 'Y'
1378 AND p_data_rec.next_session_start_date IS NOT NULL ) THEN
1379
1380 --FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EV_LAST_SESN'); -- error
1381 --FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
1382 p_data_rec.next_session_start_date := NULL;
1383
1384 END IF;
1385 END IF;
1386
1387 IF l_not_valid THEN
1388
1389 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
1390 /* Debug */
1391 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1392 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1393 l_debug_str := 'Returning E from Validate_Issue_Info';
1394 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1395 END IF;
1396
1397 RETURN 'E';
1398
1399 END IF;
1400
1401 END IF;
1402
1403 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
1404 /* Debug */
1405 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1406 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1407 l_debug_str := 'Returning S from Validate_Issue_Info';
1408 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1409 END IF;
1410
1411 RETURN 'S'; -- Successfull validation
1412
1413 EXCEPTION
1414
1415 WHEN OTHERS THEN
1416 /* Debug */
1417 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1418 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Issue_Info';
1419 l_debug_str := 'Exception in Validate_Issue_Info'||SQLERRM;
1420 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1421 END IF;
1422
1423 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
1424 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1425 END IF;
1426
1427 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
1428
1429 RETURN 'U';
1430
1431 END Validate_Issue_Info;
1432
1433
1434 /******************************************************************
1435 Created By : Arkadi Tereshenkov
1436
1437 Date Created By : Oct 14, 2002
1438
1439 Purpose : Validation procedure on data that is to be
1440 resident in the BIO Info block.
1441 (IGS_SV_BIO_INFO)
1442
1443 Remarks : Return result:
1444 'S' - record found and validated
1445 'E' - validation error
1446 'U' - Unexpected error
1447 'N' - data not found
1448
1449 Change History
1450 Who When What
1451 pkpatel 22-APR-2003 Bug No: 2908378
1452 Modified to prevent mandatory check of position_code and category_code, for dependents
1453 Added the new cursor c_perm_res_data for retriving Legal residency country
1454 ------------------------------------------------------------------------
1455
1456 ******************************************************************/
1457
1458 FUNCTION Validate_Name(p_Name IN varchar2) RETURN boolean IS
1459 returnVal boolean := false;
1460 BEGIN
1461 /* Debug */
1462 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1463 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Name';
1464 l_debug_str := 'Inside Validate_Name. p_Name is '|| p_Name;
1465 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1466 END IF;
1467
1468 FOR counter in 0..9 LOOP
1469 if instr(p_Name,counter) > 0 then
1470 returnVal :=true;
1471 EXIT WHEN returnVal;
1472 END IF;
1473 END LOOP;
1474 /* Debug */
1475 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1476 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Name';
1477 l_debug_str := 'Returning from Validate_Name';
1478 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1479 END IF;
1480
1481 RETURN returnVal;
1482
1483 END Validate_Name;
1484
1485 Function Validate_Bio_Info(
1486 p_person_rec IN t_student_rec,
1487 p_data_rec IN OUT NOCOPY IGS_SV_BIO_INFO%ROWTYPE -- Data record
1488 ) RETURN VARCHAR2
1489 IS
1490
1491 l_api_name CONSTANT VARCHAR(30) := 'Validate_Bio_Info';
1492
1493
1494 CURSOR c_hz_data IS
1495 SELECT hzpp.person_last_name,
1496 hzpp.person_middle_name,
1497 hzpp.person_first_name,
1498 hzpp.person_name_suffix,
1499 hzpp.date_of_birth,
1500 hzpp.gender,
1501 prt.birth_country,
1502 hzc.country_code,
1503 prt.birth_city
1504 FROM hz_person_profiles hzpp,
1505 hz_citizenship hzc,
1506 igs_pe_hz_parties prt
1507 WHERE hzpp.party_id = p_person_rec.person_id
1508 AND prt.party_id = hzpp.party_id
1509 AND hzc.party_id (+) = hzpp.party_id
1510 AND sysdate between hzpp.effective_start_date AND NVL(hzpp.effective_end_date,sysdate+1);
1511
1512 CURSOR c_nonimg_data IS
1513 SELECT peva.visa_type
1514 FROM igs_pe_visa peva
1515 WHERE peva.person_id = p_person_rec.person_id
1516 AND SYSDATE BETWEEN peva.visa_issue_date AND peva.visa_expiry_date;
1517
1518 CURSOR c_com_data IS
1519 SELECT decode(commuter_ind,'Y','1','0') commuter
1520 FROM igs_pe_nonimg_form
1521 WHERE nonimg_form_id = p_person_rec.form_id;
1522
1523 CURSOR c_perm_res_data IS
1524 SELECT perm_res_cntry
1525 FROM igs_pe_eit_perm_res_v
1526 WHERE person_id = p_person_rec.person_id;
1527
1528 CURSOR c_ev_data IS
1529 SELECT pevf.position_code,
1530 pevf.category_code,
1531 pevf.position_remarks
1532 FROM igs_pe_ev_form pevf
1533 WHERE pevf.person_id = p_person_rec.person_id
1534 AND ev_form_id = p_person_rec.form_id;
1535
1536 CURSOR c_country_reason(cp_person_id number) IS
1537 SELECT psd.birth_cntry_resn_code
1538 FROM igs_pe_stat_details psd
1539 WHERE psd.person_id = cp_person_id;
1540
1541
1542 l_last_name hz_person_profiles.person_last_name%TYPE;
1543 l_middle_name hz_person_profiles.person_middle_name%TYPE;
1544 l_first_name hz_person_profiles.person_first_name%TYPE;
1545 l_suffix hz_person_profiles.person_name_suffix%TYPE;
1546 l_birth_date hz_person_profiles.date_of_birth%TYPE;
1547 l_birth_city igs_pe_hz_parties.birth_city%TYPE;
1548 l_gender hz_person_profiles.gender%TYPE;
1549 l_birth_cntry_code VARCHAR2(30); -- ASAP need new column and table to get type
1550 l_citizen_cntry_code hz_citizenship.country_code%TYPE;
1551 l_visa_type IGS_PE_VISA.visa_type%TYPE;
1552 l_commuter VARCHAR2(1); -- ASAP need new column and table to get type
1553 l_legal_res_cntry_code VARCHAR2(30); -- ASAP need new column and table to get type
1554 l_position_code IGS_PE_EV_FORM.position_code%TYPE;
1555 l_category_code IGS_PE_EV_FORM.category_code%TYPE;
1556 l_position_remarks IGS_PE_EV_FORM.position_remarks%TYPE;
1557 l_birth_cntry_resn_code igs_pe_stat_details.birth_cntry_resn_code%TYPE;
1558
1559 l_not_valid BOOLEAN :=FALSE;
1560 BEGIN
1561 -- Visa type valies
1562 -- 01 F-1
1563 -- 02 M-1
1564 -- 03 J-1
1565 -- 04 F-2
1566 -- 05 M-2
1567 -- 06 J-2
1568 /* Debug */
1569 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1570 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Bio_Info';
1571 l_debug_str := 'Inside Validate_Bio_Info. p_person_rec.batch_type is '|| p_person_rec.batch_type ||' and person_id is '|| p_person_rec.person_id;
1572 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1573 END IF;
1574
1575 Put_Log_Msg(l_api_name||' starts ',0);
1576 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
1577
1578 OPEN c_hz_data;
1579 FETCH c_hz_data
1580 INTO l_last_name,
1581 l_middle_name,
1582 l_first_name,
1583 l_suffix,
1584 l_birth_date,
1585 l_gender,
1586 l_birth_cntry_code,
1587 l_citizen_cntry_code,
1588 l_birth_city;
1589
1590 IF (c_hz_data%FOUND) THEN
1591
1592 l_suffix := convert_suffix (p_person_rec.person_number, l_suffix, 'PE_US_NAME_SUFFIX');
1593 p_data_rec.last_name := SUBSTR(l_last_name, 1, 40);
1594 p_data_rec.middle_name := SUBSTR(l_middle_name, 1, 40);
1595 p_data_rec.first_name := SUBSTR(l_first_name, 1, 40);
1596 p_data_rec.suffix := SUBSTR(l_suffix, 1, 3);
1597 p_data_rec.birth_date := to_char(l_birth_date,'YYYY-MM-DD');
1598 p_data_rec.birth_city := SUBSTR(l_birth_city,1,60);
1599 p_data_rec.gender := SUBSTR(l_gender, 1, 1);
1600 p_data_rec.birth_cntry_code := SUBSTR(l_birth_cntry_code, 1, 2);
1601 p_data_rec.citizen_cntry_code := convert_country_code (l_citizen_cntry_code);
1602 Put_Log_Msg('ISO Country ('||l_citizen_cntry_code||') converted to US Country ('||l_citizen_cntry_code||') for person:' ||p_data_rec.first_name||' ' ||p_data_rec.last_name||'.',0);
1603 p_data_rec.birth_cntry_resn_code := NULL;
1604
1605 OPEN c_country_reason(p_person_rec.person_id);
1606 FETCH c_country_reason
1607 INTO l_birth_cntry_resn_code;
1608 CLOSE c_country_reason;
1609
1610 p_data_rec.birth_cntry_resn_code := l_birth_cntry_resn_code;
1611
1612 OPEN c_nonimg_data;
1613 FETCH c_nonimg_data
1614 INTO l_visa_type;
1615
1616 l_visa_type := Convert_Visa_Type (l_visa_type);
1617
1618 CLOSE c_nonimg_data;
1619
1620 IF (p_person_rec.batch_type = 'I') THEN
1621
1622 OPEN c_com_data;
1623 FETCH c_com_data
1624 INTO l_commuter;
1625
1626 CLOSE c_com_data;
1627
1628 p_data_rec.commuter := SUBSTR(l_commuter, 1,1);
1629
1630 END IF;
1631
1632 p_data_rec.visa_type := SUBSTR(l_visa_type, 1, 2);
1633
1634 IF (p_person_rec.batch_type = 'E') THEN
1635 OPEN c_ev_data;
1636 FETCH c_ev_data
1637 INTO l_position_code,
1638 l_category_code,
1639 l_position_remarks;
1640
1641 IF (c_ev_data%FOUND) THEN
1642
1643 p_data_rec.position_code := SUBSTR(l_position_code, 1, 3);
1644 p_data_rec.category_code := l_category_code;
1645 p_data_rec.remarks := l_position_remarks;
1646
1647 END IF;
1648
1649 CLOSE c_ev_data;
1650
1651 -- 2908378 added to get the legal residency code
1652 OPEN c_perm_res_data;
1653 FETCH c_perm_res_data INTO l_legal_res_cntry_code;
1654 CLOSE c_perm_res_data;
1655
1656 END IF;
1657 p_data_rec.legal_res_cntry_code := l_legal_res_cntry_code;
1658 p_data_rec.batch_id := p_person_rec.batch_id;
1659 p_data_rec.person_id := p_person_rec.person_id;
1660 p_data_rec.print_form := p_person_rec.print_form;
1661 p_data_rec.creation_date := sysdate;
1662 p_data_rec.created_by := g_update_by;
1663 p_data_rec.last_updated_by := g_update_by;
1664 p_data_rec.last_update_date := sysdate;
1665 p_data_rec.last_update_login := g_update_login;
1666
1667 -- change for country code inconsistency bug 3738488
1668 p_data_rec.birth_cntry_code := convert_country_code(p_data_rec.birth_cntry_code);
1669 p_data_rec.legal_res_cntry_code := convert_country_code(p_data_rec.legal_res_cntry_code);
1670 END IF;
1671
1672 CLOSE c_hz_data;
1673
1674 IF Validate_Name(p_data_rec.last_name) THEN
1675 l_not_valid := TRUE;
1676 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_CHAR');
1677 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1678 Put_Log_Msg(FND_MESSAGE.Get,1);
1679 END IF;
1680
1681 IF p_data_rec.birth_cntry_code = 'US' AND p_data_rec.birth_cntry_resn_code IS NULL
1682 THEN
1683 l_not_valid := TRUE;
1684 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_CNTRY_RSN');
1685 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1686 Put_Log_Msg(FND_MESSAGE.Get,1);
1687 END IF;
1688
1689 IF (p_data_rec.batch_id IS NULL) THEN
1690
1691 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
1692 /* Debug */
1693 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1694 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Bio_Info';
1695 l_debug_str := 'Returning N from Validate_Bio_Info.';
1696 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1697 END IF;
1698
1699 RETURN 'N';
1700
1701 ELSE
1702
1703 --
1704 -- Validate all the data for required fields for both types of students
1705 --
1706 IF (p_data_rec.last_name IS NULL OR
1707 p_data_rec.birth_date IS NULL OR
1708 p_data_rec.birth_cntry_code IS NULL) THEN
1709 l_not_valid := TRUE;
1710 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_BIO_REQ_FLD_ERR'); -- Required fields for both Exchange Visitor or Foreign students
1711 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1712 Put_Log_Msg(FND_MESSAGE.Get,1);
1713 END IF;
1714 --
1715 -- Validate all the data for required fields for Foreign students
1716 --
1717
1718 IF ( NVL(p_data_rec.visa_type,'X') NOT IN ('01','02') AND p_person_rec.dep_flag ='N' AND p_person_rec.batch_type = 'I')
1719 OR ( NVL(p_data_rec.visa_type,'X') NOT IN ('04','05') AND p_person_rec.dep_flag ='Y' AND p_person_rec.batch_type = 'I')
1720 OR ( NVL(p_data_rec.visa_type,'X') <> '03' AND p_person_rec.dep_flag ='N' AND p_person_rec.batch_type = 'E')
1721 OR ( NVL(p_data_rec.visa_type,'X') <> '06' AND p_person_rec.dep_flag ='Y' AND p_person_rec.batch_type = 'E') THEN
1722 l_not_valid := TRUE;
1723 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_BIO_NIMG_REQ_FLD_ERR'); -- Required Fields for Foreign students
1724 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1725 Put_Log_Msg(FND_MESSAGE.Get,1);
1726 END IF;
1727
1728 -- 2908378 validation of legal residency code, birth city should fire for all persons
1729 --
1730 -- Validate all the data for required fields for Exchange Visitor students (even for dependants)
1731 --
1732
1733 IF (NVL(p_person_rec.dep_flag,'N') <> 'Y' AND p_person_rec.batch_type = 'E' AND(p_data_rec.legal_res_cntry_code IS NULL OR
1734 p_data_rec.birth_city IS NULL
1735 ) ) THEN
1736 l_not_valid := TRUE;
1737 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_BIO_EV_REQ_FLD_ERR'); -- Required Fields for Exchange Visitor students
1738 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1739 Put_Log_Msg(FND_MESSAGE.Get,1);
1740 END IF;
1741
1742 -- 2908378 validation of position_code, category_code should not fire for dependants, since they need not have EV form
1743 --
1744 -- Validate all the data for required fields for Exchange Visitor students (not for dependants)
1745 --
1746 IF (p_person_rec.batch_type = 'E' AND NVL(p_person_rec.dep_flag,'N') <> 'Y' AND(
1747 p_data_rec.position_code IS NULL OR
1748 p_data_rec.category_code IS NULL
1749 ) ) THEN
1750 l_not_valid := TRUE;
1751 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_BIO_EV_REQ_FLD_ERR'); -- Required Fields for Exchange Visitor students
1752 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1753 Put_Log_Msg(FND_MESSAGE.Get,1);
1754 END IF;
1755
1756
1757 IF (p_person_rec.batch_type = 'I' AND p_data_rec.citizen_cntry_code IS NULL) THEN
1758 l_not_valid := TRUE;
1759 FND_MESSAGE.SET_NAME('IGS', 'PERSON_NUMBER'); -- Required Fields for Exchange Visitor students
1760 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1761 Put_Log_Msg(FND_MESSAGE.Get,1);
1762 END IF;
1763
1764
1765 IF Check_US_Terr(p_person_rec.person_number,p_data_rec.citizen_cntry_code) ='E' THEN
1766
1767 --Error in the citizenship countries
1768
1769 Put_Log_Msg('Error validation citizenship country code',1);
1770 l_not_valid := TRUE;
1771 END IF;
1772
1773 IF NVL(p_person_rec.dep_flag,'N') <> 'Y' AND Check_US_Terr(p_person_rec.person_number,p_data_rec.legal_res_cntry_code) ='E' THEN
1774
1775 --Error in the citizenship countries
1776
1777 Put_Log_Msg('Error validation citizenship country code',1);
1778 l_not_valid := TRUE;
1779 END IF;
1780
1781
1782 IF (l_not_valid) THEN
1783
1784 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
1785 /* Debug */
1786 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1787 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Bio_Info';
1788 l_debug_str := 'Returning E from Validate_Bio_Info.';
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 RETURN 'E';
1792
1793 END IF;
1794
1795 END IF;
1796
1797 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
1798 /* Debug */
1799 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1800 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Bio_Info';
1801 l_debug_str := 'Returning S from Validate_Bio_Info.';
1802 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1803 END IF;
1804
1805 RETURN 'S'; -- Successfull validation
1806
1807 EXCEPTION
1808
1809 WHEN OTHERS THEN
1810 /* Debug */
1811 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1812 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Bio_Info';
1813 l_debug_str := 'Exception in Validate_Bio_Info.'||SQLERRM;
1814 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1815 END IF;
1816
1817 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
1818 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
1819 END IF;
1820 IF c_country_reason%ISOPEN THEN
1821 CLOSE c_country_reason;
1822 END IF;
1823 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
1824
1825 RETURN 'U';
1826
1827 END Validate_Bio_Info;
1828
1829
1830 /******************************************************************
1831 Created By : Arkadi Tereshenkov
1832
1833 Date Created By : Oct 14, 2002
1834
1835 Purpose : Validation on the data block pertaining to
1836 Other information. (IGS_SV_OTH_INFO)
1837
1838 Remarks : Return result:
1839 'S' - record found and validated
1840 'E' - validation error
1841 'U' - Unexpected error
1842 'N' - data not found
1843
1844 Change History
1845 Who When What
1846 pkpatel 23-APR-2003 Bug 2908378
1847 In all the 3 cursors replaced igs_pe_person_id_typ_v with igs_pe_person_id_typ
1848 Added to find the active record.
1849 In c_get_drivers the region code is to be retrieved from region_cd instead of attribute11
1850 ------------------------------------------------------------------------
1851
1852 ******************************************************************/
1853 FUNCTION Validate_Other_Info (
1854 p_person_rec IN t_student_rec,
1855 p_data_rec IN OUT NOCOPY IGS_SV_OTH_INFO%ROWTYPE -- Data record
1856 ) RETURN VARCHAR2
1857 IS
1858
1859 l_api_name CONSTANT VARCHAR(30) := 'Validate_Other_Info';
1860
1861 CURSOR c_alternate_id(cp_system_person_id_type igs_pe_person_id_typ.s_person_id_type%TYPE) IS
1862 SELECT palt.api_person_id_uf,
1863 palt.region_cd
1864 FROM igs_pe_alt_pers_id palt,
1865 igs_pe_person_id_typ typv
1866 WHERE typv.s_person_id_type = cp_system_person_id_type
1867 AND palt.person_id_type = typv.person_id_type
1868 AND palt.pe_person_id = p_person_rec.person_id
1869 AND SYSDATE BETWEEN palt.start_dt AND NVL(palt.end_dt,SYSDATE);
1870
1871 l_drivers_license IGS_PE_ALT_PERS_ID.api_person_id%TYPE;
1872 l_drivers_license_state IGS_PE_ALT_PERS_ID.region_cd%TYPE;
1873 l_ssn IGS_PE_ALT_PERS_ID.api_person_id%TYPE;
1874 l_new_ssn IGS_PE_ALT_PERS_ID.api_person_id%TYPE;
1875 l_taxid IGS_PE_ALT_PERS_ID.api_person_id%TYPE;
1876 l_not_valid BOOLEAN := FALSE;
1877 l_region_cd IGS_PE_ALT_PERS_ID.region_cd%TYPE;
1878 lv_region_cd IGS_PE_ALT_PERS_ID.region_cd%TYPE;
1879
1880 BEGIN
1881 /* Debug */
1882 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1883 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Other_Info';
1884 l_debug_str := 'Entering Validate_Other_Info. Batch_id is '||p_person_rec.batch_id||' and person_id is '||p_person_rec.person_id;
1885 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
1886 END IF;
1887 Put_Log_Msg(l_api_name||' starts ',0);
1888
1889 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
1890 p_data_rec.drivers_license := NULL;
1891 p_data_rec.drivers_license_state := NULL;
1892 p_data_rec.ssn := NULL;
1893 p_data_rec.tax_id := NULL;
1894
1895 --
1896 -- Obtain the drivers license information
1897 --
1898 OPEN c_alternate_id('DRIVER-LIC');
1899 FETCH c_alternate_id
1900 INTO l_drivers_license,
1901 l_drivers_license_state;
1902
1903 IF (c_alternate_id%FOUND) THEN
1904 p_data_rec.drivers_license := SUBSTR(l_drivers_license, 1, 30);
1905 p_data_rec.drivers_license_state := SUBSTR(l_drivers_license_state,2);
1906 END IF;
1907 CLOSE c_alternate_id;
1908
1909 -- Obtain the SSN number information
1910 --
1911 OPEN c_alternate_id('SSN');
1912 FETCH c_alternate_id
1913 INTO l_ssn,l_region_cd;
1914
1915 IF (c_alternate_id%FOUND) THEN
1916 p_data_rec.ssn := SUBSTR(l_ssn, 1, 9);
1917 END IF;
1918 CLOSE c_alternate_id;
1919
1920 --
1921 -- Obtain TAX ID information
1922 --
1923 OPEN c_alternate_id('TAXID');
1924 FETCH c_alternate_id
1925 INTO l_taxid,lv_region_cd;
1926 Put_Log_Msg('taxid pf person id '||p_person_rec.person_id ||' is '|| l_taxid,0);
1927 IF (c_alternate_id%FOUND) THEN
1928 p_data_rec.tax_id := SUBSTR(l_taxid, 1, 9);
1929 IF Is_Number(p_data_rec.tax_id) = '' OR Is_Number(p_data_rec.tax_id) IS NULL THEN
1930 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_TAXID');
1931 FND_MESSAGE.SET_TOKEN('PERSON_NUM', p_person_rec.person_number);
1932 Put_Log_Msg(FND_MESSAGE.Get,1);
1933 l_not_valid := true;
1934 END IF;
1935 END IF;
1936 CLOSE c_alternate_id;
1937
1938 --
1939 -- Need to validate that the SSN is in correct format 999999999
1940 --
1941 IF p_data_rec.ssn IS NOT NULL THEN
1942 FOR i IN 1 .. LENGTH (l_ssn) LOOP
1943 l_new_ssn := l_new_ssn || Is_Number(SUBSTR(l_ssn, i, 1)); -- Returns NULL if not numberic value
1944 END LOOP;
1945 ELSE
1946 l_new_ssn := NULL;
1947 END IF;
1948
1949 IF (l_new_ssn IS NOT NULL) THEN
1950
1951 IF (LENGTH(l_new_ssn) <> 9) THEN
1952
1953 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_WARN_FLD_ERR'); -- Warning message for optional field
1954 FND_MESSAGE.SET_TOKEN('FIELD_NAME', 'SSN');
1955 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1956 Put_Log_Msg(FND_MESSAGE.Get,1);
1957 p_data_rec.ssn := NULL; -- Only warning for bad SSN. Just NULL out value to be sent.
1958
1959 ELSE
1960
1961 p_data_rec.ssn := l_new_ssn;
1962
1963 END IF;
1964
1965 END IF;
1966
1967 --
1968 -- Check to see if there is a state associated to the license
1969 --
1970 IF (p_data_rec.drivers_license IS NOT NULL AND
1971 p_data_rec.drivers_license_state IS NULL) THEN
1972 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_WARN_FLD_ERR'); -- Warning message for optional field
1973 FND_MESSAGE.SET_TOKEN('FIELD_NAME', 'Drivers License State');
1974 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
1975 Put_Log_Msg(FND_MESSAGE.Get,1);
1976 END IF;
1977
1978 IF (p_data_rec.tax_id IS NOT NULL OR
1979 p_data_rec.ssn IS NOT NULL OR
1980 p_data_rec.drivers_license IS NOT NULL) THEN
1981
1982 p_data_rec.batch_id := p_person_rec.batch_id;
1983 p_data_rec.person_id := p_person_rec.person_id;
1984 p_data_rec.print_form := p_person_rec.print_form;
1985 p_data_rec.creation_date := sysdate;
1986 p_data_rec.created_by := g_update_by;
1987 p_data_rec.last_updated_by := g_update_by;
1988 p_data_rec.last_update_date := sysdate;
1989 p_data_rec.last_update_login := g_update_login;
1990
1991 END IF;
1992
1993 IF p_data_rec.batch_id IS NULL THEN
1994
1995 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
1996 /* Debug */
1997 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
1998 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Other_Info';
1999 l_debug_str := 'Returning N from Validate_Other_Info.';
2000 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2001 END IF;
2002 RETURN 'N';
2003
2004 ELSE
2005
2006 IF (l_not_valid) THEN
2007
2008 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
2009 /* Debug */
2010 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2011 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Other_Info';
2012 l_debug_str := 'Returning E from Validate_Other_Info.';
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 RETURN 'E';
2017
2018 END IF;
2019
2020 END IF;
2021
2022 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
2023 /* Debug */
2024 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2025 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Other_Info';
2026 l_debug_str := 'Returning S from Validate_Other_Info.';
2027 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2028 END IF;
2029
2030 RETURN 'S'; -- Successfull validation
2031
2032 EXCEPTION
2033
2034 WHEN OTHERS THEN
2035 /* Debug */
2036 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2037 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Other_Info';
2038 l_debug_str := 'Exception in Validate_Other_Info.'||SQLERRM;
2039 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2040 END IF;
2041
2042 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
2043 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
2044 END IF;
2045
2046 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
2047
2048 RETURN 'U';
2049
2050 END Validate_Other_Info;
2051
2052
2053
2054 /******************************************************************
2055 Created By : Arkadi Tereshenkov
2056
2057 Date Created By : Oct 14, 2002
2058
2059 Purpose : Validate data pertaining to the Foreign
2060 address information on the student.
2061 (IGS_SV_ADDRESSES).
2062
2063 Remarks : Return result:
2064 'S' - record found and validated
2065 'E' - validation error
2066 'U' - Unexpected error
2067 'N' - data not found
2068
2069 Change History
2070 Who When What
2071 ------------------------------------------------------------------------
2072
2073 ******************************************************************/
2074 FUNCTION Validate_F_Addr_Info (
2075 p_person_rec IN t_student_rec,
2076 p_data_rec IN OUT NOCOPY g_address_rec_type , -- Data record
2077 p_records OUT NOCOPY NUMBER -- number of addressees found
2078 ) RETURN VARCHAR2
2079 IS
2080
2081 l_api_name CONSTANT VARCHAR(30) := 'Validate_F_Addr_Info';
2082
2083 CURSOR c_addr IS
2084 SELECT adr.party_site_id,
2085 addr_line_1,
2086 addr_line_2,
2087 addr_line_3,
2088 addr_line_4,
2089 city,
2090 state,
2091 province,
2092 country_cd,
2093 postal_code,
2094 identifying_address_flag
2095 FROM igs_pe_addr_v adr,
2096 igs_pe_partysiteuse_v usg
2097 WHERE person_id = p_person_rec.person_id
2098 AND ( adr.status = 'A' AND SYSDATE BETWEEN NVL(start_dt,SYSDATE) AND NVL(end_dt, SYSDATE + 1) )
2099 AND usg.party_site_id = adr.party_site_id
2100 AND usg.site_use_type = g_f_addr_usage
2101 AND usg.active = 'A';
2102
2103 l_counter NUMBER(10):= 0;
2104 l_not_valid boolean := FALSE;
2105
2106 BEGIN
2107
2108 Put_Log_Msg(l_api_name||' Starts ',0);
2109 /* Debug */
2110 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2111 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_F_Addr_Info';
2112 l_debug_str := 'Entering Validate_F_Addr_Info. batch_id is '|| p_person_rec.batch_id||' and person_id is '|| p_person_rec.person_id;
2113 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2114 END IF;
2115
2116
2117 FOR c_addr_rec IN c_addr LOOP
2118
2119 l_counter := l_counter +1;
2120
2121 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
2122 p_data_rec(l_counter).person_id := p_person_rec.person_id;
2123 p_data_rec(l_counter).print_form := p_person_rec.print_form;
2124 p_data_rec(l_counter).party_site_id := c_addr_rec.party_site_id;
2125 p_data_rec(l_counter).address_type := 'F';
2126 p_data_rec(l_counter).city :=SUBSTR( c_addr_rec.city,1,60);
2127 p_data_rec(l_counter).state := SUBSTR(c_addr_rec.state,1,2);
2128 p_data_rec(l_counter).postal_code := SUBSTR(c_addr_rec.postal_code,1,20);
2129 p_data_rec(l_counter).country_code := SUBSTR(c_addr_rec.country_cd,1,2);
2130 p_data_rec(l_counter).province := SUBSTR(c_addr_rec.province,1,30);
2131 p_data_rec(l_counter).stdnt_valid_flag := '';
2132 p_data_rec(l_counter).creation_date := sysdate;
2133 p_data_rec(l_counter).created_by := g_update_by;
2134 p_data_rec(l_counter).last_updated_by := g_update_by;
2135 p_data_rec(l_counter).last_update_date := sysdate;
2136 p_data_rec(l_counter).last_update_login := g_update_login;
2137 p_data_rec(l_counter).primary_flag := NVL(c_addr_rec.identifying_address_flag,'N');
2138 -- assignind adress lines
2139 p_data_rec(l_counter).address_line1 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,1,60);
2140 p_data_rec(l_counter).address_line2 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,61,120);
2141
2142 /* Debug */
2143 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2144 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_F_Addr_Info';
2145 l_debug_str := 'Exiting from for loop in Validate_F_Addr_Info.';
2146 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2147 END IF;
2148
2149 exit; -- one address is enough
2150
2151 END LOOP;
2152
2153 p_records := l_counter;
2154
2155 IF (l_counter = 0) THEN
2156
2157 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
2158 /* Debug */
2159 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2160 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_F_Addr_Info';
2161 l_debug_str := 'Returning N from Validate_F_Addr_Info.';
2162 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2163 END IF;
2164 RETURN 'N';
2165
2166 ELSE
2167 IF is_valid_addr(p_person_rec.batch_type, p_person_rec.person_id, p_data_rec(l_counter).party_site_id) THEN -- bug 5405935
2168 Put_Log_Msg('ISO Country Code ('||p_data_rec(l_counter).country_code||') converted to',0);
2169
2170 p_data_rec(l_counter).country_code := convert_country_code (p_data_rec(l_counter).country_code);
2171
2172 Put_Log_Msg('US Country Code ('||p_data_rec(l_counter).country_code||') for person id:'|| p_data_rec(l_counter).person_id ||'.',0);
2173
2174 IF (p_data_rec(l_counter).country_code IS NULL OR
2175 p_data_rec(l_counter).address_line1 IS NULL) THEN
2176
2177 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_F_ADDR_RQD_FLD_ERR'); -- Foreign address block error
2178 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
2179
2180 Put_Log_Msg(FND_MESSAGE.Get,1);
2181 l_not_valid := TRUE;
2182
2183 END IF;
2184 ELSE
2185 -- bug 5405935
2186 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_DUP_ADDRESS'); -- Address already exists
2187 Put_Log_Msg(FND_MESSAGE.Get,1);
2188 l_not_valid := TRUE;
2189 END IF;
2190 END IF;
2191
2192 IF l_not_valid THEN
2193
2194 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
2195 /* Debug */
2196 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2197 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_F_Addr_Info';
2198 l_debug_str := 'Returning E from Validate_F_Addr_Info.';
2199 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2200 END IF;
2201
2202 RETURN 'E';
2203
2204 END IF;
2205
2206 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
2207 /* Debug */
2208 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2209 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_F_Addr_Info';
2210 l_debug_str := 'Returning S from Validate_F_Addr_Info.';
2211 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2212 END IF;
2213
2214 RETURN 'S'; -- Successfull validation
2215
2216 EXCEPTION
2217
2218 WHEN OTHERS THEN
2219 /* Debug */
2220 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2221 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_F_Addr_Info';
2222 l_debug_str := 'Exception in Validate_F_Addr_Info.'||SQLERRM;
2223 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2224 END IF;
2225
2226 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
2227 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
2228 END IF;
2229
2230 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
2231
2232 RETURN 'U';
2233
2234 END Validate_F_Addr_Info;
2235
2236
2237 /******************************************************************
2238 Created By : Arkadi Tereshenkov
2239
2240 Date Created By : Oct 14, 2002
2241
2242 Purpose : Validate the US Address block information
2243 on the student. (IGS_SV_ADDRESSES)
2244
2245 Remarks : Return result:
2246 'S' - record found and validated
2247 'E' - validation error
2248 'U' - Unexpected error
2249 'N' - data not found
2250
2251 Change History
2252 Who When What
2253 gmaheswa 12-Nov-2003 Modified c_addr cursor to select active address records,
2254 as part of address related changes .
2255 ------------------------------------------------------------------------
2256
2257 ******************************************************************/
2258 FUNCTION Validate_Us_Addr_Info (
2259 p_person_rec IN t_student_rec,
2260 p_data_rec IN OUT NOCOPY g_address_rec_type , -- Data record
2261 p_records IN NUMBER -- number of addressees found
2262 ) RETURN VARCHAR2
2263 IS
2264
2265 l_api_name CONSTANT VARCHAR(30) := 'Validate_Us_Addr_Info';
2266
2267 CURSOR c_addr IS
2268 SELECT adr.party_site_id,
2269 addr_line_1,
2270 addr_line_2,
2271 addr_line_3,
2272 addr_line_4,
2273 city,
2274 state,
2275 province,
2276 country_cd,
2277 postal_code,
2278 adr.identifying_address_flag
2279 FROM igs_pe_addr_v adr,
2280 igs_pe_partysiteuse_v usg
2281 WHERE person_id = p_person_rec.person_id
2282 AND ( adr.status = 'A' AND SYSDATE BETWEEN NVL(start_dt,SYSDATE) AND NVL(end_dt, SYSDATE + 1) )
2283 AND usg.party_site_id = adr.party_site_id
2284 AND usg.site_use_type = g_us_addr_usage
2285 AND usg.active = 'A';
2286
2287 l_counter NUMBER(10):= 0;
2288 l_not_valid BOOLEAN := FALSE;
2289
2290 BEGIN
2291 /* Debug */
2292 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2293 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_US_Addr_Info';
2294 l_debug_str := 'Entering Validate_US_Addr_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
2295 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2296 END IF;
2297 Put_Log_Msg(l_api_name||' Starts ',0);
2298
2299 FOR c_addr_rec IN c_addr LOOP
2300
2301 l_counter := l_counter +1;
2302
2303 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
2304 p_data_rec(l_counter).person_id := p_person_rec.person_id;
2305 p_data_rec(l_counter).print_form := p_person_rec.print_form;
2306 p_data_rec(l_counter).party_site_id := c_addr_rec.party_site_id;
2307 p_data_rec(l_counter).address_type := 'U';
2308 p_data_rec(l_counter).address_line1 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,1,60);
2309 p_data_rec(l_counter).address_line2 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,61,120);
2310 p_data_rec(l_counter).city :=SUBSTR( c_addr_rec.city,1,60);
2311 p_data_rec(l_counter).state := SUBSTR(c_addr_rec.state,1,2);
2312 p_data_rec(l_counter).postal_code := substr(c_addr_rec.postal_code,1,5);
2313 p_data_rec(l_counter).postal_routing_code := substr(c_addr_rec.postal_code,7,4);
2314 p_data_rec(l_counter).country_code := 'US';
2315 p_data_rec(l_counter).primary_flag := NVL(c_addr_rec.identifying_address_flag,'N');
2316 p_data_rec(l_counter).province := '';
2317 p_data_rec(l_counter).stdnt_valid_flag := '';
2318 p_data_rec(l_counter).creation_date := sysdate;
2319 p_data_rec(l_counter).created_by := g_update_by;
2320 p_data_rec(l_counter).last_updated_by := g_update_by;
2321 p_data_rec(l_counter).last_update_date := sysdate;
2322 p_data_rec(l_counter).last_update_login := g_update_login;
2323
2324 /* Debug */
2325 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2326 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_US_Addr_Info';
2327 l_debug_str := 'exiting from for loop in Validate_US_Addr_Info.';
2328 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2329 END IF;
2330
2331 EXIT; -- one address is enough
2332
2333 END LOOP;
2334
2335 IF (l_counter = 0) THEN
2336
2337 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
2338 /* Debug */
2339 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2340 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_US_Addr_Info';
2341 l_debug_str := 'Returning N from Validate_US_Addr_Info. ';
2342 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2343 END IF;
2344
2345 RETURN 'N';
2346 ELSE
2347
2348 IF is_valid_addr(p_person_rec.batch_type, p_person_rec.person_id, p_data_rec(l_counter).party_site_id) THEN -- bug 5405935
2349 IF p_data_rec(l_counter).city IS NULL
2350 OR p_data_rec(l_counter).state IS NULL
2351 OR p_data_rec(l_counter).postal_code IS NULL
2352 OR p_data_rec(l_counter).address_line1 IS NULL THEN
2353
2354 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_US_ADDR_RQD_FLD_ERR'); -- US address block error
2355 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
2356
2357 Put_Log_Msg(FND_MESSAGE.Get,1);
2358 l_not_valid := TRUE;
2359
2360 END IF;
2361 ELSE
2362 -- bug 5405935
2363 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_DUP_ADDRESS'); -- Address already exists
2364 Put_Log_Msg(FND_MESSAGE.Get,1);
2365 l_not_valid := TRUE;
2366 END IF;
2367
2368 IF l_not_valid THEN
2369
2370 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
2371 /* Debug */
2372 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2373 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_US_Addr_Info';
2374 l_debug_str := 'Returning E from Validate_US_Addr_Info. ';
2375 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2376 END IF;
2377
2378 RETURN 'E';
2379
2380 END IF;
2381
2382
2383 END IF;
2384
2385 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
2386 /* Debug */
2387 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2388 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_US_Addr_Info';
2389 l_debug_str := 'Returning S from Validate_US_Addr_Info. ';
2390 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2391 END IF;
2392
2393 RETURN 'S'; -- Successfull validation
2394
2395 EXCEPTION
2396
2397 WHEN OTHERS THEN
2398 /* Debug */
2399 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2400 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_US_Addr_Info';
2401 l_debug_str := 'Exception in Validate_US_Addr_Info. '||SQLERRM;
2402 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2403 END IF;
2404
2405 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
2406 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
2407 END IF;
2408
2409 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
2410
2411 RETURN 'U';
2412
2413 END Validate_Us_Addr_Info;
2414
2415
2416 /******************************************************************
2417 Created By : Arkadi Tereshenkov
2418
2419 Date Created By : Oct 14, 2002
2420
2421 Purpose : Validate the information pertaining to the
2422 Activity Site Address for the student.
2423 (IGS_SV_ADDRESSES).
2424
2425 Remarks : Return result:
2426 'S' - record found and validated
2427 'E' - validation error
2428 'U' - Unexpected error
2429 'N' - data not found
2430
2431 Change History
2432 Who When What
2433 pkpatel 23-APR-2003 Bug No 2908378
2434 Replaced IGS_PE_ADDR_V with IGS_AD_LOCVENUE_ADDR_V while joining with IGS_PE_ACT_SITE
2435 Selected LOCATION_ID instead of PARTY_SITE_ID for these cases.
2436 Added p_data_rec(l_counter).party_site_id := c_addr_rec.party_site_id
2437 gmaheswa 12-Nov-2003 Modified c_addr cursor to select active address records,
2438 as part of address related changes .
2439 pkpatel 4-Dec-2003 Bug 3227107 (Used the status column for address)
2440 ------------------------------------------------------------------------
2441
2442 ******************************************************************/
2443 FUNCTION Validate_Site_Info (
2444 p_person_rec IN t_student_rec,
2445 p_data_rec IN OUT NOCOPY g_address_rec_type , -- Data record
2446 p_records OUT NOCOPY NUMBER -- number of addressees found
2447 ) RETURN VARCHAR2
2448 IS
2449
2450
2451 l_api_name CONSTANT VARCHAR(30) := 'Validate_Site_Info';
2452
2453 CURSOR c_data_add IS
2454 -- All addresses with active status for a person
2455 SELECT 'A' action_type, -- Add site action type
2456 ps.party_site_id,
2457 loc.ADDRESS1 addr_line_1 ,
2458 loc.ADDRESS2 addr_line_2,
2459 loc.ADDRESS3 addr_line_3,
2460 loc.ADDRESS4 addr_line_4,
2461 loc.city,
2462 loc.state,
2463 loc.province,
2464 loc.country country_code,
2465 loc.postal_code,
2466 ps.identifying_address_flag primary_site,
2467 to_char(usg.party_site_id) activity_site_cd,
2468 null remarks
2469 FROM HZ_LOCATIONS loc,
2470 HZ_PARTY_SITES ps,
2471 IGS_PE_HZ_PTY_SITES IGSPS,
2472 hz_party_site_uses usg
2473 WHERE
2474 PS.LOCATION_ID = Loc.LOCATION_ID
2475 AND PS.PARTY_SITE_ID = IGSPS.PARTY_SITE_ID (+)
2476 and ps.party_id = p_person_rec.person_id
2477 AND ( ps.status = 'A' AND SYSDATE BETWEEN NVL(IGSPS.start_date,SYSDATE) AND NVL(IGSPS.end_date, SYSDATE + 1))
2478 AND usg.party_site_id = ps.party_site_id
2479 AND usg.site_use_type = g_site_addr_usage
2480 AND usg.status = 'A'
2481 UNION
2482 -- All institution sites assigned as to a person. here location id is selected which
2483 -- will be stored as party_site id in IGS_SV_ADDRESSES table
2484 SELECT 'A' action_type, -- Add site action type
2485 adr.location_id party_site_id, -- this will be passed to party_site_id of IGS_SV_ADDRESSES
2486 ADDRESS1 addr_line_1,
2487 ADDRESS2 addr_line_2,
2488 ADDRESS3 addr_line_3,
2489 ADDRESS4 addr_line_4,
2490 city,
2491 state,
2492 province,
2493 country country_code,
2494 postal_code,
2495 usg.primary_flag primary_site,
2496 usg.activity_site_cd activity_site_cd,
2497 usg.remarks remarks
2498 FROM HZ_LOCATIONS adr,
2499 igs_pe_act_site usg
2500 WHERE usg.person_id = p_person_rec.person_id
2501 AND SYSDATE BETWEEN nvl(ADDRESS_EFFECTIVE_DATE,sysdate-1) AND NVL(ADDRESS_EXPIRATION_DATE, SYSDATE + 1)
2502 AND usg.location_id = adr.location_id
2503 AND sysdate BETWEEN usg.start_date AND NVL(usg.end_date,sysdate+1);
2504
2505 --All deleted and previously submited sites
2506 CURSOR c_data_del IS
2507 select 'D' action_type,
2508 ps.party_site_id,
2509 loc.ADDRESS1 addr_line_1 ,
2510 loc.ADDRESS2 addr_line_2,
2511 loc.ADDRESS3 addr_line_3,
2512 loc.ADDRESS4 addr_line_4,
2513 loc.city,
2514 loc.state,
2515 loc.province,
2516 loc.country country_code,
2517 loc.postal_code,
2518 ps.identifying_address_flag primary_site,
2519 to_char(usg.party_site_id) activity_site_cd ,
2520 null remarks
2521 from HZ_LOCATIONS loc,
2522 HZ_PARTY_SITES ps,
2523 IGS_PE_HZ_PTY_SITES IGSPS,
2524 hz_party_site_uses usg
2525 where
2526 PS.LOCATION_ID = Loc.LOCATION_ID
2527 AND PS.PARTY_SITE_ID = IGSPS.PARTY_SITE_ID (+)
2528 and ps.party_id = p_person_rec.person_id
2529 and ( (IGSPS.end_date is not null and trunc(sysdate) >= IGSPS.end_date )
2530 or ps.status <> 'A'
2531 or usg.status <> 'A'
2532 )
2533 and usg.party_site_id = ps.party_site_id
2534 and usg.site_use_type = g_site_addr_usage
2535 and usg.party_site_id in
2536 ( select ad.party_site_id
2537 from igs_sv_addresses ad,
2538 igs_sv_persons pr
2539 where ad.person_id = pr.person_id
2540 and ad.batch_id = pr.batch_id
2541 and pr.record_status <> 'E'
2542 and ad.person_id = p_person_rec.person_id and ad.address_type not in ('F','U')
2543 )
2544 union
2545 -- all institution sites assigned as to a person
2546 select 'D' action_type, -- delete site action type
2547 loc.location_id party_site_id,
2548 loc.ADDRESS1,
2549 loc.ADDRESS2,
2550 loc.ADDRESS3,
2551 loc.ADDRESS4,
2552 loc.city,
2553 loc.state,
2554 loc.province,
2555 loc.country country_code,
2556 loc.postal_code,
2557 usg.primary_flag primary_site,
2558 usg.activity_site_cd activity_site_cd,
2559 usg.remarks remarks
2560 from HZ_LOCATIONS loc,
2561 igs_pe_act_site usg
2562 where
2563 usg.person_id = p_person_rec.person_id
2564 and (loc.ADDRESS_EXPIRATION_DATE is not null and loc.ADDRESS_EXPIRATION_DATE <= trunc(sysdate) )
2565 and usg.location_id = loc.location_id
2566 and sysdate between usg.start_date and nvl(usg.end_date,sysdate+1)
2567 and usg.location_id in
2568 ( select adr1.location_id
2569 from igs_sv_addresses ad,
2570 HZ_LOCATIONS adr1,
2571 igs_sv_persons pr
2572 where ad.person_id = pr.person_id
2573 and ad.batch_id = pr.batch_id
2574 and pr.record_status <> 'E'
2575 and adr1.location_id = ad.party_site_id -- in the party_side_id field of igs_sv_addresses location_id is stored for activity sites
2576 and ad.person_id = p_person_rec.person_id and ad.address_type not in ('F','U')
2577 );
2578
2579 CURSOR c_primary_site IS
2580 SELECT COUNT('X')
2581 FROM
2582 (
2583 SELECT a.location_id
2584 FROM igs_pe_act_site a
2585 WHERE a.person_id = p_person_rec.person_id AND
2586 a.primary_flag = 'Y' /*AND
2587 (a.end_date IS NULL OR sysdate between a.start_date and a.end_date)*/
2588 UNION
2589 SELECT adr.party_site_id
2590 FROM igs_pe_addr_v adr,
2591 hz_party_site_uses usg
2592 WHERE person_id = p_person_rec.person_id
2593 AND ( adr.status = 'A' AND SYSDATE BETWEEN NVL(adr.start_dt,SYSDATE) AND NVL(adr.end_dt, SYSDATE + 1))
2594 AND usg.party_site_id = adr.party_site_id
2595 AND usg.site_use_type = 'SEVIS_SITE_OF_ACTIVITY'
2596 AND usg.status = 'A'
2597 AND adr.identifying_address_flag = 'Y'
2598 )
2599 ;
2600 /*
2601 CURSOR c_activity_site(cp_person_id igs_pe_act_site.activity_site_cd%TYPE) IS
2602 SELECT COUNT(a.activity_site_cd)
2603 FROM igs_pe_act_site a
2604 WHERE a.person_id = p_person_rec.person_id AND
2605 (a.end_date IS NULL OR sysdate between a.start_date and a.end_date);
2606 */
2607 l_counter NUMBER(10) :=0;
2608 l_not_valid BOOLEAN := FALSE;
2609 l_primary_site_count NUMBER(10) :=0;
2610 l_site_count NUMBER(10) :=0;
2611
2612 BEGIN
2613 /* Debug */
2614 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2615 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Site_Info';
2616 l_debug_str := 'Entering Validate_Site_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
2617 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2618 END IF;
2619
2620 Put_Log_Msg(l_api_name||' starts ',0);
2621
2622 p_records := 0;
2623
2624 /* OPEN c_activity_site(p_person_rec.person_id);
2625 FETCH c_activity_site INTO l_site_count;
2626 CLOSE c_activity_site;
2627
2628 IF l_site_count = 0 THEN
2629 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_SITE_REQ');
2630 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
2631 Put_Log_Msg(FND_MESSAGE.Get,1);
2632 l_not_valid := TRUE;
2633 END IF;
2634
2635 */
2636
2637 OPEN c_primary_site;
2638 FETCH c_primary_site INTO l_primary_site_count;
2639 CLOSE c_primary_site;
2640
2641 IF l_primary_site_count <> 1 THEN
2642 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_PRIMARY_IND');
2643 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
2644 Put_Log_Msg(FND_MESSAGE.Get,1);
2645 l_not_valid := TRUE;
2646 END IF;
2647
2648 FOR c_addr_rec IN c_data_add LOOP
2649
2650 l_counter := l_counter +1;
2651
2652 IF l_counter > 25 AND p_person_rec.batch_id = g_running_create_batch THEN
2653 IF g_parallel_batches.count > 0 THEN
2654 p_data_rec(l_counter).batch_id := g_parallel_batches(1);
2655 ELSE
2656 p_data_rec(l_counter).batch_id := igs_sv_util.open_new_batch(p_person_rec.person_id, p_person_rec.batch_id,'CONN_JOB');
2657 g_parallel_batches(1) := p_data_rec(l_counter).batch_id;
2658 END IF;
2659 ELSE
2660 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
2661 END IF;
2662
2663 -- p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
2664 p_data_rec(l_counter).person_id := p_person_rec.person_id;
2665 p_data_rec(l_counter).print_form := p_person_rec.print_form;
2666 p_data_rec(l_counter).creation_date := sysdate;
2667 p_data_rec(l_counter).created_by := g_update_by;
2668 p_data_rec(l_counter).last_updated_by := g_update_by;
2669 p_data_rec(l_counter).last_update_date := sysdate;
2670 p_data_rec(l_counter).last_update_login := g_update_login;
2671
2672 -- 2908378 added
2673 p_data_rec(l_counter).party_site_id := c_addr_rec.party_site_id;
2674 p_data_rec(l_counter).address_type := c_addr_rec.action_type;
2675 p_data_rec(l_counter).address_line1 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,1,60);
2676 p_data_rec(l_counter).address_line2 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,61,120);
2677 p_data_rec(l_counter).city :=SUBSTR( c_addr_rec.city,1,60);
2678 p_data_rec(l_counter).state := SUBSTR(c_addr_rec.state,1,2);
2679 p_data_rec(l_counter).postal_code := substr(c_addr_rec.postal_code,1,5);
2680 p_data_rec(l_counter).postal_routing_code := substr(c_addr_rec.postal_code,7,4);
2681 p_data_rec(l_counter).primary_flag := NVL(c_addr_rec.primary_site,'N');
2682 p_data_rec(l_counter).action_type := c_addr_rec.action_type;
2683 p_data_rec(l_counter).activity_site_cd := c_addr_rec.activity_site_cd;
2684 p_data_rec(l_counter).country_code := c_addr_rec.country_code;
2685 p_data_rec(l_counter).remarks := c_addr_rec.remarks;
2686
2687 IF is_valid_addr(p_person_rec.batch_type, p_person_rec.person_id, p_data_rec(l_counter).party_site_id) THEN -- bug 5405935
2688 IF p_data_rec(l_counter).city IS NULL
2689 OR p_data_rec(l_counter).state IS NULL
2690 OR p_data_rec(l_counter).postal_code IS NULL
2691 OR p_data_rec(l_counter).address_line1 IS NULL THEN
2692
2693 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_US_ADDR_RQD_FLD_ERR'); -- US address block error
2694 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
2695
2696 Put_Log_Msg(FND_MESSAGE.Get,1);
2697 l_not_valid := TRUE;
2698
2699 END IF;
2700 ELSE
2701 -- bug 5405935
2702 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_DUP_ADDRESS'); -- Address already exists
2703 Put_Log_Msg(FND_MESSAGE.Get,1);
2704 l_not_valid := TRUE;
2705 END IF;
2706
2707 END LOOP;
2708
2709 FOR c_addr_rec IN c_data_del LOOP
2710
2711 l_counter := l_counter +1;
2712
2713 IF l_counter > 25 AND p_person_rec.batch_id = g_running_create_batch THEN
2714 IF g_parallel_batches.count > 0 THEN
2715 p_data_rec(l_counter).batch_id := g_parallel_batches(1);
2716 ELSE
2717 p_data_rec(l_counter).batch_id := igs_sv_util.open_new_batch(p_person_rec.person_id, p_person_rec.batch_id,'CONN_JOB');
2718 g_parallel_batches(1) := p_data_rec(l_counter).batch_id;
2719 END IF;
2720 ELSE
2721 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
2722 END IF;
2723
2724 -- p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
2725 p_data_rec(l_counter).person_id := p_person_rec.person_id;
2726 p_data_rec(l_counter).print_form := p_person_rec.print_form;
2727 p_data_rec(l_counter).creation_date := sysdate;
2728 p_data_rec(l_counter).created_by := g_update_by;
2729 p_data_rec(l_counter).last_updated_by := g_update_by;
2730 p_data_rec(l_counter).last_update_date := sysdate;
2731 p_data_rec(l_counter).last_update_login := g_update_login;
2732
2733 -- 2908378 added
2734 p_data_rec(l_counter).party_site_id := c_addr_rec.party_site_id;
2735 p_data_rec(l_counter).address_type := c_addr_rec.action_type;
2736 p_data_rec(l_counter).address_line1 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,1,60);
2737 p_data_rec(l_counter).address_line2 := SUBSTR(c_addr_rec.addr_line_1||c_addr_rec.addr_line_2||c_addr_rec.addr_line_3||c_addr_rec.addr_line_4,61,120);
2738 p_data_rec(l_counter).city :=SUBSTR( c_addr_rec.city,1,60);
2739 p_data_rec(l_counter).state := SUBSTR(c_addr_rec.state,1,2);
2740 p_data_rec(l_counter).postal_code := substr(c_addr_rec.postal_code,1,5);
2741 p_data_rec(l_counter).postal_routing_code := substr(c_addr_rec.postal_code,7,4);
2742 p_data_rec(l_counter).primary_flag := c_addr_rec.primary_site;
2743 p_data_rec(l_counter).action_type := c_addr_rec.action_type;
2744 p_data_rec(l_counter).activity_site_cd := c_addr_rec.activity_site_cd;
2745 p_data_rec(l_counter).country_code := c_addr_rec.country_code;
2746 p_data_rec(l_counter).remarks := c_addr_rec.remarks;
2747
2748
2749 IF p_data_rec(l_counter).city IS NULL
2750 OR p_data_rec(l_counter).state IS NULL
2751 OR p_data_rec(l_counter).postal_code IS NULL
2752 OR p_data_rec(l_counter).address_line1 IS NULL THEN
2753
2754 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_US_ADDR_RQD_FLD_ERR'); -- US address block error
2755 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
2756
2757 Put_Log_Msg(FND_MESSAGE.Get,1);
2758 l_not_valid := TRUE;
2759
2760 END IF;
2761
2762 END LOOP;
2763
2764 IF (l_counter = 0) THEN
2765
2766 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
2767 /* Debug */
2768 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2769 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Site_Info';
2770 l_debug_str := 'Returning N from Validate_Site_Info.';
2771 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2772 END IF;
2773
2774 RETURN 'N';
2775 ELSIF l_not_valid THEN
2776
2777 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
2778 /* Debug */
2779 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2780 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Site_Info';
2781 l_debug_str := 'Returning E from Validate_Site_Info.';
2782 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2783 END IF;
2784 RETURN 'E';
2785
2786 END IF;
2787
2788 p_records := l_counter;
2789
2790 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
2791 /* Debug */
2792 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2793 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Site_Info';
2794 l_debug_str := 'Returning S from Validate_Site_Info. No of SOA rec: '||l_counter;
2795 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2796 END IF;
2797
2798 RETURN 'S'; -- Successfull validation
2799
2800 EXCEPTION
2801
2802 WHEN OTHERS THEN
2803 /* Debug */
2804 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2805 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Site_Info';
2806 l_debug_str := 'Exception in Validate_Site_Info.'||SQLERRM;
2807 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2808 END IF;
2809
2810 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
2811 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
2812 END IF;
2813
2814 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
2815
2816 RETURN 'U';
2817
2818
2819 END Validate_Site_Info;
2820
2821
2822 /******************************************************************
2823 Created By : Arkadi Tereshenkov
2824
2825 Date Created By : Oct 14, 2002
2826
2827 Purpose : Validate the information that is pertaining
2828 to the Education Block information.
2829 (IGS_SV_PRGMS_INFO).
2830
2831 Remarks : Return result:
2832 'S' - record found and validated
2833 'E' - validation error
2834 'U' - Unexpected error
2835 'N' - data not found
2836
2837 Change History
2838 Who When What
2839 ------------------------------------------------------------------------
2840
2841 ******************************************************************/
2842 FUNCTION Validate_Edu_Info (
2843 p_person_rec IN t_student_rec,
2844 p_data_rec IN OUT NOCOPY IGS_SV_PRGMS_INFO%ROWTYPE
2845 ) RETURN VARCHAR2
2846 IS
2847
2848 l_api_name CONSTANT VARCHAR(30) := 'Validate_Edu_Info';
2849
2850 CURSOR c_nonimg_data IS
2851 SELECT penf.education_level,
2852 penf.primary_major,
2853 penf.secondary_major,
2854 penf.minor,
2855 penf.length_of_study,
2856 penf.prgm_start_date,
2857 penf.prgm_end_date,
2858 decode(penf.english_reqd,'Y','1','0') english_reqd,
2859 decode(penf.english_reqd_met,'Y','1','0') english_reqd_met,
2860 penf.not_reqd_reason,
2861 penf.educ_lvl_remarks
2862 FROM igs_pe_nonimg_form penf
2863 WHERE penf.person_id = p_person_rec.person_id
2864 AND penf.nonimg_form_id = p_person_rec.form_id;
2865
2866 CURSOR c_ev_data IS
2867 SELECT peev.position_code,
2868 peev.subject_field_code,
2869 peev.subject_field_remarks,
2870 prgm_start_date,
2871 prgm_end_date
2872 FROM igs_pe_ev_form peev
2873 WHERE peev.person_id = p_person_rec.person_id
2874 AND peev.ev_form_id = p_person_rec.form_id;
2875
2876
2877 l_not_valid BOOLEAN := FALSE;
2878 l_education_level igs_pe_nonimg_form.education_level%TYPE;
2879 l_primary_major igs_pe_nonimg_form.primary_major%TYPE;
2880 l_secondary_major igs_pe_nonimg_form.secondary_major%TYPE;
2881 l_minor igs_pe_nonimg_form.minor%TYPE;
2882 l_length_of_study igs_pe_nonimg_form.length_of_study%TYPE;
2883 l_prgm_start_date igs_pe_nonimg_form.prgm_start_date%TYPE;
2884 l_prgm_end_date igs_pe_nonimg_form.prgm_end_date%TYPE;
2885 l_english_reqd igs_pe_nonimg_form.english_reqd%TYPE;
2886 l_english_reqd_met igs_pe_nonimg_form.english_reqd_met%TYPE;
2887 l_not_reqd_reason igs_pe_nonimg_form.not_reqd_reason%TYPE;
2888 l_educ_lvl_remarks igs_pe_nonimg_form.educ_lvl_remarks%TYPE;
2889 l_position_code igs_pe_ev_form.position_code%TYPE;
2890 l_subject_field_code igs_pe_ev_form.subject_field_code%TYPE;
2891 l_subject_field_remarks igs_pe_ev_form.subject_field_remarks%TYPE;
2892 l_ev_prgm_start_date igs_pe_ev_form.prgm_start_date%TYPE;
2893 l_ev_prgm_end_date igs_pe_ev_form.prgm_end_date%TYPE;
2894
2895
2896 BEGIN
2897 /* Debug */
2898 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2899 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Edu_Info
2900 ';
2901 l_debug_str := 'Entering Validate_Edu_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
2902 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2903 END IF;
2904
2905 Put_Log_Msg(l_api_name||' starts ',0);
2906
2907 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
2908
2909 --
2910 -- Process Non Immigrant Foreign Student data
2911 --
2912 IF (p_person_rec.batch_type = 'I') THEN
2913
2914 OPEN c_nonimg_data;
2915 FETCH c_nonimg_data
2916 INTO l_education_level,
2917 l_primary_major,
2918 l_secondary_major,
2919 l_minor,
2920 l_length_of_study,
2921 l_prgm_start_date,
2922 l_prgm_end_date,
2923 l_english_reqd,
2924 l_english_reqd_met,
2925 l_not_reqd_reason,
2926 l_educ_lvl_remarks;
2927
2928 IF (c_nonimg_data%FOUND) THEN
2929 p_data_rec.batch_id := p_person_rec.batch_id;
2930 p_data_rec.person_id := p_person_rec.person_id;
2931 p_data_rec.print_form := p_person_rec.print_form;
2932 p_data_rec.creation_date := sysdate;
2933 p_data_rec.created_by := g_update_by;
2934 p_data_rec.last_updated_by := g_update_by;
2935 p_data_rec.last_update_date := sysdate;
2936 p_data_rec.last_update_login := g_update_login;
2937 p_data_rec.prgm_action_type := 'EP';
2938
2939 p_data_rec.education_level := l_education_level;
2940 p_data_rec.primary_major := l_primary_major;
2941 p_data_rec.secondary_major := l_secondary_major;
2942 p_data_rec.educ_lvl_remarks := l_educ_lvl_remarks;
2943 p_data_rec.minor := l_minor;
2944 p_data_rec.length_of_study := ltrim(to_char(to_number(l_length_of_study),'00'));
2945 p_data_rec.prgm_start_date := to_char(l_prgm_start_date, 'YYYY-MM-DD');
2946 p_data_rec.prgm_end_date := to_char(l_prgm_end_date, 'YYYY-MM-DD');
2947 p_data_rec.english_reqd := l_english_reqd;
2948 p_data_rec.english_reqd_met := l_english_reqd_met;
2949 p_data_rec.not_reqd_reason := l_not_reqd_reason;
2950
2951 END IF;
2952
2953 CLOSE c_nonimg_data;
2954
2955 ELSE
2956 --
2957 -- Process Exchange Visitor Student data
2958 --
2959 OPEN c_ev_data;
2960 FETCH c_ev_data
2961 INTO l_position_code,
2962 l_subject_field_code,
2963 l_subject_field_remarks,
2964 l_ev_prgm_start_date,
2965 l_ev_prgm_end_date;
2966
2967 IF (c_ev_data%FOUND) THEN
2968
2969 p_data_rec.batch_id := p_person_rec.batch_id;
2970 p_data_rec.person_id := p_person_rec.person_id;
2971 p_data_rec.print_form := p_person_rec.print_form;
2972 p_data_rec.creation_date := sysdate;
2973 p_data_rec.created_by := g_update_by;
2974 p_data_rec.last_updated_by := g_update_by;
2975 p_data_rec.last_update_date := sysdate;
2976 p_data_rec.last_update_login := g_update_login;
2977 p_data_rec.prgm_action_type := 'EP';
2978 p_data_rec.position_code := l_position_code;
2979 p_data_rec.subject_field_code := l_subject_field_code;
2980 p_data_rec.remarks := l_subject_field_remarks;
2981 p_data_rec.prgm_start_date := to_char(l_ev_prgm_start_date, 'YYYY-MM-DD');
2982 p_data_rec.prgm_end_date := to_char(l_ev_prgm_end_date, 'YYYY-MM-DD');
2983
2984 END IF;
2985
2986 CLOSE c_ev_data;
2987
2988 END IF;
2989
2990 IF p_data_rec.batch_id IS NULL THEN
2991
2992 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
2993 /* Debug */
2994 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
2995 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Edu_Info';
2996 l_debug_str := 'Returning N from Validate_Edu_Info.';
2997 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
2998 END IF;
2999
3000 RETURN 'N';
3001
3002 ELSE
3003
3004 -- Validate all the data
3005
3006 IF (p_person_rec.batch_type = 'I') THEN
3007
3008 --
3009 -- Validate that the required fields for Foreign Student are available.
3010 --
3011 IF (p_data_rec.education_level IS NULL OR
3012 p_data_rec.primary_major IS NULL OR
3013 p_data_rec.length_of_study IS NULL OR
3014 p_data_rec.prgm_start_date IS NULL OR
3015 p_data_rec.prgm_end_date IS NULL OR
3016 p_data_rec.english_reqd IS NULL) THEN
3017 l_not_valid := TRUE;
3018 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EDU_NIMG_REQ_FLD_ERR'); -- Required fields for Foreign Students
3019 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
3020 Put_Log_Msg(FND_MESSAGE.Get,1);
3021 END IF;
3022
3023 --
3024 -- Make sure that there is a value for the English requirement being met or not
3025 --
3026 IF ( p_data_rec.english_reqd = 'Y' AND p_data_rec.english_reqd_met IS NULL) THEN
3027 l_not_valid := TRUE;
3028 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EDU_NIMG_MET_ERR'); -- Required field for Foreign students if english required
3029 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
3030 Put_Log_Msg(FND_MESSAGE.Get,1);
3031 END IF;
3032
3033 IF ( p_data_rec.education_level = '11' AND p_data_rec.educ_lvl_remarks IS NULL) THEN
3034 l_not_valid := TRUE;
3035 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EDU_NIMG_REQ_FLD_ERR'); -- Required field for Foreign students if english required
3036 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
3037 Put_Log_Msg(FND_MESSAGE.Get,1);
3038 END IF;
3039
3040 --
3041 -- Make sure that there is a reason for the requirement not being met.
3042 --
3043 IF (p_data_rec.english_reqd = 'N' AND
3044 p_data_rec.not_reqd_reason IS NULL) THEN
3045 l_not_valid := TRUE;
3046 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EDU_NIMG_NOT_MET_ERR'); -- Required field for Foreign students english not met
3047 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
3048 Put_Log_Msg(FND_MESSAGE.Get,1);
3049 END IF;
3050
3051 ELSE
3052
3053 --
3054 -- Validate that the required fields are present for the Exchange Visitor.
3055 --
3056 IF (p_data_rec.position_code IS NULL
3057 OR p_data_rec.subject_field_code IS NULL
3058 OR p_data_rec.remarks IS NULL) THEN
3059 l_not_valid := TRUE;
3060 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EDU_EV_REQ_FLD_ERR'); -- Required field for Exchange Visitor not available.
3061 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
3062 Put_Log_Msg(FND_MESSAGE.Get,1);
3063 END IF;
3064
3065 END IF;
3066
3067 IF (l_not_valid) THEN
3068
3069 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
3070 /* Debug */
3071 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3072 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Edu_Info';
3073 l_debug_str := 'Returning E from Validate_Edu_Info.';
3074 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3075 END IF;
3076 RETURN 'E';
3077
3078 END IF;
3079
3080 END IF;
3081
3082 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
3083 /* Debug */
3084 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3085 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Edu_Info';
3086 l_debug_str := 'Returning S from Validate_Edu_Info.';
3087 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3088 END IF;
3089
3090 RETURN 'S'; -- Successfull validation
3091
3092 EXCEPTION
3093
3094 WHEN OTHERS THEN
3095 /* Debug */
3096 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3097 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Edu_Info';
3098 l_debug_str := 'Exception in Validate_Edu_Info.'||SQLERRM;
3099 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3100 END IF;
3101
3102 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
3103 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
3104 END IF;
3105
3106 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
3107
3108 RETURN 'U';
3109
3110 END Validate_Edu_Info;
3111
3112
3113 /******************************************************************
3114 Created By : Arkadi Tereshenkov
3115
3116 Date Created By : Oct 14, 2002
3117
3118 Purpose : Validate information pertaining to the Program
3119 information block for the student.
3120 (IGS_SV_PRGMS_INFO).
3121
3122 Remarks : Return result:
3123 'S' - record found and validated
3124 'E' - validation error
3125 'U' - Unexpected error
3126 'N' - data not found
3127
3128 Change History
3129 Who When What
3130 ------------------------------------------------------------------------
3131
3132 ******************************************************************/
3133 FUNCTION Get_Othr_Prgm_Info(
3134 p_data_rec IN OUT NOCOPY IGS_SV_PRGMS_INFO%ROWTYPE
3135 ) RETURN VARCHAR2
3136 IS
3137 l_api_name CONSTANT VARCHAR(30) := 'Get_Othr_Prgm_Info';
3138
3139 CURSOR c_nonimg_data IS
3140 SELECT penf.education_level,
3141 penf.primary_major,
3142 penf.secondary_major,
3143 penf.minor,
3144 penf.length_of_study,
3145 penf.prgm_start_date,
3146 penf.prgm_end_date,
3147 decode(penf.english_reqd,'Y','1','0') english_reqd,
3148 decode(penf.english_reqd_met,'Y','1','0') english_reqd_met,
3149 penf.not_reqd_reason,
3150 penf.educ_lvl_remarks
3151 FROM igs_pe_nonimg_form penf
3152 WHERE penf.person_id = p_data_rec.person_id
3153 AND penf.nonimg_form_id = g_nonimg_form_id;
3154
3155 CURSOR c_ev_data IS
3156 SELECT peev.position_code,
3157 peev.subject_field_code,
3158 peev.subject_field_remarks,
3159 prgm_start_date,
3160 prgm_end_date
3161 FROM igs_pe_ev_form peev
3162 WHERE peev.person_id = p_data_rec.person_id
3163 AND peev.ev_form_id = g_nonimg_form_id;
3164
3165
3166 l_education_level igs_pe_nonimg_form.education_level%TYPE;
3167 l_primary_major igs_pe_nonimg_form.primary_major%TYPE;
3168 l_secondary_major igs_pe_nonimg_form.secondary_major%TYPE;
3169 l_minor igs_pe_nonimg_form.minor%TYPE;
3170 l_length_of_study igs_pe_nonimg_form.length_of_study%TYPE;
3171 l_prgm_start_date igs_pe_nonimg_form.prgm_start_date%TYPE;
3172 l_prgm_end_date igs_pe_nonimg_form.prgm_end_date%TYPE;
3173 l_english_reqd igs_pe_nonimg_form.english_reqd%TYPE;
3174 l_english_reqd_met igs_pe_nonimg_form.english_reqd_met%TYPE;
3175 l_not_reqd_reason igs_pe_nonimg_form.not_reqd_reason%TYPE;
3176 l_educ_lvl_remarks igs_pe_nonimg_form.educ_lvl_remarks%TYPE;
3177 l_position_code igs_pe_ev_form.position_code%TYPE;
3178 l_subject_field_code igs_pe_ev_form.subject_field_code%TYPE;
3179 l_subject_field_remarks igs_pe_ev_form.subject_field_remarks%TYPE;
3180 l_ev_prgm_start_date igs_pe_ev_form.prgm_start_date%TYPE;
3181 l_ev_prgm_end_date igs_pe_ev_form.prgm_end_date%TYPE;
3182 l_not_valid BOOLEAN := TRUE;
3183 BEGIN
3184
3185 /* Debug */
3186 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3187 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Othr_Prgm_Info';
3188 l_debug_str := 'Entering Get_Othr_Prgm_Info. form_id is '||g_nonimg_form_id ||' and person_id is '||p_data_rec.person_id;
3189 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3190 END IF;
3191
3192 Put_Log_Msg(l_api_name||' starts ',0);
3193
3194 OPEN c_nonimg_data;
3195 FETCH c_nonimg_data
3196 INTO l_education_level,
3197 l_primary_major,
3198 l_secondary_major,
3199 l_minor,
3200 l_length_of_study,
3201 l_prgm_start_date,
3202 l_prgm_end_date,
3203 l_english_reqd,
3204 l_english_reqd_met,
3205 l_not_reqd_reason,
3206 l_educ_lvl_remarks;
3207
3208 IF (c_nonimg_data%FOUND) THEN
3209 p_data_rec.education_level := l_education_level;
3210 p_data_rec.primary_major := l_primary_major;
3211 p_data_rec.secondary_major := l_secondary_major;
3212 p_data_rec.educ_lvl_remarks := l_educ_lvl_remarks;
3213 p_data_rec.minor := l_minor;
3214 p_data_rec.length_of_study := ltrim(to_char(to_number(l_length_of_study),'00'));
3215 p_data_rec.prgm_start_date := to_char(l_prgm_start_date, 'YYYY-MM-DD');
3216 p_data_rec.prgm_end_date := to_char(l_prgm_end_date, 'YYYY-MM-DD');
3217 p_data_rec.english_reqd := l_english_reqd;
3218 p_data_rec.english_reqd_met := l_english_reqd_met;
3219 p_data_rec.not_reqd_reason := l_not_reqd_reason;
3220 l_not_valid := FALSE;
3221 ELSE
3222 OPEN c_ev_data;
3223 FETCH c_ev_data
3224 INTO l_position_code,
3225 l_subject_field_code,
3226 l_subject_field_remarks,
3227 l_ev_prgm_start_date,
3228 l_ev_prgm_end_date;
3229
3230 IF (c_ev_data%FOUND) THEN
3231 p_data_rec.position_code := l_position_code;
3232 p_data_rec.subject_field_code := l_subject_field_code;
3233 p_data_rec.remarks := l_subject_field_remarks;
3234 p_data_rec.prgm_start_date := to_char(l_ev_prgm_start_date, 'YYYY-MM-DD');
3235 p_data_rec.prgm_end_date := to_char(l_ev_prgm_end_date, 'YYYY-MM-DD');
3236 l_not_valid := FALSE;
3237 END IF;
3238
3239 CLOSE c_ev_data;
3240 END IF;
3241
3242 CLOSE c_nonimg_data;
3243 IF l_not_valid THEN
3244 RETURN 'E';
3245 ELSE
3246 RETURN 'S'; -- Successfull validation
3247 END IF;
3248
3249 EXCEPTION
3250
3251 WHEN OTHERS THEN
3252 /* Debug */
3253 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3254 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Othr_Prgm_Info';
3255 l_debug_str := 'Exception in Get_Othr_Prgm_Info.'||SQLERRM;
3256 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3257 END IF;
3258
3259 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
3260 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
3261 END IF;
3262 CLOSE c_ev_data;
3263 CLOSE c_nonimg_data;
3264 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
3265
3266 RETURN 'U';
3267
3268 END Get_Othr_Prgm_Info;
3269
3270 /******************************************************************
3271 Created By : Arkadi Tereshenkov
3272
3273 Date Created By : Oct 14, 2002
3274
3275 Purpose : Insert authorization codes of the student
3276 (IGS_SV_PRGMS_INFO).
3277
3278 Remarks :
3279
3280 Change History
3281 Who When What
3282 ------------------------------------------------------------------------
3283
3284 ******************************************************************/
3285 PROCEDURE Insert_Auth_Code (
3286 p_auth_drp_data_rec IN IGS_SV_PRGMS_INFO%ROWTYPE
3287 )
3288 IS
3289
3290 l_api_name CONSTANT VARCHAR(30) := 'Insert_Auth_Code';
3291 l_count NUMBER(10);
3292 l_action VARCHAR2(30);
3293 l_btch_id NUMBER(14);
3294 l_tag_code VARCHAR2(30);
3295 l_edu_status VARCHAR2(10);
3296 l_cur_rec IGS_SV_PRGMS_INFO%ROWTYPE;
3297
3298
3299 l_prgm_start_date igs_Sv_prgms_info.prgm_start_date%TYPE;
3300 l_prgm_end_date igs_Sv_prgms_info.prgm_end_date%TYPE;
3301
3302 l_english_reqd igs_pe_nonimg_form.english_reqd%TYPE;
3303 l_english_reqd_met igs_pe_nonimg_form.english_reqd_met%TYPE;
3304 l_not_reqd_reason igs_pe_nonimg_form.not_reqd_reason%TYPE;
3305 l_position_code igs_pe_ev_form.position_code%TYPE;
3306 l_subject_field_code igs_pe_ev_form.subject_field_code%TYPE;
3307 l_remarks igs_pe_ev_form.subject_field_remarks%TYPE;
3308 l_education_level igs_pe_nonimg_form.education_level%TYPE;
3309 l_primary_major igs_pe_nonimg_form.primary_major%TYPE;
3310 l_secondary_major igs_pe_nonimg_form.secondary_major%TYPE;
3311 l_educ_lvl_remarks igs_pe_nonimg_form.educ_lvl_remarks%TYPE;
3312 l_minor igs_pe_nonimg_form.minor%TYPE;
3313 l_length_of_study igs_pe_nonimg_form.length_of_study%TYPE;
3314
3315
3316
3317 BEGIN
3318 /* Debug */
3319 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3320 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Auth_Code';
3321 l_debug_str := 'Entering Insert_Edu_Info. person_id is '||p_auth_drp_data_rec.person_id|| ' and batch_id is '||p_auth_drp_data_rec.batch_id;
3322 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3323 END IF;
3324
3325 l_remarks := p_auth_drp_data_rec.remarks;
3326 l_prgm_start_date := p_auth_drp_data_rec.prgm_start_date;
3327 l_prgm_end_date := p_auth_drp_data_rec.prgm_end_date;
3328
3329
3330 /* Debug */
3331 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3332 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Auth_Code';
3333 l_debug_str := 'After assigning values to local variables';
3334 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3335 END IF;
3336
3337 IF p_auth_drp_data_rec.prgm_action_type = 'DB' THEN
3338 IF p_auth_drp_data_rec.auth_action_code = 'A' THEN
3339 l_action := 'ADD';
3340 ELSIF p_auth_drp_data_rec.auth_action_code = 'U' THEN
3341 l_action := 'EDIT';
3342 ELSE
3343 l_action := 'CANCEL';
3344 END IF;
3345 l_tag_code := 'SV_AUTH_DROP';
3346 END IF;
3347
3348 l_btch_id := chk_mut_exclusive(p_auth_drp_data_rec.batch_id,
3349 p_auth_drp_data_rec.person_id,
3350 l_action,
3351 l_tag_code);
3352 Insert_Summary_Info(l_btch_id,
3353 p_auth_drp_data_rec.person_id,
3354 l_action,
3355 l_tag_code,
3356 'SEND',
3357 'IGS_SV_PRGMS_INFO',
3358 p_auth_drp_data_rec.sevis_auth_id);
3359
3360
3361 l_cur_rec.person_id := p_auth_drp_data_rec.person_id;
3362 l_edu_status := Get_Othr_Prgm_Info (p_data_rec => l_cur_rec);
3363 IF l_edu_status = 'S' THEN
3364 l_position_code := l_cur_rec.position_code;
3365 l_subject_field_code := l_cur_rec.subject_field_code ;
3366 l_education_level := l_cur_rec.education_level;
3367 l_primary_major := l_cur_rec.primary_major;
3368 l_secondary_major := l_cur_rec.secondary_major;
3369 l_educ_lvl_remarks := l_cur_rec.educ_lvl_remarks ;
3370 l_minor := l_cur_rec.minor ;
3371 l_length_of_study := l_cur_rec.length_of_study ;
3372 l_english_reqd := l_cur_rec.english_reqd;
3373 l_english_reqd_met := l_cur_rec.english_reqd_met ;
3374 l_not_reqd_reason := l_cur_rec.not_reqd_reason;
3375
3376 /* Debug */
3377 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3378 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Auth_Code';
3379 l_debug_str := 'After assigning values received from get_othr_prgm_info to local variables';
3380 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3381 END IF;
3382 END IF;
3383
3384
3385 INSERT INTO igs_sv_prgms_info (
3386 batch_id ,
3387 person_id ,
3388 prgm_action_type ,
3389 position_code ,
3390 subject_field_code ,
3391 education_level ,
3392 primary_major ,
3393 secondary_major ,
3394 educ_lvl_remarks ,
3395 minor ,
3396 length_of_study ,
3397 prgm_start_date ,
3398 prgm_end_date ,
3399 english_reqd ,
3400 english_reqd_met ,
3401 not_reqd_reason ,
3402 authorization_reason ,
3403 remarks ,
3404 creation_date ,
3405 created_by ,
3406 last_updated_by ,
3407 last_update_date ,
3408 last_update_login ,
3409 auth_action_code ,
3410 sevis_auth_id ,
3411 print_form
3412 ) VALUES
3413 ( l_btch_id ,
3414 p_auth_drp_data_rec.person_id ,
3415 p_auth_drp_data_rec.prgm_action_type ,
3416 l_position_code ,
3417 l_subject_field_code ,
3418 l_education_level ,
3419 l_primary_major ,
3420 l_secondary_major ,
3421 l_educ_lvl_remarks ,
3422 l_minor ,
3423 l_length_of_study ,
3424 p_auth_drp_data_rec.prgm_start_date ,
3425 p_auth_drp_data_rec.prgm_end_date ,
3426 l_english_reqd ,
3427 l_english_reqd_met ,
3428 l_not_reqd_reason ,
3429 p_auth_drp_data_rec.authorization_reason ,
3430 p_auth_drp_data_rec.remarks ,
3431 p_auth_drp_data_rec.creation_date ,
3432 p_auth_drp_data_rec.created_by ,
3433 p_auth_drp_data_rec.last_updated_by ,
3434 p_auth_drp_data_rec.last_update_date ,
3435 p_auth_drp_data_rec.last_update_login ,
3436 p_auth_drp_data_rec.auth_action_code ,
3437 p_auth_drp_data_rec.sevis_auth_id ,
3438 '0'
3439 );
3440 /* Debug */
3441 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3442 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Auth_Code';
3443 l_debug_str := 'Record inserted';
3444 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3445 END IF;
3446
3447 EXCEPTION
3448
3449 WHEN OTHERS THEN
3450 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
3451 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
3452 END IF;
3453
3454 /* Debug */
3455 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3456 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Auth_Code';
3457 l_debug_str := 'EXCEPTION in Insert_Auth_Code. '||SQLERRM;
3458 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3459 END IF;
3460 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
3461
3462 RAISE;
3463
3464 END Insert_Auth_Code;
3465
3466 FUNCTION Validate_Prgm_Info (
3467 p_person_rec IN t_student_rec,
3468 p_data_rec IN OUT NOCOPY g_edu_rec_type,
3469 p_records OUT NOCOPY NUMBER , -- Number of program records found
3470 p_auth_drp_data_rec IN OUT NOCOPY g_edu_rec_type
3471 ) RETURN VARCHAR2
3472 IS
3473
3474 l_api_name CONSTANT VARCHAR(30) := 'Validate_Prgm_Info';
3475
3476 CURSOR c_data IS
3477 SELECT nonimg_stat_id,
3478 nonimg_form_id,
3479 to_char(action_date,'YYYY-MM-DD') action_date,
3480 action_type,
3481 to_char(prgm_start_date,'YYYY-MM-DD') prgm_start_date,
3482 to_char(prgm_end_date,'YYYY-MM-DD') prgm_end_date,
3483 remarks,
3484 termination_reason,
3485 print_flag, --prbhardw
3486 cancel_flag
3487 FROM igs_pe_nonimg_stat
3488 WHERE nonimg_form_id = p_person_rec.form_id
3489 AND nonimg_stat_id NOT IN
3490 ( SELECT NVL(form_status_id,0)
3491 FROM igs_sv_prgms_info prg,
3492 igs_sv_persons pr
3493 WHERE prg.person_id = pr.person_id
3494 AND prg.batch_id = pr.batch_id
3495 AND pr.record_status <> 'E'
3496 AND prg.person_id = p_person_rec.person_id
3497 )
3498 ORDER BY action_date;
3499
3500 CURSOR c_ev_data IS
3501 SELECT ev_form_stat_id ,
3502 ev_form_id ,
3503 to_char(action_date,'YYYY-MM-DD') action_date,
3504 action_type ,
3505 to_char(prgm_start_date,'YYYY-MM-DD') prgm_start_date,
3506 to_char(prgm_end_date,'YYYY-MM-DD') prgm_end_date,
3507 remarks ,
3508 termination_reason ,
3509 end_program_reason
3510 FROM igs_pe_ev_form_stat
3511 WHERE ev_form_id = p_person_rec.form_id
3512 AND ev_form_stat_id NOT IN
3513 ( SELECT NVL(form_status_id,0)
3514 FROM igs_sv_prgms_info prg,
3515 igs_sv_persons pr
3516 WHERE prg.person_id = pr.person_id
3517 AND pr.record_status <> 'E'
3518 AND prg.batch_id = pr.batch_id
3519 AND prg.person_id = p_person_rec.person_id)
3520 ORDER BY action_date;
3521
3522 CURSOR c_ev_category_data IS
3523 SELECT category_code,
3524 prgm_start_date,
3525 prgm_end_date
3526 FROM igs_pe_ev_form
3527 WHERE ev_form_id = p_person_rec.form_id;
3528
3529 CURSOR c_drp(cp_sevis_auth_id igs_sv_prgms_info.sevis_auth_id%TYPE) IS
3530 SELECT prgms.authorization_reason,
3531 prgms.prgm_start_date,
3532 prgms.prgm_end_date,
3533 prgms.remarks,
3534 prgms.auth_action_code
3535 FROM igs_sv_prgms_info prgms,
3536 igs_sv_persons pr
3537 WHERE prgms.person_id = pr.person_id
3538 AND pr.record_status <> 'E'
3539 AND prgms.person_id = p_person_rec.person_id
3540 AND prgms.prgm_action_type = 'DB'
3541 AND prgms.sevis_auth_id = cp_sevis_auth_id
3542 AND prgms.batch_id IN
3543 ( SELECT max(prs.batch_id)
3544 FROM igs_sv_prgms_info prs,
3545 igs_sv_persons pr
3546 WHERE prs.person_id = pr.person_id
3547 AND prs.batch_id = pr.batch_id
3548 AND pr.record_status <> 'E'
3549 AND prs.person_id = p_person_rec.person_id
3550 AND prs.prgm_action_type = 'DB'
3551 AND prs.sevis_auth_id = cp_sevis_auth_id
3552 );
3553
3554 CURSOR c_res IS
3555 SELECT prgms.prgm_start_date,
3556 prgms.prgm_end_date,
3557 prgms.remarks
3558 FROM igs_sv_prgms_info prgms,
3559 igs_sv_persons pr
3560 WHERE prgms.person_id = pr.person_id
3561 AND prgms.batch_id = pr.batch_id
3562 AND pr.record_status <> 'E'
3563 AND prgms.person_id = p_person_rec.person_id
3564 AND prgms.prgm_action_type = 'RF';
3565
3566
3567 CURSOR c_visa_type IS
3568 SELECT visa_type
3569 FROM IGS_PE_NONIMG_FORM
3570 WHERE nonimg_form_id = p_person_rec.form_id;
3571
3572 CURSOR c_termination_reason(p_visa varchar2, p_term_reason igs_pe_nonimg_stat.termination_reason%TYPE) IS
3573 SELECT COUNT(1)
3574 FROM igs_pe_nonimg_stat
3575 WHERE nonimg_form_id = p_person_rec.form_id
3576 AND p_term_reason NOT IN
3577 ( SELECT lookup_code FROM igs_lookup_values
3578 WHERE lookup_type ='PE_SV_TERMINATE_REASON' AND
3579 enabled_flag ='Y' AND
3580 (tag= p_visa OR tag= 'FM')
3581 );
3582
3583 --prbhardw
3584 CURSOR c_prev_end_date IS
3585 SELECT
3586 PRGM_END_DATE
3587 FROM
3588 IGS_PE_NONIMG_FORM_V
3589 WHERE
3590 nonimg_form_id = p_person_rec.form_id;
3591
3592 CURSOR c_auth_details(cp_person_id igs_sv_prgms_info.person_id%TYPE)
3593 IS
3594 SELECT sevis_auth_id, sevis_authorization_code, start_dt, end_dt, comments, cancel_flag
3595 FROM igs_en_svs_auth
3596 WHERE person_id = cp_person_id;
3597
3598 CURSOR c_prgm_dates(cp_person_id igs_sv_prgms_info.person_id%TYPE)
3599 IS
3600 SELECT prgm_start_date, prgm_end_date, visa_type
3601 FROM igs_pe_nonimg_form
3602 WHERE person_id = cp_person_id
3603 AND nonimg_form_id = p_person_rec.form_id;
3604
3605
3606
3607 l_not_valid BOOLEAN := FALSE;
3608 l_AUTH_CODE igs_en_svs_auth.sevis_authorization_code%TYPE;
3609 l_AUTH_START_DT DATE;
3610 l_AUTH_END_DT DATE;
3611 l_COMMENTS VARCHAR2(500);
3612 l_visa_type VARCHAR2(5);
3613 l_termination_count NUMBER := 0;
3614 l_category_code VARCHAR2(30);
3615 l_prgm_start_dt DATE;
3616 l_prgm_end_dt DATE;
3617 lv_prgm_end_dt DATE;
3618 l_cancel_flag VARCHAR2(1); -- will go as fifth OUT parameter in ENRF_GET_SEVIS_AUTH_DETAILS
3619 l_auth_rec_count NUMBER(2) := 0;
3620 l_counter NUMBER(10):= 0;
3621 l_sevis_auth_id igs_sv_prgms_info.sevis_auth_id%TYPE;
3622 c_drp_rec c_drp%ROWTYPE;
3623 BEGIN
3624
3625 /* Debug */
3626 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3627 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3628 l_debug_str := 'Entering Validate_Prgm_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
3629 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3630 END IF;
3631
3632 Put_Log_Msg(l_api_name||' starts ',0);
3633
3634 -- p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
3635 IF p_person_rec.batch_type = 'I' THEN
3636
3637 -- RF Resume Full Course STUB - doesn't exist
3638 -- DB Dropped Below Full Course
3639 -- Check for drop below FC
3640 --prbhardw auth_drop_below
3641 OPEN c_prgm_dates(p_person_rec.person_id);
3642 FETCH c_prgm_dates INTO l_prgm_start_dt, l_prgm_end_dt, l_visa_type;
3643 CLOSE c_prgm_dates;
3644
3645 Put_Log_Msg('Validating NI ',0);
3646
3647 FOR c_auth_details_rec IN c_auth_details(p_person_rec.person_id) LOOP
3648 l_sevis_auth_id := c_auth_details_rec.sevis_auth_id;
3649 l_auth_code := c_auth_details_rec.sevis_authorization_code;
3650 l_auth_start_dt := c_auth_details_rec.start_dt;
3651 l_auth_end_dt := c_auth_details_rec.end_dt;
3652 l_comments := c_auth_details_rec.comments;
3653 l_cancel_flag := c_auth_details_rec.cancel_flag;
3654
3655 l_auth_rec_count := l_auth_rec_count +1;
3656
3657 p_auth_drp_data_rec(l_auth_rec_count).prgm_action_type := '';
3658 p_auth_drp_data_rec(l_auth_rec_count).auth_action_code := '';
3659
3660 p_auth_drp_data_rec(l_auth_rec_count).authorization_reason := l_auth_code; --c_auth_details_rec.sevis_authorization_code;
3661 p_auth_drp_data_rec(l_auth_rec_count).prgm_start_date := to_char(l_auth_start_dt,'YYYY-MM-DD');
3662 p_auth_drp_data_rec(l_auth_rec_count).prgm_end_date := to_char(l_auth_end_dt,'YYYY-MM-DD');
3663 p_auth_drp_data_rec(l_auth_rec_count).remarks := l_comments;
3664 p_auth_drp_data_rec(l_auth_rec_count).sevis_auth_id := l_sevis_auth_id;
3665
3666 Put_Log_Msg('validating Authorization. Values srt. SEVIS auth ID: '||l_sevis_auth_id,0);
3667 /* Debug */
3668 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3669 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3670 l_debug_str := 'Comparing values for authorization code. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
3671 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3672 END IF;
3673
3674 OPEN c_drp(l_sevis_auth_id);
3675 FETCH c_drp INTO c_drp_rec;
3676 IF c_drp%FOUND THEN
3677 Put_Log_Msg('validating Authorization. Record found in staging table',0);
3678 IF l_cancel_flag <> 'Y' THEN
3679 IF c_drp_rec.authorization_reason
3680 ||g_delimeter||c_drp_rec.prgm_start_date
3681 ||g_delimeter||c_drp_rec.prgm_end_date
3682 ||g_delimeter||c_drp_rec.remarks <>
3683 l_auth_code
3684 ||g_delimeter||to_char(l_auth_start_dt,'YYYY-MM-DD')
3685 ||g_delimeter||to_char(l_auth_end_dt,'YYYY-MM-DD')
3686 ||g_delimeter||l_comments THEN
3687
3688 p_auth_drp_data_rec(l_auth_rec_count).auth_action_code := 'U';
3689 p_auth_drp_data_rec(l_auth_rec_count).prgm_action_type :='DB';
3690 --ELSE prbhardw EN change
3691 -- p_auth_drp_data_rec.auth_action_code := c_drp_rec.auth_action_code;
3692 END IF;
3693 ELSIF c_drp_rec.auth_action_code <> 'C' THEN
3694 p_auth_drp_data_rec(l_auth_rec_count).auth_action_code := 'C';
3695 p_auth_drp_data_rec(l_auth_rec_count).prgm_action_type :='DB';
3696 END IF;
3697 ELSE
3698 Put_Log_Msg('validating Authorization. Record going for first time',0);
3699 p_auth_drp_data_rec(l_auth_rec_count).auth_action_code := 'A';
3700 p_auth_drp_data_rec(l_auth_rec_count).prgm_action_type :='DB';
3701 END IF;
3702 CLOSE c_drp;
3703
3704 /* Debug */
3705 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3706 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3707 l_debug_str := 'Authorization values set. action type is '||p_auth_drp_data_rec(l_auth_rec_count).prgm_action_type ||' and action code is '||p_auth_drp_data_rec(l_auth_rec_count).auth_action_code;
3708 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3709 END IF;
3710
3711
3712 IF p_auth_drp_data_rec(l_auth_rec_count).auth_action_code IS NOT NULL AND p_auth_drp_data_rec(l_auth_rec_count).prgm_action_type IS NOT NULL THEN
3713 Put_Log_Msg('validations start for Authorization.',0);
3714 p_auth_drp_data_rec(l_auth_rec_count).batch_id := p_person_rec.batch_id;
3715 p_auth_drp_data_rec(l_auth_rec_count).person_id := p_person_rec.person_id;
3716 p_auth_drp_data_rec(l_auth_rec_count).creation_date := sysdate;
3717 p_auth_drp_data_rec(l_auth_rec_count).created_by := g_update_by;
3718 p_auth_drp_data_rec(l_auth_rec_count).last_updated_by := g_update_by;
3719 p_auth_drp_data_rec(l_auth_rec_count).last_update_date := sysdate;
3720 p_auth_drp_data_rec(l_auth_rec_count).last_update_login := g_update_login;
3721
3722 IF ADD_MONTHS(l_auth_end_dt,-12) > l_auth_start_dt AND l_visa_type = 'F-1' THEN
3723 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_ATH_DRP_BLW_DR');
3724 FND_MESSAGE.SET_TOKEN('PERSON_NUM', p_person_rec.person_number );
3725 FND_MESSAGE.SET_TOKEN('MON', '12');
3726 FND_MESSAGE.SET_TOKEN('VISA_TYPE', 'F-1');
3727 Put_Log_Msg(FND_MESSAGE.Get,1);
3728 l_not_valid := TRUE;
3729 /* Debug */
3730 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3731 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3732 l_debug_str := 'Validation failure for Authorization. Error: Invalid authorization drop below for F-1 visa';
3733 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3734 END IF;
3735 ELSIF ADD_MONTHS(l_auth_end_dt,-5) > l_auth_start_dt AND l_visa_type = 'M-1' THEN
3736 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_AUTH_DRP_BLW');
3737 FND_MESSAGE.SET_TOKEN('PERSON_NUM', p_person_rec.person_number );
3738 FND_MESSAGE.SET_TOKEN('MON', '5');
3739 FND_MESSAGE.SET_TOKEN('VISA_TYPE', 'M-1');
3740 Put_Log_Msg(FND_MESSAGE.Get,1);
3741 l_not_valid := TRUE;
3742 /* Debug */
3743 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3744 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3745 l_debug_str := 'Validation failure for Authorization. Error: Invalid authorization drop below for M-1 visa';
3746 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3747 END IF;
3748 END IF;
3749
3750
3751 IF p_auth_drp_data_rec(l_auth_rec_count).auth_action_code = 'A' THEN
3752 Put_Log_Msg('validating Authorization in add mode',0);
3753 IF ((l_auth_start_dt <= sysdate) OR (l_auth_start_dt <= l_prgm_start_dt)) THEN
3754 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_AUTH_ST_DT'); -- Invalid authorization start date
3755 FND_MESSAGE.SET_TOKEN('PERSON_NUM', p_person_rec.person_number );
3756 Put_Log_Msg(FND_MESSAGE.Get,1);
3757 l_not_valid := TRUE;
3758 /* Debug */
3759 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3760 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3761 l_debug_str := 'Validation failure for Authorization. Error: Invalid authorization start date';
3762 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3763 END IF;
3764 END IF;
3765 IF ((l_auth_end_dt <= sysdate) OR (l_auth_end_dt >= l_prgm_end_dt)) THEN
3766 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_AUTH_END_DT'); -- Invalid authorization end date
3767 FND_MESSAGE.SET_TOKEN('PERSON_NUM', p_person_rec.person_number );
3768 Put_Log_Msg(FND_MESSAGE.Get,1);
3769 l_not_valid := TRUE;
3770 /* Debug */
3771 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3772 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3773 l_debug_str := 'Validation failure for Authorization. Error: Invalid authorization end date';
3774 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3775 END IF;
3776 END IF;
3777
3778 END IF;
3779 END IF;
3780 IF l_not_valid THEN
3781 Put_Log_Msg('validating Authorization. l_not_valid is true',0);
3782 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
3783 /* Debug */
3784 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3785 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3786 l_debug_str := 'Returning E from Validate_Prgm_Info. Authorization code failed to validate.';
3787 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3788 END IF;
3789
3790 RETURN 'E';
3791
3792 END IF;
3793 END LOOP;
3794 Put_Log_Msg('validating Authorization. Number of records found '||l_auth_rec_count,0);
3795
3796 --prbhardw auth_drop_below
3797 /*
3798 IF p_data_rec(1).prgm_action_type = '' AND IGS_EN_SEVIS.ENRF_GET_RET_FT_NOTE_DETAILS(
3799 p_person_id => p_person_rec.person_id,
3800 P_NOTE_TYPE => l_auth_code,
3801 P_NOTE_START_DT => l_auth_start_dt,
3802 P_NOTE_END_DT => l_auth_end_dt,
3803 P_NOTE_TEXT => l_comments )
3804
3805 THEN
3806
3807 p_data_rec(1).prgm_action_type :='RF';
3808 p_data_rec(1).prgm_start_date := to_char(l_auth_start_dt,'YYYY-MM-DD');
3809 p_data_rec(1).prgm_end_date := to_char(l_auth_end_dt,'YYYY-MM-DD');
3810 p_data_rec(1).remarks := l_comments;
3811
3812
3813 FOR c_drp_rec IN c_res LOOP
3814
3815
3816 IF c_drp_rec.prgm_start_date
3817 ||g_delimeter||c_drp_rec.prgm_end_date
3818 ||g_delimeter||c_drp_rec.remarks =
3819 to_char(l_auth_start_dt,'YYYY-MM-DD')
3820 ||g_delimeter||to_char(l_auth_end_dt,'YYYY-MM-DD')
3821 ||g_delimeter||l_comments THEN
3822
3823 -- already reported.
3824 p_data_rec(1).prgm_action_type :='';
3825 p_data_rec(1).authorization_reason := '';
3826 p_data_rec(1).prgm_start_date := '';
3827 p_data_rec(1).prgm_end_date := '';
3828 p_data_rec(1).remarks := '';
3829 p_data_rec(1).auth_action_code := '';
3830
3831 END IF;
3832
3833
3834 END LOOP;
3835
3836 END IF;
3837 */
3838
3839 FOR c_data_rec IN c_data LOOP
3840 l_counter := l_counter +1;
3841 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
3842 p_data_rec(l_counter).person_id := p_person_rec.person_id;
3843 --p_data_rec.print_form := p_person_rec.print_form; prbhardw
3844 p_data_rec(l_counter).creation_date := sysdate;
3845 p_data_rec(l_counter).created_by := g_update_by;
3846 p_data_rec(l_counter).last_updated_by := g_update_by;
3847 p_data_rec(l_counter).last_update_date := sysdate;
3848 p_data_rec(l_counter).last_update_login := g_update_login;
3849
3850 p_data_rec(l_counter).prgm_action_type := c_data_rec.action_type;
3851 p_data_rec(l_counter).print_form := c_data_rec.print_flag; -- prbhardw
3852 p_data_rec(l_counter).form_status_id := c_data_rec.nonimg_stat_id;
3853 p_data_rec(l_counter).prgm_start_date := c_data_rec.prgm_start_date;
3854 p_data_rec(l_counter).prgm_end_date := c_data_rec.prgm_end_date;
3855 p_data_rec(l_counter).effective_date := c_data_rec.action_date ;
3856 p_data_rec(l_counter).termination_reason := c_data_rec.termination_reason ;
3857 p_data_rec(l_counter).remarks := c_data_rec.remarks ;
3858 IF c_data_rec.cancel_flag = 'Y' THEN -- prbhardw
3859 p_data_rec(l_counter).prgm_action_type := 'CE';
3860 END IF;
3861
3862
3863 /* Debug */
3864 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3865 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3866 l_debug_str := 'Exiting from for loop in Validate_Prgm_Info.';
3867 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3868 END IF;
3869
3870 -- EXIT; -- one record is enough
3871 -- Validate all the data
3872 -- Nonimg action types:
3873 -- C Complete Program
3874 -- T Terminate Program
3875 -- D Defer program
3876 -- E Extend program
3877
3878 OPEN c_visa_type;
3879 FETCH c_visa_type INTO l_visa_type;
3880 CLOSE c_visa_type;
3881
3882 IF p_data_rec(l_counter).prgm_action_type = 'C' THEN
3883 -- No validation at this time
3884
3885 NULL;
3886
3887 ELSIF p_data_rec(l_counter).prgm_action_type = 'D' AND
3888 ( p_data_rec(l_counter).prgm_start_date IS NULL
3889 OR p_data_rec(l_counter).prgm_end_date IS NULL) THEN
3890
3891 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_CMP_PRG_RQD_FLD_ERR'); -- Completion block error
3892 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
3893
3894 Put_Log_Msg(FND_MESSAGE.Get,1);
3895 l_not_valid := TRUE;
3896
3897 ELSIF p_data_rec(l_counter).prgm_action_type = 'T' AND p_data_rec(l_counter).termination_reason IS NULL THEN
3898
3899 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_TRM_PRG_RQD_FLD_ERR'); -- Termination block error
3900 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
3901
3902 Put_Log_Msg(FND_MESSAGE.Get,1);
3903 l_not_valid := TRUE;
3904 ELSIF p_data_rec(l_counter).prgm_action_type = 'T' AND l_visa_type= 'M-1' THEN
3905 OPEN c_termination_reason('M', p_data_rec(l_counter).termination_reason);
3906 FETCH c_termination_reason INTO l_termination_count;
3907 CLOSE c_termination_reason;
3908 IF l_termination_count > 0 THEN
3909 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_TERM_REASON');
3910 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
3911 Put_Log_Msg(FND_MESSAGE.Get,1);
3912 l_not_valid := TRUE;
3913 END IF;
3914 ELSIF p_data_rec(l_counter).prgm_action_type = 'T' AND l_visa_type= 'F-1' THEN
3915 OPEN c_termination_reason('F', p_data_rec(l_counter).termination_reason);
3916 FETCH c_termination_reason INTO l_termination_count;
3917 CLOSE c_termination_reason;
3918 IF l_termination_count > 0 THEN
3919 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_TERM_REASON');
3920 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
3921 Put_Log_Msg(FND_MESSAGE.Get,1);
3922 l_not_valid := TRUE;
3923 END IF;
3924
3925 ELSIF p_data_rec(l_counter).prgm_action_type = 'E' AND
3926 ( p_data_rec(l_counter).remarks IS NULL
3927 OR p_data_rec(l_counter).prgm_end_date IS NULL) THEN
3928
3929 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EXT_PRG_RQD_FLD_ERR'); -- Extention block error
3930 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
3931
3932 Put_Log_Msg(FND_MESSAGE.Get,1);
3933 l_not_valid := TRUE;
3934
3935 END IF;
3936
3937 --prbhardw
3938 IF p_data_rec(l_counter).prgm_action_type = 'E' THEN
3939 OPEN c_prev_end_date;
3940 FETCH c_prev_end_date INTO lv_prgm_end_dt;
3941 CLOSE c_prev_end_date;
3942 IF to_date(p_data_rec(l_counter).prgm_end_date,'YYYY-MM-DD') > ADD_MONTHS(lv_prgm_end_dt,12) THEN
3943 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_EXT_PRG_DRN'); -- Extention block error
3944 Put_Log_Msg(FND_MESSAGE.Get,1);
3945 l_not_valid := TRUE;
3946 END IF;
3947
3948 END IF;
3949 IF l_not_valid THEN
3950 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
3951 /* Debug */
3952 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3953 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3954 l_debug_str := 'Returning E from Validate_Prgm_Info.';
3955 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3956 END IF;
3957
3958 RETURN 'E';
3959
3960 END IF;
3961 END LOOP;
3962
3963
3964
3965 ELSE -- BATCH TYPE IS 'E'
3966
3967 FOR c_data_rec IN c_ev_data LOOP
3968 l_counter := l_counter +1;
3969 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
3970 p_data_rec(l_counter).person_id := p_person_rec.person_id;
3971 p_data_rec(l_counter).print_form := p_person_rec.print_form;
3972 p_data_rec(l_counter).creation_date := sysdate;
3973 p_data_rec(l_counter).created_by := g_update_by;
3974 p_data_rec(l_counter).last_updated_by := g_update_by;
3975 p_data_rec(l_counter).last_update_date := sysdate;
3976 p_data_rec(l_counter).last_update_login := g_update_login;
3977
3978 p_data_rec(l_counter).prgm_action_type := c_data_rec.action_type;
3979 p_data_rec(l_counter).form_status_id := c_data_rec.ev_form_stat_id;
3980 p_data_rec(l_counter).prgm_start_date := c_data_rec.prgm_start_date ;
3981 p_data_rec(l_counter).prgm_end_date := c_data_rec.prgm_end_date ;
3982 p_data_rec(l_counter).effective_date := c_data_rec.action_date ;
3983 p_data_rec(l_counter).termination_reason := c_data_rec.termination_reason ;
3984 p_data_rec(l_counter).end_prgm_reason := c_data_rec.end_program_reason ;
3985 p_data_rec(l_counter).remarks := c_data_rec.remarks ;
3986 /* Debug */
3987 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
3988 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
3989 l_debug_str := 'Exiting from for loop in Validate_Prgm_Info.';
3990 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
3991 END IF;
3992
3993 -- EXIT; -- one record is enough
3994 -- Validate EV date
3995 -- AP Amend Program
3996 -- EE Exchange Visitor Extension
3997 -- EF Extend Failure
3998 -- CF Conclude Failure
3999 -- AF Approve Failure
4000 -- OI Other Infraction
4001 -- TR Terminate Exchange Visitor
4002 -- ED End Program
4003
4004 -- EM Exchange Visitor Matriculation ???
4005 -- US Update Subject Field
4006 -- RF Reprint Form
4007 OPEN c_ev_category_data;
4008 FETCH c_ev_category_data INTO
4009 l_category_code,
4010 l_prgm_start_dt,
4011 l_prgm_end_dt;
4012 CLOSE c_ev_category_data;
4013
4014 IF l_category_code = '2A' AND l_prgm_end_dt > ADD_MONTHS(l_prgm_start_dt,24) THEN
4015 FND_MESSAGE.SET_NAME('IGS','IGS_SV_INV_PROG_DURN');
4016 FND_MESSAGE.SET_TOKEN('PROGDURATION','not exceed 24 months');
4017 Put_Log_Msg(FND_MESSAGE.Get,1);
4018 l_not_valid := TRUE;
4019 END IF;
4020
4021 IF p_data_rec(l_counter).prgm_action_type = 'EM' AND p_data_rec(l_counter).prgm_end_date < trunc(SYSDATE) THEN
4022 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INV_PRGM_END_DT');
4023 FND_MESSAGE.SET_TOKEN('PERSON_NUM', p_person_rec.person_number );
4024 Put_Log_Msg(FND_MESSAGE.Get,1);
4025 l_not_valid := TRUE;
4026 END IF;
4027
4028 IF p_data_rec(l_counter).prgm_action_type = 'AP' AND -- AP Amend Program
4029 ( p_data_rec(l_counter).prgm_start_date IS NULL
4030 OR p_data_rec(l_counter).prgm_end_date IS NULL) THEN
4031
4032 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EV_PRG_RQD_FLD_ERR');
4033 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4034
4035 Put_Log_Msg(FND_MESSAGE.Get,1);
4036 l_not_valid := TRUE;
4037
4038 ELSIF p_data_rec(l_counter).prgm_action_type IN ('EE','EF') AND -- EE Exchange Visitor Extension, EF Extend Failure
4039 ( p_data_rec(l_counter).prgm_end_date IS NULL) THEN
4040
4041 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EV_PRG_RQD_FLD_ERR');
4042 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4043
4044 Put_Log_Msg(FND_MESSAGE.Get,1);
4045 l_not_valid := TRUE;
4046
4047 ELSIF p_data_rec(l_counter).prgm_action_type IN ('SP') AND
4048 p_data_rec(l_counter).remarks IS NULL THEN
4049 -- AF Approve Failure
4050 -- OI Other Infraction
4051
4052 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EV_PRG_RQD_FLD_ERR'); -- Amend program block error
4053 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4054
4055 Put_Log_Msg(FND_MESSAGE.Get,1);
4056 l_not_valid := TRUE;
4057
4058
4059 ELSIF p_data_rec(l_counter).prgm_action_type = 'TR' AND -- TR Terminate Exchange Visitor
4060 ( p_data_rec(l_counter).termination_reason IS NULL
4061 OR p_data_rec(l_counter).effective_date IS NULL ) THEN
4062
4063 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_TRM_PRG_RQD_FLD_ERR'); -- Termination block error
4064 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4065
4066 Put_Log_Msg(FND_MESSAGE.Get,1);
4067 l_not_valid := TRUE;
4068
4069 ELSIF p_data_rec(l_counter).prgm_action_type = 'ED' AND -- ED End Program
4070 ( p_data_rec(l_counter).end_prgm_reason IS NULL
4071 OR p_data_rec(l_counter).effective_date IS NULL ) THEN
4072
4073 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_TRM_PRG_RQD_FLD_ERR'); -- Termination block error
4074 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4075
4076 Put_Log_Msg(FND_MESSAGE.Get,1);
4077 l_not_valid := TRUE;
4078
4079
4080 END IF;
4081
4082 IF p_data_rec(l_counter).prgm_action_type = 'TR' AND p_data_rec(l_counter).termination_reason = 'OTHER'
4083 AND p_data_rec(l_counter).remarks IS NULL THEN
4084 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_TRM_REM_RQD');
4085 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4086 Put_Log_Msg(FND_MESSAGE.Get,1);
4087 l_not_valid := TRUE;
4088 END IF;
4089
4090 IF l_not_valid THEN
4091 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
4092 /* Debug */
4093 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4094 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
4095 l_debug_str := 'Returning E from Validate_Prgm_Info.';
4096 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4097 END IF;
4098
4099 RETURN 'E';
4100
4101 END IF;
4102
4103 END LOOP;
4104
4105 END IF;
4106 p_records := l_counter;
4107 IF l_counter = 0 AND l_auth_rec_count = 0 THEN
4108 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
4109 /* Debug */
4110 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4111 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
4112 l_debug_str := 'Returning N from validate_empl_Info.';
4113 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4114 END IF;
4115 RETURN 'N';
4116 END IF;
4117
4118
4119 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
4120 /* Debug */
4121 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4122 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
4123 l_debug_str := 'Returning S from Validate_Prgm_Info.';
4124 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4125 END IF;
4126
4127 RETURN 'S'; -- Successfull validation
4128
4129 EXCEPTION
4130
4131 WHEN OTHERS THEN
4132 /* Debug */
4133 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4134 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Prgm_Info';
4135 l_debug_str := 'Exception in Validate_Prgm_Info.'||SQLERRM;
4136 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4137 END IF;
4138
4139 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
4140 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
4141 END IF;
4142
4143 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
4144
4145 RETURN 'U';
4146
4147 END Validate_Prgm_Info;
4148
4149 /******************************************************************
4150 Created By : Arkadi Tereshenkov
4151
4152 Date Created By : Oct 14, 2002
4153
4154 Purpose : Validate information pertaining to the Finance
4155 information of the student.
4156 (IGS_SV_FINANCE_INFO).
4157
4158 Remarks : Return result:
4159 'S' - record found and validated
4160 'E' - validation error
4161 'U' - Unexpected error
4162 'N' - data not found
4163
4164 Change History
4165 Who When What
4166 ------------------------------------------------------------------------
4167
4168 ******************************************************************/
4169 FUNCTION Validate_Finance_Info (
4170 p_person_rec IN t_student_rec,
4171 p_data_rec IN OUT NOCOPY IGS_SV_FINANCE_INFO%ROWTYPE -- Data record
4172 ) RETURN VARCHAR2
4173 IS
4174
4175 l_api_name CONSTANT VARCHAR(30) := 'Validate_Finance_Info';
4176
4177 CURSOR c_nimg_data IS
4178 SELECT acad_term_length,
4179 tuition_amt,
4180 living_exp_amt,
4181 depdnt_exp_amt dependent_exp_amt,
4182 other_exp_amt,
4183 other_exp_desc,
4184 personal_funds_amt,
4185 school_funds_amt,
4186 school_funds_desc,
4187 other_funds_amt,
4188 other_funds_desc,
4189 empl_funds_amt,
4190 remarks
4191 FROM igs_pe_nonimg_form penf
4192 WHERE penf.person_id = p_person_rec.person_id
4193 AND penf.nonimg_form_id = p_person_rec.form_id;
4194
4195 CURSOR c_ev_data IS
4196 SELECT prgm_sponsor_amt program_sponsor,
4197 govt_org1_amt,
4198 govt_org2_amt,
4199 govt_org1_code,
4200 govt_org2_code,
4201 intl_org1_amt,
4202 intl_org2_amt,
4203 intl_org1_code,
4204 intl_org2_code,
4205 ev_govt_amt,
4206 bi_natnl_com_amt,
4207 other_govt_amt,
4208 personal_funds_amt,
4209 remarks,
4210 NVL(NVL(govt_org2_amt,govt_org1_amt),'0') recvd_us_gvt_funds_ind,
4211 govt_org1_othr_name ,
4212 govt_org2_othr_name ,
4213 intl_org1_othr_name ,
4214 intl_org2_othr_name ,
4215 other_govt_name
4216 FROM igs_pe_ev_form evf
4217 WHERE evf.person_id = p_person_rec.person_id
4218 AND evf.ev_form_id = p_person_rec.form_id;
4219
4220 l_not_valid BOOLEAN := FALSE;
4221 l_acad_term_length igs_pe_nonimg_form.acad_term_length%TYPE;
4222 l_tuition igs_pe_nonimg_form.tuition_amt%TYPE;
4223 l_living_exp igs_pe_nonimg_form.living_exp_amt%TYPE;
4224 l_dependent_exp igs_pe_nonimg_form.depdnt_exp_amt%TYPE;
4225 l_other_exp igs_pe_nonimg_form.other_exp_amt%TYPE;
4226 l_other_exp_desc igs_pe_nonimg_form.other_exp_desc%TYPE;
4227 l_personal_funds igs_pe_nonimg_form.personal_funds_amt%TYPE;
4228 l_school_funds igs_pe_nonimg_form.school_funds_amt%TYPE;
4229 l_school_funds_desc igs_pe_nonimg_form.school_funds_desc%TYPE;
4230 l_other_funds igs_pe_nonimg_form.other_funds_amt%TYPE;
4231 l_other_funds_desc igs_pe_nonimg_form.other_funds_desc%TYPE;
4232 l_empl_funds igs_pe_nonimg_form.empl_funds_amt%TYPE;
4233 l_remarks igs_pe_nonimg_form.remarks%TYPE;
4234 l_program_sponsor igs_pe_ev_form.prgm_sponsor_amt%TYPE;
4235 l_govt_org1 igs_pe_ev_form.govt_org1_amt%TYPE;
4236 l_govt_org2 igs_pe_ev_form.govt_org2_amt%TYPE;
4237 l_govt_org1_code igs_pe_ev_form.govt_org1_code%TYPE;
4238 l_govt_org2_code igs_pe_ev_form.govt_org2_code%TYPE;
4239 l_intl_org1 igs_pe_ev_form.intl_org1_amt%TYPE;
4240 l_intl_org2 igs_pe_ev_form.intl_org2_amt%TYPE;
4241 l_intl_org1_code igs_pe_ev_form.intl_org1_code%TYPE;
4242 l_intl_org2_code igs_pe_ev_form.intl_org2_code%TYPE;
4243 l_ev_govt igs_pe_ev_form.ev_govt_amt%TYPE;
4244 l_bi_natnl_com igs_pe_ev_form.bi_natnl_com_amt%TYPE;
4245 l_other_org igs_pe_ev_form.other_govt_amt%TYPE;
4246 l_recvd_us_gvt_fund_amt VARCHAR2(30);
4247 l_govt_org1_othr_name igs_pe_ev_form.govt_org1_othr_name%TYPE;
4248 l_govt_org2_othr_name igs_pe_ev_form.govt_org2_othr_name%TYPE;
4249 l_intl_org1_othr_name igs_pe_ev_form.intl_org1_othr_name%TYPE;
4250 l_intl_org2_othr_name igs_pe_ev_form.intl_org2_othr_name%TYPE;
4251 l_other_govt_name igs_pe_ev_form.other_govt_name%TYPE;
4252
4253
4254 BEGIN
4255
4256 Put_Log_Msg(l_api_name||' starts ',0);
4257 /* Debug */
4258 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4259 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Finance_Info';
4260 l_debug_str := 'Entering Validate_Finance_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
4261 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4262 END IF;
4263
4264 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
4265
4266 --
4267 -- Process the Foreign Student information
4268 --
4269 IF (p_person_rec.batch_type = 'I') THEN
4270
4271 OPEN c_nimg_data;
4272 FETCH c_nimg_data
4273 INTO l_acad_term_length,
4274 l_tuition,
4275 l_living_exp,
4276 l_dependent_exp,
4277 l_other_exp,
4278 l_other_exp_desc,
4279 l_personal_funds,
4280 l_school_funds,
4281 l_school_funds_desc,
4282 l_other_funds,
4283 l_other_funds_desc,
4284 l_empl_funds,
4285 l_remarks;
4286
4287 IF (c_nimg_data%FOUND) THEN
4288
4289 p_data_rec.batch_id := p_person_rec.batch_id;
4290 p_data_rec.person_id := p_person_rec.person_id;
4291 p_data_rec.print_form := p_person_rec.print_form;
4292 p_data_rec.creation_date := sysdate;
4293 p_data_rec.created_by := g_update_by;
4294 p_data_rec.last_updated_by := g_update_by;
4295 p_data_rec.last_update_date := sysdate;
4296 p_data_rec.last_update_login := g_update_login;
4297 p_data_rec.acad_term_length := ltrim(to_char(to_number(l_acad_term_length),'00'));
4298 p_data_rec.tuition := l_tuition;
4299 p_data_rec.living_exp := l_living_exp;
4300 p_data_rec.dependent_exp := l_dependent_exp;
4301 p_data_rec.other_exp := l_other_exp;
4302 p_data_rec.other_exp_desc := l_other_exp_desc;
4303 p_data_rec.personal_funds := l_personal_funds;
4304 p_data_rec.school_funds := l_school_funds;
4305 p_data_rec.school_funds_desc := l_school_funds_desc;
4306 p_data_rec.other_funds := l_other_funds;
4307 p_data_rec.other_funds_desc := l_other_funds_desc;
4308 p_data_rec.empl_funds := l_empl_funds;
4309 p_data_rec.remarks := l_remarks;
4310
4311 END IF;
4312
4313 CLOSE c_nimg_data;
4314
4315 ELSE
4316
4317 --
4318 -- Process the Exchange Visitor Data
4319 --
4320 OPEN c_ev_data;
4321 FETCH c_ev_data
4322 INTO l_program_sponsor,
4323 l_govt_org1,
4324 l_govt_org2,
4325 l_govt_org1_code,
4326 l_govt_org2_code,
4327 l_intl_org1,
4328 l_intl_org2,
4329 l_intl_org1_code,
4330 l_intl_org2_code,
4331 l_ev_govt,
4332 l_bi_natnl_com,
4333 l_other_org,
4334 l_personal_funds,
4335 l_remarks,
4336 l_recvd_us_gvt_fund_amt,
4337 l_govt_org1_othr_name,
4338 l_govt_org2_othr_name,
4339 l_intl_org1_othr_name,
4340 l_intl_org2_othr_name,
4341 l_other_govt_name;
4342
4343 IF (c_ev_data%FOUND) THEN
4344
4345 IF l_recvd_us_gvt_fund_amt <> '0' THEN
4346 l_recvd_us_gvt_fund_amt := '1';
4347 END IF;
4348
4349 p_data_rec.batch_id := p_person_rec.batch_id;
4350 p_data_rec.person_id := p_person_rec.person_id;
4351 p_data_rec.print_form := p_person_rec.print_form;
4352 p_data_rec.creation_date := sysdate;
4353 p_data_rec.created_by := g_update_by;
4354 p_data_rec.last_updated_by := g_update_by;
4355 p_data_rec.last_update_login := g_update_login;
4356 p_data_rec.last_update_date := sysdate;
4357 p_data_rec.program_sponsor := l_program_sponsor;
4358 p_data_rec.govt_org1 := l_govt_org1;
4359 p_data_rec.govt_org2 := l_govt_org2;
4360 p_data_rec.govt_org1_code := l_govt_org1_code;
4361 p_data_rec.govt_org2_code := l_govt_org2_code;
4362 p_data_rec.intl_org1 := l_intl_org1;
4363 p_data_rec.intl_org2 := l_intl_org2;
4364 p_data_rec.intl_org1_code := l_intl_org1_code;
4365 p_data_rec.intl_org2_code := l_intl_org2_code;
4366 p_data_rec.ev_govt := l_ev_govt;
4367 p_data_rec.bi_natnl_com := l_bi_natnl_com;
4368 p_data_rec.other_org := l_other_org;
4369 p_data_rec.personal_funds := l_personal_funds;
4370 p_data_rec.remarks := l_remarks;
4371 p_data_rec.recvd_us_gvt_funds:= l_recvd_us_gvt_fund_amt;
4372 p_data_rec.govt_org1_othr_name := l_govt_org1_othr_name;
4373 p_data_rec.govt_org2_othr_name := l_govt_org2_othr_name;
4374 p_data_rec.intl_org1_othr_name := l_intl_org1_othr_name;
4375 p_data_rec.intl_org2_othr_name := l_intl_org2_othr_name;
4376 p_data_rec.other_govt_name := l_other_govt_name ;
4377
4378 END IF;
4379
4380 CLOSE c_ev_data;
4381
4382 END IF;
4383
4384 IF p_data_rec.batch_id IS NULL THEN
4385
4386 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
4387 /* Debug */
4388 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4389 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Finance_Info';
4390 l_debug_str := 'Returning N from Validate_Finance_Info.';
4391 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4392 END IF;
4393
4394 RETURN 'N';
4395
4396 ELSE
4397
4398 -- Validate all the data required for either type of request.
4399 IF (p_data_rec.print_form IS NULL AND p_person_rec.batch_type = 'E') THEN
4400 l_not_valid := TRUE;
4401 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_FIN_REQ_FLD_ERR'); -- Required Fields for Exchange Visitor students
4402 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
4403 Put_Log_Msg(FND_MESSAGE.Get,1);
4404 END IF;
4405
4406 --
4407 -- Validate data specific for Foreign Students
4408 --
4409 IF (p_person_rec.batch_type = 'I') THEN
4410
4411 IF (p_data_rec.acad_term_length IS NULL OR
4412 p_data_rec.tuition IS NULL OR
4413 p_data_rec.living_exp IS NULL OR
4414 p_data_rec.personal_funds IS NULL) THEN
4415 l_not_valid := TRUE;
4416 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_FIN_REQ_NIMG_ERR'); -- Required Fields for Exchange Visitor students
4417 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
4418 Put_Log_Msg(FND_MESSAGE.Get,1);
4419 END IF;
4420
4421 IF ((p_data_rec.other_exp IS NOT NULL AND
4422 p_data_rec.other_exp_desc IS NULL) OR
4423 (p_data_rec.school_funds IS NOT NULL AND
4424 p_data_rec.school_funds_desc IS NULL) OR
4425 (p_data_rec.other_funds IS NOT NULL AND
4426 p_data_rec.other_funds_desc IS NULL)) THEN
4427 l_not_valid := TRUE;
4428 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_FIN_REQ_NIMG_DESC_ERR'); -- Required Fields for Exchange Visitor students
4429 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
4430 Put_Log_Msg(FND_MESSAGE.Get,1);
4431 END IF;
4432
4433 ELSE
4434
4435 --
4436 -- Validate data specific for Exchange Visitor Students
4437 --
4438 IF ((p_data_rec.govt_org1 IS NOT NULL AND
4439 p_data_rec.govt_org1_code IS NULL) OR
4440 (p_data_rec.govt_org2 IS NOT NULL AND
4441 p_data_rec.govt_org2_code IS NULL) OR
4442 (p_data_rec.intl_org1 IS NOT NULL AND
4443 p_data_rec.intl_org1_code IS NULL) OR
4444 (p_data_rec.intl_org2 IS NOT NULL AND
4445 p_data_rec.intl_org2_code IS NULL)) THEN
4446 l_not_valid := TRUE;
4447 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_FIN_REQ_EV_ERR'); -- Required Fields for Exchange Visitor students
4448 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
4449 Put_Log_Msg(FND_MESSAGE.Get,1);
4450 END IF;
4451
4452
4453 IF ((p_data_rec.govt_org1_code = 'OTHER' AND
4454 p_data_rec.govt_org1_othr_name IS NULL) OR
4455 (p_data_rec.govt_org2_code = 'OTHER' AND
4456 p_data_rec.govt_org2_othr_name IS NULL) OR
4457 (p_data_rec.intl_org1_code = 'OTHER' AND
4458 p_data_rec.intl_org1_othr_name IS NULL) OR
4459 (p_data_rec.intl_org2_code = 'OTHER' AND
4460 p_data_rec.intl_org2_othr_name IS NULL) OR
4461 p_data_rec.other_govt_name IS NULL AND
4462 p_data_rec.other_org IS NOT NULL) THEN
4463 l_not_valid := TRUE;
4464 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_OTHR_ORG');
4465 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
4466 Put_Log_Msg(FND_MESSAGE.Get,1);
4467 END IF;
4468
4469 END IF;
4470
4471 IF (l_not_valid) THEN
4472
4473 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
4474 /* Debug */
4475 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4476 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Finance_Info';
4477 l_debug_str := 'Returning E from Validate_Finance_Info.';
4478 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4479 END IF;
4480
4481
4482 RETURN 'E';
4483
4484 END IF;
4485
4486 END IF;
4487
4488 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
4489 /* Debug */
4490 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4491 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Finance_Info';
4492 l_debug_str := 'Returning S from Validate_Finance_Info.';
4493 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4494 END IF;
4495
4496
4497 RETURN 'S'; -- Successfull validation
4498
4499 EXCEPTION
4500
4501 WHEN OTHERS THEN
4502 /* Debug */
4503 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4504 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Finance_Info';
4505 l_debug_str := 'Exception in Validate_Finance_Info. '||SQLERRM;
4506 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4507 END IF;
4508
4509
4510 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
4511 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
4512 END IF;
4513
4514 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
4515
4516 RETURN 'U';
4517
4518 END Validate_Finance_Info;
4519
4520
4521
4522 /******************************************************************
4523 Created By : Arkadi Tereshenkov
4524
4525 Date Created By : Oct 14, 2002
4526
4527 Purpose : Validate information pertaining to the
4528 dependent information of the student.
4529 (IGS_SV_DEPDNT_INFO)
4530
4531 Remarks : Return result:
4532 'S' - record found and validated
4533 'E' - validation error
4534 'U' - Unexpected error
4535 'N' - data not found
4536
4537 Change History
4538 Who When What
4539 ------------------------------------------------------------------------
4540
4541 ******************************************************************/
4542 FUNCTION Validate_Dependent_Info (
4543 p_person_rec IN t_student_rec,
4544 p_data_rec IN OUT NOCOPY g_dependent_rec_type, -- Data record
4545 p_records OUT NOCOPY NUMBER -- Number of dependents found
4546 ) RETURN VARCHAR2
4547 IS
4548
4549
4550 l_api_name CONSTANT VARCHAR(30) := 'Validate_Dependent_Info';
4551
4552 l_dep_person_rec t_student_rec;
4553 l_dep_data_rec IGS_SV_BIO_INFO%ROWTYPE ;
4554 l_counter NUMBER(10) := 0;
4555 l_rel_count NUMBER(10) := 0;
4556 l_dep_sevis_id VARCHAR2(30); --PRBHARDW
4557 -- Dependent codes
4558 -- 01 Spouse
4559 -- 02 Child
4560
4561 -- Select all dependents
4562 CURSOR c_data IS
4563 SELECT dep.relationship_id,
4564 rel.object_id depdnt_id,
4565 action_code,
4566 to_char(effective_date,'YYYY-MM-DD') effective_date ,
4567 reason_code,
4568 dep.REMARKS comments,
4569 rel.COMMENTS rel_remarks,
4570 decode (RELATIONSHIP_CODE,'PARENT_OF','02','SPOUSE_OF','01','XX' ) relationship
4571 FROM igs_pe_depd_active dep,
4572 HZ_RELATIONSHIPS rel
4573 WHERE subject_id = p_person_rec.person_id
4574 AND rel.relationship_id = dep.relationship_id
4575 AND (p_person_rec.record_status = 'C' OR dep.action_code ='A') --In the new mode report only about active dependents
4576 AND RELATIONSHIP_CODE IN ('PARENT_OF','SPOUSE_OF' )
4577 AND (dep.relationship_id, dep.last_update_date) IN
4578 ( SELECT dep1.relationship_id,
4579 MAX(dep1.last_update_date)
4580 FROM igs_pe_depd_active dep1
4581 WHERE dep1.relationship_id = rel.relationship_id
4582 GROUP BY dep1.relationship_id)
4583 AND rel.status = 'A';
4584
4585 CURSOR c_person_number(p_id NUMBER) IS
4586 SELECT person_number
4587 FROM igs_pe_person
4588 WHERE person_id = p_id;
4589
4590 CURSOR c_spouse_of_rel IS
4591 SELECT COUNT(1)
4592 FROM igs_pe_hz_rel_v hz
4593 WHERE hz.subject_id = p_person_rec.person_id AND
4594 hz.relationship_code= 'SPOUSE_OF' and
4595 sysdate BETWEEN hz.start_date AND NVL(hz.end_date, sysdate+1)
4596 AND EXISTS (SELECT 1 FROM igs_pe_depd_active pdep
4597 WHERE pdep.relationship_id = hz.relationship_id AND
4598 pdep.action_code <> 'T' AND
4599 pdep.last_update_date = (SELECT MAX(last_update_date)
4600 FROM igs_pe_depd_active
4601 WHERE relationship_id =hz.relationship_id)
4602 );
4603
4604 CURSOR c_get_sevis_user_id(c_dep_id NUMBER)
4605 IS
4606 SELECT alt.api_person_id
4607 FROM igs_pe_alt_pers_id alt
4608 WHERE
4609 alt.pe_person_id = c_dep_id AND
4610 alt.person_id_type IN (SELECT person_id_type FROM igs_pe_person_id_typ
4611 WHERE s_person_id_type = 'SEVIS_ID') AND
4612 sysdate between alt.start_dt and nvl(alt.end_dt, sysdate+1);
4613 l_rel_type_count NUMBER := 0;
4614 BEGIN
4615
4616 Put_Log_Msg(l_api_name||' starts ',0);
4617 /* Debug */
4618 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4619 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4620 l_debug_str := 'Entering Validate_Dependent_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
4621 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4622 END IF;
4623
4624
4625
4626 FOR c_data_rec IN c_data LOOP
4627 IF Get_Prev_Dep(p_person_rec.person_id, c_data_rec.depdnt_id, p_person_rec.batch_id, c_data_rec.action_code) THEN
4628 l_counter := l_counter +1;
4629 IF l_counter > 25 AND p_person_rec.batch_id = g_running_create_batch THEN
4630 IF g_parallel_batches.count > 0 THEN
4631 p_data_rec(l_counter).batch_id := g_parallel_batches(1);
4632 ELSE
4633 p_data_rec(l_counter).batch_id := igs_sv_util.open_new_batch(p_person_rec.person_id, p_person_rec.batch_id,'CONN_JOB');
4634 g_parallel_batches(1) := p_data_rec(l_counter).batch_id;
4635 END IF;
4636 ELSE
4637 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
4638 END IF;
4639 OPEN c_get_sevis_user_id(c_data_rec.depdnt_id);
4640 FETCH c_get_sevis_user_id INTO l_dep_sevis_id;
4641 CLOSE c_get_sevis_user_id;
4642
4643 p_data_rec(l_counter).person_id := p_person_rec.person_id;
4644 p_data_rec(l_counter).print_form := p_person_rec.print_form;
4645 p_data_rec(l_counter).creation_date := sysdate;
4646 p_data_rec(l_counter).created_by := g_update_by;
4647 p_data_rec(l_counter).last_updated_by := g_update_by;
4648 p_data_rec(l_counter).last_update_date := sysdate;
4649 p_data_rec(l_counter).last_update_login := g_update_login;
4650 p_data_rec(l_counter).depdnt_id := c_data_rec.depdnt_id;
4651 p_data_rec(l_counter).depdnt_action_type := c_data_rec.action_code;
4652 p_data_rec(l_counter).depdnt_sevis_id := l_dep_sevis_id; --get_person_sevis_id(c_data_rec.depdnt_id); prbhardw
4653 p_data_rec(l_counter).termination_effect_date := c_data_rec.effective_date;
4654
4655 p_data_rec(l_counter).relationship := c_data_rec.relationship;
4656 p_data_rec(l_counter).relationship_remarks := c_data_rec.rel_remarks;
4657 p_data_rec(l_counter).termination_reason := c_data_rec.reason_code ;
4658
4659 l_dep_person_rec.batch_id := p_person_rec.batch_id;
4660 l_dep_person_rec.person_id := c_data_rec.depdnt_id;
4661 l_dep_person_rec.print_form := p_person_rec.print_form;
4662 l_dep_person_rec.batch_type := p_person_rec.batch_type;
4663
4664 OPEN c_person_number (c_data_rec.depdnt_id);
4665 FETCH c_person_number INTO l_dep_person_rec.person_number ;
4666 CLOSE c_person_number;
4667
4668 l_dep_person_rec.dep_flag := 'Y';
4669
4670 -------prbhardw
4671 IF p_data_rec(l_counter).relationship = '01' AND p_person_rec.batch_type = 'I' THEN -- spouse chk is for NI only: bug 5255450
4672 OPEN c_spouse_of_rel;
4673 FETCH c_spouse_of_rel INTO l_rel_type_count;
4674 CLOSE c_spouse_of_rel;
4675 IF l_rel_type_count > 1 THEN
4676 FND_MESSAGE.SET_NAME('IGS','IGS_SV_SPOUSE_REL');
4677 FND_MESSAGE.SET_TOKEN('PERSON_NUM',p_person_rec.person_number);
4678 Put_Log_Msg(FND_MESSAGE.Get,1);
4679 RETURN 'E'; -- fix for bug 5255450
4680 END IF;
4681
4682 END IF;
4683 -------prbhardw
4684
4685 -- Call Validate_Dep_Info
4686 l_dep_person_rec.dep_status := Validate_Bio_Info (p_person_rec => l_dep_person_rec,
4687 p_data_rec => l_dep_data_rec);
4688 IF l_dep_person_rec.dep_status = 'E' THEN -- Validation error - mark person as invalid
4689
4690 Put_Log_Msg('Validation error occurs ',1);
4691 /* Debug */
4692 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4693 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4694 l_debug_str := 'Returning E from Validate_Dependent_Info.';
4695 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4696 END IF;
4697
4698 RETURN 'E';
4699
4700 ELSIF l_dep_person_rec.dep_status = 'N' THEN
4701
4702 Put_Log_Msg('Dependent not found by Validate procedure ',0);
4703 /* Debug */
4704 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4705 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4706 l_debug_str := 'IGS_SV_UNEXP_EXCPT_ERR Error in Validate_Dependent_Info.';
4707 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4708 END IF;
4709
4710 -- probably a bug
4711 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_UNEXP_EXCPT_ERR'); -- I-20 is missing! Unexpected error
4712 FND_MESSAGE.SET_TOKEN('BLOCK_ID',1);
4713 FND_MSG_PUB.Add;
4714 RAISE FND_API.G_EXC_ERROR;
4715
4716 END IF;
4717
4718 p_data_rec(l_counter).person_id := p_person_rec.person_id;
4719
4720 p_data_rec(l_counter).visa_type := l_dep_data_rec.visa_type ;
4721 p_data_rec(l_counter).last_name := l_dep_data_rec.last_name;
4722 p_data_rec(l_counter).first_name := l_dep_data_rec.first_name;
4723 p_data_rec(l_counter).middle_name := l_dep_data_rec.middle_name;
4724 p_data_rec(l_counter).suffix := l_dep_data_rec.suffix;
4725 p_data_rec(l_counter).birth_date := l_dep_data_rec.birth_date ;
4726 p_data_rec(l_counter).person_number := l_dep_person_rec.person_number ;
4727 p_data_rec(l_counter).gender := l_dep_data_rec.gender ;
4728 p_data_rec(l_counter).birth_cntry_code := l_dep_data_rec.birth_cntry_code ;
4729 p_data_rec(l_counter).citizen_cntry_code := l_dep_data_rec.citizen_cntry_code ;
4730
4731 p_data_rec(l_counter).birth_city := l_dep_data_rec.birth_city ;
4732 p_data_rec(l_counter).legal_res_cntry_code := l_dep_data_rec.legal_res_cntry_code ;
4733 p_data_rec(l_counter).remarks := l_dep_data_rec.remarks ;
4734 p_data_rec(l_counter).birth_cntry_resn_code := l_dep_data_rec.birth_cntry_resn_code;
4735
4736 IF p_person_rec.record_status = 'C' THEN
4737
4738 /* Debug */
4739 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4740 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4741 l_debug_str := 'Exiting from for loop in Validate_Dependent_Info.';
4742 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4743 END IF;
4744
4745 -- EXIT; -- Just one dependent in the update mode per batch prbhardw CP enhancement
4746
4747 END IF;
4748 END IF;
4749
4750 END LOOP;
4751
4752 IF l_counter = 0 THEN
4753
4754 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
4755 /* Debug */
4756 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4757 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4758 l_debug_str := 'Returning N from Validate_Dependent_Info.';
4759 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4760 END IF;
4761
4762 RETURN 'N';
4763
4764 END IF;
4765
4766 p_records := l_counter;
4767
4768 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
4769 /* Debug */
4770 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4771 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4772 l_debug_str := 'Returning S from Validate_Dependent_Info.';
4773 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4774 END IF;
4775
4776 RETURN 'S'; -- Successfull validation
4777
4778 EXCEPTION
4779
4780 WHEN OTHERS THEN
4781 /* Debug */
4782 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4783 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Dependent_Info';
4784 l_debug_str := 'Exception in Validate_Dependent_Info. '||SQLERRM;
4785 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4786 END IF;
4787
4788 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
4789 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
4790 END IF;
4791
4792 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
4793
4794 RETURN 'U';
4795
4796
4797 END Validate_Dependent_Info;
4798
4799
4800
4801 /******************************************************************
4802 Created By : Arkadi Tereshenkov
4803
4804 Date Created By : Oct 14, 2002
4805
4806 Purpose : Validate information pertaining to the
4807 convictions associated to student.
4808 (IGS_SV_CONVICTIONS)
4809
4810 Remarks : Return result:
4811 'S' - record found and validated
4812 'E' - validation error
4813 'U' - Unexpected error
4814 'N' - data not found
4815
4816 Change History
4817 Who When What
4818 ------------------------------------------------------------------------
4819
4820 ******************************************************************/
4821 FUNCTION Validate_Convictions_Info (
4822 p_person_rec IN t_student_rec,
4823 p_data_rec IN OUT NOCOPY IGS_SV_CONVICTIONS%ROWTYPE -- Data record
4824 ) RETURN VARCHAR2
4825 IS
4826
4827 l_api_name CONSTANT VARCHAR(30) := 'Validate_Convictions_Info';
4828
4829 -- Select only! unreported records since no data change is possbile.
4830
4831 CURSOR c_data IS
4832 SELECT felony_details_id conviction_id,
4833 disp_action_info criminal_remarks
4834 FROM igs_pe_felony_dtls
4835 WHERE person_id = p_person_rec.person_id
4836 AND convict_ind ='Y'
4837 AND felony_details_id NOT IN
4838 ( SELECT conviction_id
4839 FROM igs_sv_convictions prg,
4840 igs_sv_persons pr
4841 WHERE prg.person_id = pr.person_id
4842 AND prg.batch_id = pr.batch_id
4843 AND pr.record_status <> 'E'
4844 AND prg.person_id = p_person_rec.person_id )
4845 ORDER BY crime_date;
4846
4847 l_not_valid BOOLEAN := FALSE;
4848 BEGIN
4849 /* Debug */
4850 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4851 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Convictions_Info';
4852 l_debug_str := 'Entering Validate_Convictions_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
4853 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4854 END IF;
4855
4856 Put_Log_Msg(l_api_name||' starts ',0);
4857
4858 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
4859
4860 FOR c_data_rec IN c_data LOOP
4861
4862 p_data_rec.batch_id := p_person_rec.batch_id;
4863 p_data_rec.person_id := p_person_rec.person_id;
4864 p_data_rec.print_form := p_person_rec.print_form;
4865 p_data_rec.creation_date := sysdate;
4866 p_data_rec.created_by := g_update_by;
4867 p_data_rec.last_updated_by := g_update_by;
4868 p_data_rec.last_update_date := sysdate;
4869 p_data_rec.last_update_login := g_update_login;
4870
4871 p_data_rec.conviction_id := c_data_rec.conviction_id;
4872 p_data_rec.remarks :=SUBSTR(c_data_rec.criminal_remarks,1,500);
4873 p_data_rec.criminal_conviction :='Y' ;
4874
4875 IF p_data_rec.remarks IS NULL THEN
4876 l_not_valid := TRUE;
4877 END IF;
4878 EXIT; -- one record is enough
4879
4880 END LOOP;
4881
4882 IF p_data_rec.batch_id IS NULL THEN
4883
4884 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
4885 /* Debug */
4886 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4887 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Convictions_Info';
4888 l_debug_str := 'Returning N from Validate_Convictions_Info';
4889 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4890 END IF;
4891
4892 RETURN 'N';
4893
4894 ELSIF l_not_valid THEN
4895
4896 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_CONV_RQD_FLD_ERR'); -- Convictions block error
4897 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
4898
4899 Put_Log_Msg(FND_MESSAGE.Get,1);
4900
4901 Put_Log_Msg(l_api_name||' Validation error, return E ',0);
4902 /* Debug */
4903 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4904 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Convictions_Info';
4905 l_debug_str := 'Returning E from Validate_Convictions_Info';
4906 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4907 END IF;
4908
4909 RETURN 'E';
4910
4911 END IF;
4912
4913 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
4914 /* Debug */
4915 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4916 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Convictions_Info';
4917 l_debug_str := 'Returning S from Validate_Convictions_Info';
4918 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4919 END IF;
4920
4921 RETURN 'S'; -- Successfull validation
4922
4923 EXCEPTION
4924
4925 WHEN OTHERS THEN
4926 /* Debug */
4927 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
4928 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Convictions_Info';
4929 l_debug_str := 'Exception in Validate_Convictions_Info '||SQLERRM;
4930 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
4931 END IF;
4932
4933 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
4934 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
4935 END IF;
4936
4937 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
4938
4939 RETURN 'U';
4940
4941 END Validate_Convictions_Info;
4942
4943
4944
4945 /******************************************************************
4946 Created By : Arkadi Tereshenkov
4947
4948 Date Created By : Oct 14, 2002
4949
4950 Purpose : Validate information pertaining to the
4951 Legal information block of student.
4952 (IGS_SV_LEGAL_INFO)
4953
4954 Remarks : Return result:
4955 'S' - record found and validated
4956 'E' - validation error
4957 'U' - Unexpected error
4958 'N' - data not found
4959
4960 Change History
4961 Who When What
4962 ------------------------------------------------------------------------
4963
4964 ******************************************************************/
4965 FUNCTION Validate_Legal_Info (
4966 p_person_rec IN t_student_rec,
4967 p_data_rec IN OUT NOCOPY IGS_SV_LEGAL_INFO%ROWTYPE -- Data record
4968 ) RETURN VARCHAR2
4969 IS
4970
4971 l_api_name CONSTANT VARCHAR(30) := 'Validate_Legal_Info';
4972 l_visa_number IGS_PE_VISA.visa_number%TYPE;
4973 l_visa_issuing_post IGS_PE_VISA.visa_issuing_post%TYPE;
4974 l_visa_expiration_date IGS_PE_VISA.visa_expiry_date%TYPE;
4975 l_visa_issuing_country IGS_PE_VISA.visa_issuing_country%TYPE;
4976 l_I94_number IGS_PE_VISIT_HISTRY.cntry_entry_form_num%TYPE;
4977 l_visa_issue_date IGS_PE_VISA.visa_issue_date%TYPE;
4978 l_port_of_entry IGS_PE_VISIT_HISTRY.port_of_entry%TYPE;
4979 l_date_of_entry IGS_PE_VISIT_HISTRY.visit_start_date%TYPE;
4980 l_remarks IGS_PE_VISIT_HISTRY.remarks%TYPE;
4981 l_psprt_number IGS_PE_PASSPORT.passport_number%TYPE;
4982 l_psprt_issuing_cntry_code IGS_PE_PASSPORT.passport_cntry_code%TYPE;
4983 l_psprt_exp_date IGS_PE_PASSPORT.passport_expiry_date%TYPE;
4984 l_not_valid BOOLEAN := FALSE;
4985
4986 CURSOR c_get_visa_data IS
4987 SELECT peva.visa_number,
4988 peva.visa_issuing_post,
4989 peva.visa_expiry_date,
4990 pevv.cntry_entry_form_num,
4991 pevv.port_of_entry,
4992 pevv.visit_start_date,
4993 pevv.remarks,
4994 pspt.passport_number,
4995 pspt.passport_cntry_code,
4996 pspt.passport_expiry_date,
4997 peva.visa_issuing_country,
4998 peva.visa_issue_date
4999 FROM igs_pe_visa peva,
5000 igs_pe_visit_histry pevv,
5001 igs_pe_passport pspt
5002 WHERE peva.person_id = p_person_rec.person_id
5003 AND peva.visa_type IN ('F-1', 'F-2','M-1','M-2')
5004 AND peva.visa_id = pevv.visa_id (+)
5005 AND pspt.passport_id (+) = peva.passport_id
5006 AND peva.visa_expiry_date >= trunc(sysdate);
5007
5008 BEGIN
5009 /* Debug */
5010 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5011 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Legal_Info';
5012 l_debug_str := 'Entering Validate_Legal_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
5013 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5014 END IF;
5015
5016 Put_Log_Msg(l_api_name||' starts ',0);
5017 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
5018
5019 --
5020 -- Obtain all information on the visa that has been made available
5021 --
5022 OPEN c_get_visa_data;
5023 FETCH c_get_visa_data
5024 INTO l_visa_number,
5025 l_visa_issuing_post,
5026 l_visa_expiration_date,
5027 l_I94_number,
5028 l_port_of_entry,
5029 l_date_of_entry,
5030 l_remarks,
5031 l_psprt_number,
5032 l_psprt_issuing_cntry_code,
5033 l_psprt_exp_date,
5034 l_visa_issuing_country,
5035 l_visa_issue_date;
5036
5037 --
5038 -- Make sure that there was visa information found for the person
5039 --
5040 IF (c_get_visa_data%FOUND) THEN
5041
5042 p_data_rec.psprt_number := SUBSTR(l_psprt_number,1,25);
5043 p_data_rec.psprt_issuing_cntry_code := SUBSTR(l_psprt_issuing_cntry_code,1,3);
5044 p_data_rec.psprt_exp_date := to_char(l_psprt_exp_date,'YYYY-MM-DD');
5045 p_data_rec.visa_number := SUBSTR(l_visa_number,1,25);
5046 p_data_rec.visa_issuing_post := SUBSTR(l_visa_issuing_post,3);
5047 p_data_rec.visa_expiration_date := to_char(l_visa_expiration_date,'YYYY-MM-DD');
5048 p_data_rec.i94_number := SUBSTR(l_I94_number,1,11);
5049 p_data_rec.port_of_entry := SUBSTR(l_port_of_entry,3);
5050 p_data_rec.visa_issuing_cntry_code := l_visa_issuing_country;
5051 p_data_rec.date_of_entry := to_char(l_date_of_entry,'YYYY-MM-DD');
5052 p_data_rec.visa_issue_date := l_visa_issue_date;
5053 p_data_rec.remarks := l_remarks;
5054 p_data_rec.batch_id := p_person_rec.batch_id;
5055 p_data_rec.person_id := p_person_rec.person_id;
5056 p_data_rec.print_form := p_person_rec.print_form;
5057 p_data_rec.creation_date := sysdate;
5058 p_data_rec.created_by := g_update_by;
5059 p_data_rec.last_updated_by := g_update_by;
5060 p_data_rec.last_update_date := sysdate;
5061 p_data_rec.last_update_login := g_update_login;
5062
5063 -- change for country code inconsistency bug 3738488
5064 --p_data_rec.psprt_issuing_cntry_code := convert_country_code(p_data_rec.psprt_issuing_cntry_code);
5065 p_data_rec.visa_issuing_cntry_code := convert_country_code(p_data_rec.visa_issuing_cntry_code);
5066
5067 END IF;
5068
5069 CLOSE c_get_visa_data;
5070
5071 IF (p_data_rec.batch_id IS NULL) THEN
5072
5073 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
5074 /* Debug */
5075 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5076 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Legal_Info';
5077 l_debug_str := 'Returning N from Validate_Legal_Info.';
5078 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5079 END IF;
5080 RETURN 'N';
5081
5082 END IF;
5083
5084 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
5085 /* Debug */
5086 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5087 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Legal_Info';
5088 l_debug_str := 'Returning S from Validate_Legal_Info.';
5089 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5090 END IF;
5091 RETURN 'S'; -- Successfull validation
5092
5093 EXCEPTION
5094
5095 WHEN OTHERS THEN
5096 /* Debug */
5097 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5098 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Legal_Info';
5099 l_debug_str := 'Exception in Validate_Legal_Info. '||SQLERRM;
5100 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5101 END IF;
5102
5103 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
5104 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
5105 END IF;
5106
5107 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
5108
5109 RETURN 'U';
5110
5111 END Validate_Legal_Info;
5112
5113 FUNCTION Validate_ev_Legal_Info (
5114 p_person_rec IN t_student_rec,
5115 p_data_rec IN OUT NOCOPY IGS_SV_LEGAL_INFO%ROWTYPE -- Data record
5116 ) RETURN VARCHAR2
5117 IS
5118
5119 l_api_name CONSTANT VARCHAR(30) := 'Validate_ev_Legal_Info';
5120 l_visa_number IGS_PE_VISA.visa_number%TYPE;
5121 l_visa_issuing_post IGS_PE_VISA.visa_issuing_post%TYPE;
5122 l_visa_expiration_date IGS_PE_VISA.visa_expiry_date%TYPE;
5123 l_visa_issue_date IGS_PE_VISA.visa_issue_date%TYPE;
5124 l_visa_issuing_country IGS_PE_VISA.visa_issuing_country%TYPE;
5125 l_I94_number IGS_PE_VISIT_HISTRY.cntry_entry_form_num%TYPE;
5126 l_port_of_entry IGS_PE_VISIT_HISTRY.port_of_entry%TYPE;
5127 l_date_of_entry IGS_PE_VISIT_HISTRY.visit_start_date%TYPE;
5128 l_remarks IGS_PE_VISIT_HISTRY.remarks%TYPE;
5129 l_psprt_number IGS_PE_PASSPORT.passport_number%TYPE;
5130 l_psprt_issuing_cntry_code IGS_PE_PASSPORT.passport_cntry_code%TYPE;
5131 l_psprt_exp_date IGS_PE_PASSPORT.passport_expiry_date%TYPE;
5132 l_not_valid BOOLEAN := FALSE;
5133
5134 --to_char(peva.visa_issue_date,'YYYY-MM-DD') visa_issue_date
5135
5136 CURSOR c_get_visa_data IS
5137 SELECT peva.visa_number,
5138 peva.visa_issuing_post,
5139 peva.visa_expiry_date,
5140 pevv.cntry_entry_form_num,
5141 pevv.port_of_entry,
5142 pevv.visit_start_date,
5143 pevv.remarks,
5144 pspt.passport_number,
5145 pspt.passport_cntry_code,
5146 pspt.passport_expiry_date,
5147 peva.visa_issuing_country,
5148 peva.visa_issue_date
5149 FROM igs_pe_visa peva,
5150 igs_pe_visit_histry pevv,
5151 igs_pe_passport pspt
5152 WHERE peva.person_id = p_person_rec.person_id
5153 AND peva.visa_type IN ('J-1', 'J-2')
5154 AND peva.visa_id = pevv.visa_id (+)
5155 AND pspt.passport_id (+) = peva.passport_id
5156 AND peva.visa_expiry_date >= trunc(sysdate);
5157
5158 BEGIN
5159 /* Debug */
5160 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5161 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_ev_Legal_Info';
5162 l_debug_str := 'Entering Validate_ev_Legal_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
5163 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5164 END IF;
5165
5166 Put_Log_Msg(l_api_name||' starts ',0);
5167 p_data_rec.batch_id := NULL; -- This will tell us if there's been any records found
5168
5169 --
5170 -- Obtain all information on the visa that has been made available
5171 --
5172 OPEN c_get_visa_data;
5173 FETCH c_get_visa_data
5174 INTO l_visa_number,
5175 l_visa_issuing_post,
5176 l_visa_expiration_date,
5177 l_I94_number,
5178 l_port_of_entry,
5179 l_date_of_entry,
5180 l_remarks,
5181 l_psprt_number,
5182 l_psprt_issuing_cntry_code,
5183 l_psprt_exp_date,
5184 l_visa_issuing_country,
5185 l_visa_issue_date;
5186
5187 --
5188 -- Make sure that there was visa information found for the person
5189 --
5190 IF (c_get_visa_data%FOUND) THEN
5191
5192 p_data_rec.psprt_number := SUBSTR(l_psprt_number,1,25);
5193 p_data_rec.psprt_issuing_cntry_code := SUBSTR(l_psprt_issuing_cntry_code,1,3);
5194 p_data_rec.psprt_exp_date := to_char(l_psprt_exp_date,'YYYY-MM-DD');
5195 p_data_rec.visa_number := SUBSTR(l_visa_number,1,25);
5196 p_data_rec.visa_issuing_post := SUBSTR(l_visa_issuing_post,3);
5197 p_data_rec.visa_expiration_date := to_char(l_visa_expiration_date,'YYYY-MM-DD');
5198 p_data_rec.i94_number := SUBSTR(l_I94_number,1,11);
5199 p_data_rec.port_of_entry := SUBSTR(l_port_of_entry,3);
5200 p_data_rec.visa_issuing_cntry_code := l_visa_issuing_country;
5201 p_data_rec.date_of_entry := to_char(l_date_of_entry,'YYYY-MM-DD');
5202 p_data_rec.visa_issue_date := l_visa_issue_date;
5203 p_data_rec.remarks := l_remarks;
5204 p_data_rec.batch_id := p_person_rec.batch_id;
5205 p_data_rec.person_id := p_person_rec.person_id;
5206 p_data_rec.print_form := p_person_rec.print_form;
5207 p_data_rec.creation_date := sysdate;
5208 p_data_rec.created_by := g_update_by;
5209 p_data_rec.last_updated_by := g_update_by;
5210 p_data_rec.last_update_date := sysdate;
5211 p_data_rec.last_update_login := g_update_login;
5212
5213 END IF;
5214
5215 CLOSE c_get_visa_data;
5216
5217 IF (p_data_rec.batch_id IS NULL) THEN
5218
5219 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
5220 /* Debug */
5221 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5222 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_ev_Legal_Info';
5223 l_debug_str := 'Returning N from Validate_ev_Legal_Info.';
5224 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5225 END IF;
5226 RETURN 'N';
5227
5228 END IF;
5229
5230 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
5231 /* Debug */
5232 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5233 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_ev_Legal_Info';
5234 l_debug_str := 'Returning S from Validate_ev_Legal_Info.';
5235 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5236 END IF;
5237 RETURN 'S'; -- Successfull validation
5238
5239 EXCEPTION
5240
5241 WHEN OTHERS THEN
5242 /* Debug */
5243 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5244 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_ev_Legal_Info';
5245 l_debug_str := 'Exception in Validate_ev_Legal_Info. '||SQLERRM;
5246 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5247 END IF;
5248
5249 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
5250 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
5251 END IF;
5252
5253 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
5254
5255 RETURN 'U';
5256
5257 END Validate_ev_Legal_Info;
5258
5259 FUNCTION Get_Empl_Info (
5260 p_data_rec IN OUT NOCOPY IGS_SV_EMPL_INFO%ROWTYPE -- Data record
5261 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
5262 IS
5263
5264 l_api_name CONSTANT VARCHAR2(25) := 'Get_Empl_Info';
5265
5266 CURSOR c_data_rec IS
5267 SELECT nonimg_empl_id,
5268 empl_rec_type,
5269 empl_type,
5270 recommend_empl,
5271 rescind_empl,
5272 remarks,
5273 empl_start_date ,
5274 empl_end_date,
5275 course_relevance,
5276 empl_time,
5277 empl_name,
5278 action_code
5279 FROM igs_sv_empl_info
5280 WHERE
5281 person_id = p_data_rec.person_id and
5282 nonimg_empl_id = p_data_rec.nonimg_empl_id and
5283 batch_id IN
5284 ( SELECT max(emp.batch_id)
5285 FROM igs_sv_empl_info emp,
5286 igs_sv_persons pr
5287 WHERE emp.person_id = pr.person_id
5288 AND emp.batch_id = pr.batch_id
5289 AND pr.record_status <> 'E'
5290 AND emp.person_id = p_data_rec.person_id
5291 AND emp.nonimg_empl_id = p_data_rec.nonimg_empl_id
5292 )
5293 ORDER BY nonimg_empl_id;
5294
5295 BEGIN
5296 /* Debug */
5297 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5298 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Empl_Info';
5299 l_debug_str := 'Entering Get_Empl_Info. p_data_rec.person_id is '||p_data_rec.person_id;
5300 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5301 END IF;
5302
5303 Put_Log_Msg(l_api_name||' begins ',0);
5304
5305 OPEN c_data_rec;
5306 FETCH c_data_rec
5307 INTO p_data_rec.nonimg_empl_id ,
5308 p_data_rec.empl_rec_type ,
5309 p_data_rec.empl_type ,
5310 p_data_rec.recommend_empl ,
5311 p_data_rec.rescind_empl ,
5312 p_data_rec.remarks ,
5313 p_data_rec.empl_start_date ,
5314 p_data_rec.empl_end_date ,
5315 p_data_rec.course_relevance,
5316 p_data_rec.empl_time ,
5317 p_data_rec.empl_name ,
5318 p_data_rec.action_code ;
5319
5320 IF c_data_rec%NOTFOUND THEN
5321
5322 Put_Log_Msg('Record not found ',0);
5323 CLOSE c_data_rec;
5324 /* Debug */
5325 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5326 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Empl_Info';
5327 l_debug_str := 'Returning N from Get_Empl_Info';
5328 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5329 END IF;
5330 RETURN 'N';
5331
5332 END IF;
5333
5334 CLOSE c_data_rec;
5335
5336 Put_Log_Msg(l_api_name||' ends S ',0);
5337 /* Debug */
5338 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5339 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Empl_Info';
5340 l_debug_str := 'Returning S from Get_Empl_Info';
5341 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5342 END IF;
5343 RETURN 'S';
5344
5345 EXCEPTION
5346
5347 WHEN FND_API.G_EXC_ERROR THEN
5348 /* Debug */
5349 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5350 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Empl_Info';
5351 l_debug_str := 'Exception in Get_Empl_Info '||SQLERRM;
5352 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5353 END IF;
5354
5355 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
5356 RETURN 'U';
5357
5358 WHEN OTHERS THEN
5359 /* Debug */
5360 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5361 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Empl_Info';
5362 l_debug_str := 'Exception in Get_Empl_Info '||SQLERRM;
5363 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5364 END IF;
5365 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
5366 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
5367 END IF;
5368
5369 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
5370 RETURN 'U';
5371
5372 END Get_Empl_Info;
5373
5374 FUNCTION Check_emp_duration(stDate IN VARCHAR2 , endDt IN VARCHAR2 , p_visa_type IN VARCHAR2) RETURN BOOLEAN IS
5375 returnVal boolean := false;
5376 startDate Date;
5377 endDate Date;
5378 daysBetween number := 0;
5379
5380 BEGIN
5381 startDate := TO_DATE(stDate,'YYYY-MM-DD');
5382 endDate := TO_DATE(endDt,'YYYY-MM-DD');
5383 daysBetween := endDate-startDate;
5384
5385 IF p_visa_type= 'F-1' AND daysBetween > 365 THEN
5386 returnVal := true;
5387 ELSIF p_visa_type= 'M-1' AND daysBetween > 183 THEN
5388 returnVal := true;
5389 END IF;
5390 RETURN returnVal;
5391 END Check_emp_duration;
5392
5393 -- only for validation of the input record
5394 FUNCTION validate_employment_Info(
5395 p_person_rec IN t_student_rec,
5396 p_data_rec IN OUT NOCOPY IGS_SV_EMPL_INFO%ROWTYPE --Data record
5397 ) RETURN BOOLEAN
5398 IS
5399 l_not_valid BOOLEAN := FALSE;
5400 l_visa_type VARCHAR2(5);
5401 l_api_name CONSTANT VARCHAR2(25) := 'validate_employment_Info';
5402 l_months NUMBER(2);
5403 CURSOR c_get_visa_type
5404 IS
5405 SELECT visa_type
5406 FROM igs_pe_nonimg_form
5407 WHERE person_id = p_person_rec.person_id
5408 AND nonimg_form_id = p_person_rec.form_id;
5409
5410 BEGIN
5411 /* Debug */
5412 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5413 l_label := 'igs.plsql.igs_sv_batch_process_pkg.validate_employment_Info';
5414 l_debug_str := 'Entering validate_employment_Info. p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
5415 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5416 END IF;
5417
5418 OPEN c_get_visa_type;
5419 FETCH c_get_visa_type INTO l_visa_type;
5420 CLOSE c_get_visa_type;
5421
5422 IF l_visa_type ='F-1' THEN
5423 l_months := 12;
5424 ELSE
5425 l_months := 6;
5426 END IF;
5427
5428
5429 -- Validate all the data
5430 IF p_data_rec.empl_rec_type = 'F'
5431 AND ( ( p_data_rec.recommend_empl IS NULL
5432 AND p_data_rec.rescind_empl IS NULL
5433 )
5434 OR p_data_rec.remarks IS NULL) THEN
5435
5436 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EMPL_F_RQD_FLD_ERR'); -- Employment block error
5437 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
5438
5439 Put_Log_Msg(FND_MESSAGE.Get,1);
5440 l_not_valid := TRUE;
5441
5442 ELSIF p_data_rec.empl_rec_type = 'O'
5443 AND ( p_data_rec.empl_time IS NULL
5444 OR p_data_rec.empl_start_date IS NULL
5445 OR p_data_rec.empl_end_date IS NULL
5446 OR p_data_rec.course_relevance IS NULL) THEN
5447
5448 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EMPL_O_RQD_FLD_ERR'); -- Employment block error
5449 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
5450
5451 Put_Log_Msg(FND_MESSAGE.Get,1);
5452 l_not_valid := TRUE;
5453
5454 ELSIF p_data_rec.empl_rec_type = 'C'
5455 AND ( p_data_rec.empl_time IS NULL
5456 OR p_data_rec.empl_start_date IS NULL
5457 OR p_data_rec.empl_end_date IS NULL
5458 OR p_data_rec.course_relevance IS NULL
5459 OR p_data_rec.empl_name IS NULL
5460 OR p_data_rec.empl_addr_line1 IS NULL
5461 OR p_data_rec.city IS NULL
5462 OR p_data_rec.state IS NULL
5463 OR p_data_rec.postal_code IS NULL
5464 ) THEN
5465
5466 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_EMPL_C_RQD_FLD_ERR'); -- Employment block error
5467 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number );
5468
5469 Put_Log_Msg(FND_MESSAGE.Get,1);
5470 l_not_valid := TRUE;
5471 ELSIF p_data_rec.empl_rec_type = 'O' THEN
5472 IF Check_emp_duration(p_data_rec.empl_start_date, p_data_rec.empl_end_date, l_visa_type) THEN
5473 FND_MESSAGE.SET_NAME('IGS','IGS_SV_EMP_INV_PRD');
5474 FND_MESSAGE.SET_TOKEN('MONTHS',l_months);
5475 FND_MESSAGE.SET_TOKEN('VISA_TYPE',l_visa_type);
5476 Put_Log_Msg(FND_MESSAGE.Get,1);
5477 l_not_valid := TRUE;
5478 END IF;
5479 END IF;
5480
5481 IF l_not_valid THEN
5482
5483 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
5484
5485 -- RETURN 'E';
5486 ELSE
5487 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
5488
5489 -- RETURN 'S'; -- Successfull validation
5490
5491 END IF;
5492 /* Debug */
5493 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5494 l_label := 'igs.plsql.igs_sv_batch_process_pkg.validate_employment_Info';
5495 l_debug_str := 'Returning from validate_employment_Info';
5496 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5497 END IF;
5498
5499 RETURN l_not_valid;
5500
5501
5502 END validate_employment_Info;
5503
5504
5505 --Overload validate_empl_info method to accept table type argument
5506
5507 FUNCTION Validate_Empl_Info (
5508 p_person_rec IN t_student_rec,
5509 p_data_rec IN OUT NOCOPY g_empl_rec_type, -- Data record
5510 p_records OUT NOCOPY NUMBER -- Number of dependents found
5511 ) RETURN VARCHAR2
5512 IS
5513
5514 -- Select the oldest employment record haven't been reported to INS yet.
5515
5516
5517 -- Select only! unreported records since no data change is possbile.
5518
5519 CURSOR c_data(cp_person_id hz_parties.party_id%TYPE) IS
5520 SELECT nonimg_empl_id,
5521 frm.nonimg_form_id,
5522 decode ( empl_type,'01','O','02','C','F') empl_rec_type,
5523 empl_type,
5524 recommend_empl,
5525 rescind_empl,
5526 em.remarks,
5527 to_char(empl_start_date, 'YYYY-MM-DD') empl_start_date,
5528 to_char(empl_end_date, 'YYYY-MM-DD') empl_end_date,
5529 course_relevance,
5530 empl_time,
5531 empl_party_id,
5532 action_code,
5533 NVL(em.print_flag, 'N') print_flag
5534 FROM igs_pe_nonimg_empl em,
5535 igs_pe_nonimg_form frm
5536 WHERE frm.person_id = cp_person_id
5537 AND frm.nonimg_form_id = em.nonimg_form_id
5538 ORDER BY nonimg_empl_id;
5539
5540
5541 CURSOR c_empl_name (l_party_id NUMBER) IS
5542 SELECT party_name
5543 FROM hz_parties
5544 WHERE party_id = l_party_id;
5545
5546 CURSOR c_empl_addr (l_party_id NUMBER) IS
5547 SELECT SUBSTR(address1||address2||address3||address4,1,60) addr_line1,
5548 SUBSTR(address1||address2||address3||address4,1,60) addr_line2,
5549 SUBSTR(city,1,60) city ,
5550 SUBSTR(state,1,2) state ,
5551 postal_code
5552 FROM hz_locations lc, hz_party_sites st
5553 WHERE party_id = l_party_id
5554 AND lc.location_id = st.location_id
5555 AND identifying_address_flag ='Y';
5556
5557 l_postal_code hz_locations.postal_code%TYPE;
5558 l_not_valid BOOLEAN := FALSE;
5559 l_api_name CONSTANT VARCHAR(30) := 'Validate_Empl_Info';
5560 l_counter NUMBER(10):= 0;
5561
5562 BEGIN
5563
5564 /* Debug */
5565 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5566 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Empl_Info';
5567 l_debug_str := 'Entering validate_empl_Info p_person_rec.batch_id is '||p_person_rec.batch_id ||' and person_id is '||p_person_rec.person_id;
5568 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5569 END IF;
5570
5571 Put_Log_Msg(l_api_name||' starts ',0);
5572
5573 FOR c_data_rec IN c_data(p_person_rec.person_id) LOOP
5574
5575 l_counter := l_counter +1;
5576
5577 p_data_rec(l_counter).batch_id := p_person_rec.batch_id;
5578 p_data_rec(l_counter).person_id := p_person_rec.person_id;
5579 p_data_rec(l_counter).print_form := c_data_rec.print_flag; -- p_person_rec.print_form; PRBHARDW
5580 p_data_rec(l_counter).creation_date := sysdate;
5581 p_data_rec(l_counter).created_by := g_update_by;
5582 p_data_rec(l_counter).last_updated_by := g_update_by;
5583 p_data_rec(l_counter).last_update_date := sysdate;
5584 p_data_rec(l_counter).last_update_login := g_update_login;
5585
5586 p_data_rec(l_counter).empl_rec_type := c_data_rec.empl_rec_type; -- C(PT) O(PT) F(Off campus)
5587 p_data_rec(l_counter).empl_type := c_data_rec.empl_type;
5588 p_data_rec(l_counter).nonimg_empl_id:= c_data_rec.nonimg_empl_id;
5589 p_data_rec(l_counter).recommend_empl := c_data_rec.recommend_empl ;
5590 p_data_rec(l_counter).rescind_empl := c_data_rec.rescind_empl;
5591 p_data_rec(l_counter).remarks := c_data_rec.remarks;
5592 p_data_rec(l_counter).empl_start_date := c_data_rec.empl_start_date;
5593 p_data_rec(l_counter).empl_end_date := c_data_rec.empl_end_date;
5594 p_data_rec(l_counter).empl_time := c_data_rec.empl_time;
5595 p_data_rec(l_counter).course_relevance := c_data_rec.course_relevance;
5596 p_data_rec(l_counter).action_code := c_data_rec.action_code;
5597
5598 /* Debug */
5599 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5600 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Empl_Info';
5601 l_debug_str := 'Remarks: '||p_data_rec(l_counter).remarks||' Empl Type: '||p_data_rec(l_counter).empl_rec_type;
5602 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5603 END IF;
5604
5605 IF p_data_rec(l_counter).empl_rec_type <> 'F' THEN
5606 -- Get party id and address info
5607 OPEN c_empl_name (c_data_rec.empl_party_id);
5608 FETCH c_empl_name INTO p_data_rec(l_counter).empl_name;
5609 CLOSE c_empl_name;
5610
5611 OPEN c_empl_addr (c_data_rec.empl_party_id);
5612 FETCH c_empl_addr
5613 INTO p_data_rec(l_counter).empl_addr_line1,
5614 p_data_rec(l_counter).empl_addr_line2,
5615 p_data_rec(l_counter).city,
5616 p_data_rec(l_counter).state,
5617 l_postal_code;
5618
5619 p_data_rec(l_counter).postal_code := substr(l_postal_code,1,5);
5620 p_data_rec(l_counter).postal_routing_code := substr(l_postal_code,7,4);
5621 CLOSE c_empl_addr;
5622 END IF;
5623
5624 l_not_valid := validate_employment_Info(p_person_rec => p_person_rec,
5625 p_data_rec => p_data_rec(l_counter));
5626
5627 IF l_not_valid THEN
5628 Put_Log_Msg(l_api_name||' Validation error, return E ',1);
5629 /* Debug */
5630 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5631 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Empl_Info';
5632 l_debug_str := 'Returning E from validate_empl_Info.';
5633 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5634 END IF;
5635 RETURN 'E';
5636 END IF;
5637 END LOOP;
5638
5639 p_records := l_counter;
5640 IF l_counter = 0 THEN
5641 Put_Log_Msg(l_api_name||' Successfully completed, no rows found returns N ',0);
5642 /* Debug */
5643 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5644 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Empl_Info';
5645 l_debug_str := 'Returning N from validate_empl_Info.';
5646 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5647 END IF;
5648 RETURN 'N';
5649 END IF;
5650
5651 -- Validate all the data
5652
5653 Put_Log_Msg(l_api_name||' Successfully completed, returns S',0);
5654 /* Debug */
5655 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5656 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Empl_Info';
5657 l_debug_str := 'Returning S from validate_empl_Info.';
5658 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5659 END IF;
5660 RETURN 'S'; -- Successfull validation
5661 EXCEPTION
5662
5663 WHEN OTHERS THEN
5664 /* Debug */
5665 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5666 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Validate_Empl_Info';
5667 l_debug_str := 'Exception in validate_empl_Info. '||SQLERRM;
5668 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5669 END IF;
5670
5671 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
5672 FND_MSg_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
5673 END IF;
5674
5675 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
5676 RETURN 'U';
5677
5678 END Validate_Empl_Info;
5679 /******************************************************************
5680 Created By : Arkadi Tereshenkov
5681
5682 Date Created By : Oct 14, 2002
5683
5684 Purpose : Get the person information on the student.
5685 (IGS_SV_PERSONS).
5686
5687 Remarks :
5688
5689 Change History
5690 Who When What
5691 ------------------------------------------------------------------------
5692
5693 ******************************************************************/
5694 FUNCTION Get_Issue_Info (
5695 p_data_rec IN OUT NOCOPY IGS_SV_PERSONS%ROWTYPE -- Data record
5696 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
5697 IS
5698
5699 l_api_name CONSTANT VARCHAR2(25) := 'Get_Issue_Info';
5700
5701 CURSOR c_data_rec IS
5702 SELECT cr.batch_id ,
5703 cr.person_id ,
5704 cr.record_number ,
5705 cr.form_id ,
5706 decode(cr.print_form,'Y','1','0') print_form,
5707 cr.record_status ,
5708 cr.person_number ,
5709 cr.sevis_user_id ,
5710 cr.issuing_reason ,
5711 cr.curr_session_end_date ,
5712 cr.next_session_start_date,
5713 cr.other_reason ,
5714 cr.transfer_from_school ,
5715 cr.ev_create_reason ,
5716 cr.ev_form_number ,
5717 cr.no_show_flag ,
5718 cr.last_session_flag
5719 FROM igs_sv_persons cr
5720 WHERE cr.person_id = p_data_rec.person_id
5721 AND cr.batch_id IN
5722 ( SELECT max(mx.batch_id)
5723 FROM igs_sv_persons mx
5724 WHERE mx.person_id = p_data_rec.person_id
5725 AND mx.record_status <> 'E'
5726 );
5727
5728 BEGIN
5729 /* Debug */
5730 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5731 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Issue_Info';
5732 l_debug_str := 'Entering Get_Issue_Info. p_data_rec.person_id is '||p_data_rec.person_id;
5733 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5734 END IF;
5735
5736 Put_Log_Msg(l_api_name||' begins ',0);
5737
5738 OPEN c_data_rec;
5739 FETCH c_data_rec
5740 INTO p_data_rec.batch_id ,
5741 p_data_rec.person_id ,
5742 p_data_rec.record_number ,
5743 p_data_rec.form_id ,
5744 p_data_rec.print_form ,
5745 p_data_rec.record_status ,
5746 p_data_rec.person_number ,
5747 p_data_rec.sevis_user_id ,
5748 p_data_rec.issuing_reason ,
5749 p_data_rec.curr_session_end_date ,
5750 p_data_rec.next_session_start_date,
5751 p_data_rec.other_reason ,
5752 p_data_rec.transfer_from_school ,
5753 p_data_rec.ev_create_reason ,
5754 p_data_rec.ev_form_number ,
5755 p_data_rec.no_show_flag ,
5756 p_data_rec.last_session_flag;
5757
5758 IF c_data_rec%NOTFOUND THEN
5759
5760 Put_Log_Msg('Record not found ',0);
5761 CLOSE c_data_rec;
5762 /* Debug */
5763 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5764 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Issue_Info';
5765 l_debug_str := 'Returning N from Get_Issue_Info.';
5766 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5767 END IF;
5768 RETURN 'N';
5769
5770 END IF;
5771
5772 CLOSE c_data_rec;
5773
5774 Put_Log_Msg(l_api_name||' ends S ',0);
5775 /* Debug */
5776 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5777 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Issue_Info';
5778 l_debug_str := 'Returning S from Get_Issue_Info.';
5779 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5780 END IF;
5781 RETURN 'S';
5782
5783 EXCEPTION
5784
5785 WHEN FND_API.G_EXC_ERROR THEN
5786
5787 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
5788 /* Debug */
5789 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5790 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Issue_Info';
5791 l_debug_str := 'FND_API.G_EXC_ERROR in Get_Issue_Info. '||SQLERRM;
5792 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5793 END IF;
5794
5795 RETURN 'U';
5796
5797 WHEN OTHERS THEN
5798
5799 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
5800 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
5801 END IF;
5802 /* Debug */
5803 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5804 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Issue_Info';
5805 l_debug_str := 'Exception in Get_Issue_Info. '||SQLERRM;
5806 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5807 END IF;
5808
5809 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
5810
5811 RETURN 'U';
5812
5813 END Get_Issue_Info;
5814
5815
5816
5817 /******************************************************************
5818 Created By : Arkadi Tereshenkov
5819
5820 Date Created By : Oct 14, 2002
5821
5822 Purpose : Get BIO Information for the student.
5823 (IGS_SV_BIO_INFO).
5824
5825 Remarks :
5826
5827 Change History
5828 Who When What
5829 ------------------------------------------------------------------------
5830
5831 ******************************************************************/
5832 FUNCTION Get_Bio_Info (
5833 p_data_rec IN OUT NOCOPY IGS_SV_BIO_INFO%ROWTYPE -- Data record
5834 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
5835 IS
5836
5837 l_api_name CONSTANT VARCHAR2(25) := 'Get_Bio_Info';
5838
5839 CURSOR c_data_rec IS
5840 SELECT birth_date ,
5841 birth_cntry_code ,
5842 citizen_cntry_code ,
5843 last_name ,
5844 middle_name ,
5845 first_name ,
5846 suffix ,
5847 gender ,
5848 legal_res_cntry_code ,
5849 position_code ,
5850 commuter ,
5851 remarks ,
5852 birth_cntry_resn_code ,
5853 birth_city
5854 FROM igs_sv_bio_info cr
5855 WHERE cr.person_id = p_data_rec.person_id
5856 AND cr.batch_id IN
5857 ( SELECT max(prs.batch_id)
5858 FROM igs_sv_bio_info prs,
5859 igs_sv_persons pr
5860 WHERE prs.person_id = pr.person_id
5861 AND prs.batch_id = pr.batch_id
5862 AND pr.record_status <> 'E'
5863 AND prs.person_id = p_data_rec.person_id
5864 );
5865
5866 BEGIN
5867 /* Debug */
5868 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5869 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Bio_Info';
5870 l_debug_str := 'Entering Get_Bio_Info. p_data_rec.person_id is '||p_data_rec.person_id;
5871 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5872 END IF;
5873
5874 Put_Log_Msg(l_api_name||' begins ',0);
5875
5876 OPEN c_data_rec;
5877 FETCH c_data_rec
5878 INTO p_data_rec.birth_date ,
5879 p_data_rec.birth_cntry_code ,
5880 p_data_rec.citizen_cntry_code ,
5881 p_data_rec.last_name ,
5882 p_data_rec.middle_name ,
5883 p_data_rec.first_name ,
5884 p_data_rec.suffix ,
5885 p_data_rec.gender ,
5886 p_data_rec.legal_res_cntry_code ,
5887 p_data_rec.position_code ,
5888 p_data_rec.commuter ,
5889 p_data_rec.remarks ,
5890 p_data_rec.birth_cntry_resn_code ,
5891 p_data_rec.birth_city;
5892
5893 IF c_data_rec%NOTFOUND THEN
5894
5895 Put_Log_Msg('Record not found ',0);
5896 CLOSE c_data_rec;
5897 /* Debug */
5898 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5899 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Bio_Info';
5900 l_debug_str := 'Returning N from Get_Bio_Info.';
5901 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5902 END IF;
5903 RETURN 'N';
5904
5905 END IF;
5906
5907 CLOSE c_data_rec;
5908
5909 Put_Log_Msg(l_api_name||' ends S ',0);
5910 /* Debug */
5911 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5912 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Bio_Info';
5913 l_debug_str := 'Returning S from Get_Bio_Info.';
5914 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5915 END IF;
5916
5917 RETURN 'S';
5918
5919 EXCEPTION
5920
5921 WHEN FND_API.G_EXC_ERROR THEN
5922 /* Debug */
5923 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5924 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Bio_Info';
5925 l_debug_str := 'FND_API.G_EXC_ERROR in Get_Bio_Info. '||SQLERRM;
5926 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5927 END IF;
5928
5929 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
5930
5931 RETURN 'U';
5932
5933 WHEN OTHERS THEN
5934
5935 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
5936 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
5937 END IF;
5938 /* Debug */
5939 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5940 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Bio_Info';
5941 l_debug_str := 'Exception in Get_Bio_Info. '||SQLERRM;
5942 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5943 END IF;
5944 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
5945
5946 RETURN 'U';
5947
5948 END Get_Bio_Info;
5949
5950
5951 /******************************************************************
5952 Created By : Arkadi Tereshenkov
5953
5954 Date Created By : Oct 14, 2002
5955
5956 Purpose : Get other information on the student
5957 (IGS_SV_OTH_INFO)
5958
5959 Remarks :
5960
5961 Change History
5962 Who When What
5963 ------------------------------------------------------------------------
5964
5965 ******************************************************************/
5966 FUNCTION Get_Other_Info (
5967 p_data_rec IN OUT NOCOPY IGS_SV_OTH_INFO%ROWTYPE -- Data record
5968 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
5969 IS
5970
5971 l_api_name CONSTANT VARCHAR2(25) := 'Get_Other_Info';
5972
5973 CURSOR c_data_rec IS
5974 SELECT drivers_license ,
5975 drivers_license_state ,
5976 ssn ,
5977 tax_id
5978 FROM igs_sv_oth_info cr
5979 WHERE cr.person_id = p_data_rec.person_id
5980 AND cr.batch_id IN
5981 ( SELECT max(prs.batch_id)
5982 FROM igs_sv_oth_info prs,
5983 igs_sv_persons pr
5984 WHERE prs.person_id = pr.person_id
5985 AND prs.batch_id = pr.batch_id
5986 AND pr.record_status <> 'E'
5987 AND prs.person_id = p_data_rec.person_id
5988 );
5989
5990 BEGIN
5991 /* Debug */
5992 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
5993 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Other_Info';
5994 l_debug_str := 'Entering Get_Other_Info. p_data_rec.person_id is '||p_data_rec.person_id;
5995 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
5996 END IF;
5997
5998 Put_Log_Msg(l_api_name||' begins ',0);
5999
6000 OPEN c_data_rec;
6001 FETCH c_data_rec
6002 INTO p_data_rec.drivers_license ,
6003 p_data_rec.drivers_license_state ,
6004 p_data_rec.ssn ,
6005 p_data_rec.tax_id ;
6006
6007 IF c_data_rec%NOTFOUND THEN
6008
6009 Put_Log_Msg('Record not found ',0);
6010 CLOSE c_data_rec;
6011 /* Debug */
6012 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6013 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Other_Info';
6014 l_debug_str := 'Returning N from Get_Other_Info.';
6015 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6016 END IF;
6017
6018 RETURN 'N';
6019
6020 END IF;
6021
6022 CLOSE c_data_rec;
6023
6024 Put_Log_Msg(l_api_name||' ends S ',0);
6025 /* Debug */
6026 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6027 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Other_Info';
6028 l_debug_str := 'Returning S from Get_Other_Info.';
6029 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6030 END IF;
6031 RETURN 'S';
6032
6033 EXCEPTION
6034
6035 WHEN FND_API.G_EXC_ERROR THEN
6036
6037 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
6038 /* Debug */
6039 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6040 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Other_Info';
6041 l_debug_str := 'FND_API.G_EXC_ERROR in Get_Other_Info-- Returning U. '||SQLERRM;
6042 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6043 END IF;
6044 RETURN 'U';
6045
6046 WHEN OTHERS THEN
6047
6048 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6049 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6050 END IF;
6051
6052 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6053 /* Debug */
6054 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6055 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Other_Info';
6056 l_debug_str := 'Exception in Get_Other_Info-- Returning U. '||SQLERRM;
6057 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6058 END IF;
6059 RETURN 'U';
6060
6061 RETURN 'U';
6062
6063 END Get_Other_Info;
6064
6065
6066
6067 /******************************************************************
6068 Created By : Arkadi Tereshenkov
6069
6070 Date Created By : Oct 14, 2002
6071
6072 Purpose : Get Site of activity information on the student
6073 (IGS_SV_ADDRESSES).
6074
6075 Remarks :
6076
6077 Change History
6078 Who When What
6079 ------------------------------------------------------------------------
6080
6081 ******************************************************************/
6082 FUNCTION Get_Address_Info (
6083 p_data_rec IN OUT NOCOPY IGS_SV_ADDRESSES%ROWTYPE -- Data record
6084 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
6085 IS
6086
6087 l_api_name CONSTANT VARCHAR2(25) := 'Get_Address_Info';
6088
6089 CURSOR c_data_rec IS
6090 SELECT action_type ,
6091 address_type ,
6092 address_line1 ,
6093 address_line2 ,
6094 city ,
6095 state ,
6096 postal_code ,
6097 postal_routing_code ,
6098 country_code ,
6099 province ,
6100 stdnt_valid_flag ,
6101 primary_flag ,
6102 activity_site_cd ,
6103 remarks
6104 FROM igs_sv_addresses cr
6105 WHERE cr.person_id = p_data_rec.person_id
6106 AND cr.party_site_id = p_data_rec.party_site_id
6107 AND cr.batch_id IN
6108 ( SELECT max(prs.batch_id)
6109 FROM igs_sv_addresses prs,
6110 igs_sv_persons pr
6111 WHERE prs.person_id = pr.person_id
6112 AND prs.batch_id = pr.batch_id
6113 AND pr.record_status <> 'E'
6114 AND prs.person_id = p_data_rec.person_id
6115 AND prs.party_site_id = p_data_rec.party_site_id
6116 );
6117 BEGIN
6118
6119 Put_Log_Msg(l_api_name||' begins ',0);
6120 /* Debug */
6121 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6122 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Address_Info';
6123 l_debug_str := 'Entering Get_Address_Info. p_data_rec.party_site_id is '||p_data_rec.party_site_id;
6124 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6125 END IF;
6126
6127 OPEN c_data_rec;
6128 FETCH c_data_rec
6129 INTO p_data_rec.action_type ,
6130 p_data_rec.address_type ,
6131 p_data_rec.address_line1 ,
6132 p_data_rec.address_line2 ,
6133 p_data_rec.city ,
6134 p_data_rec.state ,
6135 p_data_rec.postal_code ,
6136 p_data_rec.postal_routing_code ,
6137 p_data_rec.country_code ,
6138 p_data_rec.province ,
6139 p_data_rec.stdnt_valid_flag ,
6140 p_data_rec.primary_flag ,
6141 p_data_rec.activity_site_cd ,
6142 p_data_rec.remarks ;
6143
6144 IF c_data_rec%NOTFOUND THEN
6145
6146 Put_Log_Msg('Record not found ',0);
6147 CLOSE c_data_rec;
6148 /* Debug */
6149 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6150 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Address_Info';
6151 l_debug_str := 'Returning N from Get_Address_Info.';
6152 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6153 END IF;
6154
6155 RETURN 'N';
6156
6157 END IF;
6158
6159 CLOSE c_data_rec;
6160
6161 Put_Log_Msg(l_api_name||' ends S ',0);
6162 /* Debug */
6163 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6164 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Address_Info';
6165 l_debug_str := 'Returning S from Get_Address_Info.';
6166 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6167 END IF;
6168 RETURN 'S';
6169
6170 EXCEPTION
6171
6172 WHEN FND_API.G_EXC_ERROR THEN
6173
6174 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
6175 /* Debug */
6176 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6177 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Address_Info';
6178 l_debug_str := 'FND_API.G_EXC_ERROR in Get_Address_Info. Returning U... '||SQLERRM;
6179 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6180 END IF;
6181
6182 RETURN 'U';
6183
6184 WHEN OTHERS THEN
6185
6186 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6187 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6188 END IF;
6189
6190 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6191 /* Debug */
6192 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6193 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Address_Info';
6194 l_debug_str := 'EXCEPTION in Get_Address_Info. Returning U... '||SQLERRM;
6195 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6196 END IF;
6197
6198 RETURN 'U';
6199
6200 END Get_Address_Info;
6201
6202
6203
6204 /******************************************************************
6205 Created By : Arkadi Tereshenkov
6206
6207 Date Created By : Oct 14, 2002
6208
6209 Purpose : Get Education information on the student
6210 (IGS_SV_PRGMS_INFO).
6211
6212 Remarks :
6213
6214 Change History
6215 Who When What
6216 ------------------------------------------------------------------------
6217
6218 ******************************************************************/
6219 FUNCTION Get_Edu_Info (
6220 p_data_rec IN OUT NOCOPY IGS_SV_PRGMS_INFO%ROWTYPE -- Data record
6221 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
6222 IS
6223
6224 l_api_name CONSTANT VARCHAR2(25) := 'Get_Edu_Info';
6225
6226 CURSOR c_data_rec IS
6227 SELECT position_code ,
6228 subject_field_code ,
6229 education_level ,
6230 primary_major ,
6231 secondary_major ,
6232 minor ,
6233 length_of_study ,
6234 prgm_start_date ,
6235 prgm_end_date ,
6236 english_reqd ,
6237 english_reqd_met ,
6238 not_reqd_reason ,
6239 educ_lvl_remarks ,
6240 remarks
6241 FROM igs_sv_prgms_info cr
6242 WHERE cr.person_id = p_data_rec.person_id
6243 AND cr.prgm_action_type='EP'
6244 AND cr.batch_id IN
6245 ( SELECT max(prs.batch_id)
6246 FROM igs_sv_prgms_info prs,
6247 igs_sv_persons pr
6248 WHERE prs.person_id = pr.person_id
6249 AND prs.batch_id = pr.batch_id
6250 AND pr.record_status <> 'E'
6251 AND prs.person_id = p_data_rec.person_id
6252 AND prs.prgm_action_type = 'EP'
6253 );
6254
6255 BEGIN
6256
6257 Put_Log_Msg(l_api_name||' begins ',0);
6258 /* Debug */
6259 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6260 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Edu_Info';
6261 l_debug_str := 'Entering Get_Edu_Info. p_data_rec.person_id is '||p_data_rec.person_id;
6262 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6263 END IF;
6264
6265 OPEN c_data_rec;
6266 FETCH c_data_rec
6267 INTO p_data_rec.position_code ,
6268 p_data_rec.subject_field_code ,
6269 p_data_rec.education_level ,
6270 p_data_rec.primary_major ,
6271 p_data_rec.secondary_major ,
6272 p_data_rec.minor ,
6273 p_data_rec.length_of_study ,
6274 p_data_rec.prgm_start_date ,
6275 p_data_rec.prgm_end_date ,
6276 p_data_rec.english_reqd ,
6277 p_data_rec.english_reqd_met ,
6278 p_data_rec.not_reqd_reason ,
6279 p_data_rec.educ_lvl_remarks ,
6280 p_data_rec.remarks;
6281
6282 IF c_data_rec%NOTFOUND THEN
6283
6284 Put_Log_Msg('Record not found ',0);
6285 CLOSE c_data_rec;
6286 /* Debug */
6287 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6288 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Edu_Info';
6289 l_debug_str := 'Returning N from Get_Edu_Info.';
6290 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6291 END IF;
6292 RETURN 'N';
6293
6294 END IF;
6295
6296 CLOSE c_data_rec;
6297
6298 Put_Log_Msg(l_api_name||' ends S ',0);
6299 /* Debug */
6300 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6301 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Edu_Info';
6302 l_debug_str := 'Returning S from Get_Edu_Info.';
6303 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6304 END IF;
6305 RETURN 'S';
6306
6307 EXCEPTION
6308
6309 WHEN FND_API.G_EXC_ERROR THEN
6310
6311 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
6312 /* Debug */
6313 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6314 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Edu_Info';
6315 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Get_Edu_Info. '||SQLERRM;
6316 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6317 END IF;
6318
6319 RETURN 'U';
6320
6321 WHEN OTHERS THEN
6322
6323 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6324 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6325 END IF;
6326
6327 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6328 /* Debug */
6329 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6330 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Edu_Info';
6331 l_debug_str := 'EXCEPTION: Returning U from Get_Edu_Info. '||SQLERRM;
6332 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6333 END IF;
6334 RETURN 'U';
6335
6336 END Get_Edu_Info;
6337
6338
6339
6340
6341 /******************************************************************
6342 Created By : Arkadi Tereshenkov
6343
6344 Date Created By : Oct 14, 2002
6345
6346 Purpose : Get Finance information on the student
6347 (IGS_SV_FINANCE_INFO)
6348
6349 Remarks :
6350
6351 Change History
6352 Who When What
6353 ------------------------------------------------------------------------
6354
6355 ******************************************************************/
6356 FUNCTION Get_Finance_Info (
6357 p_data_rec IN OUT NOCOPY IGS_SV_FINANCE_INFO%ROWTYPE -- Data record
6358 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
6359 IS
6360
6361 l_api_name CONSTANT VARCHAR2(25) := 'Get_Finance_Info';
6362
6363 CURSOR c_data_rec IS
6364 SELECT acad_term_length ,
6365 tuition ,
6366 living_exp ,
6367 personal_funds ,
6368 dependent_exp ,
6369 other_exp ,
6370 other_exp_desc ,
6371 school_funds ,
6372 school_funds_desc ,
6373 other_funds ,
6374 other_funds_desc ,
6375 program_sponsor ,
6376 govt_org1 ,
6377 govt_org2 ,
6378 govt_org1_code ,
6379 govt_org2_code ,
6380 intl_org1 ,
6381 intl_org2 ,
6382 intl_org1_code ,
6383 intl_org2_code ,
6384 ev_govt ,
6385 bi_natnl_com ,
6386 other_org ,
6387 remarks ,
6388 govt_org1_othr_name ,
6389 govt_org2_othr_name ,
6390 intl_org1_othr_name ,
6391 intl_org2_othr_name ,
6392 other_govt_name ,
6393 empl_funds
6394 FROM igs_sv_finance_info cr
6395 WHERE cr.person_id = p_data_rec.person_id
6396 AND cr.batch_id IN
6397 ( SELECT max(prs.batch_id)
6398 FROM igs_sv_finance_info prs,
6399 igs_sv_persons pr
6400 WHERE prs.person_id = pr.person_id
6401 AND prs.batch_id = pr.batch_id
6402 AND pr.record_status <> 'E'
6403 AND prs.person_id = p_data_rec.person_id
6404 );
6405 BEGIN
6406
6407 Put_Log_Msg(l_api_name||' begins ',0);
6408 /* Debug */
6409 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6410 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Finance_Info';
6411 l_debug_str := 'Entering Get_Finance_Info. p_data_rec.person_id is '||p_data_rec.person_id;
6412 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6413 END IF;
6414
6415 OPEN c_data_rec;
6416 FETCH c_data_rec
6417 INTO p_data_rec.acad_term_length ,
6418 p_data_rec.tuition ,
6419 p_data_rec.living_exp ,
6420 p_data_rec.personal_funds ,
6421 p_data_rec.dependent_exp ,
6422 p_data_rec.other_exp ,
6423 p_data_rec.other_exp_desc ,
6424 p_data_rec.school_funds ,
6425 p_data_rec.school_funds_desc ,
6426 p_data_rec.other_funds ,
6427 p_data_rec.other_funds_desc ,
6428 p_data_rec.program_sponsor ,
6429 p_data_rec.govt_org1 ,
6430 p_data_rec.govt_org2 ,
6431 p_data_rec.govt_org1_code ,
6432 p_data_rec.govt_org2_code ,
6433 p_data_rec.intl_org1 ,
6434 p_data_rec.intl_org2 ,
6435 p_data_rec.intl_org1_code ,
6436 p_data_rec.intl_org2_code ,
6437 p_data_rec.ev_govt ,
6438 p_data_rec.bi_natnl_com ,
6439 p_data_rec.other_org ,
6440 p_data_rec.remarks ,
6441 p_data_rec.govt_org1_othr_name ,
6442 p_data_rec.govt_org2_othr_name ,
6443 p_data_rec.intl_org1_othr_name ,
6444 p_data_rec.intl_org2_othr_name ,
6445 p_data_rec.other_govt_name ,
6446 p_data_rec.empl_funds ;
6447
6448 IF c_data_rec%NOTFOUND THEN
6449
6450 Put_Log_Msg('Record not found ',0);
6451 CLOSE c_data_rec;
6452 /* Debug */
6453 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6454 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Finance_Info';
6455 l_debug_str := 'Returning N from Get_Finance_Info.';
6456 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6457 END IF;
6458 RETURN 'N';
6459
6460 END IF;
6461
6462 CLOSE c_data_rec;
6463
6464 Put_Log_Msg(l_api_name||' ends S ',0);
6465 /* Debug */
6466 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6467 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Finance_Info';
6468 l_debug_str := 'Returning S from Get_Finance_Info.';
6469 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6470 END IF;
6471 RETURN 'S';
6472
6473 EXCEPTION
6474
6475 WHEN FND_API.G_EXC_ERROR THEN
6476
6477 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
6478 /* Debug */
6479 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6480 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Finance_Info';
6481 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Get_Finance_Info. '||SQLERRM;
6482 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6483 END IF;
6484 RETURN 'U';
6485
6486 WHEN OTHERS THEN
6487
6488 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6489 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6490 END IF;
6491
6492 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6493 /* Debug */
6494 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6495 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Finance_Info';
6496 l_debug_str := 'EXCEPTION: Returning U from Get_Finance_Info. '||SQLERRM;
6497 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6498 END IF;
6499 RETURN 'U';
6500
6501 END Get_Finance_Info;
6502
6503
6504
6505 /******************************************************************
6506 Created By : Arkadi Tereshenkov
6507
6508 Date Created By : Oct 14, 2002
6509
6510 Purpose : Get the student dependent information.
6511 (IGS_SV_DEPDNT_INFO)
6512
6513 Remarks :
6514
6515 Change History
6516 Who When What
6517 ------------------------------------------------------------------------
6518
6519 ******************************************************************/
6520 FUNCTION Get_Dependent_Info (
6521 p_data_rec IN OUT NOCOPY IGS_SV_DEPDNT_INFO%ROWTYPE -- Data record
6522 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
6523 IS
6524
6525 l_api_name CONSTANT VARCHAR2(25) := 'Get_Dependent_Info';
6526
6527 CURSOR c_data_rec IS
6528 SELECT depdnt_action_type ,
6529 depdnt_sevis_id ,
6530 last_name ,
6531 first_name ,
6532 middle_name ,
6533 suffix ,
6534 birth_date ,
6535 gender ,
6536 birth_cntry_code ,
6537 citizen_cntry_code ,
6538 relationship ,
6539 termination_reason ,
6540 relationship_remarks ,
6541 perm_res_cntry_code ,
6542 termination_effect_date,
6543 remarks ,
6544 birth_cntry_resn_code ,
6545 VISA_TYPE
6546 FROM igs_sv_depdnt_info cr
6547 WHERE cr.person_id = p_data_rec.person_id
6548 AND cr.depdnt_id = p_data_rec.depdnt_id
6549 AND cr.batch_id IN
6550 ( SELECT max(prs.batch_id)
6551 FROM igs_sv_depdnt_info prs,
6552 igs_sv_persons pr
6553 WHERE prs.person_id = pr.person_id
6554 AND prs.batch_id = pr.batch_id
6555 AND pr.record_status <> 'E'
6556 AND prs.person_id = p_data_rec.person_id
6557 AND prs.depdnt_id = p_data_rec.depdnt_id
6558 );
6559
6560 BEGIN
6561 /* Debug */
6562 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6563 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Dependent_Info';
6564 l_debug_str := 'Entering Get_Dependent_Info. p_data_rec.person_id is '||p_data_rec.person_id||' and p_data_rec.depdnt_id is '||p_data_rec.depdnt_id;
6565 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6566 END IF;
6567 Put_Log_Msg(l_api_name||' begins ',0);
6568
6569 OPEN c_data_rec;
6570 FETCH c_data_rec
6571 INTO p_data_rec.depdnt_action_type ,
6572 p_data_rec.depdnt_sevis_id ,
6573 p_data_rec.last_name ,
6574 p_data_rec.first_name ,
6575 p_data_rec.middle_name ,
6576 p_data_rec.suffix ,
6577 p_data_rec.birth_date ,
6578 p_data_rec.gender ,
6579 p_data_rec.birth_cntry_code ,
6580 p_data_rec.citizen_cntry_code ,
6581 p_data_rec.relationship ,
6582 p_data_rec.termination_reason ,
6583 p_data_rec.relationship_remarks ,
6584 p_data_rec.perm_res_cntry_code ,
6585 p_data_rec.termination_effect_date,
6586 p_data_rec.remarks ,
6587 p_data_rec.birth_cntry_resn_code ,
6588 p_data_rec.VISA_TYPE ;
6589
6590 IF c_data_rec%NOTFOUND THEN
6591
6592 Put_Log_Msg('Record not found ',0);
6593 CLOSE c_data_rec;
6594 /* Debug */
6595 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6596 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Dependent_Info';
6597 l_debug_str := 'Returning N from Get_Dependent_Info.';
6598 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6599 END IF;
6600 RETURN 'N';
6601
6602 END IF;
6603
6604 CLOSE c_data_rec;
6605
6606 Put_Log_Msg(l_api_name||' ends S ',0);
6607 /* Debug */
6608 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6609 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Dependent_Info';
6610 l_debug_str := 'Returning S from Get_Dependent_Info.';
6611 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6612 END IF;
6613 RETURN 'S';
6614
6615 EXCEPTION
6616
6617 WHEN FND_API.G_EXC_ERROR THEN
6618 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
6619 /* Debug */
6620 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6621 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Dependent_Info';
6622 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Get_Dependent_Info. '||SQLERRM;
6623 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6624 END IF;
6625 RETURN 'U';
6626
6627 WHEN OTHERS THEN
6628 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6629 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6630 END IF;
6631
6632 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6633 /* Debug */
6634 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6635 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Dependent_Info';
6636 l_debug_str := 'EXCEPTION: Returning U from Get_Dependent_Info. '||SQLERRM;
6637 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6638 END IF;
6639 RETURN 'U';
6640
6641 END Get_Dependent_Info;
6642
6643
6644
6645 /******************************************************************
6646 Created By : Arkadi Tereshenkov
6647
6648 Date Created By : Oct 14, 2002
6649
6650 Purpose : Get the legal information for the student.
6651 (IGS_SV_LEGAL_INFO).
6652
6653 Remarks :
6654
6655 Change History
6656 Who When What
6657 ------------------------------------------------------------------------
6658
6659 ******************************************************************/
6660 FUNCTION Get_Legal_Info (
6661 p_data_rec IN OUT NOCOPY IGS_SV_LEGAL_INFO%ROWTYPE -- Data record
6662 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
6663 IS
6664 l_api_name CONSTANT VARCHAR2(25) := 'Get_Legal_Info';
6665
6666 CURSOR c_data_rec IS
6667 SELECT psprt_number ,
6668 psprt_issuing_cntry_code,
6669 psprt_exp_date ,
6670 visa_number ,
6671 visa_issuing_post ,
6672 visa_issuing_cntry_code,
6673 visa_expiration_date ,
6674 i94_number ,
6675 port_of_entry ,
6676 date_of_entry ,
6677 remarks ,
6678 visa_issue_date
6679 FROM igs_sv_legal_info cr
6680 WHERE cr.person_id = p_data_rec.person_id
6681 AND cr.batch_id IN
6682 ( SELECT max(prs.batch_id)
6683 FROM igs_sv_legal_info prs,
6684 igs_sv_persons pr
6685 WHERE prs.person_id = pr.person_id
6686 AND prs.batch_id = pr.batch_id
6687 AND pr.record_status <> 'E'
6688 AND prs.person_id = p_data_rec.person_id
6689 );
6690
6691 BEGIN
6692
6693 Put_Log_Msg(l_api_name||' begins ',0);
6694 /* Debug */
6695 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6696 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Legal_Info';
6697 l_debug_str := 'Entering Get_Legal_Info. p_data_rec.person_id is '||p_data_rec.person_id;
6698 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6699 END IF;
6700
6701 OPEN c_data_rec;
6702 FETCH c_data_rec
6703 INTO p_data_rec.psprt_number ,
6704 p_data_rec.psprt_issuing_cntry_code,
6705 p_data_rec.psprt_exp_date ,
6706 p_data_rec.visa_number ,
6707 p_data_rec.visa_issuing_post ,
6708 p_data_rec.visa_issuing_cntry_code,
6709 p_data_rec.visa_expiration_date ,
6710 p_data_rec.i94_number ,
6711 p_data_rec.port_of_entry ,
6712 p_data_rec.date_of_entry ,
6713 p_data_rec.remarks ,
6714 p_data_rec.visa_issue_date;
6715
6716 IF c_data_rec%NOTFOUND THEN
6717
6718 Put_Log_Msg('Record not found ',0);
6719 CLOSE c_data_rec;
6720 /* Debug */
6721 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6722 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Legal_Info';
6723 l_debug_str := 'Returning N from Get_Legal_Info.';
6724 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6725 END IF;
6726 g_legal_status := 'NEW';
6727 RETURN 'N';
6728
6729 END IF;
6730
6731 CLOSE c_data_rec;
6732 g_legal_status := 'EDIT';
6733 Put_Log_Msg(l_api_name||' ends S ',0);
6734 /* Debug */
6735 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6736 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Legal_Info';
6737 l_debug_str := 'Returning S from Get_Legal_Info.';
6738 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6739 END IF;
6740
6741 RETURN 'S';
6742
6743 EXCEPTION
6744
6745 WHEN FND_API.G_EXC_ERROR THEN
6746
6747 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
6748 /* Debug */
6749 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6750 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Legal_Info';
6751 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Get_Legal_Info. '||SQLERRM;
6752 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6753 END IF;
6754 RETURN 'U';
6755
6756 WHEN OTHERS THEN
6757
6758 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6759 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6760 END IF;
6761
6762 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6763 /* Debug */
6764 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6765 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_Legal_Info';
6766 l_debug_str := 'EXCEPTION: Returning U from Get_Legal_Info. '||SQLERRM;
6767 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6768 END IF;
6769 RETURN 'U';
6770
6771 END Get_Legal_Info;
6772
6773
6774 /******************************************************************
6775 Created By : Arkadi Tereshenkov
6776
6777 Date Created By : Oct 14, 2002
6778
6779 Purpose : Updating of person issue information block
6780 (IGS_SV_PERSONS).
6781
6782 Remarks :
6783
6784 Change History
6785 Who When What
6786 ------------------------------------------------------------------------
6787
6788 ******************************************************************/
6789 PROCEDURE Update_Issue_Info (
6790 p_data_rec IN IGS_SV_PERSONS%ROWTYPE -- Data record
6791 )
6792 IS
6793
6794 l_api_name CONSTANT VARCHAR(30) := 'Update_Issue_Info';
6795
6796 BEGIN
6797 /* Debug */
6798 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6799 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Issue_Info';
6800 l_debug_str := 'Entering Update_Issue_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
6801 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6802 END IF;
6803
6804 UPDATE IGS_SV_PERSONS
6805 SET issuing_reason = p_data_rec.issuing_reason,
6806 curr_session_end_date = p_data_rec.curr_session_end_date ,
6807 next_session_start_date= p_data_rec.next_session_start_date ,
6808 other_reason = p_data_rec.other_reason ,
6809 transfer_from_school = p_data_rec.transfer_from_school ,
6810 ev_create_reason = p_data_rec.ev_create_reason ,
6811 ev_form_number = p_data_rec.ev_form_number,
6812 init_prgm_start_date = p_data_rec.init_prgm_start_date,
6813 no_show_flag = p_data_rec.no_show_flag,
6814 last_session_flag = p_data_rec.last_session_flag,
6815 adjudicated_flag = p_data_rec.adjudicated_flag
6816 WHERE batch_id = p_data_rec.batch_id
6817 AND person_id = p_data_rec.person_id
6818 AND record_number = p_data_rec.record_number;
6819
6820 EXCEPTION
6821
6822 WHEN OTHERS THEN
6823
6824 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6825 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6826 END IF;
6827 /* Debug */
6828 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6829 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Issue_Info';
6830 l_debug_str := 'EXCEPTION in Update_Issue_Info. '||SQLERRM;
6831 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6832 END IF;
6833 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6834
6835 RAISE;
6836
6837 END Update_Issue_Info;
6838
6839
6840
6841 /******************************************************************
6842 Created By : Arkadi Tereshenkov
6843
6844 Date Created By : Oct 14, 2002
6845
6846 Purpose : Insert Bio information block.
6847 (IGS_SV_BIO_INFO).
6848
6849 Remarks :
6850
6851 Change History
6852 Who When What
6853 ------------------------------------------------------------------------
6854
6855 ******************************************************************/
6856 PROCEDURE Insert_Bio_Info(
6857 p_data_rec IN IGS_SV_BIO_INFO%ROWTYPE -- Data record
6858 )
6859 IS
6860 l_api_name CONSTANT VARCHAR(30) := 'Insert_Bio_Info';
6861
6862 BEGIN
6863 /* Debug */
6864 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6865 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Bio_Info';
6866 l_debug_str := 'Entering Insert_Bio_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
6867 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6868 END IF;
6869 Insert_Summary_Info(p_data_rec.batch_id,
6870 p_data_rec.person_id,
6871 g_person_status,
6872 'SV_BIO',
6873 'SEND',
6874 'IGS_SV_BIO_INFO',
6875 '');
6876 INSERT INTO IGS_SV_BIO_INFO (
6877 batch_id ,
6878 person_id ,
6879 print_form ,
6880 birth_date ,
6881 birth_cntry_code ,
6882 birth_city ,
6883 citizen_cntry_code ,
6884 last_name ,
6885 middle_name ,
6886 first_name ,
6887 suffix ,
6888 gender ,
6889 legal_res_cntry_code ,
6890 position_code ,
6891 category_code ,
6892 remarks ,
6893 commuter ,
6894 visa_type ,
6895 creation_date ,
6896 created_by ,
6897 last_updated_by ,
6898 last_update_date ,
6899 last_update_login ,
6900 birth_cntry_resn_code
6901 ) VALUES
6902 (
6903 p_data_rec.batch_id ,
6904 p_data_rec.person_id ,
6905 p_data_rec.print_form ,
6906 p_data_rec.birth_date ,
6907 p_data_rec.birth_cntry_code ,
6908 p_data_rec.birth_city ,
6909 p_data_rec.citizen_cntry_code ,
6910 p_data_rec.last_name ,
6911 p_data_rec.middle_name ,
6912 p_data_rec.first_name ,
6913 p_data_rec.suffix ,
6914 p_data_rec.gender ,
6915 p_data_rec.legal_res_cntry_code ,
6916 p_data_rec.position_code ,
6917 p_data_rec.category_code ,
6918 p_data_rec.remarks ,
6919 p_data_rec.commuter ,
6920 p_data_rec.visa_type ,
6921 p_data_rec.creation_date ,
6922 p_data_rec.created_by ,
6923 p_data_rec.last_updated_by ,
6924 p_data_rec.last_update_date ,
6925 p_data_rec.last_update_login ,
6926 p_data_rec.birth_cntry_resn_code
6927 );
6928
6929 EXCEPTION
6930
6931 WHEN OTHERS THEN
6932 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
6933 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
6934 END IF;
6935 /* Debug */
6936 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6937 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Bio_Info';
6938 l_debug_str := 'EXCEPTION in Insert_Bio_Info. '||SQLERRM;
6939 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6940 END IF;
6941 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
6942 RAISE;
6943
6944 END Insert_Bio_Info;
6945
6946
6947
6948 /******************************************************************
6949 Created By : Arkadi Tereshenkov
6950
6951 Date Created By : Oct 14, 2002
6952
6953 Purpose : Insert Other information block
6954 (IGS_SV_OTH_INFO)
6955
6956 remarks :
6957
6958 Change History
6959 Who When What
6960 ------------------------------------------------------------------------
6961
6962 ******************************************************************/
6963 PROCEDURE Insert_Other_Info (
6964 p_data_rec IN IGS_SV_OTH_INFO%ROWTYPE -- Data record
6965 )
6966 IS
6967
6968 l_api_name CONSTANT VARCHAR(30) := 'Insert_Other_Info';
6969
6970 BEGIN
6971 /* Debug */
6972 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
6973 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Other_Info';
6974 l_debug_str := 'Entering Insert_Other_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
6975 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
6976 END IF;
6977 Insert_Summary_Info(p_data_rec.batch_id,
6978 p_data_rec.person_id,
6979 g_person_status,
6980 'SV_OTHER',
6981 'SEND',
6982 'IGS_SV_OTH_INFO',
6983 '');
6984
6985 INSERT INTO IGS_SV_OTH_INFO (
6986 batch_id ,
6987 person_id ,
6988 print_form ,
6989 drivers_license ,
6990 drivers_license_state ,
6991 ssn ,
6992 tax_id ,
6993 creation_date ,
6994 created_by ,
6995 last_updated_by ,
6996 last_update_date ,
6997 last_update_login
6998 ) VALUES
6999 (p_data_rec.batch_id ,
7000 p_data_rec.person_id ,
7001 p_data_rec.print_form ,
7002 p_data_rec.drivers_license ,
7003 p_data_rec.drivers_license_state ,
7004 p_data_rec.ssn ,
7005 p_data_rec.tax_id ,
7006 p_data_rec.creation_date ,
7007 p_data_rec.created_by ,
7008 p_data_rec.last_updated_by ,
7009 p_data_rec.last_update_date ,
7010 p_data_rec.last_update_login
7011 );
7012
7013 EXCEPTION
7014
7015 WHEN OTHERS THEN
7016 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7017 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7018 END IF;
7019
7020 /* Debug */
7021 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7022 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Other_Info';
7023 l_debug_str := 'EXCEPTION in Insert_Other_Info. '||SQLERRM;
7024 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7025 END IF;
7026 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7027
7028 RAISE;
7029
7030 END Insert_Other_Info;
7031
7032
7033
7034 /******************************************************************
7035 Created By : Arkadi Tereshenkov
7036
7037 Date Created By : Oct 14, 2002
7038
7039 Purpose : Insert site of activity information.
7040 (IGS_SV_ADDRESSES).
7041
7042 Remarks :
7043
7044 Change History
7045 Who When What
7046 ------------------------------------------------------------------------
7047
7048 ******************************************************************/
7049 PROCEDURE Insert_Address_Info (
7050 p_addr_type IN VARCHAR, -- Address type bein inserted- US, Foreign, Site of Activity
7051 p_data_rec IN g_address_rec_type , -- Data record
7052 p_records IN NUMBER -- number of addressees found
7053 )
7054 IS
7055 l_api_name CONSTANT VARCHAR(30) := 'Insert_Address_Info';
7056 l_count NUMBER(10);
7057 l_action VARCHAR2(10);
7058 l_btch_id NUMBER(14);
7059 l_remarks VARCHAR2(500);
7060 BEGIN
7061 /* Debug */
7062 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7063 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Address_Info';
7064 l_debug_str := 'Entering Insert_Address_Info. Number of records: '||p_records;
7065 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7066 END IF;
7067
7068 FOR l_count IN 1..p_records LOOP
7069 IF p_data_rec(l_count).batch_id IS NOT NULL THEN
7070
7071 IF p_addr_type = 'SOA' THEN
7072 IF g_person_status = 'NEW' THEN
7073 l_action := g_person_status;
7074 ELSIF p_data_rec(l_count).action_type = 'A' THEN
7075 l_action := 'ADD';
7076 ELSIF p_data_rec(l_count).action_type = 'D' THEN
7077 l_action := 'DELETE';
7078 ELSE
7079 l_action := 'EDIT';
7080 END IF;
7081 l_remarks := p_data_rec(l_count).remarks;
7082 l_btch_id := chk_mut_exclusive(p_data_rec(l_count).batch_id,
7083 p_data_rec(l_count).person_id,
7084 l_action,
7085 'SV_SOA');
7086
7087 Insert_Summary_Info(l_btch_id,
7088 p_data_rec(l_count).person_id,
7089 l_action,
7090 'SV_SOA',
7091 'SEND',
7092 'IGS_SV_ADDRESSES',
7093 p_data_rec(l_count).party_site_id);
7094 ELSE
7095 l_remarks := null;
7096 l_btch_id := p_data_rec(l_count).batch_id;
7097 IF p_addr_type = 'US' THEN
7098 Insert_Summary_Info(l_btch_id,
7099 p_data_rec(l_count).person_id,
7100 g_person_status,
7101 'SV_US_ADDR',
7102 'SEND',
7103 'IGS_SV_ADDRESSES',
7104 p_data_rec(l_count).party_site_id);
7105 ELSE
7106 Insert_Summary_Info(l_btch_id,
7107 p_data_rec(l_count).person_id,
7108 g_person_status,
7109 'SV_F_ADDR',
7110 'SEND',
7111 'IGS_SV_ADDRESSES',
7112 p_data_rec(l_count).party_site_id);
7113 END IF;
7114 END IF;
7115
7116 INSERT INTO igs_sv_addresses (
7117 batch_id ,
7118 person_id ,
7119 party_site_id ,
7120 print_form ,
7121 address_type ,
7122 address_line1 ,
7123 address_line2 ,
7124 city ,
7125 state ,
7126 postal_code ,
7127 postal_routing_code ,
7128 country_code ,
7129 province ,
7130 stdnt_valid_flag ,
7131 creation_date ,
7132 created_by ,
7133 last_updated_by ,
7134 last_update_date ,
7135 last_update_login ,
7136 action_type ,
7137 primary_flag ,
7138 activity_site_cd ,
7139 remarks
7140 ) VALUES (
7141 l_btch_id ,
7142 p_data_rec(l_count).person_id ,
7143 p_data_rec(l_count).party_site_id ,
7144 p_data_rec(l_count).print_form ,
7145 p_data_rec(l_count).address_type ,
7146 p_data_rec(l_count).address_line1 ,
7147 p_data_rec(l_count).address_line2 ,
7148 p_data_rec(l_count).city ,
7149 p_data_rec(l_count).state ,
7150 p_data_rec(l_count).postal_code ,
7151 p_data_rec(l_count).postal_routing_code ,
7152 p_data_rec(l_count).country_code ,
7153 p_data_rec(l_count).province ,
7154 p_data_rec(l_count).stdnt_valid_flag ,
7155 p_data_rec(l_count).creation_date ,
7156 p_data_rec(l_count).created_by ,
7157 p_data_rec(l_count).last_updated_by ,
7158 p_data_rec(l_count).last_update_date ,
7159 p_data_rec(l_count).last_update_login ,
7160 p_data_rec(l_count).action_type ,
7161 p_data_rec(l_count).primary_flag ,
7162 p_data_rec(l_count).activity_site_cd ,
7163 l_remarks
7164 );
7165 END IF;
7166
7167 END LOOP;
7168
7169 EXCEPTION
7170
7171 WHEN OTHERS THEN
7172 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7173 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7174 END IF;
7175
7176 /* Debug */
7177 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7178 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Address_Info';
7179 l_debug_str := 'EXCEPTION in Insert_Address_Info. '||SQLERRM;
7180 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7181 END IF;
7182 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7183 RAISE;
7184
7185 END Insert_Address_Info;
7186
7187
7188
7189 /******************************************************************
7190 Created By : Arkadi Tereshenkov
7191
7192 Date Created By : Oct 14, 2002
7193
7194 Purpose : Insert education information on the student
7195 (IGS_SV_PRGMS_INFO).
7196
7197 Remarks :
7198
7199 Change History
7200 Who When What
7201 ------------------------------------------------------------------------
7202
7203 ******************************************************************/
7204 PROCEDURE Insert_Edu_Info (
7205 p_edu_type IN VARCHAR2,
7206 p_data_rec IN IGS_SV_PRGMS_INFO%ROWTYPE,
7207 p_auth_drp_data_rec IN IGS_SV_PRGMS_INFO%ROWTYPE
7208 )
7209 IS
7210
7211 l_api_name CONSTANT VARCHAR(30) := 'Insert_Edu_Info';
7212 l_count NUMBER(10);
7213 l_action VARCHAR2(30);
7214 l_btch_id NUMBER(14);
7215 l_tag_code VARCHAR2(30);
7216 l_edu_status VARCHAR2(10);
7217 l_cur_rec IGS_SV_PRGMS_INFO%ROWTYPE;
7218
7219 l_education_level igs_pe_nonimg_form.education_level%TYPE;
7220 l_primary_major igs_pe_nonimg_form.primary_major%TYPE;
7221 l_secondary_major igs_pe_nonimg_form.secondary_major%TYPE;
7222 l_minor igs_pe_nonimg_form.minor%TYPE;
7223 l_length_of_study igs_pe_nonimg_form.length_of_study%TYPE;
7224 l_prgm_start_date igs_Sv_prgms_info.prgm_start_date%TYPE;
7225 l_prgm_end_date igs_Sv_prgms_info.prgm_end_date%TYPE;
7226 l_english_reqd igs_pe_nonimg_form.english_reqd%TYPE;
7227 l_english_reqd_met igs_pe_nonimg_form.english_reqd_met%TYPE;
7228 l_not_reqd_reason igs_pe_nonimg_form.not_reqd_reason%TYPE;
7229 l_educ_lvl_remarks igs_pe_nonimg_form.educ_lvl_remarks%TYPE;
7230 l_position_code igs_pe_ev_form.position_code%TYPE;
7231 l_subject_field_code igs_pe_ev_form.subject_field_code%TYPE;
7232 l_remarks igs_pe_ev_form.subject_field_remarks%TYPE;
7233
7234 BEGIN
7235 /* Debug */
7236 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7237 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Edu_Info';
7238 l_debug_str := 'Entering Insert_Edu_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
7239 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7240 END IF;
7241 l_position_code := p_data_rec.position_code;
7242 l_subject_field_code := p_data_rec.subject_field_code;
7243 l_remarks := p_data_rec.remarks;
7244 l_education_level := p_data_rec.education_level;
7245 l_primary_major := p_data_rec.primary_major;
7246 l_secondary_major := p_data_rec.secondary_major;
7247 l_educ_lvl_remarks := p_data_rec.educ_lvl_remarks;
7248 l_minor := p_data_rec.minor;
7249 l_length_of_study := p_data_rec.length_of_study;
7250 l_english_reqd := p_data_rec.english_reqd;
7251 l_english_reqd_met := p_data_rec.english_reqd_met;
7252 l_not_reqd_reason := p_data_rec.not_reqd_reason;
7253 l_prgm_start_date := p_data_rec.prgm_start_date;
7254 l_prgm_end_date := p_data_rec.prgm_end_date;
7255
7256 /* Debug */
7257 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7258 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Edu_Info';
7259 l_debug_str := 'After assigning values to local variables';
7260 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7261 END IF;
7262 -- Nonimg action types:
7263 -- C Complete Program
7264 -- T Terminate Program
7265 -- D Defer program
7266 -- E Extend program
7267 -- EV action types:
7268 -- AP Amend Program
7269 -- AF Approve Failure
7270 -- CF Conclude Failure
7271 -- EE Exchange Visitor Extension
7272 -- ED End Program
7273 -- EM Matriculation
7274 -- EF Extend Failure
7275 -- OI Other Infraction
7276 -- TR Terminate Exchange Visitor
7277 IF p_edu_type = 'PRGM' THEN
7278 IF p_data_rec.prgm_action_type = 'C' THEN
7279 l_action := 'COMPLETE';
7280 l_tag_code := 'SV_STATUS';
7281 ELSIF p_data_rec.prgm_action_type = 'CE' THEN
7282 l_action := 'CANCEL_EXTENSION';
7283 l_tag_code := 'SV_PRGMS';
7284 ELSIF p_data_rec.prgm_action_type = 'T' OR p_data_rec.prgm_action_type = 'TR' THEN
7285 l_action := 'TERMINATE';
7286 l_tag_code := 'SV_STATUS';
7287 ELSIF p_data_rec.prgm_action_type = 'D' THEN
7288 l_action := 'DEFER';
7289 l_tag_code := 'SV_PRGMS';
7290 ELSIF p_data_rec.prgm_action_type = 'E' OR p_data_rec.prgm_action_type = 'EE' THEN
7291 l_action := 'EXTENSION';
7292 l_tag_code := 'SV_PRGMS';
7293 ELSIF p_data_rec.prgm_action_type = 'S' OR p_data_rec.prgm_action_type = 'SP' THEN
7294 l_action := 'SHORTEN';
7295 l_tag_code := 'SV_PRGMS';
7296 /* ELSIF p_data_rec.prgm_action_type = 'EP' THEN -- this code is used for educational info
7297 l_action := 'EDIT';
7298 l_tag_code := 'SV_PRGMS';*/
7299 ELSIF p_data_rec.prgm_action_type = 'CP' THEN
7300 l_action := 'CANCEL';
7301 l_tag_code := 'SV_STATUS';
7302 ELSIF p_data_rec.prgm_action_type = 'AP' THEN
7303 l_action := 'AMEND';
7304 l_tag_code := 'SV_PRGMS';
7305 ELSIF p_data_rec.prgm_action_type = 'US' THEN
7306 l_action := 'EDIT_SUBJECT';
7307 l_tag_code := 'SV_PRGMS';
7308 ELSIF p_data_rec.prgm_action_type = 'EM' THEN
7309 l_action := 'MATRICULATE';
7310 l_tag_code := 'SV_PRGMS';
7311 ELSIF p_data_rec.prgm_action_type = 'ED' THEN
7312 l_action := 'END';
7313 l_tag_code := 'SV_STATUS';
7314 /* ELSIF p_data_rec.prgm_action_type = 'AF' THEN
7315 l_action := 'APPROVE_FAILURE';
7316 l_tag_code := 'SV_PRGMS';
7317 ELSIF p_data_rec.prgm_action_type = 'CF' THEN
7318 l_action := 'CONCLUDE_FAILURE';
7319 l_tag_code := 'SV_PRGMS';
7320 ELSIF p_data_rec.prgm_action_type = 'EF' THEN
7321 l_action := 'EXTEND_FAILURE';
7322 l_tag_code := 'SV_PRGMS';*/
7323 ELSE
7324 l_action := 'CORRECT_INFRACTION';
7325 l_tag_code := 'SV_STATUS';
7326 END IF;
7327
7328 IF g_person_status = 'NEW' THEN
7329 l_action := g_person_status;
7330 END IF;
7331 l_btch_id := chk_mut_exclusive(p_data_rec.batch_id,
7332 p_data_rec.person_id,
7333 l_action,
7334 l_tag_code);
7335 Insert_Summary_Info(l_btch_id,
7336 p_data_rec.person_id,
7337 l_action,
7338 l_tag_code,
7339 'SEND',
7340 'IGS_SV_PRGMS_INFO',
7341 p_data_rec.prgm_action_type);
7342
7343 l_cur_rec.person_id := p_data_rec.person_id;
7344 l_edu_status := Get_Othr_Prgm_Info (p_data_rec => l_cur_rec);
7345 IF l_edu_status = 'S' THEN
7346 l_position_code := l_cur_rec.position_code;
7347 l_subject_field_code := l_cur_rec.subject_field_code ;
7348 l_education_level := l_cur_rec.education_level;
7349 l_primary_major := l_cur_rec.primary_major;
7350 l_secondary_major := l_cur_rec.secondary_major;
7351 l_educ_lvl_remarks := l_cur_rec.educ_lvl_remarks ;
7352 l_minor := l_cur_rec.minor ;
7353 l_length_of_study := l_cur_rec.length_of_study ;
7354 l_english_reqd := l_cur_rec.english_reqd;
7355 l_english_reqd_met := l_cur_rec.english_reqd_met ;
7356 l_not_reqd_reason := l_cur_rec.not_reqd_reason;
7357 IF p_data_rec.remarks IS NULL THEN
7358 l_remarks := l_cur_rec.remarks;
7359 END IF;
7360 IF p_data_rec.prgm_start_date IS NULL THEN
7361 l_prgm_start_date := l_cur_rec.prgm_start_date;
7362 END IF;
7363 IF p_data_rec.prgm_end_date IS NULL THEN
7364 l_prgm_end_date := l_cur_rec.prgm_end_date;
7365 END IF;
7366 /* Debug */
7367 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7368 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Edu_Info';
7369 l_debug_str := 'After assigning values received from get_othr_prgm_info to local variables';
7370 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7371 END IF;
7372 END IF;
7373
7374 ELSE
7375 l_btch_id := p_data_rec.batch_id;
7376 END IF;
7377 IF p_edu_type = 'EDU' THEN
7378 IF g_person_status = 'NEW' THEN
7379 l_action := g_person_status;
7380 ELSE
7381 l_action := 'EDIT';
7382 END IF;
7383 Insert_Summary_Info(l_btch_id,
7384 p_data_rec.person_id,
7385 l_action,
7386 'SV_PRGMS',
7387 'SEND',
7388 'IGS_SV_PRGMS_INFO',
7389 p_data_rec.prgm_action_type);
7390 END IF;
7391 INSERT INTO igs_sv_prgms_info (
7392 batch_id ,
7393 person_id ,
7394 prgm_action_type ,
7395 print_form ,
7396 form_status_id ,
7397 position_code ,
7398 subject_field_code ,
7399 education_level ,
7400 primary_major ,
7401 secondary_major ,
7402 educ_lvl_remarks ,
7403 minor ,
7404 length_of_study ,
7405 prgm_start_date ,
7406 prgm_end_date ,
7407 english_reqd ,
7408 english_reqd_met ,
7409 not_reqd_reason ,
7410 matriculation ,
7411 effective_date ,
7412 authorization_reason ,
7413 termination_reason ,
7414 end_prgm_reason ,
7415 reprint_reason ,
7416 submit_update ,
7417 remarks ,
7418 creation_date ,
7419 created_by ,
7420 last_updated_by ,
7421 last_update_date ,
7422 last_update_login ,
7423 auth_action_code
7424 ) VALUES
7425 ( l_btch_id ,
7426 p_data_rec.person_id ,
7427 p_data_rec.prgm_action_type ,
7428 p_data_rec.print_form ,
7429 p_data_rec.form_status_id ,
7430 l_position_code ,
7431 l_subject_field_code ,
7432 l_education_level ,
7433 l_primary_major ,
7434 l_secondary_major ,
7435 l_educ_lvl_remarks ,
7436 l_minor ,
7437 l_length_of_study ,
7438 l_prgm_start_date ,
7439 l_prgm_end_date ,
7440 l_english_reqd ,
7441 l_english_reqd_met ,
7442 l_not_reqd_reason ,
7443 p_data_rec.matriculation ,
7444 p_data_rec.effective_date ,
7445 p_data_rec.authorization_reason ,
7446 p_data_rec.termination_reason ,
7447 p_data_rec.end_prgm_reason ,
7448 p_data_rec.reprint_reason ,
7449 p_data_rec.submit_update ,
7450 l_remarks ,
7451 p_data_rec.creation_date ,
7452 p_data_rec.created_by ,
7453 p_data_rec.last_updated_by ,
7454 p_data_rec.last_update_date ,
7455 p_data_rec.last_update_login ,
7456 p_data_rec.auth_action_code
7457 );
7458
7459 /* Debug */
7460 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7461 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Edu_Info';
7462 l_debug_str := 'Record inserted';
7463 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7464 END IF;
7465
7466 EXCEPTION
7467
7468 WHEN OTHERS THEN
7469 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7470 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7471 END IF;
7472
7473 /* Debug */
7474 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7475 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Edu_Info';
7476 l_debug_str := 'EXCEPTION in Insert_Edu_Info. '||SQLERRM;
7477 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7478 END IF;
7479 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7480
7481 RAISE;
7482
7483 END Insert_Edu_Info;
7484
7485
7486 /******************************************************************
7487 Created By : Arkadi Tereshenkov
7488
7489 Date Created By : Oct 14, 2002
7490
7491 Purpose : Insert Finance information on the student
7492 (IGS_SV_FINANCE_INFO)
7493
7494 Remarks :
7495
7496 Change History
7497 Who When What
7498 ------------------------------------------------------------------------
7499
7500 ******************************************************************/
7501 PROCEDURE Insert_Finance_Info (
7502 p_data_rec IN IGS_SV_FINANCE_INFO %ROWTYPE -- Data record
7503 )
7504 IS
7505
7506 l_api_name CONSTANT VARCHAR(30) := 'Insert_Finance_Info';
7507
7508 BEGIN
7509 /* Debug */
7510 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7511 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Finance_Info';
7512 l_debug_str := 'Entering Insert_Finance_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
7513 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7514 END IF;
7515 Insert_Summary_Info(p_data_rec.batch_id,
7516 p_data_rec.person_id,
7517 g_person_status,
7518 'SV_FINANCIAL',
7519 'SEND',
7520 'IGS_SV_FINANCE_INFO',
7521 '');
7522 INSERT INTO igs_sv_finance_info (
7523 batch_id ,
7524 person_id ,
7525 print_form ,
7526 acad_term_length ,
7527 tuition ,
7528 living_exp ,
7529 personal_funds ,
7530 dependent_exp ,
7531 other_exp ,
7532 other_exp_desc ,
7533 school_funds ,
7534 school_funds_desc ,
7535 other_funds ,
7536 other_funds_desc ,
7537 program_sponsor ,
7538 govt_org1 ,
7539 govt_org2 ,
7540 govt_org1_code ,
7541 govt_org2_code ,
7542 intl_org1 ,
7543 intl_org2 ,
7544 intl_org1_code ,
7545 intl_org2_code ,
7546 ev_govt ,
7547 bi_natnl_com ,
7548 other_org ,
7549 recvd_us_gvt_funds ,
7550 remarks ,
7551 creation_date ,
7552 created_by ,
7553 last_updated_by ,
7554 last_update_date ,
7555 last_update_login ,
7556 govt_org1_othr_name ,
7557 govt_org2_othr_name ,
7558 intl_org1_othr_name ,
7559 intl_org2_othr_name ,
7560 other_govt_name ,
7561 empl_funds
7562 ) VALUES
7563 (p_data_rec.batch_id ,
7564 p_data_rec.person_id ,
7565 p_data_rec.print_form ,
7566 p_data_rec.acad_term_length ,
7567 p_data_rec.tuition ,
7568 p_data_rec.living_exp ,
7569 p_data_rec.personal_funds ,
7570 p_data_rec.dependent_exp ,
7571 p_data_rec.other_exp ,
7572 p_data_rec.other_exp_desc ,
7573 p_data_rec.school_funds ,
7574 p_data_rec.school_funds_desc ,
7575 p_data_rec.other_funds ,
7576 p_data_rec.other_funds_desc ,
7577 p_data_rec.program_sponsor ,
7578 p_data_rec.govt_org1 ,
7579 p_data_rec.govt_org2 ,
7580 p_data_rec.govt_org1_code ,
7581 p_data_rec.govt_org2_code ,
7582 p_data_rec.intl_org1 ,
7583 p_data_rec.intl_org2 ,
7584 p_data_rec.intl_org1_code ,
7585 p_data_rec.intl_org2_code ,
7586 p_data_rec.ev_govt ,
7587 p_data_rec.bi_natnl_com ,
7588 p_data_rec.other_org ,
7589 p_data_rec.recvd_us_gvt_funds ,
7590 p_data_rec.remarks ,
7591 p_data_rec.creation_date ,
7592 p_data_rec.created_by ,
7593 p_data_rec.last_updated_by ,
7594 p_data_rec.last_update_date ,
7595 p_data_rec.last_update_login ,
7596 p_data_rec.govt_org1_othr_name ,
7597 p_data_rec.govt_org2_othr_name ,
7598 p_data_rec.intl_org1_othr_name ,
7599 p_data_rec.intl_org2_othr_name ,
7600 p_data_rec.other_govt_name ,
7601 p_data_rec.empl_funds
7602 );
7603
7604 EXCEPTION
7605
7606 WHEN OTHERS THEN
7607 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7608 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7609 END IF;
7610
7611 /* Debug */
7612 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7613 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Finance_Info';
7614 l_debug_str := 'EXCEPTION in Insert_Finance_Info. '||SQLERRM;
7615 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7616 END IF;
7617 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7618
7619 RAISE;
7620
7621 END Insert_Finance_Info;
7622
7623
7624
7625 /******************************************************************
7626 Created By : Arkadi Tereshenkov
7627
7628 Date Created By : Oct 14, 2002
7629
7630 Purpose : Insert dependent information on the student
7631 (IGS_SV_DEPDNT_INFO).
7632
7633 Remarks :
7634
7635 Change History
7636 Who When What
7637 ------------------------------------------------------------------------
7638
7639 ******************************************************************/
7640 PROCEDURE Insert_Dependent_Info (
7641 p_data_rec IN g_dependent_rec_type, -- Data record
7642 p_records IN NUMBER --Number of dependents found
7643 )
7644 IS
7645
7646 l_api_name CONSTANT VARCHAR(30) := 'Insert_Dependent_Info';
7647 l_count NUMBER(10);
7648 l_action VARCHAR2(10);
7649 l_btch_id NUMBER(14);
7650
7651 BEGIN
7652 /* Debug */
7653 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7654 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Dependent_Info';
7655 l_debug_str := 'Entering Insert_Dependent_Info.Number of records being inserted: '||p_records;
7656 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7657 END IF;
7658
7659 FOR l_count IN 1..p_records LOOP
7660 IF p_data_rec(l_count).depdnt_id IS NOT NULL THEN
7661 IF g_person_status = 'NEW' THEN
7662 l_action := g_person_status;
7663 ELSIF p_data_rec(l_count).depdnt_action_type = 'A' THEN
7664 l_action := 'ADD';
7665 ELSIF p_data_rec(l_count).depdnt_action_type = 'U' THEN
7666 l_action := 'EDIT';
7667 ELSIF p_data_rec(l_count).depdnt_action_type = 'T' THEN
7668 l_action := 'TERMINATE';
7669 ELSIF p_data_rec(l_count).depdnt_action_type = 'C' THEN
7670 l_action := 'CANCEL';
7671 ELSIF p_data_rec(l_count).depdnt_action_type = 'R' THEN
7672 l_action := 'REACTIVATE';
7673 ELSIF p_data_rec(l_count).depdnt_action_type = 'E' THEN
7674 l_action := 'END';
7675 -- ELSIF p_data_rec(l_count).print_form = 'Y' THEN
7676 -- l_action := 'REPRINT';
7677 ELSE
7678 l_action := 'DELETE';
7679 END IF;
7680
7681 l_btch_id := chk_mut_exclusive(p_data_rec(l_count).batch_id,
7682 p_data_rec(l_count).person_id,
7683 l_action,
7684 'SV_DEPDNT');
7685 Insert_Summary_Info(l_btch_id,
7686 p_data_rec(l_count).person_id,
7687 l_action,
7688 'SV_DEPDNT',
7689 'SEND',
7690 'IGS_SV_DEPDNT_INFO',
7691 p_data_rec(l_count).depdnt_id);
7692
7693 INSERT INTO igs_sv_depdnt_info (
7694 batch_id ,
7695 person_id ,
7696 depdnt_id ,
7697 print_form ,
7698 person_number ,
7699 depdnt_action_type ,
7700 depdnt_sevis_id ,
7701 visa_type ,
7702 last_name ,
7703 first_name ,
7704 middle_name ,
7705 suffix ,
7706 birth_date ,
7707 gender ,
7708 birth_cntry_code ,
7709 citizen_cntry_code ,
7710 relationship ,
7711 termination_reason ,
7712 relationship_remarks ,
7713 perm_res_cntry_code ,
7714 termination_effect_date,
7715 remarks ,
7716 creation_date ,
7717 created_by ,
7718 last_updated_by ,
7719 last_update_date ,
7720 last_update_login ,
7721 birth_cntry_resn_code
7722 ) VALUES
7723 (l_btch_id , -- prbhardw CP enhancement
7724 p_data_rec(l_count).person_id ,
7725 p_data_rec(l_count).depdnt_id ,
7726 p_data_rec(l_count).print_form ,
7727 p_data_rec(l_count).person_number ,
7728 p_data_rec(l_count).depdnt_action_type ,
7729 p_data_rec(l_count).depdnt_sevis_id ,
7730 p_data_rec(l_count).visa_type ,
7731 p_data_rec(l_count).last_name ,
7732 p_data_rec(l_count).first_name ,
7733 p_data_rec(l_count).middle_name ,
7734 p_data_rec(l_count).suffix ,
7735 p_data_rec(l_count).birth_date ,
7736 p_data_rec(l_count).gender ,
7737 p_data_rec(l_count).birth_cntry_code ,
7738 p_data_rec(l_count).citizen_cntry_code ,
7739 p_data_rec(l_count).relationship ,
7740 p_data_rec(l_count).termination_reason ,
7741 p_data_rec(l_count).relationship_remarks ,
7742 p_data_rec(l_count).perm_res_cntry_code ,
7743 p_data_rec(l_count).termination_effect_date,
7744 p_data_rec(l_count).remarks ,
7745 p_data_rec(l_count).creation_date ,
7746 p_data_rec(l_count).created_by ,
7747 p_data_rec(l_count).last_updated_by ,
7748 p_data_rec(l_count).last_update_date ,
7749 p_data_rec(l_count).last_update_login ,
7750 p_data_rec(l_count).birth_cntry_resn_code
7751 );
7752 END IF;
7753 END LOOP;
7754
7755 EXCEPTION
7756
7757 WHEN OTHERS THEN
7758 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7759 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7760 END IF;
7761 /* Debug */
7762 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7763 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Dependent_Info';
7764 l_debug_str := 'EXCEPTION in Insert_Dependent_Info. '||SQLERRM;
7765 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7766 END IF;
7767 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7768
7769 RAISE;
7770
7771 END Insert_Dependent_Info;
7772
7773
7774 PROCEDURE Insert_Dependent_Info (
7775 p_data_rec IN IGS_SV_DEPDNT_INFO%ROWTYPE --g_dependent_rec_type, -- Data record
7776 -- p_records IN NUMBER --Number of dependents found
7777 )
7778 IS
7779
7780 l_api_name CONSTANT VARCHAR(30) := 'Insert_Dependent_Info';
7781 l_count NUMBER(10);
7782 l_action VARCHAR2(10);
7783 l_btch_id NUMBER(14);
7784
7785 BEGIN
7786 /* Debug */
7787 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7788 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Dependent_Info';
7789 l_debug_str := 'Entering Insert_Dependent_Info.';
7790 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7791 END IF;
7792
7793 IF p_data_rec.depdnt_id IS NOT NULL THEN
7794 IF g_person_status = 'NEW' THEN
7795 l_action := g_person_status;
7796 ELSIF p_data_rec.depdnt_action_type = 'A' THEN
7797 l_action := 'ADD';
7798 ELSIF p_data_rec.depdnt_action_type = 'U' THEN
7799 l_action := 'EDIT';
7800 ELSIF p_data_rec.depdnt_action_type = 'T' THEN
7801 l_action := 'TERMINATE';
7802 ELSIF p_data_rec.depdnt_action_type = 'C' THEN
7803 l_action := 'CANCEL';
7804 ELSIF p_data_rec.depdnt_action_type = 'R' THEN
7805 l_action := 'REACTIVATE';
7806 ELSIF p_data_rec.depdnt_action_type = 'E' THEN
7807 l_action := 'END';
7808 -- ELSIF p_data_rec(l_count).print_form = 'Y' THEN
7809 -- l_action := 'REPRINT';
7810 ELSE
7811 l_action := 'DELETE';
7812 END IF;
7813
7814 l_btch_id := chk_mut_exclusive(p_data_rec.batch_id,
7815 p_data_rec.person_id,
7816 l_action,
7817 'SV_DEPDNT');
7818 Insert_Summary_Info(l_btch_id,
7819 p_data_rec.person_id,
7820 l_action,
7821 'SV_DEPDNT',
7822 'SEND',
7823 'IGS_SV_DEPDNT_INFO',
7824 p_data_rec.depdnt_id);
7825
7826 INSERT INTO igs_sv_depdnt_info (
7827 batch_id ,
7828 person_id ,
7829 depdnt_id ,
7830 print_form ,
7831 person_number ,
7832 depdnt_action_type ,
7833 depdnt_sevis_id ,
7834 visa_type ,
7835 last_name ,
7836 first_name ,
7837 middle_name ,
7838 suffix ,
7839 birth_date ,
7840 gender ,
7841 birth_cntry_code ,
7842 citizen_cntry_code ,
7843 relationship ,
7844 termination_reason ,
7845 relationship_remarks ,
7846 perm_res_cntry_code ,
7847 termination_effect_date,
7848 remarks ,
7849 creation_date ,
7850 created_by ,
7851 last_updated_by ,
7852 last_update_date ,
7853 last_update_login ,
7854 birth_cntry_resn_code
7855 ) VALUES
7856 (l_btch_id , -- prbhardw CP enhancement
7857 p_data_rec.person_id ,
7858 p_data_rec.depdnt_id ,
7859 p_data_rec.print_form ,
7860 p_data_rec.person_number ,
7861 p_data_rec.depdnt_action_type ,
7862 p_data_rec.depdnt_sevis_id ,
7863 p_data_rec.visa_type ,
7864 p_data_rec.last_name ,
7865 p_data_rec.first_name ,
7866 p_data_rec.middle_name ,
7867 p_data_rec.suffix ,
7868 p_data_rec.birth_date ,
7869 p_data_rec.gender ,
7870 p_data_rec.birth_cntry_code ,
7871 p_data_rec.citizen_cntry_code ,
7872 p_data_rec.relationship ,
7873 p_data_rec.termination_reason ,
7874 p_data_rec.relationship_remarks ,
7875 p_data_rec.perm_res_cntry_code ,
7876 p_data_rec.termination_effect_date,
7877 p_data_rec.remarks ,
7878 p_data_rec.creation_date ,
7879 p_data_rec.created_by ,
7880 p_data_rec.last_updated_by ,
7881 p_data_rec.last_update_date ,
7882 p_data_rec.last_update_login ,
7883 p_data_rec.birth_cntry_resn_code
7884 );
7885 END IF;
7886
7887 EXCEPTION
7888
7889 WHEN OTHERS THEN
7890 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7891 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7892 END IF;
7893 /* Debug */
7894 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7895 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Dependent_Info';
7896 l_debug_str := 'EXCEPTION in Insert_Dependent_Info. '||SQLERRM;
7897 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7898 END IF;
7899 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7900
7901 RAISE;
7902
7903 END Insert_Dependent_Info;
7904
7905 /******************************************************************
7906 Created By : Arkadi Tereshenkov
7907
7908 Date Created By : Oct 14, 2002
7909
7910 Purpose : Insert Conviction information on the student.
7911 (IGS_SV_CONVICTIONS).
7912
7913 Remarks :
7914
7915 Change History
7916 Who When What
7917 ------------------------------------------------------------------------
7918
7919 ******************************************************************/
7920 PROCEDURE Insert_Convictions_Info (
7921 p_data_rec IN IGS_SV_CONVICTIONS%ROWTYPE
7922 ) IS
7923
7924 l_api_name CONSTANT VARCHAR(30) := 'Insert_Convictions_Info';
7925 l_count NUMBER(10);
7926
7927 BEGIN
7928 /* Debug */
7929 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7930 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Convictions_Info';
7931 l_debug_str := 'Entering Insert_Convictions_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
7932 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7933 END IF;
7934 Insert_Summary_Info(p_data_rec.batch_id,
7935 p_data_rec.person_id,
7936 g_person_status,
7937 'SV_CONVICTION',
7938 'SEND',
7939 'IGS_SV_CONVICTIONS',
7940 '');
7941 INSERT INTO igs_sv_convictions (
7942 batch_id ,
7943 person_id ,
7944 conviction_id ,
7945 print_form ,
7946 criminal_conviction ,
7947 remarks ,
7948 creation_date ,
7949 created_by ,
7950 last_updated_by ,
7951 last_update_date ,
7952 last_update_login
7953 ) VALUES
7954 (p_data_rec.batch_id ,
7955 p_data_rec.person_id ,
7956 p_data_rec.conviction_id ,
7957 p_data_rec.print_form ,
7958 p_data_rec.criminal_conviction ,
7959 p_data_rec.remarks ,
7960 p_data_rec.creation_date ,
7961 p_data_rec.created_by ,
7962 p_data_rec.last_updated_by ,
7963 p_data_rec.last_update_date ,
7964 p_data_rec.last_update_login
7965 );
7966
7967 EXCEPTION
7968
7969 WHEN OTHERS THEN
7970 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
7971 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
7972 END IF;
7973
7974 /* Debug */
7975 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
7976 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Convictions_Info';
7977 l_debug_str := 'EXCEPTION in Insert_Convictions_Info. '||SQLERRM;
7978 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
7979 END IF;
7980 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
7981
7982 RAISE;
7983
7984 END Insert_Convictions_Info;
7985
7986 /******************************************************************
7987 Created By : Arkadi Tereshenkov
7988
7989 Date Created By : Oct 14, 2002
7990
7991 Purpose : Insert Legal information on the student.
7992 (IGS_SV_LEGAL_INFO).
7993
7994 Remarks :
7995
7996 Change History
7997 Who When What
7998 ------------------------------------------------------------------------
7999
8000 ******************************************************************/
8001 PROCEDURE Insert_Legal_Info (
8002 p_data_rec IN IGS_SV_LEGAL_INFO%ROWTYPE -- Data record
8003 )
8004 IS
8005 l_api_name CONSTANT VARCHAR(30) := 'Insert_Legal_Info';
8006
8007 BEGIN
8008 /* Debug */
8009 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8010 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Legal_Info';
8011 l_debug_str := 'Entering Insert_Legal_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
8012 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8013 END IF;
8014 Insert_Summary_Info(p_data_rec.batch_id,
8015 p_data_rec.person_id,
8016 g_legal_status, --g_person_status, commented for bug 5253779
8017 'SV_LEGAL',
8018 'SEND',
8019 'IGS_SV_LEGAL_INFO',
8020 '');
8021 INSERT INTO igs_sv_legal_info (
8022 batch_id ,
8023 person_id ,
8024 print_form ,
8025 psprt_number ,
8026 psprt_issuing_cntry_code,
8027 psprt_exp_date ,
8028 visa_number ,
8029 visa_issuing_post ,
8030 visa_issuing_cntry_code,
8031 visa_expiration_date ,
8032 i94_number ,
8033 port_of_entry ,
8034 date_of_entry ,
8035 remarks ,
8036 creation_date ,
8037 created_by ,
8038 last_updated_by ,
8039 last_update_date ,
8040 last_update_login ,
8041 VISA_ISSUE_DATE
8042 ) VALUES
8043 (p_data_rec.batch_id ,
8044 p_data_rec.person_id ,
8045 p_data_rec.print_form ,
8046 p_data_rec.psprt_number ,
8047 p_data_rec.psprt_issuing_cntry_code,
8048 p_data_rec.psprt_exp_date ,
8049 p_data_rec.visa_number ,
8050 p_data_rec.visa_issuing_post ,
8051 p_data_rec.visa_issuing_cntry_code,
8052 p_data_rec.visa_expiration_date ,
8053 p_data_rec.i94_number ,
8054 p_data_rec.port_of_entry ,
8055 p_data_rec.date_of_entry ,
8056 p_data_rec.remarks ,
8057 p_data_rec.creation_date ,
8058 p_data_rec.created_by ,
8059 p_data_rec.last_updated_by ,
8060 p_data_rec.last_update_date ,
8061 p_data_rec.last_update_login ,
8062 p_data_rec.VISA_ISSUE_DATE
8063 );
8064
8065 EXCEPTION
8066
8067 WHEN OTHERS THEN
8068 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
8069 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
8070 END IF;
8071
8072 /* Debug */
8073 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8074 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Legal_Info';
8075 l_debug_str := 'EXCEPTION in Insert_Legal_Info. '||SQLERRM;
8076 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8077 END IF;
8078 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
8079
8080 RAISE;
8081
8082 END Insert_Legal_Info;
8083
8084 /******************************************************************
8085 Created By : Arkadi Tereshenkov
8086
8087 Date Created By : Oct 14, 2002
8088
8089 Purpose : Insert employment information on the student
8090 (IGS_SV_EMPL_INFO).
8091
8092 Remarks :
8093
8094 Change History
8095 Who When What
8096 ------------------------------------------------------------------------
8097
8098 ******************************************************************/
8099 PROCEDURE Insert_Empl_Info (
8100 p_data_rec IN IGS_SV_EMPL_INFO%ROWTYPE --Data record
8101 )
8102 IS
8103 l_api_name CONSTANT VARCHAR(30) := 'Insert_Empl_Info';
8104 l_action VARCHAR2(6);
8105 l_tag_code VARCHAR2(30);
8106 l_btch_id NUMBER(14);
8107 BEGIN
8108 /* Debug */
8109 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8110 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Empl_Info';
8111 l_debug_str := 'Entering Insert_Empl_Info. p_data_rec.person_id is '||p_data_rec.person_id|| ' and p_data_rec.batch_id is '||p_data_rec.batch_id;
8112 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8113 END IF;
8114 IF g_person_status = 'NEW' THEN
8115 l_action := g_person_status;
8116 ELSIF p_data_rec.action_code = 'C' THEN
8117 l_action := 'CANCEL';
8118 ELSIF p_data_rec.action_code = 'A' OR p_data_rec.empl_rec_type = 'C' OR p_data_rec.empl_rec_type = 'O' THEN
8119 l_action := 'ADD';
8120 ELSE
8121 l_action := 'EDIT';
8122 END IF;
8123 IF p_data_rec.empl_rec_type = 'C' THEN
8124 l_tag_code := 'SV_CPT_EMPL';
8125 ELSIF p_data_rec.empl_rec_type = 'O' THEN
8126 l_tag_code := 'SV_OPT_EMPL';
8127 ELSE
8128 l_tag_code := 'SV_OFF_EMPL';
8129 END IF;
8130
8131 l_btch_id := chk_mut_exclusive(p_data_rec.batch_id,
8132 p_data_rec.person_id,
8133 l_action,
8134 l_tag_code);
8135 Insert_Summary_Info(l_btch_id,
8136 p_data_rec.person_id,
8137 l_action,
8138 l_tag_code,
8139 'SEND',
8140 'IGS_SV_EMPL_INFO',
8141 p_data_rec.nonimg_empl_id);
8142 /* Debug */
8143 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8144 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
8145 l_debug_str := 'mut_exclusive chk returns '||l_btch_id||' for batch: '||p_data_rec.batch_id||'person: '||p_data_rec.person_id||' action: '||l_action||' tag: '||l_tag_code;
8146 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8147 END IF;
8148
8149 INSERT INTO igs_sv_empl_info (
8150 batch_id ,
8151 person_id ,
8152 nonimg_empl_id ,
8153 empl_rec_type ,
8154 print_form ,
8155 empl_type ,
8156 recommend_empl ,
8157 rescind_empl ,
8158 remarks ,
8159 empl_start_date ,
8160 empl_end_date ,
8161 empl_name ,
8162 empl_time ,
8163 course_relevance ,
8164 empl_addr_line1 ,
8165 empl_addr_line2 ,
8166 city ,
8167 state ,
8168 postal_code ,
8169 creation_date ,
8170 created_by ,
8171 last_updated_by ,
8172 last_update_date ,
8173 last_update_login ,
8174 action_code
8175 ) VALUES
8176 (l_btch_id , --- prbhardw CP enhancement
8177 p_data_rec.person_id ,
8178 p_data_rec.nonimg_empl_id ,
8179 p_data_rec.empl_rec_type ,
8180 p_data_rec.print_form ,
8181 p_data_rec.empl_type ,
8182 p_data_rec.recommend_empl ,
8183 p_data_rec.rescind_empl ,
8184 p_data_rec.remarks ,
8185 p_data_rec.empl_start_date ,
8186 p_data_rec.empl_end_date ,
8187 p_data_rec.empl_name ,
8188 p_data_rec.empl_time ,
8189 p_data_rec.course_relevance ,
8190 p_data_rec.empl_addr_line1 ,
8191 p_data_rec.empl_addr_line2 ,
8192 p_data_rec.city ,
8193 p_data_rec.state ,
8194 p_data_rec.postal_code ,
8195 p_data_rec.creation_date ,
8196 p_data_rec.created_by ,
8197 p_data_rec.last_updated_by ,
8198 p_data_rec.last_update_date ,
8199 p_data_rec.last_update_login ,
8200 p_data_rec.action_code
8201 );
8202
8203 EXCEPTION
8204
8205 WHEN OTHERS THEN
8206 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
8207 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
8208 END IF;
8209 /* Debug */
8210 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8211 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Empl_Info';
8212 l_debug_str := 'EXCEPTION in Insert_Empl_Info. '||SQLERRM;
8213 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8214 END IF;
8215 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
8216
8217 RAISE;
8218
8219 END Insert_Empl_Info;
8220
8221
8222
8223 /******************************************************************
8224 Created By : Arkadi Tereshenkov
8225
8226 Date Created By : Oct 14, 2002
8227
8228 Purpose : Update registration block information.
8229
8230 remarks :
8231
8232 Change History
8233 Who When What
8234 ------------------------------------------------------------------------
8235
8236 ******************************************************************/
8237 FUNCTION Update_Registration_Info (
8238 p_person_rec IN OUT NOCOPY t_student_rec --Person record
8239 ) RETURN VARCHAR2
8240 IS
8241
8242 l_api_name CONSTANT VARCHAR2(30) := 'Update_Registration_Info';
8243
8244 l_cur_rec IGS_SV_LEGAL_INFO%ROWTYPE;
8245 l_status VARCHAR2(1);
8246
8247 l_prev_rec IGS_SV_LEGAL_INFO%ROWTYPE;
8248
8249
8250 -- Old dates
8251 CURSOR c_old_ses_dates IS
8252 SELECT pr.curr_session_end_date,
8253 pr.next_session_start_date,
8254 pr.last_session_flag
8255 FROM igs_sv_persons pr
8256 WHERE pr.person_id = p_person_rec.person_id
8257 AND pr.batch_id IN
8258 ( SELECT max(btch.batch_id)
8259 FROM igs_sv_persons prs,
8260 igs_sv_batches btch,
8261 igs_sv_persons pr
8262 WHERE prs.person_id = pr.person_id
8263 AND prs.batch_id = pr.batch_id
8264 AND pr.record_status <> 'E'
8265 AND prs.batch_id = btch.batch_id
8266 AND btch.batch_type = p_person_rec.batch_type
8267 AND prs.person_id = p_person_rec.person_id
8268 AND pr.curr_session_end_date IS NOT NULL
8269 );
8270
8271 -- Select current session dates.
8272 CURSOR c_ses_dates IS
8273 SELECT to_char(curr_session_end_date,'YYYY-MM-DD') ,
8274 to_char(next_session_start_date ,'YYYY-MM-DD'),
8275 last_session_flag
8276 FROM igs_pe_nonimg_form
8277 WHERE nonimg_form_id = p_person_rec.form_id;
8278
8279 l_start_date igs_sv_persons.curr_session_end_date%TYPE;
8280 l_end_date igs_sv_persons.next_session_start_date%TYPE;
8281 l_old_start_date igs_sv_persons.curr_session_end_date%TYPE;
8282 l_old_end_date igs_sv_persons.next_session_start_date%TYPE;
8283 l_old_session_flag igs_pe_nonimg_form.last_session_flag%TYPE;
8284 l_last_session_flag igs_pe_nonimg_form.last_session_flag%TYPE;
8285 l_f_addr_rec g_address_rec_type;
8286 l_count NUMBER(10);
8287 l_changes_found VARCHAR2(1) := 'N'; --No changes by default
8288
8289
8290 BEGIN
8291 /* Debug */
8292 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8293 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8294 l_debug_str := 'Entering Update_Registration_Info. p_person_rec.person_id is '||p_person_rec.person_id|| ' and p_person_rec.batch_type is '||p_person_rec.batch_type;
8295 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8296 END IF;
8297
8298 Put_Log_Msg(l_api_name||' begins ',0);
8299
8300
8301 --Get current dates
8302 OPEN c_ses_dates;
8303 FETCH c_ses_dates
8304 INTO l_start_date,
8305 l_end_date,
8306 l_last_session_flag;
8307 CLOSE c_ses_dates;
8308
8309 -- Get old dates
8310 OPEN c_old_ses_dates;
8311 FETCH c_old_ses_dates
8312 INTO l_old_start_date,
8313 l_old_end_date,
8314 l_old_session_flag;
8315 CLOSE c_old_ses_dates;
8316
8317
8318 -- Call Validate_Legal_Info
8319
8320 p_person_rec.legal_status := Validate_Legal_Info (p_person_rec => p_person_rec,
8321 p_data_rec => l_cur_rec);
8322
8323
8324 IF p_person_rec.legal_status = 'E' THEN -- Validation error - mark person as invalid
8325
8326 p_person_rec.person_status := 'I';
8327
8328 Put_Log_Msg('Validation error occurs ',1);
8329 /* Debug */
8330 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8331 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8332 l_debug_str := 'Returning S from Update_Registration_Info.';
8333 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8334 END IF;
8335
8336 RETURN 'S';
8337
8338 ELSIF p_person_rec.legal_status = 'U' THEN --Unexpected error - terminate execution
8339
8340 Put_Log_Msg('Unexpected error returned by validation ',1);
8341 /* Debug */
8342 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8343 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8344 l_debug_str := 'Unexpected error in Update_Registration_Info.';
8345 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8346 END IF;
8347
8348 RAISE FND_API.G_EXC_ERROR;
8349
8350 ELSIF p_person_rec.legal_status = 'S' THEN
8351
8352
8353 -- Compare ancial Info
8354 l_prev_rec.person_id := p_person_rec.person_id;
8355
8356 l_status := Get_Legal_Info ( p_data_rec => l_prev_rec);
8357
8358 IF l_status = 'U' THEN
8359 /* Debug */
8360 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8361 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8362 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Registration_Info.';
8363 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8364 END IF;
8365
8366 RAISE FND_API.G_EXC_ERROR;
8367
8368 END IF;
8369
8370 IF l_status = 'N' OR
8371 ( l_prev_rec.psprt_number
8372 ||g_delimeter||l_prev_rec.psprt_issuing_cntry_code
8373 ||g_delimeter||l_prev_rec.psprt_exp_date
8374 ||g_delimeter||l_prev_rec.visa_number
8375 ||g_delimeter||l_prev_rec.visa_issuing_post
8376 ||g_delimeter||l_prev_rec.visa_issuing_cntry_code
8377 ||g_delimeter||l_prev_rec.visa_expiration_date
8378 ||g_delimeter||l_prev_rec.i94_number
8379 ||g_delimeter||l_prev_rec.port_of_entry
8380 ||g_delimeter||l_prev_rec.date_of_entry
8381 ||g_delimeter||l_prev_rec.remarks
8382 ||g_delimeter||l_prev_rec.visa_issue_date <>
8383 l_cur_rec.psprt_number
8384 ||g_delimeter||l_cur_rec.psprt_issuing_cntry_code
8385 ||g_delimeter||l_cur_rec.psprt_exp_date
8386 ||g_delimeter||l_cur_rec.visa_number
8387 ||g_delimeter||l_cur_rec.visa_issuing_post
8388 ||g_delimeter||l_cur_rec.visa_issuing_cntry_code
8389 ||g_delimeter||l_cur_rec.visa_expiration_date
8390 ||g_delimeter||l_cur_rec.i94_number
8391 ||g_delimeter||l_cur_rec.port_of_entry
8392 ||g_delimeter||l_cur_rec.date_of_entry
8393 ||g_delimeter||l_cur_rec.remarks
8394 ||g_delimeter||l_cur_rec.visa_issue_date ) THEN
8395
8396 p_person_rec.legal_status := 'C'; -- Changed
8397 p_person_rec.changes_found := 'Y';
8398
8399 Put_Log_Msg('Legal info is changed ',0);
8400
8401 IF p_person_rec.person_status <> 'I' THEN
8402
8403 Insert_Legal_Info ( p_data_rec => l_cur_rec);
8404
8405 END IF;
8406 -- Call Validate_F_Addr_Info
8407
8408
8409 END IF;
8410
8411 END IF;
8412 IF p_person_rec.legal_status = 'C' OR
8413 ( l_old_start_date <> l_start_date
8414 OR l_old_end_date <> l_end_date
8415 OR ( l_old_start_date IS NULL AND l_start_date IS NOT NULL)
8416 OR ( l_old_end_date IS NULL AND l_end_date IS NOT NULL)
8417 OR (l_old_session_flag <> l_last_session_flag)) THEN --- prbhardw
8418
8419 /* IF l_start_date IS NULL OR l_end_date IS NULL THEN
8420
8421 --Error dates must be not null
8422 Put_Log_Msg('Dates are null return S',0);
8423
8424 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_REG_REQD_FLD_ERR'); --Dates not found
8425 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
8426 Put_Log_Msg(FND_MESSAGE.Get,1);
8427
8428 p_person_rec.person_status := 'I';
8429 /* Debug
8430 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8431 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8432 l_debug_str := 'Returning S from Update_Registration_Info.';
8433 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8434 END IF;
8435
8436 RETURN 'S';
8437
8438 END IF;*/
8439 -- Update session dates for the main record required.
8440
8441 UPDATE igs_sv_persons
8442 SET curr_session_end_date = l_start_date,
8443 next_session_start_date = l_end_date,
8444 last_session_flag = l_last_session_flag ---prbhardw
8445 WHERE person_id = p_person_rec.person_id and
8446 batch_id = p_person_rec.batch_id;
8447
8448 -- Check if legal info is present, not changed and hasn't beet inserted yet.
8449
8450 p_person_rec.changes_found := 'Y';
8451
8452 Put_Log_Msg('Legal info is changed ',0);
8453
8454
8455 -- Foreign address is required
8456
8457 p_person_rec.f_addr_status := Validate_F_Addr_Info (p_person_rec => p_person_rec,
8458 p_data_rec => l_f_addr_rec,
8459 p_records => l_count);
8460
8461 IF p_person_rec.f_addr_status = 'E' THEN -- Validation error - mark person as invalid
8462
8463 p_person_rec.person_status := 'I';
8464
8465 Put_Log_Msg('Validation error occurs - return S ',1);
8466 /* Debug */
8467 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8468 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8469 l_debug_str := 'Returning S from Update_Registration_Info.';
8470 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8471 END IF;
8472
8473 RETURN 'S';
8474
8475 ELSIF p_person_rec.f_addr_status = 'U' THEN --Unexpected error - terminate execution
8476
8477 Put_Log_Msg('Unexpected error returned by validation ',1);
8478
8479 RAISE FND_API.G_EXC_ERROR;
8480
8481 ELSIF p_person_rec.f_addr_status = 'N' THEN -- Not found
8482
8483 Put_Log_Msg('F Address block is not found return S',0);
8484
8485 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_REG_REQD_FLD_ERR'); --f address is not found
8486 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', p_person_rec.person_number);
8487 Put_Log_Msg(FND_MESSAGE.Get,1);
8488
8489 p_person_rec.person_status := 'I';
8490 /* Debug */
8491 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8492 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8493 l_debug_str := 'Returning S from Update_Registration_Info.';
8494 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8495 END IF;
8496
8497 RETURN 'S';
8498
8499 END IF;
8500
8501 END IF;
8502
8503 Put_Log_Msg(l_api_name||' ends ',0);
8504
8505 RETURN 'S';
8506
8507 EXCEPTION
8508
8509 WHEN FND_API.G_EXC_ERROR THEN
8510
8511 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
8512 /* Debug */
8513 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8514 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8515 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_Registration_Info. '||SQLERRM;
8516 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8517 END IF;
8518 RETURN 'U';
8519
8520 WHEN OTHERS THEN
8521
8522 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
8523 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
8524 END IF;
8525
8526 Put_Log_Msg(l_api_name||' OTHERS return U',1);
8527 /* Debug */
8528 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8529 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Registration_Info';
8530 l_debug_str := 'EXCEPTION: Returning U from Update_Registration_Info. '||SQLERRM;
8531 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8532 END IF;
8533 RETURN 'U';
8534
8535 END Update_Registration_Info;
8536
8537
8538 FUNCTION Update_ev_Legal_Info (
8539 p_person_rec IN OUT NOCOPY t_student_rec --Person record
8540 ) RETURN VARCHAR2
8541 IS
8542
8543 l_api_name CONSTANT VARCHAR2(30) := 'Update_ev_Legal_Info';
8544
8545 l_cur_rec IGS_SV_LEGAL_INFO%ROWTYPE;
8546 l_status VARCHAR2(1);
8547
8548 l_prev_rec IGS_SV_LEGAL_INFO%ROWTYPE;
8549
8550 l_count NUMBER(10);
8551 l_changes_found VARCHAR2(1) := 'N'; --No changes by default
8552
8553
8554 BEGIN
8555 /* Debug */
8556 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8557 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_ev_Legal_Info';
8558 l_debug_str := 'Entering Update_ev_Legal_Info. p_person_rec.person_id is '||p_person_rec.person_id|| ' and p_person_rec.batch_type is '||p_person_rec.batch_type;
8559 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8560 END IF;
8561
8562 Put_Log_Msg(l_api_name||' begins ',0);
8563
8564 -- Call Validate_Legal_Info
8565
8566 p_person_rec.legal_status := Validate_ev_Legal_Info (p_person_rec => p_person_rec,
8567 p_data_rec => l_cur_rec);
8568
8569 IF p_person_rec.legal_status = 'E' THEN -- Validation error - mark person as invalid
8570
8571 p_person_rec.person_status := 'I';
8572
8573 Put_Log_Msg('Validation error occurs ',1);
8574 /* Debug */
8575 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8576 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_ev_Legal_Info';
8577 l_debug_str := 'Returning S from Update_ev_Legal_Info.';
8578 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8579 END IF;
8580
8581 RETURN 'S';
8582
8583 ELSIF p_person_rec.legal_status = 'U' THEN --Unexpected error - terminate execution
8584
8585 Put_Log_Msg('Unexpected error returned by validation ',1);
8586 /* Debug */
8587 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8588 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_ev_Legal_Info';
8589 l_debug_str := 'Unexpected error in Update_ev_Legal_Info.';
8590 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8591 END IF;
8592
8593 RAISE FND_API.G_EXC_ERROR;
8594
8595 ELSIF p_person_rec.legal_status = 'S' THEN
8596
8597
8598 -- Compare ancial Info
8599 l_prev_rec.person_id := p_person_rec.person_id;
8600
8601 l_status := Get_Legal_Info ( p_data_rec => l_prev_rec);
8602 IF l_status = 'U' THEN
8603 /* Debug */
8604 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8605 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_ev_Legal_Info';
8606 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_ev_Legal_Info.';
8607 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8608 END IF;
8609
8610 RAISE FND_API.G_EXC_ERROR;
8611
8612 END IF;
8613
8614 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8615 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Previous_Legal_Info';
8616 l_debug_str := 'psprt_issuing_cntry_code=' || l_prev_rec.psprt_issuing_cntry_code;
8617 l_debug_str := l_debug_str || 'psprt_exp_date=' || l_prev_rec.psprt_exp_date;
8618 l_debug_str := l_debug_str || 'visa_number=' || l_prev_rec.visa_number ;
8619 l_debug_str := l_debug_str || 'visa_issuing_post=' || l_prev_rec.visa_issuing_post;
8620 l_debug_str := l_debug_str || 'visa_issuing_cntry_code=' || l_prev_rec.visa_issuing_cntry_code;
8621 l_debug_str := l_debug_str || 'visa_expiration_date=' || l_prev_rec.visa_expiration_date;
8622 l_debug_str := l_debug_str || 'i94_number=' || l_prev_rec.i94_number;
8623 l_debug_str := l_debug_str || 'port_of_entry=' || l_prev_rec.port_of_entry;
8624 l_debug_str := l_debug_str || 'date_of_entry=' || l_prev_rec.date_of_entry;
8625 l_debug_str := l_debug_str || 'remarks=' || l_prev_rec.remarks;
8626 l_debug_str := l_debug_str || 'visa_issue_date=' || l_prev_rec.visa_issue_date ;
8627 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8628 END IF;
8629
8630 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8631 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Current_Legal_Info';
8632 l_debug_str := 'psprt_issuing_cntry_code=' || l_cur_rec.psprt_issuing_cntry_code;
8633 l_debug_str := l_debug_str || 'psprt_exp_date=' || l_cur_rec.psprt_exp_date;
8634 l_debug_str := l_debug_str || 'visa_number=' || l_cur_rec.visa_number ;
8635 l_debug_str := l_debug_str || 'visa_issuing_post=' || l_cur_rec.visa_issuing_post;
8636 l_debug_str := l_debug_str || 'visa_issuing_cntry_code=' || l_cur_rec.visa_issuing_cntry_code;
8637 l_debug_str := l_debug_str || 'visa_expiration_date=' || l_cur_rec.visa_expiration_date;
8638 l_debug_str := l_debug_str || 'i94_number=' || l_cur_rec.i94_number;
8639 l_debug_str := l_debug_str || 'port_of_entry=' || l_cur_rec.port_of_entry;
8640 l_debug_str := l_debug_str || 'date_of_entry=' || l_cur_rec.date_of_entry;
8641 l_debug_str := l_debug_str || 'remarks=' || l_cur_rec.remarks;
8642 l_debug_str := l_debug_str || 'visa_issue_date=' || l_cur_rec.visa_issue_date ;
8643 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8644 END IF;
8645
8646 IF l_status = 'N' OR
8647 ( l_prev_rec.psprt_number
8648 ||g_delimeter||l_prev_rec.psprt_issuing_cntry_code
8649 ||g_delimeter||l_prev_rec.psprt_exp_date
8650 ||g_delimeter||l_prev_rec.visa_number
8651 ||g_delimeter||l_prev_rec.visa_issuing_post
8652 ||g_delimeter||l_prev_rec.visa_issuing_cntry_code
8653 ||g_delimeter||l_prev_rec.visa_expiration_date
8654 ||g_delimeter||l_prev_rec.i94_number
8655 ||g_delimeter||l_prev_rec.port_of_entry
8656 ||g_delimeter||l_prev_rec.date_of_entry
8657 ||g_delimeter||l_prev_rec.remarks
8658 ||g_delimeter||l_prev_rec.visa_issue_date <>
8659 l_cur_rec.psprt_number
8660 ||g_delimeter||l_cur_rec.psprt_issuing_cntry_code
8661 ||g_delimeter||l_cur_rec.psprt_exp_date
8662 ||g_delimeter||l_cur_rec.visa_number
8663 ||g_delimeter||l_cur_rec.visa_issuing_post
8664 ||g_delimeter||l_cur_rec.visa_issuing_cntry_code
8665 ||g_delimeter||l_cur_rec.visa_expiration_date
8666 ||g_delimeter||l_cur_rec.i94_number
8667 ||g_delimeter||l_cur_rec.port_of_entry
8668 ||g_delimeter||l_cur_rec.date_of_entry
8669 ||g_delimeter||l_cur_rec.remarks
8670 ||g_delimeter||l_cur_rec.visa_issue_date) THEN
8671
8672 p_person_rec.legal_status := 'C'; -- Changed
8673 p_person_rec.changes_found := 'Y';
8674
8675 Put_Log_Msg('Legal info is changed ',0);
8676
8677 IF p_person_rec.person_status <> 'I' THEN
8678
8679 Insert_Legal_Info ( p_data_rec => l_cur_rec);
8680
8681 END IF;
8682
8683
8684 END IF;
8685
8686 END IF;
8687
8688 Put_Log_Msg(l_api_name||' ends ',0);
8689
8690 RETURN 'S';
8691
8692 EXCEPTION
8693
8694 WHEN FND_API.G_EXC_ERROR THEN
8695
8696 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
8697 /* Debug */
8698 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8699 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_ev_Legal_Info';
8700 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_ev_Legal_Info. '||SQLERRM;
8701 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8702 END IF;
8703 RETURN 'U';
8704
8705 WHEN OTHERS THEN
8706
8707 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
8708 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
8709 END IF;
8710
8711 Put_Log_Msg(l_api_name||' OTHERS return U',1);
8712 /* Debug */
8713 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8714 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_ev_Legal_Info';
8715 l_debug_str := 'EXCEPTION: Returning U from Update_ev_Legal_Info. '||SQLERRM;
8716 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8717 END IF;
8718 RETURN 'U';
8719
8720 END Update_ev_Legal_Info;
8721
8722 /******************************************************************
8723 Created By : Arkadi Tereshenkov
8724
8725 Date Created By : Oct 14, 2002
8726
8727 Purpose : Update registration block information.
8728
8729 remarks :
8730
8731 Change History
8732 Who When What
8733 pkpatel 30-JUN-2003 Bug 2908378
8734 Checked the status of Get_Address_Info properly.
8735 ------------------------------------------------------------------------
8736
8737 ******************************************************************/
8738 FUNCTION Update_EV_Address_Info (
8739 p_person_rec IN OUT NOCOPY t_student_rec --Person record
8740 ) RETURN VARCHAR2
8741 IS
8742
8743 l_api_name CONSTANT VARCHAR2(30) := 'Update_EV_Address_Info';
8744 l_status VARCHAR2(1);
8745
8746
8747 -- Old dates
8748 CURSOR c_valid IS
8749 SELECT is_valid
8750 FROM igs_pe_ev_form
8751 WHERE ev_form_id = p_person_rec.form_id;
8752
8753 -- Select current session dates.
8754
8755 l_valid VARCHAR2(1);
8756 l_statsite VARCHAR2(1);
8757 l_us_addr_rec g_address_rec_type;
8758 l_count NUMBER(10);
8759 l_cur NUMBER(10);
8760 l_changes_found VARCHAR2(1) := 'N'; --No changes by default
8761 l_prev_us_addr_rec IGS_SV_ADDRESSES%ROWTYPE;
8762
8763 l_site_addr_rec g_address_rec_type;
8764 l_prev_site_addr_rec IGS_SV_ADDRESSES%ROWTYPE;
8765
8766
8767
8768 BEGIN
8769
8770 Put_Log_Msg(l_api_name||' begins ',0);
8771 /* Debug */
8772 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8773 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8774 l_debug_str := 'Entering Update_EV_Address_Info. p_person_rec.form_id is '||p_person_rec.form_id;
8775 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8776 END IF;
8777
8778
8779 --Get valid flag
8780
8781 OPEN c_valid;
8782 FETCH c_valid INTO l_valid;
8783 CLOSE c_valid;
8784
8785 -- Foreign address is required
8786
8787 p_person_rec.us_addr_status := Validate_US_Addr_Info (p_person_rec => p_person_rec,
8788 p_data_rec => l_us_addr_rec,
8789 p_records => l_count);
8790
8791
8792 IF p_person_rec.us_addr_status = 'E' THEN -- Validation error - mark person as invalid
8793
8794 p_person_rec.person_status := 'I';
8795
8796 Put_Log_Msg('Validation error occurs - return S ',1);
8797 /* Debug */
8798 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8799 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8800 l_debug_str := 'Returning S from Update_EV_Address_Info.';
8801 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8802 END IF;
8803
8804 RETURN 'S';
8805
8806 ELSIF p_person_rec.us_addr_status = 'U' THEN --Unexpected error - terminate execution
8807
8808 Put_Log_Msg('Unexpected error returned by validation ',1);
8809 /* Debug */
8810 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8811 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8812 l_debug_str := 'Unexpected error in Update_EV_Address_Info.';
8813 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8814 END IF;
8815
8816 RAISE FND_API.G_EXC_ERROR;
8817
8818 ELSIF p_person_rec.us_addr_status = 'N' THEN -- Not found
8819
8820 Put_Log_Msg('US Address block is not found return S',0);
8821
8822 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_NO_US_ADDR_FLD_ERR'); --US address is not found
8823 Put_Log_Msg(FND_MESSAGE.Get,1);
8824
8825 p_person_rec.person_status := 'I';
8826 /* Debug */
8827 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8828 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8829 l_debug_str := 'Returning S from Update_EV_Address_Info.';
8830 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8831 END IF;
8832
8833 RETURN 'S';
8834
8835 END IF;
8836
8837 -- Get old record and compare
8838
8839 l_us_addr_rec(1).STDNT_VALID_FLAG := l_valid;
8840 l_prev_us_addr_rec.party_site_id := l_us_addr_rec(1).party_site_id ;
8841 l_prev_us_addr_rec.person_id := l_us_addr_rec(1).person_id ;
8842
8843 l_status := Get_Address_Info ( p_data_rec => l_prev_us_addr_rec);
8844
8845 IF l_status = 'S' THEN
8846
8847 IF l_prev_us_addr_rec.address_line1
8848 ||g_delimeter||l_prev_us_addr_rec.address_line2
8849 ||g_delimeter||l_prev_us_addr_rec.city
8850 ||g_delimeter||l_prev_us_addr_rec.state
8851 ||g_delimeter||l_prev_us_addr_rec.postal_code
8852 ||g_delimeter||l_prev_us_addr_rec.postal_routing_code
8853 ||g_delimeter||l_prev_us_addr_rec.country_code
8854 ||g_delimeter||l_prev_us_addr_rec.province
8855 --||g_delimeter||l_prev_us_addr_rec.stdnt_valid_flag
8856 ||g_delimeter||l_prev_us_addr_rec.primary_flag <>
8857 l_us_addr_rec(1).address_line1
8858 ||g_delimeter||l_us_addr_rec(1).address_line2
8859 ||g_delimeter||l_us_addr_rec(1).city
8860 ||g_delimeter||l_us_addr_rec(1).state
8861 ||g_delimeter||l_us_addr_rec(1).postal_code
8862 ||g_delimeter||l_us_addr_rec(1).postal_routing_code
8863 ||g_delimeter||l_us_addr_rec(1).country_code
8864 ||g_delimeter||l_us_addr_rec(1).province
8865 --||g_delimeter||l_us_addr_rec(1).stdnt_valid_flag
8866 ||g_delimeter||l_us_addr_rec(1).primary_flag THEN
8867 p_person_rec.us_addr_status := 'C'; -- Changed
8868 p_person_rec.changes_found := 'Y';
8869
8870 Put_Log_Msg('US address is changed ',0);
8871
8872 -- 2908378 this end if was placed at the end, hence the job was errored out when there is no change in address
8873 END IF;
8874
8875 ELSIF l_status = 'N' THEN
8876
8877 --Not found
8878
8879 Put_Log_Msg('US info is changed - no prev record ',0);
8880 p_person_rec.us_addr_status := 'C';
8881 p_person_rec.changes_found := 'Y';
8882
8883 ELSE
8884 --Error found l_status = 'U'
8885 /* Debug */
8886 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8887 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8888 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_EV_Address_Info.';
8889 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8890 END IF;
8891 RAISE FND_API.G_EXC_ERROR;
8892
8893 END IF;
8894
8895 IF p_person_rec.us_addr_status = 'C' AND p_person_rec.person_status <> 'I' THEN
8896 Insert_Address_Info ('US', p_data_rec => l_us_addr_rec,p_records => 1);
8897 END IF;
8898 IF p_person_rec.person_status <> 'I' THEN --Check if site of activity is changed
8899
8900
8901 --Check site of activity
8902 p_person_rec.us_addr_status := Validate_Site_Info (p_person_rec => p_person_rec,
8903 p_data_rec => l_site_addr_rec,
8904 p_records => l_count);
8905 IF p_person_rec.us_addr_status = 'E' THEN -- Validation error - mark person as invalid
8906
8907 p_person_rec.person_status := 'I';
8908
8909 Put_Log_Msg('Validation error occurs - return S ',1);
8910 /* Debug */
8911 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8912 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8913 l_debug_str := 'Returning S from Update_EV_Address_Info. us_addr_status is E';
8914 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8915 END IF;
8916
8917 RETURN 'S';
8918
8919 ELSIF p_person_rec.us_addr_status = 'U' THEN --Unexpected error - terminate execution
8920
8921 Put_Log_Msg('Unexpected error returned by validation ',1);
8922 /* Debug */
8923 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8924 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8925 l_debug_str := 'ERROR in Update_EV_Address_Info. us_addr_status is U';
8926 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8927 END IF;
8928
8929 RAISE FND_API.G_EXC_ERROR;
8930
8931 ELSIF p_person_rec.us_addr_status = 'N' THEN -- Not found
8932
8933 Put_Log_Msg('Site of activity Address block is not found return S',0);
8934 /* Debug */
8935 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8936 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
8937 l_debug_str := 'Returning S from Update_EV_Address_Info. us_addr_status is N';
8938 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8939 END IF;
8940
8941 RETURN 'S';
8942
8943 END IF;
8944
8945 -- Get old record and compare
8946 p_person_rec.site_addr_status := 'N';
8947
8948 FOR l_cur IN 1..l_count LOOP
8949
8950 l_prev_site_addr_rec.party_site_id := l_site_addr_rec(l_cur).party_site_id ;
8951 l_prev_site_addr_rec.person_id := l_site_addr_rec(l_cur).person_id ;
8952
8953 l_statsite := Get_Address_Info ( p_data_rec => l_prev_site_addr_rec);
8954
8955
8956
8957 --manoj starts
8958 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8959 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Previous_Site_Info';
8960 l_debug_str := 'address_line1=' || l_prev_site_addr_rec.address_line1;
8961 l_debug_str := l_debug_str || 'address_line2=' || l_prev_site_addr_rec.address_line2;
8962 l_debug_str := l_debug_str || 'city=' || l_prev_site_addr_rec.city ;
8963 l_debug_str := l_debug_str || 'state=' || l_prev_site_addr_rec.state;
8964 l_debug_str := l_debug_str || 'postal_code=' || l_prev_site_addr_rec.postal_code;
8965 l_debug_str := l_debug_str || 'postal_routing_code=' || l_prev_site_addr_rec.postal_routing_code;
8966 l_debug_str := l_debug_str || 'country_code=' || l_prev_site_addr_rec.country_code;
8967 l_debug_str := l_debug_str || 'province=' || l_prev_site_addr_rec.province;
8968 l_debug_str := l_debug_str || 'primary_flag=' || l_prev_site_addr_rec.primary_flag;
8969 l_debug_str := l_debug_str || 'activity_site_cd=' || l_prev_site_addr_rec.activity_site_cd;
8970 l_debug_str := l_debug_str || 'remarks=' || l_prev_site_addr_rec.remarks ;
8971 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8972 END IF;
8973
8974 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
8975 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Current_Site_Info';
8976 l_debug_str := 'address_line1=' || l_site_addr_rec(l_cur).address_line1;
8977 l_debug_str := l_debug_str || 'address_line2=' || l_site_addr_rec(l_cur).address_line2;
8978 l_debug_str := l_debug_str || 'city=' || l_site_addr_rec(l_cur).city ;
8979 l_debug_str := l_debug_str || 'state=' || l_site_addr_rec(l_cur).state;
8980 l_debug_str := l_debug_str || 'postal_code=' || l_site_addr_rec(l_cur).postal_code;
8981 l_debug_str := l_debug_str || 'postal_routing_code=' || l_site_addr_rec(l_cur).postal_routing_code;
8982 l_debug_str := l_debug_str || 'country_code=' || l_site_addr_rec(l_cur).country_code;
8983 l_debug_str := l_debug_str || 'province=' || l_site_addr_rec(l_cur).province;
8984 l_debug_str := l_debug_str || 'primary_flag=' || l_site_addr_rec(l_cur).primary_flag;
8985 l_debug_str := l_debug_str || 'activity_site_cd=' || l_site_addr_rec(l_cur).activity_site_cd;
8986 l_debug_str := l_debug_str || 'remarks=' || l_site_addr_rec(l_cur).remarks ;
8987 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
8988 END IF;
8989 --manoj ends
8990
8991 IF l_statsite = 'N' THEN
8992
8993 --Not found
8994
8995 Put_Log_Msg('site info is changed - no prev record ',0);
8996 p_person_rec.site_addr_status := 'C';
8997 p_person_rec.changes_found := 'Y';
8998
8999 ELSIF l_statsite = 'S' THEN
9000
9001 IF l_prev_site_addr_rec.action_type = 'U' THEN
9002
9003 l_prev_site_addr_rec.action_type := 'C';
9004 p_person_rec.changes_found := 'Y';
9005 END IF;
9006
9007 IF l_site_addr_rec(l_cur).action_type ='D' AND l_prev_site_addr_rec.action_type <> 'D' THEN
9008 p_person_rec.site_addr_status := 'C';
9009 p_person_rec.changes_found := 'Y';
9010 ELSIF l_site_addr_rec(l_cur).action_type <> 'D' AND l_prev_site_addr_rec.action_type = 'D' THEN
9011 p_person_rec.site_addr_status := 'C';
9012 p_person_rec.changes_found := 'Y';
9013 ELSIF l_prev_site_addr_rec.address_line1
9014 ||g_delimeter||l_prev_site_addr_rec.address_line2
9015 ||g_delimeter||l_prev_site_addr_rec.city
9016 ||g_delimeter||l_prev_site_addr_rec.state
9017 ||g_delimeter||l_prev_site_addr_rec.postal_code
9018 ||g_delimeter||l_prev_site_addr_rec.postal_routing_code
9019 ||g_delimeter||l_prev_site_addr_rec.country_code
9020 ||g_delimeter||l_prev_site_addr_rec.province
9021 --||g_delimeter||l_prev_site_addr_rec.stdnt_valid_flag
9022 ||g_delimeter||l_prev_site_addr_rec.primary_flag
9023 ||g_delimeter||l_prev_site_addr_rec.activity_site_cd
9024 ||g_delimeter||l_prev_site_addr_rec.remarks <>
9025 l_site_addr_rec(l_cur).address_line1
9026 ||g_delimeter||l_site_addr_rec(l_cur).address_line2
9027 ||g_delimeter||l_site_addr_rec(l_cur).city
9028 ||g_delimeter||l_site_addr_rec(l_cur).state
9029 ||g_delimeter||l_site_addr_rec(l_cur).postal_code
9030 ||g_delimeter||l_site_addr_rec(l_cur).postal_routing_code
9031 ||g_delimeter||l_site_addr_rec(l_cur).country_code
9032 ||g_delimeter||l_site_addr_rec(l_cur).province
9033 --||g_delimeter||l_site_addr_rec(l_cur).stdnt_valid_flag
9034 ||g_delimeter||l_site_addr_rec(l_cur).primary_flag
9035 ||g_delimeter||l_site_addr_rec(l_cur).activity_site_cd
9036 ||g_delimeter||l_site_addr_rec(l_cur).remarks THEN
9037
9038 p_person_rec.site_addr_status := 'C'; -- Changed
9039 p_person_rec.changes_found := 'Y';
9040
9041 l_site_addr_rec(l_cur).action_type := 'U';
9042
9043 Put_Log_Msg('site address is changed ',0);
9044 ELSE
9045
9046 l_site_addr_rec(l_cur).batch_id :=NULL; -- delete from insert
9047
9048 END IF;
9049
9050 ELSE
9051 --Error found l_statsite = 'U'
9052 /* Debug */
9053 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9054 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
9055 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_EV_Address_Info.';
9056 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9057 END IF;
9058
9059 RAISE FND_API.G_EXC_ERROR;
9060
9061 END IF;
9062
9063 /* IF p_person_rec.changes_found = 'Y' THEN
9064 -- one address only
9065 /* Debug
9066 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9067 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
9068 l_debug_str := 'changes_found is Y. Exiting Update_EV_Address_Info.';
9069 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9070 END IF;
9071 EXIT;
9072
9073 END IF;*/
9074
9075 END LOOP;
9076
9077 IF p_person_rec.site_addr_status = 'C' AND p_person_rec.person_status <> 'I' THEN
9078
9079 Insert_Address_Info ('SOA', p_data_rec => l_site_addr_rec,p_records => l_count);
9080
9081 END IF;
9082 END IF;
9083
9084
9085 Put_Log_Msg(l_api_name||' ends ',0);
9086 /* Debug */
9087 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9088 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
9089 l_debug_str := 'Returning S from Update_EV_Address_Info.';
9090 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9091 END IF;
9092
9093 RETURN 'S';
9094
9095 EXCEPTION
9096
9097 WHEN FND_API.G_EXC_ERROR THEN
9098
9099 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
9100 /* Debug */
9101 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9102 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
9103 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_EV_Address_Info. '||SQLERRM;
9104 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9105 END IF;
9106 RETURN 'U';
9107
9108 WHEN OTHERS THEN
9109
9110 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
9111 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
9112 END IF;
9113
9114 Put_Log_Msg(l_api_name||' OTHERS return U',1);
9115 /* Debug */
9116 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9117 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Address_Info';
9118 l_debug_str := 'EXCEPTION: Returning U from Update_EV_Address_Info. '||SQLERRM;
9119 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9120 END IF;
9121
9122 RETURN 'U';
9123
9124 END Update_EV_Address_Info;
9125
9126
9127
9128 /******************************************************************
9129 Created By : Arkadi Tereshenkov
9130
9131 Date Created By : Oct 14, 2002
9132
9133 Purpose : Update Personal information block.
9134
9135 Remarks : 'S' - success
9136 'U' - Unexpected error
9137
9138 Change History
9139 Who When What
9140 ------------------------------------------------------------------------
9141
9142 ******************************************************************/
9143 FUNCTION Update_Personal_Info (
9144 p_person_rec IN OUT NOCOPY t_student_rec --Person record
9145 ) RETURN VARCHAR2
9146 IS
9147
9148 l_api_name CONSTANT VARCHAR2(30) := 'Update_Personal_Info';
9149 l_bio_rec IGS_SV_BIO_INFO%ROWTYPE;
9150 l_oth_rec IGS_SV_OTH_INFO%ROWTYPE;
9151 l_f_addr_rec g_address_rec_type;
9152 l_us_addr_rec g_address_rec_type;
9153 l_count NUMBER(10);
9154 l_changes_found VARCHAR2(1) := 'N'; --No changes by default
9155 l_status VARCHAR2(1);
9156
9157 l_prev_bio_rec IGS_SV_BIO_INFO%ROWTYPE;
9158 l_prev_oth_rec IGS_SV_OTH_INFO%ROWTYPE;
9159 l_prev_f_addr_rec IGS_SV_ADDRESSES%ROWTYPE;
9160 l_prev_us_addr_rec IGS_SV_ADDRESSES%ROWTYPE;
9161
9162
9163 BEGIN
9164 /* Debug */
9165 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9166 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9167 l_debug_str := 'Entering Update_Personal_Info. p_person_rec.person_id is '||p_person_rec.person_id;
9168 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9169 END IF;
9170
9171 Put_Log_Msg(l_api_name||' begins ',0);
9172
9173
9174 -- Call Validate_Bio_Info
9175
9176 p_person_rec.bio_status := Validate_Bio_Info (p_person_rec =>p_person_rec,
9177 p_data_rec => l_bio_rec);
9178
9179 IF p_person_rec.batch_type = 'I' THEN
9180 -- Call Validate_Other_Info
9181
9182 p_person_rec.other_status := Validate_Other_Info (p_person_rec => p_person_rec,
9183 p_data_rec => l_oth_rec);
9184
9185 -- Call Validate_F_Addr_Info
9186
9187 p_person_rec.f_addr_status := Validate_F_Addr_Info (p_person_rec => p_person_rec,
9188 p_data_rec => l_f_addr_rec,
9189 p_records => l_count);
9190
9191
9192 -- Call Validate_US_address_Info
9193
9194 p_person_rec.us_addr_status := Validate_Us_Addr_Info (p_person_rec => p_person_rec,
9195 p_data_rec => l_us_addr_rec,
9196 p_records => l_count);
9197
9198 ELSE
9199
9200 p_person_rec.other_status := 'N';
9201 p_person_rec.f_addr_status := 'N';
9202 p_person_rec.us_addr_status := 'N';
9203
9204 END IF;
9205
9206 IF p_person_rec.bio_status = 'E'
9207 OR p_person_rec.other_status = 'E'
9208 OR p_person_rec.f_addr_status = 'E'
9209 OR p_person_rec.us_addr_status = 'E' THEN -- Validation error - mark person as invalid
9210
9211 p_person_rec.person_status := 'I';
9212
9213 Put_Log_Msg('UPI - Validation error occurs ',1);
9214 /* Debug */
9215 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9216 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9217 l_debug_str := 'Returning S from Update_Personal_Info.';
9218 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9219 END IF;
9220
9221 RETURN 'S';
9222
9223 END IF;
9224
9225 IF ( p_person_rec.bio_status = 'U'
9226 OR p_person_rec.other_status = 'U'
9227 OR p_person_rec.f_addr_status = 'U'
9228 OR p_person_rec.us_addr_status = 'U') THEN --Unexpected error - terminate execution
9229
9230 Put_Log_Msg('UPI - unexpected error returned by validation ',1);
9231 /* Debug */
9232 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9233 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9234 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Personal_Info.';
9235 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9236 END IF;
9237
9238 RAISE FND_API.G_EXC_ERROR;
9239
9240 ELSIF p_person_rec.bio_status = 'N' THEN -- Not found
9241
9242 -- These are I-20 blocks and should be found. If this happens - its a bug
9243
9244 Put_Log_Msg('UPI BIO block is not found ',1);
9245 /* Debug */
9246 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9247 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9248 l_debug_str := 'IGS_SV_UNEXP_EXCPT_ERR in Update_Personal_Info. bio_status is N';
9249 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9250 END IF;
9251
9252
9253
9254 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_UNEXP_EXCPT_ERR'); -- I-20 is missing! Unexpected error
9255 FND_MESSAGE.SET_TOKEN('BLOCK_ID',2);
9256 FND_MSG_PUB.Add;
9257
9258 RAISE FND_API.G_EXC_ERROR;
9259
9260 END IF;
9261
9262 -- Compare BIO
9263 l_prev_bio_rec.person_id := l_bio_rec.person_id;
9264
9265 l_status := Get_Bio_Info ( p_data_rec => l_prev_bio_rec);
9266
9267 IF l_status = 'U' THEN
9268 /* Debug */
9269 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9270 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9271 l_debug_str := 'FND_API.G_EXC_ERROR in Update_Personal_Info. l_status is U';
9272 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9273 END IF;
9274 RAISE FND_API.G_EXC_ERROR;
9275
9276 END IF;
9277
9278 IF l_prev_bio_rec.birth_date
9279 ||g_delimeter||l_prev_bio_rec.birth_cntry_code
9280 ||g_delimeter||l_prev_bio_rec.citizen_cntry_code
9281 ||g_delimeter||l_prev_bio_rec.last_name
9282 ||g_delimeter||l_prev_bio_rec.middle_name
9283 ||g_delimeter||l_prev_bio_rec.first_name
9284 ||g_delimeter||l_prev_bio_rec.suffix
9285 ||g_delimeter||l_prev_bio_rec.gender
9286 ||g_delimeter||l_prev_bio_rec.legal_res_cntry_code
9287 ||g_delimeter||l_prev_bio_rec.position_code
9288 ||g_delimeter||l_prev_bio_rec.remarks
9289 ||g_delimeter||l_prev_bio_rec.commuter
9290 ||g_delimeter||l_prev_bio_rec.birth_cntry_resn_code
9291 ||g_delimeter||l_prev_bio_rec.birth_city <>
9292 l_bio_rec.birth_date
9293 ||g_delimeter||l_bio_rec.birth_cntry_code
9294 ||g_delimeter||l_bio_rec.citizen_cntry_code
9295 ||g_delimeter||l_bio_rec.last_name
9296 ||g_delimeter||l_bio_rec.middle_name
9297 ||g_delimeter||l_bio_rec.first_name
9298 ||g_delimeter||l_bio_rec.suffix
9299 ||g_delimeter||l_bio_rec.gender
9300 ||g_delimeter||l_bio_rec.legal_res_cntry_code
9301 ||g_delimeter||l_bio_rec.position_code
9302 ||g_delimeter||l_bio_rec.remarks
9303 ||g_delimeter||l_bio_rec.commuter
9304 ||g_delimeter||l_bio_rec.birth_cntry_resn_code
9305 ||g_delimeter||l_bio_rec.birth_city THEN
9306
9307 p_person_rec.bio_status := 'C'; -- Changed
9308 p_person_rec.changes_found := 'Y';
9309 Put_Log_Msg('Bio info is changed ',0);
9310 /* Debug */
9311 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9312 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9313 l_debug_str := 'Bio Info changed. l_prev_bio_rec.citizen_cntry_code '||l_prev_bio_rec.citizen_cntry_code||' and l_bio_rec.citizen_cntry_code:'||l_bio_rec.citizen_cntry_code;
9314 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9315 END IF;
9316
9317 END IF;
9318
9319 -- Get other
9320 IF p_person_rec.other_status = 'S' THEN --Found new info
9321
9322 l_prev_oth_rec.person_id := l_oth_rec.person_id;
9323
9324 l_status := Get_Other_Info ( p_data_rec => l_prev_oth_rec);
9325
9326 IF l_status = 'S' THEN
9327
9328 IF l_prev_oth_rec.drivers_license
9329 ||g_delimeter||l_prev_oth_rec.drivers_license_state
9330 ||g_delimeter||l_prev_oth_rec.ssn
9331 ||g_delimeter||l_prev_oth_rec.tax_id <>
9332 l_oth_rec.drivers_license
9333 ||g_delimeter||l_oth_rec.drivers_license_state
9334 ||g_delimeter||l_oth_rec.ssn
9335 ||g_delimeter||l_oth_rec.tax_id THEN
9336
9337 p_person_rec.other_status := 'C'; -- Changed
9338 Put_Log_Msg('Other info is changed ',0);
9339 p_person_rec.changes_found := 'Y';
9340
9341 END IF;
9342
9343 ELSIF l_status = 'N' THEN
9344
9345 --Not found
9346 Put_Log_Msg('Other info is changed ',0);
9347 p_person_rec.other_status := 'C';
9348 p_person_rec.changes_found := 'Y';
9349
9350
9351 ELSE
9352
9353 --Error found l_status = 'U'
9354 /* Debug */
9355 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9356 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9357 l_debug_str := 'FND_API.G_EXC_ERROR in Update_Personal_Info.';
9358 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9359 END IF;
9360
9361 RAISE FND_API.G_EXC_ERROR;
9362
9363 END IF;
9364
9365 END IF; --End of read and compare
9366
9367 -- Compare Address
9368
9369 IF p_person_rec.f_addr_status = 'S' THEN --Found new info
9370
9371 l_prev_f_addr_rec.person_id := l_f_addr_rec(1).person_id ;
9372 l_prev_f_addr_rec.party_site_id := l_f_addr_rec(1).party_site_id ;
9373
9374 l_status := Get_Address_Info ( p_data_rec => l_prev_f_addr_rec);
9375
9376 IF l_status = 'S' THEN
9377
9378 IF l_prev_f_addr_rec.address_line1
9379 ||g_delimeter||l_prev_f_addr_rec.address_line2
9380 ||g_delimeter||l_prev_f_addr_rec.city
9381 ||g_delimeter||l_prev_f_addr_rec.state
9382 ||g_delimeter||l_prev_f_addr_rec.postal_code
9383 ||g_delimeter||l_prev_f_addr_rec.postal_routing_code
9384 ||g_delimeter||l_prev_f_addr_rec.country_code
9385 ||g_delimeter||l_prev_f_addr_rec.province
9386 -- ||g_delimeter||l_prev_f_addr_rec.stdnt_valid_flag
9387 ||g_delimeter||l_prev_f_addr_rec.primary_flag <>
9388 l_f_addr_rec(1).address_line1
9389 ||g_delimeter||l_f_addr_rec(1).address_line2
9390 ||g_delimeter||l_f_addr_rec(1).city
9391 ||g_delimeter||l_f_addr_rec(1).state
9392 ||g_delimeter||l_f_addr_rec(1).postal_code
9393 ||g_delimeter||l_f_addr_rec(1).postal_routing_code
9394 ||g_delimeter||l_f_addr_rec(1).country_code
9395 ||g_delimeter||l_f_addr_rec(1).province
9396 -- ||g_delimeter||l_f_addr_rec(1).stdnt_valid_flag
9397 ||g_delimeter||l_f_addr_rec(1).primary_flag THEN
9398
9399 p_person_rec.f_addr_status := 'C'; -- Changed
9400
9401 p_person_rec.changes_found := 'Y';
9402 Put_Log_Msg('F Address is changed',0);
9403
9404 END IF;
9405
9406 ELSIF l_status = 'N' THEN
9407
9408 --Not found
9409
9410 Put_Log_Msg('F address info is changed ',0);
9411 p_person_rec.f_addr_status := 'C';
9412 p_person_rec.changes_found := 'Y';
9413
9414 ELSE
9415
9416 --Error found l_status = 'U'
9417 /* Debug */
9418 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9419 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9420 l_debug_str := 'FND_API.G_EXC_ERROR in Update_Personal_Info. f_addr_status is S';
9421 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9422 END IF;
9423
9424 RAISE FND_API.G_EXC_ERROR;
9425
9426 END IF;
9427
9428 END IF; --End of read and compare
9429
9430
9431 IF p_person_rec.us_addr_status = 'S' THEN --Found new info
9432
9433 l_prev_us_addr_rec.party_site_id := l_us_addr_rec(1).party_site_id ;
9434 l_prev_us_addr_rec.person_id := l_us_addr_rec(1).person_id ;
9435
9436 l_status := Get_Address_Info ( p_data_rec => l_prev_us_addr_rec);
9437
9438 IF l_status = 'S' THEN
9439
9440 IF l_prev_us_addr_rec.address_line1
9441 ||g_delimeter||l_prev_us_addr_rec.address_line2
9442 ||g_delimeter||l_prev_us_addr_rec.city
9443 ||g_delimeter||l_prev_us_addr_rec.state
9444 ||g_delimeter||l_prev_us_addr_rec.postal_code
9445 ||g_delimeter||l_prev_us_addr_rec.postal_routing_code
9446 ||g_delimeter||l_prev_us_addr_rec.country_code
9447 ||g_delimeter||l_prev_us_addr_rec.province
9448 --||g_delimeter||l_prev_us_addr_rec.stdnt_valid_flag
9449 ||g_delimeter||l_prev_us_addr_rec.primary_flag <>
9450 l_us_addr_rec(1).address_line1
9451 ||g_delimeter||l_us_addr_rec(1).address_line2
9452 ||g_delimeter||l_us_addr_rec(1).city
9453 ||g_delimeter||l_us_addr_rec(1).state
9454 ||g_delimeter||l_us_addr_rec(1).postal_code
9455 ||g_delimeter||l_us_addr_rec(1).postal_routing_code
9456 ||g_delimeter||l_us_addr_rec(1).country_code
9457 ||g_delimeter||l_us_addr_rec(1).province
9458 -- ||g_delimeter||l_us_addr_rec(1).stdnt_valid_flag
9459 ||g_delimeter||l_us_addr_rec(1).primary_flag THEN
9460
9461 p_person_rec.us_addr_status := 'C'; -- Changed
9462 p_person_rec.changes_found := 'Y';
9463
9464 Put_Log_Msg('US address is changed ',0);
9465
9466 END IF;
9467
9468 ELSIF l_status = 'N' THEN
9469
9470 --Not found
9471
9472 Put_Log_Msg('US info is changed - no prev record ',0);
9473 p_person_rec.us_addr_status := 'C';
9474 p_person_rec.changes_found := 'Y';
9475
9476 ELSE
9477 --Error found l_status = 'U'
9478 /* Debug */
9479 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9480 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9481 l_debug_str := 'FND_API.G_EXC_ERROR in Update_Personal_Info. us_addr_status is S';
9482 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9483 END IF;
9484
9485 RAISE FND_API.G_EXC_ERROR;
9486
9487 END IF;
9488
9489 END IF; --End of read and compare
9490
9491 -- Insert
9492 IF p_person_rec.person_status <> 'I'
9493 AND (p_person_rec.bio_status = 'C'
9494 OR p_person_rec.other_status = 'C'
9495 OR p_person_rec.f_addr_status = 'C'
9496 OR p_person_rec.us_addr_status = 'C') THEN
9497
9498 p_person_rec.changes_found := 'Y';
9499 Put_Log_Msg('Info is chnaged for the block - do insert',0);
9500
9501 -- There are changes need to insert data
9502 IF p_person_rec.bio_status = 'C' THEN
9503 Insert_Bio_Info ( p_data_rec => l_bio_rec);
9504 END IF;
9505
9506 IF p_person_rec.batch_type = 'I' AND p_person_rec.other_status = 'C' THEN
9507
9508 Insert_Other_Info ( p_data_rec => l_oth_rec);
9509
9510 END IF;
9511
9512 IF p_person_rec.batch_type = 'I' AND p_person_rec.f_addr_status = 'C' THEN
9513
9514 Insert_Address_Info ('F', p_data_rec => l_f_addr_rec,p_records => 1); --- prbhardw CP enhancement
9515
9516 END IF;
9517
9518 IF p_person_rec.batch_type = 'I' AND p_person_rec.us_addr_status = 'C' THEN
9519
9520 Insert_Address_Info ( 'US',p_data_rec => l_us_addr_rec,p_records => 1); --- prbhardw CP enhancement
9521
9522 END IF;
9523
9524 END IF;
9525
9526 Put_Log_Msg(l_api_name||' ends ',0);
9527 /* Debug */
9528 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9529 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9530 l_debug_str := 'Returning S from Update_Personal_Info.';
9531 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9532 END IF;
9533
9534 RETURN 'S';
9535
9536 EXCEPTION
9537
9538 WHEN FND_API.G_EXC_ERROR THEN
9539
9540 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
9541 /* Debug */
9542 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9543 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9544 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_Personal_Info. '||SQLERRM;
9545 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9546 END IF;
9547 RETURN 'U';
9548
9549 WHEN OTHERS THEN
9550
9551 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
9552 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
9553 END IF;
9554
9555 Put_Log_Msg(l_api_name||' OTHERS return U',1);
9556 /* Debug */
9557 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9558 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Personal_Info';
9559 l_debug_str := 'EXCEPTION: Returning U from Update_Personal_Info. '||SQLERRM;
9560 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9561 END IF;
9562 RETURN 'U';
9563
9564 END Update_Personal_Info;
9565
9566 FUNCTION Get_EV_Prgm_Info (
9567 p_data_rec IN OUT NOCOPY IGS_SV_PRGMS_INFO%ROWTYPE -- Data record
9568 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
9569 IS
9570
9571 l_api_name CONSTANT VARCHAR2(25) := 'Get_EV_Prgm_Info';
9572
9573 CURSOR c_data_rec IS
9574 SELECT prgm_action_type,
9575 prgm_start_date,
9576 prgm_end_date ,
9577 effective_date,
9578 termination_reason,
9579 end_prgm_reason,
9580 remarks
9581 FROM igs_sv_prgms_info
9582 WHERE person_id = p_data_rec.person_id AND
9583 batch_id IN
9584 ( SELECT max(prg.batch_id)
9585 FROM igs_sv_prgms_info prg,
9586 igs_sv_persons pr
9587 WHERE prg.person_id = pr.person_id
9588 AND prg.batch_id = pr.batch_id
9589 AND pr.record_status <> 'E'
9590 AND prg.person_id = p_data_rec.person_id
9591 )
9592 ORDER BY effective_date;
9593 BEGIN
9594 /* Debug */
9595 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9596 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_EV_Prgm_Info';
9597 l_debug_str := 'Entering Get_EV_Prgm_Info. p_data_rec.person_id is '||p_data_rec.person_id;
9598 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9599 END IF;
9600
9601 Put_Log_Msg(l_api_name||' begins ',0);
9602
9603 OPEN c_data_rec;
9604 FETCH c_data_rec
9605 INTO p_data_rec.prgm_action_type,
9606 p_data_rec.prgm_start_date,
9607 p_data_rec.prgm_end_date ,
9608 p_data_rec.effective_date,
9609 p_data_rec.termination_reason,
9610 p_data_rec.end_prgm_reason,
9611 p_data_rec.remarks ;
9612
9613 IF c_data_rec%NOTFOUND THEN
9614
9615 Put_Log_Msg('Record not found ',0);
9616 CLOSE c_data_rec;
9617 /* Debug */
9618 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9619 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_EV_Prgm_Info';
9620 l_debug_str := 'Returning N from Get_EV_Prgm_Info';
9621 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9622 END IF;
9623 RETURN 'N';
9624
9625 END IF;
9626
9627 CLOSE c_data_rec;
9628
9629 Put_Log_Msg(l_api_name||' ends S ',0);
9630 /* Debug */
9631 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9632 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_EV_Prgm_Info';
9633 l_debug_str := 'Returning S from Get_EV_Prgm_Info';
9634 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9635 END IF;
9636 RETURN 'S';
9637
9638 EXCEPTION
9639
9640 WHEN FND_API.G_EXC_ERROR THEN
9641 /* Debug */
9642 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9643 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_EV_Prgm_Info';
9644 l_debug_str := 'Exception in Get_EV_Prgm_Info '||SQLERRM;
9645 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9646 END IF;
9647
9648 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
9649 RETURN 'U';
9650
9651 WHEN OTHERS THEN
9652 /* Debug */
9653 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9654 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_EV_Prgm_Info';
9655 l_debug_str := 'Exception in Get_EV_Prgm_Info '||SQLERRM;
9656 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9657 END IF;
9658 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
9659 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
9660 END IF;
9661
9662 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
9663 RETURN 'U';
9664
9665 END Get_EV_Prgm_Info;
9666
9667 FUNCTION Get_nonimg_Prgm_Info (
9668 p_data_rec IN OUT NOCOPY IGS_SV_PRGMS_INFO%ROWTYPE -- Data record
9669 ) RETURN VARCHAR2 -- 'S' Record found, 'N' - not found. 'U' - Unexpected error
9670 IS
9671
9672 l_api_name CONSTANT VARCHAR2(25) := 'Get_nonimg_Prgm_Info';
9673
9674 CURSOR c_data_rec IS
9675 SELECT effective_date,
9676 prgm_action_type,
9677 prgm_start_date,
9678 prgm_end_date,
9679 remarks,
9680 termination_reason,
9681 print_form
9682 FROM igs_sv_prgms_info
9683 WHERE person_id = p_data_rec.person_id AND
9684 batch_id IN
9685 ( SELECT max(prg.batch_id)
9686 FROM igs_sv_prgms_info prg,
9687 igs_sv_persons pr
9688 WHERE prg.person_id = pr.person_id
9689 AND prg.batch_id = pr.batch_id
9690 AND pr.record_status <> 'E'
9691 AND prg.person_id = p_data_rec.person_id
9692 )
9693 ORDER BY effective_date;
9694 BEGIN
9695 /* Debug */
9696 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9697 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_nonimg_Prgm_Info';
9698 l_debug_str := 'Entering Get_nonimg_Prgm_Info. p_data_rec.person_id is '||p_data_rec.person_id;
9699 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9700 END IF;
9701
9702 Put_Log_Msg(l_api_name||' begins ',0);
9703
9704 OPEN c_data_rec;
9705 FETCH c_data_rec
9706 INTO p_data_rec.effective_date,
9707 p_data_rec.prgm_action_type,
9708 p_data_rec.prgm_start_date,
9709 p_data_rec.prgm_end_date,
9710 p_data_rec.remarks,
9711 p_data_rec.termination_reason,
9712 p_data_rec.print_form ;
9713 IF c_data_rec%NOTFOUND THEN
9714
9715 Put_Log_Msg('Record not found ',0);
9716 CLOSE c_data_rec;
9717 /* Debug */
9718 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9719 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_nonimg_Prgm_Info';
9720 l_debug_str := 'Returning N from Get_nonimg_Prgm_Info';
9721 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9722 END IF;
9723 RETURN 'N';
9724
9725 END IF;
9726
9727 CLOSE c_data_rec;
9728
9729 Put_Log_Msg(l_api_name||' ends S ',0);
9730 /* Debug */
9731 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9732 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_nonimg_Prgm_Info';
9733 l_debug_str := 'Returning S from Get_nonimg_Prgm_Info';
9734 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9735 END IF;
9736 RETURN 'S';
9737
9738 EXCEPTION
9739
9740 WHEN FND_API.G_EXC_ERROR THEN
9741 /* Debug */
9742 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9743 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_nonimg_Prgm_Info';
9744 l_debug_str := 'Exception in Get_nonimg_Prgm_Info '||SQLERRM;
9745 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9746 END IF;
9747
9748 Put_Log_Msg(l_api_name||' EXEC ERROR ',1);
9749 RETURN 'U';
9750
9751 WHEN OTHERS THEN
9752 /* Debug */
9753 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9754 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Get_nonimg_Prgm_Info';
9755 l_debug_str := 'Exception in Get_nonimg_Prgm_Info '||SQLERRM;
9756 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9757 END IF;
9758 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
9759 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
9760 END IF;
9761
9762 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
9763 RETURN 'U';
9764
9765 END Get_nonimg_Prgm_Info;
9766
9767 /******************************************************************
9768 Created By : Arkadi Tereshenkov
9769
9770 Date Created By : Oct 14, 2002
9771
9772 Purpose : Update program information block
9773
9774 Remarks :
9775
9776 Change History
9777 Who When What
9778 ------------------------------------------------------------------------
9779
9780 ******************************************************************/
9781 FUNCTION Update_Program_Info (
9782 p_person_rec IN OUT NOCOPY t_student_rec --Person record
9783 ) RETURN VARCHAR2
9784 IS
9785
9786 l_api_name CONSTANT VARCHAR2(30) := 'Update_Program_Info';
9787 l_cur_rec IGS_SV_PRGMS_INFO%ROWTYPE;
9788 l_status VARCHAR2(1);
9789 l_prev_rec IGS_SV_PRGMS_INFO%ROWTYPE;
9790 l_count NUMBER(10);
9791 l_cur_prgm_rec g_edu_rec_type;
9792 l_cur_authdrp_rec g_edu_rec_type;
9793 l_auth_rec_count NUMBER := 0;
9794 BEGIN
9795
9796 Put_Log_Msg(l_api_name||' begins ',0);
9797 /* Debug */
9798 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9799 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9800 l_debug_str := 'Entering Update_Program_Info. p_person_rec.person_id is '||p_person_rec.person_id;
9801 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9802 END IF;
9803
9804 -- First part - check program Info block
9805
9806 p_person_rec.edu_status := Validate_Edu_Info (p_person_rec => p_person_rec,
9807 p_data_rec => l_cur_rec);
9808
9809 IF p_person_rec.edu_status = 'E' THEN -- Validation error - mark person as invalid
9810
9811 p_person_rec.person_status := 'I';
9812
9813 Put_Log_Msg('Validation error occurs ',1);
9814 /* Debug */
9815 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9816 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9817 l_debug_str := 'Returning S from Update_Program_Info. p_person_rec.edu_status is E';
9818 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9819 END IF;
9820
9821 RETURN 'S';
9822
9823 END IF;
9824
9825 IF p_person_rec.edu_status = 'U' THEN --Unexpected error - terminate execution
9826
9827 Put_Log_Msg('Unexpected error returned by validation ',1);
9828 /* Debug */
9829 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9830 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9831 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info. p_person_rec.edu_status is U';
9832 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9833 END IF;
9834
9835 RAISE FND_API.G_EXC_ERROR;
9836
9837 ELSIF p_person_rec.edu_status = 'N' THEN -- Not found
9838
9839 -- These are I-20 blocks and should be found. If this happens - its a bug
9840
9841 Put_Log_Msg('EDU block is not found ',0);
9842 /* Debug */
9843 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9844 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9845 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info. p_person_rec.edu_status is N.';
9846 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9847 END IF;
9848
9849 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_UNEXP_EXCPT_ERR'); -- I-20 is missing! Unexpected error
9850 FND_MESSAGE.SET_TOKEN('BLOCK_ID',3);
9851 FND_MSG_PUB.Add;
9852
9853 RAISE FND_API.G_EXC_ERROR;
9854
9855 END IF;
9856
9857
9858 -- Compare EDU Info
9859 l_prev_rec.person_id := p_person_rec.person_id;
9860
9861 l_status := Get_Edu_Info ( p_data_rec => l_prev_rec);
9862
9863 IF l_status = 'U' OR l_status = 'N' THEN
9864 /* Debug */
9865 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9866 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9867 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info. l_status is U or N.';
9868 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9869 END IF;
9870 RAISE FND_API.G_EXC_ERROR;
9871
9872 END IF;
9873
9874 IF l_prev_rec.position_code
9875 ||g_delimeter||l_prev_rec.subject_field_code
9876 ||g_delimeter||l_prev_rec.education_level
9877 ||g_delimeter||l_prev_rec.primary_major
9878 ||g_delimeter||l_prev_rec.secondary_major
9879 ||g_delimeter||l_prev_rec.educ_lvl_remarks
9880 ||g_delimeter||l_prev_rec.minor
9881 ||g_delimeter||l_prev_rec.length_of_study
9882 ||g_delimeter||l_prev_rec.prgm_start_date
9883 ||g_delimeter||l_prev_rec.prgm_end_date
9884 ||g_delimeter||l_prev_rec.english_reqd
9885 ||g_delimeter||l_prev_rec.english_reqd_met
9886 ||g_delimeter||l_prev_rec.not_reqd_reason
9887 <>
9888 l_cur_rec.position_code
9889 ||g_delimeter||l_cur_rec.subject_field_code
9890 ||g_delimeter||l_cur_rec.education_level
9891 ||g_delimeter||l_cur_rec.primary_major
9892 ||g_delimeter||l_cur_rec.secondary_major
9893 ||g_delimeter||l_cur_rec.educ_lvl_remarks
9894 ||g_delimeter||l_cur_rec.minor
9895 ||g_delimeter||l_cur_rec.length_of_study
9896 ||g_delimeter||l_cur_rec.prgm_start_date
9897 ||g_delimeter||l_cur_rec.prgm_end_date
9898 ||g_delimeter||l_cur_rec.english_reqd
9899 ||g_delimeter||l_cur_rec.english_reqd_met
9900 ||g_delimeter||l_cur_rec.not_reqd_reason
9901 THEN
9902
9903 p_person_rec.edu_status := 'C'; -- Changed
9904
9905 p_person_rec.changes_found := 'Y';
9906
9907 Put_Log_Msg('EDU info is changed ',0);
9908
9909 IF p_person_rec.person_status <> 'I' THEN
9910
9911 Insert_Edu_Info ( 'EDU', p_data_rec => l_cur_rec, p_auth_drp_data_rec => NULL);
9912
9913 END IF;
9914
9915 END IF;
9916
9917 -- Validate program block
9918
9919 p_person_rec.edu_status := Validate_Prgm_Info (p_person_rec =>p_person_rec, p_data_rec => l_cur_prgm_rec, p_records => l_count, p_auth_drp_data_rec => l_cur_authdrp_rec);
9920 IF p_person_rec.edu_status = 'E' THEN -- Validation error - mark person as invalid
9921
9922 p_person_rec.person_status := 'I';
9923
9924 Put_Log_Msg('Validation error occurs ',1);
9925 /* Debug */
9926 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9927 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9928 l_debug_str := 'Returning S from Update_Program_Info.';
9929 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9930 END IF;
9931
9932 RETURN 'S';
9933
9934 ELSIF p_person_rec.edu_status = 'U' THEN --Unexpected error - terminate execution
9935
9936 Put_Log_Msg('Unexpected error returned by validation ',1);
9937 /* Debug */
9938 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9939 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
9940 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info.';
9941 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9942 END IF;
9943
9944 RAISE FND_API.G_EXC_ERROR;
9945
9946 END IF;
9947
9948 FOR l_current IN 1.. l_count LOOP
9949
9950 Put_Log_Msg('Checking NI programs '||l_cur_prgm_rec(l_current).person_id,0);
9951 l_prev_rec.person_id := p_person_rec.person_id;
9952
9953 p_person_rec.edu_status := 'S'; -- Changed
9954
9955 l_status := Get_nonimg_Prgm_Info ( p_data_rec => l_prev_rec);
9956
9957 IF l_status = 'U' THEN
9958 /* Debug */
9959 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
9960 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
9961 l_debug_str := 'Unexpected error in Update_Employment_Info. l_status is U.';
9962 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
9963 END IF;
9964 RAISE FND_API.G_EXC_ERROR;
9965 END IF;
9966
9967 IF l_status = 'S' THEN
9968 IF
9969 (
9970 l_prev_rec.prgm_action_type
9971 ||g_delimeter||l_prev_rec.effective_date
9972 ||g_delimeter||l_prev_rec.print_form
9973 ||g_delimeter||l_prev_rec.prgm_start_date
9974 ||g_delimeter||l_prev_rec.prgm_end_date
9975 ||g_delimeter||l_prev_rec.remarks
9976 ||g_delimeter||l_prev_rec.termination_reason
9977 <>
9978 l_cur_prgm_rec(l_current).prgm_action_type
9979 ||g_delimeter||l_cur_prgm_rec(l_current).effective_date
9980 ||g_delimeter||l_cur_prgm_rec(l_current).print_form
9981 ||g_delimeter||l_cur_prgm_rec(l_current).prgm_start_date
9982 ||g_delimeter||l_cur_prgm_rec(l_current).prgm_end_date
9983 ||g_delimeter||l_cur_prgm_rec(l_current).remarks
9984 ||g_delimeter||l_cur_prgm_rec(l_current).termination_reason
9985 ) THEN
9986 Put_Log_Msg('Info is changed for '||l_cur_prgm_rec(l_current).person_id,0);
9987 p_person_rec.edu_status := 'C'; -- Changed
9988 p_person_rec.changes_found := 'Y';
9989 END IF;
9990
9991 ELSE --Remove current person from the insert list
9992 l_cur_prgm_rec(l_current).person_id := NULL;
9993 END IF;
9994
9995 IF p_person_rec.edu_status = 'C' AND p_person_rec.person_status <> 'I' THEN
9996 Insert_Edu_Info ('PRGM', p_data_rec => l_cur_prgm_rec(l_current), p_auth_drp_data_rec => NULL); -- prbhardw EN change
9997 END IF;
9998 END LOOP;
9999
10000 -- prbhardw EN change
10001 l_auth_rec_count := l_cur_authdrp_rec.COUNT;
10002 FOR l_current IN 1.. l_auth_rec_count LOOP
10003 IF l_cur_authdrp_rec(l_current).auth_action_code IS NOT NULL AND l_cur_authdrp_rec(l_current).prgm_action_type IS NOT NULL THEN
10004 Put_Log_Msg('validating Authorization. going to insert record',0);
10005 p_person_rec.edu_status := 'C'; -- Changed
10006 p_person_rec.changes_found := 'Y';
10007 Put_Log_Msg('Authorization Info is changed for '||l_cur_authdrp_rec(l_current).person_id,0);
10008 Insert_Auth_Code (p_auth_drp_data_rec => l_cur_authdrp_rec(l_current));
10009 END IF;
10010 END LOOP;
10011
10012 Put_Log_Msg(l_api_name||' ends ',0);
10013 /* Debug */
10014 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10015 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10016 l_debug_str := 'Final Return S from Update_Program_Info.';
10017 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10018 END IF;
10019
10020 RETURN 'S';
10021
10022 EXCEPTION
10023
10024 WHEN FND_API.G_EXC_ERROR THEN
10025
10026 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
10027 /* Debug */
10028 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10029 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10030 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_Program_Info. '||SQLERRM;
10031 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10032 END IF;
10033 RETURN 'U';
10034
10035 WHEN OTHERS THEN
10036
10037 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
10038 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
10039 END IF;
10040
10041 Put_Log_Msg(l_api_name||' OTHERS return U',1);
10042 /* Debug */
10043 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10044 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10045 l_debug_str := 'EXCEPTION: Returning U from Update_Program_Info. '||SQLERRM;
10046 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10047 END IF;
10048
10049 RETURN 'U';
10050
10051 END Update_Program_Info;
10052
10053
10054
10055 /******************************************************************
10056 Created By : Arkadi Tereshenkov
10057
10058 Date Created By : Oct 14, 2002
10059
10060 Purpose : Update EV program information block
10061
10062 Remarks :
10063
10064 Change History
10065 Who When What
10066 ------------------------------------------------------------------------
10067
10068 ******************************************************************/
10069 FUNCTION Update_EV_Program_Info (
10070 p_person_rec IN OUT NOCOPY t_student_rec --Person record
10071 ) RETURN VARCHAR2
10072 IS
10073
10074 l_api_name CONSTANT VARCHAR2(30) := 'Update_EV_Program_Info';
10075 l_cur_rec IGS_SV_PRGMS_INFO%ROWTYPE;
10076 l_cur_authdrp_rec g_edu_rec_type;
10077 l_status VARCHAR2(1);
10078 l_prev_rec IGS_SV_PRGMS_INFO%ROWTYPE;
10079 l_count NUMBER(10);
10080 l_cur_prgm_rec g_edu_rec_type;
10081
10082 BEGIN
10083
10084 Put_Log_Msg(l_api_name||' begins ',0);
10085 /* Debug */
10086 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10087 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10088 l_debug_str := 'Entering Update_EV_Program_Info. p_person_rec.person_id is '||p_person_rec.person_id;
10089 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10090 END IF;
10091
10092
10093 p_person_rec.edu_status := Validate_Edu_Info (p_person_rec => p_person_rec,
10094 p_data_rec => l_cur_rec);
10095
10096 IF p_person_rec.edu_status = 'E' THEN -- Validation error - mark person as invalid
10097
10098 p_person_rec.person_status := 'I';
10099
10100 Put_Log_Msg('Validation error occurs ',1);
10101 /* Debug */
10102 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10103 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10104 l_debug_str := 'Returning S from Update_Program_Info. p_person_rec.edu_status is E';
10105 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10106 END IF;
10107
10108 RETURN 'S';
10109
10110 END IF;
10111
10112 IF p_person_rec.edu_status = 'U' THEN --Unexpected error - terminate execution
10113
10114 Put_Log_Msg('Unexpected error returned by validation ',1);
10115 /* Debug */
10116 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10117 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10118 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info. p_person_rec.edu_status is U';
10119 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10120 END IF;
10121
10122 RAISE FND_API.G_EXC_ERROR;
10123
10124 ELSIF p_person_rec.edu_status = 'N' THEN -- Not found
10125
10126 -- These are I-20 blocks and should be found. If this happens - its a bug
10127
10128 Put_Log_Msg('EDU block is not found ',0);
10129 /* Debug */
10130 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10131 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10132 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info. p_person_rec.edu_status is N.';
10133 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10134 END IF;
10135
10136 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_UNEXP_EXCPT_ERR'); -- I-20 is missing! Unexpected error
10137 FND_MESSAGE.SET_TOKEN('BLOCK_ID',3);
10138 FND_MSG_PUB.Add;
10139
10140 RAISE FND_API.G_EXC_ERROR;
10141
10142 END IF;
10143
10144
10145 -- Compare EDU Info
10146 l_prev_rec.person_id := p_person_rec.person_id;
10147
10148 l_status := Get_Edu_Info ( p_data_rec => l_prev_rec);
10149
10150 IF l_status = 'U' OR l_status = 'N' THEN
10151 /* Debug */
10152 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10153 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Program_Info';
10154 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_Program_Info. l_status is U or N.';
10155 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10156 END IF;
10157 RAISE FND_API.G_EXC_ERROR;
10158
10159 END IF;
10160 /*
10161 IF l_prev_rec.position_code
10162 ||g_delimeter||l_prev_rec.remarks
10163 <>
10164 l_cur_rec.position_code
10165 ||g_delimeter||l_cur_rec.remarks
10166 THEN
10167
10168 p_person_rec.edu_status := 'C'; -- Changed
10169
10170 p_person_rec.changes_found := 'Y';
10171
10172 Put_Log_Msg('EDU info is changed ',0);
10173
10174 IF p_person_rec.person_status <> 'I' THEN
10175
10176 Insert_Edu_Info ( 'EDU', p_data_rec => l_cur_rec, p_auth_drp_data_rec => l_cur_authdrp_rec);
10177
10178 END IF;
10179
10180 END IF;
10181 */
10182 IF l_prev_rec.subject_field_code <> l_cur_rec.subject_field_code THEN
10183
10184 p_person_rec.edu_status := 'C'; -- Changed
10185
10186 p_person_rec.changes_found := 'Y';
10187
10188 Put_Log_Msg('EDU info is changed ',0);
10189
10190 IF p_person_rec.person_status <> 'I' THEN
10191 l_cur_rec.prgm_action_type := 'US';
10192 Insert_Edu_Info ( 'PRGM', p_data_rec => l_cur_rec, p_auth_drp_data_rec => NULL);
10193
10194 END IF;
10195
10196 END IF;
10197
10198
10199
10200
10201 -- Validate program block
10202
10203 p_person_rec.edu_status := Validate_Prgm_Info (p_person_rec =>p_person_rec, p_data_rec => l_cur_prgm_rec, p_records => l_count,
10204 p_auth_drp_data_rec => l_cur_authdrp_rec);
10205 IF p_person_rec.edu_status = 'E' THEN -- Validation error - mark person as invalid
10206
10207 p_person_rec.person_status := 'I';
10208
10209 Put_Log_Msg('Validation error occurs ',1);
10210 /* Debug */
10211 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10212 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10213 l_debug_str := 'Returning S from Update_EV_Program_Info. p_person_rec.edu_status is E.';
10214 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10215 END IF;
10216
10217 RETURN 'S';
10218
10219 ELSIF p_person_rec.edu_status = 'U' THEN --Unexpected error - terminate execution
10220
10221 Put_Log_Msg('Unexpected error returned by validation ',1);
10222 /* Debug */
10223 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10224 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10225 l_debug_str := 'RAISE FND_API.G_EXC_ERROR in Update_EV_Program_Info. p_person_rec.edu_status is U.';
10226 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10227 END IF;
10228
10229 RAISE FND_API.G_EXC_ERROR;
10230
10231 END IF;
10232
10233
10234 FOR l_current IN 1.. l_count LOOP
10235
10236 Put_Log_Msg('Checking ev programs '||l_cur_prgm_rec(l_current).person_id,0);
10237 l_prev_rec.person_id := p_person_rec.person_id;
10238
10239 p_person_rec.edu_status := 'S'; -- Changed
10240
10241 l_status := Get_EV_Prgm_Info ( p_data_rec => l_prev_rec);
10242
10243 IF l_status = 'U' THEN
10244 /* Debug */
10245 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10246 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
10247 l_debug_str := 'Unexpected error in Update_Employment_Info. l_status is U.';
10248 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10249 END IF;
10250 RAISE FND_API.G_EXC_ERROR;
10251 END IF;
10252
10253 IF l_status = 'S' THEN
10254 IF
10255 (
10256 l_prev_rec.prgm_action_type
10257 ||g_delimeter||l_prev_rec.prgm_start_date
10258 ||g_delimeter||l_prev_rec.prgm_end_date
10259 ||g_delimeter||l_prev_rec.effective_date
10260 ||g_delimeter||l_prev_rec.termination_reason
10261 ||g_delimeter||l_prev_rec.end_prgm_reason
10262 ||g_delimeter||l_prev_rec.remarks
10263 <>
10264 l_cur_prgm_rec(l_current).prgm_action_type
10265 ||g_delimeter||l_cur_prgm_rec(l_current).prgm_start_date
10266 ||g_delimeter||l_cur_prgm_rec(l_current).prgm_end_date
10267 ||g_delimeter||l_cur_prgm_rec(l_current).effective_date
10268 ||g_delimeter||l_cur_prgm_rec(l_current).termination_reason
10269 ||g_delimeter||l_cur_prgm_rec(l_current).end_prgm_reason
10270 ||g_delimeter||l_cur_prgm_rec(l_current).remarks
10271 ) THEN
10272 Put_Log_Msg('Info is changed for '||l_cur_prgm_rec(l_current).person_id,0);
10273 p_person_rec.edu_status := 'C'; -- Changed
10274 p_person_rec.changes_found := 'Y';
10275 END IF;
10276
10277 ELSE --Remove current person from the insert list
10278 l_cur_prgm_rec(l_current).person_id := NULL;
10279 END IF;
10280
10281 IF p_person_rec.edu_status = 'C' AND p_person_rec.person_status <> 'I' THEN
10282 /* Debug */
10283 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10284 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10285 l_debug_str := 'inserting prgm info.';
10286 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10287 END IF;
10288 Insert_Edu_Info ('PRGM', p_data_rec => l_cur_prgm_rec(l_current), p_auth_drp_data_rec => NULL);
10289 END IF;
10290 END LOOP;
10291
10292 Put_Log_Msg(l_api_name||' ends ',0);
10293 /* Debug */
10294 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10295 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10296 l_debug_str := 'Returning S from Update_EV_Program_Info.';
10297 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10298 END IF;
10299
10300 RETURN 'S';
10301
10302 EXCEPTION
10303
10304 WHEN FND_API.G_EXC_ERROR THEN
10305
10306 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
10307 /* Debug */
10308 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10309 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10310 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_EV_Program_Info. '||SQLERRM;
10311 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10312 END IF;
10313
10314 RETURN 'U';
10315
10316 WHEN OTHERS THEN
10317
10318 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
10319 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
10320 END IF;
10321
10322 Put_Log_Msg(l_api_name||' OTHERS return U',1);
10323 /* Debug */
10324 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10325 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_EV_Program_Info';
10326 l_debug_str := 'EXCEPTION: Returning U from Update_EV_Program_Info. '||SQLERRM;
10327 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10328 END IF;
10329
10330
10331 RETURN 'U';
10332
10333 END Update_EV_Program_Info;
10334
10335
10336 /******************************************************************
10337 Created By : Arkadi Tereshenkov
10338
10339 Date Created By : Oct 14, 2002
10340
10341 Purpose : Update Finance Information block on student
10342
10343 Remarks :
10344
10345 Change History
10346 Who When What
10347 ------------------------------------------------------------------------
10348
10349 ******************************************************************/
10350 FUNCTION Update_Finance_Info (
10351 p_person_rec IN OUT NOCOPY t_student_rec --Person record
10352 ) RETURN VARCHAR2
10353 IS
10354
10355 l_api_name CONSTANT VARCHAR2(30) := 'Update_Finance_Info';
10356 l_cur_rec IGS_SV_FINANCE_INFO%ROWTYPE;
10357 l_prev_rec IGS_SV_FINANCE_INFO%ROWTYPE;
10358 l_status VARCHAR2(1);
10359
10360
10361 BEGIN
10362
10363 Put_Log_Msg(l_api_name||' begins ',0);
10364 /* Debug */
10365 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10366 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10367 l_debug_str := 'Entering Update_Finance_Info. p_person_rec.person_id is '||p_person_rec.person_id;
10368 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10369 END IF;
10370
10371 -- Call Validate_Finance_Info
10372 p_person_rec.fin_status := Validate_Finance_Info (p_person_rec => p_person_rec,
10373 p_data_rec => l_cur_rec);
10374 IF p_person_rec.fin_status = 'E' THEN -- Validation error - mark person as invalid
10375
10376 p_person_rec.person_status := 'I';
10377
10378 Put_Log_Msg('Validation error occurs ',1);
10379 /* Debug */
10380 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10381 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10382 l_debug_str := 'Returning S from Update_Finance_Info. p_person_rec.fin_status is E';
10383 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10384 END IF;
10385
10386 RETURN 'S';
10387
10388 ELSIF p_person_rec.fin_status = 'U' THEN --Unexpected error - terminate execution
10389
10390 Put_Log_Msg('Unexpected error returned by validation ',1);
10391 /* Debug */
10392 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10393 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10394 l_debug_str := 'Raise FND_API.G_EXC_ERROR in Update_Finance_Info. fin_status is U';
10395 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10396 END IF;
10397
10398 RAISE FND_API.G_EXC_ERROR;
10399
10400 ELSIF p_person_rec.fin_status = 'N' THEN -- Not found
10401
10402 -- These are I-20 blocks and should be found. If this happens - its a bug
10403
10404 Put_Log_Msg('Finance block is not found ',0);
10405 /* Debug */
10406 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10407 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10408 l_debug_str := 'Raise FND_API.G_EXC_ERROR in Update_Finance_Info. fin_status is N';
10409 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10410 END IF;
10411
10412
10413 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_UNEXP_EXCPT_ERR'); -- I-20 is missing! Unexpected error
10414 FND_MESSAGE.SET_TOKEN('BLOCK_ID',4);
10415 FND_MSG_PUB.Add;
10416
10417 RAISE FND_API.G_EXC_ERROR;
10418
10419 END IF;
10420
10421
10422 -- Compare Finance Info
10423 l_prev_rec.person_id := p_person_rec.person_id;
10424
10425 l_status := Get_Finance_Info ( p_data_rec => l_prev_rec);
10426
10427 IF l_status = 'U' OR l_status = 'N' THEN
10428 /* Debug */
10429 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10430 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10431 l_debug_str := 'Raise FND_API.G_EXC_ERROR in Update_Finance_Info. l_status is U or N';
10432 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10433 END IF;
10434
10435 RAISE FND_API.G_EXC_ERROR;
10436
10437 END IF;
10438
10439 IF l_prev_rec.acad_term_length
10440 ||g_delimeter||l_prev_rec.tuition
10441 ||g_delimeter||l_prev_rec.living_exp
10442 ||g_delimeter||l_prev_rec.personal_funds
10443 ||g_delimeter||l_prev_rec.dependent_exp
10444 ||g_delimeter||l_prev_rec.other_exp
10445 ||g_delimeter||l_prev_rec.other_exp_desc
10446 ||g_delimeter||l_prev_rec.school_funds
10447 ||g_delimeter||l_prev_rec.school_funds_desc
10448 ||g_delimeter||l_prev_rec.other_funds
10449 ||g_delimeter||l_prev_rec.other_funds_desc
10450 ||g_delimeter||l_prev_rec.empl_funds
10451 ||g_delimeter||l_prev_rec.program_sponsor
10452 ||g_delimeter||l_prev_rec.govt_org1
10453 ||g_delimeter||l_prev_rec.govt_org2
10454 ||g_delimeter||l_prev_rec.govt_org1_code
10455 ||g_delimeter||l_prev_rec.govt_org2_code
10456 ||g_delimeter||l_prev_rec.intl_org1
10457 ||g_delimeter||l_prev_rec.intl_org2
10458 ||g_delimeter||l_prev_rec.intl_org1_code
10459 ||g_delimeter||l_prev_rec.intl_org2_code
10460 ||g_delimeter||l_prev_rec.ev_govt
10461 ||g_delimeter||l_prev_rec.bi_natnl_com
10462 ||g_delimeter||l_prev_rec.other_org
10463 ||g_delimeter||l_prev_rec.remarks
10464 ||g_delimeter||l_prev_rec.govt_org1_othr_name
10465 ||g_delimeter||l_prev_rec.govt_org2_othr_name
10466 ||g_delimeter||l_prev_rec.intl_org1_othr_name
10467 ||g_delimeter||l_prev_rec.intl_org2_othr_name
10468 ||g_delimeter||l_prev_rec.other_govt_name
10469 <>
10470 l_cur_rec.acad_term_length
10471 ||g_delimeter||l_cur_rec.tuition
10472 ||g_delimeter||l_cur_rec.living_exp
10473 ||g_delimeter||l_cur_rec.personal_funds
10474 ||g_delimeter||l_cur_rec.dependent_exp
10475 ||g_delimeter||l_cur_rec.other_exp
10476 ||g_delimeter||l_cur_rec.other_exp_desc
10477 ||g_delimeter||l_cur_rec.school_funds
10478 ||g_delimeter||l_cur_rec.school_funds_desc
10479 ||g_delimeter||l_cur_rec.other_funds
10480 ||g_delimeter||l_cur_rec.other_funds_desc
10481 ||g_delimeter||l_cur_rec.empl_funds
10482 ||g_delimeter||l_cur_rec.program_sponsor
10483 ||g_delimeter||l_cur_rec.govt_org1
10484 ||g_delimeter||l_cur_rec.govt_org2
10485 ||g_delimeter||l_cur_rec.govt_org1_code
10486 ||g_delimeter||l_cur_rec.govt_org2_code
10487 ||g_delimeter||l_cur_rec.intl_org1
10488 ||g_delimeter||l_cur_rec.intl_org2
10489 ||g_delimeter||l_cur_rec.intl_org1_code
10490 ||g_delimeter||l_cur_rec.intl_org2_code
10491 ||g_delimeter||l_cur_rec.ev_govt
10492 ||g_delimeter||l_cur_rec.bi_natnl_com
10493 ||g_delimeter||l_cur_rec.other_org
10494 ||g_delimeter||l_cur_rec.remarks
10495 ||g_delimeter||l_cur_rec.govt_org1_othr_name
10496 ||g_delimeter||l_cur_rec.govt_org2_othr_name
10497 ||g_delimeter||l_cur_rec.intl_org1_othr_name
10498 ||g_delimeter||l_cur_rec.intl_org2_othr_name
10499 ||g_delimeter||l_cur_rec.other_govt_name
10500 THEN
10501
10502 p_person_rec.fin_status := 'C'; -- Changed
10503
10504 Put_Log_Msg('Finance info is changed ',0);
10505
10506 p_person_rec.changes_found := 'Y';
10507
10508 IF p_person_rec.person_status <> 'I' THEN
10509 Insert_Finance_Info ( p_data_rec => l_cur_rec);
10510 END IF;
10511
10512 END IF;
10513 Put_Log_Msg(l_api_name||' ends ',0);
10514 /* Debug */
10515 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10516 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10517 l_debug_str := 'Returning S from Update_Finance_Info.';
10518 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10519 END IF;
10520
10521 RETURN 'S';
10522
10523 EXCEPTION
10524
10525 WHEN FND_API.G_EXC_ERROR THEN
10526
10527 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
10528 /* Debug */
10529 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10530 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10531 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_Finance_Info. '||SQLERRM;
10532 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10533 END IF;
10534 RETURN 'U';
10535
10536 WHEN OTHERS THEN
10537
10538 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
10539 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
10540 END IF;
10541
10542 Put_Log_Msg(l_api_name||' OTHERS return U',1);
10543 /* Debug */
10544 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10545 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Finance_Info';
10546 l_debug_str := 'EXCEPTION: Returning U from Update_Finance_Info. '||SQLERRM;
10547 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10548 END IF;
10549
10550 RETURN 'U';
10551
10552 END Update_Finance_Info;
10553
10554
10555
10556 /******************************************************************
10557 Created By : Arkadi Tereshenkov
10558
10559 Date Created By : Oct 14, 2002
10560
10561 Purpose : Update Dependent block information on the student
10562
10563 Remarks :
10564
10565 Change History
10566 Who When What
10567 ------------------------------------------------------------------------
10568
10569 ******************************************************************/
10570 FUNCTION Update_Dependent_Info (
10571 p_person_rec IN OUT NOCOPY t_student_rec --Person record
10572 ) RETURN VARCHAR2
10573 IS
10574
10575 l_api_name CONSTANT VARCHAR2(30) := 'Update_Dependent_Info';
10576 l_cur_rec g_dependent_rec_type;
10577 l_prev_rec IGS_SV_DEPDNT_INFO%ROWTYPE;
10578 l_status VARCHAR2(1);
10579 l_count NUMBER(10);
10580 l_current NUMBER(10);
10581 l_rel_type_count NUMBER := 0;
10582
10583 /* CURSOR c_spouse_of_rel IS
10584 SELECT COUNT(1)
10585 FROM igs_pe_hz_rel_v hz, igs_pe_depd_active pdep
10586 WHERE hz.subject_id = p_person_rec.person_id AND
10587 hz.relationship_code= 'SPOUSE_OF' and
10588 pdep.relationship_id = hz.relationship_id
10589 and pdep.action_code <> 'T'
10590 and pdep.last_update_date = (SELECT MAX(last_update_date)
10591 FROM igs_pe_depd_active
10592 WHERE relationship_id =hz.relationship_id)
10593 AND sysdate BETWEEN hz.start_date AND NVL(hz.end_date, sysdate+1);
10594
10595 */
10596 BEGIN
10597
10598 Put_Log_Msg(l_api_name||' begins ',0);
10599 /* Debug */
10600 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10601 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10602 l_debug_str := 'Entering Update_Dependent_Info. p_person_rec.person_id is '||p_person_rec.person_id;
10603 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10604 END IF;
10605
10606
10607 -- Call Validate_Empl_Info
10608
10609 p_person_rec.dep_status := Validate_Dependent_Info (p_person_rec => p_person_rec,
10610 p_data_rec => l_cur_rec,
10611 p_records => l_count);
10612 IF p_person_rec.dep_status = 'E' THEN -- Validation error - mark person as invalid
10613
10614 p_person_rec.person_status := 'I';
10615
10616 Put_Log_Msg('Validation error occurs ',1);
10617 /* Debug */
10618 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10619 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10620 l_debug_str := 'Returning S from Update_Dependent_Info. dep_status is E.';
10621 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10622 END IF;
10623 RETURN 'S';
10624
10625 ELSIF p_person_rec.dep_status = 'U' THEN --Unexpected error - terminate execution
10626
10627 Put_Log_Msg('Unexpected error returned by validation ',1);
10628 /* Debug */
10629 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10630 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10631 l_debug_str := 'Raise FND_API.G_EXC_ERROR in Update_Dependent_Info. dep_status is U.';
10632 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10633 END IF;
10634
10635 RAISE FND_API.G_EXC_ERROR;
10636
10637 ELSIF p_person_rec.dep_status = 'N' THEN -- Not found
10638
10639 Put_Log_Msg('Dependent block is not found ',0);
10640 /* Debug */
10641 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10642 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10643 l_debug_str := 'Returning S from Update_Dependent_Info. dep_status is N.';
10644 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10645 END IF;
10646 RETURN 'S';
10647
10648 END IF;
10649 FOR l_current IN 1.. l_count LOOP
10650
10651 -- Compare Dependent Info
10652 Put_Log_Msg('Checking dependent '||l_cur_rec(l_current).depdnt_id,0);
10653
10654 l_prev_rec.person_id := p_person_rec.person_id;
10655 l_prev_rec.depdnt_id := l_cur_rec(l_current).depdnt_id;
10656 p_person_rec.dep_status := 'S'; -- Changed
10657
10658 l_status := Get_Dependent_Info ( p_data_rec => l_prev_rec);
10659
10660
10661 --manoj stars
10662
10663
10664 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10665 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Previous_Dependent_Info';
10666 l_debug_str := 'l_prev_rec action_type='||l_prev_rec.depdnt_action_type;
10667 l_debug_str := l_debug_str || 'visa_type=' || l_prev_rec.visa_type;
10668 l_debug_str := l_debug_str || 'last_name=' || l_prev_rec.last_name;
10669 l_debug_str := l_debug_str || 'first_name=' || l_prev_rec.first_name ;
10670 l_debug_str := l_debug_str || 'middle_name=' || l_prev_rec.middle_name;
10671 l_debug_str := l_debug_str || 'suffix=' || l_prev_rec.suffix;
10672 l_debug_str := l_debug_str || 'birth_date=' || l_prev_rec.birth_date;
10673 l_debug_str := l_debug_str || 'gender=' || l_prev_rec.gender;
10674 l_debug_str := l_debug_str || 'birth_cntry_code=' || l_prev_rec.birth_cntry_code;
10675 l_debug_str := l_debug_str || 'citizen_cntry_code=' || l_prev_rec.citizen_cntry_code;
10676 l_debug_str := l_debug_str || 'relationship=' || l_prev_rec.relationship;
10677 l_debug_str := l_debug_str || 'termination_reason=' || l_prev_rec.termination_reason ;
10678 l_debug_str := l_debug_str || 'relationship_remarks=' || l_prev_rec.relationship_remarks;
10679 l_debug_str := l_debug_str || 'perm_res_cntry_code=' || l_prev_rec.perm_res_cntry_code;
10680 l_debug_str := l_debug_str || 'termination_effect_date=' || l_prev_rec.termination_effect_date;
10681 l_debug_str := l_debug_str || 'remarks=' || l_prev_rec.remarks;
10682 l_debug_str := l_debug_str || 'birth_cntry_resn_code=' || l_prev_rec.birth_cntry_resn_code;
10683 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10684 END IF;
10685
10686
10687 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10688 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Current_Dependent_Info';
10689 l_debug_str := 'cur dep action type: '||l_cur_rec(l_current).depdnt_action_type;
10690 l_debug_str := l_debug_str || 'visa_type=' || l_cur_rec(l_current).visa_type;
10691 l_debug_str := l_debug_str || 'last_name=' || l_cur_rec(l_current).last_name;
10692 l_debug_str := l_debug_str || 'first_name=' || l_cur_rec(l_current).first_name;
10693 l_debug_str := l_debug_str || 'middle_name=' || l_cur_rec(l_current).middle_name;
10694 l_debug_str := l_debug_str || 'suffix=' || l_cur_rec(l_current).suffix;
10695 l_debug_str := l_debug_str || 'birth_date=' || l_cur_rec(l_current).birth_date;
10696 l_debug_str := l_debug_str || 'gender=' || l_cur_rec(l_current).gender;
10697 l_debug_str := l_debug_str || 'birth_cntry_code=' || l_cur_rec(l_current).birth_cntry_code;
10698 l_debug_str := l_debug_str || 'citizen_cntry_code=' || l_cur_rec(l_current).citizen_cntry_code;
10699 l_debug_str := l_debug_str || 'relationship=' || l_cur_rec(l_current).relationship;
10700 l_debug_str := l_debug_str || 'termination_reason=' || l_cur_rec(l_current).termination_reason;
10701 l_debug_str := l_debug_str || 'relationship_remarks=' || l_cur_rec(l_current).relationship_remarks;
10702 l_debug_str := l_debug_str || 'perm_res_cntry_code=' || l_cur_rec(l_current).perm_res_cntry_code;
10703 l_debug_str := l_debug_str || 'termination_effect_date=' || l_cur_rec(l_current).termination_effect_date;
10704 l_debug_str := l_debug_str || 'remarks=' || l_cur_rec(l_current).remarks ;
10705 l_debug_str := l_debug_str || 'birth_cntry_resn_code=' || l_cur_rec(l_current).birth_cntry_resn_code;
10706 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10707 END IF;
10708 --manoj ends
10709
10710 IF l_status = 'U' THEN
10711 /* Debug */
10712 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10713 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10714 l_debug_str := 'Raise FND_API.G_EXC_ERROR in Update_Dependent_Info. l_status is U.';
10715 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10716 END IF;
10717 RAISE FND_API.G_EXC_ERROR;
10718
10719 END IF;
10720
10721 -- check if dependent sevis id is present
10722
10723 IF l_status = 'S' AND l_cur_rec(l_current).depdnt_sevis_id IS NULL THEN
10724
10725 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_ID_ERR'); -- SEVIS STUDENT id not found
10726 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_cur_rec(l_current).person_number);
10727 Put_Log_Msg(FND_MESSAGE.Get,1);
10728
10729 p_person_rec.person_status := 'I';
10730
10731 Put_Log_Msg('Validation error occurs ',0);
10732 /* Debug */
10733 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10734 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10735 l_debug_str := 'Returning S from Update_Dependent_Info. l_status is S.';
10736 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10737 END IF;
10738 RETURN 'S';
10739
10740 ELSIF l_status = 'N' THEN
10741 -- New dependent status A;
10742 IF l_cur_rec(l_current).depdnt_action_type = 'A' THEN
10743 l_cur_rec(l_current).depdnt_action_type := 'A';
10744 p_person_rec.dep_status := 'C'; -- Changed
10745 p_person_rec.changes_found := 'Y';
10746
10747 Put_Log_Msg('Dep info going first time for '||l_cur_rec(l_current).depdnt_id,0);
10748
10749 END IF;
10750
10751 ELSIF l_prev_rec.depdnt_action_type IN ('A','R','U') AND
10752 l_cur_rec(l_current).depdnt_action_type ='T' THEN
10753
10754 -- Person terminated.
10755 l_cur_rec(l_current).depdnt_action_type := 'T';
10756 p_person_rec.dep_status := 'C'; -- Changed
10757 p_person_rec.changes_found := 'Y';
10758
10759 Put_Log_Msg('Info is changed for '||l_cur_rec(l_current).depdnt_id,0);
10760
10761
10762 ELSIF l_prev_rec.depdnt_action_type IN ('T') AND
10763 l_cur_rec(l_current).depdnt_action_type ='A' THEN
10764 -- Person reactivated
10765 l_cur_rec(l_current).depdnt_action_type := 'R';
10766 p_person_rec.dep_status := 'C'; -- Changed
10767 p_person_rec.changes_found := 'Y';
10768
10769 Put_Log_Msg('Info is changed for '||l_cur_rec(l_current).depdnt_id,0);
10770
10771
10772 ELSIF (l_prev_rec.visa_type --l_cur_rec(l_current).depdnt_action_type ='A' AND
10773 ||g_delimeter||l_prev_rec.last_name
10774 ||g_delimeter||l_prev_rec.first_name
10775 ||g_delimeter||l_prev_rec.middle_name
10776 ||g_delimeter||l_prev_rec.suffix
10777 ||g_delimeter||l_prev_rec.birth_date
10778 ||g_delimeter||l_prev_rec.gender
10779 ||g_delimeter||l_prev_rec.birth_cntry_code
10780 ||g_delimeter||l_prev_rec.citizen_cntry_code
10781 ||g_delimeter||l_prev_rec.relationship
10782 ||g_delimeter||l_prev_rec.termination_reason
10783 ||g_delimeter||l_prev_rec.relationship_remarks
10784 ||g_delimeter||l_prev_rec.perm_res_cntry_code
10785 ||g_delimeter||l_prev_rec.termination_effect_date
10786 ||g_delimeter||l_prev_rec.remarks
10787 ||g_delimeter||l_prev_rec.birth_cntry_resn_code
10788 <> l_cur_rec(l_current).visa_type
10789 ||g_delimeter||l_cur_rec(l_current).last_name
10790 ||g_delimeter||l_cur_rec(l_current).first_name
10791 ||g_delimeter||l_cur_rec(l_current).middle_name
10792 ||g_delimeter||l_cur_rec(l_current).suffix
10793 ||g_delimeter||l_cur_rec(l_current).birth_date
10794 ||g_delimeter||l_cur_rec(l_current).gender
10795 ||g_delimeter||l_cur_rec(l_current).birth_cntry_code
10796 ||g_delimeter||l_cur_rec(l_current).citizen_cntry_code
10797 ||g_delimeter||l_cur_rec(l_current).relationship
10798 ||g_delimeter||l_cur_rec(l_current).termination_reason
10799 ||g_delimeter||l_cur_rec(l_current).relationship_remarks
10800 ||g_delimeter||l_cur_rec(l_current).perm_res_cntry_code
10801 ||g_delimeter||l_cur_rec(l_current).termination_effect_date
10802 ||g_delimeter||l_cur_rec(l_current).remarks
10803 ||g_delimeter||l_cur_rec(l_current).birth_cntry_resn_code
10804 ) THEN
10805
10806
10807
10808
10809 Put_Log_Msg('Info is changed for '||l_cur_rec(l_current).depdnt_id,0);
10810 /* Debug */
10811 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10812 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10813 l_debug_str := 'Update_Dependent_Info. l_prev_rec.depdnt_action_type: '||l_prev_rec.depdnt_action_type||'cur dep action type: '||l_cur_rec(l_current).depdnt_action_type;
10814 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10815 END IF;
10816 --IF l_prev_rec.depdnt_action_type = l_cur_rec(l_current).depdnt_action_type THEN
10817 l_cur_rec(l_current).depdnt_action_type := 'U'; --update mode for the person
10818 --END IF;
10819 p_person_rec.dep_status := 'C'; -- Changed
10820 p_person_rec.changes_found := 'Y';
10821
10822
10823 ELSE --Remove current dependent from the insert list
10824 l_cur_rec(l_current).depdnt_id := NULL;
10825 END IF;
10826
10827 /* IF p_person_rec.dep_status = 'C' AND p_person_rec.record_status ='C' THEN prbhardw CP enhancement
10828 -- Only one dependent in the update section.
10829 /* Debug
10830 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10831 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10832 l_debug_str := 'Exiting Update_Dependent_Info. dep_status and record_status is C.';
10833 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10834 END IF;
10835
10836 -- EXIT;
10837
10838 END IF;*/
10839 IF p_person_rec.dep_status = 'C' AND p_person_rec.person_status <> 'I' THEN
10840 Insert_Dependent_Info ( p_data_rec => l_cur_rec(l_current));
10841 END IF;
10842 END LOOP;
10843 /*IF p_person_rec.dep_status = 'C' AND p_person_rec.person_status <> 'I' THEN
10844 Insert_Dependent_Info ( p_data_rec => l_cur_rec(l_current),p_records => l_count );
10845 END IF; */
10846 Put_Log_Msg(l_api_name||' ends ',0);
10847 /* Debug */
10848 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10849 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10850 l_debug_str := 'Returning S from Update_Dependent_Info.';
10851 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10852 END IF;
10853
10854 RETURN 'S';
10855
10856 EXCEPTION
10857
10858 WHEN FND_API.G_EXC_ERROR THEN
10859 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
10860 /* Debug */
10861 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10862 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10863 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_Dependent_Info. '||SQLERRM;
10864 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10865 END IF;
10866 RETURN 'U';
10867
10868 WHEN OTHERS THEN
10869
10870 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
10871 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
10872 END IF;
10873 Put_Log_Msg(l_api_name||' OTHERS return U',1);
10874 /* Debug */
10875 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10876 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Dependent_Info';
10877 l_debug_str := 'EXCEPTION: Returning U from Update_Dependent_Info. '||SQLERRM;
10878 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10879 END IF;
10880
10881 RETURN 'U';
10882
10883 END Update_Dependent_Info;
10884
10885
10886
10887 /******************************************************************
10888 Created By : Arkadi Tereshenkov
10889
10890 Date Created By : Oct 14, 2002
10891
10892 Purpose : Update Employment information block
10893
10894 Remarks :
10895
10896 Change History
10897 Who When What
10898 ------------------------------------------------------------------------
10899
10900 ******************************************************************/
10901 FUNCTION Update_Employment_Info (
10902 p_person_rec IN OUT NOCOPY t_student_rec -- Person record
10903 ) RETURN VARCHAR2
10904 IS
10905
10906 l_api_name CONSTANT VARCHAR2(30) := 'Update_Employment_Info';
10907 l_cur_rec g_empl_rec_type; ---IGS_SV_EMPL_INFO%ROWTYPE; prbhardw
10908 l_prev_rec IGS_SV_EMPL_INFO%ROWTYPE;
10909 l_status VARCHAR2(1);
10910
10911 l_count NUMBER(10);
10912 l_current NUMBER(10);
10913
10914 BEGIN
10915
10916 Put_Log_Msg(l_api_name||' begins ',0);
10917 /* Debug */
10918 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10919 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
10920 l_debug_str := 'Entering Update_Employment_Info. p_person_rec.person_id is '||p_person_rec.person_id;
10921 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10922 END IF;
10923
10924 -- Call Validate_Empl_Info
10925
10926 p_person_rec.empl_status := Validate_Empl_Info (p_person_rec => p_person_rec,
10927 p_data_rec => l_cur_rec,
10928 p_records => l_count);
10929
10930 IF p_person_rec.empl_status = 'E' THEN -- Validation error - mark person as invalid
10931 p_person_rec.person_status := 'I';
10932 Put_Log_Msg('Validation error occurs ',1);
10933 /* Debug */
10934 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10935 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
10936 l_debug_str := 'Returning S from Update_Employment_Info. empl_status is E.';
10937 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10938 END IF;
10939 RETURN 'S';
10940 ELSIF p_person_rec.empl_status = 'U' THEN --Unexpected error - terminate execution
10941 Put_Log_Msg('Unexpected error returned by validation ',1);
10942 /* Debug */
10943 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10944 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
10945 l_debug_str := 'Unexpected error in Update_Employment_Info. empl_status is U.';
10946 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10947 END IF;
10948 RAISE FND_API.G_EXC_ERROR;
10949 ELSIF p_person_rec.empl_status = 'N' THEN -- Not found
10950 Put_Log_Msg('Employment block is not found ',0);
10951 /* Debug */
10952 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10953 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
10954 l_debug_str := 'Returning S from Update_Employment_Info. empl_status is N.';
10955 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10956 END IF;
10957 RETURN 'S';
10958 END IF;
10959
10960 FOR l_current IN 1.. l_count LOOP
10961
10962 Put_Log_Msg('Checking employment '||l_cur_rec(l_current).person_id,0);
10963 l_prev_rec.person_id := p_person_rec.person_id;
10964 l_prev_rec.nonimg_empl_id := l_cur_rec(l_current).nonimg_empl_id;
10965
10966 p_person_rec.empl_status := 'S'; -- Changed
10967
10968 l_status := Get_Empl_Info ( p_data_rec => l_prev_rec);
10969
10970
10971 --manoj starts
10972 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10973 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Previous_empl_Info';
10974 l_debug_str := 'empl_rec_type=' || l_prev_rec.empl_rec_type;
10975 l_debug_str := l_debug_str || 'empl_type=' || l_prev_rec.empl_type;
10976 l_debug_str := l_debug_str || 'recommend_empl=' || l_prev_rec.recommend_empl ;
10977 l_debug_str := l_debug_str || 'rescind_empl=' || l_prev_rec.rescind_empl;
10978 l_debug_str := l_debug_str || 'remarks=' || l_prev_rec.remarks;
10979 l_debug_str := l_debug_str || 'empl_start_date=' || l_prev_rec.empl_start_date;
10980 l_debug_str := l_debug_str || 'empl_end_date=' || l_prev_rec.empl_end_date;
10981 l_debug_str := l_debug_str || 'course_relevance=' || l_prev_rec.course_relevance;
10982 l_debug_str := l_debug_str || 'empl_time=' || l_prev_rec.empl_time;
10983 l_debug_str := l_debug_str || 'empl_name=' || l_prev_rec.empl_name;
10984 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
10985 END IF;
10986
10987 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
10988 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Current_empl_Info';
10989 l_debug_str := 'empl_rec_type=' || l_cur_rec(l_current).empl_rec_type;
10990 l_debug_str := l_debug_str || 'empl_type=' || l_cur_rec(l_current).empl_type;
10991 l_debug_str := l_debug_str || 'recommend_empl=' || l_cur_rec(l_current).recommend_empl ;
10992 l_debug_str := l_debug_str || 'rescind_empl=' || l_cur_rec(l_current).rescind_empl;
10993 l_debug_str := l_debug_str || 'remarks=' || l_cur_rec(l_current).remarks;
10994 l_debug_str := l_debug_str || 'empl_start_date=' || l_cur_rec(l_current).empl_start_date;
10995 l_debug_str := l_debug_str || 'empl_end_date=' || l_cur_rec(l_current).empl_end_date;
10996 l_debug_str := l_debug_str || 'course_relevance=' || l_cur_rec(l_current).course_relevance;
10997 l_debug_str := l_debug_str || 'empl_time=' || l_cur_rec(l_current).empl_time;
10998 l_debug_str := l_debug_str || 'empl_name=' || l_cur_rec(l_current).empl_name;
10999 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11000 END IF;
11001
11002
11003 --manoj ends
11004
11005 /* Debug */
11006 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11007 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
11008 l_debug_str := 'l_status from Get_Empl_Info: '||l_status;
11009 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11010 END IF;
11011 IF l_status = 'U' THEN
11012 /* Debug */
11013 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11014 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
11015 l_debug_str := 'Unexpected error in Update_Employment_Info. l_status is U.';
11016 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11017 END IF;
11018 RAISE FND_API.G_EXC_ERROR;
11019 END IF;
11020
11021 IF l_status = 'N' THEN
11022 -- New employment record status A;
11023 l_cur_rec(l_current).action_code := 'A';
11024 p_person_rec.empl_status := 'C'; -- Changed
11025 p_person_rec.changes_found := 'Y';
11026 Put_Log_Msg('Info is changed for '||l_cur_rec(l_current).person_id,0);
11027
11028 ELSIF l_status = 'S' THEN
11029
11030 IF l_cur_rec(l_current).action_code IN ('Y') THEN
11031 l_cur_rec(l_current).action_code := 'C'; --CANCEL
11032 END IF;
11033
11034 IF (l_cur_rec(l_current).action_code = 'C' AND l_prev_rec.action_code <> 'C') OR
11035 (l_cur_rec(l_current).action_code <> 'C' AND l_prev_rec.action_code = 'C' ) THEN
11036 p_person_rec.empl_status := 'C'; -- Changed
11037 p_person_rec.changes_found := 'Y';
11038 ELSE
11039 IF (l_cur_rec(l_current).empl_rec_type = 'F' AND
11040 (
11041 l_prev_rec.empl_rec_type
11042 ||g_delimeter||l_prev_rec.empl_type
11043 ||g_delimeter||l_prev_rec.recommend_empl
11044 ||g_delimeter||l_prev_rec.rescind_empl
11045 ||g_delimeter||l_prev_rec.remarks
11046 ||g_delimeter||l_prev_rec.empl_start_date
11047 ||g_delimeter||l_prev_rec.empl_end_date
11048 ||g_delimeter||l_prev_rec.course_relevance
11049 ||g_delimeter||l_prev_rec.empl_time
11050 ||g_delimeter||l_prev_rec.empl_name
11051 <>
11052 l_cur_rec(l_current).empl_rec_type
11053 ||g_delimeter||l_cur_rec(l_current).empl_type
11054 ||g_delimeter||l_cur_rec(l_current).recommend_empl
11055 ||g_delimeter||l_cur_rec(l_current).rescind_empl
11056 ||g_delimeter||l_cur_rec(l_current).remarks
11057 ||g_delimeter||l_cur_rec(l_current).empl_start_date
11058 ||g_delimeter||l_cur_rec(l_current).empl_end_date
11059 ||g_delimeter||l_cur_rec(l_current).course_relevance
11060 ||g_delimeter||l_cur_rec(l_current).empl_time
11061 ||g_delimeter||l_cur_rec(l_current).empl_name
11062 )) THEN
11063 Put_Log_Msg('Info is changed for '||l_cur_rec(l_current).person_id,0);
11064 l_cur_rec(l_current).action_code := 'E';
11065 p_person_rec.empl_status := 'C'; -- Changed
11066 p_person_rec.changes_found := 'Y';
11067 END IF;
11068 END IF;
11069 ELSE --Remove current person from the insert list
11070 l_cur_rec(l_current).person_id := NULL;
11071 END IF;
11072
11073 IF p_person_rec.empl_status = 'C' AND p_person_rec.person_status <> 'I' THEN
11074 Insert_Empl_Info ( p_data_rec => l_cur_rec(l_current));
11075 END IF;
11076 END LOOP;
11077
11078 Put_Log_Msg('Employment info is changed ',0);
11079
11080 Put_Log_Msg(l_api_name||' ends ',0);
11081 /* Debug */
11082 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11083 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
11084 l_debug_str := 'Returning S from Update_Employment_Info.';
11085 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11086 END IF;
11087 RETURN 'S';
11088
11089 EXCEPTION
11090
11091 WHEN FND_API.G_EXC_ERROR THEN
11092
11093 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
11094 /* Debug */
11095 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11096 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
11097 l_debug_str := 'ND_API.G_EXC_ERROR: Returning U from Update_Employment_Info. '||SQLERRM;
11098 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11099 END IF;
11100 RETURN 'U';
11101
11102 WHEN OTHERS THEN
11103
11104 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
11105 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
11106 END IF;
11107
11108 Put_Log_Msg(l_api_name||' OTHERS return U',1);
11109 /* Debug */
11110 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11111 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Employment_Info';
11112 l_debug_str := 'EXCEPTION: Returning U from Update_Employment_Info. '||SQLERRM;
11113 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11114 END IF;
11115
11116 RETURN 'U';
11117 END Update_Employment_Info;
11118
11119
11120
11121 /******************************************************************
11122 Created By : Arkadi Tereshenkov
11123
11124 Date Created By : Oct 14, 2002
11125
11126 Purpose : Update Conviction block information.
11127
11128 Remarks :
11129
11130 Change History
11131 Who When What
11132 ------------------------------------------------------------------------
11133
11134 ******************************************************************/
11135 FUNCTION Update_Conviction_Info (
11136 p_person_rec IN OUT NOCOPY t_student_rec --Person record
11137 ) RETURN VARCHAR2
11138
11139 IS
11140
11141 l_api_name CONSTANT VARCHAR2(30) := 'Update_Conviction_Info';
11142 l_cur_rec IGS_SV_CONVICTIONS%ROWTYPE;
11143 l_status VARCHAR2(1);
11144 l_prev_rec IGS_SV_CONVICTIONS%ROWTYPE;
11145
11146 BEGIN
11147
11148 Put_Log_Msg(l_api_name||' begins ',0);
11149 /* Debug */
11150 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11151 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11152 l_debug_str := 'Entering Update_Conviction_Info. p_person_rec.person_id is '||p_person_rec.person_id;
11153 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11154 END IF;
11155
11156
11157 -- Call Validate_Convictions_Info
11158
11159 p_person_rec.conv_status := Validate_Convictions_Info (p_person_rec => p_person_rec,
11160 p_data_rec => l_cur_rec);
11161
11162 IF p_person_rec.conv_status = 'E' THEN -- Validation error - mark person as invalid
11163
11164 p_person_rec.person_status := 'I';
11165
11166 Put_Log_Msg('Validation error occurs ',1);
11167 /* Debug */
11168 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11169 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11170 l_debug_str := 'Returning S from Update_Conviction_Info. conv_status is E.';
11171 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11172 END IF;
11173
11174 RETURN 'S';
11175
11176 ELSIF p_person_rec.conv_status = 'U' THEN --Unexpected error - terminate execution
11177
11178 Put_Log_Msg('Unexpected error returned by validation ',1);
11179 /* Debug */
11180 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11181 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11182 l_debug_str := 'Unexpected error in Update_Conviction_Info. conv_status is U.';
11183 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11184 END IF;
11185
11186 RAISE FND_API.G_EXC_ERROR;
11187
11188 ELSIF p_person_rec.conv_status = 'N' THEN -- Not found
11189
11190 Put_Log_Msg('Convictions block is not found ',0);
11191 /* Debug */
11192 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11193 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11194 l_debug_str := 'Returning S from Update_Conviction_Info. conv_status is N.';
11195 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11196 END IF;
11197
11198 RETURN 'S';
11199
11200 END IF;
11201
11202 -- If something is returned by the procedure - Insert it right away.
11203
11204 Put_Log_Msg('Convictions info is changed ',0);
11205
11206 p_person_rec.changes_found := 'Y';
11207
11208 IF p_person_rec.person_status <> 'I' THEN
11209
11210 Insert_Convictions_Info ( p_data_rec => l_cur_rec);
11211
11212 END IF;
11213
11214 Put_Log_Msg(l_api_name||' ends ',0);
11215 /* Debug */
11216 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11217 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11218 l_debug_str := 'Returning S from Update_Conviction_Info.';
11219 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11220 END IF;
11221
11222 RETURN 'S';
11223
11224 EXCEPTION
11225
11226 WHEN FND_API.G_EXC_ERROR THEN
11227
11228 Put_Log_Msg(l_api_name||' EXEC_ERROR returns U',1);
11229 /* Debug */
11230 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11231 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11232 l_debug_str := 'FND_API.G_EXC_ERROR: Returning U from Update_Conviction_Info. '||SQLERRM;
11233 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11234 END IF;
11235 RETURN 'U';
11236
11237 WHEN OTHERS THEN
11238
11239 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
11240 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
11241 END IF;
11242
11243 Put_Log_Msg(l_api_name||' OTHERS return U',1);
11244 /* Debug */
11245 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11246 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Update_Conviction_Info';
11247 l_debug_str := 'EXCEPTION: Returning U from Update_Conviction_Info. '||SQLERRM;
11248 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11249 END IF;
11250
11251 RETURN 'U';
11252
11253 END Update_Conviction_Info;
11254
11255
11256
11257 /******************************************************************
11258 Created By : Arkadi Tereshenkov
11259
11260 Date Created By : Oct 14, 2002
11261
11262 Purpose : This procedure cleans up tables for a person
11263 if part of the information is not valid.
11264
11265 Remarks :
11266
11267 Change History
11268 Who When What
11269 ------------------------------------------------------------------------
11270
11271 ******************************************************************/
11272 PROCEDURE Remove_Person_Data (
11273 p_person_id IN NUMBER,
11274 p_batch_id IN NUMBER
11275 ) IS
11276
11277 BEGIN
11278 /* Debug */
11279 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11280 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Remove_Person_Data';
11281 l_debug_str := 'Entering Remove_Person_Data. p_person_id is '||p_person_id||' and p_batch_id is '||p_batch_id;
11282 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11283 END IF;
11284 -- Delete from all related tables
11285
11286 DELETE FROM igs_sv_addresses WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL );
11287
11288 DELETE FROM igs_sv_bio_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11289
11290 DELETE FROM igs_sv_convictions WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11291
11292 DELETE FROM igs_sv_depdnt_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11293
11294 DELETE FROM igs_sv_empl_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11295
11296 DELETE FROM igs_sv_finance_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11297
11298 DELETE FROM igs_sv_legal_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11299
11300 DELETE FROM igs_sv_oth_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11301
11302 DELETE FROM igs_sv_prgms_info WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ) ;
11303
11304 DELETE FROM igs_sv_persons WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL );
11305
11306 DELETE FROM igs_sv_btch_summary WHERE batch_id = p_batch_id AND ( person_id = p_person_id OR p_person_id IS NULL ); -- prbhardw
11307
11308 /* Debug */
11309 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11310 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Remove_Person_Data';
11311 l_debug_str := 'Exiting Remove_Person_Data.';
11312 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11313 END IF;
11314
11315 END Remove_Person_Data;
11316
11317
11318
11319 /******************************************************************
11320 Created By : Arkadi Tereshenkov
11321
11322 Date Created By : Oct 14, 2002
11323
11324 Purpose : This is the main Concurrent program that is
11325 called when submitting a request for the
11326 Exchange Visitors.
11327
11328 Remarks :
11329
11330 Change History
11331 Who When What
11332 ------------------------------------------------------------------------
11333 mmkumar 12-Sep-2005 Added one more parameter for p_org_id
11334 ******************************************************************/
11335 PROCEDURE EV_Batch_Process(
11336 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
11337 retcode OUT NOCOPY NUMBER , -- Request standard return status
11338 p_validate_only IN VARCHAR2, -- Validate only flag 'Y' 'N'
11339 p_org_id IN VARCHAR2,
11340 p_dso_id IN VARCHAR2
11341 )
11342 IS
11343
11344 l_api_name CONSTANT VARCHAR2(30) := 'EV_Batch_Process';
11345
11346 l_dso_id VARCHAR2(20) := substr(p_dso_id,1,instr(p_dso_id,'-',-1)-1) ;
11347 l_dso_party_id NUMBER := to_number(substr(p_dso_id,instr(p_dso_id,'-',-1)+1));
11348
11349 l_org_id VARCHAR2(20) := substr(p_org_id,1,instr(p_org_id,'-',-1)-1) ;
11350 l_org_party_id NUMBER := to_number(substr(p_org_id,instr(p_org_id,'-',-1)+1));
11351
11352 BEGIN
11353 -- Just call the procedure
11354 /* Debug */
11355 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11356 l_label := 'igs.plsql.igs_sv_batch_process_pkg.EV_Batch_Process';
11357 l_debug_str := 'Entering EV_Batch_Process. p_validate_only is '||p_validate_only;
11358 l_debug_str := l_debug_str || 'l_org_id=' || l_org_id;
11359 l_debug_str := l_debug_str || 'l_dso_id=' || l_dso_id;
11360 l_debug_str := l_debug_str || 'l_dso_party_id=' || l_dso_party_id;
11361 l_debug_str := l_debug_str || 'l_org_party_id=' || l_org_party_id;
11362 l_debug_str := l_debug_str || 'p_org_id=' || p_org_id;
11363 l_debug_str := l_debug_str || 'p_dso_id=' || p_dso_id;
11364 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11365 END IF;
11366 SAVEPOINT EV_Batch_Process;
11367
11368 Create_Batch(
11369 errbuf => errbuf ,
11370 retcode => retcode,
11371 p_batch_type => 'E',
11372 p_validate_only => p_validate_only,
11373 p_org_id => l_org_id,
11374 p_dso_id => l_dso_id,
11375 p_dso_party_id => l_dso_party_id,
11376 p_org_party_id => l_org_party_id
11377 );
11378 EXCEPTION
11379
11380 WHEN OTHERS THEN
11381 /* Debug */
11382 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11383 l_label := 'igs.plsql.igs_sv_batch_process_pkg.EV_Batch_Process';
11384 l_debug_str := 'Exception in EV_Batch_Process. '||SQLERRM;
11385 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11386 END IF;
11387
11388 ROLLBACK TO EV_Batch_Process;
11389
11390 retcode := 2;
11391 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
11392 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
11393 END IF;
11394
11395 Generate_Message;
11396
11397 END EV_Batch_Process;
11398
11399
11400 FUNCTION Get_pre_noshow_status(p_person_id igs_sv_persons.person_id%TYPE, p_batch_id igs_sv_persons.person_id%TYPE)
11401 RETURN VARCHAR2
11402 IS
11403 l_no_show_status VARCHAR2(1);
11404 CURSOR no_show_change(c_person_id igs_sv_persons.person_id%TYPE, c_batch_id igs_sv_persons.person_id%TYPE)
11405 IS
11406 SELECT old_per.no_show_flag
11407 FROM igs_sv_persons new_per, igs_sv_persons old_per
11408 WHERE new_per.person_id = c_person_id AND
11409 new_per.batch_id = c_batch_id AND
11410 old_per.batch_id = (SELECT max(batch_id) FROM igs_sv_persons WHERE batch_id < c_batch_id) AND
11411 old_per.person_id = new_per.person_id;
11412 BEGIN
11413
11414 OPEN no_show_change(p_person_id,p_batch_id);
11415 FETCH no_show_change INTO l_no_show_status;
11416 CLOSE no_show_change;
11417
11418 RETURN NVL(l_no_show_status,'N');
11419
11420 END Get_pre_noshow_status;
11421
11422
11423 FUNCTION new_batch(
11424 p_batch_id igs_sv_batches.batch_id%TYPE,
11425 p_dso_id VARCHAR2,
11426 p_org_id VARCHAR2,
11427 p_batch_type VARCHAR2,
11428 p_org_party_id NUMBER,
11429 p_user_party_id NUMBER
11430 )
11431 RETURN NUMBER
11432 IS
11433 l_batch_id igs_sv_batches.batch_id%TYPE;
11434 BEGIN
11435 -- DELETE FROM igs_sv_batches WHERE batch_id = p_batch_id;
11436
11437 INSERT INTO igs_sv_batches
11438 ( batch_id,
11439 schema_version,
11440 sevis_user_id,
11441 sevis_school_id,
11442 batch_status,
11443 batch_type,
11444 creation_date ,
11445 created_by ,
11446 last_updated_by ,
11447 last_update_date ,
11448 last_update_login,
11449 SEVIS_SCHOOL_ORG_ID ,
11450 SEVIS_USER_PERSON_ID
11451 )
11452 VALUES
11453 ( igs_sv_batches_id_s.nextval,
11454 1,
11455 p_dso_id,
11456 p_org_id,
11457 'S',
11458 p_batch_type,
11459 sysdate,
11460 g_update_by,
11461 g_update_by,
11462 sysdate,
11463 g_update_login,
11464 p_org_party_id,
11465 p_user_party_id
11466 )
11467 RETURNING batch_id INTO l_batch_id;
11468
11469 RETURN l_batch_id;
11470 END new_batch;
11471
11472 /******************************************************************
11473 Created By : Arkadi Tereshenkov
11474
11475 Date Created By : Oct 14, 2002
11476
11477 Purpose : This is the main procedure to be called when
11478 the request has been submitted for either the
11479 Exchange Visitors or Non Immigrant students.
11480 This procedure is called from the concurrent
11481 requests.
11482
11483 remarks :
11484
11485 Change History
11486 Who When What
11487 pkpatel 22-APR-2003 Bug No 2908378
11488 Modified the action type to ('TR','ED') for EV records
11489 Added the code for inserting Site of Activity Address
11490 ------------------------------------------------------------------------
11491 mmkumar 12-Sep-2005 SEVIS 5 uptake, Added new parameter for Org ID
11492 ******************************************************************/
11493 PROCEDURE Create_Batch(
11494 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
11495 retcode OUT NOCOPY NUMBER , -- Request standard return status
11496 p_batch_type IN VARCHAR2, -- Batch type E(ev), I(international), B (both)
11497 p_validate_only IN VARCHAR2, -- Validate only flag 'Y' 'N'
11498 p_org_id IN VARCHAR2,
11499 p_dso_id IN VARCHAR2,
11500 p_dso_party_id IN NUMBER,
11501 p_org_party_id IN NUMBER
11502 ) IS
11503
11504 l_api_name CONSTANT VARCHAR2(25) := 'Create_Batch';
11505 TYPE student_list_cur IS REF CURSOR;
11506 c_student_list student_list_cur;
11507 c_student_list_rec c_stdnt_list;
11508 -- select all persons from I-20 where form status is not Terminated or Completed and reported to SEVIS already
11509
11510
11511
11512 l_batch_id igs_sv_batches.batch_id%TYPE;
11513 l_person_sevis_id IGS_SV_PERSONS.SEVIS_USER_ID%TYPE;
11514 l_issue_rec IGS_SV_PERSONS%ROWTYPE;
11515 l_bio_rec IGS_SV_BIO_INFO%ROWTYPE;
11516 l_oth_rec IGS_SV_OTH_INFO%ROWTYPE;
11517 l_edu_rec IGS_SV_PRGMS_INFO%ROWTYPE;
11518 l_fin_rec IGS_SV_FINANCE_INFO %ROWTYPE;
11519 l_dep_rec g_dependent_rec_type;
11520 l_f_addr_rec g_address_rec_type;
11521 l_us_addr_rec g_address_rec_type;
11522 l_site_addr_rec g_address_rec_type;
11523 l_exist NUMBER(25);
11524 l_submiter_id NUMBER(25);
11525 l_submiter_number hz_parties.party_number%TYPE;
11526 no_show_status VARCHAR2(1);
11527 l_cur_authdrp_rec IGS_SV_PRGMS_INFO%ROWTYPE;
11528 l_btch_id igs_sv_batches.batch_id%TYPE;
11529
11530 CURSOR C_EV_CUR IS
11531 SELECT fr.person_id, min(ev_form_id) form_id, pr.party_number person_number, fr.no_show_flag, fr.reprint_reason reprint_reason
11532 FROM igs_pe_ev_form fr, hz_parties pr
11533 WHERE pr.party_id = fr.person_id AND fr.form_effective_date <= trunc(sysdate)
11534 AND fr.ev_form_id NOT IN
11535 (SELECT st.ev_form_id FROM igs_pe_ev_form_stat st
11536 WHERE st.action_type IN ('TR','ED')
11537 AND st.ev_form_id = fr.ev_form_id
11538 AND st.ev_form_stat_id IN
11539 ( SELECT NVL(prs.form_status_id,0) FROM igs_sv_prgms_info prs, igs_sv_persons pr
11540 WHERE prs.person_id = pr.person_id AND prs.batch_id = pr.batch_id
11541 AND pr.record_status <> 'E' AND prs.person_id = fr.person_id)
11542 ) AND fr.sevis_school_identifier = p_org_party_id AND
11543 ( (p_dso_id IS NULL AND
11544 (EXISTS (SELECT rel.object_id
11545 FROM hz_relationships rel
11546 WHERE rel.object_id = fr.person_id AND
11547 --rel.DIRECTIONAL_FLAG = 'F' AND fix for bug 5258405
11548 sysdate between rel.start_date AND nvl(end_date, sysdate) AND
11549 rel.RELATIONSHIP_CODE = 'DSO_FOR') ))
11550 OR
11551 fr.person_id IN (SELECT rel.object_id FROM hz_relationships rel
11552 WHERE rel.subject_id = p_dso_party_id
11553 --AND rel.DIRECTIONAL_FLAG = 'F' fix for bug 5258405
11554 AND sysdate between rel.start_date AND nvl(end_date, sysdate)
11555 AND rel.RELATIONSHIP_CODE = 'DSO_FOR')
11556 )
11557 GROUP BY pr.party_number,fr.person_id, fr.no_show_flag, fr.reprint_reason;
11558
11559 CURSOR C_NI_CUR IS
11560 SELECT fr.person_id, min(nonimg_form_id) form_id, pr.party_number person_number, null no_show_flag, fr.reprint_reason reprint_reason
11561 FROM igs_pe_nonimg_form fr, hz_parties pr
11562 WHERE pr.party_id = fr.person_id
11563 AND fr.form_effective_date <= trunc(sysdate)
11564 AND fr.nonimg_form_id NOT IN
11565 ( SELECT st.nonimg_form_id FROM IGS_PE_NONIMG_STAT st
11566 WHERE st.action_type IN ('T','C')
11567 AND st.nonimg_form_id = fr.nonimg_form_id
11568 AND st.nonimg_stat_id IN
11569 ( SELECT NVL(prs.form_status_id,0)
11570 FROM igs_sv_prgms_info prs, igs_sv_persons pr
11571 WHERE prs.person_id = pr.person_id AND prs.batch_id = pr.batch_id
11572 AND pr.record_status <> 'E' AND prs.person_id = fr.person_id
11573 ) )
11574 AND fr.sevis_school_identifier = p_org_party_id AND
11575 ( (p_dso_id IS NULL AND
11576 (EXISTS (SELECT rel.object_id
11577 FROM hz_relationships rel
11578 WHERE rel.object_id = fr.person_id AND
11579 --rel.DIRECTIONAL_FLAG = 'F' AND fix for bug 5258405
11580 sysdate between rel.start_date AND nvl(end_date, sysdate) AND
11581 rel.RELATIONSHIP_CODE = 'DSO_FOR') ))
11582 OR
11583 fr.person_id IN (SELECT rel.object_id
11584 FROM hz_relationships rel
11585 WHERE rel.subject_id = p_dso_party_id and
11586 --rel.DIRECTIONAL_FLAG = 'F' AND fix for bug 5258405
11587 sysdate between rel.start_date AND nvl(end_date, sysdate) AND
11588 rel.RELATIONSHIP_CODE = 'DSO_FOR')
11589 )
11590 GROUP BY pr.party_number,fr.person_id, fr.reprint_reason;
11591
11592
11593 CURSOR c_submiter_id IS
11594 SELECT person_party_id
11595 FROM fnd_user
11596 WHERE user_id = g_update_by;
11597
11598 CURSOR submiter_number_cur(cp_party_id hz_parties.party_id%TYPE) IS
11599 SELECT party_number
11600 FROM hz_parties
11601 WHERE party_id = cp_party_id;
11602
11603 CURSOR c_prev_info( p_id NUMBER, f_id NUMBER) IS
11604 SELECT 1
11605 FROM igs_sv_persons a,
11606 igs_sv_batches b
11607 WHERE person_id = p_id
11608 AND a.batch_id = b.batch_id
11609 AND b.batch_type = p_batch_type
11610 AND a.record_status <> 'E'
11611 AND form_id = f_id;
11612
11613 CURSOR c_active_batch IS
11614 SELECT batch_id
11615 FROM igs_sv_batches
11616 WHERE batch_status IN ('N') -- prbhardw
11617 AND batch_type = p_batch_type;
11618
11619 CURSOR c_print_form (p_form_id NUMBER) IS
11620 SELECT decode(print_form,'Y','1','0') print_form
11621 FROM igs_pe_nonimg_form
11622 WHERE nonimg_form_id = p_form_id
11623 AND p_batch_type = 'I'
11624 UNION
11625 SELECT decode(print_form,'Y','1','0') print_form
11626 FROM igs_pe_ev_form
11627 WHERE ev_form_id = p_form_id
11628 AND p_batch_type = 'E';
11629
11630
11631 ---prbhardw
11632 CURSOR c_prgm_print_flag (p_form_id NUMBER) IS
11633 SELECT decode(print_flag,'Y','1','0') print_form
11634 FROM igs_pe_nonimg_stat
11635 WHERE nonimg_form_id = p_form_id
11636 AND p_batch_type = 'I'
11637 AND action_type = 'E';
11638
11639
11640 CURSOR c_get_dso_id(c_person_id igs_pe_ev_form.person_id%TYPE)
11641 IS
11642 SELECT alt.api_person_id, alt.pe_person_id
11643 FROM hz_relationships rel, igs_pe_alt_pers_id alt
11644 WHERE rel.subject_id = c_person_id and
11645 rel.object_id = alt.pe_person_id AND
11646 sysdate between alt.start_dt and nvl(alt.end_dt,sysdate+1) AND
11647 sysdate between rel.start_date AND nvl(end_date, sysdate) AND
11648 rel.RELATIONSHIP_CODE = 'HAS_DSO' AND
11649 alt.person_id_type
11650 IN (SELECT person_id_type
11651 FROM igs_pe_person_id_typ
11652 WHERE s_person_id_type = 'SEVIS_ID');
11653
11654
11655
11656
11657 l_batch_status VARCHAR(1) := 'N'; -- batch status (S)uccess, (E)rror,'N'o new students
11658 l_record_number igs_sv_persons.record_number%TYPE;
11659 l_student_rec t_student_rec;
11660 l_status VARCHAR2(1);
11661 l_count NUMBER(10);
11662 l_soa_count NUMBER(5); -- prbhardw CP enhancement
11663
11664 l_sevis_user_person_id NUMBER;
11665
11666 dso_id VARCHAR2(20) := p_dso_id;
11667 dso_party_id VARCHAR2(20) := p_dso_party_id;
11668 -- prbhardw
11669
11670 BEGIN
11671 /* Debug */
11672 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11673 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
11674 l_debug_str := 'Entering Create_Batch. p_batch_type is '||p_batch_type;
11675 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11676 END IF;
11677
11678 FND_MSG_PUB.initialize;
11679
11680 SAVEPOINT Create_Batch;
11681 IF fnd_profile.value('IGS_SV_ENABLED') <> 'Y' THEN
11682 /* Debug */
11683 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11684 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
11685 l_debug_str := 'Raise ERROR: Sevis Disabled';
11686 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11687 END IF;
11688
11689 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_DISABLED'); -- SEVIS disabled
11690 FND_MSG_PUB.Add;
11691 RAISE FND_API.G_EXC_ERROR;
11692
11693 END IF;
11694
11695
11696 IF fnd_profile.value('IGS_SV_DEBUG') <> 'Y' THEN
11697
11698 g_debug_level := 1;
11699
11700 END IF;
11701
11702 g_update_login := FND_GLOBAL.LOGIN_ID;
11703 g_update_by := FND_GLOBAL.USER_ID;
11704
11705 OPEN c_submiter_id;
11706 FETCH c_submiter_id
11707 INTO l_submiter_id;
11708 CLOSE c_submiter_id;
11709
11710
11711 l_record_number := 1;
11712 IF p_dso_id IS NULL THEN
11713
11714 l_person_sevis_id := get_person_sevis_id(l_submiter_id);
11715 IF l_person_sevis_id IS NULL THEN
11716
11717 OPEN submiter_number_cur(l_submiter_id);
11718 FETCH submiter_number_cur INTO l_submiter_number;
11719 CLOSE submiter_number_cur;
11720
11721 /* Debug */
11722 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11723 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
11724 l_debug_str := 'Raise FND_API.G_EXC_ERROR: l_person_sevis_id is null';
11725 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11726 END IF;
11727
11728 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_SUBMITTER_ID_ERR'); -- SEVIS submitter id not found
11729 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_submiter_number);
11730 FND_MSG_PUB.Add;
11731 RAISE FND_API.G_EXC_ERROR;
11732
11733 END IF;
11734 l_sevis_user_person_id := l_submiter_id;
11735 ELSE
11736 l_person_sevis_id := p_dso_id;
11737 l_sevis_user_person_id := p_dso_party_id;
11738
11739 END IF;
11740 -- Check for active batch
11741 OPEN c_active_batch;
11742 FETCH c_active_batch INTO l_batch_id;
11743 CLOSE c_active_batch;
11744
11745 IF l_batch_id IS NOT NULL AND p_validate_only = 'N' THEN
11746 /*Debug*/
11747 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11748 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
11749 l_debug_str := 'Raise ERROR: message name IGS_SV_BATCH_FOUND';
11750 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11751 END IF;
11752
11753 -- Active batch is found and mode not validate only - terminate current process
11754 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_BATCH_FOUND');
11755 FND_MESSAGE.SET_TOKEN('BATCH_ID', l_batch_id);
11756 FND_MSG_PUB.Add;
11757 RAISE FND_API.G_EXC_ERROR;
11758
11759 END IF;
11760 -- Create batch record
11761 Put_Log_Msg('Inserting batch record',0);
11762
11763 INSERT INTO igs_sv_batches
11764 ( batch_id,
11765 schema_version,
11766 sevis_user_id,
11767 sevis_school_id,
11768 batch_status,
11769 batch_type,
11770 creation_date ,
11771 created_by ,
11772 last_updated_by ,
11773 last_update_date ,
11774 last_update_login,
11775 SEVIS_SCHOOL_ORG_ID,
11776 SEVIS_USER_PERSON_ID
11777 )
11778 VALUES
11779 ( igs_sv_batches_id_s.nextval,
11780 1,
11781 l_person_sevis_id,
11782 p_org_id,
11783 'S',
11784 p_batch_type,
11785 sysdate,
11786 g_update_by,
11787 g_update_by,
11788 sysdate,
11789 g_update_login,
11790 p_org_party_id,
11791 l_sevis_user_person_id
11792 )
11793 RETURNING batch_id INTO l_batch_id;
11794 g_running_create_batch := l_batch_id; -- prbhardw CP enhancement
11795 g_running_update_batch := l_batch_id; -- prbhardw CP enhancement
11796 g_running_batches(1) := l_batch_id;
11797 -- Loop for each student
11798 IF p_batch_type ='I' THEN
11799 OPEN C_NI_CUR;
11800 FETCH C_NI_CUR INTO c_student_list_rec;
11801 ELSE
11802 OPEN C_EV_CUR;
11803 FETCH C_EV_CUR INTO c_student_list_rec;
11804 END IF;
11805
11806 --FOR c_student_list_rec IN c_student_list LOOP
11807 LOOP -- prbhardw
11808 IF p_batch_type ='I' THEN
11809 EXIT WHEN C_NI_CUR%NOTFOUND;
11810 ELSE
11811 EXIT WHEN C_EV_CUR%NOTFOUND;
11812 END IF;
11813 /*FETCH c_student_list INTO
11814 c_student_list_rec.person_id,
11815 c_student_list_rec.form_id,
11816 c_student_list_rec.person_number,
11817 c_student_list_rec.no_show_flag,
11818 c_student_list_rec.reprint_reason;
11819
11820 EXIT WHEN c_student_list%NOTFOUND;*/
11821
11822 -- check for total students
11823 IF (MOD(g_create_count,250) = 0 AND g_create_count > 0 ) OR (MOD(g_update_count,250) = 0 AND g_update_count > 0 ) THEN
11824 l_batch_id := new_batch(l_batch_id, l_person_sevis_id, p_org_id, p_batch_type,p_org_party_id,l_sevis_user_person_id);
11825 IF MOD(g_create_count,250) = 0 THEN -- prbhardw CP enhancement
11826 g_running_create_batch := l_batch_id;
11827 g_running_batches(g_running_batches.COUNT + 1) := g_running_create_batch;
11828 ELSE
11829 g_running_update_batch := l_batch_id;
11830 g_running_batches(g_running_batches.COUNT + 1) := g_running_update_batch;
11831 END IF;
11832
11833 Put_Log_Msg('count exceeded max limmit. new batch created: '||l_batch_id||' g_create_count '||g_create_count||' g_update_count '||g_update_count,0);
11834
11835 END IF;
11836
11837
11838
11839 Put_Log_Msg('Initializing student record',0);
11840 /* Debug */
11841 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11842 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
11843 l_debug_str := 'Setting person values in Create_Batch Person ID '||c_student_list_rec.person_id||' Person No: '||c_student_list_rec.person_number;
11844 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11845 END IF;
11846 -- Initialize record group for the student
11847 l_student_rec.person_id := c_student_list_rec.person_id;
11848 l_student_rec.record_number := l_record_number;
11849 l_student_rec.record_status := 'N'; -- so far new
11850 l_student_rec.person_number := c_student_list_rec.person_number;
11851 l_student_rec.form_id := c_student_list_rec.form_id;
11852 l_student_rec.sevis_user_id := get_person_sevis_id(l_student_rec.person_id);
11853 l_student_rec.person_status := 'V';
11854 l_student_rec.batch_type := p_batch_type;
11855 l_student_rec.batch_id := l_batch_id;
11856 l_student_rec.changes_found := 'N';
11857 l_student_rec.dep_flag := 'N';
11858 l_student_rec.no_show_flag := c_student_list_rec.no_show_flag;
11859 l_student_rec.reprint_reason := c_student_list_rec.reprint_reason; --prbhardw
11860
11861 -- Check if the student has been submitted to sevis
11862
11863 OPEN c_prev_info ( l_student_rec.person_id , c_student_list_rec.form_id);
11864 FETCH c_prev_info
11865 INTO l_exist;
11866
11867 -- Assign mode to the record
11868
11869 Put_Log_Msg('',1);
11870 Put_Log_Msg('*******************Next person '||l_student_rec.person_number||'**************************',1);
11871
11872 IF c_prev_info%FOUND THEN
11873 l_student_rec.record_status := 'C'; --change mode
11874 -- If mode update - check SEVIS person Id
11875
11876 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_UPD'); -- Student is found in Update mode
11877 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_student_rec.person_number);
11878 Put_Log_Msg(FND_MESSAGE.Get,1);
11879
11880 IF l_student_rec.sevis_user_id IS NULL THEN
11881
11882 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_ID_ERR'); -- SEVIS STUDENT id not found
11883 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_student_rec.person_number);
11884 Put_Log_Msg(FND_MESSAGE.Get,1);
11885 Put_Log_Msg('Sevis id not found',0);
11886
11887 l_student_rec.person_status := 'I';
11888
11889 END IF;
11890
11891 ELSE
11892
11893 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_CRT'); -- Student is found in Create mode
11894 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_student_rec.person_number);
11895 Put_Log_Msg(FND_MESSAGE.Get,1);
11896
11897 END IF;
11898
11899 CLOSE c_prev_info;
11900
11901 Put_Log_Msg('Person status is: '||l_student_rec.person_status,0);
11902
11903 IF l_student_rec.person_status = 'V' THEN
11904
11905 OPEN c_print_form(l_student_rec.form_id);
11906 FETCH c_print_form INTO l_student_rec.print_form;
11907 CLOSE c_print_form;
11908
11909 -- Create main student record
11910 IF p_dso_id IS NULL THEN
11911 OPEN c_get_dso_id(l_student_rec.person_id);
11912 FETCH c_get_dso_id INTO dso_id, dso_party_id;
11913 CLOSE c_get_dso_id;
11914 END IF;
11915 /* Debug */
11916 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
11917 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
11918 l_debug_str := 'Inserting in igs_sv_persons batch id: '||l_batch_id;
11919 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
11920 END IF;
11921 INSERT INTO igs_sv_persons (
11922 batch_id ,
11923 person_id ,
11924 record_number,
11925 form_id ,
11926 print_form ,
11927 pdso_sevis_id,
11928 record_status,
11929 person_number,
11930 sevis_user_id,
11931 creation_date,
11932 created_by ,
11933 last_updated_by ,
11934 last_update_date ,
11935 last_update_login,
11936 no_show_flag,
11937 reprint_rsn_code,
11938 PDSO_SEVIS_PERSON_ID
11939 ) VALUES (
11940 l_batch_id,
11941 l_student_rec.person_id,
11942 l_student_rec.record_number,
11943 l_student_rec.form_id,
11944 l_student_rec.print_form,
11945 dso_id,
11946 l_student_rec.record_status,
11947 l_student_rec.person_number,
11948 l_student_rec.sevis_user_id,
11949 sysdate,
11950 g_update_by,
11951 g_update_by,
11952 sysdate,
11953 g_update_login,
11954 l_student_rec.no_show_flag,
11955 l_student_rec.reprint_reason,
11956 dso_party_id
11957 );
11958 END IF;
11959
11960 g_nonimg_form_id := l_student_rec.form_id;
11961
11962 IF l_student_rec.record_status = 'N' THEN
11963 g_person_status := 'NEW';
11964 -- If mode new
11965
11966 -- Call Validate_Issue_Info and Insert_Issue_Info
11967
11968 -- 'S' - record found and validated 'E' - validation error 'U' - Unexpected error 'N' - data not found
11969
11970
11971 l_student_rec.issue_status := Validate_Issue_Info (p_person_rec => l_student_rec,
11972 p_data_rec => l_issue_rec);
11973 -- Call Validate_Bio_Info and Insert_Bio_Info
11974 l_student_rec.bio_status := Validate_Bio_Info (p_person_rec => l_student_rec,
11975 p_data_rec => l_bio_rec);
11976 -- Call Validate_US_address_Info Insert_Address_Info
11977 l_student_rec.us_addr_status := Validate_Us_Addr_Info (p_person_rec => l_student_rec,
11978 p_data_rec => l_us_addr_rec,
11979 p_records => l_count);
11980 -- Call Validate_Finance_Info Insert_Finance_Info
11981 l_student_rec.fin_status := Validate_Finance_Info (p_person_rec => l_student_rec,
11982 p_data_rec => l_fin_rec);
11983
11984 -- Call Validate_EDU_Info Insert_EDU_Info
11985
11986 l_student_rec.edu_status := Validate_Edu_Info (p_person_rec => l_student_rec,
11987 p_data_rec => l_edu_rec);
11988 IF p_batch_type = 'I' THEN
11989
11990 -- 2908378 added, since site of activity is only specific to EV
11991 l_student_rec.site_addr_status := 'S'; -- For EV only
11992
11993 -- Call Validate_Other_Info Insert_Other_Info
11994
11995 l_student_rec.other_status := Validate_Other_Info (p_person_rec => l_student_rec,
11996 p_data_rec => l_oth_rec);
11997 -- Call Validate_F_Addr_Info Insert_Address_Info
11998 l_student_rec.f_addr_status := Validate_F_Addr_Info (p_person_rec => l_student_rec,
11999 p_data_rec => l_f_addr_rec,
12000 p_records => l_count);
12001 ELSE
12002
12003 l_student_rec.f_addr_status := 'S'; --for Non-Img only
12004 l_student_rec.other_status := 'S'; --for Non-Img only
12005
12006 -- 2908378 passed l_site_addr_rec for capturing the Site of Activity Address
12007 l_student_rec.site_addr_status := Validate_Site_Info (p_person_rec => l_student_rec,
12008 p_data_rec => l_site_addr_rec,
12009 p_records => l_count);
12010 l_soa_count := l_count;
12011 IF l_student_rec.site_addr_status = 'U' THEN --Unexpected error - terminate execution
12012 /* Debug */
12013 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12014 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12015 l_debug_str := 'Returning U from Create_Batch. site_addr_status is U.';
12016 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12017 END IF;
12018
12019 RAISE FND_API.G_EXC_ERROR;
12020
12021 END IF;
12022
12023 END IF;
12024
12025 -- Call Validate_Dependent_Info Insert_Dependent_Info
12026
12027 l_student_rec.dep_status := Validate_Dependent_Info (p_person_rec => l_student_rec,
12028 p_data_rec => l_dep_rec,
12029 p_records => l_count );
12030
12031 l_student_rec.dep_count := l_count;
12032 -- check all statuses
12033 -- 2908378 added validation with l_student_rec.site_addr_status
12034 IF l_student_rec.issue_status = 'E'
12035 OR l_student_rec.bio_status = 'E'
12036 OR l_student_rec.other_status = 'E'
12037 OR l_student_rec.f_addr_status = 'E'
12038 OR l_student_rec.us_addr_status = 'E'
12039 OR l_student_rec.site_addr_status = 'E'
12040 OR l_student_rec.edu_status = 'E'
12041 OR l_student_rec.fin_status = 'E'
12042 OR l_student_rec.dep_status = 'E' THEN -- Validation error - mark person as invalid
12043
12044 l_student_rec.person_status := 'I';
12045
12046 END IF;
12047 IF l_student_rec.issue_status = 'U'
12048 OR l_student_rec.bio_status = 'U'
12049 OR l_student_rec.other_status = 'U'
12050 OR l_student_rec.f_addr_status = 'U'
12051 OR l_student_rec.us_addr_status = 'U'
12052 OR l_student_rec.site_addr_status = 'U'
12053 OR l_student_rec.edu_status = 'U'
12054 OR l_student_rec.fin_status = 'U'
12055 OR l_student_rec.dep_status = 'U' THEN --Unexpected error - terminate execution
12056
12057 RAISE FND_API.G_EXC_ERROR;
12058
12059 ELSIF l_student_rec.issue_status = 'N'
12060 OR l_student_rec.bio_status = 'N'
12061 OR l_student_rec.edu_status = 'N'
12062 OR l_student_rec.fin_status = 'N' THEN -- Not found
12063
12064 -- These are I-20 blocks and should be found. If this happens - its a bug
12065
12066 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_UNEXP_EXCPT_ERR'); -- I-20 is missing! Unexpected error
12067 FND_MESSAGE.SET_TOKEN('BLOCK_ID',5);
12068 FND_MSG_PUB.Add;
12069 /* Debug */
12070 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12071 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12072 l_debug_str := 'IGS_SV_UNEXP_EXCPT_ERR in Create_Batch.';
12073 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12074 END IF;
12075
12076 RAISE FND_API.G_EXC_ERROR;
12077
12078 END IF;
12079
12080 -- Check for required blocks
12081
12082 IF l_student_rec.f_addr_status = 'N' AND p_batch_type = 'I' THEN
12083
12084 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_NO_F_ADDR_FLD_ERR'); -- Foreign address not found
12085 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_student_rec.person_number);
12086 Put_Log_Msg(FND_MESSAGE.Get,1);
12087
12088 l_student_rec.person_status := 'I';
12089
12090 END IF;
12091 IF l_student_rec.us_addr_status = 'N' AND p_batch_type = 'E' THEN
12092
12093 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_NO_US_ADDR_FLD_ERR'); -- US address not found
12094 FND_MESSAGE.SET_TOKEN('PERSON_NUMBER', l_student_rec.person_number);
12095 Put_Log_Msg(FND_MESSAGE.Get,1);
12096
12097 l_student_rec.person_status := 'I';
12098
12099 END IF;
12100 IF l_student_rec.person_status = 'V' THEN
12101 l_record_number := l_record_number +1;
12102 g_create_count := g_create_count +1; -- prbhardw CP enhancement
12103
12104 l_student_rec.record_number := g_create_count; -- prbhardw CP enhancement
12105
12106 Put_Log_Msg(' Inserting data ',0);
12107
12108 l_student_rec.changes_found := 'Y' ;
12109
12110 -- Insertion of everything.
12111
12112 Update_Issue_Info ( p_data_rec => l_issue_rec);
12113
12114 Insert_Bio_Info ( p_data_rec => l_bio_rec);
12115
12116 IF l_student_rec.other_status = 'S' and p_batch_type ='I' THEN
12117
12118 Insert_Other_Info ( p_data_rec => l_oth_rec);
12119
12120 END IF;
12121
12122 Insert_Edu_Info ('EDU', p_data_rec => l_edu_rec, p_auth_drp_data_rec => l_cur_authdrp_rec);
12123
12124 IF p_batch_type ='I' THEN
12125
12126 Insert_Address_Info ('F', p_data_rec => l_f_addr_rec,p_records => 1); --- prbhardw CP enhancement
12127
12128 END IF;
12129
12130 IF l_student_rec.us_addr_status = 'S' THEN
12131
12132 Insert_Address_Info ( 'US',p_data_rec => l_us_addr_rec,p_records => 1); --- prbhardw CP enhancement
12133
12134 END IF;
12135 -- 2908378 added to insert site of activity
12136 IF l_student_rec.site_addr_status = 'S' AND p_batch_type ='E' THEN
12137 Insert_Address_Info ('SOA', p_data_rec => l_site_addr_rec,p_records => l_soa_count); --- prbhardw CP enhancement
12138 END IF;
12139
12140 Insert_Finance_Info ( p_data_rec => l_fin_rec);
12141
12142 IF l_student_rec.dep_status = 'S' THEN
12143
12144 Insert_Dependent_Info ( p_data_rec => l_dep_rec,p_records => l_student_rec.dep_count );
12145
12146 END IF;
12147
12148 ELSE
12149
12150 Put_Log_Msg(' No insertion, person_status is:'||l_student_rec.person_status ,0);
12151
12152 END IF; -- Insertion ends here
12153 ELSIF l_student_rec.person_status = 'V' THEN -- prbhardw Added on 22/03/06
12154 g_person_status := 'EDIT';
12155 l_record_number := l_record_number +1;
12156 g_update_count := g_update_count +1; -- prbhardw CP enhancement
12157 l_student_rec.record_number := g_update_count; -- prbhardw CP enhancement
12158 Put_Log_Msg(' update_count:'||g_update_count,0);
12159 IF p_batch_type = 'I' THEN -- If mode update for Non immigrants
12160
12161 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12162
12163 -- Call Update_Employment_Info
12164 l_status := Update_Employment_Info ( p_person_rec => l_student_rec );
12165
12166 IF l_status <> 'S' THEN
12167 /* Debug */
12168 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12169 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12170 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Employment_Info is not S';
12171 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12172 END IF;
12173 RAISE FND_API.G_EXC_ERROR;
12174 END IF;
12175
12176 -- END IF;
12177
12178 -- Call Update_Registration_Info
12179 l_status := Update_Registration_Info ( p_person_rec => l_student_rec );
12180 IF l_status <> 'S' THEN
12181 /* Debug */
12182 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12183 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12184 l_debug_str := 'ERROR in Create_Batch. l_status is not S';
12185 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12186 END IF;
12187
12188 RAISE FND_API.G_EXC_ERROR;
12189 END IF;
12190 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12191
12192 -- Call Update_Personal_Info
12193 l_status := Update_Personal_Info ( p_person_rec => l_student_rec );
12194
12195 IF l_status <> 'S' THEN
12196 /* Debug */
12197 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12198 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12199 l_debug_str := 'ERROR in Create_Batch. changes_found <> Y and l_status is not S';
12200 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12201 END IF;
12202 RAISE FND_API.G_EXC_ERROR;
12203 END IF;
12204 -- END IF;
12205 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12206
12207 -- Call Update_Program_Info
12208 l_status := Update_Program_Info ( p_person_rec => l_student_rec );
12209
12210 IF l_status <> 'S' THEN
12211 /* Debug */
12212 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12213 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12214 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Program_Info is not S';
12215 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12216 END IF;
12217
12218 RAISE FND_API.G_EXC_ERROR;
12219 END IF;
12220 -- END IF;
12221
12222 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12223
12224 -- Call Update_Finance_Info
12225 l_status := Update_Finance_Info ( p_person_rec => l_student_rec );
12226
12227 IF l_status <> 'S' THEN
12228 /* Debug */
12229 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12230 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12231 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Finance_Info is not S';
12232 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12233 END IF;
12234 RAISE FND_API.G_EXC_ERROR;
12235 END IF;
12236 -- END IF;
12237
12238 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12239
12240 -- Call Update_Dependent_Info
12241 l_status := Update_Dependent_Info ( p_person_rec => l_student_rec );
12242
12243 IF l_status <> 'S' THEN
12244 /* Debug */
12245 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12246 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12247 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Dependent_Info is not S';
12248 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12249 END IF;
12250 RAISE FND_API.G_EXC_ERROR;
12251 END IF;
12252
12253 -- END IF;
12254
12255 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12256
12257 -- Call Update_Conviction_Info
12258 l_status := Update_Conviction_Info ( p_person_rec => l_student_rec );
12259
12260 IF l_status <> 'S' THEN
12261 /* Debug */
12262 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12263 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12264 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Conviction_Info is not S';
12265 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12266 END IF;
12267 RAISE FND_API.G_EXC_ERROR;
12268 END IF;
12269
12270 -- END IF;
12271
12272 ELSE -- Update for EV student
12273 -------
12274 IF l_student_rec.no_show_flag = 'Y' THEN
12275 IF Get_pre_noshow_status(l_student_rec.person_id,l_student_rec.batch_id) = 'Y' THEN
12276 l_student_rec.changes_found := 'N';
12277 ELSE
12278 l_student_rec.changes_found := 'Y';
12279 l_btch_id := chk_mut_exclusive(l_student_rec.batch_id,
12280 l_student_rec.person_id,
12281 'NOSHOW',
12282 'SV_STATUS');
12283 Insert_Summary_Info(l_btch_id,
12284 l_student_rec.person_id,
12285 'NOSHOW',
12286 'SV_STATUS',
12287 'SEND',
12288 'IGS_SV_PERSONS',
12289 '');
12290 END IF;
12291 ELSE
12292
12293
12294
12295 --IF no_show_status <> l_student_rec.no_show_flag AND l_student_rec.no_show_flag <> 'Y' THEN
12296
12297 l_status := Update_Personal_Info ( p_person_rec => l_student_rec );
12298
12299 IF l_status <> 'S' THEN
12300 /* Debug */
12301 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12302 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12303 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Personal_Info is not S';
12304 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12305 END IF;
12306
12307 RAISE FND_API.G_EXC_ERROR;
12308 END IF;
12309 l_status := Update_ev_legal_Info ( p_person_rec => l_student_rec );
12310 IF l_status <> 'S' THEN
12311 /* Debug */
12312 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12313 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12314 l_debug_str := 'ERROR in Create_Batch. Update_ev_legal_Info status is not S';
12315 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12316 END IF;
12317
12318 RAISE FND_API.G_EXC_ERROR;
12319 END IF;
12320
12321 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12322 -- Call Update_Finance_Info
12323 l_status := Update_Finance_Info ( p_person_rec => l_student_rec );
12324
12325
12326 IF l_status <> 'S' THEN
12327 /* Debug */
12328 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12329 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12330 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Finance_Info is not S';
12331 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12332 END IF;
12333 RAISE FND_API.G_EXC_ERROR;
12334 END IF;
12335 -- END IF;
12336
12337 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12338
12339 -- Call Update_EV_Program_Info
12340 l_status := Update_EV_Program_Info ( p_person_rec => l_student_rec );
12341
12342
12343 IF l_status <> 'S' THEN
12344 /* Debug */
12345 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12346 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12347 l_debug_str := 'ERROR in Create_Batch. l_status from Update_EV_Program_Info is not S';
12348 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12349 END IF;
12350 RAISE FND_API.G_EXC_ERROR;
12351 END IF;
12352 -- END IF;
12353
12354 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12355
12356 -- Call Update_EV_Address_Info
12357 l_status := Update_EV_Address_Info ( p_person_rec => l_student_rec );
12358
12359
12360 IF l_status <> 'S' THEN
12361 /* Debug */
12362 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12363 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12364 l_debug_str := 'ERROR in Create_Batch. l_status from Update_EV_Address_Info is not S';
12365 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12366 END IF;
12367 RAISE FND_API.G_EXC_ERROR;
12368 END IF;
12369
12370 --END IF;
12371 -- IF l_student_rec.changes_found <> 'Y' THEN --- commented by prbhardw
12372
12373 -- Call Update_Dependent_Info
12374 l_status := Update_Dependent_Info ( p_person_rec => l_student_rec );
12375
12376
12377 IF l_status <> 'S' THEN
12378 /* Debug */
12379 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12380 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12381 l_debug_str := 'ERROR in Create_Batch. l_status from Update_Dependent_Info is not S';
12382 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12383 END IF;
12384 RAISE FND_API.G_EXC_ERROR;
12385 END IF;
12386
12387 -- END IF;
12388 --PRBHARDW
12389 IF Get_pre_noshow_status(l_student_rec.person_id,l_student_rec.batch_id) = 'Y' THEN
12390 l_student_rec.changes_found := 'Y';
12391 END IF;
12392 IF l_student_rec.reprint_reason = '06' THEN
12393 l_student_rec.changes_found := 'Y';
12394 END IF;
12395 --PRBHARDW
12396
12397 END IF;
12398
12399 END IF;
12400 END IF;
12401 IF l_student_rec.person_status = 'I' THEN
12402
12403 --Remove all person data from tables
12404
12405 Remove_Person_Data(p_person_id => l_student_rec.person_id, p_batch_id => l_batch_id);
12406
12407 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_INVALID'); -- Student has validation error - not processed
12408 Put_Log_Msg(FND_MESSAGE.Get,1);
12409
12410 ELSIF l_student_rec.changes_found = 'Y' THEN
12411
12412 IF p_validate_only ='N' THEN
12413
12414 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_SUCCESS'); -- Student successfully processed
12415 Put_Log_Msg(FND_MESSAGE.Get,1);
12416
12417 ELSE
12418
12419 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STDNT_VALID_SUCC'); -- Student successfully processed
12420 Put_Log_Msg(FND_MESSAGE.Get,1);
12421
12422 END IF;
12423
12424 l_batch_status :='S';
12425
12426 ELSIF l_student_rec.changes_found = 'N' THEN
12427
12428 --Remove all person data from tables
12429 Remove_Person_Data(p_person_id => l_student_rec.person_id, p_batch_id => l_batch_id);
12430
12431 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_STUDENT_NO_CHANGE'); -- No changes found for the student
12432 Put_Log_Msg(FND_MESSAGE.Get,1);
12433
12434 END IF;
12435 IF p_batch_type ='I' THEN
12436 FETCH C_NI_CUR INTO c_student_list_rec;
12437 ELSE
12438 FETCH C_EV_CUR INTO c_student_list_rec;
12439 END IF;
12440 END LOOP;
12441
12442 IF p_batch_type ='I' THEN
12443 CLOSE C_NI_CUR;
12444 ELSE
12445 CLOSE C_EV_CUR ;
12446 END IF;
12447
12448
12449
12450 IF l_batch_status = 'N' THEN
12451 -- no students for the batch - change
12452
12453 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_NO_STUDENTS'); -- No students found to submit
12454 Put_Log_Msg(FND_MESSAGE.Get,1);
12455
12456 DELETE FROM igs_sv_batches WHERE batch_id = l_batch_id;
12457
12458 END IF;
12459
12460 /*
12461 IF l_record_number >=250 THEN
12462
12463 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_MAX_RECORDS'); -- Too many students.
12464 Put_Log_Msg(FND_MESSAGE.Get,1);
12465
12466 END IF;
12467 */
12468
12469
12470
12471 -- Check batch validate and invalid flag
12472
12473 -- Rollback since batch shouldn't be saved
12474
12475 --Raise an event for WF and commit
12476 IF l_batch_status = 'S' AND p_validate_only ='N' THEN
12477
12478 -- Submit_Event ( p_batch_type, l_batch_id);
12479 null;
12480 ELSE
12481
12482 FOR i IN 1..g_parallel_batches.COUNT LOOP
12483 Remove_Person_Data (p_person_id => NULL, p_batch_id => g_parallel_batches(i) );
12484 DELETE FROM igs_sv_batches WHERE batch_id = g_parallel_batches(i);
12485 Put_Log_Msg(' Removing parallel batch: ' || g_parallel_batches(i),0);
12486 END LOOP;
12487
12488 FOR i IN 1..g_running_batches.COUNT LOOP
12489 Remove_Person_Data (p_person_id => NULL, p_batch_id => g_running_batches(i) );
12490 DELETE FROM igs_sv_batches WHERE batch_id = g_running_batches(i);
12491 Put_Log_Msg(' Removing running batch: ' || g_running_batches(i),0);
12492 END LOOP;
12493
12494 END IF;
12495 /* Debug */
12496 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12497 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12498 l_debug_str := 'Commiting in Create_Batch. l_batch_status: '||l_batch_status;
12499 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12500 END IF;
12501 compose_log_file;
12502
12503 COMMIT;
12504
12505 retcode := 0;
12506
12507 EXCEPTION
12508
12509 WHEN FND_API.G_EXC_ERROR THEN
12510 /* Debug */
12511 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12512 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12513 l_debug_str := 'FND_API.G_EXC_ERROR exception in Create_Batch. '||SQLERRM;
12514 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12515 END IF;
12516 ROLLBACK TO Create_Batch;
12517 retcode := 2;
12518 dump_current_person(l_student_rec);
12519 IF C_NI_CUR%ISOPEN THEN
12520 CLOSE C_NI_CUR;
12521 ELSIF C_EV_CUR%ISOPEN THEN
12522 CLOSE C_EV_CUR ;
12523 END IF;
12524 Generate_Message;
12525
12526 WHEN OTHERS THEN
12527
12528 /* Debug */
12529 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12530 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Create_Batch';
12531 l_debug_str := 'Other exception in Create_Batch. '||SQLERRM;
12532 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12533 END IF;
12534 ROLLBACK TO Create_Batch;
12535 retcode := 2;
12536 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
12537 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
12538 END IF;
12539
12540 dump_current_person(l_student_rec);
12541 IF C_NI_CUR%ISOPEN THEN
12542 CLOSE C_NI_CUR;
12543 ELSIF C_EV_CUR%ISOPEN THEN
12544 CLOSE C_EV_CUR ;
12545 END IF;
12546 Generate_Message;
12547
12548 END Create_Batch;
12549
12550
12551
12552
12553 /******************************************************************
12554 Created By : Arkadi Tereshenkov
12555
12556 Date Created By : Oct 14, 2002
12557
12558 Purpose : This is the main concurrent program called when
12559 submitting request for the non immigrant students
12560
12561 Remarks :
12562
12563 Change History
12564 Who When What
12565 ------------------------------------------------------------------------
12566
12567 ******************************************************************/
12568 PROCEDURE NIMG_Batch_Process(
12569 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
12570 retcode OUT NOCOPY NUMBER , -- Request standard return status
12571 p_validate_only IN VARCHAR2, -- Validate only flag 'Y' 'N'
12572 p_org_id IN VARCHAR2,
12573 p_dso_id IN VARCHAR2
12574 ) IS
12575
12576 l_api_name CONSTANT VARCHAR2(30) := 'NIMG_Batch_Process';
12577
12578 l_dso_id VARCHAR2(20) := substr(p_dso_id,1,instr(p_dso_id,'-',-1)-1) ;
12579 l_dso_party_id NUMBER := to_number(substr(p_dso_id,instr(p_dso_id,'-',-1)+1));
12580
12581 l_org_id VARCHAR2(20) := substr(p_org_id,1,instr(p_org_id,'-',-1)-1) ;
12582 l_org_party_id NUMBER := to_number(substr(p_org_id,instr(p_org_id,'-',-1)+1));
12583
12584
12585 BEGIN
12586 /* Debug */
12587 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12588 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Batch_Process';
12589 l_debug_str := 'Entering NIMG_Batch_Process.';
12590 l_debug_str := l_debug_str || 'l_org_id=' || l_org_id;
12591 l_debug_str := l_debug_str || 'l_dso_id=' || l_dso_id;
12592 l_debug_str := l_debug_str || 'l_dso_party_id=' || l_dso_party_id;
12593 l_debug_str := l_debug_str || 'l_org_party_id=' || l_org_party_id;
12594 l_debug_str := l_debug_str || 'p_org_id=' || p_org_id;
12595 l_debug_str := l_debug_str || 'p_dso_id=' || p_dso_id;
12596
12597 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12598 END IF;
12599
12600 -- Just call the procedure
12601 SAVEPOINT NIMG_Batch_Process;
12602
12603 Create_Batch(
12604 errbuf => errbuf ,
12605 retcode => retcode,
12606 p_batch_type => 'I',
12607 p_validate_only => p_validate_only ,
12608 p_org_id => l_org_id,
12609 p_dso_id => l_dso_id,
12610 p_dso_party_id => l_dso_party_id,
12611 p_org_party_id => l_org_party_id
12612 ) ;
12613
12614 EXCEPTION
12615
12616 WHEN OTHERS THEN
12617
12618 /* Debug */
12619 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12620 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Batch_Process';
12621 l_debug_str := 'Exception in NIMG_Batch_Process. '||SQLERRM;
12622 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12623 END IF;
12624
12625 ROLLBACK TO NIMG_Batch_Process;
12626
12627 retcode := 2;
12628 errbuf := SQLERRM;
12629 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
12630 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
12631 END IF;
12632
12633 Generate_Message;
12634
12635 END NIMG_Batch_Process;
12636
12637
12638
12639 /******************************************************************
12640 Created By : Arkadi Tereshenkov
12641
12642 Date Created By : Oct 14, 2002
12643
12644 Purpose : This is the main procedure to be called when
12645 the request has to be purged for
12646 Exchange Visitors or Non Immigrant students.
12647 This procedure is called from the concurrent
12648 requests.
12649
12650 remarks :
12651
12652 Change History
12653 Who When What
12654 ------------------------------------------------------------------------
12655
12656 ******************************************************************/
12657 PROCEDURE Purge_Batch(
12658 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
12659 retcode OUT NOCOPY NUMBER , -- Request standard return status
12660 p_batch_type IN VARCHAR2 -- Batch type E(ev), I(international)
12661 ) IS
12662
12663 l_api_name CONSTANT VARCHAR2(25) := 'Purge_Batch';
12664 l_batch_id igs_sv_batches.batch_id%TYPE;
12665
12666 CURSOR c_active_batch IS
12667 SELECT batch_id
12668 FROM igs_sv_batches
12669 WHERE batch_status IN ('S','N')
12670 AND batch_type = p_batch_type;
12671
12672 BEGIN
12673
12674 /* Debug */
12675 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12676 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Purge_Batch';
12677 l_debug_str := 'Entering Purge_Batch. p_batch_type is '||p_batch_type;
12678 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12679 END IF;
12680 FND_MSG_PUB.initialize;
12681
12682 SAVEPOINT Purge_Batch;
12683
12684 -- Check for active batch
12685
12686 OPEN c_active_batch;
12687 FETCH c_active_batch INTO l_batch_id;
12688 CLOSE c_active_batch;
12689
12690 IF l_batch_id IS NULL THEN
12691 -- Active batch is not found and mode not validate only - terminate current process
12692 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_NO_BATCH_FOUND');
12693 Put_Log_Msg(FND_MESSAGE.Get,1);
12694
12695 ELSE
12696
12697 --Remove batch
12698 /*Remove_Person_Data (p_person_id => NULL, p_batch_id => l_batch_id );
12699
12700 DELETE FROM igs_sv_batches WHERE batch_id = l_batch_id;
12701 DELETE FROM igs_sv_batches WHERE batch_id > l_batch_id;*/
12702
12703 FOR i IN 1..g_parallel_batches.COUNT LOOP
12704 Remove_Person_Data (p_person_id => NULL, p_batch_id => g_parallel_batches(i) );
12705 DELETE FROM igs_sv_batches WHERE batch_id = g_parallel_batches(i);
12706 Put_Log_Msg(' In purge batch-Removing parallel batch: ' || g_parallel_batches(i),0);
12707 END LOOP;
12708
12709 FOR i IN 1..g_running_batches.COUNT LOOP
12710 Remove_Person_Data (p_person_id => NULL, p_batch_id => g_running_batches(i) );
12711 DELETE FROM igs_sv_batches WHERE batch_id = g_running_batches(i);
12712 Put_Log_Msg(' In purge batch-Removing running batch: ' || g_running_batches(i),0);
12713 END LOOP;
12714
12715 END IF;
12716
12717 retcode := 0;
12718 /* Debug */
12719 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12720 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Batch_Process';
12721 l_debug_str := 'retcode in NIMG_Batch_Process: '||retcode;
12722 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12723 END IF;
12724 EXCEPTION
12725
12726 WHEN FND_API.G_EXC_ERROR THEN
12727
12728 /* Debug */
12729 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12730 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Batch_Process';
12731 l_debug_str := 'FND_API.G_EXC_ERROR Exception in NIMG_Batch_Process. '||SQLERRM;
12732 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12733 END IF;
12734 ROLLBACK TO Purge_Batch;
12735
12736 retcode := 2;
12737
12738 Generate_Message;
12739
12740 WHEN OTHERS THEN
12741
12742 /* Debug */
12743 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12744 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Batch_Process';
12745 l_debug_str := 'Exception in NIMG_Batch_Process. '||SQLERRM;
12746 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12747 END IF;
12748 ROLLBACK TO Purge_Batch;
12749
12750 retcode := 2;
12751
12752 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
12753 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
12754 END IF;
12755
12756 Generate_Message;
12757
12758 END Purge_Batch;
12759
12760
12761
12762
12763 /******************************************************************
12764 Created By : Arkadi Tereshenkov
12765
12766 Date Created By : Oct 14, 2002
12767
12768 Purpose : This is the main procedure to be called when
12769 there is a need to purge EV data.
12770
12771 Remarks :
12772
12773 Change History
12774 Who When What
12775 ------------------------------------------------------------------------
12776
12777 ******************************************************************/
12778 PROCEDURE EV_Purge_Batch (
12779 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
12780 retcode OUT NOCOPY NUMBER -- Request standard return status
12781 ) IS
12782 l_api_name CONSTANT VARCHAR2(30) := 'EV_Purge_Batch';
12783 l_return_status VARCHAR2(1);
12784 l_msg_count NUMBER;
12785 l_msg_data VARCHAR2(2000);
12786
12787 BEGIN
12788 /* Debug */
12789 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12790 l_label := 'igs.plsql.igs_sv_batch_process_pkg.EV_Purge_Batch';
12791 l_debug_str := 'Entering EV_Purge_Batch.';
12792 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12793 END IF;
12794 -- Just call the procedure
12795
12796 Purge_Batch(
12797 errbuf => errbuf ,
12798 retcode => retcode,
12799 p_batch_type => 'E') ;
12800
12801 EXCEPTION
12802
12803 WHEN OTHERS THEN
12804 /* Debug */
12805 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12806 l_label := 'igs.plsql.igs_sv_batch_process_pkg.EV_Purge_Batch';
12807 l_debug_str := 'EXCEPTION in EV_Purge_Batch. '||SQLERRM;
12808 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12809 END IF;
12810 retcode := 2;
12811
12812 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
12813 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
12814 END IF;
12815
12816 Generate_Message;
12817
12818 END EV_Purge_Batch;
12819
12820
12821
12822
12823 /******************************************************************
12824 Created By : Arkadi Tereshenkov
12825
12826 Date Created By : Oct 14, 2002
12827
12828 Purpose : This is the main procedure to be called when
12829 there is a need to purge Non immigrant data.
12830
12831 Remarks :
12832
12833 Change History
12834 Who When What
12835 ------------------------------------------------------------------------
12836
12837 ******************************************************************/
12838 PROCEDURE NIMG_Purge_Batch (
12839 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
12840 retcode OUT NOCOPY NUMBER -- Request standard return status
12841 ) IS
12842 l_api_name CONSTANT VARCHAR2(30) := 'NIMG_Purge_Batch';
12843 l_return_status VARCHAR2(1);
12844 l_msg_count NUMBER;
12845 l_msg_data VARCHAR2(2000);
12846
12847 BEGIN
12848
12849 /* Debug */
12850 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12851 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Purge_Batch';
12852 l_debug_str := 'Entering NIMG_Purge_Batch.';
12853 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12854 END IF;
12855 -- Just call the procedure
12856
12857 SAVEPOINT NIMG_Purge_Batch;
12858
12859 Purge_Batch(
12860 errbuf => errbuf ,
12861 retcode => retcode,
12862 p_batch_type => 'I') ;
12863
12864 EXCEPTION
12865
12866 WHEN OTHERS THEN
12867 /* Debug */
12868 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12869 l_label := 'igs.plsql.igs_sv_batch_process_pkg.NIMG_Purge_Batch';
12870 l_debug_str := 'EXCEPTION in NIMG_Purge_Batch. '||SQLERRM;
12871 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12872 END IF;
12873 ROLLBACK TO NIMG_Purge_Batch;
12874
12875 retcode := 2;
12876
12877 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
12878 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
12879 END IF;
12880
12881 Generate_Message;
12882
12883 END NIMG_Purge_Batch;
12884
12885
12886 /******************************************************************
12887 Created By : Arkadi Tereshenkov
12888
12889 Date Created By : Oct 14, 2002
12890
12891 Purpose : Used to generate messages that are to be output
12892 into the concurrent request log.
12893
12894 Remarks :
12895
12896 Change History
12897 Who When What
12898 ------------------------------------------------------------------------
12899
12900 ******************************************************************/
12901 PROCEDURE Generate_Message
12902 IS
12903
12904 l_msg_count NUMBER;
12905 l_msg_data VARCHAR2(2000);
12906
12907 BEGIN
12908 /* Debug */
12909 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12910 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Generate_Message';
12911 l_debug_str := 'Entering Generate_Message.';
12912 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12913 END IF;
12914 FND_MSg_PUB.Count_And_Get ( p_count => l_msg_count,
12915 p_data => l_msg_data );
12916
12917 IF (l_msg_count > 0) THEN
12918
12919 l_msg_data := '';
12920
12921 FOR l_cur IN 1..l_msg_count LOOP
12922
12923 l_msg_data := FND_MSg_PUB.GET(l_cur, FND_API.g_FALSE);
12924 Put_Log_Msg(l_msg_data,1);
12925 END LOOP;
12926
12927 ELSE
12928
12929 l_msg_data := 'Error Returned but Error stack has no data';
12930 Put_Log_Msg(l_msg_data,1);
12931
12932 END IF;
12933 /* Debug */
12934 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
12935 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Generate_Message';
12936 l_debug_str := 'Exiting Generate_Message. l_msg_data is: '||l_msg_data;
12937 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
12938 END IF;
12939 END Generate_Message;
12940
12941
12942
12943 /******************************************************************
12944 Created By : Arkadi Tereshenkov
12945
12946 Date Created By : Oct 14, 2002
12947
12948 Purpose : Place the messages that have been generated into
12949 the appropriate log file for viewing.
12950
12951 Remarks :
12952
12953 Change History
12954 Who When What
12955 ------------------------------------------------------------------------
12956
12957 ******************************************************************/
12958 PROCEDURE Put_Log_Msg (
12959 p_message IN VARCHAR2,
12960 p_level IN NUMBER
12961 ) IS
12962
12963 l_api_name CONSTANT VARCHAR2(30) := 'Put_Log_Msg';
12964
12965 BEGIN
12966
12967 -- This procedure outputs messages into the log file Level 0 - System messages. 1 - user messages
12968 IF p_level >= g_debug_level THEN
12969
12970 fnd_file.put_line (FND_FILE.LOG,p_message);
12971
12972 END IF;
12973
12974 END Put_Log_Msg;
12975
12976
12977 PROCEDURE process_person_record (
12978 p_BatchID IN NUMBER,
12979 p_sevisID IN VARCHAR2,
12980 p_person_id IN NUMBER,
12981 p_Status IN VARCHAR2,
12982 p_SEVIS_ErrorCode IN VARCHAR2,
12983 p_SEVIS_ErrorElement IN VARCHAR2
12984 )
12985 IS
12986 l_rowid VARCHAR2(255);
12987 l_alt_id igs_pe_person_id_typ.person_id_type%TYPE;
12988
12989
12990 CURSOR c_alt IS
12991 SELECT person_id_type
12992 FROM igs_pe_person_id_typ
12993 WHERE s_person_id_type = g_person_sevis_id AND
12994 closed_ind = 'N';
12995
12996
12997 BEGIN
12998 /* Debug */
12999 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13000 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_person_record';
13001 l_debug_str := 'Entering process_person_record. p_sevisID is: '||p_sevisID||' and p_person_id is: '||p_person_id;
13002 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13003 END IF;
13004
13005 IF lower(p_Status) <> 'true' THEN
13006
13007 UPDATE igs_sv_persons
13008 SET record_status = 'E',
13009 sevis_error_code = p_SEVIS_ErrorCode,
13010 sevis_error_element = p_SEVIS_ErrorElement
13011 WHERE batch_id = p_BatchID
13012 AND person_id = p_person_id;
13013
13014 -- purge the person data completely.
13015
13016 -- Remove_Person_Data (p_person_id => p_person_id, p_batch_id => p_BatchID );
13017
13018 ELSIF NVL(Get_Person_Sevis_Id (p_person_id),'X') <> p_sevisID THEN
13019
13020 -- Update sevis id
13021 -- end date current one (if any)
13022
13023 UPDATE igs_pe_alt_pers_id
13024 SET end_dt = trunc(sysdate)
13025 WHERE pe_person_id = p_person_id
13026 AND person_id_type
13027 IN (SELECT person_id_type
13028 FROM igs_pe_person_id_typ
13029 WHERE s_person_id_type = g_person_sevis_id)
13030 AND start_dt <= trunc(sysdate)
13031 AND NVL(end_dt,sysdate+1) >= trunc(sysdate) ;
13032
13033 OPEN c_alt;
13034 FETCH c_alt INTO l_alt_id;
13035 CLOSE c_alt;
13036
13037 -- Insert new
13038 IGS_PE_ALT_PERS_ID_PKG.INSERT_ROW (
13039 X_ROWID => l_rowid,
13040 X_PE_PERSON_ID => p_person_id,
13041 X_API_PERSON_ID => p_sevisID,
13042 X_API_PERSON_ID_UF => p_sevisID,
13043 X_PERSON_ID_TYPE => l_alt_id,
13044 X_START_DT => trunc(sysdate),
13045 X_END_DT => NULL,
13046 X_attribute_category => '',
13047 X_attribute1 => '',
13048 X_attribute2 => '',
13049 X_attribute3 => '',
13050 X_attribute4 => '',
13051 X_attribute5 => '',
13052 X_attribute6 => '',
13053 X_attribute7 => '',
13054 X_attribute8 => '',
13055 X_attribute9 => '',
13056 X_attribute10 => '',
13057 X_attribute11 => '',
13058 X_attribute12 => '',
13059 X_attribute13 => '',
13060 X_attribute14 => '',
13061 X_attribute15 => '',
13062 X_attribute16 => '',
13063 X_attribute17 => '',
13064 X_attribute18 => '',
13065 X_attribute19 => '',
13066 X_attribute20 => '',
13067 X_MODE => 'I'
13068 );
13069
13070
13071 END IF;
13072 /* Debug */
13073 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13074 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_person_record';
13075 l_debug_str := 'Exiting process_person_record';
13076 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13077 END IF;
13078
13079 END process_person_record;
13080
13081 PROCEDURE process_trans_header (
13082 p_BatchID IN NUMBER,
13083 p_FileErrorCode IN VARCHAR2,
13084 p_FileValidation IN VARCHAR2)
13085 IS
13086 /*----------------------------------------------------------
13087 p_FileErrorCode => The resultCode attribute is set to success if all submitted records process successfully.
13088 Otherwise, the resultCode indicates either indicates that:
13089
13090 1) file has not yet been processed or
13091
13092 2) the file has been processed with at least one record failing business rules validation
13093 (although all other records are successfully loaded into SEVIS)
13094
13095 p_FileValidation => The status attribute is set to true if there are no errors associated with this batch submittal.
13096
13097 ----------------------------------------------------------*/
13098 l_api_name CONSTANT VARCHAR2(30) := 'process_trans_header';
13099
13100 CURSOR c_batch IS
13101 SELECT batch_status
13102 FROM igs_sv_batches
13103 WHERE batch_id = p_BatchID;
13104
13105 l_status igs_sv_batches.batch_status%TYPE;
13106
13107
13108 BEGIN
13109
13110 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13111 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_trans_header';
13112 l_debug_str := 'Came in with p_BatchID = '||p_BatchID||' p_FileErrorCode = '||p_FileErrorCode ||' p_FileValidation = '||p_FileValidation||' '||SQLERRM;
13113 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13114 END IF;
13115
13116 SAVEPOINT process_trans_header;
13117
13118 -- S0001 - successfull download.
13119 -- p_FileValidation - true
13120
13121 OPEN c_batch;
13122 FETCH c_batch INTO l_status;
13123
13124 IF c_batch%NOTFOUND THEN
13125
13126 CLOSE c_batch;
13127 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_BATCH_NOT_FOUND'); -- Batch not found
13128 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_BatchID);
13129 FND_MSG_PUB.Add;
13130
13131 RAISE FND_API.G_EXC_ERROR;
13132
13133 END IF;
13134
13135 CLOSE c_batch;
13136
13137 IF lower(p_FileValidation) = 'true' OR p_FileValidation='1' THEN
13138 -- successfull batch transmition.
13139
13140 IF l_status <>'S' THEN
13141 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_INVALID_STATUS'); -- Batch is not in process
13142 FND_MESSAGE.SET_TOKEN('BATCH_ID',p_BatchID);
13143 FND_MSG_PUB.Add;
13144
13145 RAISE FND_API.G_EXC_ERROR;
13146
13147 END IF;
13148
13149 -- Update batch and set success status
13150 UPDATE igs_sv_batches SET batch_status = 'P' WHERE batch_id = p_BatchID;
13151
13152 ELSE
13153 -- purge the batch completely.
13154
13155 Remove_Person_Data (p_person_id => NULL, p_batch_id => p_BatchID );
13156
13157 UPDATE igs_sv_batches SET batch_status = 'E', SEVIS_ERROR_CODE = NVL(p_FileErrorCode,NVL(p_FileValidation,'X')) WHERE batch_id = p_BatchID;
13158
13159 END IF;
13160 EXCEPTION
13161 WHEN FND_API.G_EXC_ERROR THEN
13162 /* Debug */
13163 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13164 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_trans_header';
13165 l_debug_str := 'FND_API.G_EXC_ERROR in process_trans_header '||SQLERRM;
13166 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13167 END IF;
13168 ROLLBACK TO process_trans_header;
13169 WHEN OTHERS THEN
13170 /* Debug */
13171 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13172 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_trans_header';
13173 l_debug_str := 'Exiting process_trans_header '||SQLERRM;
13174 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13175 END IF;
13176 ROLLBACK TO process_trans_header;
13177
13178 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
13179 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
13180 END IF;
13181 END process_trans_header;
13182
13183 PROCEDURE process_trans_errors (
13184 p_BatchID IN NUMBER,
13185 p_ErrorCode IN VARCHAR2,
13186 p_ErrorMessage IN VARCHAR2,
13187 x_return_status OUT NOCOPY VARCHAR2
13188 )
13189 IS
13190 BEGIN
13191 NULL;
13192 END process_trans_errors;
13193
13194
13195 PROCEDURE process_student_record (
13196 p_BatchID IN NUMBER,
13197 p_sevisID IN VARCHAR2,
13198 p_PersonID IN VARCHAR2,
13199 p_Status IN VARCHAR2,
13200 p_SEVIS_ErrorCode IN VARCHAR2,
13201 p_SEVIS_ErrorElement IN VARCHAR2)
13202
13203
13204 IS
13205 /*----------------------------------------------------------
13206 p_SEVIS_ErrorCode => SEVIS defined error code
13207
13208 p_SEVIS_ErrorElement => Error message
13209
13210 p_PersonID => User defined field B for principal record
13211
13212 p_Status => The status attribute is set to true if this record is successfully loaded into SEVIS. If the attempt failed, then the list of errors appear below this element
13213
13214 ----------------------------------------------------------*/
13215 l_api_name CONSTANT VARCHAR2(30) := 'process_student_record';
13216 l_person_id NUMBER(15);
13217
13218
13219 BEGIN
13220
13221 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13222 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_student_record';
13223 l_debug_str := 'Came in with p_BatchID = '||p_BatchID||' p_sevisID = '||p_sevisID
13224 ||' p_PersonID = '||p_PersonID|| ' p_Status = '||p_Status
13225 ||' p_SEVIS_ErrorCode = '||p_SEVIS_ErrorCode||' p_SEVIS_ErrorElement = '||p_SEVIS_ErrorElement||' '||SQLERRM;
13226 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13227 END IF;
13228
13229
13230 SAVEPOINT process_student_record;
13231
13232
13233 l_person_id := to_number(p_PersonID);
13234
13235 process_person_record (
13236 p_BatchID => p_BatchID,
13237 p_sevisID => p_sevisID,
13238 p_person_id => l_person_id,
13239 p_Status => p_Status,
13240 p_SEVIS_ErrorCode => p_SEVIS_ErrorCode,
13241 p_SEVIS_ErrorElement => p_SEVIS_ErrorElement
13242 );
13243
13244 update igs_sv_persons set SEVIS_USER_ID = p_sevisID ,
13245 SEVIS_ERROR_CODE = p_SEVIS_ErrorCode, SEVIS_ERROR_ELEMENT = p_SEVIS_ErrorElement
13246 where person_id = p_PersonID;
13247
13248 EXCEPTION
13249
13250 WHEN FND_API.G_EXC_ERROR THEN
13251
13252 ROLLBACK TO process_student_record;
13253
13254 RAISE FND_API.G_EXC_ERROR;
13255
13256 WHEN OTHERS THEN
13257
13258 ROLLBACK TO process_student_record;
13259
13260 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
13261 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
13262 END IF;
13263
13264 RAISE FND_API.G_EXC_ERROR;
13265
13266
13267 END process_student_record;
13268
13269 PROCEDURE process_dep_record (
13270 p_BatchID IN NUMBER,
13271 p_DepPersonID IN NUMBER,
13272 p_DepSevisID IN VARCHAR2,
13273 p_PersonID IN VARCHAR2,
13274 p_Status IN VARCHAR2,
13275 p_SEVIS_ErrorCode IN VARCHAR2,
13276 p_SEVIS_ErrorElement IN VARCHAR2
13277
13278 )
13279 IS
13280 /*----------------------------------------------------------
13281 p_SEVIS_ErrorCode => SEVIS defined error code
13282
13283 p_SEVIS_ErrorElement => Error message
13284
13285 p_DepPersonID => User defined field B for principal record
13286
13287 p_Status => The status attribute is set to true if this record is successfully loaded into SEVIS. If the attempt failed, then the list of errors appear below this element
13288
13289 ----------------------------------------------------------*/
13290
13291 l_api_name CONSTANT VARCHAR2(30) := 'process_dep_record';
13292 l_person_id NUMBER(15);
13293 l_temp VARCHAR2(1);
13294
13295 CURSOR c_dep IS
13296 SELECT '1'
13297 FROM IGS_SV_DEPDNT_INFO
13298 WHERE PERSON_ID = p_PersonID and DEPDNT_ID = p_DepPersonID;
13299
13300
13301 BEGIN
13302 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13303 l_label := 'igs.plsql.igs_sv_batch_process_pkg.process_dep_record';
13304 l_debug_str := 'Came in with p_BatchID = '||p_BatchID||' p_DepPersonID = '||p_DepPersonID
13305 ||' p_DepSevisID = '||p_DepSevisID||' p_PersonID = '||p_PersonID
13306 || ' p_Status = '||p_Status||' p_SEVIS_ErrorCode = '
13307 ||p_SEVIS_ErrorCode||' p_SEVIS_ErrorElement = '||p_SEVIS_ErrorElement||' '||SQLERRM;
13308 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13309 END IF;
13310
13311 OPEN c_dep;
13312 FETCH c_dep INTO l_temp;
13313
13314 IF c_dep%NOTFOUND THEN
13315
13316 CLOSE c_dep;
13317
13318 FND_MESSAGE.SET_NAME('IGS', 'IGS_SV_DEP_NOT_FOUND'); -- Dependent not found
13319 FND_MESSAGE.SET_TOKEN('PERSON_ID',p_PersonID);
13320 FND_MSG_PUB.Add;
13321
13322 RAISE FND_API.G_EXC_ERROR;
13323
13324 END IF;
13325
13326 CLOSE c_dep;
13327
13328 l_person_id := to_number(p_DepPersonID);
13329 process_person_record (
13330 p_BatchID => p_BatchID,
13331 p_sevisID => p_DepSevisID,
13332 p_person_id => l_person_id,
13333 p_Status => p_Status,
13334 p_SEVIS_ErrorCode => p_SEVIS_ErrorCode,
13335 p_SEVIS_ErrorElement => p_SEVIS_ErrorElement
13336 );
13337
13338 UPDATE IGS_SV_DEPDNT_INFO SET DEPDNT_SEVIS_ID = p_DepSevisID WHERE PERSON_ID = p_PersonID and DEPDNT_ID = p_DepPersonID;
13339
13340 EXCEPTION
13341
13342 WHEN FND_API.G_EXC_ERROR THEN
13343 ROLLBACK TO process_dep_record;
13344 WHEN OTHERS THEN
13345 ROLLBACK TO process_dep_record;
13346 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
13347 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
13348 END IF;
13349 END process_dep_record;
13350
13351 /******************************************************************
13352 Created By : prbhardw
13353
13354 Date Created By : Dec 30, 2005
13355
13356 Purpose : Insert batch summary into igs_sv_btch_summary before inserting in interface tables.
13357
13358 Change History
13359 Who When What
13360 ------------------------------------------------------------------------
13361
13362 ******************************************************************/
13363 PROCEDURE Insert_Summary_Info(
13364 p_batch_id IN igs_sv_btch_summary.batch_id%TYPE,
13365 p_person_id IN igs_sv_btch_summary.person_id%TYPE,
13366 p_action_code IN igs_sv_btch_summary.action_code%TYPE,
13367 p_tag_code IN igs_sv_btch_summary.tag_code%TYPE,
13368 p_adm_action IN igs_sv_btch_summary.adm_action_code%TYPE,
13369 p_owner_table_name IN igs_sv_btch_summary.owner_table_name%TYPE,
13370 p_owner_table_id IN igs_sv_btch_summary.OWNER_TABLE_IDENTIFIER%TYPE
13371 )
13372 IS
13373 l_api_name CONSTANT VARCHAR(30) := 'Insert_Summary_Info';
13374 l_count NUMBER;
13375 CURSOR c_test IS
13376 SELECT max(batch_id) FROM IGS_SV_BTCH_SUMMARY;
13377 l_batch NUMBER(20) := 0;
13378 BEGIN
13379 /* Debug */
13380 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13381 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Summary_Info';
13382 l_debug_str := 'Entering Insert_Summary_Info. p_data_rec.person_id is '||p_person_id|| ' and batch_id is '||p_batch_id;
13383 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13384 END IF;
13385
13386 INSERT INTO IGS_SV_BTCH_SUMMARY (
13387 summary_id ,
13388 batch_id ,
13389 person_id ,
13390 action_code ,
13391 tag_code ,
13392 adm_action_code ,
13393 creation_date ,
13394 created_by ,
13395 last_updated_by ,
13396 last_update_date ,
13397 last_update_login ,
13398 owner_table_name,
13399 OWNER_TABLE_IDENTIFIER --mmkumar, owner_table_id
13400 ) VALUES
13401 (
13402 IGS_SV_BTCH_SUMM_ID_S.nextval ,
13403 p_batch_id ,
13404 p_person_id ,
13405 p_action_code ,
13406 p_tag_code ,
13407 p_adm_action ,
13408 sysdate,
13409 g_update_by,
13410 g_update_by,
13411 sysdate,
13412 g_update_login,
13413 p_owner_table_name,
13414 p_owner_table_id
13415 );
13416
13417 OPEN c_test;
13418 FETCH c_test INTO l_batch;
13419 CLOSE c_test;
13420 /* Debug */
13421 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13422 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Summary_Info';
13423 l_debug_str := 'record in Insert_Summary_Info max batch_id: '||l_batch;
13424 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13425 END IF;
13426 EXCEPTION
13427
13428 WHEN OTHERS THEN
13429 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
13430 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
13431 END IF;
13432 /* Debug */
13433 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13434 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Insert_Summary_Info';
13435 l_debug_str := 'EXCEPTION in Insert_Summary_Info. '||SQLERRM;
13436 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13437 END IF;
13438 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
13439 RAISE;
13440
13441 END Insert_Summary_Info;
13442
13443
13444 /******************************************************************
13445 Created By : prbhardw
13446
13447 Date Created By : Jan 03, 2006
13448
13449 Purpose : Code to submit event and generate XML has been seperated
13450 from create_batch as part of SEVIS enhancements.
13451
13452 Change History
13453 Who When What
13454 ------------------------------------------------------------------------
13455
13456 ******************************************************************/
13457 PROCEDURE Generate_Batch_XML(
13458 errbuf OUT NOCOPY VARCHAR2, -- Request standard error string
13459 retcode OUT NOCOPY NUMBER , -- Request standard return status
13460 batch_id IN NUMBER
13461 )
13462 IS
13463 CURSOR c_get_batch_type(cp_batch_id igs_sv_batches.batch_id%TYPE)
13464 IS
13465 SELECT batch_type
13466 FROM igs_sv_batches
13467 WHERE batch_id = cp_batch_id;
13468 l_batch_type VARCHAR2(1);
13469 l_batch_id igs_sv_batches.batch_id%TYPE;
13470 BEGIN
13471 retcode := 0;
13472 /* Debug */
13473 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13474 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Generate_Batch_XML';
13475 l_debug_str := 'Batch_id for Generate_Batch_XML: '||batch_id;
13476 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13477 END IF;
13478 Put_Log_Msg('Batch id for Generate Batch XML: '||batch_id, 0);
13479
13480 OPEN c_get_batch_type(batch_id);
13481 FETCH c_get_batch_type INTO l_batch_type;
13482 CLOSE c_get_batch_type;
13483 Submit_Event ( l_batch_type, batch_id);
13484 /* fix for bug 5330564 */
13485 l_batch_id := batch_id;
13486 UPDATE igs_sv_batches
13487 SET batch_status = 'X' , xml_gen_date = trunc(sysdate)
13488 WHERE batch_id = l_batch_id;
13489
13490 xml_log_file(batch_id);
13491 EXCEPTION
13492 WHEN OTHERS THEN
13493 ROLLBACK;
13494 retcode := 2;
13495 fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
13496 fnd_message.set_token ('NAME', 'igs_sv_batch_process_pkg.Generate_Batch_XML'|| '-' || SQLERRM);
13497 igs_ge_msg_stack.conc_exception_hndl;
13498 END Generate_Batch_XML;
13499
13500
13501 /******************************************************************
13502 Created By : prbhardw
13503
13504 Date Created By : Jun 09, 2006
13505
13506 Purpose : Create log file for Generate_Batch_XML process.
13507
13508 Change History
13509 Who When What
13510 ------------------------------------------------------------------------
13511
13512 ******************************************************************/
13513 PROCEDURE xml_log_file(p_batch_id IN igs_sv_btch_summary.batch_id%TYPE)
13514 IS
13515
13516 l_api_name CONSTANT VARCHAR(30) := 'xml_log_file';
13517 l_per_count NUMBER(5) := 0;
13518 l_person_num hz_parties.party_number%TYPE;
13519 l_info_meaning igs_lookup_values.meaning%TYPE;
13520
13521 CURSOR c_updated_pers(cp_batch_id igs_sv_btch_summary.batch_id%TYPE)
13522 IS
13523 SELECT summ.person_id, summ.tag_code
13524 FROM igs_sv_btch_summary summ
13525 WHERE summ.batch_id = cp_batch_id AND
13526 summ.adm_action_code ='HOLD' AND
13527 EXISTS (SELECT 1 FROM igs_sv_persons pers
13528 WHERE pers.person_id = summ.person_id AND
13529 pers.batch_id = summ.batch_id AND
13530 pers.record_status = 'C' );
13531
13532 CURSOR c_new_pers(cp_batch_id igs_sv_btch_summary.batch_id%TYPE)
13533 IS
13534 SELECT distinct person_number
13535 FROM igs_sv_persons pers
13536 WHERE pers.batch_id = cp_batch_id AND record_status = 'N'
13537 AND EXISTS (SELECT 1
13538 FROM igs_sv_btch_summary summ
13539 WHERE summ.person_id = pers.person_id AND
13540 summ.batch_id=pers.batch_id AND
13541 summ.adm_action_code ='HOLD' AND
13542 summ.batch_id = pers.batch_id);
13543 CURSOR c_get_prsn_num(cp_party_id hz_parties.party_id%TYPE)
13544 IS
13545 SELECT party_number
13546 FROM hz_parties
13547 WHERE party_id = cp_party_id;
13548
13549 CURSOR c_get_info(cp_tag_code igs_sv_btch_summary.tag_code%TYPE)
13550 IS
13551 SELECT lkp.meaning info
13552 FROM igs_lookup_values lkp
13553 WHERE lkp.lookup_code = cp_tag_code
13554 AND lkp.lookup_type ='IGS_SV_COMP_TREE';
13555 BEGIN
13556
13557 FOR c_new_pers_rec IN c_new_pers(p_batch_id) LOOP
13558 l_per_count := l_per_count + 1;
13559 IF l_per_count = 1 THEN
13560 fnd_file.put_line(FND_FILE.LOG,' ');
13561 fnd_message.set_name('IGS','IGS_SV_PERS_ON_HOLD');
13562 fnd_file.put_line(fnd_file.log,fnd_message.get());
13563 fnd_file.put_line(FND_FILE.LOG,' ');
13564 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
13565 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13566 Put_Log_Msg(' --------------',1);
13567 END IF;
13568 Put_Log_Msg(' ' || c_new_pers_rec.person_number,1);
13569 END LOOP;
13570
13571 l_per_count := 0;
13572
13573 FOR c_updated_pers_rec IN c_updated_pers(p_batch_id) LOOP
13574 l_per_count := l_per_count + 1;
13575 IF l_per_count = 1 THEN
13576 fnd_file.put_line(FND_FILE.LOG,' ');
13577 fnd_message.set_name('IGS','IGS_SV_INFO_ON_HOLD');
13578 fnd_file.put_line(fnd_file.log,fnd_message.get());
13579 fnd_file.put_line(FND_FILE.LOG,' ');
13580 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
13581 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),30,' '));
13582 fnd_message.set_name('IGS','IGS_SV_INFMN');
13583 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13584 Put_Log_Msg(' -------------- ------------ ',1);
13585
13586 END IF;
13587 OPEN c_get_prsn_num(c_updated_pers_rec.person_id);
13588 FETCH c_get_prsn_num INTO l_person_num;
13589 CLOSE c_get_prsn_num;
13590
13591 OPEN c_get_info(c_updated_pers_rec.tag_code);
13592 FETCH c_get_info INTO l_info_meaning;
13593 CLOSE c_get_info;
13594
13595 Put_Log_Msg(' ' || rpad(l_person_num,30,' ') || ' ' || l_info_meaning,1);
13596 END LOOP;
13597
13598 EXCEPTION
13599
13600 WHEN OTHERS THEN
13601 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
13602 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
13603 END IF;
13604 /* Debug */
13605 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13606 l_label := 'igs.plsql.igs_sv_batch_process_pkg.xml_log_file';
13607 l_debug_str := 'EXCEPTION in xml_log_file.'||SQLERRM;
13608 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13609 END IF;
13610 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
13611
13612 RAISE;
13613
13614 END xml_log_file;
13615
13616
13617 /******************************************************************
13618 Created By : prbhardw
13619
13620 Date Created By : Jan 03, 2006
13621
13622 Purpose : Create log file.
13623
13624 Change History
13625 Who When What
13626 ------------------------------------------------------------------------
13627
13628 ******************************************************************/
13629 PROCEDURE compose_log_file
13630 IS
13631
13632 l_api_name CONSTANT VARCHAR(30) := 'compose_log_file';
13633 l_batch_count NUMBER(5) := 1;
13634 l_per_count NUMBER(5) := 0;
13635
13636 CURSOR c_persons_per_batch(cp_batch_id igs_sv_btch_summary.batch_id%TYPE)
13637 IS
13638 SELECT COUNT(DISTINCT person_id)
13639 FROM igs_sv_btch_summary
13640 WHERE batch_id = cp_batch_id;
13641
13642 CURSOR c_get_new_persons(cp_batch_id igs_sv_btch_summary.batch_id%TYPE)
13643 IS
13644 SELECT hz.party_number prsn_num, lkp.meaning info
13645 FROM igs_sv_btch_summary svbs, hz_parties hz, igs_lookup_values lkp, igs_sv_persons pers
13646 WHERE svbs.batch_id = cp_batch_id
13647 AND svbs.person_id = hz.party_id
13648 AND svbs.tag_code = lkp.lookup_code
13649 AND lkp.lookup_type ='IGS_SV_COMP_TREE'
13650 AND lkp.enabled_flag = 'Y'
13651 AND svbs.person_id = pers.person_id
13652 AND svbs.batch_id = pers.batch_id
13653 AND pers.record_status = 'N';
13654
13655 CURSOR c_get_updated_persons(cp_batch_id igs_sv_btch_summary.batch_id%TYPE)
13656 IS
13657 SELECT hz.party_number prsn_num, lkp.meaning info
13658 FROM igs_sv_btch_summary svbs, hz_parties hz, igs_lookup_values lkp, igs_sv_persons pers
13659 WHERE svbs.batch_id = cp_batch_id
13660 AND svbs.person_id = hz.party_id
13661 AND svbs.tag_code = lkp.lookup_code
13662 AND lkp.lookup_type ='IGS_SV_COMP_TREE'
13663 AND lkp.enabled_flag = 'Y'
13664 AND svbs.person_id = pers.person_id
13665 AND svbs.batch_id = pers.batch_id
13666 AND pers.record_status = 'C';
13667
13668 BEGIN
13669 fnd_message.set_name('IGS','IGS_SV_BTCH');
13670 fnd_file.put_line(fnd_file.log,fnd_message.get());
13671 fnd_file.put_line(FND_FILE.LOG,' ');
13672 --Put_Log_Msg(' Following Batch IDs are generated: ',0);
13673 fnd_message.set_name('IGS','IGS_SV_BTCH_ID');
13674 fnd_file.put(fnd_file.log,' ' || fnd_message.get());
13675 fnd_message.set_name('IGS','IGS_SV_PERS_COUNT');
13676 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13677 --Put_Log_Msg(' Batch ID No. of Persons',0);
13678 --Put_Log_Msg(' -------- --------------',0);
13679 -- g_running_batches(1) := 2020205;
13680
13681 -- g_parallel_batches(1) := 1010101;
13682
13683 FOR i IN 1..g_parallel_batches.COUNT LOOP
13684 OPEN c_persons_per_batch(g_parallel_batches(i));
13685 FETCH c_persons_per_batch INTO l_per_count;
13686 CLOSE c_persons_per_batch;
13687 Put_Log_Msg(' ' || g_parallel_batches(i) || ' : ' || l_per_count,1);
13688 l_batch_count := l_batch_count+1;
13689 END LOOP;
13690
13691 FOR i IN 1..g_running_batches.COUNT LOOP
13692 OPEN c_persons_per_batch(g_running_batches(i));
13693 FETCH c_persons_per_batch INTO l_per_count;
13694 CLOSE c_persons_per_batch;
13695 Put_Log_Msg(' ' || g_running_batches(i) || ' : ' || l_per_count,1);
13696 l_batch_count := l_batch_count+1;
13697 END LOOP;
13698
13699 fnd_file.put_line(FND_FILE.LOG,' ');
13700 fnd_message.set_name('IGS','IGS_SV_BTCH_PERS');
13701 fnd_file.put_line(fnd_file.log,fnd_message.get());
13702 fnd_file.put_line(FND_FILE.LOG,' ');
13703 -- Put_Log_Msg(' ',0);
13704 -- Put_Log_Msg(' Following are the person records included in each batch: ',0);
13705 -- Put_Log_Msg(' ',0);
13706
13707 FOR i IN 1..g_parallel_batches.COUNT LOOP
13708 fnd_message.set_name('IGS','IGS_SV_BTCH_ID');
13709 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get() || ': ' || g_parallel_batches(i));
13710 -- Put_Log_Msg(' Batch ID: '||g_parallel_batches(i),0);
13711 -- Put_Log_Msg(' ------------------------',0);
13712 fnd_message.set_name('IGS','IGS_SV_NEW_PERS');
13713 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13714 --- Put_Log_Msg(' New Persons: ',0);
13715 -- Put_Log_Msg(' ------------',0);
13716 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
13717 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),30,' '));
13718 fnd_message.set_name('IGS','IGS_SV_INFMN');
13719 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13720 -- Put_Log_Msg(' Person Number Information ',0);
13721 Put_Log_Msg(' -------------- ------------ ',1);
13722
13723 FOR new_persons IN c_get_new_persons(g_parallel_batches(i)) LOOP
13724 Put_Log_Msg(' ' || rpad(new_persons.prsn_num,30,' ') || ' ' || new_persons.info,1);
13725 END LOOP;
13726
13727 fnd_message.set_name('IGS','IGS_SV_UPD_PERS');
13728 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13729 --Put_Log_Msg(' Updated Persons: ',0);
13730 Put_Log_Msg(' ----------------',1);
13731 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
13732 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),30,' '));
13733 fnd_message.set_name('IGS','IGS_SV_INFMN');
13734 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13735 --Put_Log_Msg(' Person Number Information ',0);
13736 Put_Log_Msg(' -------------- ------------ ',1);
13737
13738 FOR updated_persons IN c_get_updated_persons(g_parallel_batches(i)) LOOP
13739 Put_Log_Msg(' ' || rpad(updated_persons.prsn_num,30,' ') || ' ' || updated_persons.info,1);
13740 END LOOP;
13741
13742 END LOOP;
13743
13744 FOR i IN 1..g_running_batches.COUNT LOOP
13745 Put_Log_Msg(' Batch ID: ' || g_running_batches(i),1);
13746 Put_Log_Msg(' ------------------------',1);
13747 fnd_message.set_name('IGS','IGS_SV_NEW_PERS');
13748 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13749 -- Put_Log_Msg(' New Persons: ',0);
13750 Put_Log_Msg(' ------------',1);
13751 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
13752 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),30,' '));
13753 fnd_message.set_name('IGS','IGS_SV_INFMN');
13754 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13755 -- Put_Log_Msg(' Person Number Information ',0);
13756 Put_Log_Msg(' -------------- ------------ ',1);
13757
13758 FOR new_persons IN c_get_new_persons(g_running_batches(i)) LOOP
13759 Put_Log_Msg(' ' || rpad(new_persons.prsn_num,30,' ') || ' ' || new_persons.info,1);
13760 END LOOP;
13761
13762 fnd_message.set_name('IGS','IGS_SV_UPD_PERS');
13763 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13764 -- Put_Log_Msg(' Updated Persons: ',0);
13765 Put_Log_Msg(' ----------------',1);
13766 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
13767 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),30,' '));
13768 fnd_message.set_name('IGS','IGS_SV_INFMN');
13769 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
13770 --Put_Log_Msg(' Person Number Information ',0);
13771 Put_Log_Msg(' -------------- ------------ ',1);
13772
13773 FOR updated_persons IN c_get_updated_persons(g_running_batches(i)) LOOP
13774 Put_Log_Msg(' ' || rpad(updated_persons.prsn_num,30,' ') || ' ' || updated_persons.info,1);
13775 END LOOP;
13776 END LOOP;
13777
13778
13779 EXCEPTION
13780
13781 WHEN OTHERS THEN
13782 IF (FND_MSg_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)) THEN
13783 FND_MSg_PUB.Add_Exc_Msg (g_PKg_NAME, l_api_name);
13784 END IF;
13785 /* Debug */
13786 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13787 l_label := 'igs.plsql.igs_sv_batch_process_pkg.compose_log_file';
13788 l_debug_str := 'EXCEPTION in compose_log_file.'||SQLERRM;
13789 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13790 END IF;
13791 Put_Log_Msg(l_api_name||' OTHERS ERROR ',1);
13792
13793 RAISE;
13794
13795 END compose_log_file;
13796
13797 /******************************************************************
13798 Created By : prbhardw
13799
13800 Date Created By : Apr 18, 2006
13801
13802 Purpose : Assign new DSO.
13803
13804 Change History
13805 Who When What
13806 ------------------------------------------------------------------------
13807
13808 ******************************************************************/
13809
13810 PROCEDURE Assign_DSO(
13811 errbuf OUT NOCOPY VARCHAR2,
13812 retcode OUT NOCOPY NUMBER ,
13813 p_group_type IN VARCHAR2,
13814 p_dummy_1 IN VARCHAR2,
13815 p_dummy_2 IN VARCHAR2,
13816 p_old_dso_id IN VARCHAR2,
13817 p_group_id IN VARCHAR2,
13818 p_new_dso_id IN VARCHAR2
13819 )
13820 IS
13821
13822 CURSOR c_group_members IS
13823 SELECT person_id
13824 FROM igs_pe_prsid_grp_mem_all
13825 WHERE group_id = p_group_id AND SYSDATE BETWEEN start_date AND NVL(end_date, SYSDATE);
13826
13827 CURSOR c_dso_relation(cp_person_id NUMBER) IS
13828 SELECT subject_id
13829 FROM hz_relationships
13830 WHERE object_id = cp_person_id AND
13831 SYSDATE BETWEEN start_date AND NVL(end_date, SYSDATE)
13832 AND relationship_code = 'DSO_FOR';
13833 -- AND directional_flag = 'F'; fix for bug 5258405
13834
13835 CURSOR c_old_dso_rel(cp_person_id NUMBER) IS
13836 SELECT object_id, relationship_id, comments, object_version_number, directional_flag
13837 FROM hz_relationships
13838 WHERE subject_id = cp_person_id AND
13839 SYSDATE BETWEEN start_date AND NVL(end_date, SYSDATE+1)
13840 AND relationship_code = 'DSO_FOR';
13841 -- AND directional_flag = 'F'; fix for bug 5258405
13842
13843 CURSOR c_old_rel_values(cp_rel_id HZ_RELATIONSHIPS.RELATIONSHIP_ID%TYPE, cp_dir_flag HZ_RELATIONSHIPS.DIRECTIONAL_FLAG%TYPE) IS
13844 SELECT directional_flag, primary, secondary, joint_salutation, next_to_kin, rep_faculty, rep_staff,
13845 rep_student, rep_alumni, emergency_contact_flag
13846 FROM igs_pe_hz_rel
13847 WHERE relationship_id = cp_rel_id
13848 AND directional_flag = cp_dir_flag; -- fix for bug 5258405
13849
13850 CURSOR c_get_person_num(cp_person_id hz_parties.party_id%TYPE) IS
13851 SELECT party_number person_num, person_first_name first_name, person_last_name last_name
13852 FROM hz_parties
13853 WHERE party_id = cp_person_id;
13854
13855 lv_return_status VARCHAR2(1) ;
13856 lv_msg_count NUMBER;
13857 lv_msg_data VARCHAR2(2000);
13858 lv_party_relationship_id HZ_RELATIONSHIPS.RELATIONSHIP_ID%TYPE ;
13859 lv_party_id HZ_PARTIES.PARTY_ID%TYPE ;
13860 lv_party_number HZ_PARTIES.PARTY_NUMBER%TYPE ;
13861 lv_last_update_date HZ_PARTIES.LAST_UPDATE_DATE%TYPE ;
13862 lv_object_version_number HZ_RELATIONSHIPS.OBJECT_VERSION_NUMBER%TYPE;
13863
13864 l_subject HZ_RELATIONSHIPS.SUBJECT_ID%TYPE;
13865 l_rel_id HZ_RELATIONSHIPS.RELATIONSHIP_ID%TYPE;
13866 l_old_rel_values c_old_rel_values%ROWTYPE;
13867
13868 l_file_name igs_pe_persid_group_all.file_name%TYPE;
13869 l_str VARCHAR2(32767);
13870 lv_status VARCHAR2(1);
13871 --l_cursor_id NUMBER (15);
13872 l_person_id HZ_PARTIES.PARTY_ID%TYPE ;
13873 TYPE person_rec IS REF CURSOR;
13874 c_person_rec person_rec;
13875 -- l_num_of_rows NUMBER (15);
13876
13877 l_old_dso_id VARCHAR2(20) := substr(p_old_dso_id,1,instr(p_old_dso_id,'-',-1)-1) ;
13878 l_old_dso_partyid NUMBER := to_number(substr(p_old_dso_id,instr(p_old_dso_id,'-',-1)+1));
13879
13880 l_new_dso_id VARCHAR2(20) := substr(p_new_dso_id,1,instr(p_new_dso_id,'-',-1)-1) ;
13881 l_new_dso_partyid NUMBER := to_number(substr(p_new_dso_id,instr(p_new_dso_id,'-',-1)+1));
13882
13883 l_obj_id HZ_RELATIONSHIPS.OBJECT_ID%TYPE;
13884
13885 TYPE c_person_det IS RECORD
13886 (
13887 person_num hz_parties.party_number%TYPE,
13888 person_name VARCHAR2(500),
13889 dso_person_num hz_parties.party_number%TYPE
13890 );
13891
13892 TYPE g_existing_rel_tbl IS TABLE OF c_person_det INDEX BY BINARY_INTEGER;
13893
13894 g_existing_rel g_existing_rel_tbl;
13895 l_person_num hz_parties.party_number%TYPE;
13896 l_first_name hz_parties.person_first_name%TYPE;
13897 l_last_name hz_parties.person_last_name%TYPE;
13898
13899 l_new_person_num hz_parties.party_number%TYPE;
13900 l_new_first_name hz_parties.person_first_name%TYPE;
13901 l_new_last_name hz_parties.person_last_name%TYPE;
13902
13903 l_counter NUMBER := 0;
13904 l_count NUMBER := 0;
13905 l_temp_count NUMBER := 0;
13906
13907 BEGIN
13908 retcode := 0;
13909 lv_last_update_date := SYSDATE;
13910 lv_object_version_number := 1;
13911 /* Debug */
13912 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13913 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Assign_DSO';
13914 l_debug_str := 'p_group_type: '||p_group_type||' p_old_dso_id: '||p_old_dso_id||' p_new_dso_id: '||p_new_dso_id||' p_group_id: '||p_group_id;
13915 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13916 END IF;
13917 Put_Log_Msg('group type: '||p_group_type||'; old dso id: '||p_old_dso_id||'; new dso id: '||p_new_dso_id||'; group id: '||p_group_id, 0);
13918 Put_Log_Msg(' ', 0);
13919 IF p_group_type = 'G' THEN
13920
13921 IF p_group_id IS NULL THEN
13922 -- Put_Log_Msg('Group ID cannot be left blank when new DSO is being assigned for a group', 0);
13923 FND_MESSAGE.SET_NAME('IGS','IGS_SV_INV_GRP_ID');
13924 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
13925 FND_MSG_PUB.Add;
13926 RAISE FND_API.G_EXC_ERROR;
13927 END IF;
13928
13929 l_str := igs_pe_dynamic_persid_group.igs_get_dynamic_sql(p_group_id ,lv_status);
13930 IF lv_status <> 'S' THEN
13931 FND_MESSAGE.SET_NAME('IGF','IGF_AW_NO_QUERY');
13932 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
13933 RETURN;
13934 END IF;
13935
13936 /* Debug */
13937 IF fnd_log.test(fnd_log.level_statement,l_prog_label) THEN
13938 l_label := 'igs.plsql.igs_sv_batch_process_pkg.Assign_DSO';
13939 l_debug_str := 'Query: '||l_str;
13940 fnd_log.string_with_context( fnd_log.level_statement,l_label,l_debug_str, NULL,NULL,NULL,NULL,NULL,NULL);
13941 END IF;
13942
13943 --END IF;
13944
13945 /*l_cursor_id := DBMS_SQL.open_cursor;
13946 fnd_dsql.set_cursor (l_cursor_id);
13947 DBMS_SQL.parse (l_cursor_id, l_str, DBMS_SQL.native);
13948 fnd_dsql.do_binds;
13949
13950 DBMS_SQL.define_column (
13951 l_cursor_id,
13952 1,
13953 l_person_id
13954 );
13955
13956 l_num_of_rows := DBMS_SQL.EXECUTE (l_cursor_id);*/
13957 OPEN c_person_rec FOR l_str ;
13958 LOOP
13959 FETCH c_person_rec INTO l_person_id;
13960 EXIT WHEN c_person_rec%NOTFOUND;
13961 /* EXIT WHEN DBMS_SQL.FETCH_ROWS (c) = 0;
13962 IF DBMS_SQL.fetch_rows (l_cursor_id) > 0 THEN
13963 DBMS_SQL.column_value (
13964 l_cursor_id,
13965 1,
13966 l_person_id
13967 );*/
13968 OPEN c_dso_relation(l_person_id);
13969 FETCH c_dso_relation INTO l_subject;
13970 CLOSE c_dso_relation;
13971
13972 IF l_subject IS NULL THEN
13973 l_counter := l_counter + 1;
13974 IGS_PE_RELATIONSHIPS_PKG.CREATUPDATE_PARTY_RELATIONSHIP (
13975 P_ACTION => 'INSERT',
13976 P_SUBJECT_ID => l_new_dso_partyid,
13977 P_OBJECT_ID => l_person_id,
13978 P_PARTY_RELATIONSHIP_TYPE => 'DESIGNATED_SCHOOL_OFFICIAL',
13979 P_RELATIONSHIP_CODE => 'DSO_FOR',
13980 P_COMMENTS => NULL,
13981 P_START_DATE => SYSDATE,
13982 P_END_DATE => NULL,
13983 P_LAST_UPDATE_DATE => lv_last_update_date,
13984 P_RETURN_STATUS => lv_return_status,
13985 P_MSG_COUNT => lv_msg_count,
13986 P_MSG_DATA => lv_msg_data,
13987 P_PARTY_RELATIONSHIP_ID => lv_party_relationship_id,
13988 P_PARTY_ID => lv_party_id,
13989 P_PARTY_NUMBER => lv_party_number,
13990 P_CALLER => 'NOT_FAMILY',
13991 P_OBJECT_VERSION_NUMBER => lv_object_version_number,
13992 P_PRIMARY => 'N',
13993 P_SECONDARY => 'N',
13994 P_JOINT_SALUTATION => NULL,
13995 P_NEXT_TO_KIN => 'N',
13996 P_REP_FACULTY => 'N',
13997 P_REP_STAFF => 'N',
13998 P_REP_STUDENT => 'N',
13999 P_REP_ALUMNI => 'N',
14000 P_EMERGENCY_CONTACT_FLAG => 'N'
14001 );
14002 OPEN c_get_person_num(l_new_dso_partyid);
14003 FETCH c_get_person_num INTO l_person_num, l_first_name, l_last_name;
14004 CLOSE c_get_person_num;
14005
14006 IF l_counter = 1 THEN
14007 fnd_message.set_name('IGS','IGS_SV_NEW_REL');
14008 fnd_message.set_token('PRSN_NAME', l_first_name||' '|| l_last_name);
14009 fnd_file.put_line(fnd_file.log,fnd_message.get());
14010 -- Put_Log_Msg('New DSO_OF relationship created for following persons with '||l_first_name||' '|| l_last_name, 0);
14011 Put_Log_Msg(' ', 1);
14012 fnd_message.set_name('IGS','IGS_SV_PRSN_NAME');
14013 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),60,' '));
14014 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
14015 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
14016 fnd_file.put(fnd_file.log, rpad(' -----------',60,' '));
14017 fnd_file.put_line(fnd_file.log,' -------------');
14018 -- Put_Log_Msg('Person Name Person Number', 0);
14019 -- Put_Log_Msg('----------- -------------', 0);
14020 END IF;
14021 OPEN c_get_person_num(l_person_id);
14022 FETCH c_get_person_num INTO l_person_num, l_first_name, l_last_name;
14023 CLOSE c_get_person_num;
14024 fnd_file.put(fnd_file.log,' ' || rpad(l_first_name||' '|| l_last_name,60,' '));
14025 fnd_file.put_line(fnd_file.log,' ' || l_person_num);
14026 --Put_Log_Msg(l_first_name||' '|| l_last_name||' '|| l_person_num, 0);
14027 ELSE
14028 l_temp_count := l_temp_count + 1;
14029 OPEN c_get_person_num(l_person_id);
14030 FETCH c_get_person_num INTO l_person_num, l_first_name, l_last_name;
14031 CLOSE c_get_person_num;
14032 g_existing_rel(l_temp_count).person_num := l_person_num;
14033 g_existing_rel(l_temp_count).person_name := l_first_name ||' '||l_last_name;
14034 OPEN c_get_person_num(l_subject);
14035 FETCH c_get_person_num INTO l_person_num, l_first_name, l_last_name;
14036 CLOSE c_get_person_num;
14037 g_existing_rel(l_temp_count).dso_person_num := l_person_num;
14038 END IF;
14039 l_subject := NULL;
14040 END LOOP;
14041 --DBMS_SQL.close_cursor (l_cursor_id);
14042 CLOSE c_person_rec;
14043 FOR i IN 1..g_existing_rel.COUNT LOOP
14044 IF i = 1 THEN
14045 Put_Log_Msg(' ', 1);
14046 fnd_message.set_name('IGS','IGS_SV_REL_EXISTS');
14047 fnd_file.put_line(fnd_file.log,fnd_message.get());
14048 Put_Log_Msg(' ', 1);
14049 fnd_message.set_name('IGS','IGS_SV_PRSN_NAME');
14050 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),60,' '));
14051 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
14052 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),20,' '));
14053 fnd_message.set_name('IGS','IGS_SV_DSO');
14054 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
14055
14056 fnd_file.put(fnd_file.log, rpad(' -----------',60,' '));
14057 fnd_file.put(fnd_file.log, rpad(' -----------',20,' '));
14058 fnd_file.put_line(fnd_file.log,' -------------');
14059
14060 -- Put_Log_Msg('Relationship not created for following persons:',0);
14061 -- Put_Log_Msg('Person Name Person Number Existing DSO',0);
14062 -- Put_Log_Msg('----------- ------------- ------------',0);
14063 END IF;
14064 fnd_file.put(fnd_file.log,' ' || rpad(g_existing_rel(i).person_name,60,' '));
14065 fnd_file.put(fnd_file.log,' ' || rpad(g_existing_rel(i).person_num,20,' '));
14066 fnd_file.put_line(fnd_file.log,' ' || g_existing_rel(i).dso_person_num);
14067 -- Put_Log_Msg(g_existing_rel(i).person_name || ' '||rpad(g_existing_rel(i).person_num,20,' ')||' ' || g_existing_rel(i).dso_person_num,0);
14068 END LOOP;
14069 Put_Log_Msg(' ', 1);
14070 fnd_message.set_name('IGS','IGS_SV_REL_CREATED');
14071 fnd_message.set_token('COUNT', l_counter);
14072 fnd_file.put_line(fnd_file.log,fnd_message.get());
14073 Put_Log_Msg(' ', 1);
14074 fnd_message.set_name('IGS','IGS_SV_REL_NOT_CRTED');
14075 fnd_message.set_token('COUNT', g_existing_rel.COUNT);
14076 fnd_file.put_line(fnd_file.log,fnd_message.get());
14077 ELSE
14078 IF p_old_dso_id IS NULL THEN
14079 --Put_Log_Msg('Enter the old DSO ID for which new relationships have to be created.', 0);
14080 FND_MESSAGE.SET_NAME('IGS','IGS_SV_INV_DSO_ID');
14081 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
14082 FND_MSG_PUB.Add;
14083 RAISE FND_API.G_EXC_ERROR;
14084 END IF;
14085 IF p_old_dso_id = p_new_dso_id THEN
14086 --Put_Log_Msg('Old DSO ID and new DSO ID cannot be same. Request Terminated', 0);
14087 FND_MESSAGE.SET_NAME('IGS','IGS_SV_INV_PARAMS');
14088 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
14089 FND_MSG_PUB.Add;
14090 RAISE FND_API.G_EXC_ERROR;
14091 END IF;
14092 FOR r_old_dso_rel_rec IN c_old_dso_rel(l_old_dso_partyid) LOOP
14093 l_count := l_count + 1;
14094 l_rel_id := r_old_dso_rel_rec.relationship_id;
14095 OPEN c_old_rel_values(l_rel_id, r_old_dso_rel_rec.directional_flag); -- fix for bug 5258405
14096 FETCH c_old_rel_values INTO l_old_rel_values;
14097 CLOSE c_old_rel_values;
14098 l_obj_id := r_old_dso_rel_rec.object_id;
14099 lv_object_version_number := r_old_dso_rel_rec.object_version_number;
14100
14101 IGS_PE_RELATIONSHIPS_PKG.CREATUPDATE_PARTY_RELATIONSHIP (
14102 P_ACTION => 'UPDATE',
14103 P_SUBJECT_ID => l_old_dso_partyid,
14104 P_OBJECT_ID => l_obj_id,
14105 P_PARTY_RELATIONSHIP_TYPE => 'DESIGNATED_SCHOOL_OFFICIAL',
14106 P_RELATIONSHIP_CODE => 'DSO_FOR',
14107 P_COMMENTS => r_old_dso_rel_rec.comments,
14108 P_START_DATE => SYSDATE,
14109 P_END_DATE => SYSDATE,
14110 P_LAST_UPDATE_DATE => lv_last_update_date,
14111 P_RETURN_STATUS => lv_return_status,
14112 P_MSG_COUNT => lv_msg_count,
14113 P_MSG_DATA => lv_msg_data,
14114 P_PARTY_RELATIONSHIP_ID => l_rel_id,
14115 P_PARTY_ID => lv_party_id,
14116 P_PARTY_NUMBER => lv_party_number,
14117 P_CALLER => 'NOT_FAMILY',
14118 P_OBJECT_VERSION_NUMBER => lv_object_version_number,
14119 P_PRIMARY => l_old_rel_values.primary,
14120 P_SECONDARY => l_old_rel_values.secondary,
14121 P_JOINT_SALUTATION => l_old_rel_values.joint_salutation,
14122 P_NEXT_TO_KIN => l_old_rel_values.next_to_kin,
14123 P_REP_FACULTY => l_old_rel_values.rep_faculty,
14124 P_REP_STAFF => l_old_rel_values.rep_staff,
14125 P_REP_STUDENT => l_old_rel_values.rep_student,
14126 P_REP_ALUMNI => l_old_rel_values.rep_alumni,
14127 P_DIRECTIONAL_FLAG => l_old_rel_values.directional_flag,
14128 P_EMERGENCY_CONTACT_FLAG => l_old_rel_values.emergency_contact_flag
14129 );
14130 lv_object_version_number := 1;
14131 IGS_PE_RELATIONSHIPS_PKG.CREATUPDATE_PARTY_RELATIONSHIP (
14132 P_ACTION => 'INSERT',
14133 P_SUBJECT_ID => l_new_dso_partyid,
14134 P_OBJECT_ID => l_obj_id,
14135 P_PARTY_RELATIONSHIP_TYPE => 'DESIGNATED_SCHOOL_OFFICIAL',
14136 P_RELATIONSHIP_CODE => 'DSO_FOR',
14137 P_COMMENTS => r_old_dso_rel_rec.comments,
14138 P_START_DATE => SYSDATE,
14139 P_END_DATE => NULL,
14140 P_LAST_UPDATE_DATE => lv_last_update_date,
14141 P_RETURN_STATUS => lv_return_status,
14142 P_MSG_COUNT => lv_msg_count,
14143 P_MSG_DATA => lv_msg_data,
14144 P_PARTY_RELATIONSHIP_ID => lv_party_relationship_id,
14145 P_PARTY_ID => lv_party_id,
14146 P_PARTY_NUMBER => lv_party_number,
14147 P_CALLER => 'NOT_FAMILY',
14148 P_OBJECT_VERSION_NUMBER => lv_object_version_number,
14149 P_PRIMARY => l_old_rel_values.primary,
14150 P_SECONDARY => l_old_rel_values.secondary,
14151 P_JOINT_SALUTATION => l_old_rel_values.joint_salutation,
14152 P_NEXT_TO_KIN => l_old_rel_values.next_to_kin,
14153 P_REP_FACULTY => l_old_rel_values.rep_faculty,
14154 P_REP_STAFF => l_old_rel_values.rep_staff,
14155 P_REP_STUDENT => l_old_rel_values.rep_student,
14156 P_REP_ALUMNI => l_old_rel_values.rep_alumni,
14157 P_EMERGENCY_CONTACT_FLAG => l_old_rel_values.emergency_contact_flag
14158 );
14159 lv_party_relationship_id := NULL;
14160 IF l_count = 1 THEN
14161 OPEN c_get_person_num(l_old_dso_partyid);
14162 FETCH c_get_person_num INTO l_person_num, l_first_name, l_last_name;
14163 CLOSE c_get_person_num;
14164 --Put_Log_Msg('DSO_OF relationship of following persons is end dated with '||l_first_name||' '|| l_last_name, 0);
14165 OPEN c_get_person_num(l_new_dso_partyid);
14166 FETCH c_get_person_num INTO l_new_person_num, l_new_first_name, l_new_last_name;
14167 CLOSE c_get_person_num;
14168 fnd_message.set_name('IGS','IGS_SV_REL_UPD');
14169 fnd_message.set_token('OLD_DSO_NAME', l_first_name||' '|| l_last_name);
14170 fnd_message.set_token('NEW_DSO_NAME', l_new_first_name||' '|| l_new_last_name);
14171 fnd_file.put_line(fnd_file.log,fnd_message.get());
14172 Put_Log_Msg(' ', 1);
14173 fnd_message.set_name('IGS','IGS_SV_PRSN_NAME');
14174 fnd_file.put(fnd_file.log,' ' || rpad(fnd_message.get(),60,' '));
14175 fnd_message.set_name('IGS','IGS_SV_PER_NUM');
14176 fnd_file.put_line(fnd_file.log,' ' || fnd_message.get());
14177 fnd_file.put(fnd_file.log, rpad(' -----------',60,' '));
14178 fnd_file.put_line(fnd_file.log,' -------------');
14179
14180 --Put_Log_Msg('and new relationship created with '||l_new_first_name||' '|| l_new_last_name||':', 0);
14181 --Put_Log_Msg('Person Name Person Number', 0);
14182 --Put_Log_Msg('----------- -------------', 0);
14183 END IF;
14184 OPEN c_get_person_num(l_obj_id);
14185 FETCH c_get_person_num INTO l_person_num, l_first_name, l_last_name;
14186 CLOSE c_get_person_num;
14187 -- Put_Log_Msg(l_first_name||' '||l_last_name ||' '||l_person_num, 0);
14188 fnd_file.put(fnd_file.log,' ' || rpad(l_first_name||' '|| l_last_name,60,' '));
14189 fnd_file.put_line(fnd_file.log,' ' || l_person_num);
14190
14191
14192 END LOOP;
14193 Put_Log_Msg(' ', 1);
14194 fnd_message.set_name('IGS','IGS_SV_REL_UPDATED');
14195 fnd_message.set_token('COUNT', l_count);
14196 fnd_file.put_line(fnd_file.log,fnd_message.get());
14197 END IF;
14198
14199 EXCEPTION
14200 WHEN FND_API.G_EXC_ERROR THEN
14201 ROLLBACK;
14202 retcode := 2;
14203 fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
14204 fnd_message.set_token ('NAME', 'igs_sv_batch_process_pkg.Assign_DSO'|| '-' || SQLERRM);
14205 igs_ge_msg_stack.conc_exception_hndl;
14206 WHEN OTHERS THEN
14207 ROLLBACK;
14208 retcode := 2;
14209 fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
14210 fnd_message.set_token ('NAME', 'igs_sv_batch_process_pkg.Assign_DSO'|| '-' || SQLERRM);
14211 igs_ge_msg_stack.conc_exception_hndl;
14212 END Assign_DSO;
14213
14214 END igs_sv_batch_process_pkg;