[Home] [Help]
PACKAGE BODY: APPS.IGF_AP_MATCHING_PROCESS_PKG
Source
1 PACKAGE BODY IGF_AP_MATCHING_PROCESS_PKG AS
2 /* $Header: IGFAP04B.pls 120.23 2006/06/30 07:54:19 rajagupt ship $ */
3
4 INVALID_PROFILE_ERROR EXCEPTION;
5 total_rvw NUMBER(8);
6 g_force_add VARCHAR2(1);
7 g_create_inquiry VARCHAR2(1);
8 g_adm_source_type VARCHAR2(30);
9 g_matched_rec NUMBER := 0;
10 g_unmatched_rec NUMBER := 0;
11 g_unmatched_added NUMBER := 0;
12 g_bad_rec NUMBER := 0;
13 g_dup_rec NUMBER := 0;
14 g_review_count NUMBER := 0;
15 g_rec_not_ins BOOLEAN := TRUE;
16 gv_format igs_pe_person_id_typ.format_mask%TYPE := NULL;
17 g_setup_score igf_ap_record_match%ROWTYPE;
18 g_isir_intrface_rec igf_ap_isir_ints%ROWTYPE;
19 g_ci_cal_type igf_ap_batch_aw_map.ci_cal_type%TYPE;
20 g_ci_sequence_number igf_ap_batch_aw_map.ci_sequence_number%TYPE;
21 g_pell_match_type VARCHAR2(1) ; -- Stores the Type of Pell match done Duplicate/New rec
22 g_base_id NUMBER;
23 g_called_from_process BOOLEAN := FALSE;
24 g_fa_base_rec igf_ap_fa_base_rec%ROWTYPE; -- Will be populated once and used in all places
25 g_max_tran_num VARCHAR2(2); -- Stores the max transaction number
26 g_person_id NUMBER;
27 g_count_corr NUMBER ;
28
29 g_batch_year igf_ap_batch_aw_map.batch_year%TYPE;
30 g_match_code igf_ap_record_match_all.match_code%TYPE;
31 g_separator_line VARCHAR2(100);
32 g_total_recs_processed NUMBER := 0;
33 g_rec_processed_status igf_ap_isir_ints_all.record_status%TYPE;
34 g_del_success_int_rec VARCHAR2(1); -- Global var for holding p_del_int parameter value
35 g_isir_is_valid BOOLEAN;
36 g_sub_req_num NUMBER;
37 g_gen_party_profile_val VARCHAR2(1);
38 g_enable_debug_logging VARCHAR2(1);
39 g_upd_ant_val VARCHAR2(1);
40
41 g_debug_seq NUMBER:=0; --- #R1 Remove after debugging
42 g_old_active_isir_id igf_ap_isir_matched_all.isir_id%TYPE; -- bbb
43
44 -- pl/sql table def for deleting from match details using BULK operation.
45 TYPE match_details_amd_id IS TABLE OF igf_ap_match_details.amd_id%TYPE;
46 g_amd_id_tab match_details_amd_id;
47
48 CURSOR cur_setup_score (cp_match_code igf_ap_record_match_all.match_code%TYPE) IS
49 SELECT *
50 FROM igf_ap_record_match
51 WHERE match_code = cp_match_code
52 AND enabled_flag = 'Y';
53
54
55 --==== FOR TESTING...
56 RAM_U_R NUMBER := 0;
57
58 RAM_I_M NUMBER := 0;
59 RAM_U_M NUMBER := 0;
60
61 RAM_I_N NUMBER := 0;
62
63 RAM_I_PM NUMBER := 0;
64 RAM_U_PM NUMBER := 0;
65
66 RAM_I_MD NUMBER := 0;
67 RAM_U_MD NUMBER := 0;
68
69 RAM_I_F NUMBER := 0;
70 RAM_U_F NUMBER := 0;
71
72 RAM_I_CORR NUMBER := 0;
73 RAM_U_CORR NUMBER := 0;
74
75 RAM_I_PRSN NUMBER := 0;
76 RAM_I_HZ NUMBER := 0;
77
78 RAM_U_TODO NUMBER := 0;
79 RAM_I_TODO NUMBER := 0;
80
81 RAM_U_O NUMBER := 0;
82
83 RAM_D_MD NUMBER := 0;
84 RAM_D_PM NUMBER := 0;
85
86 RAM_MQ NUMBER := 0;
87
88
89 PROCEDURE log_debug_message(m VARCHAR2)
90 IS
91 -- for debugging/testing
92
93 BEGIN
94 IF g_enable_debug_logging = 'Y' THEN
95 g_debug_seq := g_debug_seq + 1;
96 -- fnd_file.put_line(fnd_file.log, m);
97 -- INSERT INTO RAN_DEBUG values (g_debug_seq,m);
98
99 END IF;
100 END log_debug_message;
101
102
103 PROCEDURE RAM_log_dml_count IS
104
105 BEGIN
106
107 log_debug_message('RAM_U_R ' || RAM_U_R);
108
109 log_debug_message('RAM_I_M ' || RAM_I_M);
110 log_debug_message('RAM_U_M ' || RAM_U_M);
111
112 log_debug_message('RAM_I_N ' || RAM_I_N);
113
114 log_debug_message('RAM_I_PM ' || RAM_I_PM);
115 log_debug_message('RAM_U_PM ' || RAM_U_PM);
116 log_debug_message('RAM_D_PM ' || RAM_D_PM);
117
118 log_debug_message('RAM_I_MD ' || RAM_I_MD);
119 log_debug_message('RAM_U_MD ' || RAM_U_MD);
120 log_debug_message('RAM_D_MD ' || RAM_D_MD);
121
122 log_debug_message('RAM_I_F ' || RAM_I_F);
123 log_debug_message('RAM_U_F ' || RAM_U_F);
124
125 log_debug_message('RAM_I_CORR ' || RAM_I_CORR);
126 log_debug_message('RAM_U_CORR ' || RAM_U_CORR);
127
128 log_debug_message('RAM_U_TODO ' || RAM_U_TODO);
129 log_debug_message('RAM_I_TODO ' || RAM_I_TODO);
130 log_debug_message('RAM_I_HZ ' || RAM_I_HZ);
131 log_debug_message('RAM_U_O ' || RAM_U_O);
132
133
134 log_debug_message('RAM_MQ ' || RAM_MQ);
135
136 END RAM_log_dml_count;
137
138
139 PROCEDURE reset_global_variables
140 IS
141 /*
142 || Created By : rgangara
143 || Created On : 30-AUG-2004
144 || Purpose : Resets global variables.
145 || Known limitations, enhancements or remarks :
146 || Change History :
147 || Who When What
148 ||
149 || (reverse chronological order - newest change first)
150 */
151
152 BEGIN
153 total_rvw := 0;
154 g_matched_rec := 0;
155 g_unmatched_rec := 0;
156 g_unmatched_added := 0;
157 g_bad_rec := 0;
158 g_dup_rec := 0;
159 g_review_count := 0;
160 g_count_corr := 0;
161 g_total_recs_processed := 0;
162 g_pell_match_type := NULL;
163 g_base_id := NULL;
164 g_max_tran_num := NULL;
165 g_person_id := NULL;
166 g_batch_year := NULL;
167 g_match_code := NULL;
168 g_sub_req_num := 0;
169 END;
170
171
172 FUNCTION get_msg_class_from_filename(p_filename VARCHAR2)
173 RETURN VARCHAR2 IS
174
175 /*
176 || Created By : rgangara
177 || Created On : 03-AUG-2004
178 || Purpose : Extracts and returns message class name from a given data file name.
179 || Known limitations, enhancements or remarks :
180 || Change History :
181 || Who When What
182 ||
183 || (reverse chronological order - newest change first)
184 */
185
186 l_mesg_class igf_ap_isir_matched_all.message_class_txt%TYPE;
187 l_dot_in_file_name NUMBER :=0;
188
189 BEGIN
190 -- Check if data file has a file extn
191 l_dot_in_file_name := INSTR(p_filename, '.');
192
193 IF l_dot_in_file_name = 0 THEN
194 -- no dot in filename hence entire string is msg class
195 l_mesg_class := p_filename;
196 ELSE
197 -- extract msg class by removing file extn from the file name.
198 l_mesg_class := SUBSTR(p_filename, 1, (l_dot_in_file_name - 1));
199 END IF;
200
201 RETURN(l_mesg_class);
202
203 EXCEPTION
204 WHEN OTHERS THEN
205 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
206 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.get_msg_class_from_filename.exception','The exception is : ' || SQLERRM );
207 END IF;
208
209 RETURN NULL;
210 fnd_message.set_name('IGS' , 'IGS_GE_UNHANDLED_EXCEPTION');
211 igs_ge_msg_stack.add;
212 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
213 igs_ge_msg_stack.add;
214 app_exception.raise_exception;
215
216 END get_msg_class_from_filename;
217
218
219
220 FUNCTION is_payment_isir(p_primary_efc_amt NUMBER)
221 RETURN VARCHAR2 IS
222
223 /*
224 || Created By : rgangara
225 || Created On : 03-AUG-2004
226 || Purpose : For Inserting record into ISIR matched table based on ISIR int record.
227 || Known limitations, enhancements or remarks :
228 || Change History :
229 || Who When What
230 ||
231 || (reverse chronological order - newest change first)
232 */
233
234 lv_payment_isir VARCHAR2(1);
235
236 BEGIN
237 IF p_primary_efc_amt IS NOT NULL THEN
238 lv_payment_isir := 'Y' ;
239 ELSE
240 lv_payment_isir := 'N' ;
241 END IF;
242
243 RETURN (lv_payment_isir);
244
245 EXCEPTION
246 WHEN OTHERS THEN
247 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
248 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.is_payment_isir.exception','The exception is : ' || SQLERRM );
249 END IF;
250
251 fnd_message.set_name('IGS' , 'IGS_GE_UNHANDLED_EXCEPTION');
252 igs_ge_msg_stack.add;
253 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
254 igs_ge_msg_stack.add;
255 app_exception.raise_exception;
256 END is_payment_isir;
257
258
259
260 PROCEDURE process_todo_items(p_base_id NUMBER,
261 p_payment_isir VARCHAR2)
262 IS
263 /*
264 || Created By : rgangara
265 || Created On : 11-AUG-2004
266 || Purpose : For updating TODO items for system todo type of ISIR. Added as part of FA 138 enh (3416895)
267 || Known limitations, enhancements or remarks :
268 || Change History :
269 || Who When What
270 ||
271 || (reverse chronological order - newest change first)
272 */
273
274 CURSOR todo_items_for_isir_cur IS
275 SELECT im.*
276 FROM igf_ap_td_item_mst im
277 WHERE im.system_todo_type_code = 'ISIR' -- for ISIR type only
278 AND im.ci_cal_type = g_ci_cal_type
279 AND im.ci_sequence_number = g_ci_sequence_number;
280
281 CURSOR check_todo_exists_inst_cur(lp_base_id NUMBER, p_item_seq_num NUMBER) IS
282 SELECT ii.rowid, ii.*
283 FROM igf_ap_td_item_inst ii, igf_ap_td_item_mst im
284 WHERE ii.item_sequence_number = im.todo_number
285 AND im.system_todo_type_code = 'ISIR'
286 AND im.ci_cal_type = g_ci_cal_type
287 AND im.ci_sequence_number = g_ci_sequence_number
288 AND ii.item_sequence_number = p_item_seq_num
289 AND ii.base_id = lp_base_id;
290
291 l_todo_status igf_ap_td_item_inst_all.status%TYPE;
292
293 check_todo_exists_inst_rec check_todo_exists_inst_cur%ROWTYPE;
294
295 lv_rowid ROWID;
296
297 BEGIN
298
299 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
300 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_todo_items.debug','Beginning processing of TODO Items for BASE ID: ' || p_base_id || ', Payment ISIR Flag: ' || p_payment_isir );
301 END IF;
302
303 log_debug_message(' Processing TODO items.... ');
304 -- populate the variable with the status to be updated for the records
305 IF p_payment_isir = 'Y' THEN
306 -- need to set the todo status for the records to COMPLETE
307 l_todo_status := 'COM';
308
309 ELSE
310 -- need to set the todo status for the records to INCOMPLETE
311 l_todo_status := 'REC';
312 END IF;
313
314
315 -- loop thru the records and update the status
316 FOR todo_items_for_isir_rec IN todo_items_for_isir_cur
317 LOOP
318 check_todo_exists_inst_rec := NULL;
319 OPEN check_todo_exists_inst_cur(p_base_id, todo_items_for_isir_rec.todo_number);
320 FETCH check_todo_exists_inst_cur INTO check_todo_exists_inst_rec;
321
322 IF check_todo_exists_inst_cur%NOTFOUND THEN
323
324 log_debug_message(' Attaching new ISIR with item_sequence_number : ' || todo_items_for_isir_rec.todo_number || ' and TODO status : ' || l_todo_status || ' for Base ID: ' || p_base_id);
325 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
326 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_todo_items.debug','Attaching new ISIR with item_sequence_number : ' || todo_items_for_isir_rec.todo_number || ' for Base ID: ' || p_base_id);
327 END IF;
328
329 -- insert new row
330 lv_rowid := NULL;
331 igf_ap_td_item_inst_pkg.insert_row (
332 x_rowid => lv_rowid ,
333 x_base_id => p_base_id ,
334 x_item_sequence_number => todo_items_for_isir_rec.todo_number ,
335 x_status => l_todo_status ,
336 x_status_date => TRUNC(SYSDATE) ,
337 x_add_date => TRUNC(SYSDATE) ,
338 x_corsp_date => NULL ,
339 x_corsp_count => NULL ,
340 x_inactive_flag => 'N' ,
341 x_freq_attempt => todo_items_for_isir_rec.freq_attempt ,
342 x_max_attempt => todo_items_for_isir_rec.max_attempt ,
343 x_required_for_application => todo_items_for_isir_rec.required_for_application,
344 x_mode => 'R' ,
345 x_legacy_record_flag => NULL,
346 x_clprl_id => NULL
347 );
348 ELSE
349
350 log_debug_message(' Update TODO Items to Status : ' || l_todo_status);
351 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
352 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_todo_items.debug','Processing TODO status to : ' || l_todo_status || ' for Base ID: ' || p_base_id);
353 END IF;
354
355 -- update the status to complete
356 igf_ap_td_item_inst_pkg.update_row (
357 x_rowid => check_todo_exists_inst_rec.rowid ,
358 x_base_id => p_base_id ,
359 x_item_sequence_number => check_todo_exists_inst_rec.item_sequence_number,
360 x_status => l_todo_status ,
361 x_status_date => check_todo_exists_inst_rec.status_date ,
362 x_add_date => check_todo_exists_inst_rec.add_date ,
363 x_corsp_date => check_todo_exists_inst_rec.corsp_date ,
364 x_corsp_count => check_todo_exists_inst_rec.corsp_count ,
365 x_inactive_flag => check_todo_exists_inst_rec.inactive_flag ,
366 x_freq_attempt => check_todo_exists_inst_rec.freq_attempt ,
367 x_max_attempt => check_todo_exists_inst_rec.max_attempt ,
368 x_required_for_application => check_todo_exists_inst_rec.required_for_application,
369 x_mode => 'R' ,
370 x_legacy_record_flag => check_todo_exists_inst_rec.legacy_record_flag,
371 x_clprl_id => check_todo_exists_inst_rec.clprl_id
372 );
373 END IF;
374
375
376 CLOSE check_todo_exists_inst_cur;
377
378 log_debug_message('Successfully processed TODO processing.');
379 RAM_U_TODO := RAM_U_TODO + 1;
380 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
381 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_todo_items.debug','Item No.: ' || todo_items_for_isir_rec.todo_number);
382 END IF;
383 END LOOP;
384
385 EXCEPTION
386 WHEN OTHERS THEN
387 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
388 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_todo_items.exception','The exception is : ' || SQLERRM );
389 END IF;
390
391 fnd_message.set_name('IGS' , 'IGS_GE_UNHANDLED_EXCEPTION');
392 igs_ge_msg_stack.add;
393 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
394 igs_ge_msg_stack.add;
395 app_exception.raise_exception;
396 END process_todo_items;
397
398
399 PROCEDURE update_isir_int_record (p_si_id igf_ap_isir_ints.si_id%TYPE,
400 p_isir_rec_status igf_ap_isir_ints_all.record_status%TYPE,
401 p_match_code igf_ap_isir_ints.match_code%TYPE)
402 IS
403 /*
404 || Created By : rgangara
405 || Created On : 03-AUG-2004
406 || Purpose : For Updating ISIR Interface record status.
407 || However, records which are to be updated to 'MATCHED' status could be deleted if
408 || the p_del_int_rec User parameter value is 'Y'. Hence this procedure is modified
409 || to delete the ISIR from Int table if the rec status is MATCHED and the paremeter is 'Y'.
410 || Known limitations, enhancements or remarks :
411 || Change History :
412 || Who When What
413 ||
414 || (reverse chronological order - newest change first)
415 */
416
417
418 BEGIN
419
420 IF g_del_success_int_rec = 'Y' AND p_isir_rec_status = 'MATCHED' THEN
421
422 DELETE FROM igf_ap_isir_ints_all
423 WHERE si_id = p_si_id;
424
425 log_debug_message('Deleted ISIR Interface record. SI ID : ' || p_si_id);
426 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
427 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.update_isir_int_record.statement','Deleted ISIR Interface record for SI_ID: ' || p_si_id);
428 END IF;
429
430 ELSE -- if parameter is No or status is not 'MATCHED'
431 UPDATE igf_ap_isir_ints_all
432 SET record_status = p_isir_rec_status,
433 match_code = p_match_code,
434 last_update_date = SYSDATE
435 WHERE si_id = p_si_id;
436
437 log_debug_message('Updated ISIR Interface record. SI ID : ' || p_si_id);
438 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
439 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.update_isir_int_record.statement','Updated ISIR Interface Record Status to ' || p_isir_rec_status || ' for SI_ID: ' || p_si_id);
440 END IF;
441
442 RAM_U_R := RAM_U_R + 1;
443 fnd_message.set_name('IGF','IGF_AP_ISIR_REC_STATUS');
444 fnd_message.set_token('STATUS',p_isir_rec_status);
445 fnd_file.put_line(fnd_file.log, fnd_message.get);
446 END IF;
447
448 EXCEPTION
449 WHEN OTHERS THEN
450 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
451 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.update_isir_int_record.exception','The exception is : ' || SQLERRM );
452 END IF;
453
454 fnd_message.set_name('IGS' , 'IGS_GE_UNHANDLED_EXCEPTION');
455 igs_ge_msg_stack.add;
456 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
457 igs_ge_msg_stack.add;
458 app_exception.raise_exception;
459 END update_isir_int_record;
460
461
462 PROCEDURE update_fa_base_rec(p_fabase_rec igf_ap_fa_base_rec%ROWTYPE,
463 p_isir_verification_flag VARCHAR2)
464 IS
465 /*
466 || Created By : rgangara
467 || Created On : 05-AUG-2004
468 || Purpose : For Updating FA BASE record as per the passed in record.
469 || Known limitations, enhancements or remarks :
470 || Change History :
471 || Who When What
472 ||
473 || (reverse chronological order - newest change first)
474 */
475
476 l_fed_verif_status igf_ap_fa_base_rec.fed_verif_status%TYPE;
477
478 BEGIN
479
480 l_fed_verif_status := p_fabase_rec.fed_verif_status;
481
482 log_debug_message(' Beginning Update of FA Base record. BASE ID : ' || p_fabase_rec.base_id);
483 IF (p_fabase_rec.fed_verif_status IS NULL OR
484 p_fabase_rec.fed_verif_status IN ('CORRSENT','NOTVERIFIED', 'NOTSELECTED')) THEN
485
486 IF p_isir_verification_flag = 'Y' THEN
487 l_fed_verif_status := 'SELECTED';
488 ELSE
489 l_fed_verif_status := 'NOTSELECTED';
490 END IF;
491 END IF;
492
493 -- call the TBH to update the record
494 igf_ap_fa_base_rec_pkg.update_row(
495 x_Mode => 'R' ,
496 x_rowid => p_fabase_rec.row_id ,
497 x_base_id => p_fabase_rec.base_id ,
498 x_ci_cal_type => p_fabase_rec.ci_cal_type ,
499 x_person_id => p_fabase_rec.person_id ,
500 x_ci_sequence_number => p_fabase_rec.ci_sequence_number ,
501 x_org_id => p_fabase_rec.org_id ,
502 x_coa_pending => p_fabase_rec.coa_pending ,
503 x_verification_process_run => p_fabase_rec.verification_process_run ,
504 x_inst_verif_status_date => p_fabase_rec.inst_verif_status_date ,
505 x_manual_verif_flag => p_fabase_rec.manual_verif_flag ,
506 x_fed_verif_status => l_fed_verif_status ,
507 x_fed_verif_status_date => TRUNC(SYSDATE),
508 x_inst_verif_status => p_fabase_rec.inst_verif_status ,
509 x_nslds_eligible => NVL(p_fabase_rec.nslds_eligible, g_isir_intrface_rec.nslds_match_type) ,
510 x_ede_correction_batch_id => p_fabase_rec.ede_correction_batch_id ,
511 x_fa_process_status_date => p_fabase_rec.fa_process_status_date ,
512 x_isir_corr_status => p_fabase_rec.isir_corr_status ,
513 x_isir_corr_status_date => p_fabase_rec.isir_corr_status_date ,
514 x_isir_status => 'Received-Valid',
515 x_isir_status_date => TRUNC(SYSDATE) ,
516 x_coa_code_f => p_fabase_rec.coa_code_f ,
517 x_coa_code_i => p_fabase_rec.coa_code_i ,
518 x_coa_f => p_fabase_rec.coa_f ,
519 x_coa_i => p_fabase_rec.coa_i ,
520 x_disbursement_hold => p_fabase_rec.disbursement_hold ,
521 x_fa_process_status => p_fabase_rec.fa_process_status ,
522 x_notification_status => p_fabase_rec.notification_status ,
523 x_notification_status_date => p_fabase_rec.notification_status_date ,
524 x_packaging_status => p_fabase_rec.packaging_status ,
525 x_packaging_status_date => p_fabase_rec.packaging_status_date ,
526 x_total_package_accepted => p_fabase_rec.total_package_accepted ,
527 x_total_package_offered => p_fabase_rec.total_package_offered ,
528 x_admstruct_id => p_fabase_rec.admstruct_id ,
529 x_admsegment_1 => p_fabase_rec.admsegment_1 ,
530 x_admsegment_2 => p_fabase_rec.admsegment_2 ,
531 x_admsegment_3 => p_fabase_rec.admsegment_3 ,
532 x_admsegment_4 => p_fabase_rec.admsegment_4 ,
533 x_admsegment_5 => p_fabase_rec.admsegment_5 ,
534 x_admsegment_6 => p_fabase_rec.admsegment_6 ,
535 x_admsegment_7 => p_fabase_rec.admsegment_7 ,
536 x_admsegment_8 => p_fabase_rec.admsegment_8 ,
537 x_admsegment_9 => p_fabase_rec.admsegment_9 ,
538 x_admsegment_10 => p_fabase_rec.admsegment_10 ,
539 x_admsegment_11 => p_fabase_rec.admsegment_11 ,
540 x_admsegment_12 => p_fabase_rec.admsegment_12 ,
541 x_admsegment_13 => p_fabase_rec.admsegment_13 ,
542 x_admsegment_14 => p_fabase_rec.admsegment_14 ,
543 x_admsegment_15 => p_fabase_rec.admsegment_15 ,
544 x_admsegment_16 => p_fabase_rec.admsegment_16 ,
545 x_admsegment_17 => p_fabase_rec.admsegment_17 ,
546 x_admsegment_18 => p_fabase_rec.admsegment_18 ,
547 x_admsegment_19 => p_fabase_rec.admsegment_19 ,
548 x_admsegment_20 => p_fabase_rec.admsegment_20 ,
549 x_packstruct_id => p_fabase_rec.packstruct_id ,
550 x_packsegment_1 => p_fabase_rec.packsegment_1 ,
551 x_packsegment_2 => p_fabase_rec.packsegment_2 ,
552 x_packsegment_3 => p_fabase_rec.packsegment_3 ,
553 x_packsegment_4 => p_fabase_rec.packsegment_4 ,
554 x_packsegment_5 => p_fabase_rec.packsegment_5 ,
555 x_packsegment_6 => p_fabase_rec.packsegment_6 ,
556 x_packsegment_7 => p_fabase_rec.packsegment_7 ,
557 x_packsegment_8 => p_fabase_rec.packsegment_8 ,
558 x_packsegment_9 => p_fabase_rec.packsegment_9 ,
559 x_packsegment_10 => p_fabase_rec.packsegment_10 ,
560 x_packsegment_11 => p_fabase_rec.packsegment_11 ,
561 x_packsegment_12 => p_fabase_rec.packsegment_12 ,
562 x_packsegment_13 => p_fabase_rec.packsegment_13 ,
563 x_packsegment_14 => p_fabase_rec.packsegment_14 ,
564 x_packsegment_15 => p_fabase_rec.packsegment_15 ,
565 x_packsegment_16 => p_fabase_rec.packsegment_16 ,
566 x_packsegment_17 => p_fabase_rec.packsegment_17 ,
567 x_packsegment_18 => p_fabase_rec.packsegment_18 ,
568 x_packsegment_19 => p_fabase_rec.packsegment_19 ,
569 x_packsegment_20 => p_fabase_rec.packsegment_20 ,
570 x_miscstruct_id => p_fabase_rec.miscstruct_id ,
571 x_miscsegment_1 => p_fabase_rec.miscsegment_1 ,
572 x_miscsegment_2 => p_fabase_rec.miscsegment_2 ,
573 x_miscsegment_3 => p_fabase_rec.miscsegment_3 ,
574 x_miscsegment_4 => p_fabase_rec.miscsegment_4 ,
575 x_miscsegment_5 => p_fabase_rec.miscsegment_5 ,
576 x_miscsegment_6 => p_fabase_rec.miscsegment_6 ,
577 x_miscsegment_7 => p_fabase_rec.miscsegment_7 ,
578 x_miscsegment_8 => p_fabase_rec.miscsegment_8 ,
579 x_miscsegment_9 => p_fabase_rec.miscsegment_9 ,
580 x_miscsegment_10 => p_fabase_rec.miscsegment_10 ,
581 x_miscsegment_11 => p_fabase_rec.miscsegment_11 ,
582 x_miscsegment_12 => p_fabase_rec.miscsegment_12 ,
583 x_miscsegment_13 => p_fabase_rec.miscsegment_13 ,
584 x_miscsegment_14 => p_fabase_rec.miscsegment_14 ,
585 x_miscsegment_15 => p_fabase_rec.miscsegment_15 ,
586 x_miscsegment_16 => p_fabase_rec.miscsegment_16 ,
587 x_miscsegment_17 => p_fabase_rec.miscsegment_17 ,
588 x_miscsegment_18 => p_fabase_rec.miscsegment_18 ,
589 x_miscsegment_19 => p_fabase_rec.miscsegment_19 ,
590 x_miscsegment_20 => p_fabase_rec.miscsegment_20 ,
591 x_prof_judgement_flg => p_fabase_rec.prof_judgement_flg ,
592 x_nslds_data_override_flg => p_fabase_rec.nslds_data_override_flg ,
593 x_target_group => p_fabase_rec.target_group ,
594 x_coa_fixed => p_fabase_rec.coa_fixed ,
595 x_coa_pell => p_fabase_rec.coa_pell ,
596 x_profile_status => p_fabase_rec.profile_status ,
597 x_profile_status_date => p_fabase_rec.profile_status_date ,
598 x_profile_fc => p_fabase_rec.profile_fc ,
599 x_manual_disb_hold => p_fabase_rec.manual_disb_hold ,
600 x_pell_alt_expense => p_fabase_rec.pell_alt_expense,
601 x_assoc_org_num => p_fabase_rec.assoc_org_num,
602 x_award_fmly_contribution_type => p_fabase_rec.award_fmly_contribution_type,
603 x_packaging_hold => p_fabase_rec.packaging_hold,
604 x_isir_locked_by => p_fabase_rec.isir_locked_by,
605 x_adnl_unsub_loan_elig_flag => p_fabase_rec.adnl_unsub_loan_elig_flag,
606 x_lock_awd_flag => p_fabase_rec.lock_awd_flag,
607 x_lock_coa_flag => p_fabase_rec.lock_coa_flag
608
609 );
610
611 log_debug_message(' Successfully Updated FA Base record. BASE ID : ' || p_fabase_rec.base_id || '. Person ID" ' || p_fabase_rec.person_id);
612 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
613 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.update_fa_base_rec.debug','Updated FA Base Record for BASE ID: ' || p_fabase_rec.base_id || ', Person ID" ' || p_fabase_rec.person_id);
614 END IF;
615 RAM_U_F := RAM_U_F + 1;
616
617 EXCEPTION
618 WHEN OTHERS THEN
619 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
620 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.update_fa_base_rec.exception','The exception is : ' || SQLERRM );
621 END IF;
622
623 fnd_message.set_name('IGS' , 'IGS_GE_UNHANDLED_EXCEPTION');
624 igs_ge_msg_stack.add;
625 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
626 igs_ge_msg_stack.add;
627 app_exception.raise_exception;
628 END update_fa_base_rec;
629
630 PROCEDURE update_isir_matched_rec(p_isir_matched_record igf_ap_isir_matched%ROWTYPE,
631 p_payment_isir igf_ap_isir_matched_all.payment_isir%TYPE,
632 p_active_isir igf_ap_isir_matched_all.active_isir%TYPE )
633 IS
634 /*
635 || Created By : rgangara
636 || Created On : 05-AUG-2004
637 || Purpose : For Updating record in ISIR Matched table and updating based on payment and active isir types.
638 || Known limitations, enhancements or remarks :
639 || Change History :
640 || Who When What
641 ||
642 || (reverse chronological order - newest change first)
643 */
644
645
646 BEGIN
647
648 log_debug_message(' Beginning Update of ISIR Matched record. ISIR ID : ' || p_isir_matched_record.isir_id);
649 -- call the TBH to update the isir matched record
650
651 igf_ap_isir_matched_pkg.update_row(
652 x_Mode => 'R',
653 x_rowid => p_isir_matched_record.row_id,
654 x_isir_id => p_isir_matched_record.isir_id,
655 x_base_id => p_isir_matched_record.base_id,
656 x_batch_year => p_isir_matched_record.batch_year,
657 x_transaction_num => p_isir_matched_record.transaction_num,
658 x_current_ssn => p_isir_matched_record.current_ssn,
659 x_ssn_name_change => p_isir_matched_record.ssn_name_change,
660 x_original_ssn => p_isir_matched_record.original_ssn,
661 x_orig_name_id => p_isir_matched_record.orig_name_id,
662 x_last_name => p_isir_matched_record.last_name,
663 x_first_name => p_isir_matched_record.first_name,
664 x_middle_initial => p_isir_matched_record.middle_initial,
665 x_perm_mail_add => p_isir_matched_record.perm_mail_add,
666 x_perm_city => p_isir_matched_record.perm_city,
667 x_perm_state => p_isir_matched_record.perm_state,
668 x_perm_zip_code => p_isir_matched_record.perm_zip_code,
669 x_date_of_birth => p_isir_matched_record.date_of_birth,
670 x_phone_number => p_isir_matched_record.phone_number,
671 x_driver_license_number => p_isir_matched_record.driver_license_number,
672 x_driver_license_state => p_isir_matched_record.driver_license_state,
673 x_citizenship_status => p_isir_matched_record.citizenship_status,
674 x_alien_reg_number => p_isir_matched_record.alien_reg_number,
675 x_s_marital_status => p_isir_matched_record.s_marital_status,
676 x_s_marital_status_date => p_isir_matched_record.s_marital_status_date,
677 x_summ_enrl_status => p_isir_matched_record.summ_enrl_status,
678 x_fall_enrl_status => p_isir_matched_record.fall_enrl_status,
679 x_winter_enrl_status => p_isir_matched_record.winter_enrl_status,
680 x_spring_enrl_status => p_isir_matched_record.spring_enrl_status,
681 x_summ2_enrl_status => p_isir_matched_record.summ2_enrl_status,
682 x_fathers_highest_edu_level => p_isir_matched_record.fathers_highest_edu_level,
683 x_mothers_highest_edu_level => p_isir_matched_record.mothers_highest_edu_level,
684 x_s_state_legal_residence => p_isir_matched_record.s_state_legal_residence,
685 x_legal_residence_before_date => p_isir_matched_record.legal_residence_before_date,
686 x_s_legal_resd_date => p_isir_matched_record.s_legal_resd_date,
687 x_ss_r_u_male => p_isir_matched_record.ss_r_u_male,
688 x_selective_service_reg => p_isir_matched_record.selective_service_reg,
689 x_degree_certification => p_isir_matched_record.degree_certification,
690 x_grade_level_in_college => p_isir_matched_record.grade_level_in_college,
691 x_high_school_diploma_ged => p_isir_matched_record.high_school_diploma_ged,
692 x_first_bachelor_deg_by_date => p_isir_matched_record.first_bachelor_deg_by_date,
693 x_interest_in_loan => p_isir_matched_record.interest_in_loan,
694 x_interest_in_stud_employment => p_isir_matched_record.interest_in_stud_employment,
695 x_drug_offence_conviction => p_isir_matched_record.drug_offence_conviction,
696 x_s_tax_return_status => p_isir_matched_record.s_tax_return_status,
697 x_s_type_tax_return => p_isir_matched_record.s_type_tax_return,
698 x_s_elig_1040ez => p_isir_matched_record.s_elig_1040ez,
699 x_s_adjusted_gross_income => p_isir_matched_record.s_adjusted_gross_income,
700 x_s_fed_taxes_paid => p_isir_matched_record.s_fed_taxes_paid,
701 x_s_exemptions => p_isir_matched_record.s_exemptions,
702 x_s_income_from_work => p_isir_matched_record.s_income_from_work,
703 x_spouse_income_from_work => p_isir_matched_record.spouse_income_from_work,
704 x_s_toa_amt_from_wsa => p_isir_matched_record.s_toa_amt_from_wsa,
705 x_s_toa_amt_from_wsb => p_isir_matched_record.s_toa_amt_from_wsb,
706 x_s_toa_amt_from_wsc => p_isir_matched_record.s_toa_amt_from_wsc,
707 x_s_investment_networth => p_isir_matched_record.s_investment_networth,
708 x_s_busi_farm_networth => p_isir_matched_record.s_busi_farm_networth,
709 x_s_cash_savings => p_isir_matched_record.s_cash_savings,
710 x_va_months => p_isir_matched_record.va_months,
711 x_va_amount => p_isir_matched_record.va_amount,
712 x_stud_dob_before_date => p_isir_matched_record.stud_dob_before_date,
713 x_deg_beyond_bachelor => p_isir_matched_record.deg_beyond_bachelor,
714 x_s_married => p_isir_matched_record.s_married,
715 x_s_have_children => p_isir_matched_record.s_have_children,
716 x_legal_dependents => p_isir_matched_record.legal_dependents,
717 x_orphan_ward_of_court => p_isir_matched_record.orphan_ward_of_court,
718 x_s_veteran => p_isir_matched_record.s_veteran,
719 x_p_marital_status => p_isir_matched_record.p_marital_status,
720 x_father_ssn => p_isir_matched_record.father_ssn,
721 x_f_last_name => p_isir_matched_record.f_last_name,
722 x_mother_ssn => p_isir_matched_record.mother_ssn,
723 x_m_last_name => p_isir_matched_record.m_last_name,
724 x_p_num_family_member => p_isir_matched_record.p_num_family_member,
725 x_p_num_in_college => p_isir_matched_record.p_num_in_college,
726 x_p_state_legal_residence => p_isir_matched_record.p_state_legal_residence,
727 x_p_state_legal_res_before_dt => p_isir_matched_record.p_state_legal_res_before_dt,
728 x_p_legal_res_date => p_isir_matched_record.p_legal_res_date,
729 x_age_older_parent => p_isir_matched_record.age_older_parent,
730 x_p_tax_return_status => p_isir_matched_record.p_tax_return_status,
731 x_p_type_tax_return => p_isir_matched_record.p_type_tax_return,
732 x_p_elig_1040aez => p_isir_matched_record.p_elig_1040aez,
733 x_p_adjusted_gross_income => p_isir_matched_record.p_adjusted_gross_income,
734 x_p_taxes_paid => p_isir_matched_record.p_taxes_paid,
735 x_p_exemptions => p_isir_matched_record.p_exemptions,
736 x_f_income_work => p_isir_matched_record.f_income_work,
737 x_m_income_work => p_isir_matched_record.m_income_work,
738 x_p_income_wsa => p_isir_matched_record.p_income_wsa,
739 x_p_income_wsb => p_isir_matched_record.p_income_wsb,
740 x_p_income_wsc => p_isir_matched_record.p_income_wsc,
741 x_p_investment_networth => p_isir_matched_record.p_investment_networth,
742 x_p_business_networth => p_isir_matched_record.p_business_networth,
743 x_p_cash_saving => p_isir_matched_record.p_cash_saving,
744 x_s_num_family_members => p_isir_matched_record.s_num_family_members,
745 x_s_num_in_college => p_isir_matched_record.s_num_in_college,
746 x_first_college => p_isir_matched_record.first_college,
747 x_first_house_plan => p_isir_matched_record.first_house_plan,
748 x_second_college => p_isir_matched_record.second_college,
749 x_second_house_plan => p_isir_matched_record.second_house_plan,
750 x_third_college => p_isir_matched_record.third_college,
751 x_third_house_plan => p_isir_matched_record.third_house_plan,
752 x_fourth_college => p_isir_matched_record.fourth_college,
753 x_fourth_house_plan => p_isir_matched_record.fourth_house_plan,
754 x_fifth_college => p_isir_matched_record.fifth_college,
755 x_fifth_house_plan => p_isir_matched_record.fifth_house_plan,
756 x_sixth_college => p_isir_matched_record.sixth_college,
757 x_sixth_house_plan => p_isir_matched_record.sixth_house_plan,
758 x_date_app_completed => p_isir_matched_record.date_app_completed,
759 x_signed_by => p_isir_matched_record.signed_by,
760 x_preparer_ssn => p_isir_matched_record.preparer_ssn,
761 x_preparer_emp_id_number => p_isir_matched_record.preparer_emp_id_number,
762 x_preparer_sign => p_isir_matched_record.preparer_sign,
763 x_transaction_receipt_date => p_isir_matched_record.transaction_receipt_date,
764 x_dependency_override_ind => p_isir_matched_record.dependency_override_ind,
765 x_faa_fedral_schl_code => p_isir_matched_record.faa_fedral_schl_code,
766 x_faa_adjustment => p_isir_matched_record.faa_adjustment,
767 x_input_record_type => p_isir_matched_record.input_record_type,
768 x_serial_number => p_isir_matched_record.serial_number,
769 x_batch_number => p_isir_matched_record.batch_number,
770 x_early_analysis_flag => p_isir_matched_record.early_analysis_flag,
771 x_app_entry_source_code => p_isir_matched_record.app_entry_source_code,
772 x_eti_destination_code => p_isir_matched_record.eti_destination_code,
773 x_reject_override_b => p_isir_matched_record.reject_override_b,
774 x_reject_override_n => p_isir_matched_record.reject_override_n,
775 x_reject_override_w => p_isir_matched_record.reject_override_w,
776 x_assum_override_1 => p_isir_matched_record.assum_override_1,
777 x_assum_override_2 => p_isir_matched_record.assum_override_2,
778 x_assum_override_3 => p_isir_matched_record.assum_override_3,
779 x_assum_override_4 => p_isir_matched_record.assum_override_4,
780 x_assum_override_5 => p_isir_matched_record.assum_override_5,
781 x_assum_override_6 => p_isir_matched_record.assum_override_6,
782 x_dependency_status => p_isir_matched_record.dependency_status,
783 x_s_email_address => p_isir_matched_record.s_email_address,
784 x_nslds_reason_code => p_isir_matched_record.nslds_reason_code,
785 x_app_receipt_date => p_isir_matched_record.app_receipt_date,
786 x_processed_rec_type => p_isir_matched_record.processed_rec_type,
787 x_hist_correction_for_tran_id => p_isir_matched_record.hist_correction_for_tran_id,
788 x_system_generated_indicator => p_isir_matched_record.system_generated_indicator,
789 x_dup_request_indicator => p_isir_matched_record.dup_request_indicator,
790 x_source_of_correction => p_isir_matched_record.source_of_correction,
791 x_p_cal_tax_status => p_isir_matched_record.p_cal_tax_status,
792 x_s_cal_tax_status => p_isir_matched_record.s_cal_tax_status,
793 x_graduate_flag => p_isir_matched_record.graduate_flag,
794 x_auto_zero_efc => p_isir_matched_record.auto_zero_efc,
795 x_efc_change_flag => p_isir_matched_record.efc_change_flag,
796 x_sarc_flag => p_isir_matched_record.sarc_flag,
797 x_simplified_need_test => p_isir_matched_record.simplified_need_test,
798 x_reject_reason_codes => p_isir_matched_record.reject_reason_codes,
799 x_select_service_match_flag => p_isir_matched_record.select_service_match_flag,
800 x_select_service_reg_flag => p_isir_matched_record.select_service_reg_flag,
801 x_ins_match_flag => p_isir_matched_record.ins_match_flag,
802 x_ins_verification_number => NULL,
803 x_sec_ins_match_flag => p_isir_matched_record.sec_ins_match_flag,
804 x_sec_ins_ver_number => p_isir_matched_record.sec_ins_ver_number,
805 x_ssn_match_flag => p_isir_matched_record.ssn_match_flag,
806 x_ssa_citizenship_flag => p_isir_matched_record.ssa_citizenship_flag,
807 x_ssn_date_of_death => p_isir_matched_record.ssn_date_of_death,
808 x_nslds_match_flag => p_isir_matched_record.nslds_match_flag,
809 x_va_match_flag => p_isir_matched_record.va_match_flag,
810 x_prisoner_match => p_isir_matched_record.prisoner_match,
811 x_verification_flag => p_isir_matched_record.verification_flag,
812 x_subsequent_app_flag => p_isir_matched_record.subsequent_app_flag,
813 x_app_source_site_code => p_isir_matched_record.app_source_site_code,
814 x_tran_source_site_code => p_isir_matched_record.tran_source_site_code,
815 x_drn => p_isir_matched_record.drn,
816 x_tran_process_date => p_isir_matched_record.tran_process_date,
817 x_computer_batch_number => p_isir_matched_record.computer_batch_number,
818 x_correction_flags => p_isir_matched_record.correction_flags,
819 x_highlight_flags => p_isir_matched_record.highlight_flags,
820 x_paid_efc => NULL,
821 x_primary_efc => p_isir_matched_record.primary_efc,
822 x_secondary_efc => p_isir_matched_record.secondary_efc,
823 x_fed_pell_grant_efc_type => NULL,
824 x_primary_efc_type => p_isir_matched_record.primary_efc_type,
825 x_sec_efc_type => p_isir_matched_record.sec_efc_type,
826 x_primary_alternate_month_1 => p_isir_matched_record.primary_alternate_month_1,
827 x_primary_alternate_month_2 => p_isir_matched_record.primary_alternate_month_2,
828 x_primary_alternate_month_3 => p_isir_matched_record.primary_alternate_month_3,
829 x_primary_alternate_month_4 => p_isir_matched_record.primary_alternate_month_4,
830 x_primary_alternate_month_5 => p_isir_matched_record.primary_alternate_month_5,
831 x_primary_alternate_month_6 => p_isir_matched_record.primary_alternate_month_6,
832 x_primary_alternate_month_7 => p_isir_matched_record.primary_alternate_month_7,
833 x_primary_alternate_month_8 => p_isir_matched_record.primary_alternate_month_8,
834 x_primary_alternate_month_10 => p_isir_matched_record.primary_alternate_month_10,
835 x_primary_alternate_month_11 => p_isir_matched_record.primary_alternate_month_11,
836 x_primary_alternate_month_12 => p_isir_matched_record.primary_alternate_month_12,
837 x_sec_alternate_month_1 => p_isir_matched_record.sec_alternate_month_1,
838 x_sec_alternate_month_2 => p_isir_matched_record.sec_alternate_month_2,
839 x_sec_alternate_month_3 => p_isir_matched_record.sec_alternate_month_3,
840 x_sec_alternate_month_4 => p_isir_matched_record.sec_alternate_month_4,
841 x_sec_alternate_month_5 => p_isir_matched_record.sec_alternate_month_5,
842 x_sec_alternate_month_6 => p_isir_matched_record.sec_alternate_month_6,
843 x_sec_alternate_month_7 => p_isir_matched_record.sec_alternate_month_7,
844 x_sec_alternate_month_8 => p_isir_matched_record.sec_alternate_month_8,
845 x_sec_alternate_month_10 => p_isir_matched_record.sec_alternate_month_10,
846 x_sec_alternate_month_11 => p_isir_matched_record.sec_alternate_month_11,
847 x_sec_alternate_month_12 => p_isir_matched_record.sec_alternate_month_12,
848 x_total_income => p_isir_matched_record.total_income,
849 x_allow_total_income => p_isir_matched_record.allow_total_income,
850 x_state_tax_allow => p_isir_matched_record.state_tax_allow,
851 x_employment_allow => p_isir_matched_record.employment_allow,
852 x_income_protection_allow => p_isir_matched_record.income_protection_allow,
853 x_available_income => p_isir_matched_record.available_income,
854 x_contribution_from_ai => p_isir_matched_record.contribution_from_ai,
855 x_discretionary_networth => p_isir_matched_record.discretionary_networth,
856 x_efc_networth => p_isir_matched_record.efc_networth,
857 x_asset_protect_allow => p_isir_matched_record.asset_protect_allow,
858 x_parents_cont_from_assets => p_isir_matched_record.parents_cont_from_assets,
859 x_adjusted_available_income => p_isir_matched_record.adjusted_available_income,
860 x_total_student_contribution => p_isir_matched_record.total_student_contribution,
861 x_total_parent_contribution => p_isir_matched_record.total_parent_contribution,
862 x_parents_contribution => p_isir_matched_record.parents_contribution,
863 x_student_total_income => p_isir_matched_record.student_total_income,
864 x_sati => p_isir_matched_record.sati,
865 x_sic => p_isir_matched_record.sic,
866 x_sdnw => p_isir_matched_record.sdnw,
867 x_sca => p_isir_matched_record.sca,
868 x_fti => p_isir_matched_record.fti,
869 x_secti => p_isir_matched_record.secti,
870 x_secati => p_isir_matched_record.secati,
871 x_secstx => p_isir_matched_record.secstx,
872 x_secea => p_isir_matched_record.secea,
873 x_secipa => p_isir_matched_record.secipa,
874 x_secai => p_isir_matched_record.secai,
875 x_seccai => p_isir_matched_record.seccai,
876 x_secdnw => p_isir_matched_record.secdnw,
877 x_secnw => p_isir_matched_record.secnw,
878 x_secapa => p_isir_matched_record.secapa,
879 x_secpca => p_isir_matched_record.secpca,
880 x_secaai => p_isir_matched_record.secaai,
881 x_sectsc => p_isir_matched_record.sectsc,
882 x_sectpc => p_isir_matched_record.sectpc,
883 x_secpc => p_isir_matched_record.secpc,
884 x_secsti => p_isir_matched_record.secsti,
885 x_secsic => p_isir_matched_record.secsic,
886 x_secsati => p_isir_matched_record.secsati,
887 x_secsdnw => p_isir_matched_record.secsdnw,
888 x_secsca => p_isir_matched_record.secsca,
889 x_secfti => p_isir_matched_record.secfti,
890 x_a_citizenship => p_isir_matched_record.a_citizenship,
891 x_a_student_marital_status => p_isir_matched_record.a_student_marital_status,
892 x_a_student_agi => p_isir_matched_record.a_student_agi,
893 x_a_s_us_tax_paid => p_isir_matched_record.a_s_us_tax_paid,
894 x_a_s_income_work => p_isir_matched_record.a_s_income_work,
895 x_a_spouse_income_work => p_isir_matched_record.a_spouse_income_work,
896 x_a_s_total_wsc => p_isir_matched_record.a_s_total_wsc,
897 x_a_date_of_birth => p_isir_matched_record.a_date_of_birth,
898 x_a_student_married => p_isir_matched_record.a_student_married,
899 x_a_have_children => p_isir_matched_record.a_have_children,
900 x_a_s_have_dependents => p_isir_matched_record.a_s_have_dependents,
901 x_a_va_status => p_isir_matched_record.a_va_status,
902 x_a_s_num_in_family => p_isir_matched_record.a_s_num_in_family,
903 x_a_s_num_in_college => p_isir_matched_record.a_s_num_in_college,
904 x_a_p_marital_status => p_isir_matched_record.a_p_marital_status,
905 x_a_father_ssn => p_isir_matched_record.a_father_ssn,
906 x_a_mother_ssn => p_isir_matched_record.a_mother_ssn,
907 x_a_parents_num_family => p_isir_matched_record.a_parents_num_family,
908 x_a_parents_num_college => p_isir_matched_record.a_parents_num_college,
909 x_a_parents_agi => p_isir_matched_record.a_parents_agi,
910 x_a_p_us_tax_paid => p_isir_matched_record.a_p_us_tax_paid,
911 x_a_f_work_income => p_isir_matched_record.a_f_work_income,
912 x_a_m_work_income => p_isir_matched_record.a_m_work_income,
913 x_a_p_total_wsc => p_isir_matched_record.a_p_total_wsc,
914 x_comment_codes => p_isir_matched_record.comment_codes,
915 x_sar_ack_comm_code => p_isir_matched_record.sar_ack_comm_code,
916 x_pell_grant_elig_flag => p_isir_matched_record.pell_grant_elig_flag,
917 x_reprocess_reason_code => p_isir_matched_record.reprocess_reason_code,
918 x_duplicate_date => p_isir_matched_record.duplicate_date,
919 x_isir_transaction_type => p_isir_matched_record.isir_transaction_type,
920 x_fedral_schl_code_indicator => p_isir_matched_record.fedral_schl_code_indicator,
921 x_multi_school_code_flags => p_isir_matched_record.multi_school_code_flags,
922 x_dup_ssn_indicator => p_isir_matched_record.dup_ssn_indicator,
923 x_system_record_type => p_isir_matched_record.system_record_type,
924 x_verif_track_flag => p_isir_matched_record.verif_track_flag,
925 x_payment_isir => p_payment_isir,
926 x_receipt_status => p_isir_matched_record.receipt_status,
927 x_isir_receipt_completed => p_isir_matched_record.isir_receipt_completed,
928 x_active_isir => p_active_isir ,
929 x_fafsa_data_verify_flags => p_isir_matched_record.fafsa_data_verify_flags,
930 x_reject_override_a => p_isir_matched_record.reject_override_a,
931 x_reject_override_c => p_isir_matched_record.reject_override_c,
932 x_parent_marital_status_date => p_isir_matched_record.parent_marital_status_date,
933 x_legacy_record_flag => NULL,
934 x_father_first_name_initial => p_isir_matched_record.father_first_name_initial_txt,
935 x_father_step_father_birth_dt => p_isir_matched_record.father_step_father_birth_date,
936 x_mother_first_name_initial => p_isir_matched_record.mother_first_name_initial_txt,
937 x_mother_step_mother_birth_dt => p_isir_matched_record.mother_step_mother_birth_date,
938 x_parents_email_address_txt => p_isir_matched_record.parents_email_address_txt,
939 x_address_change_type => p_isir_matched_record.address_change_type,
940 x_cps_pushed_isir_flag => p_isir_matched_record.cps_pushed_isir_flag,
941 x_electronic_transaction_type => p_isir_matched_record.electronic_transaction_type,
942 x_sar_c_change_type => p_isir_matched_record.sar_c_change_type,
943 x_father_ssn_match_type => p_isir_matched_record.father_ssn_match_type,
944 x_mother_ssn_match_type => p_isir_matched_record.mother_ssn_match_type,
945 x_reject_override_g_flag => p_isir_matched_record.reject_override_g_flag,
946 x_dhs_verification_num_txt => p_isir_matched_record.dhs_verification_num_txt,
947 x_data_file_name_txt => p_isir_matched_record.data_file_name_txt,
948 x_message_class_txt => p_isir_matched_record.message_class_txt,
949 x_reject_override_3_flag => p_isir_matched_record.reject_override_3_flag,
950 x_reject_override_12_flag => p_isir_matched_record.reject_override_12_flag,
951 x_reject_override_j_flag => p_isir_matched_record.reject_override_j_flag,
952 x_reject_override_k_flag => p_isir_matched_record.reject_override_k_flag,
953 x_rejected_status_change_flag => p_isir_matched_record.rejected_status_change_flag,
954 x_verification_selection_flag => p_isir_matched_record.verification_selection_flag
955 );
956
957 log_debug_message(' Successfully updated Isir Matched record. ' || p_isir_matched_record.isir_id || '. Payment ISIR Flag: ' || p_payment_isir || '. Active ISIR Flag: ' || p_active_isir);
958 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
959 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.update_isir_matched_rec.statement','Successfully updated ISIR record for ISIR ID : ' || p_isir_matched_record.isir_id);
960 END IF;
961 RAM_U_M := RAM_U_M + 1;
962
963 EXCEPTION
964 WHEN OTHERS THEN
965 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
966 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.update_isir_matched_rec(.exception','The exception is : ' || SQLERRM );
967 END IF;
968
969 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
970 igs_ge_msg_stack.add;
971 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
972 igs_ge_msg_stack.add;
973 app_exception.raise_exception;
974 END update_isir_matched_rec;
975
976 PROCEDURE make_old_isir_non_awarding(p_base_id NUMBER) AS
977
978 CURSOR cur_old_awd_isir(pn_base_id NUMBER) IS
979 SELECT im.*
980 FROM igf_ap_isir_matched im
981 WHERE im.base_id = pn_base_id
982 AND im.active_isir = 'Y';
983
984 old_awd_isir_rec cur_old_awd_isir%ROWTYPE;
985
986
987 BEGIN
988
989 FOR old_awd_isir_rec IN cur_old_awd_isir(p_base_id)
990 LOOP
991 update_isir_matched_rec(p_isir_matched_record => old_awd_isir_rec,
992 p_payment_isir => old_awd_isir_rec.payment_isir, -- retain existing value
993 p_active_isir => 'N'); -- retain existing value
994 END LOOP;
995 END;
996
997 PROCEDURE make_old_isir_non_payment(p_base_id NUMBER) AS
998
999 CURSOR cur_old_pymt_isir(pn_base_id NUMBER) IS
1000 SELECT im.*
1001 FROM igf_ap_isir_matched im
1002 WHERE im.base_id = pn_base_id
1003 AND im.payment_isir = 'Y';
1004
1005 old_pymt_isir_rec cur_old_pymt_isir%ROWTYPE;
1006
1007
1008 BEGIN
1009
1010 FOR old_pymt_isir_rec IN cur_old_pymt_isir(p_base_id)
1011 LOOP
1012 update_isir_matched_rec(p_isir_matched_record => old_pymt_isir_rec,
1013 p_payment_isir => 'N', -- make it Non payment isir
1014 p_active_isir => old_pymt_isir_rec.active_isir); -- retain existing value
1015 END LOOP;
1016 END;
1017
1018
1019 PROCEDURE insert_isir_matched_rec(cp_isir_int_rec igf_ap_isir_ints%ROWTYPE,
1020 p_payment_isir igf_ap_isir_matched_all.payment_isir%TYPE,
1021 p_active_isir igf_ap_isir_matched_all.active_isir%TYPE,
1022 p_base_id NUMBER,
1023 p_out_isir_id OUT NOCOPY NUMBER
1024 ) IS
1025
1026
1027 /*
1028 || Created By : rgangara
1029 || Created On : 03-AUG-2004
1030 || Purpose : For Inserting record into ISIR matched table based on ISIR int record.
1031 || Known limitations, enhancements or remarks :
1032 || PARAMETERS : p_payment_isir indicates that the New isir matched rec is also a Payment isir
1033 || p_active_isir indicates that the New isir matched rec is also an Active isir
1034 || p_out_isir_id OUT parameter returns the ISIR ID of the new rec inserted.
1035 || Change History :
1036 || Who When What
1037 ||
1038 || (reverse chronological order - newest change first)
1039 */
1040
1041 l_mesg_class igf_ap_isir_matched_all.message_class_txt%TYPE;
1042 lv_rowid VARCHAR2(30);
1043
1044 BEGIN
1045 lv_rowid := NULL;
1046
1047 log_debug_message(' Beginning Insert of ISIR Matched record. Base ID: ' || p_base_id || ', Payment ISIR Flag: ' || p_payment_isir);
1048 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1049 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.insert_isir_matched_rec.debug','Inserting ISIR Matched record: Base ID: ' || p_Base_id || ', Payment: ' || p_payment_isir);
1050 END IF;
1051
1052
1053 -- Call function which extracts and returns message class from a given data file name.
1054 l_mesg_class := get_msg_class_from_filename(cp_isir_int_rec.data_file_name_txt);
1055 log_debug_message(' Message Class : ' || l_mesg_class);
1056
1057 -- If the current ISIR is a payment ISIR, make the old ISIR as non payment.
1058 IF p_payment_isir = 'Y' THEN
1059 make_old_isir_non_payment(p_base_id);
1060 END IF;
1061
1062 -- If the current ISIR is a awarding ISIR, make the old ISIR as non awarding.
1063 IF p_active_isir = 'Y' THEN
1064 make_old_isir_non_awarding(p_base_id);
1065 END IF;
1066
1067 -- Insert old record into ISIR Matched Table
1068 igf_ap_isir_matched_pkg.insert_row(
1069 x_Mode => 'R',
1070 x_rowid => lv_rowid,
1071 x_isir_id => p_out_isir_id, -- value copied to OUT parameter
1072 x_base_id => p_base_id,
1073 x_batch_year => cp_isir_int_rec.batch_year_num,
1074 x_transaction_num => cp_isir_int_rec.transaction_num_txt,
1075 x_current_ssn => cp_isir_int_rec.current_ssn_txt,
1076 x_ssn_name_change => cp_isir_int_rec.ssn_name_change_type,
1077 x_original_ssn => cp_isir_int_rec.original_ssn_txt,
1078 x_orig_name_id => cp_isir_int_rec.orig_name_id_txt,
1079 x_last_name => cp_isir_int_rec.last_name,
1080 x_first_name => cp_isir_int_rec.first_name,
1081 x_middle_initial => cp_isir_int_rec.middle_initial_txt,
1082 x_perm_mail_add => cp_isir_int_rec.perm_mail_address_txt,
1083 x_perm_city => cp_isir_int_rec.perm_city_txt,
1084 x_perm_state => cp_isir_int_rec.perm_state_txt,
1085 x_perm_zip_code => cp_isir_int_rec.perm_zip_cd,
1086 x_date_of_birth => cp_isir_int_rec.birth_date,
1087 x_phone_number => cp_isir_int_rec.phone_number_txt,
1088 x_driver_license_number => cp_isir_int_rec.driver_license_number_txt,
1089 x_driver_license_state => cp_isir_int_rec.driver_license_state_txt,
1090 x_citizenship_status => cp_isir_int_rec.citizenship_status_type,
1091 x_alien_reg_number => cp_isir_int_rec.alien_reg_number_txt,
1092 x_s_marital_status => cp_isir_int_rec.s_marital_status_type,
1093 x_s_marital_status_date => cp_isir_int_rec.s_marital_status_date,
1094 x_summ_enrl_status => cp_isir_int_rec.summ_enrl_status_type,
1095 x_fall_enrl_status => cp_isir_int_rec.fall_enrl_status_type,
1096 x_winter_enrl_status => cp_isir_int_rec.winter_enrl_status_type,
1097 x_spring_enrl_status => cp_isir_int_rec.spring_enrl_status_type,
1098 x_summ2_enrl_status => cp_isir_int_rec.summ2_enrl_status_type,
1099 x_fathers_highest_edu_level => cp_isir_int_rec.fathers_highst_edu_lvl_type,
1100 x_mothers_highest_edu_level => cp_isir_int_rec.mothers_highst_edu_lvl_type,
1101 x_s_state_legal_residence => cp_isir_int_rec.s_state_legal_residence,
1102 x_legal_residence_before_date => cp_isir_int_rec.legal_res_before_year_flag,
1103 x_s_legal_resd_date => cp_isir_int_rec.s_legal_resd_date,
1104 x_ss_r_u_male => cp_isir_int_rec.ss_r_u_male_flag,
1105 x_selective_service_reg => cp_isir_int_rec.selective_service_reg_flag,
1106 x_degree_certification => cp_isir_int_rec.degree_certification_type,
1107 x_grade_level_in_college => cp_isir_int_rec.grade_level_in_college_type,
1108 x_high_school_diploma_ged => cp_isir_int_rec.high_schl_diploma_ged_flag,
1109 x_first_bachelor_deg_by_date => cp_isir_int_rec.first_bachlr_deg_year_flag,
1110 x_interest_in_loan => cp_isir_int_rec.interest_in_loan_flag,
1111 x_interest_in_stud_employment => cp_isir_int_rec.interest_in_stu_employ_flag,
1112 x_drug_offence_conviction => cp_isir_int_rec.drug_offence_convict_type,
1113 x_s_tax_return_status => cp_isir_int_rec.s_tax_return_status_type,
1114 x_s_type_tax_return => cp_isir_int_rec.s_type_tax_return_type,
1115 x_s_elig_1040ez => cp_isir_int_rec.s_elig_1040ez_type,
1116 x_s_adjusted_gross_income => cp_isir_int_rec.s_adjusted_gross_income_amt,
1117 x_s_fed_taxes_paid => cp_isir_int_rec.s_fed_taxes_paid_amt,
1118 x_s_exemptions => cp_isir_int_rec.s_exemptions_amt,
1119 x_s_income_from_work => cp_isir_int_rec.s_income_from_work_amt,
1120 x_spouse_income_from_work => cp_isir_int_rec.spouse_income_from_work_amt,
1121 x_s_toa_amt_from_wsa => cp_isir_int_rec.s_total_from_wsa_amt,
1122 x_s_toa_amt_from_wsb => cp_isir_int_rec.s_total_from_wsb_amt,
1123 x_s_toa_amt_from_wsc => cp_isir_int_rec.s_total_from_wsc_amt,
1124 x_s_investment_networth => cp_isir_int_rec.s_investment_networth_amt,
1125 x_s_busi_farm_networth => cp_isir_int_rec.s_busi_farm_networth_amt,
1126 x_s_cash_savings => cp_isir_int_rec.s_cash_savings_amt,
1127 x_va_months => cp_isir_int_rec.va_months_num,
1128 x_va_amount => cp_isir_int_rec.va_amt,
1129 x_stud_dob_before_date => cp_isir_int_rec.stud_dob_before_year_flag,
1130 x_deg_beyond_bachelor => cp_isir_int_rec.deg_beyond_bachelor_flag,
1131 x_s_married => cp_isir_int_rec.s_married_flag,
1132 x_s_have_children => cp_isir_int_rec.s_have_children_flag,
1133 x_legal_dependents => cp_isir_int_rec.legal_dependents_flag,
1134 x_orphan_ward_of_court => cp_isir_int_rec.orphan_ward_of_court_flag,
1135 x_s_veteran => cp_isir_int_rec.s_veteran_flag,
1136 x_p_marital_status => cp_isir_int_rec.p_marital_status_type,
1137 x_father_ssn => cp_isir_int_rec.father_ssn_txt,
1138 x_f_last_name => cp_isir_int_rec.f_last_name,
1139 x_mother_ssn => cp_isir_int_rec.mother_ssn_txt,
1140 x_m_last_name => cp_isir_int_rec.m_last_name,
1141 x_p_num_family_member => cp_isir_int_rec.p_family_members_num,
1142 x_p_num_in_college => cp_isir_int_rec.p_in_college_num,
1143 x_p_state_legal_residence => cp_isir_int_rec.p_state_legal_residence_txt,
1144 x_p_state_legal_res_before_dt => cp_isir_int_rec.p_legal_res_before_dt_flag,
1145 x_p_legal_res_date => cp_isir_int_rec.p_legal_res_date,
1146 x_age_older_parent => cp_isir_int_rec.age_older_parent_num,
1147 x_p_tax_return_status => cp_isir_int_rec.p_tax_return_status_type,
1148 x_p_type_tax_return => cp_isir_int_rec.p_type_tax_return_type,
1149 x_p_elig_1040aez => cp_isir_int_rec.p_elig_1040aez_type,
1150 x_p_adjusted_gross_income => cp_isir_int_rec.p_adjusted_gross_income_amt,
1151 x_p_taxes_paid => cp_isir_int_rec.p_taxes_paid_amt,
1152 x_p_exemptions => cp_isir_int_rec.p_exemptions_amt,
1153 x_f_income_work => cp_isir_int_rec.f_income_work_amt,
1154 x_m_income_work => cp_isir_int_rec.m_income_work_amt,
1155 x_p_income_wsa => cp_isir_int_rec.p_income_wsa_amt,
1156 x_p_income_wsb => cp_isir_int_rec.p_income_wsb_amt,
1157 x_p_income_wsc => cp_isir_int_rec.p_income_wsc_amt,
1158 x_p_investment_networth => cp_isir_int_rec.p_investment_networth_amt,
1159 x_p_business_networth => cp_isir_int_rec.p_business_networth_amt,
1160 x_p_cash_saving => cp_isir_int_rec.p_cash_saving_amt,
1161 x_s_num_family_members => cp_isir_int_rec.s_family_members_num,
1162 x_s_num_in_college => cp_isir_int_rec.s_in_college_num,
1163 x_first_college => cp_isir_int_rec.first_college_cd,
1164 x_first_house_plan => cp_isir_int_rec.first_house_plan_type,
1165 x_second_college => cp_isir_int_rec.second_college_cd,
1166 x_second_house_plan => cp_isir_int_rec.second_house_plan_type,
1167 x_third_college => cp_isir_int_rec.third_college_cd,
1168 x_third_house_plan => cp_isir_int_rec.third_house_plan_type,
1169 x_fourth_college => cp_isir_int_rec.fourth_college_cd,
1170 x_fourth_house_plan => cp_isir_int_rec.fourth_house_plan_type,
1171 x_fifth_college => cp_isir_int_rec.fifth_college_cd,
1172 x_fifth_house_plan => cp_isir_int_rec.fifth_house_plan_type,
1173 x_sixth_college => cp_isir_int_rec.sixth_college_cd,
1174 x_sixth_house_plan => cp_isir_int_rec.sixth_house_plan_type,
1175 x_date_app_completed => cp_isir_int_rec.app_completed_date,
1176 x_signed_by => cp_isir_int_rec.signed_by_type,
1177 x_preparer_ssn => cp_isir_int_rec.preparer_ssn_txt,
1178 x_preparer_emp_id_number => cp_isir_int_rec.preparer_emp_id_number_txt,
1179 x_preparer_sign => cp_isir_int_rec.preparer_sign_flag,
1180 x_transaction_receipt_date => cp_isir_int_rec.transaction_receipt_date,
1181 x_dependency_override_ind => cp_isir_int_rec.dependency_override_type,
1182 x_faa_fedral_schl_code => cp_isir_int_rec.faa_fedral_schl_cd,
1183 x_faa_adjustment => cp_isir_int_rec.faa_adjustment_type,
1184 x_input_record_type => cp_isir_int_rec.input_record_type,
1185 x_serial_number => cp_isir_int_rec.serial_num,
1186 x_batch_number => cp_isir_int_rec.batch_number_txt,
1187 x_early_analysis_flag => cp_isir_int_rec.early_analysis_flag,
1188 x_app_entry_source_code => cp_isir_int_rec.app_entry_source_type,
1189 x_eti_destination_code => cp_isir_int_rec.eti_destination_cd,
1190 x_reject_override_b => cp_isir_int_rec.reject_override_b_flag,
1191 x_reject_override_n => cp_isir_int_rec.reject_override_n_flag,
1192 x_reject_override_w => cp_isir_int_rec.reject_override_w_flag,
1193 x_assum_override_1 => cp_isir_int_rec.assum_override_1_flag,
1194 x_assum_override_2 => cp_isir_int_rec.assum_override_2_flag,
1195 x_assum_override_3 => cp_isir_int_rec.assum_override_3_flag,
1196 x_assum_override_4 => cp_isir_int_rec.assum_override_4_flag,
1197 x_assum_override_5 => cp_isir_int_rec.assum_override_5_flag,
1198 x_assum_override_6 => cp_isir_int_rec.assum_override_6_flag,
1199 x_dependency_status => cp_isir_int_rec.dependency_status_type,
1200 x_s_email_address => cp_isir_int_rec.s_email_address_txt,
1201 x_nslds_reason_code => cp_isir_int_rec.nslds_reason_cd,
1202 x_app_receipt_date => cp_isir_int_rec.app_receipt_date,
1203 x_processed_rec_type => cp_isir_int_rec.processed_rec_type,
1204 x_hist_correction_for_tran_id => cp_isir_int_rec.hist_corr_for_tran_num,
1205 x_system_generated_indicator => cp_isir_int_rec.sys_generated_indicator_type,
1206 x_dup_request_indicator => cp_isir_int_rec.dup_request_indicator_type,
1207 x_source_of_correction => cp_isir_int_rec.source_of_correction_type,
1208 x_p_cal_tax_status => cp_isir_int_rec.p_cal_tax_status_type,
1209 x_s_cal_tax_status => cp_isir_int_rec.s_cal_tax_status_type,
1210 x_graduate_flag => cp_isir_int_rec.graduate_flag,
1211 x_auto_zero_efc => cp_isir_int_rec.auto_zero_efc_flag,
1212 x_efc_change_flag => cp_isir_int_rec.efc_change_flag,
1213 x_sarc_flag => cp_isir_int_rec.sarc_flag,
1214 x_simplified_need_test => cp_isir_int_rec.simplified_need_test_flag,
1215 x_reject_reason_codes => cp_isir_int_rec.reject_reason_codes_txt,
1216 x_select_service_match_flag => cp_isir_int_rec.select_service_match_type,
1217 x_select_service_reg_flag => cp_isir_int_rec.select_service_reg_type,
1218 x_ins_match_flag => cp_isir_int_rec.ins_match_flag,
1219 x_ins_verification_number => NULL,
1220 x_sec_ins_match_flag => cp_isir_int_rec.sec_ins_match_type,
1221 x_sec_ins_ver_number => cp_isir_int_rec.sec_ins_ver_num,
1222 x_ssn_match_flag => cp_isir_int_rec.ssn_match_type,
1223 x_ssa_citizenship_flag => cp_isir_int_rec.ssa_citizenship_type,
1224 x_ssn_date_of_death => cp_isir_int_rec.ssn_death_date,
1225 x_nslds_match_flag => cp_isir_int_rec.nslds_match_type,
1226 x_va_match_flag => cp_isir_int_rec.va_match_type,
1227 x_prisoner_match => cp_isir_int_rec.prisoner_match_flag,
1228 x_verification_flag => cp_isir_int_rec.verification_flag,
1229 x_subsequent_app_flag => cp_isir_int_rec.subsequent_app_flag,
1230 x_app_source_site_code => cp_isir_int_rec.app_source_site_cd,
1231 x_tran_source_site_code => cp_isir_int_rec.tran_source_site_cd,
1232 x_drn => cp_isir_int_rec.drn_num,
1233 x_tran_process_date => cp_isir_int_rec.tran_process_date,
1234 x_computer_batch_number => cp_isir_int_rec.computer_batch_num,
1235 x_correction_flags => cp_isir_int_rec.correction_flags_txt,
1236 x_highlight_flags => cp_isir_int_rec.highlight_flags_txt,
1237 x_paid_efc => NULL,
1238 x_primary_efc => cp_isir_int_rec.primary_efc_amt,
1239 x_secondary_efc => cp_isir_int_rec.secondary_efc_amt,
1240 x_fed_pell_grant_efc_type => NULL,
1241 x_primary_efc_type => cp_isir_int_rec.primary_efc_type,
1242 x_sec_efc_type => cp_isir_int_rec.sec_efc_type,
1243 x_primary_alternate_month_1 => cp_isir_int_rec.primary_alt_month_1_amt,
1244 x_primary_alternate_month_2 => cp_isir_int_rec.primary_alt_month_2_amt,
1245 x_primary_alternate_month_3 => cp_isir_int_rec.primary_alt_month_3_amt,
1246 x_primary_alternate_month_4 => cp_isir_int_rec.primary_alt_month_4_amt,
1247 x_primary_alternate_month_5 => cp_isir_int_rec.primary_alt_month_5_amt,
1248 x_primary_alternate_month_6 => cp_isir_int_rec.primary_alt_month_6_amt,
1249 x_primary_alternate_month_7 => cp_isir_int_rec.primary_alt_month_7_amt,
1250 x_primary_alternate_month_8 => cp_isir_int_rec.primary_alt_month_8_amt,
1251 x_primary_alternate_month_10 => cp_isir_int_rec.primary_alt_month_10_amt,
1252 x_primary_alternate_month_11 => cp_isir_int_rec.primary_alt_month_11_amt,
1253 x_primary_alternate_month_12 => cp_isir_int_rec.primary_alt_month_12_amt,
1254 x_sec_alternate_month_1 => cp_isir_int_rec.sec_alternate_month_1_amt,
1255 x_sec_alternate_month_2 => cp_isir_int_rec.sec_alternate_month_2_amt,
1256 x_sec_alternate_month_3 => cp_isir_int_rec.sec_alternate_month_3_amt,
1257 x_sec_alternate_month_4 => cp_isir_int_rec.sec_alternate_month_4_amt,
1258 x_sec_alternate_month_5 => cp_isir_int_rec.sec_alternate_month_5_amt,
1259 x_sec_alternate_month_6 => cp_isir_int_rec.sec_alternate_month_6_amt,
1260 x_sec_alternate_month_7 => cp_isir_int_rec.sec_alternate_month_7_amt,
1261 x_sec_alternate_month_8 => cp_isir_int_rec.sec_alternate_month_8_amt,
1262 x_sec_alternate_month_10 => cp_isir_int_rec.sec_alternate_month_10_amt,
1263 x_sec_alternate_month_11 => cp_isir_int_rec.sec_alternate_month_11_amt,
1264 x_sec_alternate_month_12 => cp_isir_int_rec.sec_alternate_month_12_amt,
1265 x_total_income => cp_isir_int_rec.total_income_amt,
1266 x_allow_total_income => cp_isir_int_rec.allow_total_income_amt,
1267 x_state_tax_allow => cp_isir_int_rec.state_tax_allow_amt,
1268 x_employment_allow => cp_isir_int_rec.employment_allow_amt,
1269 x_income_protection_allow => cp_isir_int_rec.income_protection_allow_amt,
1270 x_available_income => cp_isir_int_rec.available_income_amt,
1271 x_contribution_from_ai => cp_isir_int_rec.contribution_from_ai_amt,
1272 x_discretionary_networth => cp_isir_int_rec.discretionary_networth_amt,
1273 x_efc_networth => cp_isir_int_rec.efc_networth_amt,
1274 x_asset_protect_allow => cp_isir_int_rec.asset_protect_allow_amt,
1275 x_parents_cont_from_assets => cp_isir_int_rec.parents_cont_from_assets_amt,
1276 x_adjusted_available_income => cp_isir_int_rec.adjusted_avail_income_amt,
1277 x_total_student_contribution => cp_isir_int_rec.total_student_contrib_amt,
1278 x_total_parent_contribution => cp_isir_int_rec.total_parent_contrib_amt,
1279 x_parents_contribution => cp_isir_int_rec.parents_contribution_amt,
1280 x_student_total_income => cp_isir_int_rec.student_total_income_amt,
1281 x_sati => cp_isir_int_rec.sati_amt,
1282 x_sic => cp_isir_int_rec.sic_amt,
1283 x_sdnw => cp_isir_int_rec.sdnw_amt,
1284 x_sca => cp_isir_int_rec.sca_amt,
1285 x_fti => cp_isir_int_rec.fti_amt,
1286 x_secti => cp_isir_int_rec.secti_amt,
1287 x_secati => cp_isir_int_rec.secati_amt,
1288 x_secstx => cp_isir_int_rec.secstx_amt,
1289 x_secea => cp_isir_int_rec.secea_amt,
1290 x_secipa => cp_isir_int_rec.secipa_amt,
1291 x_secai => cp_isir_int_rec.secai_amt,
1292 x_seccai => cp_isir_int_rec.seccai_amt,
1293 x_secdnw => cp_isir_int_rec.secdnw_amt,
1294 x_secnw => cp_isir_int_rec.secnw_amt,
1295 x_secapa => cp_isir_int_rec.secapa_amt,
1296 x_secpca => cp_isir_int_rec.SECPCA_AMT,
1297 x_secaai => cp_isir_int_rec.secaai_amt,
1298 x_sectsc => cp_isir_int_rec.sectsc_amt,
1299 x_sectpc => cp_isir_int_rec.sectpc_amt,
1300 x_secpc => cp_isir_int_rec.secpc_amt,
1301 x_secsti => cp_isir_int_rec.secsti_amt,
1302 x_secsic => cp_isir_int_rec.secsic_amt,
1303 x_secsati => cp_isir_int_rec.secsati_amt,
1304 x_secsdnw => cp_isir_int_rec.secsdnw_amt,
1305 x_secsca => cp_isir_int_rec.secsca_amt,
1306 x_secfti => cp_isir_int_rec.secfti_amt,
1307 x_a_citizenship => cp_isir_int_rec.a_citizenship_flag,
1308 x_a_student_marital_status => cp_isir_int_rec.a_studnt_marital_status_flag,
1309 x_a_student_agi => cp_isir_int_rec.a_student_agi_amt,
1310 x_a_s_us_tax_paid => cp_isir_int_rec.a_s_us_tax_paid_amt,
1311 x_a_s_income_work => cp_isir_int_rec.a_s_income_work_amt,
1312 x_a_spouse_income_work => cp_isir_int_rec.a_spouse_income_work_amt,
1313 x_a_s_total_wsc => cp_isir_int_rec.a_s_total_wsc_amt,
1314 x_a_date_of_birth => cp_isir_int_rec.a_date_of_birth_flag,
1315 x_a_student_married => cp_isir_int_rec.a_student_married_flag,
1316 x_a_have_children => cp_isir_int_rec.a_have_children_flag,
1317 x_a_s_have_dependents => cp_isir_int_rec.a_s_have_dependents_flag,
1318 x_a_va_status => cp_isir_int_rec.a_va_status_flag,
1319 x_a_s_num_in_family => cp_isir_int_rec.a_s_in_family_num,
1320 x_a_s_num_in_college => cp_isir_int_rec.a_s_in_college_num,
1321 x_a_p_marital_status => cp_isir_int_rec.a_p_marital_status_flag,
1322 x_a_father_ssn => cp_isir_int_rec.a_father_ssn_txt,
1323 x_a_mother_ssn => cp_isir_int_rec.a_mother_ssn_txt,
1324 x_a_parents_num_family => cp_isir_int_rec.a_parents_family_num,
1325 x_a_parents_num_college => cp_isir_int_rec.a_parents_college_num,
1326 x_a_parents_agi => cp_isir_int_rec.a_parents_agi_amt,
1327 x_a_p_us_tax_paid => cp_isir_int_rec.a_p_us_tax_paid_amt,
1328 x_a_f_work_income => cp_isir_int_rec.a_f_work_income_amt,
1329 x_a_m_work_income => cp_isir_int_rec.a_m_work_income_amt,
1330 x_a_p_total_wsc => cp_isir_int_rec.a_p_total_wsc_amt,
1331 x_comment_codes => cp_isir_int_rec.comment_codes_txt,
1332 x_sar_ack_comm_code => cp_isir_int_rec.sar_ack_comm_codes_txt,
1333 x_pell_grant_elig_flag => cp_isir_int_rec.pell_grant_elig_flag,
1334 x_reprocess_reason_code => cp_isir_int_rec.reprocess_reason_cd,
1335 x_duplicate_date => cp_isir_int_rec.duplicate_date,
1336 x_isir_transaction_type => cp_isir_int_rec.isir_transaction_type,
1337 x_fedral_schl_code_indicator => cp_isir_int_rec.fedral_schl_type,
1338 x_multi_school_code_flags => cp_isir_int_rec.multi_school_cd_flags_txt,
1339 x_dup_ssn_indicator => cp_isir_int_rec.dup_ssn_indicator_flag,
1340 x_system_record_type => 'ORIGINAL',
1341 x_verif_track_flag => cp_isir_int_rec.verif_track_type,
1342 x_payment_isir => p_payment_isir,
1343 x_receipt_status => 'MATCHED',
1344 x_isir_receipt_completed => 'N',
1345 x_active_isir => p_active_isir,
1346 x_fafsa_data_verify_flags => cp_isir_int_rec.fafsa_data_verification_txt,
1347 x_reject_override_a => cp_isir_int_rec.reject_override_a_flag,
1348 x_reject_override_c => cp_isir_int_rec.reject_override_c_flag,
1349 x_parent_marital_status_date => cp_isir_int_rec.parent_marital_status_date,
1350 x_legacy_record_flag => NULL,
1351 x_father_first_name_initial => cp_isir_int_rec.fathr_first_name_initial_txt,
1352 x_father_step_father_birth_dt => cp_isir_int_rec.fathr_step_father_birth_date,
1353 x_mother_first_name_initial => cp_isir_int_rec.mothr_first_name_initial_txt,
1354 x_mother_step_mother_birth_dt => cp_isir_int_rec.mothr_step_mother_birth_date,
1355 x_parents_email_address_txt => cp_isir_int_rec.parents_email_address_txt,
1356 x_address_change_type => cp_isir_int_rec.address_change_type,
1357 x_cps_pushed_isir_flag => cp_isir_int_rec.cps_pushed_isir_flag,
1358 x_electronic_transaction_type => cp_isir_int_rec.electronic_transaction_type,
1359 x_sar_c_change_type => cp_isir_int_rec.sar_c_change_type,
1360 x_father_ssn_match_type => cp_isir_int_rec.father_ssn_match_type,
1361 x_mother_ssn_match_type => cp_isir_int_rec.mother_ssn_match_type,
1362 x_reject_override_g_flag => cp_isir_int_rec.reject_override_g_flag,
1363 x_dhs_verification_num_txt => cp_isir_int_rec.dhs_verification_num_txt,
1364 x_data_file_name_txt => cp_isir_int_rec.data_file_name_txt,
1365 x_message_class_txt => l_mesg_class,
1366 x_reject_override_3_flag => cp_isir_int_rec.reject_override_3_flag,
1367 x_reject_override_12_flag => cp_isir_int_rec.reject_override_12_flag,
1368 x_reject_override_j_flag => cp_isir_int_rec.reject_override_j_flag,
1369 x_reject_override_k_flag => cp_isir_int_rec.reject_override_k_flag,
1370 x_rejected_status_change_flag => cp_isir_int_rec.rejected_status_change_flag,
1371 x_verification_selection_flag => cp_isir_int_rec.verification_selection_flag
1372 );
1373
1374 log_debug_message(' SUccessfully Inserted ISIR Matched record. ISIR ID : ' || p_out_isir_id);
1375 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1376 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.insert_isir_matched_rec.statement','Successfully inserted new ISIR record into ISIR Matched table. ISIR ID : ' || p_out_isir_id );
1377 END IF;
1378 RAM_I_M := RAM_I_M + 1;
1379
1380 EXCEPTION
1381 WHEN others THEN
1382 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
1383 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.insert_isir_matched_rec.exception','The exception is : ' || SQLERRM );
1384 END IF;
1385
1386 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
1387 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.insert_isir_matched_rec');
1388 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
1389 igs_ge_msg_stack.add;
1390 app_exception.raise_exception;
1391 END insert_isir_matched_rec;
1392
1393
1394
1395 PROCEDURE insert_nslds_data_rec(cp_isir_intrface_rec igf_ap_isir_ints%ROWTYPE,
1396 p_isir_id igf_ap_isir_matched_all.isir_id%TYPE,
1397 p_base_id NUMBER,
1398 p_out_nslds_id OUT NOCOPY NUMBER
1399 )
1400 IS
1401 /*
1402 || Created By : rgangara
1403 || Created On : 03-AUG-2004
1404 || Purpose : For Inserting record into NSLDS data table based on ISIR int record.
1405 || Parameters :
1406 || 1. p_out_nslds_id is OUT parameter returning the NSLDS id of the inserted record
1407 || 2. p_isir_id is the isir_id of the corresponding record in isir matched table.
1408 || Known limitations, enhancements or remarks :
1409 || Change History :
1410 || Who When What
1411 ||
1412 || (reverse chronological order - newest change first)
1413 */
1414
1415 lv_rowid VARCHAR2(30);
1416
1417 BEGIN
1418
1419 log_debug_message(' Beginning Insert of NSLDS record for ISIR ID : ' || p_isir_id || '. Base ID : ' || p_base_id);
1420
1421 lv_rowid := NULL;
1422 -- Insert old record into ISIR Matched Table
1423 igf_ap_nslds_data_pkg.insert_row(
1424 x_Mode => 'R',
1425 x_rowid => lv_rowid,
1426 x_nslds_id => p_out_nslds_id,
1427 x_isir_id => p_isir_id,
1428 x_base_id => p_base_id,
1429 x_transaction_num_txt => cp_isir_intrface_rec.transaction_num_txt,
1430 x_nslds_transaction_num => cp_isir_intrface_rec.nslds_transaction_num,
1431 x_nslds_database_results_f => cp_isir_intrface_rec.nslds_database_results_type,
1432 x_nslds_f => cp_isir_intrface_rec.nslds_flag,
1433 x_nslds_pell_overpay_f => cp_isir_intrface_rec.nslds_pell_overpay_type,
1434 x_nslds_pell_overpay_contact => cp_isir_intrface_rec.nslds_pell_overpay_cont_txt,
1435 x_nslds_seog_overpay_f => cp_isir_intrface_rec.nslds_seog_overpay_type,
1436 x_nslds_seog_overpay_contact => cp_isir_intrface_rec.nslds_seog_overpay_cont_txt,
1437 x_nslds_perkins_overpay_f => cp_isir_intrface_rec.nslds_perkins_overpay_type,
1438 x_nslds_perkins_overpay_cntct => cp_isir_intrface_rec.nslds_perk_ovrpay_cntct_txt,
1439 x_nslds_defaulted_loan_f => cp_isir_intrface_rec.nslds_defaulted_loan_flag,
1440 x_nslds_dischged_loan_chng_f => cp_isir_intrface_rec.nslds_dischgd_loan_chng_flag,
1441 x_nslds_satis_repay_f => cp_isir_intrface_rec.nslds_satis_repay_flag,
1442 x_nslds_act_bankruptcy_f => cp_isir_intrface_rec.nslds_act_bankruptcy_flag,
1443 x_nslds_agg_subsz_out_prin_bal => cp_isir_intrface_rec.nslds_agg_subsz_out_pbal_amt,
1444 x_nslds_agg_unsbz_out_prin_bal => cp_isir_intrface_rec.nslds_agg_unsbz_out_pbal_amt,
1445 x_nslds_agg_comb_out_prin_bal => cp_isir_intrface_rec.nslds_agg_comb_out_pbal_amt,
1446 x_nslds_agg_cons_out_prin_bal => cp_isir_intrface_rec.nslds_agg_cons_out_pbal_amt,
1447 x_nslds_agg_subsz_pend_dismt => cp_isir_intrface_rec.nslds_agg_subsz_pnd_disb_amt,
1448 x_nslds_agg_unsbz_pend_dismt => cp_isir_intrface_rec.nslds_agg_unsbz_pnd_disb_amt,
1449 x_nslds_agg_comb_pend_dismt => cp_isir_intrface_rec.nslds_agg_comb_pend_disb_amt,
1450 x_nslds_agg_subsz_total => cp_isir_intrface_rec.nslds_agg_subsz_total_amt,
1451 x_nslds_agg_unsbz_total => cp_isir_intrface_rec.nslds_agg_unsbz_total_amt,
1452 x_nslds_agg_comb_total => cp_isir_intrface_rec.nslds_agg_comb_total_amt,
1453 x_nslds_agg_consd_total => cp_isir_intrface_rec.nslds_agg_consd_total_amt,
1454 x_nslds_perkins_out_bal => cp_isir_intrface_rec.nslds_perkins_out_bal_amt,
1455 x_nslds_perkins_cur_yr_dismnt => cp_isir_intrface_rec.nslds_perkin_cur_yr_disb_amt,
1456 x_nslds_default_loan_chng_f => cp_isir_intrface_rec.nslds_default_loan_chng_flag,
1457 x_nslds_discharged_loan_f => cp_isir_intrface_rec.nslds_discharged_loan_type,
1458 x_nslds_satis_repay_chng_f => cp_isir_intrface_rec.nslds_satis_repay_chng_flag,
1459 x_nslds_act_bnkrupt_chng_f => cp_isir_intrface_rec.nslds_act_bnkrupt_chng_flag,
1460 x_nslds_overpay_chng_f => cp_isir_intrface_rec.nslds_overpay_chng_flag,
1461 x_nslds_agg_loan_chng_f => cp_isir_intrface_rec.nslds_agg_loan_chng_flag,
1462 x_nslds_perkins_loan_chng_f => cp_isir_intrface_rec.nslds_perkins_loan_chng_flag,
1463 x_nslds_pell_paymnt_chng_f => cp_isir_intrface_rec.nslds_pell_paymnt_chng_flag,
1464 x_nslds_addtnl_pell_f => cp_isir_intrface_rec.nslds_addtnl_pell_flag,
1465 x_nslds_addtnl_loan_f => cp_isir_intrface_rec.nslds_addtnl_loan_flag,
1466 x_direct_loan_mas_prom_nt_f => cp_isir_intrface_rec.direct_loan_mas_prom_nt_type,
1467 x_nslds_pell_seq_num_1 => cp_isir_intrface_rec.nslds_pell_1_seq_num,
1468 x_nslds_pell_verify_f_1 => cp_isir_intrface_rec.nslds_pell_1_verify_f_txt,
1469 x_nslds_pell_efc_1 => cp_isir_intrface_rec.nslds_pell_1_efc_amt,
1470 x_nslds_pell_school_code_1 => cp_isir_intrface_rec.nslds_pell_1_school_num,
1471 x_nslds_pell_transcn_num_1 => cp_isir_intrface_rec.nslds_pell_1_transcn_num,
1472 x_nslds_pell_last_updt_dt_1 => cp_isir_intrface_rec.nslds_pell_1_last_updt_date,
1473 x_nslds_pell_scheduled_amt_1 => cp_isir_intrface_rec.nslds_pell_1_scheduled_amt,
1474 x_nslds_pell_amt_paid_todt_1 => cp_isir_intrface_rec.nslds_pell_1_paid_todt_amt,
1475 x_nslds_pell_remng_amt_1 => cp_isir_intrface_rec.nslds_pell_1_remng_amt,
1476 x_nslds_pell_pc_schd_awd_us_1 => cp_isir_intrface_rec.nslds_pell_1_pc_scwd_use_amt,
1477 x_nslds_pell_award_amt_1 => cp_isir_intrface_rec.nslds_pell_1_award_amt,
1478 x_nslds_pell_seq_num_2 => cp_isir_intrface_rec.nslds_pell_2_seq_num,
1479 x_nslds_pell_verify_f_2 => cp_isir_intrface_rec.nslds_pell_2_verify_f_txt,
1480 x_nslds_pell_efc_2 => cp_isir_intrface_rec.nslds_pell_2_efc_amt,
1481 x_nslds_pell_school_code_2 => cp_isir_intrface_rec.nslds_pell_2_school_num,
1482 x_nslds_pell_transcn_num_2 => cp_isir_intrface_rec.nslds_pell_2_transcn_num,
1483 x_nslds_pell_last_updt_dt_2 => cp_isir_intrface_rec.nslds_pell_2_last_updt_date,
1484 x_nslds_pell_scheduled_amt_2 => cp_isir_intrface_rec.nslds_pell_2_scheduled_amt,
1485 x_nslds_pell_amt_paid_todt_2 => cp_isir_intrface_rec.nslds_pell_2_paid_todt_amt,
1486 x_nslds_pell_remng_amt_2 => cp_isir_intrface_rec.nslds_pell_2_remng_amt,
1487 x_nslds_pell_pc_schd_awd_us_2 => cp_isir_intrface_rec.nslds_pell_2_pc_scwd_use_amt,
1488 x_nslds_pell_award_amt_2 => cp_isir_intrface_rec.nslds_pell_2_award_amt,
1489 x_nslds_pell_seq_num_3 => cp_isir_intrface_rec.nslds_pell_3_seq_num,
1490 x_nslds_pell_verify_f_3 => cp_isir_intrface_rec.nslds_pell_3_verify_f_txt,
1491 x_nslds_pell_efc_3 => cp_isir_intrface_rec.nslds_pell_3_efc_amt,
1492 x_nslds_pell_school_code_3 => cp_isir_intrface_rec.nslds_pell_3_school_num,
1493 x_nslds_pell_transcn_num_3 => cp_isir_intrface_rec.nslds_pell_3_transcn_num,
1494 x_nslds_pell_last_updt_dt_3 => cp_isir_intrface_rec.nslds_pell_3_last_updt_date,
1495 x_nslds_pell_scheduled_amt_3 => cp_isir_intrface_rec.nslds_pell_3_scheduled_amt,
1496 x_nslds_pell_amt_paid_todt_3 => cp_isir_intrface_rec.nslds_pell_3_paid_todt_amt,
1497 x_nslds_pell_remng_amt_3 => cp_isir_intrface_rec.nslds_pell_3_remng_amt,
1498 x_nslds_pell_pc_schd_awd_us_3 => cp_isir_intrface_rec.nslds_pell_3_pc_scwd_use_amt,
1499 x_nslds_pell_award_amt_3 => cp_isir_intrface_rec.nslds_pell_3_award_amt,
1500 x_nslds_loan_seq_num_1 => cp_isir_intrface_rec.nslds_loan_1_seq_num,
1501 x_nslds_loan_type_code_1 => cp_isir_intrface_rec.nslds_loan_1_type,
1502 x_nslds_loan_chng_f_1 => cp_isir_intrface_rec.nslds_loan_1_chng_flag,
1503 x_nslds_loan_prog_code_1 => cp_isir_intrface_rec.nslds_loan_1_prog_cd,
1504 x_nslds_loan_net_amnt_1 => cp_isir_intrface_rec.nslds_loan_1_net_amt,
1505 x_nslds_loan_cur_st_code_1 => cp_isir_intrface_rec.nslds_loan_1_cur_st_cd,
1506 x_nslds_loan_cur_st_date_1 => cp_isir_intrface_rec.nslds_loan_1_cur_st_date,
1507 x_nslds_loan_agg_pr_bal_1 => cp_isir_intrface_rec.nslds_loan_1_agg_pr_bal_amt,
1508 x_nslds_loan_out_pr_bal_dt_1 => cp_isir_intrface_rec.nslds_loan_1_out_pr_bal_date,
1509 x_nslds_loan_begin_dt_1 => cp_isir_intrface_rec.nslds_loan_1_begin_date,
1510 x_nslds_loan_end_dt_1 => cp_isir_intrface_rec.nslds_loan_1_end_date,
1511 x_nslds_loan_ga_code_1 => cp_isir_intrface_rec.nslds_loan_1_ga_cd,
1512 x_nslds_loan_cont_type_1 => cp_isir_intrface_rec.nslds_loan_1_cont_type,
1513 x_nslds_loan_schol_code_1 => cp_isir_intrface_rec.nslds_loan_1_schol_cd,
1514 x_nslds_loan_cont_code_1 => cp_isir_intrface_rec.nslds_loan_1_cont_cd,
1515 x_nslds_loan_grade_lvl_1 => cp_isir_intrface_rec.nslds_loan_1_grade_lvl_txt,
1516 x_nslds_loan_xtr_unsbz_ln_f_1 => cp_isir_intrface_rec.nslds_loan_1_x_unsbz_ln_type,
1517 x_nslds_loan_capital_int_f_1 => cp_isir_intrface_rec.nslds_loan_1_captal_int_flag,
1518 x_nslds_loan_seq_num_2 => cp_isir_intrface_rec.nslds_loan_2_seq_num,
1519 x_nslds_loan_type_code_2 => cp_isir_intrface_rec.nslds_loan_2_type,
1520 x_nslds_loan_chng_f_2 => cp_isir_intrface_rec.nslds_loan_2_chng_flag,
1521 x_nslds_loan_prog_code_2 => cp_isir_intrface_rec.nslds_loan_2_prog_cd,
1522 x_nslds_loan_net_amnt_2 => cp_isir_intrface_rec.nslds_loan_2_net_amt,
1523 x_nslds_loan_cur_st_code_2 => cp_isir_intrface_rec.nslds_loan_2_cur_st_cd,
1524 x_nslds_loan_cur_st_date_2 => cp_isir_intrface_rec.nslds_loan_2_cur_st_date,
1525 x_nslds_loan_agg_pr_bal_2 => cp_isir_intrface_rec.nslds_loan_2_agg_pr_bal_amt,
1526 x_nslds_loan_out_pr_bal_dt_2 => cp_isir_intrface_rec.nslds_loan_2_out_pr_bal_date,
1527 x_nslds_loan_begin_dt_2 => cp_isir_intrface_rec.nslds_loan_2_begin_date,
1528 x_nslds_loan_end_dt_2 => cp_isir_intrface_rec.nslds_loan_2_end_date,
1529 x_nslds_loan_ga_code_2 => cp_isir_intrface_rec.nslds_loan_2_ga_cd,
1530 x_nslds_loan_cont_type_2 => cp_isir_intrface_rec.nslds_loan_2_cont_type,
1531 x_nslds_loan_schol_code_2 => cp_isir_intrface_rec.nslds_loan_2_schol_cd,
1532 x_nslds_loan_cont_code_2 => cp_isir_intrface_rec.nslds_loan_2_cont_cd,
1533 x_nslds_loan_grade_lvl_2 => cp_isir_intrface_rec.nslds_loan_2_grade_lvl_txt,
1534 x_nslds_loan_xtr_unsbz_ln_f_2 => cp_isir_intrface_rec.nslds_loan_2_x_unsbz_ln_type,
1535 x_nslds_loan_capital_int_f_2 => cp_isir_intrface_rec.nslds_loan_2_captal_int_flag,
1536 x_nslds_loan_seq_num_3 => cp_isir_intrface_rec.nslds_loan_3_seq_num,
1537 x_nslds_loan_type_code_3 => cp_isir_intrface_rec.nslds_loan_3_type,
1538 x_nslds_loan_chng_f_3 => cp_isir_intrface_rec.nslds_loan_3_chng_flag,
1539 x_nslds_loan_prog_code_3 => cp_isir_intrface_rec.nslds_loan_3_prog_cd,
1540 x_nslds_loan_net_amnt_3 => cp_isir_intrface_rec.nslds_loan_3_net_amt,
1541 x_nslds_loan_cur_st_code_3 => cp_isir_intrface_rec.nslds_loan_3_cur_st_cd,
1542 x_nslds_loan_cur_st_date_3 => cp_isir_intrface_rec.nslds_loan_3_cur_st_date,
1543 x_nslds_loan_agg_pr_bal_3 => cp_isir_intrface_rec.nslds_loan_3_agg_pr_bal_amt,
1544 x_nslds_loan_out_pr_bal_dt_3 => cp_isir_intrface_rec.nslds_loan_3_out_pr_bal_date,
1545 x_nslds_loan_begin_dt_3 => cp_isir_intrface_rec.nslds_loan_3_begin_date,
1546 x_nslds_loan_end_dt_3 => cp_isir_intrface_rec.nslds_loan_3_end_date,
1547 x_nslds_loan_ga_code_3 => cp_isir_intrface_rec.nslds_loan_3_ga_cd,
1548 x_nslds_loan_cont_type_3 => cp_isir_intrface_rec.nslds_loan_3_cont_type,
1549 x_nslds_loan_schol_code_3 => cp_isir_intrface_rec.nslds_loan_3_schol_cd,
1550 x_nslds_loan_cont_code_3 => cp_isir_intrface_rec.nslds_loan_3_cont_cd,
1551 x_nslds_loan_grade_lvl_3 => cp_isir_intrface_rec.nslds_loan_3_grade_lvl_txt,
1552 x_nslds_loan_xtr_unsbz_ln_f_3 => cp_isir_intrface_rec.nslds_loan_3_x_unsbz_ln_type,
1553 x_nslds_loan_capital_int_f_3 => cp_isir_intrface_rec.nslds_loan_3_captal_int_flag,
1554 x_nslds_loan_seq_num_4 => cp_isir_intrface_rec.nslds_loan_4_seq_num,
1555 x_nslds_loan_type_code_4 => cp_isir_intrface_rec.nslds_loan_4_type,
1556 x_nslds_loan_chng_f_4 => cp_isir_intrface_rec.nslds_loan_4_chng_flag,
1557 x_nslds_loan_prog_code_4 => cp_isir_intrface_rec.nslds_loan_4_prog_cd,
1558 x_nslds_loan_net_amnt_4 => cp_isir_intrface_rec.nslds_loan_4_net_amt,
1559 x_nslds_loan_cur_st_code_4 => cp_isir_intrface_rec.nslds_loan_4_cur_st_cd,
1560 x_nslds_loan_cur_st_date_4 => cp_isir_intrface_rec.nslds_loan_4_cur_st_date,
1561 x_nslds_loan_agg_pr_bal_4 => cp_isir_intrface_rec.nslds_loan_4_agg_pr_bal_amt,
1562 x_nslds_loan_out_pr_bal_dt_4 => cp_isir_intrface_rec.nslds_loan_4_out_pr_bal_date,
1563 x_nslds_loan_begin_dt_4 => cp_isir_intrface_rec.nslds_loan_4_begin_date,
1564 x_nslds_loan_end_dt_4 => cp_isir_intrface_rec.nslds_loan_4_end_date,
1565 x_nslds_loan_ga_code_4 => cp_isir_intrface_rec.nslds_loan_4_ga_cd,
1566 x_nslds_loan_cont_type_4 => cp_isir_intrface_rec.nslds_loan_4_cont_type,
1567 x_nslds_loan_schol_code_4 => cp_isir_intrface_rec.nslds_loan_4_schol_cd,
1568 x_nslds_loan_cont_code_4 => cp_isir_intrface_rec.nslds_loan_4_cont_cd,
1569 x_nslds_loan_grade_lvl_4 => cp_isir_intrface_rec.nslds_loan_4_grade_lvl_txt,
1570 x_nslds_loan_xtr_unsbz_ln_f_4 => cp_isir_intrface_rec.nslds_loan_4_x_unsbz_ln_type,
1571 x_nslds_loan_capital_int_f_4 => cp_isir_intrface_rec.nslds_loan_4_captal_int_flag,
1572 x_nslds_loan_seq_num_5 => cp_isir_intrface_rec.nslds_loan_5_seq_num,
1573 x_nslds_loan_type_code_5 => cp_isir_intrface_rec.nslds_loan_5_type,
1574 x_nslds_loan_chng_f_5 => cp_isir_intrface_rec.nslds_loan_5_chng_flag,
1575 x_nslds_loan_prog_code_5 => cp_isir_intrface_rec.nslds_loan_5_prog_cd,
1576 x_nslds_loan_net_amnt_5 => cp_isir_intrface_rec.nslds_loan_5_net_amt,
1577 x_nslds_loan_cur_st_code_5 => cp_isir_intrface_rec.nslds_loan_5_cur_st_cd,
1578 x_nslds_loan_cur_st_date_5 => cp_isir_intrface_rec.nslds_loan_5_cur_st_date,
1579 x_nslds_loan_agg_pr_bal_5 => cp_isir_intrface_rec.nslds_loan_5_agg_pr_bal_amt,
1580 x_nslds_loan_out_pr_bal_dt_5 => cp_isir_intrface_rec.nslds_loan_5_out_pr_bal_date,
1581 x_nslds_loan_begin_dt_5 => cp_isir_intrface_rec.nslds_loan_5_begin_date,
1582 x_nslds_loan_end_dt_5 => cp_isir_intrface_rec.nslds_loan_5_end_date,
1583 x_nslds_loan_ga_code_5 => cp_isir_intrface_rec.nslds_loan_5_ga_cd,
1584 x_nslds_loan_cont_type_5 => cp_isir_intrface_rec.nslds_loan_5_cont_type,
1585 x_nslds_loan_schol_code_5 => cp_isir_intrface_rec.nslds_loan_5_schol_cd,
1586 x_nslds_loan_cont_code_5 => cp_isir_intrface_rec.nslds_loan_5_cont_cd,
1587 x_nslds_loan_grade_lvl_5 => cp_isir_intrface_rec.nslds_loan_5_grade_lvl_txt,
1588 x_nslds_loan_xtr_unsbz_ln_f_5 => cp_isir_intrface_rec.nslds_loan_5_x_unsbz_ln_type,
1589 x_nslds_loan_capital_int_f_5 => cp_isir_intrface_rec.nslds_loan_5_captal_int_flag,
1590 x_nslds_loan_seq_num_6 => cp_isir_intrface_rec.nslds_loan_6_seq_num,
1591 x_nslds_loan_type_code_6 => cp_isir_intrface_rec.nslds_loan_6_type,
1592 x_nslds_loan_chng_f_6 => cp_isir_intrface_rec.nslds_loan_6_chng_flag,
1593 x_nslds_loan_prog_code_6 => cp_isir_intrface_rec.nslds_loan_6_prog_cd,
1594 x_nslds_loan_net_amnt_6 => cp_isir_intrface_rec.nslds_loan_6_net_amt,
1595 x_nslds_loan_cur_st_code_6 => cp_isir_intrface_rec.nslds_loan_6_cur_st_cd,
1596 x_nslds_loan_cur_st_date_6 => cp_isir_intrface_rec.nslds_loan_6_cur_st_date,
1597 x_nslds_loan_agg_pr_bal_6 => cp_isir_intrface_rec.nslds_loan_6_agg_pr_bal_amt,
1598 x_nslds_loan_out_pr_bal_dt_6 => cp_isir_intrface_rec.nslds_loan_6_out_pr_bal_date,
1599 x_nslds_loan_begin_dt_6 => cp_isir_intrface_rec.nslds_loan_6_begin_date,
1600 x_nslds_loan_end_dt_6 => cp_isir_intrface_rec.nslds_loan_6_end_date,
1601 x_nslds_loan_ga_code_6 => cp_isir_intrface_rec.nslds_loan_6_ga_cd,
1602 x_nslds_loan_cont_type_6 => cp_isir_intrface_rec.nslds_loan_6_cont_type,
1603 x_nslds_loan_schol_code_6 => cp_isir_intrface_rec.nslds_loan_6_schol_cd,
1604 x_nslds_loan_cont_code_6 => cp_isir_intrface_rec.nslds_loan_6_cont_cd,
1605 x_nslds_loan_grade_lvl_6 => cp_isir_intrface_rec.nslds_loan_6_grade_lvl_txt,
1606 x_nslds_loan_xtr_unsbz_ln_f_6 => cp_isir_intrface_rec.nslds_loan_6_x_unsbz_ln_type,
1607 x_nslds_loan_capital_int_f_6 => cp_isir_intrface_rec.nslds_loan_6_captal_int_flag,
1608 x_nslds_loan_last_d_amt_1 => cp_isir_intrface_rec.nslds_loan_1_last_disb_amt,
1609 x_nslds_loan_last_d_date_1 => cp_isir_intrface_rec.nslds_loan_1_last_disb_date,
1610 x_nslds_loan_last_d_amt_2 => cp_isir_intrface_rec.nslds_loan_2_last_disb_amt,
1611 x_nslds_loan_last_d_date_2 => cp_isir_intrface_rec.nslds_loan_2_last_disb_date,
1612 x_nslds_loan_last_d_amt_3 => cp_isir_intrface_rec.nslds_loan_3_last_disb_amt,
1613 x_nslds_loan_last_d_date_3 => cp_isir_intrface_rec.nslds_loan_3_last_disb_date,
1614 x_nslds_loan_last_d_amt_4 => cp_isir_intrface_rec.nslds_loan_4_last_disb_amt,
1615 x_nslds_loan_last_d_date_4 => cp_isir_intrface_rec.nslds_loan_4_last_disb_date,
1616 x_nslds_loan_last_d_amt_5 => cp_isir_intrface_rec.nslds_loan_5_last_disb_amt,
1617 x_nslds_loan_last_d_date_5 => cp_isir_intrface_rec.nslds_loan_5_last_disb_date,
1618 x_nslds_loan_last_d_amt_6 => cp_isir_intrface_rec.nslds_loan_6_last_disb_amt,
1619 x_nslds_loan_last_d_date_6 => cp_isir_intrface_rec.nslds_loan_6_last_disb_date,
1620 x_dlp_master_prom_note_flag => cp_isir_intrface_rec.dlp_master_prom_note_type,
1621 x_subsidized_loan_limit_type => cp_isir_intrface_rec.subsidized_loan_limit_type,
1622 x_combined_loan_limit_type => cp_isir_intrface_rec.combined_loan_limit_type
1623 );
1624
1625 log_debug_message(' Successfully Inserted NSLDS record. NSLDS ID : ' || p_out_nslds_id);
1626
1627 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1628 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.insert_nslds_data_rec.statement','Inserted data into NSLDS data table. NSLDS ID : ' || p_out_nslds_id);
1629 END IF;
1630 RAM_I_N := RAM_I_N + 1;
1631
1632 EXCEPTION
1633 WHEN others THEN
1634 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
1635 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.insert_nslds_data_rec.exception','The exception is : ' || SQLERRM );
1636 END IF;
1637
1638 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
1639 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.insert_nslds_data_rec');
1640 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
1641 igs_ge_msg_stack.add;
1642 app_exception.raise_exception;
1643 END insert_nslds_data_rec;
1644
1645 PROCEDURE create_ssn(cp_person_id igs_pe_alt_pers_id.pe_person_id%TYPE,
1646 cp_original_ssn_txt VARCHAR2
1647 )
1648 IS
1649
1650 /*
1651 || Created By : rajagupt
1652 || Created On : 06-Oct-2005
1653 || Purpose : create SSN record
1654 || Known limitations, enhancements or remarks :
1655 || Change History :
1656 || Who When What
1657 */
1658
1659 lv_rowid ROWID;
1660 BEGIN
1661
1662 IGS_PE_ALT_PERS_ID_PKG.INSERT_ROW (
1663 X_ROWID => lv_rowid,
1664 X_PE_PERSON_ID => cp_person_id,
1665 X_API_PERSON_ID => cp_original_ssn_txt,
1666 X_PERSON_ID_TYPE => 'SSN',
1667 X_START_DT => SYSDATE,
1668 X_END_DT => NULL,
1669 X_ATTRIBUTE_CATEGORY => NULL,
1670 X_ATTRIBUTE1 => NULL,
1671 X_ATTRIBUTE2 => NULL,
1672 X_ATTRIBUTE3 => NULL,
1673 X_ATTRIBUTE4 => NULL,
1674 X_ATTRIBUTE5 => NULL,
1675 X_ATTRIBUTE6 => NULL,
1676 X_ATTRIBUTE7 => NULL,
1677 X_ATTRIBUTE8 => NULL,
1678 X_ATTRIBUTE9 => NULL,
1679 X_ATTRIBUTE10 => NULL,
1680 X_ATTRIBUTE11 => NULL,
1681 X_ATTRIBUTE12 => NULL,
1682 X_ATTRIBUTE13 => NULL,
1683 X_ATTRIBUTE14 => NULL,
1684 X_ATTRIBUTE15 => NULL,
1685 X_ATTRIBUTE16 => NULL,
1686 X_ATTRIBUTE17 => NULL,
1687 X_ATTRIBUTE18 => NULL,
1688 X_ATTRIBUTE19 => NULL,
1689 X_ATTRIBUTE20 => NULL,
1690 X_REGION_CD => NULL,
1691 X_MODE => 'R'
1692 );
1693 END create_ssn;
1694
1695
1696 PROCEDURE insert_fa_base_record( pn_person_id NUMBER,
1697 pn_base_id OUT NOCOPY NUMBER)
1698 IS
1699 /*
1700 || Created By : rgangara
1701 || Created On : 17-AUG-2004
1702 || Purpose : Inserts a new FA base record for the person.
1703 || Known limitations, enhancements or remarks :
1704 || Change History :
1705 || Who When What
1706 || ridas 14-Feb-2006 Bug #5021084. Removed trunc function from cursor SSN_CUR
1707 || rajagupt 6-Oct-2005 Bug#4068548 - added a new cursor ssn_cur
1708 || (reverse chronological order - newest change first)
1709 */
1710
1711 -- cursor to get the ssn no of a person
1712 CURSOR ssn_cur(cp_person_id number) IS
1713 SELECT api_person_id,api_person_id_uf, end_dt
1714 FROM igs_pe_alt_pers_id
1715 WHERE pe_person_id=cp_person_id
1716 AND person_id_type like 'SSN'
1717 AND SYSDATE < = NVL(end_dt,SYSDATE);
1718
1719 rec_ssn_cur ssn_cur%ROWTYPE;
1720
1721 lv_profile_value VARCHAR2(20);
1722 l_award_fmly_contr_type VARCHAR2(1);
1723 lv_rowid VARCHAR2(30);
1724 l_fed_verif_status igf_ap_fa_base_rec_all.fed_verif_status%TYPE;
1725
1726 BEGIN
1727
1728 log_debug_message(' Beginning Insert of FA Base Record. Person ID ' || pn_person_id);
1729
1730 l_fed_verif_status := NULL; -- initialize to NULL
1731
1732 IF NVL(g_isir_intrface_rec.verification_flag,'X') = 'Y' THEN
1733 l_fed_verif_status := 'SELECTED';
1734 ELSE
1735 l_fed_verif_status := 'NOTSELECTED';
1736 END IF;
1737
1738
1739 IF (g_isir_intrface_rec.secondary_efc_amt IS NOT NULL) AND
1740 (g_isir_intrface_rec.secondary_efc_amt < NVL(g_isir_intrface_rec.primary_efc_amt,0)) THEN
1741
1742 l_award_fmly_contr_type := '2';
1743 ELSE
1744 l_award_fmly_contr_type := '1';
1745 END IF;
1746
1747
1748 lv_rowid := NULL;
1749
1750 -- call TBH to insert a new rec
1751 --check if the ssn no is available or not
1752
1753 fnd_profile.get('IGF_AP_SSN_REQ_FOR_BASE_REC',lv_profile_value);
1754
1755 IF(lv_profile_value = 'Y') THEN
1756 OPEN ssn_cur(pn_person_id) ;
1757 FETCH ssn_cur INTO rec_ssn_cur;
1758 IF ssn_cur%NOTFOUND THEN
1759 CLOSE ssn_cur;
1760 create_ssn(pn_person_id, g_isir_intrface_rec.original_ssn_txt );
1761 ELSE
1762 CLOSE ssn_cur;
1763 END IF;
1764 END IF;
1765
1766 igf_ap_fa_base_rec_pkg.insert_row(
1767 x_Mode => 'R',
1768 x_rowid => lv_rowid,
1769 x_base_id => pn_base_id,
1770 x_ci_cal_type => g_ci_cal_type,
1771 x_person_id => pn_person_id,
1772 x_ci_sequence_number => g_ci_sequence_number,
1773 x_org_id => NULL,
1774 x_coa_pending => NULL,
1775 x_verification_process_run => 'N',
1776 x_inst_verif_status_date => NULL,
1777 x_manual_verif_flag => NULL,
1778 x_fed_verif_status => l_fed_verif_status,
1779 x_fed_verif_status_date => TRUNC(SYSDATE),
1780 x_inst_verif_status => NULL,
1781 x_nslds_eligible => g_isir_intrface_rec.nslds_match_type,
1782 x_ede_correction_batch_id => NULL,
1783 x_fa_process_status_date => TRUNC(SYSDATE),
1784 x_isir_corr_status => NULL,
1785 x_isir_corr_status_date => NULL,
1786 x_isir_status => 'Received-Valid', -- Bug 3169500
1787 x_isir_status_date => TRUNC(SYSDATE),
1788 x_coa_code_f => NULL,
1789 x_coa_code_i => NULL,
1790 x_coa_f => NULL,
1791 x_coa_i => NULL,
1792 x_disbursement_hold => NULL,
1793 x_fa_process_status => 'RECEIVED',
1794 x_notification_status => NULL,
1795 x_notification_status_date => NULL,
1796 x_packaging_status => NULL,
1797 x_packaging_status_date => NULL,
1798 x_total_package_accepted => NULL,
1799 x_total_package_offered => NULL,
1800 x_admstruct_id => NULL,
1801 x_admsegment_1 => NULL,
1802 x_admsegment_2 => NULL,
1803 x_admsegment_3 => NULL,
1804 x_admsegment_4 => NULL,
1805 x_admsegment_5 => NULL,
1806 x_admsegment_6 => NULL,
1807 x_admsegment_7 => NULL,
1808 x_admsegment_8 => NULL,
1809 x_admsegment_9 => NULL,
1810 x_admsegment_10 => NULL,
1811 x_admsegment_11 => NULL,
1812 x_admsegment_12 => NULL,
1813 x_admsegment_13 => NULL,
1814 x_admsegment_14 => NULL,
1815 x_admsegment_15 => NULL,
1816 x_admsegment_16 => NULL,
1817 x_admsegment_17 => NULL,
1818 x_admsegment_18 => NULL,
1819 x_admsegment_19 => NULL,
1820 x_admsegment_20 => NULL,
1821 x_packstruct_id => NULL,
1822 x_packsegment_1 => NULL,
1823 x_packsegment_2 => NULL,
1824 x_packsegment_3 => NULL,
1825 x_packsegment_4 => NULL,
1826 x_packsegment_5 => NULL,
1827 x_packsegment_6 => NULL,
1828 x_packsegment_7 => NULL,
1829 x_packsegment_8 => NULL,
1830 x_packsegment_9 => NULL,
1831 x_packsegment_10 => NULL,
1832 x_packsegment_11 => NULL,
1833 x_packsegment_12 => NULL,
1834 x_packsegment_13 => NULL,
1835 x_packsegment_14 => NULL,
1836 x_packsegment_15 => NULL,
1837 x_packsegment_16 => NULL,
1838 x_packsegment_17 => NULL,
1839 x_packsegment_18 => NULL,
1840 x_packsegment_19 => NULL,
1841 x_packsegment_20 => NULL,
1842 x_miscstruct_id => NULL,
1843 x_miscsegment_1 => NULL,
1844 x_miscsegment_2 => NULL,
1845 x_miscsegment_3 => NULL,
1846 x_miscsegment_4 => NULL,
1847 x_miscsegment_5 => NULL,
1848 x_miscsegment_6 => NULL,
1849 x_miscsegment_7 => NULL,
1850 x_miscsegment_8 => NULL,
1851 x_miscsegment_9 => NULL,
1852 x_miscsegment_10 => NULL,
1853 x_miscsegment_11 => NULL,
1854 x_miscsegment_12 => NULL,
1855 x_miscsegment_13 => NULL,
1856 x_miscsegment_14 => NULL,
1857 x_miscsegment_15 => NULL,
1858 x_miscsegment_16 => NULL,
1859 x_miscsegment_17 => NULL,
1860 x_miscsegment_18 => NULL,
1861 x_miscsegment_19 => NULL,
1862 x_miscsegment_20 => NULL,
1863 x_prof_judgement_flg => NULL,
1864 x_nslds_data_override_flg => NULL,
1865 x_target_group => NULL,
1866 x_coa_fixed => NULL,
1867 x_coa_pell => NULL,
1868 x_profile_status => NULL,
1869 x_profile_status_date => NULL,
1870 x_profile_fc => NULL,
1871 x_manual_disb_hold => NULL,
1872 x_pell_alt_expense => NULL,
1873 x_assoc_org_num => NULL,
1874 x_award_fmly_contribution_type => l_award_fmly_contr_type,
1875 x_packaging_hold => NULL,
1876 x_isir_locked_by => NULL,
1877 x_adnl_unsub_loan_elig_flag => 'N',
1878 x_lock_awd_flag => 'N',
1879 x_lock_coa_flag => 'N'
1880
1881 );
1882
1883
1884 IF pn_base_id IS NULL THEN
1885 fnd_message.set_name ('IGF', 'IGF_AP_ERR_FA_REC');
1886 fnd_file.put_line(fnd_file.log,fnd_message.get );
1887 app_exception.raise_exception;
1888 END IF;
1889
1890 log_debug_message(' Successfully inserted FA Base Record. Base ID: ' || pn_base_id);
1891 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1892 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.insert_fa_base_record.statement','Inserted FA Base Record. BASE ID : ' || pn_base_id || ', Person ID:' || pn_person_id);
1893 END IF;
1894
1895 g_base_id := pn_base_id; -- populate global variable
1896
1897 fnd_message.set_name('IGF','IGF_AP_ISIR_FA_BASE_CREATED');
1898 fnd_file.put_line(fnd_file.log, fnd_message.get);
1899 RAM_I_F := RAM_I_F + 1;
1900
1901 EXCEPTION
1902 WHEN others THEN
1903 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
1904 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.insert_fa_base_record.exception','The exception is : ' || SQLERRM );
1905 END IF;
1906 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
1907 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.insert_fa_base_record');
1908 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
1909 igs_ge_msg_stack.add;
1910 app_exception.raise_exception;
1911 END insert_fa_base_record;
1912
1913
1914
1915 PROCEDURE update_prsn_match_rec_status(p_apm_id NUMBER,
1916 p_rec_status VARCHAR2)
1917 IS
1918 /*
1919 || Created By : rgangara
1920 || Created On : 17-AUG-2004
1921 || Purpose : Generic procedure for Updating records in Person Match and Match Details table.
1922 || Generally record status is updated.
1923 || Known limitations, enhancements or remarks :
1924 || Change History :
1925 || Who When What
1926 ||
1927 || (reverse chronological order - newest change first)
1928 */
1929
1930 -- Person match
1931 CURSOR cur_person_match (cp_apm_id NUMBER) IS
1932 SELECT apm.rowid row_id,
1933 apm.*
1934 FROM igf_ap_person_match_all apm
1935 WHERE apm.apm_id = cp_apm_id
1936 FOR UPDATE NOWAIT;
1937
1938 -- match details
1939 CURSOR match_details_cur (cp_apm_id NUMBER) IS
1940 SELECT amd.rowid row_id,
1941 amd.*
1942 FROM igf_ap_match_details amd
1943 WHERE amd.apm_id = cp_apm_id
1944 FOR UPDATE NOWAIT;
1945
1946 BEGIN
1947
1948 log_debug_message(' Beginning update_prsn_match_rec_status proc');
1949
1950 FOR person_match_rec IN cur_person_match(p_apm_id) LOOP
1951
1952 -- call the TBH to update the isir matched record
1953 igf_ap_person_match_pkg.update_row(
1954 x_rowid => person_match_rec.row_id ,
1955 x_apm_id => person_match_rec.apm_id ,
1956 x_css_id => person_match_rec.css_id ,
1957 x_si_id => person_match_rec.si_id ,
1958 x_record_type => person_match_rec.record_type,
1959 x_date_run => person_match_rec.date_run ,
1960 x_ci_sequence_number => person_match_rec.ci_sequence_number,
1961 x_ci_cal_type => person_match_rec.ci_cal_type ,
1962 x_record_status => p_rec_status,
1963 x_mode => 'R'
1964 );
1965
1966 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1967 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.update_prsn_match_rec_status.statement',' Updated Record Status for APM ID : ' || person_match_rec.apm_id);
1968 END IF;
1969 RAM_U_PM := RAM_U_PM + 1;
1970
1971 -- update record status for corresponding match detail records
1972 FOR match_details_rec IN match_details_cur(person_match_rec.apm_id) LOOP
1973
1974 -- call TBH for updating corresp recs.
1975 igf_ap_match_details_pkg.update_row(
1976 x_mode => 'R',
1977 x_rowid => match_details_rec.row_id,
1978 x_amd_id => match_details_rec.amd_id,
1979 x_apm_id => match_details_rec.apm_id,
1980 x_person_id => match_details_rec.person_id ,
1981 x_ssn_match => match_details_rec.ssn_match ,
1982 x_given_name_match => match_details_rec.given_name_match,
1983 x_surname_match => match_details_rec.surname_match ,
1984 x_dob_match => match_details_rec.dob_match ,
1985 x_address_match => match_details_rec.address_match ,
1986 x_city_match => match_details_rec.city_match ,
1987 x_zip_match => match_details_rec.zip_match ,
1988 x_match_score => match_details_rec.match_score ,
1989 x_record_status => p_rec_status ,
1990 x_ssn_txt => match_details_rec.ssn_txt , -- update
1991 x_given_name_txt => match_details_rec.given_name_txt ,
1992 x_sur_name_txt => match_details_rec.sur_name_txt ,
1993 x_birth_date => match_details_rec.birth_date ,
1994 x_address_txt => match_details_rec.address_txt ,
1995 x_city_txt => match_details_rec.city_txt ,
1996 x_zip_txt => match_details_rec.zip_txt ,
1997 x_gender_txt => match_details_rec.gender_txt ,
1998 x_email_id_txt => match_details_rec.email_id_txt ,
1999 x_gender_match => match_details_rec.gender_match ,
2000 x_email_id_match => match_details_rec.email_id_match
2001 );
2002
2003
2004 RAM_U_MD := RAM_U_MD + 1;
2005 log_debug_message(' Updated Match Details record status to : ' || p_rec_status);
2006 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2007 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.update_prsn_match_rec_status.statement',' Updated Record Status for Person ID : ' || match_details_rec.person_id || ' AMD ID: ' || match_details_rec.amd_id);
2008 END IF;
2009 END LOOP; -- match_details_rec
2010 END LOOP; -- person_match_rec
2011
2012 EXCEPTION
2013 WHEN others THEN
2014 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2015 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.update_prsn_match_rec_status.exception','The exception is : ' || SQLERRM );
2016 END IF;
2017
2018 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
2019 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.update_prsn_match_rec_status');
2020 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
2021 igs_ge_msg_stack.add;
2022 app_exception.raise_exception;
2023 END update_prsn_match_rec_status;
2024
2025
2026 PROCEDURE raise_cps_pushed_isir_event
2027 IS
2028 /*
2029 || Created By : rgangara
2030 || Created On : 26-AUG-2004
2031 || Purpose : Called when a CPS Pushed ISIR is processed. Raises a business event notification
2032 || Known limitations, enhancements or remarks :
2033 || Change History :
2034 || Who When What
2035 ||
2036 || (reverse chronological order - newest change first)
2037 */
2038
2039
2040 l_message_class VARCHAR2(30);
2041 l_event_t wf_event_t;
2042 l_raise_event VARCHAR2(50);
2043 l_seq_val VARCHAR2(100);
2044 l_parameter_list_t wf_parameter_list_t;
2045
2046 CURSOR person_dtls_cur(cp_person_id NUMBER) IS
2047 SELECT party_number
2048 FROM hz_parties
2049 WHERE party_id = cp_person_id;
2050
2051 l_person_num hz_parties.party_number%TYPE;
2052
2053 CURSOR get_fa_rec_verif_stat (pn_base_id NUMBER) IS
2054 SELECT fed_verif_status
2055 FROM igf_ap_fa_base_rec_all
2056 WHERE base_id = pn_base_id;
2057
2058 l_verification_status igf_ap_fa_base_rec_all.fed_verif_status%TYPE;
2059 BEGIN
2060
2061 l_seq_val := 'IGFAPW06'|| TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'); -- for unique identification
2062
2063 log_debug_message(' Beginning raise_cps_pushed_isir_event Proc for raising Notification');
2064 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2065 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.processed_cps_pushed_isir.statement','Raising Business event Notification for a CPS Pushed ISIR. Message Class:' || l_message_class);
2066 END IF;
2067
2068
2069 OPEN get_fa_rec_verif_stat(g_base_id);
2070 FETCH get_fa_rec_verif_stat INTO l_verification_status;
2071 CLOSE get_fa_rec_verif_stat ;
2072
2073 IF l_verification_status NOT IN ('ACCURATE','REPROCESSED','WITHOUTDOC') THEN
2074 log_debug_message('No need to raise notification as the Verification Status is NOT complete.');
2075 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2076 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.processed_cps_pushed_isir.statement','No need to raise notification as the Verification Status is NOT complete');
2077 END IF;
2078
2079 RETURN;
2080 END IF;
2081
2082 log_debug_message('Raising Business event Notification');
2083 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2084 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.processed_cps_pushed_isir.statement','Raising Business event Notification');
2085 END IF;
2086
2087 IF g_person_id IS NOT NULL THEN
2088 OPEN person_dtls_cur(g_person_id);
2089 FETCH person_dtls_cur INTO l_person_num;
2090 CLOSE person_dtls_cur ;
2091 END IF;
2092
2093
2094 -- Raise Business Event Notification
2095 l_raise_event := 'oracle.apps.igf.ap.PushedIsir';
2096
2097 -- initialize the wf_event_t object
2098 wf_event_t.initialize(l_event_t);
2099
2100 -- Adding the parameters to the parameter list
2101 wf_event.addparametertolist( p_name => 'M_SI_ID',
2102 p_value => g_isir_intrface_rec.si_id ,
2103 p_parameterlist => l_parameter_list_t);
2104
2105
2106 wf_event.addparametertolist( p_name => 'M_ORIG_SSN',
2107 p_value => g_isir_intrface_rec.original_ssn_txt,
2108 p_parameterlist => l_parameter_list_t);
2109
2110
2111 wf_event.addparametertolist( p_name => 'M_TRANSACTION_NUM',
2112 p_value => g_isir_intrface_rec.transaction_num_txt,
2113 p_parameterlist => l_parameter_list_t);
2114
2115
2116 wf_event.addparametertolist( p_name => 'M_FIRST_NAME',
2117 p_value => g_isir_intrface_rec.first_name,
2118 p_parameterlist => l_parameter_list_t);
2119
2120 wf_event.addparametertolist( p_name => 'M_PERSON_NUM',
2121 p_value => l_person_num,
2122 p_parameterlist => l_parameter_list_t);
2123
2124
2125 -- Set this role to the workflow
2126 wf_event.addparametertolist( p_name => 'M_EMAIL_USER_NAME',
2127 p_value => fnd_global.user_name,
2128 p_parameterlist => l_parameter_list_t);
2129
2130 --Raise the event...
2131 wf_event.raise (p_event_name => l_raise_event,
2132 p_event_key => l_seq_val,
2133 p_parameters => l_parameter_list_t);
2134
2135 -- Deleting the Parameter list after the event is raised
2136 l_parameter_list_t.delete;
2137
2138 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2139 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.processed_cps_pushed_isir.statement','Raised Business event Notification for a CPS Pushed ISIR. Message Class:' || l_message_class);
2140 END IF;
2141 log_debug_message(' Raised CPS PUSHED ISIR Business Event successfully.') ;
2142
2143 EXCEPTION
2144 WHEN OTHERS THEN
2145 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2146 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.raise_cps_pushed_isir_event.exception','The exception is : ' || SQLERRM );
2147 END IF;
2148
2149 wf_core.context('IGF_AP_PushedIsir_WF', 'PUSHEDISIR', l_seq_val, l_raise_event);
2150
2151 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
2152 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.raise_cps_pushed_isir_event');
2153 igs_ge_msg_stack.add;
2154 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
2155 RAISE;
2156 END raise_cps_pushed_isir_event;
2157
2158
2159 PROCEDURE raise_demographic_chng_event
2160 IS
2161 /*
2162 || Created By : rgangara
2163 || Created On : 26-AUG-2004
2164 || Purpose : Called when there is changes to Person demographic data. Raises a business event notification
2165 || Known limitations, enhancements or remarks :
2166 || Change History :
2167 || Who When What
2168 ||
2169 || (reverse chronological order - newest change first)
2170 */
2171
2172
2173 l_message_class VARCHAR2(30);
2174 l_event_t wf_event_t;
2175 l_raise_event VARCHAR2(50);
2176 l_seq_val VARCHAR2(100);
2177 l_parameter_list_t wf_parameter_list_t;
2178
2179 CURSOR person_dtls_cur(cp_person_id NUMBER) IS
2180 SELECT party_number
2181 FROM hz_parties
2182 WHERE party_id = cp_person_id;
2183
2184 l_person_num hz_parties.party_number%TYPE;
2185
2186 BEGIN
2187
2188 l_seq_val := 'DATACHNG'|| TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS'); -- for unique identification
2189
2190 log_debug_message(' Beginning demographic data changed event. Person ID: ' || g_person_id);
2191
2192 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2193 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.raise_demographic_chng_event.statement','Raising demographic data changes Business event Notification. Person ID : ' || g_person_id);
2194 END IF;
2195
2196 IF g_person_id IS NOT NULL THEN
2197 OPEN person_dtls_cur(g_person_id);
2198 FETCH person_dtls_cur INTO l_person_num;
2199 CLOSE person_dtls_cur ;
2200 END IF;
2201
2202
2203 -- Raise Business Event Notification
2204 l_raise_event := 'oracle.apps.igf.ap.DemographicChange';
2205
2206 -- initialize the wf_event_t object
2207 wf_event_t.initialize(l_event_t);
2208
2209 -- Adding the parameters to the parameter list
2210 wf_event.addparametertolist( p_name => 'M_SI_ID',
2211 p_value => g_isir_intrface_rec.si_id ,
2212 p_parameterlist => l_parameter_list_t);
2213
2214 wf_event.addparametertolist( p_name => 'M_PERSON_NUM',
2215 p_value => l_person_num,
2216 p_parameterlist => l_parameter_list_t);
2217
2218
2219 wf_event.addparametertolist( p_name => 'M_ORIG_SSN',
2220 p_value => g_isir_intrface_rec.original_ssn_txt,
2221 p_parameterlist => l_parameter_list_t);
2222
2223
2224 wf_event.addparametertolist( p_name => 'M_TRANSACTION_NUM',
2225 p_value => g_isir_intrface_rec.transaction_num_txt,
2226 p_parameterlist => l_parameter_list_t);
2227
2228 wf_event.addparametertolist( p_name => 'M_SSN',
2229 p_value => g_isir_intrface_rec.current_ssn_txt,
2230 p_parameterlist => l_parameter_list_t);
2231
2232
2233 wf_event.addparametertolist( p_name => 'M_FIRST_NAME',
2234 p_value => INITCAP(g_isir_intrface_rec.first_name),
2235 p_parameterlist => l_parameter_list_t);
2236
2237
2238 wf_event.addparametertolist( p_name => 'M_LAST_NAME',
2239 p_value => INITCAP(g_isir_intrface_rec.last_name),
2240 p_parameterlist => l_parameter_list_t);
2241
2242
2243 wf_event.addparametertolist( p_name => 'M_GENDER',
2244 p_value => g_isir_intrface_rec.ss_r_u_male_flag,
2245 p_parameterlist => l_parameter_list_t);
2246
2247 wf_event.addparametertolist( p_name => 'M_BIRTH_DT',
2248 p_value => g_isir_intrface_rec.birth_date,
2249 p_parameterlist => l_parameter_list_t);
2250
2251
2252 wf_event.addparametertolist( p_name => 'M_ADDRESS',
2253 p_value => INITCAP(g_isir_intrface_rec.perm_mail_address_txt),
2254 p_parameterlist => l_parameter_list_t);
2255
2256 wf_event.addparametertolist( p_name => 'M_CITY',
2257 p_value => INITCAP(g_isir_intrface_rec.perm_city_txt),
2258 p_parameterlist => l_parameter_list_t);
2259
2260
2261 wf_event.addparametertolist( p_name => 'M_ZIP_CODE',
2262 p_value => g_isir_intrface_rec.perm_zip_cd,
2263 p_parameterlist => l_parameter_list_t);
2264
2265 wf_event.addparametertolist( p_name => 'M_EMAIL',
2266 p_value => g_isir_intrface_rec.s_email_address_txt,
2267 p_parameterlist => l_parameter_list_t);
2268
2269 -- Set this role to the workflow
2270 wf_event.addparametertolist( p_name => 'M_RECIPIENT',
2271 p_value => fnd_global.user_name,
2272 p_parameterlist => l_parameter_list_t);
2273
2274 --Raise the event...
2275 wf_event.raise (p_event_name => l_raise_event,
2276 p_event_key => l_seq_val,
2277 p_parameters => l_parameter_list_t);
2278
2279 -- Deleting the Parameter list after the event is raised
2280 l_parameter_list_t.delete;
2281
2282 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2283 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.raise_demographic_chng_event.statement','Raised Demographic data changes Business event Notification. Message Class:' ||l_message_class);
2284 END IF;
2285
2286 log_debug_message('Completed demographic data changed event. Raised Notification');
2287
2288 EXCEPTION
2289 WHEN OTHERS THEN
2290 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2291 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.raise_demographic_chng_event.exception','The exception is : ' || SQLERRM );
2292 END IF;
2293
2294 wf_core.context('IGF_AP_DemographicChange_WF', 'DEMOGRAPHICCHANGE', l_seq_val, l_raise_event); -- RAMMOHAN check name
2295
2296 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
2297 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.raise_demographic_chng_event');
2298 igs_ge_msg_stack.add;
2299 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
2300 RAISE;
2301 END raise_demographic_chng_event;
2302
2303 PROCEDURE create_updt_email_address(p_person_id NUMBER)
2304 IS
2305 /*
2306 || Created By : rgangara
2307 || Created On : 19-AUG-2004
2308 || Purpose : For Inserting new Primary Email Address if none exists Else Insert a new Email Address as Non Primary
2309 || Known limitations, enhancements or remarks :
2310 || Change History :
2311 || Who When What
2312 || museshad 29-Sep-2005 Bug 4291874.
2313 || If the Person record has an email id and if the ISIR
2314 || being imported has a different email id, do not add
2315 || the new email address to the person record and log a
2316 || message. If the email id in the ISIR matches with that
2317 || in the Person record, then don't log any message.
2318 || Implemented this. Note, this is applicable only for
2319 || the first ISIR getting imported. If an ISIR is already
2320 || imported and a new ISIR comes in with the above
2321 || scenario then a Notification event is raised.
2322 || (reverse chronological order - newest change first)
2323 */
2324
2325
2326 CURSOR cur_chk_email_addr (cp_person_id hz_parties.party_id%TYPE)
2327 IS
2328 SELECT 'Y' is_email_exists, email_address
2329 FROM hz_parties
2330 WHERE party_id = cp_person_id
2331 AND email_address IS NOT NULL;
2332
2333 l_chk_email cur_chk_email_addr%ROWTYPE;
2334
2335
2336 CURSOR c_get_obj_version(cp_person_id hz_contact_points.owner_table_id%TYPE,
2337 cp_primary_flag hz_contact_points.primary_flag%TYPE,
2338 cp_contact_point_type hz_contact_points.contact_point_type%TYPE)
2339 IS
2340 SELECT object_version_number,
2341 contact_point_id
2342 FROM hz_contact_points
2343 WHERE owner_table_id = cp_person_id
2344 AND contact_point_type = cp_contact_point_type
2345 AND NVL(primary_flag,'X') = cp_primary_flag;
2346
2347
2348 p_contact_points_rec hz_contact_point_v2pub.contact_point_rec_type;
2349 p_email_rec hz_contact_point_v2pub.email_rec_type := NULL;
2350 p_phone_rec hz_contact_point_v2pub.phone_rec_type;
2351 l_obj_ver hz_contact_points.object_version_number%TYPE;
2352 l_contact_point_id hz_contact_points.contact_point_id%TYPE := NULL;
2353 l_obj_version hz_contact_points.object_version_number%TYPE;
2354 l_return_status VARCHAR2(25);
2355 l_msg_count NUMBER;
2356 l_msg_data VARCHAR2(4000);
2357
2358
2359 BEGIN
2360 SAVEPOINT email_SP1;
2361
2362 log_debug_message(' Beginning create/update email address. Person ID : ' || p_person_id);
2363 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2364 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_updt_email_address.debug','Beginning create_updt_email_address for person_id : ' || p_person_id);
2365 END IF;
2366
2367 -- check whether email already exists for the person
2368 OPEN cur_chk_email_addr(p_person_id);
2369 FETCH cur_chk_email_addr INTO l_chk_email;
2370 CLOSE cur_chk_email_addr;
2371
2372 -- initialize rec variables
2373 p_contact_points_rec.contact_point_type := 'EMAIL';
2374 p_contact_points_rec.owner_table_name := 'HZ_PARTIES';
2375 p_contact_points_rec.owner_table_id := p_person_id;
2376 p_contact_points_rec.content_source_type := 'USER_ENTERED';
2377 p_contact_points_rec.created_by_module := 'IGF';
2378 p_email_rec.email_format := 'MAILHTML';
2379 p_email_rec.email_address := g_isir_intrface_rec.s_email_address_txt;
2380
2381 IF l_chk_email.is_email_exists = 'Y' THEN
2382 -- Email already exists, so don't insert email again.
2383
2384 IF UPPER(l_chk_email.email_address) <> UPPER(g_isir_intrface_rec.s_email_address_txt) THEN
2385 -- Email in ISIR is different from that in the Person record. Log the email id
2386 fnd_message.set_name('IGF','IGF_AP_ISIR_EMAIL_NTFND');
2387 fnd_message.set_token('EMAIL_ID', g_isir_intrface_rec.s_email_address_txt);
2388 fnd_file.put_line(fnd_file.log, fnd_message.get);
2389 END IF;
2390
2391 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2392 fnd_log.string(fnd_log.level_statement,
2393 'igf.plsql.igf_ap_matching_process_pkg.create_updt_email_address.debug',
2394 'Person id ' ||p_person_id|| ' already has email. Not considering email address in ISIR');
2395 END IF;
2396 ELSE
2397 -- Email does not exist. Hence insert a new e-mail address as Primary
2398 p_contact_points_rec.primary_flag := 'Y';
2399
2400 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2401 fnd_log.string(fnd_log.level_statement,
2402 'igf.plsql.igf_ap_matching_process_pkg.create_updt_email_address.debug',
2403 'Person id ' ||p_person_id|| ' does not have email. Inserting email address into Person record from ISIR');
2404 END IF;
2405
2406 -- call the API to insert Email Address
2407 HZ_CONTACT_POINT_V2PUB.create_contact_point(
2408 p_init_msg_list => FND_API.G_FALSE,
2409 p_contact_point_rec => p_contact_points_rec,
2410 p_email_rec => p_email_rec,
2411 p_phone_rec => p_phone_rec,
2412 x_return_status => l_return_status,
2413 x_msg_count => l_msg_count,
2414 x_msg_data => l_msg_data,
2415 x_contact_point_id => l_contact_point_id
2416 );
2417 END IF;
2418
2419 RAM_I_HZ := RAM_I_HZ + 1;
2420 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2421 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_updt_email_address.debug','Email Creation resulted in Status : ' || l_return_status || ', Person ID: ' || p_person_id);
2422 END IF;
2423
2424 IF l_return_status IN ('E','U') THEN
2425 ROLLBACK TO email_SP1;
2426 RETURN;
2427 END IF;
2428
2429 EXCEPTION
2430 WHEN OTHERS THEN
2431 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2432 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.create_updt_email_address.exception','The exception is : ' || SQLERRM );
2433 END IF;
2434 ROLLBACK TO email_SP1;
2435
2436 fnd_file.put_line(FND_FILE.LOG ,l_msg_data||fnd_global.newline ||'STATUS:'||l_return_status);
2437 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
2438 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.create_updt_email_address');
2439 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
2440 igs_ge_msg_stack.add;
2441 END create_updt_email_address;
2442
2443 PROCEDURE update_person_info (pn_isir_id igf_ap_isir_matched.isir_id%TYPE)
2444 IS
2445 /*
2446 || Created By : rgangara
2447 || Created On : 17-AUG-2004
2448 || Purpose : To identify changes to Person Demographic data by comparing OSS Person data with incoming ISIR data.
2449 || This would only be invoked when the Incoming ISIR Transaction No. is > Existing Max transaction No.
2450 || NOTE: This procedure does not change any existing demographic data but only sends a WF Notification.
2451 || Known limitations, enhancements or remarks :
2452 || Change History :
2453 || Who When What
2454 || ridas 14-Feb-2006 Bug #5021084. Added SYSDATE condition in cursor ALT_PERSON_ID_CUR.
2455 || museshad 07-Oct-2005 Bug 4291874.
2456 || If the Person does not have email in hzparties
2457 || and if the ISIR has an email, then update the
2458 || Person record with the email. Note, a change
2459 || notification event is NOT raised for this.
2460 || (reverse chronological order - newest change first)
2461 */
2462
2463 CURSOR isir_cur (cp_isir_id igf_ap_isir_matched.isir_id%TYPE) IS
2464 SELECT ssn_name_change_type,
2465 first_name,
2466 last_name,
2467 current_ssn_txt,
2468 s_email_address_txt,
2469 perm_mail_address_txt,
2470 perm_city_txt,
2471 perm_state_txt,
2472 perm_zip_cd,
2473 birth_date,
2474 ss_r_u_male_flag
2475 FROM igf_ap_isir_ints
2476 WHERE si_id = cp_isir_id;
2477
2478 isir_rec isir_cur%ROWTYPE;
2479
2480
2481 CURSOR person_cur (ln_person_id igf_ap_fa_base_rec.person_id%TYPE) IS
2482 SELECT person_number,
2483 api_person_id,
2484 birth_dt,
2485 sex
2486 FROM igs_pe_person
2487 WHERE person_id = ln_person_id;
2488
2489 person_rec person_cur%ROWTYPE;
2490
2491 CURSOR hzparties_cur (ln_person_id igf_ap_fa_base_rec.person_id%TYPE) IS
2492 SELECT person_first_name,
2493 person_last_name,
2494 address1,
2495 city,
2496 postal_code,
2497 state,
2498 email_address
2499 FROM hz_parties
2500 WHERE party_id = ln_person_id;
2501
2502 hzparties_rec hzparties_cur%ROWTYPE;
2503
2504
2505
2506 CURSOR alt_person_id_cur (ln_api_person_id igs_pe_alt_pers_id.api_person_id%TYPE,
2507 ln_person_id igf_ap_fa_base_rec.person_id%TYPE) IS
2508 SELECT rowid row_id,
2509 altp.*
2510 FROM igs_pe_alt_pers_id altp
2511 WHERE altp.pe_person_id = ln_person_id
2512 AND altp.api_person_id = ln_api_person_id
2513 AND SYSDATE BETWEEN altp.start_dt and NVL(altp.end_dt, SYSDATE);
2514
2515 CURSOR person_id_type_cur ( cp_pers_id_type VARCHAR2 ) IS
2516 SELECT person_id_type
2517 FROM igs_pe_person_id_typ
2518 WHERE s_person_id_type = cp_pers_id_type ;
2519
2520 l_pers_id_type igs_pe_person_id_typ.person_id_type%TYPE;
2521
2522
2523 CURSOR cur_lkups(cp_lkup_type VARCHAR2, cp_lkup_cd VARCHAR2) IS
2524 SELECT tag
2525 FROM igf_lookups_view
2526 WHERE lookup_type = cp_lkup_type
2527 AND lookup_code = cp_lkup_cd
2528 AND enabled_flag = 'Y';
2529
2530
2531 ln_person_number hz_parties.party_number%TYPE;
2532 ln_person_id igf_ap_fa_base_rec.person_id%TYPE;
2533 lv_person_id_type igs_pe_person_id_typ.person_id_type%TYPE;
2534 alt_person_id_rec alt_person_id_cur%ROWTYPE;
2535 ln_msg_count NUMBER;
2536 lv_msg_data VARCHAR2(2000);
2537 lv_return_status VARCHAR2(1);
2538 lv_row_id VARCHAR2(30);
2539 ld_end_date DATE;
2540 lv_sex igf_lookups_view.lookup_code%TYPE;
2541 lv_oss_sex_val VARCHAR2(30);
2542 l_demo_data_changed VARCHAR2(1);
2543 BEGIN
2544
2545 log_debug_message(' Beginning Person Update info Proc. Person ID : ' || g_person_id);
2546
2547 IF g_called_from_process THEN
2548
2549 -- Internal flag set to prevent requerying the ISIR interface record
2550 isir_rec := NULL;
2551 isir_rec.ssn_name_change_type := g_isir_intrface_rec.ssn_name_change_type ;
2552 isir_rec.first_name := g_isir_intrface_rec.first_name ;
2553 isir_rec.last_name := g_isir_intrface_rec.last_name ;
2554 isir_rec.current_ssn_txt := g_isir_intrface_rec.current_ssn_txt ;
2555 isir_rec.s_email_address_txt := g_isir_intrface_rec.s_email_address_txt;
2556 isir_rec.ss_r_u_male_flag := g_isir_intrface_rec.ss_r_u_male_flag;
2557 isir_rec.perm_mail_address_txt:= g_isir_intrface_rec.perm_mail_address_txt;
2558 isir_rec.perm_city_txt := g_isir_intrface_rec.perm_city_txt;
2559 isir_rec.perm_state_txt := g_isir_intrface_rec.perm_state_txt;
2560 isir_rec.perm_zip_cd := g_isir_intrface_rec.perm_zip_cd;
2561 isir_rec.birth_date := g_isir_intrface_rec.birth_date;
2562
2563 ELSE
2564 isir_rec := NULL;
2565 OPEN isir_cur ( pn_isir_id);
2566 FETCH isir_cur INTO isir_rec;
2567 CLOSE isir_cur;
2568 END IF;
2569
2570 ln_person_id := g_person_id ;
2571
2572 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2573 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.person_update_info.debug','Checking for any person data changes for person : ' || ln_person_id);
2574 END IF;
2575
2576
2577 -- get person details from OSS
2578 OPEN hzparties_cur(ln_person_id);
2579 FETCH hzparties_cur INTO hzparties_rec;
2580 CLOSE hzparties_cur;
2581
2582 -- get remaining person details from OSS
2583 OPEN person_cur(ln_person_id);
2584 FETCH person_cur INTO person_rec;
2585 CLOSE person_cur;
2586
2587 -- get the eqvivalent OSS SEX value from Lookups
2588 OPEN cur_lkups('IGF_AP_ISIR_GENDER', isir_rec.ss_r_u_male_flag);
2589 FETCH cur_lkups INTO lv_oss_sex_val;
2590
2591 IF cur_lkups%NOTFOUND THEN
2592 lv_oss_sex_val := 'UNSPECIFIED' ;
2593 END IF;
2594 CLOSE cur_lkups;
2595 log_debug_message(' Gender Value ' || lv_oss_sex_val);
2596
2597 -- get SSN DETAILS
2598 l_pers_id_type := 'SSN' ;
2599 -- validate SSN alt person id type
2600 OPEN person_id_type_cur (l_pers_id_type) ;
2601 FETCH person_id_type_cur INTO lv_person_id_type;
2602
2603 IF person_id_type_cur%NOTFOUND THEN
2604 fnd_message.set_name ('IGF','IGF_AP_PER_ID_NOT_SET');
2605 fnd_file.put_line ( FND_FILE.LOG, fnd_message.get);
2606 END IF;
2607 CLOSE person_id_type_cur;
2608
2609
2610 FOR alt_person_id_rec IN alt_person_id_cur (person_rec.api_person_id, ln_person_id)
2611 LOOP
2612
2613 log_debug_message(' End Date for Alternate Person ID fetched by alt_person_id_cur : ' || TO_CHAR(alt_person_id_rec.end_dt));
2614 -- check whether the alt pers id is active
2615 IF SYSDATE > alt_person_id_rec.end_dt THEN
2616 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2617 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.person_update_info.debug','SSN Type Alternate Person ID record for the person is already End Dated. SSN No.: ' || person_rec.api_person_id);
2618 END IF;
2619
2620 EXIT; --
2621 END IF;
2622
2623 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2624 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.person_update_info.debug','Active Alternate Person ID record found for the person. SSN No.:' || person_rec.api_person_id);
2625 END IF;
2626 END LOOP;
2627
2628 -- museshad (Bug 4291874)
2629 IF hzparties_rec.email_address IS NULL THEN
2630 create_updt_email_address(p_person_id => ln_person_id);
2631 hzparties_rec.email_address := isir_rec.s_email_address_txt;
2632 END IF;
2633 -- museshad (Bug 4291874)
2634
2635 -- NOW compare OSS values with the new ISIR values and determine whether any data has changed.
2636 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2637 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.person_update_info.debug','Comparing OSS data with ISIR data to identify changes to demographic data');
2638 END IF;
2639
2640 l_demo_data_changed := 'N'; -- initialize
2641
2642 IF NVL(isir_rec.current_ssn_txt, '*') <> NVL(person_rec.api_person_id, '~') THEN
2643 l_demo_data_changed := 'Y';
2644 END IF;
2645
2646 IF UPPER(lv_oss_sex_val) <> NVL(UPPER(person_rec.sex), '*') THEN
2647 -- sex value derived using lookups.
2648 l_demo_data_changed := 'Y';
2649 END IF;
2650
2651 IF NVL(isir_rec.birth_date, SYSDATE) <> NVL(person_rec.birth_dt, SYSDATE-1) THEN
2652 l_demo_data_changed := 'Y';
2653 END IF;
2654
2655
2656 IF NVL(isir_rec.first_name, '*') <> NVL(hzparties_rec.person_first_name, '~') THEN
2657 l_demo_data_changed := 'Y';
2658 END IF;
2659
2660
2661 IF NVL(isir_rec.last_name, '*') <> NVL(hzparties_rec.person_last_name, '~') THEN
2662 l_demo_data_changed := 'Y';
2663 END IF;
2664
2665
2666 IF NVL(isir_rec.perm_mail_address_txt, '*') <> NVL(hzparties_rec.address1, '~') THEN
2667 l_demo_data_changed := 'Y';
2668 END IF;
2669
2670
2671 IF NVL(isir_rec.perm_city_txt, '*') <> NVL(hzparties_rec.city, '~') THEN
2672 l_demo_data_changed := 'Y';
2673 END IF;
2674
2675
2676 IF NVL(isir_rec.perm_zip_cd, '*') <> NVL(hzparties_rec.postal_code, '~') THEN
2677 l_demo_data_changed := 'Y';
2678 END IF;
2679
2680
2681 IF NVL(isir_rec.perm_state_txt, '*') <> NVL(hzparties_rec.state, '~') THEN
2682 l_demo_data_changed := 'Y';
2683 END IF;
2684
2685 IF NVL(isir_rec.s_email_address_txt, '*') <> NVL(hzparties_rec.email_address, '~') THEN
2686 l_demo_data_changed := 'Y';
2687 END IF;
2688
2689
2690 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2691 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.person_update_info.debug','Person Demographic data changed: ' || l_demo_data_changed);
2692 END IF;
2693 log_debug_message('Person Demographic data changed flag : ' || l_demo_data_changed);
2694
2695
2696 IF l_demo_data_changed = 'Y' THEN
2697
2698 -- raise notification
2699 raise_demographic_chng_event; -- call the procedure to raise the event
2700
2701 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2702 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.person_update_info.debug','Person Demographic data changed and hence send notification: ');
2703 END IF;
2704 END IF;
2705 log_debug_message('Completed update_person_info Proc. Person data changed ? : ' || l_demo_data_changed);
2706
2707 EXCEPTION
2708 WHEN others THEN
2709 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2710 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.update_person_info.exception','The exception is : ' || SQLERRM );
2711 END IF;
2712
2713 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
2714 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.update_person_info');
2715 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
2716 igs_ge_msg_stack.add;
2717 app_exception.raise_exception;
2718 END update_person_info;
2719
2720
2721 PROCEDURE validate_correction_school(p_payment_isir OUT NOCOPY VARCHAR2)
2722 IS
2723 /*
2724 || Created By : rgangara
2725 || Created On : 24-AUG-2004
2726 || Purpose : Called when Pell Match Type is 'N' and is a CORRECTION isir i.e. processed rec type is H
2727 || This procedure validates School code or raises a WORKFLOW notification if not valid.
2728 || Flags the OUT parameters based on the outcome of the validation.
2729 ||
2730 || Known limitations, enhancements or remarks :
2731 || Change History :
2732 || Who When What
2733 ||
2734 || (reverse chronological order - newest change first)
2735 */
2736
2737
2738 -- cursor to check whether the school code is valid or not
2739 CURSOR c_valid_fed_school(cp_fed_school igf_sl_school_codes_v.alternate_identifier%TYPE,
2740 cp_system_id_type igf_sl_school_codes_v.system_id_type%TYPE)
2741 IS
2742 SELECT 'X'
2743 FROM igf_sl_school_codes_v
2744 WHERE system_id_type= cp_system_id_type
2745 AND alternate_identifier = cp_fed_school;
2746
2747
2748 CURSOR cur_per_det (p_party_id NUMBER, p_party_type VARCHAR2) IS
2749 SELECT p.party_number person_number,
2750 p.person_first_name given_names
2751 FROM hz_parties p
2752 WHERE p.party_id = p_party_id
2753 AND p.party_type = p_party_type;
2754
2755
2756 l_cur_per_rec cur_per_det%ROWTYPE;
2757
2758 CURSOR get_payment_isir (ln_base_id NUMBER) IS
2759 SELECT isir_id
2760 FROM igf_ap_ISIR_matched isir
2761 WHERE base_id = ln_base_id
2762 AND payment_isir = 'Y' ;
2763
2764 lv_chk_py_isir_rec get_payment_isir%ROWTYPE;
2765
2766 CURSOR check_correction_items (ln_base_id NUMBER) IS
2767 SELECT 'x'
2768 FROM igf_ap_ISIR_matched isir, igf_ap_isir_corr_all corr
2769 WHERE isir.isir_id = corr.isir_id
2770 AND isir.base_id = ln_base_id;
2771
2772 lv_chk_corrections check_correction_items%ROWTYPE;
2773
2774 lv_rowid VARCHAR2(30);
2775 l_transaction_num CHAR(13);
2776 l_ow_id NUMBER;
2777 l_message VARCHAR2(100);
2778 l_send_workflow BOOLEAN;
2779 l_college_code igf_sl_school_codes_v.alternate_identifier%TYPE;
2780 l_chk_valid VARCHAR2(1);
2781
2782 BEGIN
2783
2784 log_debug_message('Beginning validate_correction_school proc');
2785 -- initialize OUT parameters
2786 l_send_workflow := FALSE;
2787 l_college_code := NULL;
2788 p_payment_isir := 'N';
2789
2790 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2791 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','This ISIR is a Correction ISIR. Performing School validation' );
2792 END IF;
2793
2794 IF NVL(g_isir_intrface_rec.fedral_schl_type,'X') NOT IN ('1','2','3','4','5','6') THEN
2795 -- invalid.. Lot a message and send WF notification
2796 l_send_workflow := TRUE;
2797 l_message := 'IGF_AP_INVALID_ELEC_FED_SCH';
2798 ELSE
2799
2800 -- ckeck if the FEDRAL_SCHL_CODE_INDICATOR is null or not in 1 to 6 and flag accordingly.
2801 IF g_isir_intrface_rec.fedral_schl_type = '1' THEN
2802 IF g_isir_intrface_rec.first_college_cd IS NOT NULL THEN
2803 l_college_code := g_isir_intrface_rec.first_college_cd;
2804 ELSE
2805 l_send_workflow := TRUE;
2806 END IF;
2807
2808 ELSIF g_isir_intrface_rec.fedral_schl_type = '2' THEN
2809 IF g_isir_intrface_rec.second_college_cd IS NOT NULL THEN
2810 l_college_code := g_isir_intrface_rec.second_college_cd;
2811 ELSE
2812 l_send_workflow := TRUE;
2813 END IF;
2814
2815 ELSIF g_isir_intrface_rec.fedral_schl_type = '3' THEN
2816 IF g_isir_intrface_rec.third_college_cd IS NOT NULL THEN
2817 l_college_code := g_isir_intrface_rec.third_college_cd;
2818 ELSE
2819 l_send_workflow := TRUE;
2820 END IF;
2821
2822 ELSIF g_isir_intrface_rec.fedral_schl_type = '4' THEN
2823 IF g_isir_intrface_rec.fourth_college_cd IS NOT NULL THEN
2824 l_college_code := g_isir_intrface_rec.fourth_college_cd;
2825 ELSE
2826 l_send_workflow := TRUE;
2827 END IF;
2828
2829 ELSIF g_isir_intrface_rec.fedral_schl_type = '5' THEN
2830 IF g_isir_intrface_rec.fifth_college_cd IS NOT NULL THEN
2831 l_college_code := g_isir_intrface_rec.fifth_college_cd;
2832 ELSE
2833 l_send_workflow := TRUE;
2834 END IF;
2835
2836 ELSIF g_isir_intrface_rec.fedral_schl_type = '6' THEN
2837 IF g_isir_intrface_rec.sixth_college_cd IS NOT NULL THEN
2838 l_college_code := g_isir_intrface_rec.sixth_college_cd;
2839 ELSE
2840 l_send_workflow := TRUE;
2841 END IF;
2842 END IF;
2843 log_debug_message('Correction School code is ' || l_college_code);
2844
2845 IF l_college_code IS NOT NULL THEN
2846
2847 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2848 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Correction School code is : ' || l_college_code);
2849 END IF;
2850
2851 -- open the cursor to see if the l_school_code obtained is valid or not
2852 l_chk_valid := NULL;
2853 OPEN c_valid_fed_school(l_college_code,'FED_SCH_CD');
2854 FETCH c_valid_fed_school INTO l_chk_valid;
2855 CLOSE c_valid_fed_school;
2856
2857 IF l_chk_valid IS NULL THEN
2858 -- Check if the student has at least 1 Payment ISIR
2859 -- If he does not then the School Code validation does not matter.
2860 lv_chk_py_isir_rec := NULL;
2861
2862 OPEN get_payment_isir(g_base_id);
2863 FETCH get_payment_isir INTO lv_chk_py_isir_rec ;
2864 CLOSE get_payment_isir;
2865
2866 IF lv_chk_py_isir_rec.isir_id IS NOT NULL THEN
2867 l_send_workflow := TRUE;
2868 l_message := 'IGF_AP_FED_NOT_IN_SYSTEM';
2869 ELSE
2870 -- no valid isir present, so check for correction items
2871 -- if there are no correction items, mark the current isir as payment isir, else raise wf event.
2872 -- refer to bug 4532047
2873 OPEN check_correction_items(g_base_id);
2874 FETCH check_correction_items INTO lv_chk_corrections ;
2875 IF check_correction_items%FOUND THEN
2876 l_send_workflow := TRUE;
2877 l_message := 'IGF_AP_FED_NOT_IN_SYSTEM';
2878 END IF;
2879 CLOSE check_correction_items;
2880
2881 END IF;
2882 END IF; --l_chk_valid
2883
2884
2885 -- WF is raised only when validation fails. Hence if it is FALSE then the current isir can be a payment ISIR.
2886 IF l_send_workflow = FALSE THEN
2887 p_payment_isir := 'Y' ; -- set the OUT parameter to Y
2888 END IF;
2889
2890 END IF; -- l_college_code
2891 END IF; -- g_isir_intrface_rec.fedral_schl_type
2892
2893
2894 -- Send Workflow as Correction Record not originated from the context school
2895 IF l_send_workflow THEN
2896 l_message := NVL(l_message, 'IGF_AP_FEDSCH_NOT_CONTEXT');
2897 log_debug_message(' School Validation Worflow required');
2898
2899 -- log message in log file
2900 IF l_message = 'IGF_AP_FEDSCH_NOT_CONTEXT' THEN
2901 -- get person number
2902 OPEN cur_per_det(g_person_id, 'PERSON') ;
2903 FETCH cur_per_det into l_cur_per_rec;
2904 CLOSE cur_per_det;
2905
2906 fnd_message.set_name('IGF','IGF_AP_FEDSCH_NOT_SAME');
2907 fnd_message.set_token('PERSON_NUM', l_cur_per_rec.person_number);
2908
2909 ELSIF l_message = 'IGF_AP_INVALID_ELEC_FED_SCH' THEN
2910 fnd_message.set_name('IGF','IGF_AP_INVALID_ELEC_FED_SCH');
2911
2912 ELSE
2913 fnd_message.set_name('IGF','IGF_AP_FED_NOT_IN_SYSTEM');
2914 fnd_message.set_token('FEDCODE',l_college_code);
2915 END IF;
2916
2917 fnd_file.put_line(fnd_file.log, fnd_message.get);
2918
2919 l_transaction_num := g_isir_intrface_rec.original_ssn_txt||g_isir_intrface_rec.orig_name_id_txt||g_isir_intrface_rec.transaction_num_txt;
2920
2921 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
2922 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Sending School Code validation workflow notification');
2923 END IF;
2924
2925 lv_rowid := NULL;
2926 igf_ap_outcorr_wf_pkg.insert_row (
2927 x_rowid => lv_rowid,
2928 x_person_number => l_cur_per_rec.person_number,
2929 x_given_names => l_cur_per_rec.given_names,
2930 x_transaction_number => l_transaction_num,
2931 x_item_key => 'NEW',
2932 x_ow_id => l_ow_id,
2933 x_mode => 'R');
2934
2935 RAM_U_O := RAM_U_O + 1;
2936 log_debug_message(' Worflow Raised from validate_correction_school proc ');
2937 END IF;
2938 log_debug_message('Successfully completed validate_correction_school proc');
2939
2940 EXCEPTION
2941 WHEN others THEN
2942 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2943 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.exception','The exception is : ' || SQLERRM );
2944 END IF;
2945
2946 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
2947 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.validate_correction_school');
2948 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
2949 igs_ge_msg_stack.add;
2950 app_exception.raise_exception;
2951 END validate_correction_school;
2952
2953
2954 PROCEDURE delete_person_match_rec(p_si_id igf_ap_person_match_all.si_id%TYPE,
2955 p_apm_id igf_ap_person_match_all.apm_id%TYPE)
2956 IS
2957 /*
2958 || Created By : rgangara
2959 || Created On : 06-AUG-2004
2960 || Purpose : Deletes records from Match details and then from Person match tables.
2961 || This proc can be called by passing either SI_ID or APM_ID. If apm_id is NULL then process on SI_ID.
2962 || Known limitations, enhancements or remarks :
2963 || Change History :
2964 || Who When What
2965 || (reverse chronological order - newest change first)
2966 */
2967
2968 -- to get the apm ID based on si_id
2969 CURSOR cur_prsn_match_siid(cp_si_id NUMBER) IS
2970 SELECT pm.apm_id
2971 FROM igf_ap_person_match pm
2972 WHERE pm.si_id = cp_si_id;
2973
2974 -- to get the row_id based on apm_id
2975 CURSOR cur_prsn_match_apm(cp_apm_id NUMBER) IS
2976 SELECT pm.row_id, pm.apm_id
2977 FROM igf_ap_person_match pm
2978 WHERE pm.apm_id = cp_apm_id ;
2979
2980
2981 CURSOR cur_match_dtls(cp_apm_id igf_ap_person_match_all.apm_id%TYPE) IS
2982 SELECT amd.amd_id
2983 FROM igf_ap_match_details amd
2984 WHERE amd.apm_id = cp_apm_id;
2985
2986 l_apm_id igf_ap_person_match_all.apm_id%TYPE;
2987 l_cnt_match_dtls NUMBER;
2988
2989 BEGIN
2990
2991 log_debug_message(' Beginning delete_person_match_rec Proc for SI_ID: ' || p_si_id || '. APM_ID : ' || p_apm_id);
2992
2993 -- Get the apm_id based on SI_ID if parameter p_apm_id is NULL.
2994 IF p_apm_id IS NULL THEN
2995 -- get the apm_id based on si_id.
2996 OPEN cur_prsn_match_siid(p_si_id);
2997 FETCH cur_prsn_match_siid INTO l_apm_id;
2998 CLOSE cur_prsn_match_siid;
2999 ELSE
3000 l_apm_id := p_apm_id;
3001 END IF;
3002
3003 -- There can only be one record with a given si_id but FOR LOOP is used for code clarity
3004 -- if person match rec exists. delete it after deleting corresp match details recs.
3005 FOR prsn_match_rec IN cur_prsn_match_apm(l_apm_id)
3006 LOOP
3007
3008 -- fetch records from match details table for the apm id into temp table.
3009 OPEN cur_match_dtls(l_apm_id);
3010 FETCH cur_match_dtls BULK COLLECT INTO g_amd_id_tab;
3011 CLOSE cur_match_dtls ;
3012
3013 l_cnt_match_dtls := g_amd_id_tab.COUNT;
3014
3015 IF l_cnt_match_dtls > 0 THEN
3016 -- i.e. corresp apm id recs exist in match details.
3017 -- delete them using using bulk delete option
3018 FORALL k IN 1..l_cnt_match_dtls
3019 DELETE FROM igf_ap_match_details
3020 WHERE amd_id = g_amd_id_tab(k);
3021
3022 log_debug_message(' Deleted Match Details records for APM ID : ' || l_apm_id);
3023 RAM_D_MD := RAM_D_MD + 1;
3024 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3025 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.delete_person_match_rec.debug','Deleted Match Details records for APM ID: ' || l_apm_id);
3026 END IF;
3027 END IF; -- l_cnt_match_dtls
3028
3029
3030 -- now call tbh of person match table to delete the record
3031 igf_ap_person_match_pkg.delete_row(prsn_match_rec.row_id);
3032 RAM_D_PM := RAM_D_PM + 1;
3033
3034 log_debug_message(' Deleted Person Match record for APM ID : ' || l_apm_id);
3035 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3036 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.delete_person_match_rec.debug','Deleted Person Match record. APM ID: ' || prsn_match_rec.apm_id);
3037 END IF;
3038
3039 END LOOP;
3040
3041 log_debug_message(' Successfully deleted Person match and Match details data for APM ID: ' || l_apm_id);
3042
3043 EXCEPTION
3044 WHEN OTHERS THEN
3045 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3046 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.delete_person_match_rec.exception','The exception is : ' || SQLERRM );
3047 END IF;
3048
3049 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
3050 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.delete_person_match_rec' );
3051 igs_ge_msg_stack.add;
3052 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
3053 app_exception.raise_exception;
3054 END delete_person_match_rec;
3055
3056
3057 PROCEDURE create_admission_rec(
3058 p_person_id igf_ap_fa_base_rec_all.person_id%TYPE,
3059 p_batch_year igf_ap_batch_aw_map_all.batch_year%TYPE
3060 )
3061 IS
3062 /*
3063 || Created By : rasingh
3064 || Created On : 14-JUN-2001
3065 || Purpose : Creates a enquiry record and instance record,
3066 || applicant and student else create its inquiry record and instance record.
3067 || Known limitations, enhancements or remarks :
3068 || Change History :
3069 || Who When What
3070 || (reverse chronological order - newest change first)
3071 */
3072
3073 CURSOR cur_adm_cal_conf IS
3074 SELECT inq_cal_type
3075 FROM igs_ad_cal_conf;
3076
3077 CURSOR cur_person_type ( cp_sys_type VARCHAR2) IS
3078 SELECT person_type_code
3079 FROM igs_pe_person_types
3080 WHERE system_type = cp_sys_type
3081 AND closed_ind = 'N' ;
3082
3083 l_sys_type VARCHAR2(30) ;
3084 l_person_type igs_pe_person_types.person_type_code%TYPE;
3085 l_inq_cal_type igs_ad_cal_conf.inq_cal_type%TYPE;
3086 l_rowid ROWID;
3087 l_adm_seq igs_ca_inst.sequence_number%TYPE;
3088 l_acad_cal_type igs_ca_type.cal_type%TYPE;
3089 l_acad_seq igs_ca_inst.sequence_number%TYPE;
3090 ln_typ_id igs_pe_typ_instances_all.type_instance_id%TYPE;
3091 l_adm_alternate_code igs_ca_inst.alternate_code%TYPE;
3092 l_message VARCHAR2(255);
3093 lv_return_status VARCHAR2(255);
3094 lv_msg_data VARCHAR2(2000);
3095 lv_msg_count NUMBER;
3096 l_igr_sql_stmt VARCHAR2(5000);
3097
3098 BEGIN
3099
3100 log_debug_message(' Beginning Create Admission rec proc');
3101 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3102 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.debug','Beginning of Create Admission Record. Person ID: ' || p_person_id || ',Batch Year:' || p_batch_year);
3103 END IF;
3104
3105 -- Check if the parameter to create inquiry record is set to Y.
3106 IF (g_create_inquiry = 'Y') THEN
3107 OPEN cur_adm_cal_conf;
3108 FETCH cur_adm_cal_conf INTO l_inq_cal_type;
3109
3110 IF cur_adm_cal_conf%NOTFOUND THEN
3111 CLOSE cur_adm_cal_conf;
3112
3113 fnd_message.set_name('IGF','IGF_AP_NO_DEF_ADM_CAL');
3114 fnd_file.put_line(fnd_file.log,fnd_message.get );
3115 app_exception.raise_exception;
3116 END IF;
3117 CLOSE cur_adm_cal_conf;
3118
3119 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3120 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.debug','Before Calling igs_ad_gen_008.get_acad_cal');
3121 END IF;
3122
3123 igs_ad_gen_008.get_acad_cal(
3124 p_adm_cal_type => l_inq_cal_type,
3125 p_adm_seq => l_adm_seq,
3126 p_acad_cal_type => l_acad_cal_type,
3127 p_acad_seq => l_acad_seq,
3128 p_adm_alternate_code => l_adm_alternate_code,
3129 p_message => l_message
3130 );
3131
3132 IF l_message IS NOT NULL THEN
3133 fnd_message.set_name('IGS', 'IGS_AD_INQ_ADMCAL_SEQ_NOTDFN');
3134 fnd_message.set_token('CAL_TYPE', l_inq_cal_type);
3135 fnd_file.put_line(fnd_file.log,fnd_message.get);
3136 RETURN;
3137 END IF;
3138
3139 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3140 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.debug','Before Inserting into igr_inquiry');
3141 END IF;
3142
3143 IF fnd_profile.value('IGS_RECRUITING_ENABLED') = 'Y' THEN
3144
3145 l_igr_sql_stmt := '
3146 DECLARE
3147 l_enquiry_status VARCHAR2(30) := ''OSS_REGISTERED'';
3148 x_rowid VARCHAR2(50);
3149 l_enquiry_appl_number igr_i_appl_all.enquiry_appl_number%TYPE;
3150 l_sales_lead_id igr_i_appl_all.sales_lead_id%TYPE;
3151 BEGIN
3152 x_rowid := NULL;
3153 igr_inquiry_pkg.insert_row(
3154 X_MODE => ''R'',
3155 X_ROWID => x_rowid,
3156 X_PERSON_ID => :1,
3157 X_ENQUIRY_APPL_NUMBER => l_enquiry_appl_number,
3158 X_SALES_LEAD_ID => l_sales_lead_id,
3159 X_ACAD_CAL_TYPE => :2,
3160 X_ACAD_CI_SEQUENCE_NUMBER => :3,
3161 X_ADM_CAL_TYPE => :4,
3162 X_ADM_CI_SEQUENCE_NUMBER => :5,
3163 X_s_ENQUIRY_STATUS => l_enquiry_status,
3164 X_ENQUIRY_DT => TRUNC(SYSDATE),
3165 X_INQUIRY_METHOD_CODE => :6,
3166 X_REGISTERING_PERSON_ID => NULL,
3167 X_OVERRIDE_PROCESS_IND => ''N'',
3168 X_INDICATED_MAILING_DT => NULL,
3169 X_LAST_PROCESS_DT => NULL,
3170 X_COMMENTS => NULL,
3171 X_ORG_ID => igs_ge_gen_003.get_org_id,
3172 X_INQ_ENTRY_LEVEL_ID => NULL,
3173 X_EDU_GOAL_ID => NULL,
3174 X_PARTY_ID => NULL,
3175 X_HOW_KNOWUS_ID => NULL,
3176 X_WHO_INFLUENCED_ID => NULL,
3177 X_SOURCE_PROMOTION_ID => NULL,
3178 X_PERSON_TYPE_CODE => NULL,
3179 X_FUNNEL_STATUS => NULL,
3180 X_ATTRIBUTE_CATEGORY => NULL,
3181 X_ATTRIBUTE1 => NULL,
3182 X_ATTRIBUTE2 => NULL,
3183 X_ATTRIBUTE3 => NULL,
3184 X_ATTRIBUTE4 => NULL,
3185 X_ATTRIBUTE5 => NULL,
3186 X_ATTRIBUTE6 => NULL,
3187 X_ATTRIBUTE7 => NULL,
3188 X_ATTRIBUTE8 => NULL,
3189 X_ATTRIBUTE9 => NULL,
3190 X_ATTRIBUTE10 => NULL,
3191 X_ATTRIBUTE11 => NULL,
3192 X_ATTRIBUTE12 => NULL,
3193 X_ATTRIBUTE13 => NULL,
3194 X_ATTRIBUTE14 => NULL,
3195 X_ATTRIBUTE15 => NULL,
3196 X_ATTRIBUTE16 => NULL,
3197 X_ATTRIBUTE17 => NULL,
3198 X_ATTRIBUTE18 => NULL,
3199 X_ATTRIBUTE19 => NULL,
3200 X_ATTRIBUTE20 => NULL,
3201 x_ret_status => :7,
3202 x_msg_data => :8,
3203 x_msg_count => :9,
3204 x_action => ''Import'',
3205 x_enabled_flag => ''Y'',
3206 x_pkg_reduct_ind => ''Y''
3207 );
3208 END;';
3209
3210 EXECUTE IMMEDIATE l_igr_sql_stmt
3211 USING p_person_id, l_acad_cal_type, l_acad_seq, l_inq_cal_type, l_adm_seq,
3212 g_adm_source_type, OUT lv_return_status, OUT lv_msg_data, OUT lv_msg_count;
3213 ELSE
3214 FND_MESSAGE.Set_Name('IGS', 'IGS_AD_INQ_NOT_CRT');
3215 FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
3216 END IF; -- IGS Recruiting User
3217
3218 log_debug_message('Created Admission Inquiry record. Status : ' || lv_return_status);
3219 RAM_I_HZ := RAM_I_HZ + 1;
3220 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3221 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.debug','Inquiry creation returned status: ' || lv_return_status);
3222 END IF;
3223
3224 IF lv_return_status IN ('E','U') THEN
3225
3226 FOR i IN 1..lv_msg_count LOOP
3227 fnd_file.put_line(fnd_file.log,fnd_msg_pub.get(p_encoded => fnd_api.g_false));
3228 END LOOP;
3229
3230 ELSE
3231 fnd_message.set_name('IGF','IGF_AP_ISIR_ADM_REC');
3232 fnd_file.put_line(fnd_file.log,fnd_message.get);
3233 END IF;
3234
3235 END IF; -- g_create_inquiry
3236
3237 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3238 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.debug','After Create Inquiry. Before inserting into igs_pe_typ_instances_pkg');
3239 END IF;
3240
3241
3242 l_sys_type := 'PROSPECT' ;
3243 OPEN cur_person_type ( l_sys_type ) ;
3244 FETCH cur_person_type INTO l_person_type;
3245
3246 IF cur_person_type%FOUND THEN
3247 CLOSE cur_person_type;
3248 l_rowid := NULL;
3249 igs_pe_typ_instances_pkg.insert_row(
3250 X_ROWID => l_rowid,
3251 x_PERSON_ID => p_person_id,
3252 x_COURSE_CD => NULL,
3253 x_TYPE_INSTANCE_ID => ln_typ_id,
3254 x_PERSON_TYPE_CODE => l_person_type,
3255 x_CC_VERSION_NUMBER => NULL,
3256 x_FUNNEL_STATUS => NULL,
3257 x_ADMISSION_APPL_NUMBER => NULL,
3258 x_NOMINATED_COURSE_CD => NULL,
3259 x_NCC_VERSION_NUMBER => NULL,
3260 x_SEQUENCE_NUMBER => NULL,
3261 x_START_DATE => TRUNC(SYSDATE),
3262 x_END_DATE => NULL,
3263 x_CREATE_METHOD => 'CREATE_ENQ_APPL_INSTANCE',
3264 x_ENDED_BY => NULL,
3265 x_END_METHOD => NULL,
3266 X_MODE => 'R',
3267 X_ORG_ID => igs_ge_gen_003.get_org_id
3268 );
3269
3270 RAM_I_HZ := RAM_I_HZ + 1;
3271 log_debug_message('Inserted record into igs_pe_typ_instances. ID : ' || ln_typ_id);
3272
3273 ELSE
3274 CLOSE cur_person_type;
3275 fnd_message.set_name('IGF','IGF_AP_NO_PERSON_TYPE');
3276 fnd_file.put_line(fnd_file.log,fnd_message.get);
3277 END IF;
3278
3279 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3280 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.debug','Completed create_admission_rec procedure successfully');
3281 END IF;
3282
3283 EXCEPTION
3284 WHEN others THEN
3285 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3286 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.create_admission_rec.exception','The exception is : ' || SQLERRM );
3287 END IF;
3288
3289 IF cur_adm_cal_conf%ISOPEN THEN
3290 CLOSE cur_adm_cal_conf;
3291 END IF;
3292
3293 IF cur_person_type%ISOPEN THEN
3294 CLOSE cur_person_type;
3295 END IF;
3296
3297 fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
3298 fnd_message.set_token('NAME','IGF_AP_MATCHING_PROCESS_PKG.create_admission_rec');
3299 fnd_file.put_line(fnd_file.log,fnd_message.get );
3300 igs_ge_msg_stack.add;
3301 END create_admission_rec;
3302
3303
3304 PROCEDURE create_person_record(
3305 p_called_from VARCHAR2,
3306 pn_person_id OUT NOCOPY NUMBER,
3307 pv_mesg_data OUT NOCOPY VARCHAR2
3308 )
3309 IS
3310
3311 /*
3312 || Created By : rgangara
3313 || Created On : 24-AUG-2004
3314 || Purpose : Creates person record and returns Person ID as out parameter.
3315 || Known limitations, enhancements or remarks :
3316 || Change History :
3317 || Who When What
3318 || skpandey 21-SEP-2005 Bug: 3663505
3319 || Description: Added ATTRIBUTES 21 TO 24 TO STORE ADDITIONAL INFORMATION
3320 || (reverse chronological order - newest change first)
3321 */
3322
3323 CURSOR person_id_type_cur ( cp_pers_id_type VARCHAR2 ) IS
3324 SELECT person_id_type
3325 FROM igs_pe_person_id_typ
3326 WHERE s_person_id_type = cp_pers_id_type ;
3327
3328 CURSOR cur_lookups (p_lkup_type igf_lookups_view.Lookup_type%TYPE,
3329 p_lkup_code igf_lookups_view.Lookup_code%TYPE) IS
3330 SELECT tag
3331 FROM igf_lookups_view
3332 WHERE lookup_type = p_lkup_type
3333 AND lookup_code = p_lkup_code
3334 AND enabled_flag = 'Y';
3335
3336
3337 l_pers_id_typ VARCHAR2(30) ;
3338 ln_person_number hz_parties.party_number%TYPE;
3339 lv_person_id_type igs_pe_person_id_typ.person_id_type%TYPE;
3340 ln_msg_count NUMBER;
3341 lv_msg_data VARCHAR2(2000);
3342 lv_return_status VARCHAR2(1);
3343 lv_row_id VARCHAR2(30);
3344 retcode NUMBER;
3345 errbuf VARCHAR2(300);
3346 lv_sex igf_lookups_view.lookup_code%TYPE;
3347 l_object_version_number NUMBER;
3348
3349 l_return_status VARCHAR2(25);
3350 l_msg_count NUMBER;
3351 l_msg_data VARCHAR2(4000);
3352
3353 BEGIN
3354
3355 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3356 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_record.debug','Beginning Person Creation.');
3357 END IF;
3358 log_debug_message(' Beginning Person Creation procedure');
3359
3360 l_pers_id_typ := 'SSN' ;
3361 OPEN person_id_type_cur ( l_pers_id_typ) ;
3362 FETCH person_id_type_cur INTO lv_person_id_type;
3363
3364 IF person_id_type_cur%NOTFOUND THEN
3365 fnd_message.set_name('IGF','IGF_AP_PER_ID_NOT_SET');
3366 pv_mesg_data := fnd_message.get;
3367
3368 IF p_called_from = 'PLSQL' THEN
3369 fnd_file.put_line(fnd_file.log, pv_mesg_data); -- log the msg in log file.
3370 END IF;
3371 CLOSE person_id_type_cur;
3372
3373 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3374 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_record.debug',pv_mesg_data);
3375 END IF;
3376
3377 RETURN;
3378 END IF;
3379 CLOSE person_id_type_cur;
3380
3381
3382 -- Create a new person by getting the details from isir_intrface table.
3383 OPEN cur_lookups('IGF_AP_ISIR_GENDER', g_isir_intrface_rec.ss_r_u_male_flag);
3384 FETCH cur_lookups INTO lv_sex;
3385
3386 IF cur_lookups%NOTFOUND THEN
3387 lv_sex := 'UNSPECIFIED' ;
3388 END IF;
3389 CLOSE cur_lookups;
3390
3391
3392 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3393 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_record.debug','Inserting Into Person table.');
3394 END IF;
3395
3396 SAVEPOINT person_SP1;
3397 lv_row_id := NULL;
3398 l_object_version_number := NULL;
3399
3400 igs_pe_person_pkg.insert_row(
3401 x_MSG_COUNT => ln_msg_count,
3402 x_MSG_DATA => lv_msg_data,
3403 x_RETURN_STATUS => lv_return_status,
3404 x_ROWID => lv_row_id,
3405 x_PERSON_ID => pn_person_id,
3406 x_PERSON_NUMBER => ln_person_number,
3407 x_SURNAME => INITCAP(g_isir_intrface_rec.last_name),
3408 x_MIDDLE_NAME => g_isir_intrface_rec.middle_initial_txt,
3409 x_GIVEN_NAMES => INITCAP(g_isir_intrface_rec.first_name),
3410 x_SEX => UPPER(lv_sex),
3411 x_TITLE => NULL,
3412 x_STAFF_MEMBER_IND => NULL,
3413 x_DECEASED_IND => NULL,
3414 x_SUFFIX => NULL,
3415 x_PRE_NAME_ADJUNCT => NULL,
3416 x_ARCHIVE_EXCLUSION_IND => NULL,
3417 x_ARCHIVE_DT => NULL,
3418 x_PURGE_EXCLUSION_IND => NULL,
3419 x_PURGE_DT => NULL,
3420 x_DECEASED_DATE => NULL,
3421 x_PROOF_OF_INS => NULL,
3422 x_PROOF_OF_IMMU => NULL,
3423 x_BIRTH_DT => TRUNC(g_isir_intrface_rec.birth_date),
3424 x_SALUTATION => NULL,
3425 x_ORACLE_USERNAME => NULL,
3426 x_PREFERRED_GIVEN_NAME => NULL, -- modified to NULL for Reg Updates 0607 (bug 5086053)
3427 x_EMAIL_ADDR => g_isir_intrface_rec.s_email_address_txt,
3428 x_LEVEL_OF_QUAL_ID => NULL,
3429 x_MILITARY_SERVICE_REG => NULL,
3430 x_VETERAN => NULL,
3431 x_hz_parties_ovn => l_object_version_number,
3432 x_ATTRIBUTE_CATEGORY => NULL,
3433 x_ATTRIBUTE1 => NULL,
3434 x_ATTRIBUTE2 => NULL,
3435 x_ATTRIBUTE3 => NULL,
3436 x_ATTRIBUTE4 => NULL,
3437 x_ATTRIBUTE5 => NULL,
3438 x_ATTRIBUTE6 => NULL,
3439 x_ATTRIBUTE7 => NULL,
3440 x_ATTRIBUTE8 => NULL,
3441 x_ATTRIBUTE9 => NULL,
3442 x_ATTRIBUTE10 => NULL,
3443 x_ATTRIBUTE11 => NULL,
3444 x_ATTRIBUTE12 => NULL,
3445 x_ATTRIBUTE13 => NULL,
3446 x_ATTRIBUTE14 => NULL,
3447 x_ATTRIBUTE15 => NULL,
3448 x_ATTRIBUTE16 => NULL,
3449 x_ATTRIBUTE17 => NULL,
3450 x_ATTRIBUTE18 => NULL,
3451 x_ATTRIBUTE19 => NULL,
3452 x_ATTRIBUTE20 => NULL,
3453 x_ATTRIBUTE21 => NULL,
3454 x_ATTRIBUTE22 => NULL,
3455 x_ATTRIBUTE23 => NULL,
3456 x_ATTRIBUTE24 => NULL,
3457 x_PERSON_ID_TYPE => lv_person_id_type,
3458 x_API_PERSON_ID => format_SSN(g_isir_intrface_rec.current_ssn_txt)
3459 );
3460
3461 RAM_I_HZ := RAM_I_HZ + 1;
3462 IF lv_return_status = 'S' THEN
3463 fnd_message.set_name('IGF','IGF_AP_ISIR_CREATE_PERSON');
3464 g_person_id := pn_person_id; -- populate into global variable.
3465 fnd_file.put_line(fnd_file.log, fnd_message.get || ' ' || igf_ap_gen.get_lookup_meaning('IGF_AW_LOOKUPS_MSG','PERSON_NUMBER') || ':' || ln_person_number);
3466
3467 ELSE -- error creating person
3468
3469 log_debug_message(' Error Creating Person. Status ' || lv_return_status || ' Msg:' || lv_msg_data);
3470 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3471 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_record.debug','Error creating person. Return Status : ' || lv_return_status || ' ' || 'Message: ' || lv_msg_data);
3472 END IF;
3473
3474 ROLLBACK TO person_SP1;
3475 pn_person_id := NULL;
3476 RETURN;
3477 END IF;
3478
3479 g_person_id := pn_person_id; -- assign to global variable.
3480
3481 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3482 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_record.debug','Person Created Successfully... ' || g_person_id);
3483 END IF;
3484
3485 EXCEPTION
3486 WHEN OTHERS THEN
3487 log_debug_message(' EXCEPTON in create_person_record proc : ' || SQLERRM);
3488 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3489 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.create_person_record.exception','The exception is : ' || SQLERRM );
3490 END IF;
3491
3492 IF fnd_msg_pub.count_msg = 1 THEN
3493 pv_mesg_data := fnd_message.get;
3494
3495 ELSIF fnd_msg_pub.count_msg > 1 THEN
3496 pv_mesg_data := SQLERRM;
3497 END IF ;
3498
3499 ROLLBACK TO person_SP1;
3500 pn_person_id := NULL;
3501 RETURN;
3502 END create_person_record;
3503
3504
3505
3506 PROCEDURE create_person_addr_record(pn_person_id NUMBER)
3507 IS
3508 /*
3509 || Created By : brajendr
3510 || Created On : 24-NOV-2000
3511 || Purpose : Create person address record after creating the person record for those who satisfies the matching process.
3512 || Known limitations, enhancements or remarks :
3513 || Change History :
3514 || Who When What
3515 || rajagupt 29-Jun-06 bug #5348743, Added check to handle lv_return_status of warning type
3516 || bkkumar 15-oct-2003 Bug 2906227
3517 || 1) Added the code to default the Address usage to the value that is present in the
3518 || IGF_AP_DEF_ADDR_USAGE profile else default it to "HOME".
3519 || (reverse chronological order - newest change first)
3520 */
3521 lv_row_id VARCHAR2(30);
3522 lv_msg_data VARCHAR2(2000);
3523 lv_return_status VARCHAR2(1);
3524 lv_location_id hz_locations.location_id%TYPE;
3525 pd_last_update_date DATE;
3526 ln_party_site_id hz_party_sites.party_site_id%TYPE;
3527
3528 l_rowid VARCHAR2(200) := NULL;
3529 l_party_site_use_id NUMBER := NULL;
3530 l_return_status VARCHAR2(200);
3531 l_msg_data VARCHAR2(200);
3532 l_last_update_date DATE;
3533 l_site_use_last_update_date DATE;
3534 l_profile_last_update_date DATE;
3535 lv_object_version_number NUMBER := NULL;
3536 l_party_site_use hz_party_site_uses.site_use_type%TYPE;
3537 l_party_site_ovn hz_party_sites.object_version_number%TYPE;
3538 l_location_ovn hz_locations.object_version_number%TYPE;
3539
3540 BEGIN
3541
3542 log_debug_message('Beginning creation of Person Address. Person ID : ' || pn_person_id);
3543 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3544 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_addr_record.debug','Beginning Address creation for Person ID: ' || pn_person_id);
3545 END IF;
3546
3547
3548 lv_row_id := NULL;
3549 ln_party_site_id := NULL;
3550
3551 igs_pe_person_addr_pkg.insert_row(
3552 P_ACTION => 'R',
3553 P_ROWID => lv_row_id,
3554 P_LOCATION_ID => lv_location_id,
3555 P_START_DT => NULL,
3556 P_END_DT => NULL,
3557 P_COUNTRY => 'US',
3558 P_ADDRESS_STYLE => NULL,
3559 P_ADDR_LINE_1 => INITCAP( g_isir_intrface_rec.perm_mail_address_txt),
3560 P_ADDR_LINE_2 => NULL,
3561 P_ADDR_LINE_3 => NULL,
3562 P_ADDR_LINE_4 => NULL,
3563 P_DATE_LAST_VERIFIED => NULL,
3564 P_CORRESPONDENCE => NULL,
3565 P_CITY => INITCAP(g_isir_intrface_rec.perm_city_txt),
3566 P_STATE => g_isir_intrface_rec.perm_state_txt,
3567 P_PROVINCE => NULL,
3568 P_COUNTY => NULL,
3569 P_POSTAL_CODE => g_isir_intrface_rec.perm_zip_cd,
3570 P_ADDRESS_LINES_PHONETIC => NULL,
3571 P_DELIVERY_POINT_CODE => NULL,
3572 P_OTHER_DETAILS_1 => NULL,
3573 P_OTHER_DETAILS_2 => NULL,
3574 P_OTHER_DETAILS_3 => NULL,
3575 L_RETURN_STATUS => lv_return_status,
3576 L_MSG_DATA => lv_msg_data,
3577 P_PARTY_ID => pn_person_id,
3578 P_PARTY_SITE_ID => ln_party_site_id,
3579 P_PARTY_TYPE => NULL,
3580 P_LAST_UPDATE_DATE => pd_last_update_date,
3581 P_PARTY_SITE_OVN => l_party_site_ovn,
3582 P_LOCATION_OVN => l_location_ovn,
3583 P_STATUS => 'A'
3584 );
3585
3586 RAM_I_HZ := RAM_I_HZ + 1;
3587 -- Bug 2906227 Here we need to default the address usage to 'HOME' and since this is the first time the person is
3588 -- getting created the address will be automatically defaulted to 'PRIMARY'
3589 -- CHECK THE PROFILE OPTION TO GET THE VALUE OF RESIDES AT COLUMN
3590
3591 IF FND_PROFILE.VALUE('IGF_AP_DEF_ADDR_USAGE') IS NULL THEN
3592 l_party_site_use := 'HOME';
3593 ELSE
3594 l_party_site_use := FND_PROFILE.VALUE('IGF_AP_DEF_ADDR_USAGE');
3595 END IF;
3596
3597 igs_pe_party_site_use_pkg.hz_party_site_uses_ak (
3598 p_action => 'INSERT',
3599 p_rowid => l_rowid,
3600 p_party_site_use_id => l_party_site_use_id,
3601 p_party_site_id => ln_party_site_id,
3602 p_site_use_type => l_party_site_use,
3603 p_status => 'A',
3604 p_return_status => l_return_status ,
3605 p_msg_data => l_msg_data,
3606 p_last_update_date => l_last_update_date,
3607 p_site_use_last_update_date => l_site_use_last_update_date,
3608 p_profile_last_update_date => l_profile_last_update_date,
3609 p_hz_party_site_use_ovn => lv_object_version_number
3610 );
3611
3612 RAM_I_HZ := RAM_I_HZ + 1;
3613 IF lv_return_status = 'S' THEN
3614 fnd_message.set_name('IGF','IGF_AP_ISIR_PER_ADD');
3615 fnd_file.put_line(fnd_file.log, fnd_message.get);
3616 ELSIF lv_return_status = 'W' THEN
3617 -- bug 5348743
3618 fnd_file.put_line(fnd_file.log, lv_msg_data);
3619 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3620 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_addr_record.debug','Completed Address creation returned status warning : ' || lv_return_status);
3621 END IF;
3622 ELSE
3623 fnd_message.set_name('IGS','IGS_AD_CRT_ADDR_FAILED');
3624 fnd_file.put_line(fnd_file.log, fnd_message.get);
3625 END IF;
3626
3627 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3628 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.create_person_addr_record.debug','Completed Address creation returned status : ' || lv_return_status);
3629 END IF;
3630
3631 EXCEPTION
3632 WHEN others THEN
3633 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3634 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.create_person_addr_record.exception','The exception is : ' || SQLERRM );
3635 END IF;
3636
3637 fnd_file.put_line(FND_FILE.LOG ,lv_msg_data||fnd_global.newline ||'STATUS:'||lv_return_status);
3638 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
3639 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.create_person_addr_record');
3640 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
3641 igs_ge_msg_stack.add;
3642 END create_person_addr_record;
3643
3644
3645
3646
3647
3648
3649 PROCEDURE auto_fa_rec(p_person_id igf_ap_match_details.person_id%TYPE,
3650 p_apm_id igf_ap_person_match_all.apm_id%TYPE,
3651 p_cal_type igf_ap_person_match_all.ci_cal_type%TYPE,
3652 p_seq_num igf_ap_person_match_all.ci_sequence_number%TYPE)
3653 IS
3654 /*
3655 || Created By : rgangara
3656 || Created On : 16-AUG-2004
3657 || Purpose : Is called only after record matching is performed and the total match score > auto fa rec
3658 || Since the record is matched, update the status to MATCHED and create records in other tables.
3659 || NOTE: This procedure gets executed only when the Pell match type is 'U'
3660 || Known limitations, enhancements or remarks :
3661 || Change History :
3662 || Who When What
3663 || (reverse chronological order - newest change first)
3664 || museshad 12-Apr-2006 Bug 5096864. Added code to update the FA Base record details
3665 || with the newly created ISIR info.
3666 */
3667 CURSOR chk_isir_exist (cp_base_id igf_ap_fa_base_rec_all.base_id%TYPE)
3668 IS
3669 SELECT 'x'
3670 FROM igf_ap_isir_matched_all
3671 WHERE base_id = cp_base_id AND
3672 ROWNUM = 1;
3673
3674 l_chk_isir_exist chk_isir_exist%ROWTYPE;
3675
3676 CURSOR cur_fabase (cp_base_id igf_ap_fa_base_rec_all.base_id%TYPE) IS
3677 SELECT fa.*
3678 FROM igf_ap_fa_base_rec fa
3679 WHERE fa.base_id = cp_base_id;
3680
3681 lv_cur_fabase_rec cur_fabase%ROWTYPE;
3682
3683 lv_base_id igf_ap_fa_base_rec.base_id%TYPE;
3684 lv_isir_id igf_ap_isir_matched_all.isir_id%TYPE;
3685 lv_nslds_id igf_ap_nslds_data_all.nslds_id%TYPE;
3686 l_pymt_isir_flag igf_ap_isir_matched_all.payment_isir%TYPE;
3687 l_chk_fo_ant_data BOOLEAN;
3688 l_anticip_status VARCHAR2(30);
3689 l_awd_prc_status VARCHAR2(30);
3690
3691 BEGIN
3692
3693 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3694 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.debug','Auto FA Rec processing for APM ID: ' || p_apm_id || ' Person ID: ' || p_person_id);
3695 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.debug','Interface Record Email Address : ' || g_isir_intrface_rec.s_email_address_txt );
3696 END IF;
3697
3698 g_person_id := p_person_id; -- since matched, populate value into global
3699
3700 IF g_create_inquiry = 'Y' THEN -- input parameter
3701 IF NOT check_ptyp_code(p_person_id) THEN
3702 -- No record found for prospect/applicant/student So create an Admission inquiry record
3703 create_admission_rec(p_person_id, g_isir_intrface_rec.batch_year_num);
3704 END IF;
3705 END IF;
3706
3707
3708 -- create/update email address
3709 IF g_isir_intrface_rec.s_email_address_txt IS NOT NULL THEN
3710 create_updt_email_address(p_person_id);
3711 END IF;
3712
3713
3714 -- Check whether the matched student has the detailed of current award year in the fa_base table
3715 IF NOT is_fa_base_record_present(p_person_id, g_isir_intrface_rec.batch_year_num, lv_base_id) THEN
3716 -- create a base record for that award year.
3717 insert_fa_base_record( pn_person_id => p_person_id, pn_base_id => lv_base_id); -- OUT parameter
3718 l_chk_fo_ant_data := FALSE; -- bcoz, freshly created student will not have any anticipated data and existing awards
3719 ELSE
3720 -- FA Base record exists
3721 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3722 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.debug','FA Base Record found, base_id= ' ||lv_base_id);
3723 END IF;
3724
3725 OPEN chk_isir_exist(cp_base_id => lv_base_id);
3726 FETCH chk_isir_exist INTO l_chk_isir_exist;
3727
3728 IF (chk_isir_exist%NOTFOUND) THEN
3729 -- ISIR does not exist for the base_id. Create ISIR match record (gets created down the line) and
3730 -- update the FA Base record with the ISIR details.
3731 OPEN cur_fabase(cp_base_id => lv_base_id);
3732 FETCH cur_fabase INTO lv_cur_fabase_rec;
3733 CLOSE cur_fabase;
3734
3735 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3736 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.debug','ISIR does not exist for base_id= ' ||lv_base_id|| '. ISIR matched record will be inserted.');
3737 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.debug','Calling update_fa_base_rec() to update FA Base record with the ISIR details.');
3738 END IF;
3739
3740 update_fa_base_rec( p_fabase_rec => lv_cur_fabase_rec,
3741 p_isir_verification_flag => g_isir_intrface_rec.verification_flag);
3742 END IF;
3743
3744 CLOSE chk_isir_exist;
3745 l_chk_fo_ant_data := TRUE; -- existing student might have anticipated data and awards
3746 END IF;
3747
3748 g_base_id := lv_base_id; -- populate base_id into Global variable.
3749
3750 -- get the payment ISIR flag value
3751 l_pymt_isir_flag := is_payment_isir(p_primary_efc_amt => g_isir_intrface_rec.primary_efc_amt);
3752
3753 -- create ISIR Matched record
3754 insert_isir_matched_rec(cp_isir_int_rec => g_isir_intrface_rec,
3755 p_payment_isir => l_pymt_isir_flag,
3756 p_active_isir => l_pymt_isir_flag, -- In this case, Active Flag same as Payment Flag
3757 p_base_id => lv_base_id,
3758 p_out_isir_id => lv_isir_id
3759 );
3760
3761 -- create NSLDS data record
3762 insert_nslds_data_rec(cp_isir_intrface_rec => g_isir_intrface_rec,
3763 p_isir_id => lv_isir_id,
3764 p_base_id => lv_base_id,
3765 p_out_nslds_id => lv_nslds_id
3766 );
3767
3768 -- Process TODO items, if any
3769 process_todo_items(p_base_id => lv_base_id,
3770 p_payment_isir => l_pymt_isir_flag);
3771
3772
3773 -- #4871790
3774 IGF_AP_BATCH_VER_PRC_PKG.update_process_status(
3775 p_base_id => lv_base_id,
3776 p_fed_verif_status => NULL);
3777
3778
3779 -- call procedure to Delete the MATCHING records from MATCH tables as they no longer will be used.
3780 delete_person_match_rec(p_si_id => NULL, p_apm_id => p_apm_id);
3781
3782
3783 -- update ISIR int rec status
3784 update_isir_int_record(g_isir_intrface_rec.si_id, 'MATCHED', g_match_code); -- update ISIR int rec status
3785
3786 g_matched_rec := g_matched_rec + 1; -- update count
3787
3788 IF l_chk_fo_ant_data THEN
3789 -- bbb case 1
3790 -- check for ant data
3791 -- also check for award, no prev ISIR, so what will be the status of AWard prcoess status
3792 l_anticip_status := NULL;
3793 l_awd_prc_status := NULL;
3794 igf_ap_isir_gen_pkg.upd_ant_data_awd_prc_status( p_old_active_isir_id => NULL, -- Bcoz, this is the first ISIR the student is receiving
3795 p_new_active_isir_id => lv_isir_id,
3796 p_upd_ant_val => g_upd_ant_val,
3797 p_anticip_status => l_anticip_status,
3798 p_awd_prc_status => l_awd_prc_status
3799 );
3800 END IF;
3801
3802 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3803 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.debug','Successfully Completed processing Auto Fa Record procedure');
3804 END IF;
3805
3806 EXCEPTION
3807 WHEN others THEN
3808 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3809 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.auto_fa_rec.exception','The exception is : ' || SQLERRM );
3810 END IF;
3811
3812 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
3813 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.auto_fa_rec');
3814 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
3815 igs_ge_msg_stack.add;
3816 app_exception.raise_exception;
3817 END auto_fa_rec;
3818
3819
3820 PROCEDURE rvw_fa_rec(p_apm_id igf_ap_person_match_all.apm_id%TYPE ) IS
3821 /*
3822 || Created By : rgangara
3823 || Created On : 16-AUG-2004
3824 || Purpose : Is called only after record matching is performed and the total match score >= auto fa review rec
3825 || This procedure only updates record status to REVIEW and does not create any records in any other table.
3826 || NOTE: This procedure gets executed only when the Pell match type is 'U'
3827 || Known limitations, enhancements or remarks :
3828 || Change History :
3829 || Who When What
3830 || (reverse chronological order - newest change first)
3831 */
3832
3833 BEGIN
3834
3835 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3836 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.rvw_fa_rec.debug','Review FA Rec processing for APM ID: ' || p_apm_id);
3837 END IF;
3838
3839 -- call procedure to update the record_status of igf_ap_person_match and match details table
3840 update_prsn_match_rec_status(p_apm_id => p_apm_id,
3841 p_rec_status => 'REVIEW');
3842
3843 -- call procedure to update the record_status of igf_ap_isir_ints to 'REVIEW'
3844 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
3845 p_isir_rec_status => 'REVIEW',
3846 p_match_code => g_match_code);
3847
3848 --Incrementing the count of review records
3849 g_review_count := g_review_count + 1 ; -- update count
3850
3851 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3852 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.rvw_fa_rec.debug','Successfully Completed processing Review FA Record procedure');
3853 END IF;
3854
3855 EXCEPTION
3856 WHEN others THEN
3857 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3858 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.rvw_fa_rec.exception','The exception is : ' || SQLERRM );
3859 END IF;
3860
3861 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
3862 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.rvw_fa_rec');
3863 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
3864 igs_ge_msg_stack.add;
3865 app_exception.raise_exception;
3866 END rvw_fa_rec ;
3867
3868
3869 PROCEDURE unmatched_rec(p_apm_id igf_ap_person_match_all.apm_id%TYPE,
3870 p_called_from VARCHAR2,
3871 p_msg_out OUT NOCOPY VARCHAR2)
3872 IS
3873 /*
3874 || Created By : rgangara
3875 || Created On : 16-AUG-2004
3876 || Purpose : Is called only after record matching is performed and the total match score < auto fa review rec
3877 || This procedure only updates record status to UNMATCHED and hence does not create any records in any other table.
3878 || NOTE: This procedure gets executed only when the Pell match type is 'U'
3879 || Known limitations, enhancements or remarks :
3880 || Change History :
3881 || Who When What
3882 || (reverse chronological order - newest change first)
3883 */
3884
3885 lv_person_id igf_ap_person_v.person_id%TYPE ;
3886 lv_base_id igf_ap_fa_base_rec.base_id%TYPE;
3887 lv_isir_id igf_ap_css_profile.cssp_id%TYPE;
3888 lv_nslds_id igf_ap_nslds_data_all.nslds_id%TYPE;
3889 l_pymt_isir_flag igf_ap_isir_matched_all.payment_isir%TYPE;
3890
3891 BEGIN
3892
3893
3894 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3895 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.debug','Unmatched rec processing for APM ID: ' || p_apm_id);
3896 END IF;
3897 log_debug_message('Before Create Person');
3898
3899 -- Creation of Person record for the unmatched record
3900 create_person_record(p_called_from => p_called_from,
3901 pn_person_id => lv_person_id, -- OUT parameter
3902 pv_mesg_data => p_msg_out -- OUT parameter
3903 ); -- igs_pe_person_pkg.insert_row();
3904
3905
3906 log_debug_message('Person Created.... ID= ' || lv_person_id);
3907 fnd_message.set_name('IGF','IGF_AP_SUCCESS_CREATE_PERSON');
3908 fnd_file.put_line(fnd_file.log, fnd_message.get);
3909
3910 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3911 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.debug','Person Created. Person ID :' || lv_person_id || ', p_msg_out :' || p_msg_out );
3912 END IF;
3913
3914
3915 IF lv_person_id IS NOT NULL THEN
3916
3917 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3918 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.debug','Creating Address');
3919 END IF;
3920
3921 -- create person address
3922 create_person_addr_record(lv_person_id); -- igs_pe_addr_pkg.insert_row();
3923
3924 -- Admission inquiry record
3925 IF g_create_inquiry = 'Y' THEN
3926 IF NOT check_ptyp_code(lv_person_id) THEN
3927
3928 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3929 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.debug','Before calling Create Admission Record');
3930 END IF;
3931
3932 create_admission_rec(lv_person_id,g_isir_intrface_rec.batch_year_num);
3933 END IF;
3934 END IF;
3935
3936 -- create/update email address
3937 IF g_isir_intrface_rec.s_email_address_txt IS NOT NULL THEN
3938 create_updt_email_address(lv_person_id);
3939 END IF;
3940
3941 -- Check whether FA Base record exists for the current Award year for the matched student
3942 IF NOT is_fa_base_record_present( lv_person_id, g_isir_intrface_rec.batch_year_num, lv_base_id) THEN
3943 -- create a base record for that award year.
3944 insert_fa_base_record( pn_person_id => lv_person_id, pn_base_id => lv_base_id); -- OUT parameter
3945 END IF;
3946 g_base_id := lv_base_id; -- populate into global variable.
3947
3948 -- get the payment ISIR flag value
3949 l_pymt_isir_flag := is_payment_isir(p_primary_efc_amt => g_isir_intrface_rec.primary_efc_amt);
3950
3951
3952 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3953 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.debug','Before Inserting ISIR Matched record ');
3954 END IF;
3955
3956 -- create ISIR Matched record
3957 insert_isir_matched_rec(cp_isir_int_rec => g_isir_intrface_rec,
3958 p_payment_isir => l_pymt_isir_flag,
3959 p_active_isir => l_pymt_isir_flag, -- In this case, Active Flag same as Payment Flag
3960 p_base_id => lv_base_id,
3961 p_out_isir_id => lv_isir_id -- OUT parameter
3962 );
3963
3964 -- create NSLDS data record
3965 insert_nslds_data_rec(cp_isir_intrface_rec => g_isir_intrface_rec,
3966 p_isir_id => lv_isir_id,
3967 p_base_id => lv_base_id,
3968 p_out_nslds_id => lv_nslds_id -- OUT parameter
3969 ) ;
3970
3971 -- Process TODO items, if any
3972 process_todo_items(p_base_id => lv_base_id,
3973 p_payment_isir => l_pymt_isir_flag);
3974
3975 -- #4871790
3976 IGF_AP_BATCH_VER_PRC_PKG.update_process_status(
3977 p_base_id => lv_base_id,
3978 p_fed_verif_status => NULL);
3979
3980 -- call procedure to Delete the MATCHING records from MATCH tables as they no longer will be used.
3981 delete_person_match_rec(p_si_id => NULL, p_apm_id => p_apm_id);
3982
3983 -- call procedure to update the ISIR Int record_status to 'UNMATCHED'
3984 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
3985 p_isir_rec_status => 'MATCHED',
3986 p_match_code => g_match_code);
3987
3988
3989 --Incrementing the unmatched added records count
3990 g_unmatched_added := g_unmatched_added + 1;
3991
3992 ELSE -- lv_person_id
3993
3994 g_person_id := NULL;
3995 log_debug_message(' Error Creating Person ');
3996 -- call procedure to update the record_status of igf_ap_person_match and match details table
3997 update_prsn_match_rec_status(p_apm_id => p_apm_id,
3998 p_rec_status => 'UNMATCHED');
3999
4000 -- call procedure to update the ISIR Int record_status to 'UNMATCHED'
4001 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
4002 p_isir_rec_status => 'UNMATCHED',
4003 p_match_code => g_match_code);
4004
4005 --Incrementing the unmatched added records count
4006 g_unmatched_rec := g_unmatched_rec + 1 ;
4007
4008 END IF; -- lv_person_id
4009
4010
4011 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4012 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.debug','Successfully Completed processing Unmatched record procedure. Person ID ' || lv_person_id);
4013 END IF;
4014 log_debug_message('Compeleted Unmatched rec processing with Force add');
4015
4016 EXCEPTION
4017 WHEN others THEN
4018 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
4019 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.unmatched_rec.exception','The exception is : ' || SQLERRM );
4020 END IF;
4021
4022 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
4023 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.unmatched_rec');
4024 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
4025 igs_ge_msg_stack.add;
4026 app_exception.raise_exception;
4027 END unmatched_rec ;
4028
4029
4030
4031 PROCEDURE calculate_match_score(p_isir_rec igf_ap_isir_ints%ROWTYPE,
4032 p_match_setup igf_ap_record_match%ROWTYPE,
4033 p_match_dtls_rec igf_ap_match_details%ROWTYPE,
4034 p_apm_id NUMBER,
4035 p_person_id NUMBER)
4036 IS
4037 /*
4038 || Created By : rgangara
4039 || Created On : 09-Aug-2004
4040 || Purpose : Matches attributes as per record match setup and inserts a record in match details table
4041 after deriving the total score.
4042 || Known limitations, enhancements or remarks :
4043 || Change History :
4044 || Who When What
4045 || (reverse chronological order - newest change first)
4046 */
4047
4048
4049 CURSOR cur_lookups(cp_lkup_type VARCHAR2, cp_lkup_cd VARCHAR2) IS
4050 SELECT tag
4051 FROM igf_lookups_view
4052 WHERE lookup_type = cp_lkup_type
4053 AND lookup_code = cp_lkup_cd
4054 AND enabled_flag = 'Y';
4055
4056 l_oss_gender hz_person_profiles.gender%TYPE;
4057
4058
4059 CURSOR chk_match_dtls_exists_cur(cp_apm_id NUMBER, cp_person_id NUMBER) IS
4060 SELECT ad.rowid row_id, ad.*
4061 FROM igf_ap_match_details ad
4062 WHERE apm_id = cp_apm_id
4063 AND person_id = cp_person_id;
4064
4065 chk_match_dtls_exists_rec chk_match_dtls_exists_cur%ROWTYPE;
4066
4067 l_ssn_match igf_ap_match_details.ssn_match%TYPE;
4068 l_given_name_match igf_ap_match_details.given_name_match%TYPE;
4069 l_surname_match igf_ap_match_details.surname_match%TYPE;
4070 l_address_match igf_ap_match_details.address_match%TYPE;
4071 l_city_match igf_ap_match_details.city_match%TYPE;
4072 l_zip_match igf_ap_match_details.zip_match%TYPE;
4073 l_email_id_match igf_ap_match_details.email_id_match%TYPE;
4074 l_dob_match igf_ap_match_details.dob_match%TYPE;
4075 l_gender_match igf_ap_match_details.gender_match%TYPE;
4076 l_match_score igf_ap_match_details.match_score%TYPE;
4077
4078 l_primary_match_score NUMBER;
4079
4080 BEGIN
4081
4082 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4083 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.calculate_match_score.debug','Deriving Matching score values. APM_ID: ' || p_apm_id || ', Person_ID: ' || p_person_id);
4084 END IF;
4085
4086 l_ssn_match := 0;
4087 l_given_name_match := 0;
4088 l_surname_match := 0;
4089 l_address_match := 0;
4090 l_city_match := 0;
4091 l_zip_match := 0;
4092 l_email_id_match := 0;
4093 l_dob_match := 0;
4094 l_gender_match := 0;
4095 l_match_score := 0;
4096 -- =============== FIRST MATCH ATTRIBUTES ===============
4097
4098 -- SSN MATCH
4099 IF p_isir_rec.current_ssn_txt = p_match_dtls_rec.ssn_txt THEN
4100 l_ssn_match := p_match_setup.ssn;
4101 END IF;
4102
4103 -- FIRST NAME
4104 IF p_match_setup.given_name_mt_txt = 'EXACT' THEN
4105 -- First Name setup for exact match
4106 IF UPPER(p_isir_rec.first_name) = UPPER(p_match_dtls_rec.given_name_txt) THEN
4107 l_given_name_match := p_match_setup.given_name;
4108 END IF;
4109
4110 ELSE
4111 -- First Name setup for Partial match
4112 IF UPPER(p_match_dtls_rec.given_name_txt) LIKE '%'|| UPPER(p_isir_rec.first_name) || '%' THEN
4113 l_given_name_match := p_match_setup.given_name;
4114 END IF;
4115 END IF;
4116
4117
4118 -- LAST NAME
4119
4120 log_debug_message('p_match_setup.surname_mt_txt'||p_match_setup.surname_mt_txt);
4121 IF p_match_setup.surname_mt_txt = 'EXACT' THEN
4122 -- Last Name setup for exact match
4123 IF UPPER(p_isir_rec.last_name) = UPPER(p_match_dtls_rec.sur_name_txt) THEN
4124 l_surname_match := p_match_setup.surname;
4125 END IF;
4126
4127 ELSE -- last name setup for Partial match
4128
4129 IF UPPER(p_match_dtls_rec.sur_name_txt) LIKE UPPER('%' || p_isir_rec.last_name || '%') THEN
4130 l_surname_match := p_match_setup.surname;
4131 END IF;
4132 END IF;
4133
4134 l_primary_match_score := NVL(l_ssn_match,0) + NVL(l_given_name_match,0) + NVL(l_surname_match,0);
4135 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4136 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.calculate_match_score.debug','Total Primary Matching Attributes score : ' || l_primary_match_score);
4137 END IF;
4138
4139 -- =============== SECOND MATCH ATTRIBUTES ===============
4140
4141 -- ADDRESS
4142 IF ((p_match_dtls_rec.address_txt IS NOT NULL) AND (p_isir_rec.perm_mail_address_txt IS NOT NULL)) THEN
4143 IF p_match_setup.address_mt_txt = 'EXACT' THEN
4144 -- Address setup for exact match
4145 IF UPPER(p_isir_rec.perm_mail_address_txt) = UPPER(p_match_dtls_rec.address_txt) THEN
4146 l_address_match := p_match_setup.address;
4147 END IF;
4148
4149 ELSIF p_match_setup.address_mt_txt = 'PARTIAL' THEN -- Address setup for Partial match
4150
4151 IF UPPER(p_match_dtls_rec.address_txt) LIKE UPPER('%' || p_isir_rec.perm_mail_address_txt || '%') THEN
4152 l_address_match := p_match_setup.address;
4153 END IF;
4154 END IF;
4155 END IF;
4156
4157
4158
4159 -- CITY
4160 IF ((p_match_dtls_rec.city_txt IS NOT NULL) AND (p_isir_rec.perm_city_txt IS NOT NULL)) THEN
4161 IF p_match_setup.city_mt_txt = 'EXACT' THEN
4162 -- City setup for exact match
4163 IF UPPER(p_isir_rec.perm_city_txt) = UPPER(p_match_dtls_rec.city_txt) THEN
4164 l_city_match := p_match_setup.city;
4165 END IF;
4166
4167 ELSIF p_match_setup.city_mt_txt = 'PARTIAL' THEN -- Address setup for Partial match
4168
4169 IF UPPER(p_match_dtls_rec.city_txt) LIKE '%' || UPPER(p_isir_rec.perm_city_txt) || '%' THEN
4170 l_city_match := p_match_setup.city;
4171 END IF;
4172 END IF;
4173 END IF;
4174
4175 -- POSTAL CODE
4176 IF ((p_match_dtls_rec.zip_txt IS NOT NULL) AND (p_isir_rec.perm_zip_cd IS NOT NULL)) THEN
4177 IF p_match_setup.zip_mt_txt = 'EXACT' THEN
4178 -- Zip Code setup for exact match
4179 IF p_isir_rec.perm_zip_cd = p_match_dtls_rec.zip_txt THEN
4180 l_zip_match := p_match_setup.zip;
4181 END IF;
4182
4183 ELSIF p_match_setup.zip_mt_txt = 'PARTIAL' THEN -- Address setup for Partial match
4184
4185 IF p_match_dtls_rec.city_txt LIKE '%' || p_isir_rec.perm_zip_cd || '%' THEN
4186 l_zip_match := p_match_setup.zip;
4187 END IF;
4188 END IF;
4189 END IF;
4190
4191 -- EMAIL ADDRESS
4192 IF ((p_match_dtls_rec.email_id_txt IS NOT NULL) AND (p_isir_rec.s_email_address_txt IS NOT NULL)) THEN
4193 IF p_match_setup.email_mt_txt = 'EXACT' THEN
4194 -- Email setup for exact match
4195 IF p_isir_rec.s_email_address_txt = p_match_dtls_rec.email_id_txt THEN
4196 l_email_id_match := p_match_setup.email_num;
4197 END IF;
4198
4199 ELSIF p_match_setup.email_mt_txt = 'PARTIAL' THEN -- Address setup for Partial match
4200
4201 IF p_match_dtls_rec.city_txt LIKE '%' || p_isir_rec.s_email_address_txt || '%' THEN
4202 l_email_id_match := p_match_setup.email_num;
4203 END IF;
4204 END IF;
4205 END IF;
4206
4207 -- BIRTH DATE
4208 -- can only be setup for Exact or exclude
4209 IF ((p_match_dtls_rec.birth_date IS NOT NULL) AND (p_isir_rec.birth_date IS NOT NULL)) THEN
4210 IF p_match_setup.birth_dt_mt_txt = 'EXACT' THEN
4211 -- Birth date setup for exact match
4212 IF p_isir_rec.birth_date = p_match_dtls_rec.birth_date THEN
4213 l_dob_match := p_match_setup.birth_dt;
4214 END IF;
4215 END IF;
4216 END IF;
4217
4218 -- GENDER
4219 -- can only be setup for Exact or exclude
4220 IF ((p_match_dtls_rec.gender_txt IS NOT NULL) AND (p_isir_rec.ss_r_u_male_flag IS NOT NULL)) THEN
4221 IF p_match_setup.gender_mt_txt = 'EXACT' THEN
4222 -- Gender setup for exact match
4223
4224 -- get the corresponding OSS value
4225 OPEN cur_lookups('IGF_AP_ISIR_GENDER', p_isir_rec.ss_r_u_male_flag);
4226 FETCH cur_lookups INTO l_oss_gender;
4227 CLOSE cur_lookups ;
4228
4229 IF l_oss_gender IS NULL THEN
4230 l_oss_gender := 'UNSPECIFIED';
4231 END IF;
4232
4233 IF UPPER(l_oss_gender) = UPPER(p_match_dtls_rec.gender_txt) THEN
4234 l_gender_match := p_match_setup.gender_num;
4235 END IF;
4236 END IF;
4237 END IF;
4238
4239 -- =============== COMPUTE TOTAL SCORE ===============
4240
4241 l_match_score:=
4242 NVL(l_ssn_match,0) +
4243 NVL(l_given_name_match,0) +
4244 NVL(l_surname_match,0) +
4245 NVL(l_address_match,0) +
4246 NVL(l_city_match,0) +
4247 NVL(l_zip_match ,0) +
4248 NVL(l_email_id_match,0) +
4249 NVL(l_dob_match,0) +
4250 NVL(l_gender_match,0) ;
4251
4252 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4253 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.calculate_match_score.debug','Total Match Score calculated is ' || p_match_dtls_rec.match_score);
4254 END IF;
4255 log_debug_message(' SSN MATCH SCORE : ' || l_ssn_match);
4256 log_debug_message(' FNAME MATCH SCORE : ' || l_given_name_match);
4257 log_debug_message(' LNAME MATCH SCORE : ' || l_surname_match);
4258 log_debug_message(' ADDR MATCH SCORE : ' || l_address_match);
4259 log_debug_message(' CITY MATCH SCORE : ' || l_city_match);
4260 log_debug_message(' ZIP MATCH SCORE : ' || l_zip_match);
4261 log_debug_message(' EMIAL MATCH SCORE : ' || l_email_id_match);
4262 log_debug_message(' DOB MATCH SCORE : ' || l_dob_match);
4263 log_debug_message(' GENDR MATCH SCORE : ' || l_gender_match);
4264 log_debug_message(' TOTAL MATCH SCORE : ' || l_match_score);
4265
4266 log_debug_message(' p_match_dtls_rec.ssn_txt ' || p_match_dtls_rec.ssn_txt);
4267 log_debug_message(' p_match_dtls_rec.given_name_txt ' || p_match_dtls_rec.given_name_txt);
4268 log_debug_message(' p_match_dtls_rec.sur_name_txt ' || p_match_dtls_rec.sur_name_txt);
4269 log_debug_message(' p_match_dtls_rec.birth_date ' || p_match_dtls_rec.birth_date);
4270 log_debug_message(' p_match_dtls_rec.address_txt ' || p_match_dtls_rec.address_txt);
4271 log_debug_message(' p_match_dtls_rec.city_txt ' || p_match_dtls_rec.city_txt);
4272 log_debug_message(' p_match_dtls_rec.zip_txt ' || p_match_dtls_rec.zip_txt);
4273 log_debug_message(' p_match_dtls_rec.gender_txt ' || p_match_dtls_rec.gender_txt);
4274 log_debug_message(' p_match_dtls_rec.email_id_txt ' || p_match_dtls_rec.email_id_txt);
4275
4276
4277 -- check whether a match details rec already exists for this person and isir rec.
4278 OPEN chk_match_dtls_exists_cur(p_apm_id, p_person_id);
4279 FETCH chk_match_dtls_exists_cur INTO chk_match_dtls_exists_rec;
4280 CLOSE chk_match_dtls_exists_cur;
4281
4282 IF chk_match_dtls_exists_rec.row_id IS NULL THEN
4283
4284 log_debug_message(' INSERTING Match Details record .... : ');
4285 -- insert a new match details rec
4286 igf_ap_match_details_pkg.insert_row(
4287 x_mode => 'R',
4288 x_rowid => chk_match_dtls_exists_rec.row_id,
4289 x_amd_id => chk_match_dtls_exists_rec.amd_id,
4290 x_apm_id => p_apm_id,
4291 x_person_id => p_person_id ,
4292 x_ssn_match => l_ssn_match ,
4293 x_given_name_match => l_given_name_match,
4294 x_surname_match => l_surname_match ,
4295 x_dob_match => l_dob_match ,
4296 x_address_match => l_address_match ,
4297 x_city_match => l_city_match ,
4298 x_zip_match => l_zip_match ,
4299 x_match_score => l_match_score ,
4300 x_record_status => g_isir_intrface_rec.record_status,
4301 x_ssn_txt => p_match_dtls_rec.ssn_txt ,
4302 x_given_name_txt => p_match_dtls_rec.given_name_txt ,
4303 x_sur_name_txt => p_match_dtls_rec.sur_name_txt ,
4304 x_birth_date => p_match_dtls_rec.birth_date ,
4305 x_address_txt => p_match_dtls_rec.address_txt ,
4306 x_city_txt => p_match_dtls_rec.city_txt ,
4307 x_zip_txt => p_match_dtls_rec.zip_txt ,
4308 x_gender_txt => p_match_dtls_rec.gender_txt ,
4309 x_email_id_txt => p_match_dtls_rec.email_id_txt ,
4310 x_gender_match => l_gender_match ,
4311 x_email_id_match => l_email_id_match
4312 );
4313
4314 RAM_I_MD := RAM_I_MD + 1;
4315 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4316 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.calculate_match_score.debug','Inserted match details record. AMD_ID: ' || chk_match_dtls_exists_rec.amd_id);
4317 END IF;
4318 log_debug_message(' Inserted Match Details record. AMD ID: ' || chk_match_dtls_exists_rec.amd_id || ' Person ID: ' || p_person_id);
4319
4320
4321 ELSE
4322
4323 log_debug_message(' Match Details rec UPDATING ?????????.... : ' || p_person_id);
4324 -- Update can happen only for SSN since the first part of the main matching query returns distinct person id
4325 -- for SSN, first name and last name from OSS.
4326 -- 2nd part of the query returns matches based on SSN from HRMS (This is the only possibility of being in update mode)
4327
4328 -- update existing rec
4329 igf_ap_match_details_pkg.update_row(
4330 x_mode => 'R',
4331 x_rowid => chk_match_dtls_exists_rec.row_id ,
4332 x_amd_id => chk_match_dtls_exists_rec.amd_id ,
4333 x_apm_id => chk_match_dtls_exists_rec.apm_id ,
4334 x_person_id => chk_match_dtls_exists_rec.person_id ,
4335 x_ssn_match => l_ssn_match , -- update
4336 x_given_name_match => chk_match_dtls_exists_rec.given_name_match,
4337 x_surname_match => chk_match_dtls_exists_rec.surname_match ,
4338 x_dob_match => chk_match_dtls_exists_rec.dob_match ,
4339 x_address_match => chk_match_dtls_exists_rec.address_match ,
4340 x_city_match => chk_match_dtls_exists_rec.city_match ,
4341 x_zip_match => chk_match_dtls_exists_rec.zip_match ,
4342 x_match_score => (chk_match_dtls_exists_rec.match_score - chk_match_dtls_exists_rec.ssn_match + l_ssn_match),
4343 x_record_status => chk_match_dtls_exists_rec.record_status ,
4344 x_ssn_txt => p_match_dtls_rec.ssn_txt , -- update
4345 x_given_name_txt => chk_match_dtls_exists_rec.given_name_txt ,
4346 x_sur_name_txt => chk_match_dtls_exists_rec.sur_name_txt ,
4347 x_birth_date => chk_match_dtls_exists_rec.birth_date ,
4348 x_address_txt => chk_match_dtls_exists_rec.address_txt ,
4349 x_city_txt => chk_match_dtls_exists_rec.city_txt ,
4350 x_zip_txt => chk_match_dtls_exists_rec.zip_txt ,
4351 x_gender_txt => chk_match_dtls_exists_rec.gender_txt ,
4352 x_email_id_txt => chk_match_dtls_exists_rec.email_id_txt ,
4353 x_gender_match => chk_match_dtls_exists_rec.gender_match ,
4354 x_email_id_match => chk_match_dtls_exists_rec.email_id_match
4355 );
4356
4357 RAM_U_MD := RAM_U_MD + 1;
4358 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4359 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.calculate_match_score.debug','Updated match details record. APM ID: ' || p_apm_id || ' AMD ID: ' || chk_match_dtls_exists_rec.amd_id);
4360 END IF;
4361
4362 END IF;
4363
4364 EXCEPTION
4365 WHEN others THEN
4366 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
4367 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.calculate_match_score.exception','The exception is : ' || SQLERRM );
4368 END IF;
4369
4370 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
4371 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.calculate_match_score' );
4372 igs_ge_msg_stack.add;
4373 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
4374 app_exception.raise_exception;
4375 END calculate_match_score;
4376
4377
4378
4379 PROCEDURE perform_record_matching (p_apm_id igf_ap_person_match_all.apm_id%TYPE)
4380 IS
4381 /*
4382 || Created By : rgangara
4383 || Created On : 09-Aug-2004
4384 || Purpose : Performs person matching for the new ISIR record based on the matching Attributes
4385 || and inserts the matched person records and attribute values into match details table.
4386 || This procedure gets executed only when the pell match type is 'U' (unidentified isir)
4387 || Known limitations, enhancements or remarks :
4388 || Change History :
4389 || Who When What
4390 || (reverse chronological order - newest change first)
4391 */
4392
4393 -- table definition
4394 TYPE RecTab IS TABLE OF VARCHAR2(30);
4395 TYPE PersonIdTab IS TABLE OF hz_parties.party_id%TYPE;
4396 TYPE ssntab IS TABLE OF igs_pe_alt_pers_id.api_person_id_uf%TYPE;
4397 TYPE firstnametab IS TABLE OF hz_parties.person_first_name%TYPE;
4398 TYPE lastnametab IS TABLE OF hz_parties.person_last_name%TYPE;
4399 TYPE addresstab IS TABLE OF hz_parties.address1%TYPE;
4400 TYPE citytab IS TABLE OF hz_parties.city%TYPE;
4401 TYPE postalcodetab IS TABLE OF hz_parties.postal_code%TYPE;
4402 TYPE emailaddresstab IS TABLE OF hz_parties.email_address%TYPE;
4403 TYPE dobtab IS TABLE OF hz_person_profiles.date_of_birth%TYPE;
4404 TYPE gendertab IS TABLE OF hz_person_profiles.gender%TYPE;
4405 TYPE totmatchscoretab IS TABLE OF NUMBER;
4406
4407 t_rec_tab RecTab;
4408 t_pid_tab PersonIdTab;
4409 t_prsn_SSN ssntab;
4410 t_first_name firstnametab;
4411 t_last_name lastnametab;
4412 t_address addresstab;
4413 t_city citytab;
4414 t_postal_code postalcodetab;
4415 t_email_address emailaddresstab;
4416 t_dob_tab dobtab;
4417 t_gender gendertab;
4418 t_tot_match_score totmatchscoretab;
4419
4420 match_details_rec igf_ap_match_details%ROWTYPE;
4421
4422 CURSOR check_oss_person_match(p_apm_id NUMBER, p_person_id NUMBER) IS
4423 SELECT ssn_txt
4424 FROM igf_ap_match_details ad
4425 WHERE apm_id = p_apm_id
4426 AND person_id = p_person_id;
4427
4428 oss_person_match_rec check_oss_person_match%ROWTYPE;
4429
4430 lv_ssn igf_ap_match_details.ssn_txt%TYPE;
4431 lv_fname igf_ap_match_details.given_name_txt%TYPE;
4432 lv_lname igf_ap_match_details.sur_name_txt%TYPE;
4433 l_fname_exact_match VARCHAR2(1);
4434 l_lname_exact_match VARCHAR2(1);
4435 l_process_rec VARCHAR2(1);
4436 lv_tot NUMBER;
4437
4438 BEGIN
4439
4440 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4441 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Beginning Person Matching ');
4442 END IF;
4443
4444 -- get SSN by removing any special characters
4445 lv_ssn := remove_spl_chr(g_isir_intrface_rec.current_ssn_txt) ;
4446
4447 -- FNAME / GIVENNAME
4448 IF g_setup_score.given_name_mt_txt = 'EXACT' THEN
4449 l_fname_exact_match := 'Y';
4450 lv_fname := UPPER(TRIM(g_isir_intrface_rec.first_name));
4451
4452 ELSE
4453 l_fname_exact_match := 'N';
4454 lv_fname := '%' || UPPER(TRIM(g_isir_intrface_rec.first_name)) || '%' ;
4455 END IF;
4456
4457 -- LAST NAME / SURNAME
4458 IF g_setup_score.surname_mt_txt = 'EXACT' THEN
4459 l_lname_exact_match := 'Y';
4460 lv_lname := UPPER(TRIM(g_isir_intrface_rec.last_name));
4461
4462 ELSE
4463 l_lname_exact_match := 'N';
4464 lv_lname := '%' || UPPER(TRIM(g_isir_intrface_rec.last_name)) || '%' ;
4465 END IF;
4466
4467 log_debug_message(' About to execute the main matching query. ' || TO_CHAR(SYSDATE, 'HH24:MI:SS'));
4468
4469 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4470 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Matching Attribute Values: ');
4471 END IF;
4472
4473 -- main query to fetch all the records from OSS which match
4474 SELECT rec_type,
4475 person_id,
4476 prsn_ssn,
4477 firstname,
4478 lastname,
4479 address,
4480 city,
4481 postal_code,
4482 email_address,
4483 date_of_birth,
4484 gender
4485 BULK COLLECT INTO
4486 t_rec_tab,
4487 t_pid_tab,
4488 t_prsn_ssn,
4489 t_first_name,
4490 t_last_name,
4491 t_address,
4492 t_city,
4493 t_postal_code,
4494 t_email_address,
4495 t_dob_tab,
4496 t_gender
4497 FROM
4498 (
4499 -- SSN matching records
4500 SELECT 'OSS' rec_type,
4501 hz.party_id person_id,
4502 api.api_person_id_uf prsn_ssn, --Unformatted SSN value
4503 hz.person_first_name firstname,
4504 hz.person_last_name lastname,
4505 hz.address1 address,
4506 hz.city city,
4507 hz.postal_code postal_code,
4508 hz.email_address email_address,
4509 hp.date_of_birth date_of_birth,
4510 hp.gender gender
4511 FROM ( SELECT apii.pe_person_id, apii.api_person_id_uf
4512 FROM igs_pe_alt_pers_id apii, igs_pe_person_id_typ pit
4513 WHERE apii.person_id_type = pit.person_id_type
4514 AND pit.s_person_id_type = 'SSN'
4515 AND SYSDATE BETWEEN apii.start_dt AND NVL (apii.end_dt, SYSDATE)) api,
4516 hz_parties hz,
4517 hz_person_profiles hp
4518 WHERE hz.party_id = api.pe_person_id(+)
4519 AND hz.party_id = hp.party_id
4520 AND hp.effective_end_date IS NULL
4521 AND (api.api_person_id_uf = lv_ssn
4522 -- First Name
4523 OR (UPPER(hz.person_first_name) = UPPER(lv_fname) AND l_fname_exact_match = 'Y')
4524 OR (UPPER(hz.person_first_name) LIKE UPPER(lv_fname) AND l_fname_exact_match = 'N')
4525 -- Last Name
4526 OR (UPPER(hz.person_last_name) = UPPER(lv_lname) AND l_lname_exact_match = 'Y')
4527 OR (UPPER(hz.person_last_name) LIKE UPPER(lv_lname) AND l_lname_exact_match = 'N')
4528 )
4529
4530 UNION
4531 --Source of SSN from HRMS
4532 SELECT 'HRM' rec_type,
4533 ppf.party_id person_id, -- party id maps to HZ_parties.party_id
4534 remove_spl_chr(ppf.national_identifier) prsn_ssn,
4535 hz.person_first_name firstname,
4536 hz.person_last_name lastname,
4537 hz.address1 address,
4538 hz.city city,
4539 hz.postal_code postal_code,
4540 hz.email_address email_address,
4541 hp.date_of_birth date_of_birth,
4542 hp.gender gender
4543 FROM per_all_people_f ppf,
4544 per_business_groups_perf pbg,
4545 per_person_types ppt,
4546 hz_parties hz,
4547 hz_person_profiles hp
4548 WHERE IGS_EN_GEN_001.Check_HRMS_Installed = 'Y'
4549 AND pbg.legislation_code = 'US'
4550 AND ppt.system_person_type = 'EMP'
4551 AND ppt.person_type_id = ppf.person_type_id
4552 AND pbg.business_group_id = ppf.business_group_id
4553 AND TRUNC(SYSDATE) BETWEEN ppf.effective_start_date AND ppf.effective_end_date
4554 AND ppf.party_id = hz.party_id
4555 AND hz.party_id = hp.party_id
4556 AND hp.effective_end_date IS NULL
4557 AND remove_spl_chr(ppf.national_identifier) = lv_ssn
4558 ) v_dataset ORDER BY 2 ;
4559
4560 RAM_MQ := RAM_MQ +1;
4561 lv_tot := t_rec_tab.COUNT;
4562
4563
4564 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4565 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Total No. of matched records found : ' || lv_tot);
4566 END IF;
4567 log_debug_message(' Matching query execution completed. Fetched recs ' || lv_tot || ' .Time : ' || TO_CHAR(SYSDATE, 'HH24:MI:SS'));
4568
4569 -- Loop thru and process a person at a time
4570 FOR l_row IN 1..lv_tot
4571 LOOP
4572
4573 l_process_rec := 'N'; -- initialize flag variable
4574
4575 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4576 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Processing for Person_id: ' || t_pid_tab(l_row) || ', Match in: ' || t_rec_tab(l_row));
4577 END IF;
4578
4579 log_debug_message(' Processing match rec for Person ID: ' || t_pid_tab(l_row) || '. Rec No. ' || l_row);
4580 IF t_rec_tab(l_row) = 'OSS' THEN
4581 l_process_rec := 'Y'; -- process OSS matching records as usual.
4582
4583 ELSE -- i.e. hrms match record for ssn
4584 -- this matching record is from HRMS. hence process only when SSN does not exist in OSS.
4585 oss_person_match_rec := NULL;
4586 OPEN check_oss_person_match(p_apm_id, t_pid_tab(l_row));
4587 FETCH check_oss_person_match INTO oss_person_match_rec;
4588
4589 -- This is HRMS matching rec i.e. on SSN attribute.
4590 -- Hence process this record only if the SSN is not found in OSS.
4591 IF check_oss_person_match%NOTFOUND THEN
4592 l_process_rec := 'Y';
4593 ELSE
4594 -- OSS match exists but ssn_txt is null i.e. not ssn match. could be first name or last name matched rec
4595 IF oss_person_match_rec.ssn_txt IS NULL THEN
4596 l_process_rec := 'Y';
4597 END IF;
4598 END IF;
4599 CLOSE check_oss_person_match;
4600
4601 log_debug_message(' HRMS MATCH REC ?????. SSN : ' || oss_person_match_rec.ssn_txt || '. Process Record : ' || l_process_rec);
4602 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4603 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','HRMS Matching Record. SSN: ' || t_prsn_ssn(l_row) || '. Process flag : ' || l_process_rec);
4604 END IF;
4605 END IF; -- t_rec_tab
4606
4607
4608 IF l_process_rec = 'Y' THEN -- process the record
4609 -- populate values into rec variable call for passing to process_match_person_rec proc
4610 match_details_rec.ssn_txt := t_prsn_ssn(l_row);
4611 match_details_rec.given_name_txt := t_first_name(l_row);
4612 match_details_rec.sur_name_txt := t_last_name(l_row);
4613 match_details_rec.address_txt := t_address(l_row);
4614 match_details_rec.city_txt := t_city(l_row);
4615 match_details_rec.zip_txt := t_postal_code(l_row);
4616 match_details_rec.email_id_txt := t_email_address(l_row);
4617 match_details_rec.birth_date := t_dob_tab(l_row);
4618 match_details_rec.gender_txt := t_gender(l_row);
4619
4620 log_debug_message(' calling calculate match score proc.... ');
4621 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4622 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Before calling calculate_match_score procedure... ');
4623 END IF;
4624
4625 -- call the procedure to match the attributes, compute score and insert rec into match details table
4626 calculate_match_score(p_isir_rec => g_isir_intrface_rec,
4627 p_match_setup => g_setup_score,
4628 p_match_dtls_rec => match_details_rec,
4629 p_apm_id => p_apm_id,
4630 p_person_id => t_pid_tab(l_row)
4631 );
4632 log_debug_message(' Returned from calculate match score Proc. ');
4633
4634 END IF;
4635 END LOOP;
4636
4637 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4638 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Successfully Completed processing perform_record_matching');
4639 END IF;
4640 log_debug_message(' END of Perform record matching....... ');
4641
4642 EXCEPTION
4643 WHEN OTHERS THEN
4644 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
4645 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.exception','The exception is : ' || SQLERRM );
4646 END IF;
4647
4648 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
4649 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.perform_record_matching' );
4650 igs_ge_msg_stack.add;
4651 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
4652 app_exception.raise_exception;
4653 END perform_record_matching ;
4654
4655
4656 PROCEDURE process_unidentified_isir_rec IS
4657 /*
4658 || Created By : rgangara
4659 || Created On : 06-AUG-2004
4660 || Purpose : For processing ISIR recs with pell match type as 'U' i.e.
4661 || first isir for the student. Separate procedure is created for this
4662 || for clarity as it has quite a lot of steps
4663 || Known limitations, enhancements or remarks :
4664 || Change History :
4665 || Who When What
4666 || (reverse chronological order - newest change first)
4667 || museshad 11-Apr-2006 Bug 5096864. Issue in updating the record_status of ISIRs that have either -
4668 || no ISIR record for the matched Student or the ISIR record exists for the matched
4669 || Student but its transaction number does not match with the transaction number of
4670 || the new ISIR in the interface table. Fixed this issue.
4671 ||
4672 */
4673
4674 -- check for person match rec before inserting
4675 CURSOR cur_prsn_match (cp_si_id NUMBER) IS
4676 SELECT *
4677 FROM igf_ap_person_match
4678 WHERE si_id = cp_si_id;
4679
4680 person_match_rec cur_prsn_match%ROWTYPE;
4681
4682 -- Cursor to get the person_id with highest match_score for a particulare apm_id
4683 CURSOR cur_get_max_data(cp_apm_id igf_ap_person_match.apm_id%TYPE) IS
4684 SELECT person_id,
4685 match_score
4686 FROM igf_ap_match_details
4687 WHERE apm_id = cp_apm_id
4688 ORDER BY match_score DESC;
4689
4690 CURSOR c_base_id(p_person_id NUMBER,
4691 p_cal_type VARCHAR2,
4692 p_seq_num VARCHAR2) IS
4693 SELECT base_id
4694 FROM igf_ap_fa_con_v
4695 WHERE person_id = p_person_id
4696 AND ci_cal_type = p_cal_type
4697 AND ci_sequence_number = p_seq_num ;
4698
4699 l_base_id NUMBER;
4700
4701 CURSOR chk_isir_exist (cp_base_id igf_ap_fa_base_rec_all.base_id%TYPE)
4702 IS
4703 SELECT 'x'
4704 FROM igf_ap_isir_matched_all
4705 WHERE base_id = cp_base_id AND
4706 ROWNUM = 1;
4707
4708 l_chk_isir_exist chk_isir_exist%ROWTYPE;
4709
4710 lv_rowid VARCHAR2(30);
4711 lv_person_id igf_ap_match_details.person_id%TYPE;
4712 ln_match_score igf_ap_match_details.match_score%TYPE;
4713 ln_apm_id igf_ap_match_details.apm_id%TYPE;
4714 lv_msg_out VARCHAR2(2000);
4715
4716 BEGIN
4717
4718 log_debug_message(' Beginning Process Unidentified rec proc ');
4719 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4720 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug','Beginning processing Unidentified record.');
4721 END IF;
4722
4723 -- Unidentified ISIR. Hence first insert a record in person match table.
4724 -- first check whether a record already exists for this Int rec si_id
4725 OPEN cur_prsn_match (g_isir_intrface_rec.si_id);
4726 FETCH cur_prsn_match INTO person_match_rec;
4727
4728 IF cur_prsn_match%NOTFOUND THEN
4729 CLOSE cur_prsn_match ;
4730 -- Inserting new student record into igf_ap_person_match table.
4731 lv_rowid := NULL;
4732 igf_ap_person_match_pkg.insert_row(
4733 x_rowid => lv_rowid ,
4734 x_apm_id => ln_apm_id,
4735 x_css_id => NULL,
4736 x_si_id => g_isir_intrface_rec.si_id ,
4737 x_record_type => 'ISIR' ,
4738 x_date_run => TRUNC(SYSDATE),
4739 x_ci_sequence_number => g_ci_sequence_number ,
4740 x_ci_cal_type => g_ci_cal_type ,
4741 x_record_status => 'NEW' ,
4742 x_mode => 'R');
4743
4744 log_debug_message(' Inserted New Person Match record. APM ID: ' || ln_apm_id);
4745
4746 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4747 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Inserted record into Person Match table with APM_ID: ' || ln_apm_id);
4748 END IF;
4749
4750 ELSE
4751 CLOSE cur_prsn_match;
4752 -- record already exists??. Update the record.
4753 igf_ap_person_match_pkg.update_row(
4754 x_rowid => person_match_rec.row_id ,
4755 x_apm_id => person_match_rec.apm_id,
4756 x_css_id => person_match_rec.css_id,
4757 x_si_id => person_match_rec.si_id ,
4758 x_record_type => person_match_rec.record_type,
4759 x_date_run => TRUNC(SYSDATE),
4760 x_ci_sequence_number => person_match_rec.ci_sequence_number,
4761 x_ci_cal_type => person_match_rec.ci_cal_type ,
4762 x_record_status => 'NEW' ,
4763 x_mode => 'R');
4764
4765 ln_apm_id := person_match_rec.apm_id; -- assign it to local variable which can be used for passing to person match proc
4766
4767 log_debug_message(' Updated Person Match record. APM ID: ' || ln_apm_id);
4768 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4769 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.perform_record_matching.debug','Updated record in Person Match table with APM_ID: ' || ln_apm_id);
4770 END IF;
4771 END IF; -- cur_prsn_match%NOTFOUND
4772
4773
4774 -- Call procedure to perform person matching based on match set attributes.
4775 -- This procedure would match attributes and populates matching records into match details table.
4776 perform_record_matching(p_apm_id => ln_apm_id);
4777
4778 log_debug_message(' Returned from perform record matching proc ');
4779
4780 ln_match_score := 0;
4781 -- get the person record with the highest match_score from among the matched records for this apm_id
4782 OPEN cur_get_max_data(ln_apm_id);
4783 FETCH cur_get_max_data INTO lv_person_id, ln_match_score;
4784 CLOSE cur_get_max_data;
4785
4786 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4787 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug','Matching record with Max Total Score. APM ID: ' || ln_apm_id || ' Person ID: ' || lv_person_id);
4788 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug','Matching record with Max Total Score. Total Score: ' || ln_match_score);
4789 END IF;
4790 log_debug_message(' Max score matched record found. Person ID: ' || lv_person_id || ' Score: ' || ln_match_score);
4791
4792 -- compare total score against the setup scores
4793 IF ln_match_score >= g_setup_score.min_score_auto_fa THEN
4794 -- check if base_id already exists for this person
4795 OPEN c_base_id (p_person_id => lv_person_id ,
4796 p_cal_type => g_ci_cal_type,
4797 p_seq_num => g_ci_sequence_number
4798 );
4799 FETCH c_base_id INTO l_base_id;
4800 IF c_base_id%FOUND THEN
4801 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4802 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug','Base_id ' ||l_base_id|| ' found for mached person_id ' ||lv_person_id);
4803 END IF;
4804
4805 -- Chk if ISIR record exists for this matched person
4806 OPEN chk_isir_exist(cp_base_id => l_base_id);
4807 FETCH chk_isir_exist INTO l_chk_isir_exist;
4808
4809 IF (chk_isir_exist%NOTFOUND) THEN
4810 -- ISIR does not exist for this matched person. So create new ISIR and move it to MATCHED.
4811
4812 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4813 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug','ISIR does NOT exist for base_id ' ||l_base_id|| '. Calling auto_fa_rec() to create new ISIR and mark it as MATCHED.');
4814 END IF;
4815
4816 auto_fa_rec(
4817 p_person_id => lv_person_id ,
4818 p_apm_id => ln_apm_id ,
4819 p_cal_type => g_ci_cal_type,
4820 p_seq_num => g_ci_sequence_number
4821 );
4822 ELSE
4823 -- ISIR exists for this matched person. The transaction number of the matched person's ISIR could be same or different
4824 -- from the new ISIR in the interface table. In both cases, we move the ISIR for manual review.
4825
4826 rvw_fa_rec(p_apm_id => ln_apm_id);
4827
4828 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4829 fnd_log.string(fnd_log.level_statement,
4830 'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug',
4831 'ISIR exists for base_id ' ||l_base_id|| '. But the tran_num does NOT match with interface table. Marked ISIR for REVIEW');
4832 END IF;
4833 END IF;
4834 CLOSE chk_isir_exist;
4835 ELSE
4836 -- person is deemed as matched.
4837 auto_fa_rec(p_person_id => lv_person_id ,
4838 p_apm_id => ln_apm_id ,
4839 p_cal_type => g_ci_cal_type,
4840 p_seq_num => g_ci_sequence_number
4841 );
4842
4843 fnd_message.set_name('IGF','IGF_AP_ISIR_AUTO_FA');
4844 fnd_file.put_line(fnd_file.log, fnd_message.get);
4845 END IF;
4846
4847 CLOSE c_base_id;
4848 ELSIF ln_match_score >= g_setup_score.min_score_rvw_fa THEN
4849
4850 -- record status to be updated to review
4851 rvw_fa_rec(p_apm_id => ln_apm_id);
4852 ELSE
4853 -- match_score is less than the min_score_rvw_fa and hence to be marked as UNMATCHED.
4854 IF (g_force_add = 'Y') THEN
4855
4856 -- call procedure to process unmatched rec
4857 unmatched_rec(p_apm_id => ln_apm_id,
4858 p_called_from => 'PLSQL',
4859 p_msg_out => lv_msg_out); -- OUT parameter
4860
4861 ELSE -- i.e. g_force_add = 'N'
4862
4863 log_debug_message(' Force ADD = N. Hence updating the status to Unmatched');
4864 -- call procedure to update the record_status of igf_ap_person_match and match details table
4865 update_prsn_match_rec_status(p_apm_id => ln_apm_id,
4866 p_rec_status => 'UNMATCHED');
4867
4868 -- call procedure to update the ISIR Int record_status to 'UNMATCHED'
4869 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
4870 p_isir_rec_status => 'UNMATCHED',
4871 p_match_code => g_match_code);
4872
4873
4874 -- Incrementing the umamatched recs ,these record_status is going to be 'UNMATCHED'
4875 g_unmatched_rec := g_unmatched_rec + 1 ;
4876
4877 END IF;
4878 END IF ; -- ln_match_score
4879
4880 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4881 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.debug','Completed process_unidentified_isir_rec successfully..');
4882 END IF;
4883 log_debug_message(' Completed process_unidentified_isir_rec Proc');
4884
4885 EXCEPTION
4886 WHEN OTHERS THEN
4887 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
4888 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_unidentified_isir_rec.exception','The exception is : ' || SQLERRM );
4889 END IF;
4890
4891 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
4892 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.process_unidentified_isir_rec');
4893 igs_ge_msg_stack.add;
4894 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
4895 app_exception.raise_exception;
4896 END process_unidentified_isir_rec;
4897
4898 /* Added as a part of Bug 4403807
4899 This procedure returns the payment isir id if it exists,
4900 otherwise it returns the isir id of the isir on which the correction has been created.
4901 */
4902 PROCEDURE get_corrected_isir(p_base_id IN NUMBER, p_isir_id OUT NOCOPY NUMBER)
4903 IS
4904
4905 CURSOR c_get_payment_isir(cp_base_id NUMBER) IS
4906 SELECT isir_id
4907 FROM igf_ap_isir_matched_all
4908 WHERE base_id = cp_base_id
4909 AND payment_isir = 'Y';
4910
4911 CURSOR c_get_trans_num(cp_base_id NUMBER) IS
4912 SELECT transaction_num
4913 FROM igf_ap_isir_matched_all
4914 WHERE base_id = cp_base_id
4915 AND system_record_type = 'CORRECTION';
4916
4917 CURSOR c_get_isir_id(cp_trans_num igf_ap_isir_matched_all.transaction_num%TYPE,
4918 cp_base_id igf_ap_isir_matched_all.base_id%TYPE) IS
4919 SELECT isir_id
4920 FROM igf_ap_isir_matched_all
4921 WHERE base_id = cp_base_id
4922 AND transaction_num = cp_trans_num
4923 AND system_record_type <> 'CORRECTION';
4924
4925 l_get_trans_num igf_ap_isir_matched_all.transaction_num%TYPE;
4926
4927 BEGIN
4928
4929 OPEN c_get_payment_isir(p_base_id);
4930 FETCH c_get_payment_isir INTO p_isir_id;
4931 IF c_get_payment_isir%NOTFOUND THEN
4932 p_isir_id := null;
4933 OPEN c_get_trans_num(p_base_id);
4934 FETCH c_get_trans_num INTO l_get_trans_num;
4935 IF c_get_trans_num%FOUND THEN
4936 OPEN c_get_isir_id(l_get_trans_num, p_base_id);
4937 FETCH c_get_isir_id INTO p_isir_id;
4938 CLOSE c_get_isir_id;
4939 END IF;
4940 CLOSE c_get_trans_num;
4941 END IF;
4942 CLOSE c_get_payment_isir;
4943
4944 END get_corrected_isir;
4945
4946
4947
4948 PROCEDURE process_corrections(p_old_payment_isir IN NUMBER,
4949 p_new_payment_isir IN NUMBER,
4950 p_new_isir_is_pymnt_isir IN VARCHAR2)
4951 IS
4952 /*
4953 || Created By : rgangara
4954 || Created On : 19-AUG-2004
4955 || Purpose : This Procedure processes corrections and gets called only when for a New Payment isir.
4956 || This procedure gets executed only when the Pell Match Type is 'N'.
4957 || Parameter p_new_isir_is_pymnt_isir is not actually required but has been retained for any future requirement.
4958 || This process Scan all Correction records and match them.
4959 || Known limitations, enhancements or remarks :
4960 || Change History :
4961 || Who When What
4962 */
4963
4964 CURSOR get_ISIR (ln_isir_id NUMBER) IS
4965 SELECT isir.*
4966 FROM igf_ap_isir_matched isir
4967 WHERE isir_id = ln_isir_id ;
4968
4969 lv_payment_isir_rec get_isir%ROWTYPE;
4970
4971
4972 CURSOR get_corr_isir (cp_base_id igf_ap_isir_matched_all.base_id%TYPE) IS
4973 SELECT row_id, isir_id
4974 FROM igf_ap_isir_matched
4975 WHERE base_id = cp_base_id
4976 AND NVL(system_record_type,'*') = 'CORRECTION';
4977
4978 l_cor_isir get_corr_isir%ROWTYPE;
4979
4980
4981 CURSOR cur_isir_corr (cp_base_id igf_ap_isir_matched.base_id%TYPE,
4982 cp_corr_stat VARCHAR2 ) IS
4983 SELECT corr.*,
4984 sar.sar_field_name column_name
4985 FROM igf_ap_batch_aw_map map,
4986 igf_ap_ISIR_corr corr,
4987 igf_fc_sar_cd_mst sar,
4988 igf_ap_isir_matched isir
4989 WHERE map.ci_cal_type = g_ci_cal_type
4990 AND map.ci_sequence_number = g_ci_sequence_number
4991 AND corr.isir_id = isir.isir_id
4992 AND isir.base_id = cp_base_id
4993 AND corr.ci_cal_type = map.ci_cal_type
4994 AND corr.ci_sequence_number= map.ci_sequence_number
4995 AND corr.correction_status <> cp_corr_stat
4996 AND sar.sys_award_year = map.sys_award_year
4997 AND sar.sar_field_number = corr.sar_field_number ;
4998
4999 l_corr_stat VARCHAR2(30) ;
5000
5001
5002 CURSOR cur_isir_corr_pymt (cp_isir_id igf_ap_isir_matched.isir_id%TYPE) IS
5003 SELECT corr.*
5004 FROM igf_ap_ISIR_corr corr
5005 WHERE corr.isir_id = cp_isir_id ;
5006
5007
5008 lv_Param_Values VARCHAR2(200);
5009 lv_all_corr_rcvd VARCHAR2(1);
5010 lv_tot NUMBER;
5011 n NUMBER;
5012 p_new_isir_id NUMBER;
5013
5014 TYPE corr_rec IS RECORD(
5015 column_name VARCHAR2(200),
5016 column_value VARCHAR2(200) );
5017
5018 TYPE corr_tab IS TABLE OF corr_rec;
5019 lv_corr_tab corr_tab := corr_tab() ;
5020
5021 l_anticip_status VARCHAR2(30);
5022 l_awd_prc_status VARCHAR2(30);
5023
5024 l_corrected_value igf_ap_isir_corr_all.corrected_value%TYPE;
5025 l_column_value igf_ap_isir_corr_all.corrected_value%TYPE;
5026
5027 BEGIN
5028
5029 log_debug_message(' Beginning Processing Corrections for payment isir ' || p_new_payment_isir);
5030
5031
5032 IF p_new_isir_is_pymnt_isir = 'Y' THEN
5033 -- Payment ISIR is getting changed
5034 p_new_isir_id := p_new_payment_isir ;
5035 ELSE
5036 -- Set a New Payment ISIR ID to Null
5037 p_new_isir_id := NULL;
5038 END IF;
5039
5040
5041 -- Process Corrections
5042 -- Load the pl/sql Table
5043 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5044 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Before processing the correction items');
5045 END IF;
5046
5047 n := 1 ;
5048 lv_corr_tab.extend;
5049 lv_corr_tab(n).column_name := 'CURRENT_SSN';
5050 lv_corr_tab(n).column_value := g_isir_intrface_rec.current_ssn_txt ;
5051 n := n + 1 ;
5052 lv_corr_tab.extend;
5053
5054 lv_corr_tab(n).column_name := 'SSN_NAME_CHANGE';
5055 lv_corr_tab(n).column_value := g_isir_intrface_rec.ssn_name_change_type ;
5056 n := n + 1 ;
5057 lv_corr_tab.extend;
5058
5059 lv_corr_tab(n).column_name := 'ORIGINAL_SSN';
5060 lv_corr_tab(n).column_value := g_isir_intrface_rec.original_ssn_txt ;
5061 n := n + 1 ;
5062 lv_corr_tab.extend;
5063
5064 lv_corr_tab(n).column_name := 'ORIG_NAME_ID';
5065 lv_corr_tab(n).column_value := g_isir_intrface_rec.orig_name_id_txt ;
5066 n := n + 1 ;
5067 lv_corr_tab.extend;
5068
5069 lv_corr_tab(n).column_name := 'LAST_NAME';
5070 lv_corr_tab(n).column_value := g_isir_intrface_rec.last_name ;
5071 n := n + 1 ;
5072 lv_corr_tab.extend;
5073
5074 lv_corr_tab(n).column_name := 'FIRST_NAME';
5075 lv_corr_tab(n).column_value := g_isir_intrface_rec.first_name ;
5076 n := n + 1 ;
5077 lv_corr_tab.extend;
5078
5079 lv_corr_tab(n).column_name := 'MIDDLE_INITIAL';
5080 lv_corr_tab(n).column_value := g_isir_intrface_rec.middle_initial_txt ;
5081 n := n + 1 ;
5082 lv_corr_tab.extend;
5083
5084 lv_corr_tab(n).column_name := 'PERM_MAIL_ADD';
5085 lv_corr_tab(n).column_value := g_isir_intrface_rec.perm_mail_address_txt ;
5086 n := n + 1 ;
5087 lv_corr_tab.extend;
5088
5089 lv_corr_tab(n).column_name := 'PERM_CITY';
5090 lv_corr_tab(n).column_value := g_isir_intrface_rec.perm_city_txt ;
5091 n := n + 1 ;
5092 lv_corr_tab.extend;
5093
5094 lv_corr_tab(n).column_name := 'PERM_STATE';
5095 lv_corr_tab(n).column_value := g_isir_intrface_rec.perm_state_txt ;
5096 n := n + 1 ;
5097 lv_corr_tab.extend;
5098
5099 lv_corr_tab(n).column_name := 'PERM_ZIP_CODE';
5100 lv_corr_tab(n).column_value := g_isir_intrface_rec.perm_zip_cd ;
5101 n := n + 1 ;
5102 lv_corr_tab.extend;
5103
5104 lv_corr_tab(n).column_name := 'DATE_OF_BIRTH';
5105 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.birth_date) ;
5106 n := n + 1 ;
5107 lv_corr_tab.extend;
5108
5109 lv_corr_tab(n).column_name := 'PHONE_NUMBER';
5110 lv_corr_tab(n).column_value := g_isir_intrface_rec.phone_number_txt ;
5111 n := n + 1 ;
5112 lv_corr_tab.extend;
5113
5114 lv_corr_tab(n).column_name := 'DRIVER_LICENSE_NUMBER';
5115 lv_corr_tab(n).column_value := g_isir_intrface_rec.driver_license_number_txt ;
5116 n := n + 1 ;
5117 lv_corr_tab.extend;
5118
5119 lv_corr_tab(n).column_name := 'DRIVER_LICENSE_STATE';
5120 lv_corr_tab(n).column_value := g_isir_intrface_rec.driver_license_state_txt ;
5121 n := n + 1 ;
5122 lv_corr_tab.extend;
5123
5124 lv_corr_tab(n).column_name := 'CITIZENSHIP_STATUS';
5125 lv_corr_tab(n).column_value := g_isir_intrface_rec.citizenship_status_type ;
5126 n := n + 1 ;
5127 lv_corr_tab.extend;
5128
5129 lv_corr_tab(n).column_name := 'ALIEN_REG_NUMBER';
5130 lv_corr_tab(n).column_value := g_isir_intrface_rec.alien_reg_number_txt ;
5131 n := n + 1 ;
5132 lv_corr_tab.extend;
5133
5134 lv_corr_tab(n).column_name := 'S_MARITAL_STATUS';
5135 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_marital_status_type ;
5136 n := n + 1 ;
5137 lv_corr_tab.extend;
5138
5139 lv_corr_tab(n).column_name := 'S_MARITAL_STATUS_DATE';
5140 lv_corr_tab(n).column_value := to_char(g_isir_intrface_rec.s_marital_status_date, 'YYYYMM') ;
5141 n := n + 1 ;
5142 lv_corr_tab.extend;
5143
5144 lv_corr_tab(n).column_name := 'SUMM_ENRL_STATUS';
5145 lv_corr_tab(n).column_value := g_isir_intrface_rec.summ_enrl_status_type ;
5146 n := n + 1 ;
5147 lv_corr_tab.extend;
5148
5149 lv_corr_tab(n).column_name := 'FALL_ENRL_STATUS';
5150 lv_corr_tab(n).column_value := g_isir_intrface_rec.fall_enrl_status_type ;
5151 n := n + 1 ;
5152 lv_corr_tab.extend;
5153
5154 lv_corr_tab(n).column_name := 'WINTER_ENRL_STATUS';
5155 lv_corr_tab(n).column_value := g_isir_intrface_rec.winter_enrl_status_type ;
5156 n := n + 1 ;
5157 lv_corr_tab.extend;
5158
5159 lv_corr_tab(n).column_name := 'SPRING_ENRL_STATUS';
5160 lv_corr_tab(n).column_value := g_isir_intrface_rec.spring_enrl_status_type ;
5161 n := n + 1 ;
5162 lv_corr_tab.extend;
5163
5164 lv_corr_tab(n).column_name := 'SUMM2_ENRL_STATUS';
5165 lv_corr_tab(n).column_value := g_isir_intrface_rec.summ2_enrl_status_type ;
5166 n := n + 1 ;
5167 lv_corr_tab.extend;
5168
5169 lv_corr_tab(n).column_name := 'FATHERS_HIGHEST_EDU_LEVEL';
5170 lv_corr_tab(n).column_value := g_isir_intrface_rec.fathers_highst_edu_lvl_type ;
5171 n := n + 1 ;
5172 lv_corr_tab.extend;
5173
5174 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5175 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Processing correction items1');
5176 END IF;
5177
5178 lv_corr_tab(n).column_name := 'MOTHERS_HIGHEST_EDU_LEVEL';
5179 lv_corr_tab(n).column_value := g_isir_intrface_rec.mothers_highst_edu_lvl_type ;
5180 n := n + 1 ;
5181 lv_corr_tab.extend;
5182
5183 lv_corr_tab(n).column_name := 'S_STATE_LEGAL_RESIDENCE';
5184 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_state_legal_residence ;
5185 n := n + 1 ;
5186 lv_corr_tab.extend;
5187
5188 lv_corr_tab(n).column_name := 'LEGAL_RESIDENCE_BEFORE_DATE';
5189 lv_corr_tab(n).column_value := g_isir_intrface_rec.legal_res_before_year_flag ;
5190 n := n + 1 ;
5191 lv_corr_tab.extend;
5192
5193 lv_corr_tab(n).column_name := 'S_LEGAL_RESD_DATE';
5194 lv_corr_tab(n).column_value := to_char(g_isir_intrface_rec.s_legal_resd_date, 'YYYYMM') ;
5195 n := n + 1 ;
5196 lv_corr_tab.extend;
5197
5198 lv_corr_tab(n).column_name := 'SS_R_U_MALE';
5199 lv_corr_tab(n).column_value := g_isir_intrface_rec.ss_r_u_male_flag ;
5200 n := n + 1 ;
5201 lv_corr_tab.extend;
5202
5203 lv_corr_tab(n).column_name := 'SELECTIVE_SERVICE_REG';
5204 lv_corr_tab(n).column_value := g_isir_intrface_rec.selective_service_reg_flag ;
5205 n := n + 1 ;
5206 lv_corr_tab.extend;
5207
5208 lv_corr_tab(n).column_name := 'DEGREE_CERTIFICATION';
5209 lv_corr_tab(n).column_value := g_isir_intrface_rec.degree_certification_type ;
5210 n := n + 1 ;
5211 lv_corr_tab.extend;
5212
5213 lv_corr_tab(n).column_name := 'GRADE_LEVEL_IN_COLLEGE';
5214 lv_corr_tab(n).column_value := g_isir_intrface_rec.grade_level_in_college_type ;
5215 n := n + 1 ;
5216 lv_corr_tab.extend;
5217
5218 lv_corr_tab(n).column_name := 'HIGH_SCHOOL_DIPLOMA_GED';
5219 lv_corr_tab(n).column_value := g_isir_intrface_rec.high_schl_diploma_ged_flag ;
5220 n := n + 1 ;
5221 lv_corr_tab.extend;
5222
5223 lv_corr_tab(n).column_name := 'FIRST_BACHELOR_DEG_BY_DATE';
5224 lv_corr_tab(n).column_value := g_isir_intrface_rec.first_bachlr_deg_year_flag ;
5225 n := n + 1 ;
5226 lv_corr_tab.extend;
5227
5228 lv_corr_tab(n).column_name := 'INTEREST_IN_LOAN';
5229 lv_corr_tab(n).column_value := g_isir_intrface_rec.interest_in_loan_flag ;
5230 n := n + 1 ;
5231 lv_corr_tab.extend;
5232
5233 lv_corr_tab(n).column_name := 'INTEREST_IN_STUD_EMPLOYMENT';
5234 lv_corr_tab(n).column_value := g_isir_intrface_rec.interest_in_stu_employ_flag ;
5235 n := n + 1 ;
5236 lv_corr_tab.extend;
5237
5238 lv_corr_tab(n).column_name := 'DRUG_OFFENCE_CONVICTION';
5239 lv_corr_tab(n).column_value := g_isir_intrface_rec.drug_offence_convict_type ;
5240 n := n + 1 ;
5241 lv_corr_tab.extend;
5242
5243 lv_corr_tab(n).column_name := 'S_TAX_RETURN_STATUS';
5244 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_tax_return_status_type ;
5245 n := n + 1 ;
5246 lv_corr_tab.extend;
5247
5248 lv_corr_tab(n).column_name := 'S_TYPE_TAX_RETURN';
5249 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_type_tax_return_type ;
5250 n := n + 1 ;
5251 lv_corr_tab.extend;
5252
5253 lv_corr_tab(n).column_name := 'S_ELIG_1040EZ';
5254 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_elig_1040ez_type ;
5255 n := n + 1 ;
5256 lv_corr_tab.extend;
5257
5258 lv_corr_tab(n).column_name := 'S_ADJUSTED_GROSS_INCOME';
5259 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_adjusted_gross_income_amt ;
5260 n := n + 1 ;
5261 lv_corr_tab.extend;
5262
5263 lv_corr_tab(n).column_name := 'S_FED_TAXES_PAID';
5264 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_fed_taxes_paid_amt ;
5265 n := n + 1 ;
5266 lv_corr_tab.extend;
5267
5268 lv_corr_tab(n).column_name := 'S_EXEMPTIONS';
5269 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_exemptions_amt ;
5270 n := n + 1 ;
5271 lv_corr_tab.extend;
5272
5273 lv_corr_tab(n).column_name := 'S_INCOME_FROM_WORK';
5274 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_income_from_work_amt ;
5275 n := n + 1 ;
5276 lv_corr_tab.extend;
5277
5278 lv_corr_tab(n).column_name := 'SPOUSE_INCOME_FROM_WORK';
5279 lv_corr_tab(n).column_value := g_isir_intrface_rec.spouse_income_from_work_amt ;
5280 n := n + 1 ;
5281 lv_corr_tab.extend;
5282
5283 lv_corr_tab(n).column_name := 'S_TOA_AMT_FROM_WSA';
5284 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_total_from_wsa_amt ;
5285 n := n + 1 ;
5286 lv_corr_tab.extend;
5287
5288 lv_corr_tab(n).column_name := 'S_TOA_AMT_FROM_WSB';
5289 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_total_from_wsb_amt ;
5290 n := n + 1 ;
5291 lv_corr_tab.extend;
5292
5293 lv_corr_tab(n).column_name := 'S_TOA_AMT_FROM_WSC';
5294 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_total_from_wsc_amt ;
5295 n := n + 1 ;
5296 lv_corr_tab.extend;
5297
5298 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5299 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','processing correction items2');
5300 END IF;
5301
5302 lv_corr_tab(n).column_name := 'S_INVESTMENT_NETWORTH';
5303 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_investment_networth_amt ;
5304 n := n + 1 ;
5305 lv_corr_tab.extend;
5306
5307 lv_corr_tab(n).column_name := 'S_BUSI_FARM_NETWORTH';
5308 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_busi_farm_networth_amt ;
5309 n := n + 1 ;
5310 lv_corr_tab.extend;
5311
5312 lv_corr_tab(n).column_name := 'S_CASH_SAVINGS';
5313 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_cash_savings_amt ;
5314 n := n + 1 ;
5315 lv_corr_tab.extend;
5316
5317 lv_corr_tab(n).column_name := 'VA_MONTHS';
5318 lv_corr_tab(n).column_value := g_isir_intrface_rec.va_months_num ;
5319 n := n + 1 ;
5320 lv_corr_tab.extend;
5321
5322 lv_corr_tab(n).column_name := 'VA_AMOUNT';
5323 lv_corr_tab(n).column_value := g_isir_intrface_rec.va_amt ;
5324 n := n + 1 ;
5325 lv_corr_tab.extend;
5326
5327 lv_corr_tab(n).column_name := 'STUD_DOB_BEFORE_DATE';
5328 lv_corr_tab(n).column_value := g_isir_intrface_rec.stud_dob_before_year_flag ;
5329 n := n + 1 ;
5330 lv_corr_tab.extend;
5331
5332 lv_corr_tab(n).column_name := 'DEG_BEYOND_BACHELOR';
5333 lv_corr_tab(n).column_value := g_isir_intrface_rec.deg_beyond_bachelor_flag ;
5334 n := n + 1 ;
5335 lv_corr_tab.extend;
5336
5337 lv_corr_tab(n).column_name := 'S_MARRIED';
5338 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_married_flag ;
5339 n := n + 1 ;
5340 lv_corr_tab.extend;
5341
5342 lv_corr_tab(n).column_name := 'S_HAVE_CHILDREN';
5343 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_have_children_flag ;
5344 n := n + 1 ;
5345 lv_corr_tab.extend;
5346
5347 lv_corr_tab(n).column_name := 'LEGAL_DEPENDENTS';
5348 lv_corr_tab(n).column_value := g_isir_intrface_rec.legal_dependents_flag ;
5349 n := n + 1 ;
5350 lv_corr_tab.extend;
5351
5352 lv_corr_tab(n).column_name := 'ORPHAN_WARD_OF_COURT';
5353 lv_corr_tab(n).column_value := g_isir_intrface_rec.orphan_ward_of_court_flag ;
5354 n := n + 1 ;
5355 lv_corr_tab.extend;
5356
5357 lv_corr_tab(n).column_name := 'S_VETERAN';
5358 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_veteran_flag ;
5359 n := n + 1 ;
5360 lv_corr_tab.extend;
5361
5362 lv_corr_tab(n).column_name := 'P_MARITAL_STATUS';
5363 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_marital_status_type ;
5364 n := n + 1 ;
5365 lv_corr_tab.extend;
5366
5367 lv_corr_tab(n).column_name := 'FATHER_SSN';
5368 lv_corr_tab(n).column_value := g_isir_intrface_rec.father_ssn_txt ;
5369 n := n + 1 ;
5370 lv_corr_tab.extend;
5371
5372 lv_corr_tab(n).column_name := 'F_LAST_NAME';
5373 lv_corr_tab(n).column_value := g_isir_intrface_rec.f_last_name ;
5374 n := n + 1 ;
5375 lv_corr_tab.extend;
5376
5377 lv_corr_tab(n).column_name := 'MOTHER_SSN';
5378 lv_corr_tab(n).column_value := g_isir_intrface_rec.mother_ssn_txt ;
5379 n := n + 1 ;
5380 lv_corr_tab.extend;
5381
5382 lv_corr_tab(n).column_name := 'M_LAST_NAME';
5383 lv_corr_tab(n).column_value := g_isir_intrface_rec.m_last_name ;
5384 n := n + 1 ;
5385 lv_corr_tab.extend;
5386
5387 lv_corr_tab(n).column_name := 'P_NUM_FAMILY_MEMBER';
5388 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_family_members_num ;
5389 n := n + 1 ;
5390 lv_corr_tab.extend;
5391
5392 lv_corr_tab(n).column_name := 'P_NUM_IN_COLLEGE';
5393 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_in_college_num ;
5394 n := n + 1 ;
5395 lv_corr_tab.extend;
5396
5397 lv_corr_tab(n).column_name := 'P_STATE_LEGAL_RESIDENCE';
5398 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_state_legal_residence_txt ;
5399 n := n + 1 ;
5400 lv_corr_tab.extend;
5401
5402 lv_corr_tab(n).column_name := 'P_STATE_LEGAL_RES_BEFORE_DT';
5403 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_legal_res_before_dt_flag ;
5404 n := n + 1 ;
5405 lv_corr_tab.extend;
5406
5407 lv_corr_tab(n).column_name := 'P_LEGAL_RES_DATE';
5408 lv_corr_tab(n).column_value := to_char(g_isir_intrface_rec.p_legal_res_date, 'YYYYMM') ;
5409 n := n + 1 ;
5410 lv_corr_tab.extend;
5411
5412 lv_corr_tab(n).column_name := 'AGE_OLDER_PARENT';
5413 lv_corr_tab(n).column_value := g_isir_intrface_rec.age_older_parent_num ;
5414 n := n + 1 ;
5415 lv_corr_tab.extend;
5416
5417 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5418 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Processing correction items3');
5419 END IF;
5420
5421 lv_corr_tab(n).column_name := 'P_TAX_RETURN_STATUS';
5422 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_tax_return_status_type ;
5423 n := n + 1 ;
5424 lv_corr_tab.extend;
5425
5426 lv_corr_tab(n).column_name := 'P_TYPE_TAX_RETURN';
5427 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_type_tax_return_type ;
5428 n := n + 1 ;
5429 lv_corr_tab.extend;
5430
5431 lv_corr_tab(n).column_name := 'P_ELIG_1040AEZ';
5432 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_elig_1040aez_type ;
5433 n := n + 1 ;
5434 lv_corr_tab.extend;
5435
5436 lv_corr_tab(n).column_name := 'P_ADJUSTED_GROSS_INCOME';
5437 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_adjusted_gross_income_amt ;
5438 n := n + 1 ;
5439 lv_corr_tab.extend;
5440
5441 lv_corr_tab(n).column_name := 'P_TAXES_PAID';
5442 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_taxes_paid_amt ;
5443 n := n + 1 ;
5444 lv_corr_tab.extend;
5445
5446 lv_corr_tab(n).column_name := 'P_EXEMPTIONS';
5447 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_exemptions_amt ;
5448 n := n + 1 ;
5449 lv_corr_tab.extend;
5450
5451 lv_corr_tab(n).column_name := 'F_INCOME_WORK';
5452 lv_corr_tab(n).column_value := g_isir_intrface_rec.f_income_work_amt ;
5453 n := n + 1 ;
5454 lv_corr_tab.extend;
5455
5456 lv_corr_tab(n).column_name := 'M_INCOME_WORK';
5457 lv_corr_tab(n).column_value := g_isir_intrface_rec.m_income_work_amt ;
5458 n := n + 1 ;
5459 lv_corr_tab.extend;
5460
5461 lv_corr_tab(n).column_name := 'P_INCOME_WSA';
5462 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_income_wsa_amt ;
5463 n := n + 1 ;
5464 lv_corr_tab.extend;
5465
5466 lv_corr_tab(n).column_name := 'P_INCOME_WSB';
5467 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_income_wsb_amt ;
5468 n := n + 1 ;
5469 lv_corr_tab.extend;
5470
5471 lv_corr_tab(n).column_name := 'P_INCOME_WSC';
5472 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_income_wsc_amt ;
5473 n := n + 1 ;
5474 lv_corr_tab.extend;
5475
5476 lv_corr_tab(n).column_name := 'P_INVESTMENT_NETWORTH';
5477 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_investment_networth_amt ;
5478 n := n + 1 ;
5479 lv_corr_tab.extend;
5480
5481 lv_corr_tab(n).column_name := 'P_BUSINESS_NETWORTH';
5482 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_business_networth_amt ;
5483 n := n + 1 ;
5484 lv_corr_tab.extend;
5485
5486 lv_corr_tab(n).column_name := 'P_CASH_SAVING';
5487 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_cash_saving_amt ;
5488 n := n + 1 ;
5489 lv_corr_tab.extend;
5490
5491 lv_corr_tab(n).column_name := 'S_NUM_FAMILY_MEMBERS';
5492 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_family_members_num ;
5493 n := n + 1 ;
5494 lv_corr_tab.extend;
5495
5496 lv_corr_tab(n).column_name := 'S_NUM_IN_COLLEGE';
5497 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_in_college_num ;
5498 n := n + 1 ;
5499 lv_corr_tab.extend;
5500
5501 lv_corr_tab(n).column_name := 'FIRST_COLLEGE';
5502 lv_corr_tab(n).column_value := g_isir_intrface_rec.first_college_cd ;
5503 n := n + 1 ;
5504 lv_corr_tab.extend;
5505
5506 lv_corr_tab(n).column_name := 'FIRST_HOUSE_PLAN';
5507 lv_corr_tab(n).column_value := g_isir_intrface_rec.first_house_plan_type ;
5508 n := n + 1 ;
5509 lv_corr_tab.extend;
5510
5511 lv_corr_tab(n).column_name := 'SECOND_COLLEGE';
5512 lv_corr_tab(n).column_value := g_isir_intrface_rec.second_college_cd ;
5513 n := n + 1 ;
5514 lv_corr_tab.extend;
5515
5516 lv_corr_tab(n).column_name := 'SECOND_HOUSE_PLAN';
5517 lv_corr_tab(n).column_value := g_isir_intrface_rec.second_house_plan_type ;
5518 n := n + 1 ;
5519 lv_corr_tab.extend;
5520
5521 lv_corr_tab(n).column_name := 'THIRD_COLLEGE';
5522 lv_corr_tab(n).column_value := g_isir_intrface_rec.third_college_cd ;
5523 n := n + 1 ;
5524 lv_corr_tab.extend;
5525
5526 lv_corr_tab(n).column_name := 'THIRD_HOUSE_PLAN';
5527 lv_corr_tab(n).column_value := g_isir_intrface_rec.third_house_plan_type ;
5528 n := n + 1 ;
5529 lv_corr_tab.extend;
5530
5531 lv_corr_tab(n).column_name := 'FOURTH_COLLEGE';
5532 lv_corr_tab(n).column_value := g_isir_intrface_rec.fourth_college_cd ;
5533 n := n + 1 ;
5534 lv_corr_tab.extend;
5535
5536 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5537 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Processing correction items4');
5538 END IF;
5539
5540 lv_corr_tab(n).column_name := 'FOURTH_HOUSE_PLAN';
5541 lv_corr_tab(n).column_value := g_isir_intrface_rec.fourth_house_plan_type ;
5542 n := n + 1 ;
5543 lv_corr_tab.extend;
5544
5545 lv_corr_tab(n).column_name := 'FIFTH_COLLEGE';
5546 lv_corr_tab(n).column_value := g_isir_intrface_rec.fifth_college_cd ;
5547 n := n + 1 ;
5548 lv_corr_tab.extend;
5549
5550 lv_corr_tab(n).column_name := 'FIFTH_HOUSE_PLAN';
5551 lv_corr_tab(n).column_value := g_isir_intrface_rec.fifth_house_plan_type ;
5552 n := n + 1 ;
5553 lv_corr_tab.extend;
5554
5555 lv_corr_tab(n).column_name := 'SIXTH_COLLEGE';
5556 lv_corr_tab(n).column_value := g_isir_intrface_rec.sixth_college_cd ;
5557 n := n + 1 ;
5558 lv_corr_tab.extend;
5559
5560 lv_corr_tab(n).column_name := 'SIXTH_HOUSE_PLAN';
5561 lv_corr_tab(n).column_value := g_isir_intrface_rec.sixth_house_plan_type ;
5562 n := n + 1 ;
5563 lv_corr_tab.extend;
5564
5565 lv_corr_tab(n).column_name := 'DATE_APP_COMPLETED';
5566 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.app_completed_date) ;
5567 n := n + 1 ;
5568 lv_corr_tab.extend;
5569
5570 lv_corr_tab(n).column_name := 'SIGNED_BY';
5571 lv_corr_tab(n).column_value := g_isir_intrface_rec.signed_by_type ;
5572 n := n + 1 ;
5573 lv_corr_tab.extend;
5574
5575 lv_corr_tab(n).column_name := 'PREPARER_SSN';
5576 lv_corr_tab(n).column_value := g_isir_intrface_rec.preparer_ssn_txt ;
5577 n := n + 1 ;
5578 lv_corr_tab.extend;
5579
5580 lv_corr_tab(n).column_name := 'PREPARER_EMP_ID_NUMBER';
5581 lv_corr_tab(n).column_value := g_isir_intrface_rec.preparer_emp_id_number_txt ;
5582 n := n + 1 ;
5583 lv_corr_tab.extend;
5584
5585 lv_corr_tab(n).column_name := 'PREPARER_SIGN';
5586 lv_corr_tab(n).column_value := g_isir_intrface_rec.preparer_sign_flag ;
5587 n := n + 1 ;
5588 lv_corr_tab.extend;
5589
5590 lv_corr_tab(n).column_name := 'TRANSACTION_RECEIPT_DATE';
5591 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.transaction_receipt_date) ;
5592 n := n + 1 ;
5593 lv_corr_tab.extend;
5594
5595 lv_corr_tab(n).column_name := 'DEPENDENCY_OVERRIDE_IND';
5596 lv_corr_tab(n).column_value := g_isir_intrface_rec.dependency_override_type ;
5597 n := n + 1 ;
5598 lv_corr_tab.extend;
5599
5600 lv_corr_tab(n).column_name := 'FAA_FEDRAL_SCHL_CODE';
5601 lv_corr_tab(n).column_value := g_isir_intrface_rec.faa_fedral_schl_cd ;
5602 n := n + 1 ;
5603 lv_corr_tab.extend;
5604
5605 lv_corr_tab(n).column_name := 'FAA_ADJUSTMENT';
5606 lv_corr_tab(n).column_value := g_isir_intrface_rec.faa_adjustment_type ;
5607 n := n + 1 ;
5608 lv_corr_tab.extend;
5609
5610 lv_corr_tab(n).column_name := 'INPUT_RECORD_TYPE';
5611 lv_corr_tab(n).column_value := g_isir_intrface_rec.input_record_type ;
5612 n := n + 1 ;
5613 lv_corr_tab.extend;
5614
5615 lv_corr_tab(n).column_name := 'SERIAL_NUMBER';
5616 lv_corr_tab(n).column_value := g_isir_intrface_rec.serial_num ;
5617 n := n + 1 ;
5618 lv_corr_tab.extend;
5619
5620 lv_corr_tab(n).column_name := 'BATCH_NUMBER';
5621 lv_corr_tab(n).column_value := g_isir_intrface_rec.batch_number_txt ;
5622 n := n + 1 ;
5623 lv_corr_tab.extend;
5624
5625 lv_corr_tab(n).column_name := 'EARLY_ANALYSIS_FLAG';
5626 lv_corr_tab(n).column_value := g_isir_intrface_rec.early_analysis_flag ;
5627 n := n + 1 ;
5628 lv_corr_tab.extend;
5629
5630 lv_corr_tab(n).column_name := 'APP_ENTRY_SOURCE_CODE';
5631 lv_corr_tab(n).column_value := g_isir_intrface_rec.app_entry_source_type ;
5632 n := n + 1 ;
5633 lv_corr_tab.extend;
5634
5635 lv_corr_tab(n).column_name := 'ETI_DESTINATION_CODE';
5636 lv_corr_tab(n).column_value := g_isir_intrface_rec.eti_destination_cd ;
5637 n := n + 1 ;
5638 lv_corr_tab.extend;
5639
5640 lv_corr_tab(n).column_name := 'REJECT_OVERRIDE_B';
5641 lv_corr_tab(n).column_value := g_isir_intrface_rec.reject_override_b_flag ;
5642 n := n + 1 ;
5643 lv_corr_tab.extend;
5644
5645 lv_corr_tab(n).column_name := 'REJECT_OVERRIDE_N';
5646 lv_corr_tab(n).column_value := g_isir_intrface_rec.reject_override_n_flag ;
5647 n := n + 1 ;
5648 lv_corr_tab.extend;
5649
5650 lv_corr_tab(n).column_name := 'REJECT_OVERRIDE_W';
5651 lv_corr_tab(n).column_value := g_isir_intrface_rec.reject_override_w_flag ;
5652 n := n + 1 ;
5653 lv_corr_tab.extend;
5654
5655 lv_corr_tab(n).column_name := 'ASSUM_OVERRIDE_1';
5656 lv_corr_tab(n).column_value := g_isir_intrface_rec.assum_override_1_flag ;
5657 n := n + 1 ;
5658 lv_corr_tab.extend;
5659
5660 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5661 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Processing correction items5');
5662 END IF;
5663
5664 lv_corr_tab(n).column_name := 'ASSUM_OVERRIDE_2';
5665 lv_corr_tab(n).column_value := g_isir_intrface_rec.assum_override_2_flag ;
5666 n := n + 1 ;
5667 lv_corr_tab.extend;
5668
5669 lv_corr_tab(n).column_name := 'ASSUM_OVERRIDE_3';
5670 lv_corr_tab(n).column_value := g_isir_intrface_rec.assum_override_3_flag ;
5671 n := n + 1 ;
5672 lv_corr_tab.extend;
5673
5674 lv_corr_tab(n).column_name := 'ASSUM_OVERRIDE_4';
5675 lv_corr_tab(n).column_value := g_isir_intrface_rec.assum_override_4_flag ;
5676 n := n + 1 ;
5677 lv_corr_tab.extend;
5678
5679 lv_corr_tab(n).column_name := 'ASSUM_OVERRIDE_5';
5680 lv_corr_tab(n).column_value := g_isir_intrface_rec.assum_override_5_flag ;
5681 n := n + 1 ;
5682 lv_corr_tab.extend;
5683
5684 lv_corr_tab(n).column_name := 'ASSUM_OVERRIDE_6';
5685 lv_corr_tab(n).column_value := g_isir_intrface_rec.assum_override_6_flag ;
5686 n := n + 1 ;
5687 lv_corr_tab.extend;
5688
5689 lv_corr_tab(n).column_name := 'DEPENDENCY_STATUS';
5690 lv_corr_tab(n).column_value := g_isir_intrface_rec.dependency_status_type ;
5691 n := n + 1 ;
5692 lv_corr_tab.extend;
5693
5694 lv_corr_tab(n).column_name := 'S_EMAIL_ADDRESS';
5695 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_email_address_txt ;
5696 n := n + 1 ;
5697 lv_corr_tab.extend;
5698
5699 lv_corr_tab(n).column_name := 'NSLDS_REASON_CODE';
5700 lv_corr_tab(n).column_value := g_isir_intrface_rec.nslds_reason_cd ;
5701 n := n + 1 ;
5702 lv_corr_tab.extend;
5703
5704 lv_corr_tab(n).column_name := 'APP_RECEIPT_DATE';
5705 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.app_receipt_date) ;
5706 n := n + 1 ;
5707 lv_corr_tab.extend;
5708
5709 lv_corr_tab(n).column_name := 'PROCESSED_REC_TYPE';
5710 lv_corr_tab(n).column_value := g_isir_intrface_rec.processed_rec_type ;
5711 n := n + 1 ;
5712 lv_corr_tab.extend;
5713
5714 lv_corr_tab(n).column_name := 'HIST_CORRECTION_FOR_TRAN_ID';
5715 lv_corr_tab(n).column_value := g_isir_intrface_rec.hist_corr_for_tran_num ;
5716 n := n + 1 ;
5717 lv_corr_tab.extend;
5718
5719 lv_corr_tab(n).column_name := 'SYSTEM_GENERATED_INDICATOR';
5720 lv_corr_tab(n).column_value := g_isir_intrface_rec.sys_generated_indicator_type ;
5721 n := n + 1 ;
5722 lv_corr_tab.extend;
5723
5724 lv_corr_tab(n).column_name := 'DUP_REQUEST_INDICATOR';
5725 lv_corr_tab(n).column_value := g_isir_intrface_rec.dup_request_indicator_type ;
5726 n := n + 1 ;
5727 lv_corr_tab.extend;
5728
5729 lv_corr_tab(n).column_name := 'SOURCE_OF_CORRECTION';
5730 lv_corr_tab(n).column_value := g_isir_intrface_rec.source_of_correction_type ;
5731 n := n + 1 ;
5732 lv_corr_tab.extend;
5733
5734 lv_corr_tab(n).column_name := 'P_CAL_TAX_STATUS';
5735 lv_corr_tab(n).column_value := g_isir_intrface_rec.p_cal_tax_status_type ;
5736 n := n + 1 ;
5737 lv_corr_tab.extend;
5738
5739 lv_corr_tab(n).column_name := 'S_CAL_TAX_STATUS';
5740 lv_corr_tab(n).column_value := g_isir_intrface_rec.s_cal_tax_status_type ;
5741 n := n + 1 ;
5742 lv_corr_tab.extend;
5743
5744 lv_corr_tab(n).column_name := 'GRADUATE_FLAG';
5745 lv_corr_tab(n).column_value := g_isir_intrface_rec.graduate_flag ;
5746 n := n + 1 ;
5747 lv_corr_tab.extend;
5748
5749 lv_corr_tab(n).column_name := 'AUTO_ZERO_EFC';
5750 lv_corr_tab(n).column_value := g_isir_intrface_rec.auto_zero_efc_flag ;
5751 n := n + 1 ;
5752 lv_corr_tab.extend;
5753
5754 lv_corr_tab(n).column_name := 'EFC_CHANGE_FLAG';
5755 lv_corr_tab(n).column_value := g_isir_intrface_rec.efc_change_flag ;
5756 n := n + 1 ;
5757 lv_corr_tab.extend;
5758
5759 lv_corr_tab(n).column_name := 'SARC_FLAG';
5760 lv_corr_tab(n).column_value := g_isir_intrface_rec.sarc_flag ;
5761 n := n + 1 ;
5762 lv_corr_tab.extend;
5763
5764 lv_corr_tab(n).column_name := 'SIMPLIFIED_NEED_TEST';
5765 lv_corr_tab(n).column_value := g_isir_intrface_rec.simplified_need_test_flag ;
5766 n := n + 1 ;
5767 lv_corr_tab.extend;
5768
5769 lv_corr_tab(n).column_name := 'REJECT_REASON_CODES';
5770 lv_corr_tab(n).column_value := g_isir_intrface_rec.reject_reason_codes_txt ;
5771 n := n + 1 ;
5772 lv_corr_tab.extend;
5773
5774 lv_corr_tab(n).column_name := 'SELECT_SERVICE_MATCH_FLAG';
5775 lv_corr_tab(n).column_value := g_isir_intrface_rec.select_service_match_type ;
5776 n := n + 1 ;
5777 lv_corr_tab.extend;
5778
5779 lv_corr_tab(n).column_name := 'SELECT_SERVICE_REG_FLAG';
5780 lv_corr_tab(n).column_value := g_isir_intrface_rec.select_service_reg_type ;
5781 n := n + 1 ;
5782 lv_corr_tab.extend;
5783
5784 lv_corr_tab(n).column_name := 'INS_MATCH_FLAG';
5785 lv_corr_tab(n).column_value := g_isir_intrface_rec.ins_match_flag ;
5786 n := n + 1 ;
5787 lv_corr_tab.extend;
5788
5789 lv_corr_tab(n).column_name := 'SEC_INS_MATCH_FLAG';
5790 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_ins_match_type ;
5791 n := n + 1 ;
5792 lv_corr_tab.extend;
5793
5794 lv_corr_tab(n).column_name := 'SEC_INS_VER_NUMBER';
5795 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_ins_ver_num ;
5796 n := n + 1 ;
5797 lv_corr_tab.extend;
5798
5799 lv_corr_tab(n).column_name := 'SSN_MATCH_FLAG';
5800 lv_corr_tab(n).column_value := g_isir_intrface_rec.ssn_match_type ;
5801 n := n + 1 ;
5802 lv_corr_tab.extend;
5803
5804 lv_corr_tab(n).column_name := 'SSA_CITIZENSHIP_FLAG';
5805 lv_corr_tab(n).column_value := g_isir_intrface_rec.ssa_citizenship_type ;
5806 n := n + 1 ;
5807 lv_corr_tab.extend;
5808
5809 lv_corr_tab(n).column_name := 'SSN_DATE_OF_DEATH';
5810 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.ssn_death_date) ;
5811 n := n + 1 ;
5812 lv_corr_tab.extend;
5813
5814 lv_corr_tab(n).column_name := 'NSLDS_MATCH_FLAG';
5815 lv_corr_tab(n).column_value := g_isir_intrface_rec.nslds_match_type ;
5816 n := n + 1 ;
5817 lv_corr_tab.extend;
5818
5819 lv_corr_tab(n).column_name := 'VA_MATCH_FLAG';
5820 lv_corr_tab(n).column_value := g_isir_intrface_rec.va_match_type ;
5821 n := n + 1 ;
5822 lv_corr_tab.extend;
5823
5824 lv_corr_tab(n).column_name := 'PRISONER_MATCH';
5825 lv_corr_tab(n).column_value := g_isir_intrface_rec.prisoner_match_flag ;
5826 n := n + 1 ;
5827 lv_corr_tab.extend;
5828
5829 lv_corr_tab(n).column_name := 'VERIFICATION_FLAG';
5830 lv_corr_tab(n).column_value := g_isir_intrface_rec.verification_flag ;
5831 n := n + 1 ;
5832 lv_corr_tab.extend;
5833
5834 lv_corr_tab(n).column_name := 'SUBSEQUENT_APP_FLAG';
5835 lv_corr_tab(n).column_value := g_isir_intrface_rec.subsequent_app_flag ;
5836 n := n + 1 ;
5837 lv_corr_tab.extend;
5838
5839 lv_corr_tab(n).column_name := 'APP_SOURCE_SITE_CODE';
5840 lv_corr_tab(n).column_value := g_isir_intrface_rec.app_source_site_cd ;
5841 n := n + 1 ;
5842 lv_corr_tab.extend;
5843
5844 lv_corr_tab(n).column_name := 'TRAN_SOURCE_SITE_CODE';
5845 lv_corr_tab(n).column_value := g_isir_intrface_rec.tran_source_site_cd ;
5846 n := n + 1 ;
5847 lv_corr_tab.extend;
5848
5849 lv_corr_tab(n).column_name := 'DRN';
5850 lv_corr_tab(n).column_value := g_isir_intrface_rec.drn_num ;
5851 n := n + 1 ;
5852 lv_corr_tab.extend;
5853
5854 lv_corr_tab(n).column_name := 'TRAN_PROCESS_DATE';
5855 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.tran_process_date) ;
5856 n := n + 1 ;
5857 lv_corr_tab.extend;
5858
5859 lv_corr_tab(n).column_name := 'COMPUTER_BATCH_NUMBER';
5860 lv_corr_tab(n).column_value := g_isir_intrface_rec.computer_batch_num ;
5861 n := n + 1 ;
5862 lv_corr_tab.extend;
5863
5864 lv_corr_tab(n).column_name := 'CORRECTION_FLAGS';
5865 lv_corr_tab(n).column_value := g_isir_intrface_rec.correction_flags_txt ;
5866 n := n + 1 ;
5867 lv_corr_tab.extend;
5868
5869 lv_corr_tab(n).column_name := 'HIGHLIGHT_FLAGS';
5870 lv_corr_tab(n).column_value := g_isir_intrface_rec.highlight_flags_txt ;
5871 n := n + 1 ;
5872 lv_corr_tab.extend;
5873
5874 lv_corr_tab(n).column_name := 'PAID_EFC';
5875 lv_corr_tab(n).column_value := g_isir_intrface_rec.paid_efc_amt ;
5876 n := n + 1 ;
5877 lv_corr_tab.extend;
5878
5879 lv_corr_tab(n).column_name := 'PRIMARY_EFC';
5880 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_efc_amt ;
5881 n := n + 1 ;
5882 lv_corr_tab.extend;
5883
5884 lv_corr_tab(n).column_name := 'SECONDARY_EFC';
5885 lv_corr_tab(n).column_value := g_isir_intrface_rec.secondary_efc_amt ;
5886 n := n + 1 ;
5887 lv_corr_tab.extend;
5888
5889 lv_corr_tab(n).column_name := 'FED_PELL_GRANT_EFC_TYPE';
5890 lv_corr_tab(n).column_value := g_isir_intrface_rec.fed_pell_grant_efc_type ;
5891 n := n + 1 ;
5892 lv_corr_tab.extend;
5893
5894 lv_corr_tab(n).column_name := 'PRIMARY_EFC_TYPE';
5895 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_efc_type ;
5896 n := n + 1 ;
5897 lv_corr_tab.extend;
5898
5899 lv_corr_tab(n).column_name := 'SEC_EFC_TYPE';
5900 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_efc_type ;
5901 n := n + 1 ;
5902 lv_corr_tab.extend;
5903
5904 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5905 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Processing correction items6');
5906 END IF;
5907
5908 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_1';
5909 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_1_amt ;
5910 n := n + 1 ;
5911 lv_corr_tab.extend;
5912
5913 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_2';
5914 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_2_amt ;
5915 n := n + 1 ;
5916 lv_corr_tab.extend;
5917
5918 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_3';
5919 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_3_amt ;
5920 n := n + 1 ;
5921 lv_corr_tab.extend;
5922
5923 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_4';
5924 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_4_amt ;
5925 n := n + 1 ;
5926 lv_corr_tab.extend;
5927
5928 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_5';
5929 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_5_amt ;
5930 n := n + 1 ;
5931 lv_corr_tab.extend;
5932
5933 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_6';
5934 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_6_amt ;
5935 n := n + 1 ;
5936 lv_corr_tab.extend;
5937
5938 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_7';
5939 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_7_amt ;
5940 n := n + 1 ;
5941 lv_corr_tab.extend;
5942
5943 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_8';
5944 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_8_amt ;
5945 n := n + 1 ;
5946 lv_corr_tab.extend;
5947
5948 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_10';
5949 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_10_amt ;
5950 n := n + 1 ;
5951 lv_corr_tab.extend;
5952
5953 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_11';
5954 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_11_amt ;
5955 n := n + 1 ;
5956 lv_corr_tab.extend;
5957
5958 lv_corr_tab(n).column_name := 'PRIMARY_ALTERNATE_MONTH_12';
5959 lv_corr_tab(n).column_value := g_isir_intrface_rec.primary_alt_month_12_amt ;
5960 n := n + 1 ;
5961 lv_corr_tab.extend;
5962
5963 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_1';
5964 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_1_amt ;
5965 n := n + 1 ;
5966 lv_corr_tab.extend;
5967
5968 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_2';
5969 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_2_amt ;
5970 n := n + 1 ;
5971 lv_corr_tab.extend;
5972
5973 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_3';
5974 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_3_amt ;
5975 n := n + 1 ;
5976 lv_corr_tab.extend;
5977
5978 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_4';
5979 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_4_amt ;
5980 n := n + 1 ;
5981 lv_corr_tab.extend;
5982
5983 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_5';
5984 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_5_amt ;
5985 n := n + 1 ;
5986 lv_corr_tab.extend;
5987
5988 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_6';
5989 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_6_amt ;
5990 n := n + 1 ;
5991 lv_corr_tab.extend;
5992
5993 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_7';
5994 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_7_amt ;
5995 n := n + 1 ;
5996 lv_corr_tab.extend;
5997
5998 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_8';
5999 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_8_amt ;
6000 n := n + 1 ;
6001 lv_corr_tab.extend;
6002
6003 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_10';
6004 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_10_amt ;
6005 n := n + 1 ;
6006 lv_corr_tab.extend;
6007
6008 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_11';
6009 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_11_amt ;
6010 n := n + 1 ;
6011 lv_corr_tab.extend;
6012
6013 lv_corr_tab(n).column_name := 'SEC_ALTERNATE_MONTH_12';
6014 lv_corr_tab(n).column_value := g_isir_intrface_rec.sec_alternate_month_12_amt ;
6015 n := n + 1 ;
6016 lv_corr_tab.extend;
6017
6018 lv_corr_tab(n).column_name := 'TOTAL_INCOME';
6019 lv_corr_tab(n).column_value := g_isir_intrface_rec.total_income_amt ;
6020 n := n + 1 ;
6021 lv_corr_tab.extend;
6022
6023 lv_corr_tab(n).column_name := 'ALLOW_TOTAL_INCOME';
6024 lv_corr_tab(n).column_value := g_isir_intrface_rec.allow_total_income_amt ;
6025 n := n + 1 ;
6026 lv_corr_tab.extend;
6027
6028 lv_corr_tab(n).column_name := 'STATE_TAX_ALLOW';
6029 lv_corr_tab(n).column_value := g_isir_intrface_rec.state_tax_allow_amt ;
6030 n := n + 1 ;
6031 lv_corr_tab.extend;
6032
6033 lv_corr_tab(n).column_name := 'EMPLOYMENT_ALLOW';
6034 lv_corr_tab(n).column_value := g_isir_intrface_rec.employment_allow_amt ;
6035 n := n + 1 ;
6036 lv_corr_tab.extend;
6037
6038 lv_corr_tab(n).column_name := 'INCOME_PROTECTION_ALLOW';
6039 lv_corr_tab(n).column_value := g_isir_intrface_rec.income_protection_allow_amt ;
6040 n := n + 1 ;
6041 lv_corr_tab.extend;
6042
6043 lv_corr_tab(n).column_name := 'AVAILABLE_INCOME';
6044 lv_corr_tab(n).column_value := g_isir_intrface_rec.available_income_amt ;
6045 n := n + 1 ;
6046 lv_corr_tab.extend;
6047
6048 lv_corr_tab(n).column_name := 'CONTRIBUTION_FROM_AI';
6049 lv_corr_tab(n).column_value := g_isir_intrface_rec.contribution_from_ai_amt ;
6050 n := n + 1 ;
6051 lv_corr_tab.extend;
6052
6053 lv_corr_tab(n).column_name := 'DISCRETIONARY_NETWORTH';
6054 lv_corr_tab(n).column_value := g_isir_intrface_rec.discretionary_networth_amt ;
6055 n := n + 1 ;
6056 lv_corr_tab.extend;
6057
6058 lv_corr_tab(n).column_name := 'EFC_NETWORTH';
6059 lv_corr_tab(n).column_value := g_isir_intrface_rec.efc_networth_amt ;
6060 n := n + 1 ;
6061 lv_corr_tab.extend;
6062
6063 lv_corr_tab(n).column_name := 'ASSET_PROTECT_ALLOW';
6064 lv_corr_tab(n).column_value := g_isir_intrface_rec.asset_protect_allow_amt ;
6065 n := n + 1 ;
6066 lv_corr_tab.extend;
6067
6068 lv_corr_tab(n).column_name := 'PARENTS_CONT_FROM_ASSETS';
6069 lv_corr_tab(n).column_value := g_isir_intrface_rec.parents_cont_from_assets_amt ;
6070 n := n + 1 ;
6071 lv_corr_tab.extend;
6072
6073 lv_corr_tab(n).column_name := 'ADJUSTED_AVAILABLE_INCOME';
6074 lv_corr_tab(n).column_value := g_isir_intrface_rec.adjusted_avail_income_amt ;
6075 n := n + 1 ;
6076 lv_corr_tab.extend;
6077
6078 lv_corr_tab(n).column_name := 'TOTAL_STUDENT_CONTRIBUTION';
6079 lv_corr_tab(n).column_value := g_isir_intrface_rec.total_student_contrib_amt ;
6080 n := n + 1 ;
6081 lv_corr_tab.extend;
6082
6083 lv_corr_tab(n).column_name := 'TOTAL_PARENT_CONTRIBUTION';
6084 lv_corr_tab(n).column_value := g_isir_intrface_rec.total_parent_contrib_amt ;
6085 n := n + 1 ;
6086 lv_corr_tab.extend;
6087
6088 lv_corr_tab(n).column_name := 'PARENTS_CONTRIBUTION';
6089 lv_corr_tab(n).column_value := g_isir_intrface_rec.parents_contribution_amt ;
6090 n := n + 1 ;
6091 lv_corr_tab.extend;
6092
6093 lv_corr_tab(n).column_name := 'STUDENT_TOTAL_INCOME';
6094 lv_corr_tab(n).column_value := g_isir_intrface_rec.student_total_income_amt ;
6095 n := n + 1 ;
6096 lv_corr_tab.extend;
6097
6098 lv_corr_tab(n).column_name := 'SATI';
6099 lv_corr_tab(n).column_value := g_isir_intrface_rec.sati_amt ;
6100 n := n + 1 ;
6101 lv_corr_tab.extend;
6102
6103 lv_corr_tab(n).column_name := 'SIC';
6104 lv_corr_tab(n).column_value := g_isir_intrface_rec.sic_amt ;
6105 n := n + 1 ;
6106 lv_corr_tab.extend;
6107
6108 lv_corr_tab(n).column_name := 'SDNW';
6109 lv_corr_tab(n).column_value := g_isir_intrface_rec.sdnw_amt ;
6110 n := n + 1 ;
6111 lv_corr_tab.extend;
6112
6113 lv_corr_tab(n).column_name := 'SCA';
6114 lv_corr_tab(n).column_value := g_isir_intrface_rec.sca_amt ;
6115 n := n + 1 ;
6116 lv_corr_tab.extend;
6117
6118 lv_corr_tab(n).column_name := 'FTI';
6119 lv_corr_tab(n).column_value := g_isir_intrface_rec.fti_amt ;
6120 n := n + 1 ;
6121 lv_corr_tab.extend;
6122
6123 lv_corr_tab(n).column_name := 'SECTI';
6124 lv_corr_tab(n).column_value := g_isir_intrface_rec.secti_amt ;
6125 n := n + 1 ;
6126 lv_corr_tab.extend;
6127
6128 lv_corr_tab(n).column_name := 'SECATI';
6129 lv_corr_tab(n).column_value := g_isir_intrface_rec.secati_amt ;
6130 n := n + 1 ;
6131 lv_corr_tab.extend;
6132
6133 lv_corr_tab(n).column_name := 'SECSTX';
6134 lv_corr_tab(n).column_value := g_isir_intrface_rec.secstx_amt ;
6135 n := n + 1 ;
6136 lv_corr_tab.extend;
6137
6138 lv_corr_tab(n).column_name := 'SECEA';
6139 lv_corr_tab(n).column_value := g_isir_intrface_rec.secea_amt ;
6140 n := n + 1 ;
6141 lv_corr_tab.extend;
6142
6143 lv_corr_tab(n).column_name := 'SECIPA';
6144 lv_corr_tab(n).column_value := g_isir_intrface_rec.secipa_amt ;
6145 n := n + 1 ;
6146 lv_corr_tab.extend;
6147
6148 lv_corr_tab(n).column_name := 'SECAI';
6149 lv_corr_tab(n).column_value := g_isir_intrface_rec.secai_amt ;
6150 n := n + 1 ;
6151 lv_corr_tab.extend;
6152
6153 lv_corr_tab(n).column_name := 'SECCAI';
6154 lv_corr_tab(n).column_value := g_isir_intrface_rec.seccai_amt ;
6155 n := n + 1 ;
6156 lv_corr_tab.extend;
6157
6158 lv_corr_tab(n).column_name := 'SECDNW';
6159 lv_corr_tab(n).column_value := g_isir_intrface_rec.secdnw_amt ;
6160 n := n + 1 ;
6161 lv_corr_tab.extend;
6162
6163 lv_corr_tab(n).column_name := 'SECNW';
6164 lv_corr_tab(n).column_value := g_isir_intrface_rec.secnw_amt ;
6165 n := n + 1 ;
6166 lv_corr_tab.extend;
6167
6168 lv_corr_tab(n).column_name := 'SECAPA';
6169 lv_corr_tab(n).column_value := g_isir_intrface_rec.secapa_amt ;
6170 n := n + 1 ;
6171 lv_corr_tab.extend;
6172
6173 lv_corr_tab(n).column_name := 'SECPCA';
6174 lv_corr_tab(n).column_value := g_isir_intrface_rec.SECPCA_AMT ;
6175 n := n + 1 ;
6176 lv_corr_tab.extend;
6177
6178 lv_corr_tab(n).column_name := 'SECAAI';
6179 lv_corr_tab(n).column_value := g_isir_intrface_rec.secaai_amt ;
6180 n := n + 1 ;
6181 lv_corr_tab.extend;
6182
6183 lv_corr_tab(n).column_name := 'SECTSC';
6184 lv_corr_tab(n).column_value := g_isir_intrface_rec.sectsc_amt ;
6185 n := n + 1 ;
6186 lv_corr_tab.extend;
6187
6188 lv_corr_tab(n).column_name := 'SECTPC';
6189 lv_corr_tab(n).column_value := g_isir_intrface_rec.sectpc_amt ;
6190 n := n + 1 ;
6191 lv_corr_tab.extend;
6192
6193 lv_corr_tab(n).column_name := 'SECPC';
6194 lv_corr_tab(n).column_value := g_isir_intrface_rec.secpc_amt ;
6195 n := n + 1 ;
6196 lv_corr_tab.extend;
6197
6198 lv_corr_tab(n).column_name := 'SECSTI';
6199 lv_corr_tab(n).column_value := g_isir_intrface_rec.secsti_amt ;
6200 n := n + 1 ;
6201 lv_corr_tab.extend;
6202
6203 lv_corr_tab(n).column_name := 'SECSIC';
6204 lv_corr_tab(n).column_value := g_isir_intrface_rec.secsic_amt ;
6205 n := n + 1 ;
6206 lv_corr_tab.extend;
6207
6208 lv_corr_tab(n).column_name := 'SECSATI';
6209 lv_corr_tab(n).column_value := g_isir_intrface_rec.secsati_amt ;
6210 n := n + 1 ;
6211 lv_corr_tab.extend;
6212
6213 lv_corr_tab(n).column_name := 'SECSDNW';
6214 lv_corr_tab(n).column_value := g_isir_intrface_rec.secsdnw_amt ;
6215 n := n + 1 ;
6216 lv_corr_tab.extend;
6217
6218 lv_corr_tab(n).column_name := 'SECSCA';
6219 lv_corr_tab(n).column_value := g_isir_intrface_rec.secsca_amt ;
6220 n := n + 1 ;
6221 lv_corr_tab.extend;
6222
6223 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6224 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Processing correction items7');
6225 END IF;
6226
6227 lv_corr_tab(n).column_name := 'SECFTI';
6228 lv_corr_tab(n).column_value := g_isir_intrface_rec.secfti_amt ;
6229 n := n + 1 ;
6230 lv_corr_tab.extend;
6231
6232 lv_corr_tab(n).column_name := 'A_CITIZENSHIP';
6233 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_citizenship_flag ;
6234 n := n + 1 ;
6235 lv_corr_tab.extend;
6236
6237 lv_corr_tab(n).column_name := 'A_STUDENT_MARITAL_STATUS';
6238 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_studnt_marital_status_flag ;
6239 n := n + 1 ;
6240 lv_corr_tab.extend;
6241
6242 lv_corr_tab(n).column_name := 'A_STUDENT_AGI';
6243 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_student_agi_amt ;
6244 n := n + 1 ;
6245 lv_corr_tab.extend;
6246
6247 lv_corr_tab(n).column_name := 'A_S_US_TAX_PAID';
6248 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_s_us_tax_paid_amt ;
6249 n := n + 1 ;
6250 lv_corr_tab.extend;
6251
6252 lv_corr_tab(n).column_name := 'A_S_INCOME_WORK';
6253 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_s_income_work_amt ;
6254 n := n + 1 ;
6255 lv_corr_tab.extend;
6256
6257 lv_corr_tab(n).column_name := 'A_SPOUSE_INCOME_WORK';
6258 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_spouse_income_work_amt ;
6259 n := n + 1 ;
6260 lv_corr_tab.extend;
6261
6262 lv_corr_tab(n).column_name := 'A_S_TOTAL_WSC';
6263 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_s_total_wsc_amt ;
6264 n := n + 1 ;
6265 lv_corr_tab.extend;
6266
6267 lv_corr_tab(n).column_name := 'A_DATE_OF_BIRTH';
6268 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_date_of_birth_flag ;
6269 n := n + 1 ;
6270 lv_corr_tab.extend;
6271
6272 lv_corr_tab(n).column_name := 'A_STUDENT_MARRIED';
6273 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_student_married_flag ;
6274 n := n + 1 ;
6275 lv_corr_tab.extend;
6276
6277 lv_corr_tab(n).column_name := 'A_HAVE_CHILDREN';
6278 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_have_children_flag ;
6279 n := n + 1 ;
6280 lv_corr_tab.extend;
6281
6282 lv_corr_tab(n).column_name := 'A_S_HAVE_DEPENDENTS';
6283 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_s_have_dependents_flag ;
6284 n := n + 1 ;
6285 lv_corr_tab.extend;
6286
6287 lv_corr_tab(n).column_name := 'A_VA_STATUS';
6288 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_va_status_flag ;
6289 n := n + 1 ;
6290 lv_corr_tab.extend;
6291
6292 lv_corr_tab(n).column_name := 'A_S_NUM_IN_FAMILY';
6293 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_s_in_family_num ;
6294 n := n + 1 ;
6295 lv_corr_tab.extend;
6296
6297 lv_corr_tab(n).column_name := 'A_S_NUM_IN_COLLEGE';
6298 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_s_in_college_num ;
6299 n := n + 1 ;
6300 lv_corr_tab.extend;
6301
6302 lv_corr_tab(n).column_name := 'A_P_MARITAL_STATUS';
6303 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_p_marital_status_flag ;
6304 n := n + 1 ;
6305 lv_corr_tab.extend;
6306
6307 lv_corr_tab(n).column_name := 'A_FATHER_SSN';
6308 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_father_ssn_txt ;
6309 n := n + 1 ;
6310 lv_corr_tab.extend;
6311
6312 lv_corr_tab(n).column_name := 'A_MOTHER_SSN';
6313 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_mother_ssn_txt ;
6314 n := n + 1 ;
6315 lv_corr_tab.extend;
6316
6317 lv_corr_tab(n).column_name := 'A_PARENTS_NUM_FAMILY';
6318 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_parents_family_num ;
6319 n := n + 1 ;
6320 lv_corr_tab.extend;
6321
6322 lv_corr_tab(n).column_name := 'A_PARENTS_NUM_COLLEGE';
6323 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_parents_college_num ;
6324 n := n + 1 ;
6325 lv_corr_tab.extend;
6326
6327 lv_corr_tab(n).column_name := 'A_PARENTS_AGI';
6328 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_parents_agi_amt ;
6329 n := n + 1 ;
6330 lv_corr_tab.extend;
6331
6332 lv_corr_tab(n).column_name := 'A_P_US_TAX_PAID';
6333 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_p_us_tax_paid_amt ;
6334 n := n + 1 ;
6335 lv_corr_tab.extend;
6336
6337 lv_corr_tab(n).column_name := 'A_F_WORK_INCOME';
6338 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_f_work_income_amt ;
6339 n := n + 1 ;
6340 lv_corr_tab.extend;
6341
6342 lv_corr_tab(n).column_name := 'A_M_WORK_INCOME';
6343 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_m_work_income_amt ;
6344 n := n + 1 ;
6345 lv_corr_tab.extend;
6346
6347 lv_corr_tab(n).column_name := 'A_P_TOTAL_WSC';
6348 lv_corr_tab(n).column_value := g_isir_intrface_rec.a_p_total_wsc_amt ;
6349 n := n + 1 ;
6350 lv_corr_tab.extend;
6351
6352 lv_corr_tab(n).column_name := 'COMMENT_CODES';
6353 lv_corr_tab(n).column_value := g_isir_intrface_rec.comment_codes_txt ;
6354 n := n + 1 ;
6355 lv_corr_tab.extend;
6356
6357 lv_corr_tab(n).column_name := 'SAR_ACK_COMM_CODE';
6358 lv_corr_tab(n).column_value := g_isir_intrface_rec.sar_ack_comm_codes_txt ;
6359 n := n + 1 ;
6360 lv_corr_tab.extend;
6361
6362 lv_corr_tab(n).column_name := 'PELL_GRANT_ELIG_FLAG';
6363 lv_corr_tab(n).column_value := g_isir_intrface_rec.pell_grant_elig_flag ;
6364 n := n + 1 ;
6365 lv_corr_tab.extend;
6366
6367 lv_corr_tab(n).column_name := 'REPROCESS_REASON_CODE';
6368 lv_corr_tab(n).column_value := g_isir_intrface_rec.reprocess_reason_cd ;
6369 n := n + 1 ;
6370 lv_corr_tab.extend;
6371
6372 lv_corr_tab(n).column_name := 'DUPLICATE_DATE';
6373 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.duplicate_date) ;
6374 n := n + 1 ;
6375 lv_corr_tab.extend;
6376
6377 lv_corr_tab(n).column_name := 'ISIR_TRANSACTION_TYPE';
6378 lv_corr_tab(n).column_value := g_isir_intrface_rec.isir_transaction_type ;
6379 n := n + 1 ;
6380 lv_corr_tab.extend;
6381
6382 lv_corr_tab(n).column_name := 'FEDRAL_SCHL_CODE_INDICATOR';
6383 lv_corr_tab(n).column_value := g_isir_intrface_rec.fedral_schl_type ;
6384 n := n + 1 ;
6385 lv_corr_tab.extend;
6386
6387 lv_corr_tab(n).column_name := 'MULTI_SCHOOL_CODE_FLAGS';
6388 lv_corr_tab(n).column_value := g_isir_intrface_rec.multi_school_cd_flags_txt ;
6389 n := n + 1 ;
6390 lv_corr_tab.extend;
6391
6392 lv_corr_tab(n).column_name := 'DUP_SSN_INDICATOR';
6393 lv_corr_tab(n).column_value := g_isir_intrface_rec.dup_ssn_indicator_flag ;
6394 n := n + 1 ;
6395 lv_corr_tab.extend;
6396
6397 lv_corr_tab(n).column_name := 'FAFSA_DATA_VERIFY_FLAGS';
6398 lv_corr_tab(n).column_value := g_isir_intrface_rec.fafsa_data_verification_txt ;
6399 n := n + 1 ;
6400 lv_corr_tab.extend;
6401
6402 lv_corr_tab(n).column_name := 'REJECT_OVERRIDE_A';
6403 lv_corr_tab(n).column_value := g_isir_intrface_rec.reject_override_a_flag ;
6404 n := n + 1 ;
6405 lv_corr_tab.extend;
6406
6407 lv_corr_tab(n).column_name := 'REJECT_OVERRIDE_C';
6408 lv_corr_tab(n).column_value := g_isir_intrface_rec.reject_override_c_flag ;
6409 n := n + 1 ;
6410 lv_corr_tab.extend;
6411
6412 lv_corr_tab(n).column_name := 'PARENT_MARITAL_STATUS_DATE';
6413 lv_corr_tab(n).column_value := to_char(g_isir_intrface_rec.parent_marital_status_date, 'YYYYMM') ;
6414 n := n + 1 ;
6415 lv_corr_tab.extend;
6416
6417 lv_corr_tab(n).column_name := 'FATHER_FIRST_NAME_INITIAL_TXT';
6418 lv_corr_tab(n).column_value := g_isir_intrface_rec.fathr_first_name_initial_txt ;
6419 n := n + 1 ;
6420 lv_corr_tab.extend;
6421
6422 lv_corr_tab(n).column_name := 'FATHER_STEP_FATHER_BIRTH_DATE';
6423 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.fathr_step_father_birth_date) ;
6424 n := n + 1 ;
6425 lv_corr_tab.extend;
6426
6427 lv_corr_tab(n).column_name := 'MOTHER_FIRST_NAME_INITIAL_TXT';
6428 lv_corr_tab(n).column_value := g_isir_intrface_rec.mothr_first_name_initial_txt ;
6429 n := n + 1 ;
6430 lv_corr_tab.extend;
6431
6432 lv_corr_tab(n).column_name := 'MOTHER_STEP_MOTHER_BIRTH_DATE';
6433 lv_corr_tab(n).column_value := fnd_date.date_to_chardate(g_isir_intrface_rec.mothr_step_mother_birth_date) ;
6434 n := n + 1 ;
6435 lv_corr_tab.extend;
6436
6437 lv_corr_tab(n).column_name := 'DHS_VERIFICATION_NUM_TXT';
6438 lv_corr_tab(n).column_value := g_isir_intrface_rec.dhs_verification_num_txt ;
6439 n := n + 1 ;
6440 lv_corr_tab.extend;
6441
6442 lv_corr_tab(n).column_name := 'PARENTS_EMAIL_ADDRESS_TXT';
6443 lv_corr_tab(n).column_value := g_isir_intrface_rec.parents_email_address_txt ;
6444
6445 lv_tot := lv_corr_tab.COUNT;
6446
6447
6448 -- Initialised to assume that the user has no New corrections
6449 lv_all_corr_rcvd := 'Y' ;
6450 l_corr_stat := 'ACKNOWLEDGED' ;
6451
6452 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6453 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Correction poulation completed.');
6454 END IF;
6455
6456 FOR isir_corr_rec IN cur_ISIR_corr(g_base_id, l_corr_stat )
6457 LOOP
6458 -- loop thru the Pl/SQL table and match columns
6459 FOR n in 1..lv_tot
6460 LOOP
6461
6462 IF isir_corr_rec.column_name = lv_corr_tab(n).column_name THEN
6463
6464 IF isir_corr_rec.column_name IN ('S_LEGAL_RESD_DATE', 'PARENT_MARITAL_STATUS_DATE', 'S_MARITAL_STATUS_DATE', 'P_LEGAL_RES_DATE') THEN
6465
6466 l_corrected_value := to_char(fnd_date.chardate_to_date(isir_corr_rec.corrected_value), 'YYYYMM');
6467 l_column_value := lv_corr_tab(n).column_value ;
6468
6469 ELSE
6470 l_corrected_value := NVL(isir_corr_rec.corrected_value,'##');
6471 l_column_value := NVL(lv_corr_tab(n).column_value,'##');
6472 END IF;
6473
6474 -- Current col in pl/sql table reached
6475 IF l_corrected_value = l_column_value THEN
6476 -- update only if it is not already acknowledged
6477 IF NOT igf_ap_isir_corr_pkg.get_uk_for_validation( NVL(p_new_isir_id,isir_corr_rec.isir_id),
6478 isir_corr_rec.sar_field_number,
6479 'ACKNOWLEDGED') THEN
6480 igf_ap_ISIR_corr_pkg.update_row (
6481 x_rowid => isir_corr_rec.row_id,
6482 x_ISIRc_id => isir_corr_rec.ISIRc_id,
6483 x_ISIR_id => NVL(p_new_isir_id,isir_corr_rec.isir_id),
6484 x_ci_sequence_number => isir_corr_rec.ci_sequence_number,
6485 x_ci_cal_type => isir_corr_rec.ci_cal_type,
6486 x_sar_field_number => isir_corr_rec.sar_field_number,
6487 x_original_value => isir_corr_rec.original_value,
6488 x_batch_id => isir_corr_rec.batch_id,
6489 x_corrected_value => isir_corr_rec.corrected_value,
6490 x_correction_status => 'ACKNOWLEDGED',
6491 x_mode => 'R');
6492 RAM_I_CORR := RAM_I_CORR +1;
6493 END IF;
6494
6495 fnd_message.set_name('IGF','IGF_AP_ISIR_CORR_ACK');
6496 fnd_message.set_token('FIELD', isir_corr_rec.column_name);
6497 fnd_file.put_line(fnd_file.log,fnd_message.get);
6498
6499 ELSE
6500 -- Set the flag that there are still corrections.
6501 lv_all_corr_rcvd := 'N' ;
6502
6503 -- update only if the matching record is not already in ready status
6504 IF NOT igf_ap_isir_corr_pkg.get_uk_for_validation( NVL(p_new_isir_id,isir_corr_rec.isir_id),
6505 isir_corr_rec.sar_field_number,
6506 'READY') THEN
6507 igf_ap_ISIR_corr_pkg.update_row (
6508 x_rowid => isir_corr_rec.row_id,
6509 x_ISIRc_id => isir_corr_rec.ISIRc_id,
6510 x_ISIR_id => NVL(p_new_isir_id,isir_corr_rec.isir_id),
6511 x_ci_sequence_number => isir_corr_rec.ci_sequence_number,
6512 x_ci_cal_type => isir_corr_rec.ci_cal_type,
6513 x_sar_field_number => isir_corr_rec.sar_field_number,
6514 x_original_value => isir_corr_rec.original_value,
6515 x_batch_id => isir_corr_rec.batch_id,
6516 x_corrected_value => isir_corr_rec.corrected_value,
6517 x_correction_status => 'READY',
6518 x_mode => 'R');
6519 RAM_U_CORR := RAM_U_CORR +1;
6520 END IF;
6521
6522 g_count_corr := g_count_corr + 1;
6523 fnd_message.set_name('IGF','IGF_AP_ISIR_CORR_READY');
6524 fnd_message.set_token('FIELD', isir_corr_rec.column_name);
6525 fnd_file.put_line(fnd_file.log,fnd_message.get);
6526 END IF;
6527
6528 -- Column found and updated hence exit and move to next correction
6529 EXIT;
6530
6531 END IF;
6532
6533 END LOOP; -- n in 1..lv_tot
6534
6535 -- Get the next correction.
6536 END LOOP; -- isir_corr_rec
6537
6538 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6539 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.validate_correction_school.debug','Corrections updated...');
6540 END IF;
6541
6542
6543 IF p_new_isir_is_pymnt_isir = 'Y' THEN
6544 -- Payment ISIR is got changed
6545 -- So update the Payment ISIR ID for all existing correction records that Have not been udated
6546 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6547 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.debug','Before updating the paymnet ISIR');
6548 END IF;
6549
6550 FOR l_cur_isir_corr_pymnt IN cur_isir_corr_pymt(p_old_payment_isir)
6551 LOOP
6552
6553 -- update only if not already in the said status
6554 IF NOT igf_ap_isir_corr_pkg.get_uk_for_validation( p_new_isir_id,
6555 l_cur_isir_corr_pymnt.sar_field_number,
6556 l_cur_isir_corr_pymnt.correction_status) THEN
6557
6558 igf_ap_ISIR_corr_pkg.update_row (
6559 x_rowid => l_cur_isir_corr_pymnt.row_id,
6560 x_ISIRc_id => l_cur_isir_corr_pymnt.ISIRc_id,
6561 x_ISIR_id => p_new_isir_id,
6562 x_ci_sequence_number => l_cur_isir_corr_pymnt.ci_sequence_number,
6563 x_ci_cal_type => l_cur_isir_corr_pymnt.ci_cal_type,
6564 x_sar_field_number => l_cur_isir_corr_pymnt.sar_field_number,
6565 x_original_value => l_cur_isir_corr_pymnt.original_value,
6566 x_batch_id => l_cur_isir_corr_pymnt.batch_id,
6567 x_corrected_value => l_cur_isir_corr_pymnt.corrected_value,
6568 x_correction_status => l_cur_isir_corr_pymnt.correction_status,
6569 x_mode => 'R');
6570 RAM_U_CORR := RAM_U_CORR +1;
6571 END IF;
6572
6573 END LOOP;
6574
6575 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6576 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.debug','Updated ISIR Information for Correction Items to New Payment ISIR');
6577 END IF;
6578 END IF; -- payment isir check
6579
6580
6581 IF lv_all_corr_rcvd = 'Y' THEN
6582
6583 -- Since all corrections are recieved, delete existing CORRECTION ISIR record in the ISIR matched table
6584 -- (so that the save as correction record functionality is enabled in the ISIR review SS Page)
6585 -- Return Y to OUT parameter so that the newly created ISIR, can now be made as the Active ISIR
6586
6587 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6588 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.debug','All Corrections received..');
6589 END IF;
6590
6591 -- Bug 4403807 - changed the argument to get_isir from p_new_isir_id to NVL(p_new_isir_id,p_new_payment_isir)
6592 FOR cur_new_isir_rec IN get_ISIR(NVL(p_new_isir_id,p_new_payment_isir)) LOOP
6593 l_cor_isir := NULL;
6594
6595 -- get Correction type ISIR.
6596 OPEN get_corr_isir(cur_new_isir_rec.base_id);
6597 FETCH get_corr_isir INTO l_cor_isir;
6598 CLOSE get_corr_isir;
6599
6600 -- now delete the correction isir
6601 IF l_cor_isir.row_id IS NOT NULL THEN
6602 igf_ap_isir_matched_pkg.delete_row(l_cor_isir.row_id); -- delete the correction type isir.
6603
6604 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6605 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.debug','Deleted existing Correction ISIR ID: ' || l_cor_isir.isir_id);
6606 END IF;
6607 END IF;
6608
6609 -- update the new ISIR record to make it an ACTIVE ISIR as all corrections have been received.
6610 update_isir_matched_rec(p_isir_matched_record => cur_new_isir_rec,
6611 p_payment_isir => cur_new_isir_rec.payment_isir,
6612 p_active_isir => 'Y');
6613
6614 -- bbb case 3
6615 -- get first the EFC data for Corr ISIR before deleting and do cmp
6616 -- also chk for ant data
6617 l_anticip_status := NULL;
6618 l_awd_prc_status := NULL;
6619 igf_ap_isir_gen_pkg.upd_ant_data_awd_prc_status( p_old_active_isir_id => g_old_active_isir_id,
6620 p_new_active_isir_id => p_new_payment_isir,
6621 p_upd_ant_val => g_upd_ant_val,
6622 p_anticip_status => l_anticip_status,
6623 p_awd_prc_status => l_awd_prc_status
6624 );
6625
6626 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6627 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.debug','Made the new ISIR as Active ISIR for ISIR ID: ' || cur_new_isir_rec.isir_id);
6628 END IF;
6629 END LOOP;
6630 END IF; -- lv_all_corr_rcvd = 'Y'
6631
6632 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6633 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.debug','Successfully processed corrections.');
6634 END IF;
6635
6636 EXCEPTION
6637 WHEN OTHERS THEN
6638 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
6639 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_corrections.exception','The exception is : ' || SQLERRM );
6640 END IF;
6641 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
6642 fnd_message.set_token('NAME','PROCESS_ISIR_RECEIPT.PROCESS_CORRECTIONS');
6643 fnd_file.put_line(fnd_file.log,fnd_message.get);
6644 igs_ge_msg_stack.add;
6645
6646 lv_param_values := TO_CHAR(g_Base_Id)||','|| TO_CHAR(p_new_isir_id);
6647
6648 fnd_message.set_name('IGS','IGS_GE_PARAMETERS');
6649 fnd_message.set_token('VALUE',lv_param_values);
6650 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
6651 igs_ge_msg_stack.add;
6652 app_exception.raise_exception;
6653 END process_corrections;
6654
6655 PROCEDURE process_non_payment_isir
6656 IS
6657 /*
6658 || Created By : rgangara
6659 || Created On : 19-AUG-2004
6660 || Purpose : This Procedure processes the incoming ISIR as a Non Payment ISIR.
6661 || This procedure gets executed only when the Pell Match Type is 'O'.
6662 || This process Inserts a Non Payment ISIR, NSLDS data, TODO Processing.
6663 || Known limitations, enhancements or remarks :
6664 || Change History :
6665 || Who When What
6666 */
6667
6668 lv_isir_id NUMBER;
6669 l_nslds_id NUMBER;
6670 lv_corrected_isir NUMBER;
6671 BEGIN
6672
6673 log_debug_message(' Beginning process_non_payment_isir Proc');
6674 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6675 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_non_payment_isir.debug','Beginning processing the ISIR as a NON Payment ISIR.');
6676 END IF;
6677
6678 -- call procedure to insert a row into isir matched table.
6679 insert_isir_matched_rec(cp_isir_int_rec => g_isir_intrface_rec,
6680 p_payment_isir => 'N',
6681 p_active_isir => 'N',
6682 p_base_id => g_base_id,
6683 p_out_isir_id => lv_isir_id -- OUT parameter returns value of isir id.
6684 );
6685
6686 -- insert record into NSLDS data table for the new transaction num
6687 insert_nslds_data_rec(cp_isir_intrface_rec => g_isir_intrface_rec,
6688 p_isir_id => lv_isir_id,
6689 p_base_id => g_base_id,
6690 p_out_nslds_id => l_nslds_id
6691 );
6692
6693 -- call procedure to update TODO items
6694 process_todo_items(p_base_id => g_base_id,
6695 p_payment_isir => 'N');
6696
6697
6698 -- #4871790
6699 IGF_AP_BATCH_VER_PRC_PKG.update_process_status(
6700 p_base_id => g_base_id,
6701 p_fed_verif_status => NULL);
6702
6703 -- Bug 4403807 - adding the process_corrections procedure
6704 IF g_isir_intrface_rec.processed_rec_type = 'H' THEN
6705 get_corrected_isir(p_base_id => g_base_id, p_isir_id => lv_corrected_isir);
6706 IF lv_corrected_isir IS NOT NULL THEN
6707 process_corrections( p_old_payment_isir => lv_corrected_isir,
6708 p_new_payment_isir => lv_isir_id,
6709 p_new_isir_is_pymnt_isir => 'N');
6710 END IF;
6711 END IF;
6712
6713 -- update ISIR int record status
6714 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
6715 p_isir_rec_status => 'MATCHED',
6716 p_match_code => NULL);
6717
6718 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6719 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_non_payment_isir.debug','Completed processing the ISIR as a NON Payment ISIR.');
6720 END IF;
6721 log_debug_message(' Completed process_non_payment_isir Proc');
6722
6723 EXCEPTION
6724 WHEN OTHERS THEN
6725 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
6726 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_non_payment_isir.exception','The exception is : ' || SQLERRM );
6727 END IF;
6728
6729 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
6730 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.process_non_payment_isir');
6731 igs_ge_msg_stack.add;
6732 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
6733 app_exception.raise_exception;
6734 END process_non_payment_isir;
6735
6736 PROCEDURE process_new_isir_rec IS
6737 /*
6738 || Created By : rgangara
6739 || Created On : 03-AUG-2004
6740 || Purpose : For processing ISIR recs with pell match type as 'N'.
6741 || This also indicates that the isir is a valid isir and would become a payment isir.
6742 || Known limitations, enhancements or remarks :
6743 || Change History :
6744 || Who When What
6745 || museshad 23-MAY-2005 Replaced the incorrect message name
6746 || 'IGF_LAON_NEW_PYMNT_ISIR' with
6747 || 'IGF_AP_LN_NEW_PYMNT_ISIR'
6748 || (reverse chronological order - newest change first)
6749 */
6750
6751 CURSOR cur_fabase (pn_base_id NUMBER) IS
6752 SELECT fa.*
6753 FROM igf_ap_fa_base_rec fa
6754 WHERE fa.base_id = pn_base_id FOR UPDATE NOWAIT ;
6755
6756 lv_cur_fabase_rec cur_fabase%ROWTYPE;
6757
6758
6759 CURSOR cur_old_pymt_isir(pn_base_id NUMBER) IS
6760 SELECT im.*
6761 FROM igf_ap_isir_matched im
6762 WHERE im.base_id = pn_base_id
6763 AND im.payment_isir = 'Y';
6764
6765 old_pymt_isir_rec cur_old_pymt_isir%ROWTYPE;
6766
6767
6768 CURSOR person_cur (ln_person_id igf_ap_fa_base_rec.person_id%TYPE) IS
6769 SELECT party_number person_number
6770 FROM hz_parties
6771 WHERE party_id = ln_person_id;
6772
6773 -- Get the privious Active ISIR id for the base id.
6774 CURSOR cur_old_active_isir(cp_base_id igf_ap_fa_base_rec_all.base_id%TYPE) IS
6775 SELECT isir_id
6776 FROM igf_ap_isir_matched_all
6777 WHERE base_id = cp_base_id
6778 AND active_isir = 'Y';
6779
6780 CURSOR cur_loan_orig_chk(cp_base_id igf_ap_fa_base_rec_all.base_id%TYPE) IS
6781 SELECT
6782 'X'
6783 FROM
6784 IGF_SL_LOR_ALL LOR, IGF_SL_LOANS_ALL LOAN,
6785 IGF_AW_AWARD_ALL AWD, igf_ap_isir_matched_all m
6786 WHERE
6787 m.base_id = awd.base_id and
6788 awd.award_id = loan.award_id and
6789 loan.loan_id = lor.loan_id and
6790 m.base_id = cp_base_id;
6791
6792
6793 lv_dummy VARCHAR2(1);
6794
6795 person_rec person_cur%ROWTYPE;
6796
6797 lv_payment_isir VARCHAR2(1);
6798 lv_rowid VARCHAR2(30);
6799 lv_status VARCHAR2(30);
6800 is_orig_isir_exists BOOLEAN;
6801 lv_isir_id igf_ap_isir_matched.isir_id%TYPE;
6802 lv_nslds_id NUMBER;
6803 lv_all_corr_rcvd VARCHAR2(1);
6804
6805 BEGIN
6806
6807 -- initialize variables
6808 lv_payment_isir := 'Y';
6809 lv_all_corr_rcvd := 'Y';
6810
6811 -- Load the Base Record Details as it mandatorily exists for a NEW pell type matched person
6812 OPEN cur_fabase(g_base_id);
6813 FETCH cur_fabase INTO lv_cur_fabase_rec;
6814 CLOSE cur_fabase;
6815
6816 -- bbb
6817 -- Get the Old Active ISIR ID for updating the Anticipated data and Award Prcoess status
6818 g_old_active_isir_id := NULL;
6819 OPEN cur_old_active_isir(g_base_id);
6820 FETCH cur_old_active_isir INTO g_old_active_isir_id;
6821 CLOSE cur_old_active_isir;
6822
6823 g_person_id := lv_cur_fabase_rec.person_id;
6824
6825 -- Check if the New ISIR is an Original ISIR or a Correction ISIR.
6826 IF g_isir_intrface_rec.processed_rec_type = 'H' THEN -- This is an CORRECTION ISIR
6827 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6828 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.debug','This ISIR is a Correction ISIR');
6829 END IF;
6830
6831 -- since correction ISIR. Perform school validation and determine flags for further processing
6832 validate_correction_school(p_payment_isir => lv_payment_isir);
6833
6834 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6835 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.debug','validate_correction_school returns Payment ISIR Flag as ' || lv_payment_isir);
6836 END IF;
6837 END IF;
6838
6839
6840 -- perform further processing based on the payment isir flag
6841
6842 IF lv_payment_isir = 'Y' THEN -- i.e. the new isir being processed need to be created as a payment isir.
6843
6844 -- check if any payment isir already exists for this base id. If exists, it has to be updated to be a Non payment isir.
6845 OPEN cur_old_pymt_isir(g_base_id);
6846 FETCH cur_old_pymt_isir INTO old_pymt_isir_rec;
6847 CLOSE cur_old_pymt_isir;
6848
6849 IF old_pymt_isir_rec.isir_id IS NOT NULL THEN -- -- i.e. there already exists a payment isir.
6850
6851 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6852 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.debug','Old Payment ISIR Rec exists. Old Payment ISIR No: ' || old_pymt_isir_rec.isir_id);
6853 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.debug','Old Payment Transaction No.: ' || old_pymt_isir_rec.Transaction_num);
6854 END IF;
6855 log_debug_message('Old Payment ISIR Exists. Making it a Non Payment isir ' || old_pymt_isir_rec.isir_id || ' Trans: ' || old_pymt_isir_rec.Transaction_Num || ' Active: ' || old_pymt_isir_rec.Active_isir);
6856
6857 -- check if PELL is already granted for the old payment isir. If so, log a warning message before updating.
6858 is_orig_isir_exists := igf_gr_gen.chk_orig_isir_exists(g_base_id, old_pymt_isir_rec.transaction_num);
6859
6860 IF is_orig_isir_exists THEN
6861 OPEN person_cur(g_person_id);
6862 FETCH person_cur INTO person_rec;
6863 CLOSE person_cur;
6864
6865 fnd_message.set_name('IGF','IGF_GR_NEW_PYMNT_ISIR');
6866 fnd_message.set_token('PERSON_NUMBER',person_rec.person_number);
6867 fnd_file.put_line(fnd_file.log, fnd_message.get);
6868 END IF;
6869
6870 -- Check if Loan is originated for the student
6871 lv_dummy := null;
6872 OPEN cur_loan_orig_chk(g_base_id);
6873 FETCH cur_loan_orig_chk INTO lv_dummy;
6874 IF cur_loan_orig_chk%FOUND THEN
6875 CLOSE cur_loan_orig_chk;
6876 OPEN person_cur(g_person_id);
6877 FETCH person_cur INTO person_rec;
6878 CLOSE person_cur;
6879
6880 -- museshad (Bug# 4091601): Modified the incorrect message name
6881 fnd_message.set_name('IGF','IGF_AP_LN_NEW_PYMNT_ISIR');
6882 fnd_message.set_token('PERSON_NUMBER',person_rec.person_number);
6883 fnd_file.put_line(fnd_file.log, fnd_message.get);
6884 ELSE
6885 CLOSE cur_loan_orig_chk;
6886 END IF;
6887 -- Making old ISIR non payment
6888 make_old_isir_non_payment(g_base_id);
6889
6890 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6891 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.debug','Made the exisiting payment ISIR as Non Payment ISIR');
6892 END IF;
6893 END IF; --old_pymt_isir_rec
6894 END IF; -- lv_payment_isir
6895
6896 -- insert the NEW isir as a Payment isir.
6897 insert_isir_matched_rec(cp_isir_int_rec => g_isir_intrface_rec,
6898 p_payment_isir => lv_payment_isir,
6899 p_active_isir => 'N', -- Non active isir. May get updated based on correction processing
6900 p_base_id => g_base_id,
6901 p_out_isir_id => lv_isir_id -- OUT parameter returns value of isir id.
6902 );
6903
6904 -- call procedure to insert a new NSLDS data record (since inserting into isir matched table, insert into nslds data table.
6905 insert_nslds_data_rec(cp_isir_intrface_rec => g_isir_intrface_rec,
6906 p_isir_id => lv_isir_id,
6907 p_base_id => g_base_id,
6908 p_out_nslds_id => lv_nslds_id); -- OUT parameter returning ID.
6909
6910 -- call procedure to update fa base record when its a payment isir
6911 update_fa_base_rec(p_fabase_rec => lv_cur_fabase_rec,
6912 p_isir_verification_flag => g_isir_intrface_rec.verification_flag);
6913
6914
6915 -- call procedure to update TODO items
6916 process_todo_items(p_base_id => g_base_id,
6917 p_payment_isir => lv_payment_isir);
6918
6919
6920 -- #4871790
6921 IGF_AP_BATCH_VER_PRC_PKG.update_process_status(
6922 p_base_id => g_base_id,
6923 p_fed_verif_status => NULL);
6924
6925
6926 IF lv_payment_isir = 'Y' THEN
6927 -- process corrections
6928 process_corrections(p_old_payment_isir => old_pymt_isir_rec.isir_id,
6929 p_new_payment_isir => lv_isir_id,
6930 p_new_isir_is_pymnt_isir => lv_payment_isir);
6931 END IF; -- lv_payment_isir;
6932
6933 IF g_isir_intrface_rec.transaction_num_txt > g_max_tran_num THEN
6934 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
6935 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.debug','Incoming Transaction No. > Existing Max Trans and hence Invoking Update Person Info Procedure');
6936 END IF;
6937
6938 -- This procedure should be called only when the incoming trans num > existing max trans num
6939 g_called_from_process := TRUE;
6940 update_person_info(g_isir_intrface_rec.si_id);
6941 END IF;
6942
6943 -- update ISIR int record status
6944 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
6945 p_isir_rec_status => 'MATCHED',
6946 p_match_code => NULL);
6947
6948 g_matched_rec := g_matched_rec + 1; -- update matched rec count
6949 log_debug_message('Completed processing New Interface record.');
6950
6951 EXCEPTION
6952 WHEN others THEN
6953 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
6954 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_new_isir_rec.exception','The exception is : ' || SQLERRM );
6955 END IF;
6956
6957 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
6958 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.process_new_isir_rec');
6959 igs_ge_msg_stack.add;
6960 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
6961 app_exception.raise_exception;
6962 END process_new_isir_rec;
6963
6964
6965
6966 PROCEDURE pell_match_type_rec_processing IS
6967
6968 /*
6969 || Created By : rgangara
6970 || Created On : 03-AUG-2004
6971 || Purpose : For processing the ISIR Interface record based on its Pell Match Type.
6972 || For pell match type of 'D' and 'O', very few processing steps reqd hence
6973 || no separate procedures created. For 'N' and 'U' separate procedures exist.
6974 || Known limitations, enhancements or remarks :
6975 || Change History :
6976 || Who When What
6977 ||
6978 || (reverse chronological order - newest change first)
6979 */
6980
6981 lv_isir_id NUMBER;
6982 l_nslds_id NUMBER;
6983
6984 CURSOR get_person_cur(pn_base_id NUMBER) IS
6985 SELECT person_id
6986 FROM igf_ap_fa_base_rec
6987 WHERE base_id = pn_base_id;
6988
6989 BEGIN
6990
6991 log_debug_message(' Beginning Pell Match Type rec processing... ' || g_pell_match_type);
6992
6993 IF g_base_id IS NOT NULL THEN
6994 -- get the Person ID. This would be available for pell match type is D, O, N. For U it would be NULL.
6995 OPEN get_person_cur(g_base_id);
6996 FETCH get_person_cur INTO g_person_id;
6997 CLOSE get_person_cur ;
6998 END IF;
6999
7000 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7001 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.pell_match_type_rec_processing.debug','p_si_id : ' || g_isir_intrface_rec.si_id || ' , Pell Match Type : ' || g_pell_match_type );
7002 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.pell_match_type_rec_processing.debug','The g_base_id : ' || g_base_id || ', Person ID: ' || g_person_id);
7003 END IF;
7004
7005 -- First delete existing match records, if any, from match tables for this si_id.
7006 delete_person_match_rec(p_si_id => g_isir_intrface_rec.si_id,
7007 p_apm_id => NULL);
7008
7009
7010 IF g_pell_match_type = 'D' THEN -- ISIR record is Duplicate
7011
7012 fnd_message.set_name('IGF','IGF_AP_ISIR_DUPLICATE');
7013 fnd_file.put_line(fnd_file.log, fnd_message.get);
7014
7015 g_dup_rec := NVL(g_dup_rec ,0)+ 1; -- update Duplicate rec count
7016
7017 -- update ISIR int record status
7018 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
7019 p_isir_rec_status => 'MATCHED',
7020 p_match_code => NULL);
7021
7022 ELSIF g_pell_match_type = 'O' THEN -- OLD ISIR rec processing
7023 -- process rec as non payment isir.
7024 process_non_payment_isir;
7025
7026 ELSIF g_pell_match_type = 'N' THEN
7027 -- process the isir rec as a payment isir
7028 process_new_isir_rec;
7029
7030 ELSIF g_pell_match_type = 'U' THEN
7031 IF g_gen_party_profile_val = 'N' THEN -- value derived only once at the beginning of the main process
7032 RAISE INVALID_PROFILE_ERROR;
7033 END IF;
7034
7035 process_unidentified_isir_rec; -- separate procedure for clarity as it has lot of processing steps.
7036 END IF;
7037
7038 EXCEPTION
7039 WHEN INVALID_PROFILE_ERROR THEN
7040 -- print the log message
7041 fnd_message.set_name('IGF','IGF_AP_HZ_GEN_PARTY_NUMBER');
7042 fnd_file.put_line(FND_FILE.LOG,fnd_message.get);
7043 app_exception.raise_exception;
7044
7045 WHEN OTHERS THEN
7046 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7047 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.pell_match_type_rec_processing.exception','The exception is : ' || SQLERRM);
7048 END IF;
7049
7050 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7051 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.pell_match_type_rec_processing');
7052 igs_ge_msg_stack.add;
7053 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
7054 app_exception.raise_exception;
7055 END pell_match_type_rec_processing;
7056
7057
7058 PROCEDURE process_correction_isir
7059 IS
7060 /*
7061 || Created By : rgangara
7062 || Created On : 27-AUG-2004
7063 || Purpose : Processes Correction Type of ISIR Interface record i.e. processed_rec_type = 'C'
7064 || Known limitations, enhancements or remarks :
7065 || Change History :
7066 || Who When What
7067 ||
7068 || (reverse chronological order - newest change first)
7069 */
7070
7071 BEGIN
7072
7073 log_debug_message(' Processing Correction ISIR.');
7074
7075 update_isir_int_record (p_si_id => g_isir_intrface_rec.si_id,
7076 p_isir_rec_status => 'REVIEW',
7077 p_match_code => NULL);
7078
7079 -- update review records count
7080 g_review_count := g_review_count + 1;
7081
7082 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7083 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_correction_isir.statement','Updated ISIR Interface record status to REVIEW');
7084 END IF;
7085
7086 EXCEPTION
7087 WHEN others THEN
7088 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7089 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_correction_isir.exception','The exception is : ' || SQLERRM );
7090 END IF;
7091
7092 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7093 fnd_message.set_token('NAME','IGF_AP_MATCHING_PROCESS_PKG.process_correction_isir');
7094 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
7095 igs_ge_msg_stack.add;
7096 app_exception.raise_exception;
7097 END process_correction_isir;
7098
7099
7100 PROCEDURE process_int_record
7101 IS
7102 /*
7103 || Created By : rgangara
7104 || Created On : 03-AUG-2004
7105 || Purpose : Determine the Pell Match Type and accordingly call appropriate procedures for processing the Interface record.
7106 || Known limitations, enhancements or remarks :
7107 || Change History :
7108 || Who When What
7109 ||
7110 || (reverse chronological order - newest change first)
7111 */
7112
7113 CURSOR cur_max_isir ( cp_original_ssn VARCHAR2,
7114 cp_orig_name_id VARCHAR2,
7115 cp_batch_year NUMBER,
7116 cp_sys_rec_type VARCHAR2)
7117 IS
7118 SELECT MAX(iim.transaction_num) max_id,
7119 iim.base_id
7120 FROM igf_ap_isir_matched iim
7121 WHERE iim.original_ssn = cp_original_ssn
7122 AND iim.orig_name_id = cp_orig_name_id
7123 AND iim.system_record_type = cp_sys_rec_type
7124 AND iim.batch_year = cp_batch_year
7125 GROUP BY iim.base_id ;
7126
7127 l_max_isir_rec cur_max_isir%ROWTYPE;
7128
7129
7130 CURSOR chk_transaction_num( cp_original_ssn VARCHAR2,
7131 cp_orig_name_id VARCHAR2,
7132 cp_batch_year NUMBER,
7133 cp_sys_rec_type VARCHAR2,
7134 cp_transaction_num VARCHAR2)
7135 IS
7136 SELECT 1
7137 FROM igf_ap_isir_matched iim
7138 WHERE iim.original_ssn = cp_original_ssn
7139 AND iim.orig_name_id = cp_orig_name_id
7140 AND iim.system_record_type = cp_sys_rec_type
7141 AND iim.batch_year = cp_batch_year
7142 AND iim.transaction_num = cp_transaction_num
7143 AND rownum = 1;
7144
7145 CURSOR check_pymt_isir_locked_cur(pn_base_id NUMBER) IS
7146 SELECT isir_locked_by
7147 FROM igf_ap_fa_base_rec
7148 WHERE base_id = pn_base_id;
7149
7150 CURSOR get_pymnt_isir_tran_cur(pn_base_id NUMBER) IS
7151 SELECT transaction_num
7152 FROM igf_ap_isir_matched
7153 WHERE base_id = pn_base_id
7154 AND payment_isir = 'Y';
7155
7156 l_chk_transaction_num chk_transaction_num%ROWTYPE;
7157 l_sys_rec_type VARCHAR2(30) ;
7158 lv_valid_isir_flag VARCHAR2(1);
7159 ln_isir_locked_by NUMBER;
7160 ln_pay_isir_id NUMBER;
7161 l_message_class VARCHAR2(30);
7162
7163 BEGIN
7164
7165 /* ============================================================================================
7166 NOTE: Pell Match Code Determining logic. (U, N, O, D)
7167
7168 1. IF No record found in ISIR Matched table for Original SSN, Original Name ID and Batch Year
7169 then the Pell Match Type is 'U' i.e. unidentified
7170
7171 2. IF Match found (step 1 above), then IF a record with same transaction already exists
7172 then Pell Match type is 'D' i.e. Duplicate
7173
7174 3. If Match Found and No record with the same transaction Number exists then it can be N or O.
7175 IF the incoming Int rec has
7176 A) A valid Primary EFC
7177 B) Higher transaction Num than the existing Payment ISIR
7178 C) Existing Payment ISIR is Not Locked
7179 then its pell match type is 'N' i.e. New
7180
7181 4. If step 3 fails, then pell match type is 'O'. i.e. Old.
7182 ===========================================================================================*/
7183
7184 SAVEPOINT SP1;
7185
7186 -- Log ISIR Student details
7187 fnd_file.put_line(fnd_file.log,g_separator_line);
7188 fnd_file.put_line(fnd_file.log,'');
7189 fnd_message.set_name ('IGF','IGF_AP_STUD_SSN_DTL');
7190 fnd_message.set_token('NAME',g_isir_intrface_rec.first_name||' '||g_isir_intrface_rec.last_name );
7191 fnd_message.set_token('SSN',g_isir_intrface_rec.current_ssn_txt);
7192 fnd_file.put_line(fnd_file.log,fnd_message.get);
7193
7194 fnd_message.set_name ('IGF','IGF_AP_STUD_TRAN_DTL');
7195 fnd_message.set_token('TRAN', g_isir_intrface_rec.transaction_num_txt);
7196 fnd_message.set_token('NCODE',g_isir_intrface_rec.orig_name_id_txt);
7197
7198 fnd_file.put_line(fnd_file.log,fnd_message.get);
7199
7200 --count for total number of records.
7201 g_total_recs_processed := g_total_recs_processed +1;
7202
7203 -- initialize variables
7204 l_sys_rec_type := 'ORIGINAL' ;
7205 l_max_isir_rec := NULL;
7206 g_base_id := NULL;
7207 g_max_tran_num := NULL;
7208 g_person_id := NULL;
7209
7210 IF g_isir_intrface_rec.processed_rec_type = 'C' THEN
7211 log_debug_message('This is a Correction ISIR');
7212 -- put such records to REVIEW status.
7213 process_correction_isir;
7214
7215 ELSE
7216 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7217 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_int_record.debug','Checking for Max Transaction Number');
7218 END IF;
7219
7220 --Check if ISIR record exists. If it does, get the max Transaction Number.
7221 OPEN cur_max_isir ( g_isir_intrface_rec.original_ssn_txt ,
7222 g_isir_intrface_rec.orig_name_id_txt ,
7223 g_isir_intrface_rec.batch_year_num,
7224 l_sys_rec_type) ;
7225
7226 FETCH cur_max_isir INTO l_max_isir_rec;
7227 IF cur_max_isir%NOTFOUND THEN
7228 -- Unidentified ISIR record.
7229 CLOSE cur_max_isir;
7230
7231 g_base_id := NULL;
7232 g_max_tran_num := 0;
7233 g_pell_match_type := 'U' ; -- Unidientified CPS record
7234 log_debug_message('Pell Match type is U');
7235
7236 ELSE -- record exists for this person
7237 CLOSE cur_max_isir;
7238 log_debug_message('Pell Match is not U');
7239 -- populate base id and max transaction num to global variables.
7240 g_base_id := l_max_isir_rec.base_id;
7241 g_max_tran_num := l_max_isir_rec.max_id;
7242
7243 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7244 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_int_record.debug','Checking for Duplicate');
7245 END IF;
7246
7247 -- check whether it is a duplicate isir.
7248 -- check whether ISIR rec with same transaction Num already exists.
7249 OPEN chk_transaction_num ( g_isir_intrface_rec.original_ssn_txt ,
7250 g_isir_intrface_rec.orig_name_id_txt ,
7251 g_isir_intrface_rec.batch_year_num,
7252 l_sys_rec_type,
7253 g_isir_intrface_rec.transaction_num_txt);
7254
7255 FETCH chk_transaction_num INTO l_chk_transaction_num;
7256 IF Chk_transaction_num%FOUND THEN
7257 g_pell_match_type := 'D' ; -- Duplicate ISIR record for Exisitng Student
7258 CLOSE Chk_transaction_num;
7259 ELSE
7260 CLOSE Chk_transaction_num;
7261
7262 log_debug_message('Pell Matche type is NOT D');
7263 -- check whether the incoming isir is a valid isir.
7264 lv_valid_isir_flag := is_payment_isir(g_isir_intrface_rec.primary_efc_amt);
7265
7266 IF lv_valid_isir_flag = 'N' THEN
7267 g_pell_match_type := 'O' ; -- Process the ISIR as a non payment isir
7268 ELSE
7269
7270 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7271 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_int_record.debug','Checking for ISIR Locking');
7272 END IF;
7273
7274 log_debug_message('Checking for Payment ISIR being locked');
7275 -- check if the payment isir is locked. If so the locked isir should remain as payment isir.
7276 -- Any other incoming ISIR should be processed as Non payment isir even if they are valid
7277 -- and have a higher transaction number.
7278 OPEN check_pymt_isir_locked_cur(g_base_id);
7279 FETCH check_pymt_isir_locked_cur INTO ln_isir_locked_by;
7280 CLOSE check_pymt_isir_locked_cur;
7281
7282 IF ln_isir_locked_by IS NOT NULL THEN
7283 -- Existing Payment ISIR is locked and hence should be retained as payment isir.
7284 -- Hence Process this incoming isir as a Non payment isir.
7285 g_pell_match_type := 'O' ;
7286 ELSE
7287 log_debug_message('Checking for Payment ISIR For this person with higher Transaction Number');
7288 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7289 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_int_record.debug','Payment ISIR Transaction No. checking');
7290 END IF;
7291
7292 -- Check whether there already exists a payment isir with transaction number > incoming isir.
7293 -- IF so, the incoming isir should be processed as Non payment isir Else as Payment ISIR.
7294 OPEN get_pymnt_isir_tran_cur(g_base_id);
7295 FETCH get_pymnt_isir_tran_cur INTO ln_pay_isir_id;
7296 CLOSE get_pymnt_isir_tran_cur;
7297
7298 IF TO_NUMBER(g_isir_intrface_rec.transaction_num_txt) < NVL(TO_NUMBER(ln_pay_isir_id),0) THEN
7299 -- i.e. incoming trans num < existing payment isir flagged trans num
7300 -- hence process the incoming isir rec as a Non payment isir rec.
7301 g_pell_match_type := 'O' ;
7302 ELSE
7303 g_pell_match_type := 'N' ;
7304 END IF;
7305
7306 END IF; -- check_pymt_isir_locked_cur
7307 END IF; -- lv_valid_isir_flag
7308
7309 END IF; --Chk_transaction_num%FOUND
7310
7311 END IF; -- cur_max_isir%NOTFOUND
7312
7313 log_debug_message(' PELL MATCH TYPE for this Interface record : ' || g_pell_match_type);
7314 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7315 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.main.debug','PELL_MATCH_TYPE for this ISIR record : ' || g_pell_match_type );
7316 END IF;
7317
7318
7319 -- call procedure which would process ISIR rec based on the pell match type.
7320 pell_match_type_rec_processing; -- call procedure which would process ISIR rec based on the pell match type.
7321
7322
7323 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7324 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.main.debug','Processed Interface record successfully. Commiting Changes');
7325 END IF;
7326
7327 END IF; -- g_isir_intrface_rec.processed_record_type
7328
7329 COMMIT; --commit after processing the student record (i.e. commit after each isir record is processed)
7330
7331
7332 -- IF CPS Pushed ISIR processed then raise business event notification.
7333 l_message_class := get_msg_class_from_filename(p_filename => g_isir_intrface_rec.data_file_name_txt);
7334
7335 IF l_message_class IN ('IGCO05OP','IGSA05OP') THEN
7336 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7337 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.process_int_record.statement','CPS Pushed ISIR processed. Message Class:' || l_message_class);
7338 END IF;
7339
7340 -- Raise a Business Event Notification if the processed record is a CPS Pushed ISIR.
7341 raise_cps_pushed_isir_event;
7342 END IF;
7343
7344 EXCEPTION
7345 WHEN INVALID_PROFILE_ERROR THEN
7346 -- print the log message
7347 fnd_message.set_name('IGF','IGF_AP_HZ_GEN_PARTY_NUMBER');
7348 fnd_file.put_line(FND_FILE.LOG,fnd_message.get);
7349 ROLLBACK TO SP1;
7350 RETURN;
7351
7352 WHEN OTHERS THEN
7353 ROLLBACK TO SP1;
7354 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7355 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.process_int_record.exception','The exception is : ' || SQLERRM );
7356 END IF;
7357
7358 g_bad_rec := g_bad_rec + 1; -- update bad rec count
7359
7360 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7361 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.process_int_record');
7362 igs_ge_msg_stack.add;
7363 fnd_file.put_line(fnd_file.log, ' - '|| SQLERRM);
7364 log_debug_message('EXCEPTION : ' || SQLERRM);
7365 RETURN;
7366 END process_int_record;
7367
7368
7369 PROCEDURE log_statistics IS
7370
7371 /*
7372 || Created By : rgangara
7373 || Created On : 03-AUG-2004
7374 || Purpose : For Logging ISIR Import process processing statistics.
7375 || Known limitations, enhancements or remarks :
7376 || Change History :
7377 || Who When What
7378 ||
7379 || (reverse chronological order - newest change first)
7380 */
7381
7382 BEGIN
7383
7384 fnd_file.put_line(fnd_file.log, g_separator_line);
7385 fnd_file.put_line(fnd_file.log, g_separator_line);
7386 fnd_message.set_name('IGF','IGF_AP_TOTAL_RECS');
7387 fnd_message.set_token('COUNT','');
7388 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,50,'.')||TO_CHAR(g_total_recs_processed) );
7389 log_debug_message('TOTAL RECS : ' || TO_CHAR(g_total_recs_processed));
7390
7391 fnd_message.set_name('IGF','IGF_AP_MATCHED_RECS');
7392 fnd_message.set_token('COUNT','');
7393 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,50,'.') || TO_CHAR(g_matched_rec));
7394 log_debug_message('MATCHED RECS : ' || TO_CHAR(g_matched_rec));
7395
7396 fnd_message.set_name('IGF','IGF_AP_UNMATCHED_RECS');
7397 fnd_message.set_token('COUNT','');
7398 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,50,'.') || TO_CHAR(g_unmatched_rec));
7399 log_debug_message('UNMATCHED RECS : ' || TO_CHAR(g_unmatched_rec));
7400
7401
7402 fnd_message.set_name('IGF','IGF_AP_ISIR_REV');
7403 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,47,' ')||' ' || TO_CHAR(TO_NUMBER(g_review_count)));
7404 fnd_file.put_line(fnd_file.log, g_separator_line);
7405 fnd_file.put_line(fnd_file.log, g_separator_line);
7406 log_debug_message('REVIEW RECS : ' || TO_CHAR(g_review_count));
7407
7408 fnd_message.set_name('IGF','IGF_AP_DUP_RECS');
7409 fnd_message.set_token('COUNT','');
7410 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,50,'.') || TO_CHAR(g_dup_rec));
7411 log_debug_message('DUPLICATE RECS : ' || TO_CHAR(g_dup_rec));
7412
7413
7414 fnd_message.set_name('IGF','IGF_AP_BAD_RECS');
7415 fnd_message.set_token('COUNT','');
7416 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,50,'.') || TO_CHAR(g_bad_rec));
7417 log_debug_message('BAD RECS : ' || TO_CHAR(g_bad_rec));
7418
7419 fnd_message.set_name('IGF','IGF_AP_NEW_PER_RECS');
7420 fnd_message.set_token('COUNT','');
7421 fnd_file.put_line(fnd_file.output,RPAD(fnd_message.get,50,'.') || TO_CHAR(g_unmatched_added));
7422 log_debug_message('NEW PERSON RECS i.e. => unmatched and added : ' || TO_CHAR(g_unmatched_added));
7423
7424 END log_statistics;
7425
7426
7427
7428
7429 PROCEDURE main ( errbuf OUT NOCOPY VARCHAR2,
7430 retcode OUT NOCOPY NUMBER,
7431 p_force_add IN VARCHAR2,
7432 p_create_inquiry IN VARCHAR2,
7433 p_adm_source_type IN VARCHAR2,
7434 p_batch_year IN VARCHAR2,
7435 p_match_code IN VARCHAR2,
7436 p_del_int IN VARCHAR2,
7437 p_parent_req_id IN VARCHAR2, -- when called as sub request
7438 p_sub_req_num IN VARCHAR2, -- when called as sub request
7439 p_si_id IN VARCHAR2, -- when called for single si id
7440 p_upd_ant_val IN VARCHAR2 -- Newly added in FA152
7441 )
7442 IS
7443 /*
7444 || Created By : rgangara
7445 || Created On : 03-AUG-2004
7446 || Purpose : Does the matching process and updates isir interface, isir matched table, base record table etc.
7447 || Known limitations, enhancements or remarks :
7448 || Change History :
7449 || Who When What
7450 ||
7451 || tsailaja 13/Jan/2006 Bug 4947880 Added invocation of igf_aw_gen.set_org_id(NULL);
7452 || (reverse chronological order - newest change first)
7453 */
7454
7455 lv_apm_id igf_ap_person_match.apm_id%TYPE := NULL;
7456
7457 CURSOR cur_batch_aw_map(cp_batch_yr NUMBER) IS
7458 SELECT ci_cal_type,ci_sequence_number
7459 FROM igf_ap_batch_aw_map
7460 WHERE batch_year = cp_batch_yr;
7461
7462 CURSOR cur_isir_intrface(cp_si_id NUMBER) IS
7463 SELECT iia.*
7464 FROM igf_ap_isir_ints iia
7465 WHERE si_id = cp_si_id;
7466
7467 -- cursor to get records to process current request (as sub request)
7468 CURSOR cur_sub_req_int(cp_parent_req_id NUMBER, cp_sub_req_num NUMBER) IS
7469 SELECT iia.*
7470 FROM igf_ap_isir_ints iia
7471 WHERE parent_req_id = cp_parent_req_id
7472 AND sub_req_num = cp_sub_req_num
7473 ORDER BY si_id;
7474
7475
7476
7477 BEGIN
7478 igf_aw_gen.set_org_id(NULL);
7479 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7480 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.main.debug','Beginning Processing');
7481 END IF;
7482
7483 g_gen_party_profile_val := FND_PROFILE.VALUE('HZ_GENERATE_PARTY_NUMBER'); -- get the profile value and store in global variable
7484
7485 -- print input parameters
7486 fnd_file.put_line(fnd_file.log, '-----------------------------------------------------------------------------------------');
7487 fnd_message.set_name('IGF', 'IGF_AP_CREATE_PRSN_NO_MATCH');
7488 fnd_message.set_token('CREATE_PRSN', p_force_add);
7489 fnd_file.put_line(fnd_file.log, fnd_message.get);
7490
7491 fnd_message.set_name('IGF', 'IGF_AP_CREATE_ADM_INQ');
7492 fnd_message.set_token('CREATE_INQ', p_create_inquiry);
7493 fnd_file.put_line(fnd_file.log, fnd_message.get);
7494
7495 fnd_message.set_name('IGF', 'IGF_AP_ADM_INQ_MTHD');
7496 fnd_message.set_token('INQ_METHOD', p_adm_source_type);
7497 fnd_file.put_line(fnd_file.log, fnd_message.get);
7498
7499 fnd_message.set_name('IGF', 'IGF_AP_BATCH_YEAR');
7500 fnd_message.set_token('BATCH_YR', p_batch_year);
7501 fnd_file.put_line(fnd_file.log, fnd_message.get);
7502
7503 fnd_message.set_name('IGF', 'IGF_AP_MATCH_CODE');
7504 fnd_message.set_token('MATCH_CODE', p_match_code);
7505 fnd_file.put_line(fnd_file.log, fnd_message.get);
7506
7507 fnd_message.set_name('IGF', 'IGF_AP_DEL_INT_RECORD');
7508 fnd_message.set_token('DEL_FLAG', p_del_int);
7509 fnd_file.put_line(fnd_file.log, fnd_message.get);
7510
7511 fnd_message.set_name('IGF', 'IGF_AP_PRNT_REQ_ID');
7512 fnd_message.set_token('PARENT_REQ_NO', p_parent_req_id);
7513 fnd_file.put_line(fnd_file.log, fnd_message.get);
7514
7515 fnd_message.set_name('IGF', 'IGF_AP_SUB_REQ_ID');
7516 fnd_message.set_token('SUB_REQ_NO', p_sub_req_num);
7517 fnd_file.put_line(fnd_file.log, fnd_message.get);
7518
7519 fnd_message.set_name('IGF', 'IGF_AP_UPD_ANT_DATA');
7520 fnd_message.set_token('UPD_ANT', p_upd_ant_val);
7521 fnd_file.put_line(fnd_file.log, fnd_message.get);
7522
7523 fnd_file.put_line(fnd_file.log, '-----------------------------------------------------------------------------------------');
7524
7525
7526 -- initialize/reset global variables.
7527 reset_global_variables;
7528
7529 log_debug_message(' Starting main procedure... ' || TO_CHAR(SYSDATE, 'HH24:MI:SS'));
7530
7531 -- Copying the parameter values to the gobal variable.
7532 g_force_add := p_force_add;
7533 g_create_inquiry := NVL(p_create_inquiry,'N');
7534 g_adm_source_type := p_adm_source_type;
7535 g_count_corr := 0;
7536 g_batch_year := p_batch_year;
7537 g_match_code := p_match_code;
7538 g_separator_line := RPAD('*',50,'*');
7539 g_del_success_int_rec := NVL(p_del_int, 'N');
7540 g_sub_req_num := p_sub_req_num;
7541 g_enable_debug_logging := 'N' ; -- 'N' by default disables logging debug messages.
7542 g_upd_ant_val := p_upd_ant_val;
7543
7544 -- Validate Match code parameter
7545 IF g_match_code IS NOT NULL THEN -- validate only if it is not null
7546 OPEN cur_setup_score (g_match_code) ;
7547 FETCH cur_setup_score INTO g_setup_score;
7548
7549 IF cur_setup_score%NOTFOUND THEN
7550 CLOSE cur_setup_score ;
7551 fnd_message.set_name('IGF','IGF_AP_SETUP_SCORE_NOT_FOUND');
7552 errbuf := fnd_message.get;
7553 fnd_file.put_line(fnd_file.log, errbuf);
7554 retcode := 1;
7555 RETURN;
7556 END IF;
7557 CLOSE cur_setup_score ;
7558 END IF;
7559
7560
7561 -- Batch Year validation
7562 OPEN cur_batch_aw_map(p_batch_year) ;
7563 FETCH cur_batch_aw_map INTO g_ci_cal_type,g_ci_sequence_number ;
7564
7565 IF cur_batch_aw_map%NOTFOUND THEN
7566 CLOSE cur_batch_aw_map ;
7567 fnd_message.set_name('IGF','IGF_AP_BATCH_YEAR_NOT_FOUND');
7568 errbuf := fnd_message.get;
7569 fnd_file.put_line(fnd_file.log, errbuf);
7570 retcode := 1;
7571 RETURN;
7572 END IF ;
7573 CLOSE cur_batch_aw_map ;
7574
7575
7576 IF p_si_id IS NOT NULL THEN
7577 -- process for only one record with SI ID = p_si_id
7578 OPEN cur_isir_intrface (p_si_id);
7579 FETCH cur_isir_intrface INTO g_isir_intrface_rec;
7580 CLOSE cur_isir_intrface ;
7581
7582 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7583 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.main.debug','Procedure invoked by passing SI ID ' || p_si_id);
7584 END IF;
7585
7586 IF g_isir_intrface_rec.si_id IS NULL THEN
7587 fnd_message.set_name('IGF','IGF_AP_NO_INT_REC_FOUND');
7588 fnd_file.put_line(fnd_file.log, fnd_message.get);
7589 RETURN;
7590 END IF;
7591
7592 log_debug_message(' SI_ID Passed... ' || p_si_id);
7593
7594
7595 process_int_record; -- call the process for processing the Interface record.
7596
7597
7598 ELSE
7599 -- Loop and process for each record
7600 OPEN cur_sub_req_int(p_parent_req_id, p_sub_req_num);
7601 FETCH cur_sub_req_int INTO g_isir_intrface_rec;
7602
7603 WHILE cur_sub_req_int%FOUND LOOP
7604 log_debug_message('Processing Interface record. SI_ID = ' || g_isir_intrface_rec.si_id || ' at : ' || TO_CHAR(SYSDATE, 'HH24:MI:SS'));
7605 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7606 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.main.debug','Processing Interface record. SI ID : ' || g_isir_intrface_rec.si_id);
7607 END IF;
7608
7609 process_int_record; -- call the process for processing the Interface record.
7610
7611 FETCH cur_sub_req_int INTO g_isir_intrface_rec;
7612 END LOOP;
7613 END IF;
7614
7615 log_debug_message(' Completed processing.... SUCCESSFULLY ');
7616
7617 -- call procedure for logging processed statistics.
7618 log_statistics;
7619
7620 ram_log_dml_count;
7621
7622 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
7623 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.main.debug','Completed Main Processing at : ' || TO_CHAR(SYSDATE, 'HH24:MI:SS'));
7624 END IF;
7625
7626 log_debug_message(' Ended main procedure... ' || TO_CHAR(SYSDATE, 'HH24:MI:SS'));
7627 RETURN;
7628
7629 EXCEPTION
7630 WHEN OTHERS THEN
7631 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7632 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.main.exception','The exception is : ' || SQLERRM );
7633 END IF;
7634
7635 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7636 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.main');
7637 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
7638 igs_ge_msg_stack.add;
7639 igs_ge_msg_stack.conc_exception_hndl;
7640 END main;
7641
7642
7643 FUNCTION format_SSN ( l_ssn VARCHAR2 )
7644 RETURN VARCHAR2
7645 IS
7646 /*
7647 || Created By : masehgal
7648 || Created On : 12-Jun-2002
7649 || Purpose : Converts SSN into required format
7650 || Known limitations, enhancements or remarks :
7651 || Change History :
7652 || Who When What
7653 || (reverse chronological order - newest change first)
7654 */
7655
7656
7657 CURSOR cur_format IS
7658 SELECT NVL(format_mask,'999999999')
7659 FROM igs_pe_person_id_typ
7660 WHERE s_person_id_type = 'SSN';
7661
7662 l_formated_ssn VARCHAR2(30);
7663 cur NUMBER(15);
7664
7665 BEGIN
7666
7667 IF gv_format IS NULL THEN
7668
7669 OPEN cur_format;
7670 FETCH cur_format INTO gv_format;
7671 IF cur_format%NOTFOUND THEN
7672 gv_format := '999999999';
7673 END IF;
7674 CLOSE cur_format;
7675
7676 END IF;
7677
7678 cur := 1;
7679
7680 FOR i in 1 .. (LENGTH(gv_format))
7681 LOOP
7682 IF SUBSTR(gv_format,i,1) = '9' THEN
7683 IF LENGTH(l_ssn) >= cur THEN
7684 l_formated_ssn := l_formated_ssn ||SUBSTR(l_ssn,cur,1);
7685 cur:=cur +1;
7686 END IF;
7687
7688 ELSE
7689 l_formated_ssn:=l_formated_ssn||SUBSTR(gv_format,i,1);
7690 END IF;
7691 END LOOP ;
7692 RETURN l_formated_ssn;
7693
7694 EXCEPTION
7695 WHEN OTHERS THEN
7696 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7697 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.format_SSN.exception','The exception is : ' || SQLERRM );
7698 END IF;
7699
7700 fnd_message.set_name('IGS' , 'IGS_GE_UNHANDLED_EXCEPTION');
7701 igs_ge_msg_stack.add;
7702 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
7703 RETURN NULL;
7704
7705 END format_SSN ;
7706
7707
7708 FUNCTION convert_to_date( pv_org_date VARCHAR2)
7709 RETURN DATE
7710 IS
7711 /*
7712 || Created By : brajendr
7713 || Created On : 24-NOV-2000
7714 || Purpose : Converts the valid dates to into the DATE format else return NULL.
7715 || Known limitations, enhancements or remarks :
7716 || Change History :
7717 || Who When What
7718 || (reverse chronological order - newest change first)
7719 */
7720 ld_date DATE;
7721 BEGIN
7722
7723 ld_date := FND_DATE.CHARDATE_TO_DATE( pv_org_date);
7724 RETURN ld_date;
7725
7726 EXCEPTION
7727 WHEN others THEN
7728 RETURN NULL;
7729
7730 END convert_to_date;
7731
7732
7733 FUNCTION remove_spl_chr(pv_ssn igf_ap_isir_ints_all.current_ssn_txt%TYPE)
7734 RETURN VARCHAR2
7735 IS
7736 /*
7737 || Created By : rasingh
7738 || Created On : 19-Apr-2002
7739 || Purpose : Strips the special charactes from SSN and returns just the number
7740 || Known limitations, enhancements or remarks :
7741 || Change History :
7742 || Who When What
7743 || (reverse chronological order - newest change first)
7744 */
7745
7746 ln_ssn VARCHAR2(20);
7747
7748 BEGIN
7749 ln_ssn := TRANSLATE (pv_ssn,'1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*_+=-,./?><():; ','1234567890');
7750 RETURN ln_ssn;
7751 EXCEPTION
7752 WHEN others THEN
7753 RETURN '-1';
7754
7755 END remove_spl_chr;
7756
7757
7758
7759 FUNCTION convert_to_number( pv_org_number VARCHAR2 )
7760 RETURN NUMBER
7761 IS
7762 /*
7763 || Created By : brajendr
7764 || Created On : 24-NOV-2000
7765 || Purpose : Converts the valid number to into the NUMBER format else RETURN NULL.
7766 || Known limitations, enhancements or remarks :
7767 || Change History :
7768 || Who When What
7769 || (reverse chronological order - newest change first)
7770 */
7771 ld_number NUMBER;
7772 BEGIN
7773
7774 ld_number := TO_NUMBER( pv_org_number);
7775 RETURN ld_number;
7776
7777 EXCEPTION
7778 WHEN others THEN
7779 RETURN NULL;
7780 END convert_to_number;
7781
7782
7783 FUNCTION is_fa_base_record_present(pn_person_id NUMBER,
7784 pn_batch_year NUMBER,
7785 pn_base_id OUT NOCOPY NUMBER)
7786 RETURN BOOLEAN
7787 IS
7788 /*
7789 || Created By : brajendr
7790 || Created On : 24-NOV-2000
7791 || Purpose : To check whether the newly imported student has any matched record present in the FA_BASE_REC table in th egiven award year.
7792 || Known limitations, enhancements or remarks :
7793 || Change History :
7794 || Who When What
7795 || rasahoo 19-09-2003 If FA Base record not found then
7796 || the procedure will return false.
7797 || (reverse chronological order - newest change first)
7798 */
7799
7800 -- Get all the records from base table which are having same person id and the given batch year
7801 CURSOR cur_fa_base_record (pn_person_id NUMBER, ln_batch_year NUMBER) IS
7802 SELECT ifb.*
7803 FROM igf_ap_fa_base_rec ifb,
7804 igf_ap_batch_aw_map ibm
7805 WHERE ifb.person_id = pn_person_id
7806 AND ibm.ci_sequence_number = ifb.ci_sequence_number
7807 AND ibm.ci_cal_type = ifb.ci_cal_type
7808 AND ibm.batch_year = ln_batch_year;
7809
7810 BEGIN
7811
7812 -- If a base record is found for the given student
7813 -- then return 'TRUE' else return 'FALSE'
7814
7815 OPEN cur_fa_base_record( pn_person_id,pn_batch_year);
7816 FETCH cur_fa_base_record INTO g_fa_base_rec ;
7817
7818 IF cur_fa_base_record%FOUND THEN
7819 pn_base_id := g_fa_base_rec.base_id;
7820 CLOSE cur_fa_base_record;
7821 RETURN TRUE;
7822
7823 ELSE
7824 pn_base_id := NULL;
7825 CLOSE cur_fa_base_record;
7826 RETURN FALSE;
7827 END IF;
7828
7829 EXCEPTION
7830 WHEN others THEN
7831 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7832 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.is_fa_base_record_present.exception','The exception is : ' || SQLERRM );
7833 END IF;
7834 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7835 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.is_fa_base_record_present');
7836 fnd_file.put_line(fnd_file.log,fnd_message.get);
7837 igs_ge_msg_stack.add;
7838 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
7839 RETURN FALSE;
7840 END is_fa_base_record_present;
7841
7842
7843 FUNCTION convert_negative_char(pv_charnum VARCHAR2)
7844 RETURN NUMBER
7845 IS
7846 /*
7847 || Created By : brajendr
7848 || Created On : 24-NOV-2000
7849 || Purpose : Process which converts the Alphaneumeric signed number to equavalent numeric signed number.
7850 || Known limitations, enhancements or remarks :
7851 || Change History :
7852 || Who When What
7853 || (reverse chronological order - newest change first)
7854 */
7855 ln_Amount NUMBER;
7856 lv_Signed_Char VARCHAR2(1);
7857 lv_Number VARCHAR2(10);
7858 lv_Signed_Value VARCHAR2(1);
7859
7860 BEGIN
7861
7862 -- Select the last character which is used to denote a signed number
7863 IF pv_charnum IS NULL THEN
7864 RETURN NULL;
7865 END IF;
7866
7867 lv_signed_char := SUBSTR( pv_charnum, LENGTH( pv_charnum), 1);
7868
7869 IF lv_signed_char NOT IN ( '{','}','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R') THEN
7870 RETURN NULL ;
7871 END IF;
7872
7873 -- Select the number part from the amount field
7874 lv_number := SUBSTR( pv_charnum, 1,LENGTH( pv_charnum)-1);
7875
7876 -- Get the value of the signed character
7877 -- The mapping is '{' => +0, 'A' =>+1 to 'I' => +9 and '}' => -0 , 'J'=> -1 so on to 'R' => -9
7878 IF lv_signed_char IN ('{','}') THEN
7879 lv_signed_value := '0';
7880
7881 ELSIF lv_signed_char IN ('A','J') THEN
7882 lv_signed_value := '1';
7883
7884 ELSIF lv_signed_char IN ('B','K') THEN
7885 lv_signed_value := '2';
7886
7887 ELSIF lv_signed_char IN ('C','L') THEN
7888 lv_signed_value := '3';
7889
7890 ELSIF lv_signed_char IN ('D','M') THEN
7891 lv_signed_value := '4';
7892
7893 ELSIF lv_signed_char IN ('E','N') THEN
7894 lv_signed_value := '5';
7895
7896 ELSIF lv_signed_char IN ('F','O') THEN
7897 lv_signed_value := '6';
7898
7899 ELSIF lv_signed_char IN ('G','P') THEN
7900 lv_signed_value := '7';
7901
7902 ELSIF lv_signed_char IN ('H','Q') THEN
7903 lv_signed_value := '8';
7904
7905 ELSIF lv_signed_char IN ('I','R') THEN
7906 lv_signed_value := '9';
7907
7908 END IF;
7909
7910 -- Get the amount by concatanating number and signed value
7911 ln_Amount := TO_NUMBER( lv_number||lv_signed_value);
7912
7913 -- add the signed value
7914 IF lv_signed_char IN ( '}','J','K','L','M','N','O','P','Q','R') THEN
7915 ln_Amount := ln_Amount*(-1);
7916 END IF;
7917
7918 RETURN ln_Amount;
7919
7920 EXCEPTION
7921
7922 WHEN others THEN
7923 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7924 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.convert_negative_char.exception','The exception is : ' || SQLERRM );
7925 END IF;
7926 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7927 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.convert_negative_char');
7928 fnd_file.put_line(fnd_file.log,fnd_message.get);
7929 igs_ge_msg_stack.add;
7930 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
7931 app_exception.raise_exception;
7932
7933 END convert_negative_char;
7934
7935
7936
7937 PROCEDURE load_matched_isir(pv_ssn VARCHAR2,
7938 pv_last_name VARCHAR2,
7939 pd_date_of_birth DATE,
7940 pn_ci_sequence_number NUMBER,
7941 pv_ci_cal_type VARCHAR2,
7942 pn_base_id igf_ap_isir_matched.base_id%TYPE)
7943 IS
7944 /*
7945 || Created By : brajendr
7946 || Created On : 24-NOV-2000
7947 || Purpose : Process creates isir_matched records for all the unmatched records and having the valid data.
7948 || Known limitations, enhancements or remarks :
7949 || Change History :
7950 || Who When What
7951 || (reverse chronological order - newest change first)
7952 */
7953
7954 CURSOR cur_isir_intrface( pn_ssn NUMBER, pv_last_name VARCHAR2, pd_date_of_birth DATE, pn_ci_sequence_number NUMBER, pv_ci_cal_type VARCHAR2) IS
7955 SELECT iii.si_id,
7956 iii.last_name,
7957 iii.birth_date,
7958 iii.batch_year_num,
7959 iii.record_status
7960 FROM igf_ap_isir_ints iii,
7961 igf_ap_batch_aw_map ibm
7962 WHERE original_ssn_txt = pn_ssn
7963 AND iii.last_name = pv_last_name
7964 AND iii.birth_date = pd_date_of_birth
7965 AND ibm.ci_sequence_number = pn_ci_sequence_number
7966 AND ibm.ci_cal_type = pv_ci_cal_type
7967 AND iii.batch_year_num = ibm.batch_year
7968 AND (iii.record_status = 'UNMATCHED' OR iii.record_status = 'NEW');
7969
7970 ln_isir_id igf_ap_isir_matched.isir_id%TYPE;
7971
7972 BEGIN
7973
7974 --Get all the unmatched records which are valid for this batch year and creates a new matched record for it.
7975 FOR cur_isir_intrface_rec IN cur_isir_intrface( pv_ssn, pv_last_name, pd_date_of_birth, pn_ci_sequence_number, pv_ci_cal_type)
7976 LOOP
7977
7978 create_isir_matched( cur_isir_intrface_rec.si_id, ln_isir_id, pn_base_id);
7979
7980 create_nslds_data( cur_isir_intrface_rec.si_id, ln_isir_id, pn_base_id);
7981
7982 update_isir_intrface( cur_isir_intrface_rec.si_id, 'MATCHED');
7983
7984 fnd_message.set_name('IGF','IGF_AP_ISIR_REC_STATUS');
7985 fnd_message.set_token('STATUS','MATCHED');
7986 fnd_file.put_line(fnd_file.log, fnd_message.get);
7987 END LOOP;
7988
7989 EXCEPTION
7990 WHEN others THEN
7991 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
7992 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.load_matched_isir.exception','The exception is : ' || SQLERRM );
7993 END IF;
7994
7995 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
7996 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.load_isir_matched');
7997 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
7998 igs_ge_msg_stack.add;
7999 app_exception.raise_exception;
8000 END load_matched_isir;
8001
8002
8003
8004 PROCEDURE create_isir_matched(pn_si_id IN NUMBER,
8005 pn_isir_id OUT NOCOPY NUMBER,
8006 pn_base_id IN NUMBER)
8007 IS
8008 /*
8009 || Created By : brajendr
8010 || Created On : 24-NOV-2000
8011 || Purpose : To create the isir matched record once the person satisfies the matching process.
8012 || Known limitations, enhancements or remarks :
8013 || Change History :
8014 || Who When What
8015 || masehgal 15-feb-2002 # 2216956 FACR007
8016 || Addded Verif_track_flag
8017 || (reverse chronological order - newest change first)
8018 */
8019 CURSOR cur_isir_intrface ( pn_si_id NUMBER)
8020 IS
8021 SELECT iii.*
8022 FROM igf_ap_isir_ints iii
8023 WHERE iii.si_id = pn_si_id;
8024
8025 lv_rowid VARCHAR2(30);
8026
8027 BEGIN
8028
8029 -- INsert Record in IGF_AP_ISIR_Matched table
8030 FOR cur_isir_intrface_rec IN cur_isir_intrface ( pn_si_id)
8031 LOOP
8032
8033 lv_rowid := NULL;
8034 -- call procedure to insert isir matched record.
8035 insert_isir_matched_rec(cp_isir_int_rec => cur_isir_intrface_rec,
8036 p_payment_isir => 'N',
8037 p_active_isir => 'N',
8038 p_base_id => pn_base_id,
8039 p_out_isir_id => pn_isir_id -- OUT parameter returns isir id
8040 ) ;
8041
8042 END LOOP;
8043
8044 EXCEPTION
8045
8046 WHEN others THEN
8047 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8048 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.create_isir_matched.exception','The exception is : ' || SQLERRM );
8049 END IF;
8050
8051 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
8052 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.create_isir_matched');
8053 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
8054 igs_ge_msg_stack.add;
8055 app_exception.raise_exception;
8056
8057 END create_isir_matched;
8058
8059
8060
8061 PROCEDURE update_isir_intrface(pn_si_id NUMBER,
8062 pv_record_status VARCHAR2)
8063 IS
8064 /*
8065 || Created By : brajendr
8066 || Created On : 24-NOV-2000
8067 || Purpose : Update the record status to 'Matched / Unmatched' for all the successful/ non successfull persons.
8068 || Known limitations, enhancements or remarks :
8069 || Change History :
8070 || Who When What
8071 || masehgal 15-feb-2002 # 2216956 FACR007
8072 || Addded Verif_track_flag
8073 || (reverse chronological order - newest change first)
8074 */
8075 CURSOR cur_isir_intrface ( pn_si_id NUMBER) IS
8076 SELECT rowid row_id, iii.si_id
8077 FROM igf_ap_isir_ints_all iii
8078 WHERE si_id = pn_si_id FOR UPDATE NOWAIT ;
8079
8080 lv_rowid VARCHAR2(30);
8081 retcode NUMBER;
8082 errbuf VARCHAR2(300);
8083
8084 BEGIN
8085
8086 -- Update record _status
8087 FOR cur_isir_intrface_rec IN cur_isir_intrface ( pn_si_id)
8088 LOOP
8089
8090 UPDATE igf_ap_isir_ints_all
8091 SET record_status = pv_record_status
8092 WHERE si_id = cur_isir_intrface_rec.si_id;
8093
8094 END LOOP;
8095
8096 fnd_message.set_name('IGF','IGF_AP_ISIR_REC_STATUS');
8097 fnd_message.set_token('STATUS', pv_record_status);
8098 fnd_file.put_line(fnd_file.log, fnd_message.get);
8099
8100 EXCEPTION
8101 WHEN others THEN
8102 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8103 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.update_isir_intrface.exception','The exception is : ' || SQLERRM );
8104 END IF;
8105
8106 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
8107 fnd_message.set_token('NAME','IGF_AP_MATCHING_PROCESS_PKG.UPDATE_ISIR_INTRFACE');
8108 fnd_file.put_line(fnd_file.log,fnd_message.get || ' - '|| SQLERRM);
8109 igs_ge_msg_stack.add;
8110 app_exception.raise_exception;
8111 END update_isir_intrface;
8112
8113
8114
8115 PROCEDURE create_nslds_data( pn_si_id NUMBER,
8116 pn_isir_id NUMBER,
8117 pn_base_id NUMBER )
8118 IS
8119 /*
8120 || Created By : brajendr
8121 || Created On : 24-NOV-2000
8122 || Purpose : To create the NSLDS matched record for all the matched records.
8123 || Known limitations, enhancements or remarks :
8124 || Change History :
8125 || Who When What
8126 || rgangara 06-AUG-04 modified to user transaction No. field for querying the
8127 NSLDS data table since as per FA 138 ISIR enh, 3416895,
8128 there would as many nslds data recs as the no. of transactions for an isir.
8129 || (reverse chronological order - newest change first)
8130 */
8131 -- Get all the NSLDS data for the matched isir record.
8132 CURSOR cur_isir_intrface (cp_si_id NUMBER) IS
8133 SELECT iii.*
8134 FROM igf_ap_isir_ints iii
8135 WHERE si_id = pn_si_id;
8136
8137 CURSOR cur_nslds_data (cp_base_id NUMBER ,
8138 cp_trans_num igf_ap_nslds_data_all.transaction_num_txt%TYPE) IS
8139 SELECT nslds.rowid row_id,
8140 nslds.nslds_id
8141 FROM igf_ap_nslds_data nslds
8142 WHERE base_id = cp_base_id
8143 AND transaction_num_txt = cp_trans_num
8144 FOR UPDATE NOWAIT ;
8145
8146 lv_rowid VARCHAR2(30);
8147 ln_nslds_id igf_ap_nslds_data.nslds_id%TYPE;
8148
8149 BEGIN
8150
8151 -- Update NSLDS data for the given student
8152 FOR cur_isir_intrface_rec IN cur_isir_intrface ( pn_si_id)
8153 LOOP
8154
8155 lv_rowid := NULL;
8156 ln_nslds_id := NULL;
8157
8158 -- check whether NSLDS data rec already exists for this base id and transaction num
8159 OPEN cur_nslds_data (pn_base_id, cur_isir_intrface_rec.transaction_num_txt);
8160 FETCH cur_nslds_data INTO lv_rowid, ln_nslds_id;
8161 CLOSE cur_nslds_data ;
8162
8163 IF lv_rowid IS NULL THEN
8164 -- call proc to insert a new NSLDS data rec
8165 insert_nslds_data_rec(cp_isir_intrface_rec => cur_isir_intrface_rec,
8166 p_isir_id => pn_isir_id,
8167 p_base_id => pn_base_id,
8168 p_out_nslds_id => ln_nslds_id);
8169
8170 END IF;
8171 END LOOP;
8172
8173 EXCEPTION
8174 WHEN others THEN
8175 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8176 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.create_nslds_data.exception','The exception is : ' || SQLERRM );
8177 END IF;
8178 fnd_message.set_name('IGS','IGS_GE_UNHANDLED_EXP');
8179 fnd_message.set_token('NAME','igf_ap_matching_process_pkg.create_nslds_data');
8180 fnd_file.put_line(fnd_file.log,fnd_message.get);
8181 igs_ge_msg_stack.add;
8182 END create_nslds_data;
8183
8184
8185
8186 FUNCTION check_ptyp_code(p_person_id igf_ap_person_v.person_id%TYPE)
8187 RETURN BOOLEAN IS
8188 /*
8189 || Created By : prchandr
8190 || Created On : 16-JAN-2001
8191 || Purpose : Does the checking whether the person type code is with prospect,
8192 || applicant and student else create its inquiry record and instance record.
8193 || Known limitations, enhancements or remarks :
8194 || Change History :
8195 || Who When What
8196 || (reverse chronological order - newest change first)
8197 */
8198
8199 CURSOR cur_ptyp_code IS
8200 SELECT COUNT(*)
8201 FROM igs_pe_typ_instances_all pti,
8202 igs_pe_person_types pt
8203 WHERE pti.person_id = p_person_id
8204 AND pti.person_type_code = pt.person_type_code
8205 AND SYSDATE BETWEEN pti.start_date and NVL(pti.end_date,SYSDATE)
8206 AND pt.system_type IN ('PROSPECT','APPLICANT','STUDENT')
8207 AND NVL(pt.closed_ind,'N') = 'N' ;
8208
8209 l_count NUMBER DEFAULT 0;
8210
8211 BEGIN
8212 OPEN cur_ptyp_code;
8213 FETCH cur_ptyp_code INTO l_count;
8214 CLOSE cur_ptyp_code;
8215
8216 IF l_count=0 THEN
8217 RETURN FALSE;
8218 ELSE
8219 RETURN TRUE;
8220 END IF;
8221
8222 EXCEPTION
8223 WHEN OTHERS THEN
8224 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8225 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.check_ptyp_code.exception','The exception is : ' || SQLERRM );
8226 END IF;
8227
8228 fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
8229 fnd_message.set_token('NAME','igf_ap_matching_process.check_ptyp_code');
8230 igs_ge_msg_stack.add;
8231
8232 END check_ptyp_code;
8233
8234 PROCEDURE wrpr_refresh_matches(p_si_id IN igf_ap_isir_ints_all.si_id%TYPE,
8235 p_match_code IN igf_ap_record_match_all.match_code%TYPE,
8236 p_return_status OUT NOCOPY VARCHAR2,
8237 p_message_out OUT NOCOPY VARCHAR2)
8238 IS
8239 /*
8240 || Created By : rgangara
8241 || Created On : 06-SEP-2004
8242 || Purpose : Provides Outside Interface (Wrapper procedure) for invoking the Perform_record_matching procedure
8243 || which performs person match and populates data into match details table.
8244 || Known limitations, enhancements or remarks :
8245 || Change History :
8246 || Who When What
8247 || (reverse chronological order - newest change first)
8248 */
8249
8250 CURSOR cur_isir_intrface(cp_si_id NUMBER) IS
8251 SELECT iia.*
8252 FROM igf_ap_isir_ints iia
8253 WHERE si_id = cp_si_id;
8254
8255 CURSOR cur_award_year_dtl(cp_batch_year igf_ap_isir_ints.batch_year_num%TYPE) IS
8256 SELECT ci_sequence_number,ci_cal_type
8257 FROM igf_ap_batch_aw_map
8258 WHERE batch_year = cp_batch_year;
8259
8260 award_year_dtl_rec cur_award_year_dtl%ROWTYPE;
8261
8262 CURSOR get_prsn_match_cur (cp_si_id IN NUMBER) IS
8263 SELECT *
8264 FROM igf_ap_person_match
8265 WHERE si_id = cp_si_id;
8266
8267 person_match_rec get_prsn_match_cur%ROWTYPE;
8268
8269 -- for deleting recs
8270 CURSOR get_match_details_cur (cp_apm_id IN NUMBER) IS
8271 SELECT md.rowid row_id
8272 FROM igf_ap_match_details md
8273 WHERE apm_id = cp_apm_id;
8274 lv_rowid VARCHAR2(30);
8275 ln_apm_id igf_ap_match_details.apm_id%TYPE;
8276 BEGIN
8277 g_enable_debug_logging := 'N';
8278 -- get Int rec details
8279 OPEN cur_isir_intrface (p_si_id);
8280 FETCH cur_isir_intrface INTO g_isir_intrface_rec;
8281 CLOSE cur_isir_intrface ;
8282
8283 IF g_isir_intrface_rec.si_id IS NULL THEN
8284 fnd_message.set_name('IGF','IGF_AP_NO_INT_REC_FOUND');
8285 p_message_out := fnd_message.get;
8286 p_return_status := 'E'; -- indicate Failure
8287 RETURN;
8288 END IF;
8289
8290
8291 -- Validate Match code parameter
8292 OPEN cur_setup_score (p_match_code) ;
8293 FETCH cur_setup_score INTO g_setup_score;
8294
8295 IF cur_setup_score%NOTFOUND THEN
8296 CLOSE cur_setup_score ;
8297 fnd_message.set_name('IGF','IGF_AP_SETUP_SCORE_NOT_FOUND');
8298 p_return_status := 'E';
8299 p_message_out := fnd_message.get;
8300 RETURN;
8301 END IF;
8302 CLOSE cur_setup_score ;
8303
8304 OPEN get_prsn_match_cur (p_si_id);
8305 FETCH get_prsn_match_cur INTO person_match_rec;
8306
8307 IF get_prsn_match_cur%NOTFOUND THEN
8308 CLOSE get_prsn_match_cur ;
8309
8310 OPEN cur_award_year_dtl(g_isir_intrface_rec.batch_year_num);
8311 FETCH cur_award_year_dtl INTO award_year_dtl_rec;
8312 CLOSE cur_award_year_dtl;
8313
8314 g_batch_year := g_isir_intrface_rec.batch_year_num;
8315 g_match_code := p_match_code;
8316 g_ci_cal_type := award_year_dtl_rec.ci_cal_type;
8317 g_ci_sequence_number := award_year_dtl_rec.ci_sequence_number;
8318 g_del_success_int_rec:= 'N';
8319
8320 ln_apm_id := NULL;
8321 lv_rowid := NULL;
8322 log_debug_message('Inserting a record intp person match table');
8323 igf_ap_person_match_pkg.insert_row(
8324 x_rowid => lv_rowid ,
8325 x_apm_id => ln_apm_id,
8326 x_css_id => NULL,
8327 x_si_id => g_isir_intrface_rec.si_id ,
8328 x_record_type => 'ISIR' ,
8329 x_date_run => TRUNC(SYSDATE),
8330 x_ci_sequence_number => g_ci_sequence_number ,
8331 x_ci_cal_type => g_ci_cal_type ,
8332 x_record_status => g_isir_intrface_rec.record_status ,
8333 x_mode => 'R');
8334
8335 ELSE
8336
8337 CLOSE get_prsn_match_cur ;
8338 -- populate global variables.
8339 g_batch_year := g_isir_intrface_rec.batch_year_num;
8340 g_match_code := p_match_code;
8341 g_ci_cal_type := person_match_rec.ci_cal_type;
8342 g_ci_sequence_number := person_match_rec.ci_sequence_number;
8343 g_del_success_int_rec:= 'N';
8344
8345 -- delete existing match details record for the apm_id
8346 FOR match_details_rec IN get_match_details_cur (person_match_rec.apm_id)
8347 LOOP
8348 igf_ap_match_details_pkg.delete_row(match_details_rec.row_id);
8349 END LOOP;
8350
8351 ln_apm_id := person_match_rec.apm_id;
8352
8353 END IF;
8354 -- call proc to match records and populate match details table.
8355 -- This proc would match records based on attributes and populates the matching recs into match details table.
8356 log_debug_message('performing record match');
8357 perform_record_matching(p_apm_id => ln_apm_id);
8358 log_debug_message('Record match Performed');
8359
8360 -- update the match code in INT table to the new one as
8361 log_debug_message(' Updating interface record status:'|| g_match_code);
8362 update_isir_int_record (p_si_id => p_si_id,
8363 p_isir_rec_status => g_isir_intrface_rec.record_status, -- retain existing status
8364 p_match_code => g_match_code -- new match code to be updated
8365 );
8366 log_debug_message(' Interface record status Updated');
8367 p_return_status := 'S'; -- indicate success
8368 EXCEPTION
8369 WHEN OTHERS THEN
8370 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8371 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.wrpr_refresh_matches.exception','The exception is : ' || SQLERRM );
8372 END IF;
8373
8374 p_return_status := 'E'; -- indicate error
8375 fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
8376 fnd_message.set_token('NAME','igf_ap_matching_process.wrpr_refresh_matches');
8377 p_message_out := fnd_message.get || '. Exception is : ' || SQLERRM;
8378 END wrpr_refresh_matches;
8379
8380 -- Added p_award_yr as a part of Bug Fix 4241350
8381 PROCEDURE wrpr_auto_fa_rec(p_si_id IN igf_ap_isir_ints_all.si_id%TYPE,
8382 p_person_id IN igf_ap_match_details.person_id%TYPE,
8383 p_batch_year IN igf_ap_isir_matched.batch_year%TYPE,
8384 p_return_status OUT NOCOPY VARCHAR2,
8385 p_message_out OUT NOCOPY VARCHAR2)
8386 IS
8387 /*
8388 || Created By : rgangara
8389 || Created On : 06-SEP-2004
8390 || Purpose : Provides Outside Interface (Wrapper procedure) for invoking the Perform_record_matching procedure
8391 || which performs person match and populates data into match details table.
8392 || Known limitations, enhancements or remarks :
8393 || Change History :
8394 || Who When What
8395 || ridas 14-Feb-2006 Bug #5021084. Removed trunc function from cursor C_SSN.
8396 || (reverse chronological order - newest change first)
8397 */
8398
8399 CURSOR cur_isir_intrface(cp_si_id NUMBER) IS
8400 SELECT iia.*
8401 FROM igf_ap_isir_ints iia
8402 WHERE si_id = cp_si_id;
8403
8404 CURSOR get_person_match_cur (cp_si_id IN NUMBER) IS
8405 SELECT apm_id,
8406 ci_cal_type,
8407 ci_sequence_number
8408 FROM igf_ap_person_match
8409 WHERE si_id = cp_si_id;
8410
8411 -- Added cp_batch_year as a part of Bug Fix 4241350
8412 CURSOR cur_base_id_rec(cp_person_id NUMBER, cp_batch_year NUMBER) IS
8413 SELECT base_id
8414 FROM igf_ap_fa_base_rec br, igf_ap_batch_aw_map am
8415 WHERE person_id = cp_person_id
8416 AND br.ci_cal_type = am.ci_cal_type
8417 AND br.ci_sequence_number = am.ci_sequence_number
8418 AND am.batch_year = cp_batch_year;
8419
8420 CURSOR cur_isir_matched(cp_base_id NUMBER, cp_transaction_num VARCHAR2) IS
8421 SELECT 'Y'
8422 FROM igf_ap_isir_matched
8423 WHERE base_id = cp_base_id
8424 AND transaction_num = cp_transaction_num;
8425
8426 lv_profile_value VARCHAR2(10);
8427 CURSOR c_ssn(
8428 cp_person_id NUMBER
8429 ) IS
8430 SELECT api_person_id,
8431 api_person_id_uf,
8432 end_dt
8433 FROM igs_pe_alt_pers_id
8434 WHERE pe_person_id = cp_person_id
8435 AND person_id_type LIKE 'SSN'
8436 AND SYSDATE BETWEEN start_dt AND NVL(end_dt,SYSDATE);
8437 l_ssn c_ssn%ROWTYPE;
8438
8439 person_match_rec get_person_match_cur%ROWTYPE;
8440 ln_apm_id NUMBER;
8441 l_trans_exists VARCHAR2(1);
8442 l_base_id igf_ap_fa_base_rec_all.base_id%TYPE;
8443
8444 BEGIN
8445 -- Get the Interface record details
8446 OPEN cur_isir_intrface (p_si_id);
8447 FETCH cur_isir_intrface INTO g_isir_intrface_rec;
8448 CLOSE cur_isir_intrface ;
8449
8450 IF g_isir_intrface_rec.si_id IS NULL THEN
8451 fnd_message.set_name('IGF','IGF_AP_NO_INT_REC_FOUND');
8452 p_message_out := fnd_message.get;
8453 p_return_status := 'E'; -- indicate Failure
8454 RETURN;
8455 END IF;
8456
8457
8458 fnd_profile.get('IGF_AP_SSN_REQ_FOR_BASE_REC',lv_profile_value);
8459 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
8460 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.wrpr_auto_fa_rec.debug','lv_profile_value:'||NVL(lv_profile_value,'N'));
8461 END IF;
8462 IF NVL(lv_profile_value,'N') = 'Y' THEN
8463 OPEN c_ssn(p_person_id);
8464 FETCH c_ssn INTO l_ssn;
8465 IF c_ssn%NOTFOUND THEN
8466 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
8467 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.wrpr_auto_fa_rec.debug','c_ssn%NOTFOUND. raising error');
8468 END IF;
8469 CLOSE c_ssn;
8470 p_return_status := 'E';
8471 fnd_message.set_name('IGF','IGF_AP_SSN_FOR_BASEREC');
8472 p_message_out := fnd_message.get;
8473 RETURN;
8474 ELSE
8475 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
8476 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.wrpr_auto_fa_rec.debug','c_ssn%FOUND.');
8477 END IF;
8478 CLOSE c_ssn;
8479 END IF;
8480 END IF;
8481
8482 -- get person match rec details for the person
8483 OPEN get_person_match_cur(p_si_id);
8484 FETCH get_person_match_cur INTO person_match_rec;
8485 CLOSE get_person_match_cur ;
8486
8487 -- check whether a FA Base Rec already exists for the person Id
8488 -- Added p_batch_yr as a part of Bug Fix 4241350
8489 OPEN cur_base_id_rec(p_person_id, p_batch_year);
8490 FETCH cur_base_id_rec INTO l_base_id;
8491 CLOSE cur_base_id_rec;
8492
8493 IF l_base_id IS NOT NULL THEN
8494 -- i.e. person already has a base rec
8495 -- Check whether an ISIR matched rec already exists for this person with the current transaction num
8496 -- IF yes, then report error else proceed to create a record.
8497
8498 OPEN cur_isir_matched(l_base_id, g_isir_intrface_rec.transaction_num_txt);
8499 FETCH cur_isir_matched INTO l_trans_exists;
8500 CLOSE cur_isir_matched ;
8501
8502 IF l_trans_exists = 'Y' THEN
8503 --i.e. The Person Base ID and the current trans rec already exists. Hence report error and return
8504 fnd_message.set_name('IGF','IGF_AP_TRAN_NUM_EXISTS');
8505 fnd_message.set_token('TRAN_NUM',g_isir_intrface_rec.transaction_num_txt);
8506 p_message_out := fnd_message.get;
8507 p_return_status := 'E'; -- indicate Failure
8508 RETURN;
8509 END IF; -- l_trans_exists
8510
8511 END IF; -- l_base_id
8512
8513 -- populate global variables.
8514 g_person_id := p_person_id;
8515 g_batch_year := g_isir_intrface_rec.batch_year_num;
8516 g_match_code := g_isir_intrface_rec.match_code;
8517 g_ci_cal_type := person_match_rec.ci_cal_type;
8518 g_ci_sequence_number := person_match_rec.ci_sequence_number;
8519 g_del_success_int_rec := 'N';
8520
8521
8522 -- person is deemed as matched.
8523 auto_fa_rec(p_person_id => p_person_id,
8524 p_apm_id => ln_apm_id ,
8525 p_cal_type => g_ci_cal_type,
8526 p_seq_num => g_ci_sequence_number
8527 );
8528
8529 fnd_message.set_name('IGF','IGF_AP_SUCCESS_FA_BASE');
8530 p_message_out := fnd_message.get;
8531
8532 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
8533 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_ap_matching_process_pkg.wrpr_auto_fa_rec.statement','ISIR Imported successfully for the specified person');
8534 END IF;
8535
8536 p_return_status := 'S'; -- return success
8537 EXCEPTION
8538 WHEN OTHERS THEN
8539 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8540 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.wrpr_auto_fa_rec.exception','Exception encountered and hence process could not complete successfully');
8541 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.wrpr_auto_fa_rec.exception','The exception is : ' || SQLERRM );
8542 END IF;
8543
8544 p_return_status := 'E'; -- return error
8545 fnd_message.set_name('IGF','IGF_AP_FAIL_FA_BASE');
8546 p_message_out := fnd_message.get;
8547
8548 fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
8549 fnd_message.set_token('NAME','igf_ap_matching_process.wrpr_refresh_matches');
8550 p_message_out := p_message_out || '. ' || fnd_message.get || ' Exception is : ' || SQLERRM;
8551 END wrpr_auto_fa_rec;
8552
8553
8554 PROCEDURE wrpr_unmatched_rec(p_si_id IN igf_ap_isir_ints_all.si_id%TYPE,
8555 p_return_status OUT NOCOPY VARCHAR2,
8556 p_message_out OUT NOCOPY VARCHAR2)
8557 IS
8558 /*
8559 || Created By : rgangara
8560 || Created On : 06-SEP-2004
8561 || Purpose : Provides Outside Interface (Wrapper procedure) for invoking the unmatched_rec procedure.
8562 || Creates person record and other data and imports the ISIR record.
8563 || Known limitations, enhancements or remarks :
8564 || Change History :
8565 || Who When What
8566 || (reverse chronological order - newest change first)
8567 */
8568
8569 CURSOR cur_isir_intrface(cp_si_id NUMBER) IS
8570 SELECT iia.*
8571 FROM igf_ap_isir_ints iia
8572 WHERE si_id = cp_si_id;
8573
8574
8575 CURSOR get_person_match_cur (cp_si_id IN NUMBER) IS
8576 SELECT *
8577 FROM igf_ap_person_match
8578 WHERE si_id = cp_si_id;
8579
8580 person_match_rec get_person_match_cur%ROWTYPE;
8581
8582 BEGIN
8583 -- Get the Interface record details
8584 OPEN cur_isir_intrface (p_si_id);
8585 FETCH cur_isir_intrface INTO g_isir_intrface_rec;
8586 CLOSE cur_isir_intrface ;
8587
8588 IF g_isir_intrface_rec.si_id IS NULL THEN
8589 fnd_message.set_name('IGF','IGF_AP_NO_INT_REC_FOUND');
8590 p_message_out := fnd_message.get;
8591 p_return_status := 'E'; -- indicate Failure
8592 RETURN;
8593 END IF;
8594
8595 -- validate person id
8596 OPEN get_person_match_cur(p_si_id);
8597 FETCH get_person_match_cur INTO person_match_rec;
8598 CLOSE get_person_match_cur ;
8599
8600 -- populate global variables.
8601 g_person_id := NULL;
8602 g_batch_year := g_isir_intrface_rec.batch_year_num;
8603 g_match_code := g_isir_intrface_rec.match_code;
8604 g_ci_cal_type := person_match_rec.ci_cal_type;
8605 g_ci_sequence_number := person_match_rec.ci_sequence_number;
8606 g_del_success_int_rec := 'N';
8607
8608 -- Check if HZ gen party profile is set to YES as a new person is to be created. If set to No. return with error message
8609 IF FND_PROFILE.VALUE('HZ_GENERATE_PARTY_NUMBER') = 'N' THEN
8610 p_return_status := 'E'; -- indicate error
8611
8612 fnd_message.set_name('IGF','IGF_AP_HZ_GEN_PARTY_NUMBER');
8613 p_message_out := fnd_message.get;
8614 RETURN;
8615 END IF;
8616
8617 -- call procedure to create person and import ISIR.
8618 unmatched_rec(p_apm_id => person_match_rec.apm_id,
8619 p_called_from => 'FORM',
8620 p_msg_out => p_message_out);
8621
8622
8623 fnd_message.set_name('IGF','IGF_AP_SUCCESS_CREATE_PERSON');
8624 p_message_out := fnd_message.get;
8625
8626 p_return_status := 'S'; -- indicate success
8627
8628 EXCEPTION
8629 WHEN OTHERS THEN
8630 IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
8631 fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_ap_matching_process_pkg.wrpr_unmatched_rec.exception','The exception is : ' || SQLERRM );
8632 END IF;
8633
8634 p_return_status := 'E'; -- indicate error
8635 fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
8636 fnd_message.set_token('NAME','igf_ap_matching_process.wrpr_unmatched_rec');
8637 p_message_out := fnd_message.get || '. Exception is : ' || SQLERRM;
8638 END wrpr_unmatched_rec;
8639
8640 END igf_ap_matching_process_pkg;