DBA Data[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;