DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_SL_CL_LI_IMP_PKG

Source


1 PACKAGE BODY IGF_SL_CL_LI_IMP_PKG AS
2 /* $Header: IGFSL19B.pls 120.11 2006/08/07 13:22:03 azmohamm ship $ */
3 
4 /*
5 --=========================================================================
6 --   Copyright (c) 1994, 1996 Oracle Corp. Redwood Shores, California, USA
7 --                               All rights reserved.
8 -- ========================================================================
9 --
10 --  DESCRIPTION
11 --         PL/SQL Body for package: IGF_SL_CL_LI_IMP_PKG
12 --
13 --  NOTES
14 --
15 --  This package is used to import the legacy FFELP Loan and Disbursement
16 --  data in the system.
17 --
18 ----------------------------------------------------------------------------------
19 -- CHANGE HISTORY
20 ----------------------------------------------------------------------------------
21 -- who        when              what
22 -- azmohamm  03-AUG-2006       FA 163 Enhancements
23 --                             Introduced GPLUSFL
24 -- mnade      6/6/2005         FA 157 - 4382371 - Changes to import cs1/2 related columns from interface table.
25 -- pssahni   3-Nov-2004        FA134 Enhancements
26 --                             Added function validate release
27 
28 -- svuppala    14-Oct-04       Bug # 3416936
29                                Added other loan amount
30   brajendr    12-Oct-2004     FA138 ISIR Enhacements
31                               Modified the reference of payment_isir_id
32 */
33 ----------------------------------------------------------------------------------
34 --  veramach    July 2004       FA 151 HR Integration (bug#3709292)
35 --                              Impacts of obsoleting columns from igf_aw_awd_disb_all
36 ---------------------------------------------------------------------------------
37 -- veramach     04-May-2004     bug 3603289
38 --                              Modified cursor cur_student_licence to select
39 --                              dependency_status from ISIR. other details are
40 --                              derived from igf_sl_gen.get_person_details.
41 -----------------------------------------------------------------------------------
42 -- sjadhav    18-Feb-2004       Bug 3451140
43 --                              Check for Non ED Branch ID setup only iff it is not
44 --                              '0000'
45 ----------------------------------------------------------------------------------
46 -- veramach   11-Dec-2003       Bug # 3184891 Removed calls to igf_ap_gen.write_log
47 --                              and added common logging
48 ----------------------------------------------------------------------------------
49 -- bkkumar    04-DEC-2003       Bug 3252382  FA 131 . TBH impact for the igf_aw_awd_disb_all
50 --                              Added two columns ATTENDANCE_TYPE_CODE,BASE_ATTENDANCE_TYPE_CODE
51 ----------------------------------------------------------------------------------
52 -- ugummall   04-NOV-2003       Bug 3102439. FA 126 - Multiple FA Offices.
53 --                              Renamed cursor c_ope_id to c_source_or_branch_id with one extra
54 --                              parameter cp_source_type.
55 -- ugummall   21-OCT-2003       Bug 3102439. FA 126 - Multiple FA Offices.
56 --                              Removed the cursor c_branch_id in is_valid function.
57 --                              Modified the cursor c_ope_id in is_valid function.
58 --                              Added validation on sch_non_ed_brc_id_txt column.
59 -- bkkumar    16-oct-03         Bug 3104228 FA 122 Build Passed the correct token to
60 --                              "award_year" to the fnd_message.
61 ----------------------------------------------------------------------------------
62 -- sjadhav    8-Oct-2003        Bug 3104228 FA 122 Build
63 --                              use recipient info from igf_sl_lor_v to
64 --                              insert into igf_sl_Lor_loc table
65 ---------------------------------------------------------------------------------
66 -- bkkumar    06-oct-2003       Bug 3104228 FA 122 Loans Enhancements
67 --                              a) Impact of obsoleting GUARANTOR_ID_TXT,
68 --                              LENDER_ID_TXT,LEND_NON_ED_BRC_ID_TXT,RECIPIENT_ID_TXT,
69 --                              RECIPIENT_TYPE,RECIPIENT_NON_ED_BRC_ID_TXT from the
70 --                              interface table and also adding a new column relationship_cd
71 --                              b) Impact of adding the relationship_cd
72 --                              in igf_sl_lor_all table and obsoleting
73 --                              BORW_LENDER_ID, DUNS_BORW_LENDER_ID,
74 --                              GUARANTOR_ID, DUNS_GUARNT_ID,
75 --                              LENDER_ID, DUNS_LENDER_ID
76 --                              LEND_NON_ED_BRC_ID, RECIPIENT_ID
77 --                              RECIPIENT_TYPE,DUNS_RECIP_ID
78 --                              RECIP_NON_ED_BRC_ID columns.
79 --                              c) The DUNS_BORW_LENDER_ID
80 --                              DUNS_GUARNT_ID
81 --                              DUNS_LENDER_ID
82 --                              DUNS_RECIP_ID columns are osboleted from the
83 --                              igf_sl_lor_loc_all table.
84 ---------------------------------------------------------------------------------
85 -- veramach   23-SEP-2003       Bug 3104228:
86 --                              Obsoleted lend_apprv_denied_code,lend_apprv_denied_date
87 --                              ,cl_rec_status_last_update,cl_rec_status,mpn_confirm_code
88 --                              ,appl_loan_phase_code_chg,appl_loan_phase_code,
89 --                              p_ssn_chg_date,p_dob_chg_date,s_ssn_chg_date,s_dob_chg_date,s_local_addr_chg_date,
90 --                              chg_batch_id,appl_send_error_codes from igf_sl_lor
91 --                              Obsoleted lend_apprv_denied_code,lend_apprv_denied_date,cl_rec_status_last_update,
92 --                              cl_rec_status,mpn_confirm_code,appl_loan_phase_code_chg,appl_loan_phase_code,
93 --                              p_ssn_chg_date,p_dob_chg_date,s_ssn_chg_date,s_dob_chg_date,s_local_addr_chg_date,
94 --                              chg_batch_id from igf_sl_lor_loc
95 ---------------------------------------------------------------------------------
96 -- veramach   16-SEP-2003       FA 122 Build Loan Enhancements
97 --                              1.Changed insert_records procedure's c_loan_dtls cursor
98 --                              not to select borrower information
99 --                              2.Changed validations of prc_type_code,disbursement_hld_release_flag,
100 --                              record_type
101 ----------------------------------------------------------------------------------
102 
103      IMPORT_ERROR EXCEPTION;
104 
105      g_tab_index              NUMBER :=0;
106      g_p_person_id            NUMBER;
107      g_igf_sl_msg_table       igf_sl_msg_table;
108 
109      g_error VARCHAR2(11);
110 
111      g_award_year             VARCHAR2(80);
112      g_award_year_status_desc VARCHAR2(80);
113      g_del_flag               VARCHAR2(80);
114      g_person_number          VARCHAR2(80);
115      g_batch_num              VARCHAR2(80);
116      g_loan_record            VARCHAR2(80);
117      g_loan_disb              VARCHAR2(80);
118      g_processing             VARCHAR2(80);
119      g_para_pass              VARCHAR2(80);
120      g_sys_award_year         VARCHAR2(80);
121      g_rel_version            VARCHAR2(30);
122 
123      CURSOR c_interface (cp_batch_id              NUMBER,
124                          cp_alternate_code        VARCHAR2,
125        p_import_status_type_1   igf_sl_li_orig_ints.import_status_type%TYPE,
126        p_import_status_type_2   igf_sl_li_orig_ints.import_status_type%TYPE
127       )
128      IS
129      SELECT
130      ROWID,
131      TRUNC(clint.loan_per_begin_date)                  loan_per_begin_date,
132      TRUNC(clint.loan_per_end_date)                    loan_per_end_date,
133      TRUNC(clint.loan_status_date)                     loan_status_date,
134      TRUNC(clint.active_date)                          active_date,
135      TRUNC(clint.anticip_compl_date)                   anticip_compl_date,
136      TRUNC(clint.b_permt_addr_chg_date)                b_permt_addr_chg_date,
137      TRUNC(clint.b_signature_date)                     b_signature_date,
138      TRUNC(clint.credit_status_date)                   credit_status_date,
139      TRUNC(clint.guarantee_date)                       guarantee_date,
140      TRUNC(clint.guarnt_status_date)                   guarnt_status_date,
141      TRUNC(clint.lend_status_date)                     lend_status_date,
142      TRUNC(clint.lend_blkt_guarnt_appr_date)           lend_blkt_guarnt_appr_date,
143      TRUNC(clint.orig_ack_date)                        orig_ack_date,
144      TRUNC(clint.orig_batch_date)                      orig_batch_date,
145      TRUNC(clint.pnote_status_date)                    pnote_status_date,
146      TRUNC(clint.sch_cert_date)                        sch_cert_date,
147      TRUNC(clint.sch_refund_date)                      sch_refund_date,
148      TRUNC(clint.file_creation_date)                   file_creation_date,
149      TRUNC(clint.file_trans_date)                      file_trans_date,
150      clint.batch_num,
151      clint.loan_seq_num,
152      clint.act_interest_rate_num,
153      clint.alt_appl_ver_code_num,
154      clint.alt_borw_tot_stu_loan_debt_amt,
155      clint.borw_gross_annual_sal_amt,
156      clint.borw_other_income_amt,
157      clint.cl_seq_num,
158      clint.coa_amt,
159      clint.efc_amt,
160      clint.est_fa_amt,
161      clint.fed_sls_debt_amt,
162      clint.fed_stafford_loan_debt_amt,
163      clint.flp_approved_amt,
164      clint.flp_cert_amt,
165      clint.fls_approved_amt,
166      clint.fls_cert_amt,
167      clint.flu_approved_amt,
168      clint.flu_cert_amt,
169      clint.guarantee_amt,
170      clint.heal_debt_amt,
171      clint.other_debt_amt,
172      clint.perkins_debt_amt,
173      clint.req_loan_amt,
174      clint.sch_refund_amt,
175      clint.stud_mth_auto_pymt_amt,
176      clint.stud_mth_crdtcard_pymt_amt,
177      clint.stud_mth_ed_loan_pymt_amt,
178      clint.stud_mth_housing_pymt_amt,
179      clint.stud_mth_other_pymt_amt,
180      clint.tot_outstd_plus_amt,
181      clint.tot_outstd_stafford_amt,
182      clint.alt_cert_amt,
183      clint.alt_approved_amt,
184      clint.reinst_avail_amt,
185      TRIM(clint.ci_alternate_code)                                   ci_alternate_code,
186      TRIM(clint.person_number)                                       person_number,
187      TRIM(clint.award_number_txt)                                    award_number_txt,
188      TRIM(clint.loan_number_txt)                                     loan_number_txt,
189      TRIM(clint.import_status_type)                                  import_status_type,
190      TRIM(clint.loan_status_code)                                    loan_status_code,
191      TRIM(clint.active_flag)                                         active_flag,
192      TRIM(clint.act_serial_loan_code)                                act_serial_loan_code,
193      TRIM(clint.alt_prog_type_cd)                                    alt_prog_type_cd,
194      TRIM(clint.borr_person_number)                                  borr_person_number,
195      TRIM(clint.b_default_status_flag)                               b_default_status_flag,
196      TRIM(clint.b_foreign_postal_cd)                                 b_foreign_postal_cd,
197      TRIM(clint.b_stu_indicator_flag)                                b_stu_indicator_flag,
198      TRIM(clint.b_reference_flag)                                    b_reference_flag,
199      TRIM(clint.b_signature_flag)                                    b_signature_flag,
200      TRIM(clint.borr_credit_auth_flag)                               borr_credit_auth_flag,
201      TRIM(clint.borr_sign_flag)                                      borr_sign_flag,
202      TRIM(clint.borw_confirm_flag)                                   borw_confirm_flag,
203      TRIM(clint.borw_interest_flag)                                  borw_interest_flag,
204      TRIM(clint.borw_outstd_loan_flag)                               borw_outstd_loan_flag,
205      TRIM(clint.crdt_undr_difft_name_flag)                           crdt_undr_difft_name_flag,
206      TRIM(clint.credit_status_code)                                  credit_status_code,
207      TRIM(clint.eft_auth_flag)                                       eft_auth_flag,
208      TRIM(clint.enrollment_code)                                     enrollment_code,
209      TRIM(clint.err_mesg_1_cd)                                       err_mesg_1_cd,
210      TRIM(clint.err_mesg_2_cd)                                       err_mesg_2_cd,
211      TRIM(clint.err_mesg_3_cd)                                       err_mesg_3_cd,
212      TRIM(clint.err_mesg_4_cd)                                       err_mesg_4_cd,
213      TRIM(clint.err_mesg_5_cd)                                       err_mesg_5_cd,
214      TRIM(clint.fed_appl_form_type)                                  fed_appl_form_type,
215      TRIM(clint.grade_level_code)                                    grade_level_code,
216      TRIM(clint.guarnt_adj_flag)                                     guarnt_adj_flag,
217      TRIM(clint.guarnt_amt_redn_code)                                guarnt_amt_redn_code,
218      TRIM(clint.guarnt_status_code)                                  guarnt_status_code,
219      TRIM(clint.int_rate_opt_code)                                   int_rate_opt_code,
220      TRIM(clint.last_resort_lender_flag)                             last_resort_lender_flag,
221      TRIM(clint.lend_status_code)                                    lend_status_code,
222      TRIM(clint.lend_blkt_guarnt_flag)                               lend_blkt_guarnt_flag,
223      TRIM(clint.orig_ack_batch_id_txt)                               orig_ack_batch_id_txt,
224      TRIM(clint.orig_send_batch_id_txt)                              orig_send_batch_id_txt,
225      TRIM(clint.pnote_delivery_code)                                 pnote_delivery_code,
226      TRIM(clint.pnote_status_code)                                   pnote_status_code,
227      TRIM(clint.prc_type_code)                                       prc_type_code,
228      TRIM(clint.record_code)                                         record_code,
229      TRIM(clint.repayment_opt_code)                                  repayment_opt_code,
230      TRIM(clint.req_serial_loan_code)                                req_serial_loan_code,
231      TRIM(clint.resp_to_orig_flag)                                   resp_to_orig_flag,
232      TRIM(clint.rev_notice_of_guarnt_code)                           rev_notice_of_guarnt_code,
233      TRIM(clint.s_default_status_flag)                               s_default_status_flag,
234      TRIM(clint.s_signature_flag)                                    s_signature_flag,
235      TRIM(clint.sch_non_ed_brc_id_txt)                               sch_non_ed_brc_id_txt,
236      TRIM(clint.service_type_code)                                   service_type_code,
237      TRIM(clint.stud_sign_flag)                                      stud_sign_flag,
238      TRIM(clint.student_major_txt)                                   student_major_txt,
239      TRIM(clint.uniq_layout_ident_code)                              uniq_layout_ident_code,
240      TRIM(clint.uniq_layout_vend_code)                               uniq_layout_vend_code,
241      TRIM(clint.orig_batch_id_txt)                                   orig_batch_id_txt,
242      TRIM(clint.defer_req_flag)                                      defer_req_flag,
243      TRIM(clint.b_license_state_code)                                b_license_state_code,
244      TRIM(clint.b_license_number_txt)                                b_license_number_txt,
245      TRIM(clint.send_resp_code)                                      send_resp_code,
246      TRIM(clint.source_id_txt)                                       source_id_txt,
247      TRIM(clint.source_non_ed_brc_id_txt)                            source_non_ed_brc_id_txt,
248      TRIM(clint.import_record_type)                                  import_record_type,
249      TRIM(clint.relationship_cd)                                     relationship_cd,  -- FA 122 Loans Enhancements,
250      TRIM(clint.actual_record_type_code)                             actual_record_type_code,
251      TRIM(clint.lend_apprv_denied_code)                              lend_apprv_denied_code,
252      TRIM(clint.lend_apprv_denied_date)                              lend_apprv_denied_date,
253      TRIM(clint.cl_rec_status)                                       cl_rec_status,
254      TRIM(clint.appl_loan_phase_code)                                appl_loan_phase_code,
255      TRIM(clint.mpn_confirm_code)                                    mpn_confirm_code,
256      TRIM(clint.appl_loan_phase_code_chg)                            appl_loan_phase_code_chg,
257      TRIM(clint.external_loan_id_txt)                                external_loan_id_txt,
258      TRUNC(clint.other_loan_amt)                                     other_loan_amt,
259      TRIM(clint.guarantor_use_txt)                                   guarantor_use_txt,
260      TRIM(clint.lender_use_txt)                                      lender_use_txt,
261      TRIM(clint.school_use_txt)                                      school_use_txt,
262      TRIM(cl_rec_status_last_update)                                 cl_rec_status_last_update,
263      TRIM(clint.cs1_lname)                                           cs1_lname,
264      TRIM(clint.cs1_fname)                                           cs1_fname,
265      TRIM(clint.cs1_mi_txt)                                          cs1_mi_txt,
266      TRIM(clint.cs1_ssn_txt)                                         cs1_ssn_txt,
267      TRIM(clint.cs1_citizenship_status)                              cs1_citizenship_status,
268      TRIM(clint.cs1_address_line_1_txt)                              cs1_address_line_1_txt,
269      TRIM(clint.cs1_address_line_2_txt)                              cs1_address_line_2_txt,
270      TRIM(clint.cs1_city_txt)                                        cs1_city_txt,
271      TRIM(clint.cs1_state_txt)                                       cs1_state_txt,
272      TRIM(clint.cs1_zip_txt)                                         cs1_zip_txt,
273      TRIM(clint.cs1_zip_suffix_txt)                                  cs1_zip_suffix_txt,
274      TRIM(clint.cs1_telephone_number_txt)                            cs1_telephone_number_txt,
275      TRIM(clint.cs1_signature_code_txt)                              cs1_signature_code_txt,
276      TRIM(clint.cs2_lname)                                           cs2_lname,
277      TRIM(clint.cs2_fname)                                           cs2_fname,
278      TRIM(clint.cs2_mi_txt)                                          cs2_mi_txt,
279      TRIM(clint.cs2_ssn_txt)                                         cs2_ssn_txt,
280      TRIM(clint.cs2_citizenship_status)                              cs2_citizenship_status,
281      TRIM(clint.cs2_address_line_1_txt)                              cs2_address_line_1_txt,
282      TRIM(clint.cs2_address_line_2_txt)                              cs2_address_line_2_txt,
283      TRIM(clint.cs2_city_txt)                                        cs2_city_txt,
284      TRIM(clint.cs2_state_txt)                                       cs2_state_txt,
285      TRIM(clint.cs2_zip_txt)                                         cs2_zip_txt,
286      TRIM(clint.cs2_zip_suffix_txt)                                  cs2_zip_suffix_txt,
287      TRIM(clint.cs2_telephone_number_txt)                            cs2_telephone_number_txt,
288      TRIM(clint.cs2_signature_code_txt)                              cs2_signature_code_txt,
289      TRIM(clint.cs1_credit_auth_code_txt)                            cs1_credit_auth_code_txt,
290      TRUNC(clint.cs1_birth_date)                                     cs1_birth_date,
291      TRIM(clint.cs1_drv_license_num_txt)                             cs1_drv_license_num_txt,
292      TRIM(clint.cs1_drv_license_state_txt)                           cs1_drv_license_state_txt,
293      SUBSTR(clint.cs1_elect_sig_ind_code_txt, 1, 1)                  cs1_elect_sig_ind_code_txt,        -- Since the elect sig can come in as " " for N, treating it the same way
294      TRIM(clint.cs1_frgn_postal_code_txt)                            cs1_frgn_postal_code_txt,
295      TRIM(clint.cs1_frgn_tel_num_prefix_txt)                         cs1_frgn_tel_num_prefix_txt,
296      TRUNC(clint.cs1_gross_annual_sal_num)                           cs1_gross_annual_sal_num,
297      TRIM(clint.cs1_mthl_auto_pay_txt)                               cs1_mthl_auto_pay_txt,
298      TRIM(clint.cs1_mthl_cc_pay_txt)                                 cs1_mthl_cc_pay_txt,
299      TRIM(clint.cs1_mthl_edu_loan_pay_txt)                           cs1_mthl_edu_loan_pay_txt,
300      TRIM(clint.cs1_mthl_housing_pay_txt)                            cs1_mthl_housing_pay_txt,
301      TRIM(clint.cs1_mthl_other_pay_txt)                              cs1_mthl_other_pay_txt,
302      TRUNC(clint.cs1_other_income_amt)                               cs1_other_income_amt,
303      TRIM(clint.cs1_rel_to_student_flag)                             cs1_rel_to_student_flag,
304      TRIM(clint.cs1_suffix_txt)                                      cs1_suffix_txt,
305      TRUNC(clint.cs1_years_at_address_txt)                           cs1_years_at_address_txt,
306      TRIM(clint.cs2_credit_auth_code_txt)                            cs2_credit_auth_code_txt,
307      TRUNC(clint.cs2_birth_date)                                     cs2_birth_date,
308      TRIM(clint.cs2_drv_license_num_txt)                             cs2_drv_license_num_txt,
309      TRIM(clint.cs2_drv_license_state_txt)                           cs2_drv_license_state_txt,
310      SUBSTR(clint.cs2_elect_sig_ind_code_txt, 1, 1)                  cs2_elect_sig_ind_code_txt,        -- Since the elect sig can come in as " " for N, treating it the same way
311      TRIM(clint.cs2_frgn_postal_code_txt)                            cs2_frgn_postal_code_txt,
312      TRIM(clint.cs2_frgn_tel_num_prefix_txt)                         cs2_frgn_tel_num_prefix_txt,
313      TRUNC(clint.cs2_gross_annual_sal_num)                           cs2_gross_annual_sal_num,
314      TRIM(clint.cs2_mthl_auto_pay_txt)                               cs2_mthl_auto_pay_txt,
315      TRIM(clint.cs2_mthl_cc_pay_txt)                                 cs2_mthl_cc_pay_txt,
316      TRIM(clint.cs2_mthl_edu_loan_pay_txt)                           cs2_mthl_edu_loan_pay_txt,
317      TRIM(clint.cs2_mthl_housing_pay_txt)                            cs2_mthl_housing_pay_txt,
318      TRIM(clint.cs2_mthl_other_pay_txt)                              cs2_mthl_other_pay_txt,
319      TRUNC(clint.cs2_other_income_amt)                               cs2_other_income_amt,
320      TRIM(clint.cs2_rel_to_student_flag)                             cs2_rel_to_student_flag,
321      TRIM(clint.cs2_suffix_txt)                                      cs2_suffix_txt,
322      TRUNC(clint.cs2_years_at_address_txt)                           cs2_years_at_address_txt,
323      TRIM(clint.esign_src_typ_cd) esign_src_typ_cd -- FA 161 - CL 4
324      FROM
325      igf_sl_li_orig_ints clint
326      WHERE
327      clint.batch_num          = cp_batch_id       AND
328      clint.ci_alternate_code  = cp_alternate_code AND
329      (clint.import_status_type = p_import_status_type_1 OR clint.import_status_type = p_import_status_type_2)
330      ORDER BY clint.person_number;
331 
332      CURSOR c_disb_interface(cp_alternate_code   VARCHAR2,
333                              cp_person_number    VARCHAR2,
334                              cp_award_number_txt VARCHAR2,
335                              cp_loan_number      VARCHAR2)
336      IS
337      SELECT
338      TRUNC(dlint.disbursement_date)                disbursement_date,
339      TRUNC(dlint.fund_release_date)                fund_release_date,
340      TRUNC(dlint.guarantee_date)                   guarantee_date,
341      TRUNC(dlint.pnote_status_date)                pnote_status_date,
342      TRUNC(dlint.disbursement_status_date)         disbursement_status_date,
343      TRUNC(dlint.fund_status_date)                 fund_status_date,
344      TRUNC(dlint.file_creation_date)               file_creation_date,
345      TRUNC(dlint.file_trans_date)                  file_trans_date,
346      dlint.disbursement_num,
347      dlint.sch_disbursement_num,
348      dlint.guarantee_amt,
349      dlint.gross_disbursement_amt,
350      dlint.origination_fee_amt,
351      dlint.guarantee_fee_amt,
352      dlint.guarantee_fees_paid_amt,
353      dlint.net_cancel_amt,
354      dlint.origination_fees_paid_amt,
355      dlint.netted_cancel_amt,
356      dlint.outstd_cancel_amt,
357      TRIM(dlint.ci_alternate_code)               ci_alternate_code,
358      TRIM(dlint.person_number)                   person_number,
359      TRIM(dlint.award_number_txt)                award_number_txt,
360      TRIM(dlint.loan_number_txt)                 loan_number_txt,
361      TRIM(dlint.record_type)                     record_type,
362      TRIM(dlint.school_use_txt)                  school_use_txt,
363      TRIM(dlint.lender_use_txt)                  lender_use_txt,
364      TRIM(dlint.guarantor_use_txt)               guarantor_use_txt,
365      TRIM(dlint.fund_dist_mthd_type)             fund_dist_mthd_type,
366      TRIM(dlint.check_number_txt)                check_number_txt,
367      TRIM(dlint.late_disbursement_flag)          late_disbursement_flag,
368      TRIM(dlint.prev_reported_flag)              prev_reported_flag,
369      TRIM(dlint.err_mesg_1_cd)                   err_mesg_1_cd,
370      TRIM(dlint.err_mesg_2_cd)                   err_mesg_2_cd,
371      TRIM(dlint.err_mesg_3_cd)                   err_mesg_3_cd,
372      TRIM(dlint.err_mesg_4_cd)                   err_mesg_4_cd,
373      TRIM(dlint.err_mesg_5_cd)                   err_mesg_5_cd,
374      TRIM(dlint.disbursement_hld_release_flag)   disbursement_hld_release_flag,
375      TRIM(dlint.pnote_code)                      pnote_code,
376      TRIM(dlint.disbursement_status_code)        disbursement_status_code,
377      TRIM(dlint.fund_status_code)                fund_status_code,
378      TRIM(dlint.lender_name)                     lender_name,
379      TRIM(dlint.roster_batch_id_txt)             roster_batch_id,
380      TRIM(dlint.recipient_id_txt)                recipient_id_txt,
381      TRIM(dlint.recipient_non_ed_brc_id_txt)     recipient_non_ed_brc_id_txt,
382      TRIM(dlint.source_id_txt)                   source_id_txt,
383      TRIM(dlint.source_non_ed_brc_id_txt)        source_non_ed_brc_id_txt,
384      TRIM(dlint.send_resp_code)                  send_resp_code,
385      TRIM(dlint.direct_to_borr_flag)             direct_to_borr_flag
386      FROM
387      igf_sl_li_org_disb_ints dlint
388      WHERE
389      dlint.ci_alternate_code     = cp_alternate_code    AND
390      dlint.person_number         = cp_person_number     AND
391      dlint.award_number_txt      = cp_award_number_txt  AND
392      dlint.loan_number_txt       = cp_loan_number;
393 
394      CURSOR c_get_award (cp_base_id       NUMBER,
395                          cp_award_number  VARCHAR2)
396      IS
397      SELECT    awd.award_id,
398                awd.offered_amt,
399                awd.accepted_amt,
400                fcat.fed_fund_code,
401                fcat.fund_code
402      FROM      igf_aw_award_all     awd,
403                igf_aw_fund_mast_all fmast,
404                igf_aw_fund_cat_all  fcat
405      WHERE     awd.base_id           = cp_base_id      AND
406                awd.award_number_txt  = cp_award_number AND
407                awd.fund_id           = fmast.fund_id   AND
408                fmast.fund_code       = fcat.fund_code;
409 
410      l_get_award c_get_award%ROWTYPE;
411 
412 
413 PROCEDURE log_parameters(p_alternate_code  VARCHAR2,
414                          p_batch_number    VARCHAR2,
415                          p_del_ind         VARCHAR2)
416 IS
417 --
418 --  Created By : brajendr
419 --  Created On : 10-Jul-2003
420 --  Purpose : This process log the parameters in the log file
421 --  Known limitations, enhancements or remarks :
422 --  Change History :
423 --  Who             When            What
424 --  (reverse chronological order - newest change first)
425 --
426 
427 -- Get the values from the lookups
428 
429     CURSOR c_get_parameters
430     IS
431     SELECT meaning, lookup_code
432       FROM igf_lookups_view
433      WHERE lookup_type = 'IGF_GE_PARAMETERS'
434        AND lookup_code IN ('AWARD_YEAR',
435                            'BATCH_NUMBER',
436                            'DELETE_FLAG',
437                            'PARAMETER_PASS',
438                            'PROCESSING',
439                            'LOAN_DISB',
440                            'LOAN_RECORD',
441                            'AWARD_YR_STATUS',
442                            'PERSON_NUMBER');
443 
444     parameter_rec           c_get_parameters%ROWTYPE;
445 
446 
447 BEGIN
448 
449      OPEN c_get_parameters;
450      LOOP
451           FETCH c_get_parameters INTO  parameter_rec;
452           EXIT WHEN c_get_parameters%NOTFOUND;
453 
454           IF parameter_rec.lookup_code ='AWARD_YEAR' THEN
455             g_award_year    := TRIM(parameter_rec.meaning);
456 
457           ELSIF parameter_rec.lookup_code ='BATCH_NUMBER' THEN
458             g_batch_num     := TRIM(parameter_rec.meaning);
459 
460           ELSIF parameter_rec.lookup_code ='DELETE_FLAG' THEN
461             g_del_flag      := TRIM(parameter_rec.meaning);
462 
463           ELSIF parameter_rec.lookup_code ='PARAMETER_PASS' THEN
464             g_para_pass     := TRIM(parameter_rec.meaning);
465 
466           ELSIF parameter_rec.lookup_code ='PROCESSING' THEN
467             g_processing    := TRIM(parameter_rec.meaning);
468 
469           ELSIF parameter_rec.lookup_code ='LOAN_RECORD' THEN
470             g_loan_record   := TRIM(parameter_rec.meaning);
471 
472           ELSIF parameter_rec.lookup_code ='LOAN_DISB' THEN
473             g_loan_disb     := TRIM(parameter_rec.meaning);
474 
475           ELSIF parameter_rec.lookup_code ='PERSON_NUMBER' THEN
476             g_person_number := TRIM(parameter_rec.meaning);
477 
478           ELSIF parameter_rec.lookup_code ='AWARD_YR_STATUS' THEN
479             g_award_year_status_desc := TRIM(parameter_rec.meaning);
480           END IF;
481 
482      END LOOP;
483      CLOSE c_get_parameters;
484 
485      fnd_file.new_line(fnd_file.log,1);
486      fnd_file.put_line(fnd_file.log, g_para_pass); --------------Parameters Passed--------------
487      fnd_file.new_line(fnd_file.log,1);
488 
489      fnd_file.put_line(fnd_file.log, RPAD(g_award_year,40) || ' : '|| p_alternate_code);
490      fnd_file.put_line(fnd_file.log, RPAD(g_batch_num,40)  || ' : '|| p_batch_number);
491      fnd_file.put_line(fnd_file.log, RPAD(g_del_flag,40)   || ' : '|| p_del_ind);
492 
493      fnd_file.new_line(fnd_file.log,1);
494      fnd_file.put_line(fnd_file.log, '--------------------------------------------------------');
495      fnd_file.new_line(fnd_file.log,1);
496 
497 
498   EXCEPTION
499     WHEN OTHERS THEN
500       IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
501         fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_li_imp_pkg.log_parameters.exception','LOG_PARAMETERS :: ' || SQLERRM);
502       END IF;
503       fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
504       fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.LOG_PARAMETERS');
505       igs_ge_msg_stack.add;
506 
507 END log_parameters;
508 
509 
510 FUNCTION is_valid(p_loan_number IN VARCHAR2,
511                   p_cal_type    IN VARCHAR2,
512                   p_seq_number  IN VARCHAR2)
513 
514 RETURN BOOLEAN
515 AS
516 --
517 --   Created By : gmuralid
518 --   Created On : 24-JUN-2003
519 --   Purpose : The function is used to validate loan number
520 --   Known limitations, enhancements or remarks :
521 --   Change History :
522 --   Who              When            What
523 --   ugummall         04-NOV-2003     Bug 3102439. FA 126 - Multiple FA Offices.
524 --                                    Renamed cursor c_ope_id to c_source_or_branch_id with one extra
525 --                                    parameter cp_source_type.
526 --   ugummall         21-OCT-2003     Bug 3102439. FA 126 - Multiple FA Offices.
527 --                                    Removed the cursor c_branch_id and its reference.
528 --                                    Modified the cursor c_ope_id so that cp_ope_id is
529 --                                    configured as an active OPEID in the system under any Org Unit.
530 --   (reverse chronological order - newest change first)
531 --
532 
533      CURSOR c_source_or_branch_id(cp_source_or_branch_id VARCHAR2, cp_source_type VARCHAR2)
534      IS
535       SELECT 1
536         FROM hz_parties hz,
537              igs_or_org_alt_ids oli,
538              igs_or_org_alt_idtyp olt
539        WHERE oli.org_structure_id = hz.party_number
540          AND oli.org_alternate_id_type = olt.org_alternate_id_type
541          AND SYSDATE BETWEEN oli.start_date AND NVL(oli.end_date, SYSDATE)
542          AND hz.status = 'A'
543          AND oli.org_alternate_id = cp_source_or_branch_id
544          AND system_id_type = cp_source_type;
545 
546 
547      l_source_or_branch_id   c_source_or_branch_id%ROWTYPE;
548 
549      l_part_1 VARCHAR2(8);
550      l_part_2 VARCHAR2(4);
551      l_part_3 VARCHAR2(3);
552 
553      l_part3_1 VARCHAR2(1);
554      l_part3_2 VARCHAR2(1);
555      l_part3_3 VARCHAR2(1);
556      l_part_4  VARCHAR2(3);
557 
558      l_part4_1 VARCHAR2(1);
559      l_part4_2 VARCHAR2(1);
560      l_part4_3 VARCHAR2(1);
561 
562 BEGIN
563 
564        l_part_1 := SUBSTR(p_loan_number,1,8);
565 
566        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
567          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','IS_VALID: l_part_1 ' || l_part_1);
568        END IF;
569 
570        OPEN c_source_or_branch_id(l_part_1, 'OPE_ID_NUM');
571        FETCH c_source_or_branch_id INTO l_source_or_branch_id;
572        IF (c_source_or_branch_id%NOTFOUND) THEN
573          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
574            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','IS_VALID: l_part_1 not valid for school id' || l_part_1);
575          END IF;
576          CLOSE c_source_or_branch_id;
577          RETURN FALSE;
578        ELSE
579          CLOSE c_source_or_branch_id;
580        END IF;
581 
582        l_part_2 := SUBSTR(p_loan_number,7,4);
583 
584        IF l_part_2 <> '0000' THEN
585          OPEN c_source_or_branch_id(l_part_2, 'SCH_NON_ED_BRC_ID');
586          FETCH c_source_or_branch_id INTO l_source_or_branch_id;
587          IF (c_source_or_branch_id%NOTFOUND) THEN
588            IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
589              fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','IS_VALID: l_part_2 not valid for school non ed branch id' || l_part_2);
590            END IF;
591            CLOSE c_source_or_branch_id;
592            RETURN FALSE;
593          ELSE
594            CLOSE c_source_or_branch_id;
595          END IF;
596        END IF;
597 
598        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
599          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','IS_VALID: l_part_2 ' || l_part_2);
600        END IF;
601 
602        l_part_3  :=  SUBSTR(p_loan_number,12,3);
603        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
604          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','IS_VALID: l_part_3 ' || l_part_3);
605        END IF;
606        l_part3_1 := SUBSTR(l_part_3,1,1);
607        l_part3_2 := SUBSTR(l_part_3,2,1);
608        l_part3_3 := SUBSTR(l_part_3,3,1);
609 
610        IF l_part3_1 NOT IN ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S') THEN
611           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
612             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','IS_VALID: l_part3_1 ' || l_part3_1);
613           END IF;
614           RETURN FALSE;
615        ELSIF (l_part3_1 = 'S') THEN
616                 IF l_part3_2 NOT IN ('0','1','2','3','4','5','6','7','8','9','A','B') THEN
617                        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
618                          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.is_valid.debug','is_valid: l_part3_2 ' || l_part3_2);
619                        END IF;
620                        RETURN FALSE;
621                 END IF;
622        ELSIF (l_part3_1 <> 'S') THEN
623                 IF l_part3_2 NOT IN  ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J',
624                                 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') THEN
625                        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
626                          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_im_pkg.is_valid.debug','IS_VALID: l_part3_2 - II ' || l_part3_2);
627                        END IF;
628                        RETURN FALSE;
629                 END IF;
630        ELSIF (l_part3_1 = 'S') AND (l_part3_2 = 'B') THEN
631                 IF l_part3_3 NOT IN ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F') THEN
632                        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
633                          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.is_valid.debug','IS_VALID: l_part3_3 ' || l_part3_3);
634                        END IF;
635                        RETURN FALSE;
636                 END IF;
637        ELSIF (l_part3_1 <> 'S') OR (l_part3_2 <> 'B') THEN
638                 IF  l_part3_3 NOT IN  ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J',
639                                 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') THEN
640                        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
641                          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.is_valid.debug','IS_VALID: l_part3_3 - II ' || l_part3_3);
642                        END IF;
643                        RETURN FALSE;
644                 END IF;
645        END IF;
646 
647        l_part_4 := SUBSTR(p_loan_number,15,3);
648 
649        IF l_part_4 = '000' THEN
650           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
651             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.is_valid.debug','IS_VALID: l_part_4 ' || l_part_4);
652           END IF;
653           RETURN FALSE;
654        ELSE
655           l_part4_1 := SUBSTR(l_part_4,1,1);
656           l_part4_2 := SUBSTR(l_part_4,2,1);
657           l_part4_3 := SUBSTR(l_part_4,3,1);
658 
659           IF l_part4_1 NOT IN ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J',
660                             'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') THEN
661 
662              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
663                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.is_valid.debug','IS_VALID: l_part4_1 ' || l_part4_1);
664              END IF;
665              RETURN FALSE;
666 
667            ELSIF l_part4_2 NOT IN ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J',
668                                 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') THEN
669              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
670                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.is_valid.debug','IS_VALID: l_part4_2 ' || l_part4_2);
671              END IF;
672              RETURN FALSE;
673 
674            ELSIF l_part4_3 NOT IN ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J',
675                                 'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') THEN
676              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
677                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.is_valid.debug','IS_VALID: l_part4_3 ' || l_part4_3);
678              END IF;
679              RETURN FALSE;
680 
681            END IF;
682         END IF;
683 
684        RETURN TRUE;
685 
686 END is_valid;
687 
688 FUNCTION validate_release( l_interface    IN   c_interface%ROWTYPE,
689                            p_cal_type     IN   VARCHAR2,
690                            p_seq_number   IN   NUMBER,
691                            p_fed_fund_cd  IN   VARCHAR2)
692 RETURN BOOLEAN AS
693   /*
694   ||  Created By : pssahni
695   ||  Created On : 3-Nov-2004
696   ||  Purpose : FA134 Enhancements
697   ||  Known limitations, enhancements or remarks :
698   ||  Change History :
699   ||  Who             When            What
700   || bvisvana         14-Nov-2005     Bug # 4732538 - Validation of Fed appl form code based on release and fund type
701   ||  (reverse chronological order - newest change first)
702   */
703 
704 
705 -- Get the release version
706 CURSOR c_get_rel_ver(p_rel_code igf_sl_cl_setup_all.relationship_cd%TYPE, p_cal_type VARCHAR2 , p_seq_num NUMBER)
707 IS
708   SELECT cl_version
709     FROM igf_sl_cl_setup_all
710    WHERE ci_cal_type = p_cal_type
711      AND ci_sequence_number = p_seq_num
712      AND relationship_cd= p_rel_code;
713 
714  get_rel_ver_rec    c_get_rel_ver%ROWTYPE;
715 
716   CURSOR c_num_disb         (cp_alternate_code   VARCHAR2,
717                              cp_person_number    VARCHAR2,
718                              cp_award_number_txt VARCHAR2,
719                              cp_loan_number      VARCHAR2)
720      IS
721      SELECT
722       count(*)
723      FROM
724      igf_sl_li_org_disb_ints
725      WHERE
726      ci_alternate_code     = cp_alternate_code    AND
727      person_number         = cp_person_number     AND
728      award_number_txt      = cp_award_number_txt  AND
729      loan_number_txt       = cp_loan_number;
730 
731 l_num_disb             NUMBER;
732 
733 check_passed BOOLEAN       := TRUE;
734 
735 BEGIN
736 
737 
738 -- Check the release version
739     OPEN c_get_rel_ver(l_interface.relationship_cd, p_cal_type, p_seq_number);
740     FETCH c_get_rel_ver INTO get_rel_ver_rec;
741     CLOSE c_get_rel_ver;
742 
743     g_rel_version              := get_rel_ver_rec.cl_version;
744 
745     IF get_rel_ver_rec.cl_version NOT IN ('RELEASE-4', 'RELEASE-5') THEN
746         fnd_message.set_name('IGF','IGF_SL_CL_VERSION_NTFND');
747         g_tab_index := g_tab_index + 1;
748         g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
749         check_passed := FALSE;
750 
751     ELSIF get_rel_ver_rec.cl_version='RELEASE-4' THEN
752 
753         -- Release 4 cannot have more than 4 disbursments
754 
755         OPEN c_num_disb(l_interface.ci_alternate_code,l_interface.person_number,l_interface.award_number_txt,l_interface.loan_number_txt);
756         FETCH c_num_disb INTO l_num_disb;
757         IF l_num_disb > 4 THEN
758             fnd_message.set_name('IGF','IGF_SL_CL4_DISB_EXCEED');
759             g_tab_index := g_tab_index + 1;
760             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
761             check_passed := FALSE;
762         END IF;
763         CLOSE c_num_disb;
764 
765         -- Check for Actual Record Type
766           IF l_interface.actual_record_type_code NOT IN ('M' , 'N' , 'C', 'T' ) OR l_interface.actual_record_type_code IS NULL THEN
767               g_tab_index := g_tab_index + 1;
768               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
769               fnd_message.set_token('FIELD','ACTUAL_RECORD_TYPE_CODE');
770               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
771               check_passed := FALSE;
772           END IF;
773 
774         -- Checking for a valid combination of Processing type, send record code and Response record code
775 
776         IF l_interface.record_code = 'A' THEN
777            IF (l_interface.prc_type_code  IN ('GO' , 'GP' ) ) AND (l_interface.actual_record_type_code  IN ('M')) THEN
778               NULL;
779            ELSE
780               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
781               g_tab_index := g_tab_index + 1;
782               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
783                check_passed := FALSE;
784           END IF;
785 
786         ELSIF l_interface.record_code = 'C' THEN
787           IF (l_interface.prc_type_code IN ('GO' , 'GP' ) ) AND (l_interface.actual_record_type_code IN ('M')) THEN
788               NULL;
789            ELSE
790               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
791               g_tab_index := g_tab_index + 1;
792               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
793                check_passed := FALSE;
794           END IF;
795 
796         ELSIF l_interface.record_code = 'R' THEN
797           IF (l_interface.prc_type_code  IN ( 'GP' ) ) AND (l_interface.actual_record_type_code  IN ('N')) THEN
798               NULL;
799            ELSE
800               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
801               g_tab_index := g_tab_index + 1;
802               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
803                check_passed := FALSE;
804           END IF;
805 
806         ELSIF l_interface.record_code = 'T' THEN
807           IF (l_interface.prc_type_code  IN ( 'GO','GP' ) ) AND ( l_interface.actual_record_type_code  IN ('T')) THEN
808               NULL;
809            ELSE
810               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
811               g_tab_index := g_tab_index + 1;
812               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
813                check_passed := FALSE;
814           END IF;
815 
816         END IF;
817 
818         --Record status and Actual record type cannot be populated simultaneously
819 
820         IF (l_interface.cl_rec_status IS NOT NULL ) AND (l_interface.actual_record_type_code IS NOT NULL ) THEN
821               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
822               g_tab_index := g_tab_index + 1;
823               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
824               check_passed := FALSE;
825         END IF;
826 
827         -- If lender approved denied date and code needs to be specified together
828 
829         IF      (l_interface.lend_apprv_denied_code IS NULL) AND (l_interface.lend_apprv_denied_date IS NOT NULL)
830              OR (l_interface.lend_apprv_denied_code IS NOT NULL) AND (l_interface.lend_apprv_denied_date IS NULL)
831              THEN
832               fnd_message.set_name('IGF','IGF_SL_CL_INVLD_LADCD');
833               g_tab_index := g_tab_index + 1;
834               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
835               check_passed := FALSE;
836         END IF;
837 
838         -- If lender approved denied code is D then record status must also be D
839 
840         IF l_interface.lend_apprv_denied_code='D' AND l_interface.cl_rec_status <> 'D' THEN
841              fnd_message.set_name('IGF','IGF_SL_INVLD_LADC_RS');
842              g_tab_index := g_tab_index + 1;
843              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
844              check_passed := FALSE;
845         END IF;
846 
847         -- Validate application form code
848         -- Bug # 4732538
849         IF l_interface.fed_appl_form_type IS NOT NULL THEN
850           IF ((p_fed_fund_cd IN ('FLS','FLU') AND l_interface.fed_appl_form_type NOT IN ('B','M','P'))  OR
851               (p_fed_fund_cd IN ('FLP') AND l_interface.fed_appl_form_type NOT IN ('Q','B','M','P'))OR
852               (p_fed_fund_cd IN ('GPLUSFL') AND l_interface.fed_appl_form_type NOT IN ('G')))
853               THEN
854              g_tab_index := g_tab_index + 1;
855              fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
856              fnd_message.set_token('FIELD','FED_APPL_FORM_TYPE');
857              g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
858              check_passed := FALSE;
859           END IF;
860        END IF;
861 
862 
863         -- Check if any of the release 5 fields are populated then raise an error
864 
865         IF l_interface.borr_sign_flag IS NOT NULL THEN
866            g_tab_index := g_tab_index + 1;
867            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
868            fnd_message.set_token('FIELD','BORR_SIGN_FLAG');
869            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
870            check_passed := FALSE;
871         END IF;
872 
873         IF l_interface.borr_credit_auth_flag  IS NOT NULL THEN
874            g_tab_index := g_tab_index + 1;
875            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
876            fnd_message.set_token('FIELD','BORR_CREDIT_AUTH_FLAG');
877            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
878            check_passed := FALSE;
879         END IF;
880 
881         IF l_interface.Sch_non_ed_brc_id_txt  IS NOT NULL THEN
882            g_tab_index := g_tab_index + 1;
883            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
884            fnd_message.set_token('FIELD','SCH_NON_ED_BRC_ID_TXT');
885            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
886            check_passed := FALSE;
887         END IF;
888 
889         IF l_interface.stud_sign_flag   IS NOT NULL THEN
890            g_tab_index := g_tab_index + 1;
891            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
892            fnd_message.set_token('FIELD','STUD_SIGN_FLAG');
893            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
894            check_passed := FALSE;
895         END IF;
896 
897         IF l_interface.guarnt_status_code   IS NOT NULL THEN
898            g_tab_index := g_tab_index + 1;
899            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
900            fnd_message.set_token('FIELD','GUARNT_STATUS_CODE');
901            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
902            check_passed := FALSE;
903         END IF;
904 
905         IF l_interface.lend_status_code    IS NOT NULL THEN
906            g_tab_index := g_tab_index + 1;
907            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
908            fnd_message.set_token('FIELD','LEND_STATUS_CODE');
909            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
910            check_passed := FALSE;
911         END IF;
912 
913         IF l_interface.pnote_status_code    IS NOT NULL THEN
914            g_tab_index := g_tab_index + 1;
915            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
916            fnd_message.set_token('FIELD','PNOTE_STATUS_CODE');
917            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
918            check_passed := FALSE;
919         END IF;
920 
921         IF l_interface.Credit_status_code    IS NOT NULL THEN
922            g_tab_index := g_tab_index + 1;
923            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
924            fnd_message.set_token('FIELD','CREDIT_STATUS_CODE');
925            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
926            check_passed := FALSE;
927         END IF;
928 
929         IF l_interface.guarnt_status_date     IS NOT NULL THEN
930            g_tab_index := g_tab_index + 1;
931            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
932            fnd_message.set_token('FIELD','GUARNT_STATUS_DATE');
933            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
934            check_passed := FALSE;
935         END IF;
936 
937         IF l_interface.lend_status_date     IS NOT NULL THEN
938            g_tab_index := g_tab_index + 1;
939            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
940            fnd_message.set_token('FIELD','LEND_STATUS_DATE');
941            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
942            check_passed := FALSE;
943         END IF;
944 
945         IF l_interface.pnote_status_date    IS NOT NULL THEN
946            g_tab_index := g_tab_index + 1;
947            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
948            fnd_message.set_token('FIELD','PNOTE_STATUS_DATE');
949            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
950            check_passed := FALSE;
951         END IF;
952 
953         IF l_interface.credit_status_date     IS NOT NULL THEN
954            g_tab_index := g_tab_index + 1;
955            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
956            fnd_message.set_token('FIELD','CREDIT_STATUS_DATE');
957            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
958            check_passed := FALSE;
959         END IF;
960 
961         IF l_interface.act_serial_loan_code     IS NOT NULL THEN
962            g_tab_index := g_tab_index + 1;
963            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
964            fnd_message.set_token('FIELD','ACT_SERIAL_LOAN_CODE');
965            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
966            check_passed := FALSE;
967         END IF;
968 
969         IF l_interface.stud_mth_housing_pymt_amt      IS NOT NULL THEN
970            g_tab_index := g_tab_index + 1;
971            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
972            fnd_message.set_token('FIELD','STUD_MTH_HOUSING_PYMT_AMT');
973            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
974            check_passed := FALSE;
975         END IF;
976 
977         IF l_interface.stud_mth_crdtcard_pymt_amt IS NOT NULL THEN
978            g_tab_index := g_tab_index + 1;
979            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
980            fnd_message.set_token('FIELD','STUD_MTH_CRDTCARD_PYMT_AMT');
981            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
982            check_passed := FALSE;
983         END IF;
984 
985         IF l_interface.stud_mth_auto_pymt_amt IS NOT NULL THEN
986            g_tab_index := g_tab_index + 1;
987            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
988            fnd_message.set_token('FIELD','STUD_MTH_AUTO_PYMT_AMT');
989            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
990            check_passed := FALSE;
991         END IF;
992 
993         IF l_interface.stud_mth_ed_loan_pymt_amt  IS NOT NULL THEN
994            g_tab_index := g_tab_index + 1;
995            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
996            fnd_message.set_token('FIELD','STUD_MTH_ED_LOAN_PYMT_AMT');
997            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
998            check_passed := FALSE;
999         END IF;
1000 
1001         IF l_interface.stud_mth_other_pymt_amt  IS NOT NULL THEN
1002            g_tab_index := g_tab_index + 1;
1003            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1004            fnd_message.set_token('FIELD','STUD_MTH_OTHER_PYMT_AMT');
1005            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1006            check_passed := FALSE;
1007         END IF;
1008 
1009 
1010     ELSIF get_rel_ver_rec.cl_version='RELEASE-5' THEN
1011 
1012         -- Release 5 cannot have more than 20 disbursments
1013 
1014         OPEN c_num_disb(l_interface.ci_alternate_code,l_interface.person_number,l_interface.award_number_txt,l_interface.loan_number_txt);
1015         FETCH c_num_disb INTO l_num_disb;
1016         IF l_num_disb > 20 THEN
1017             fnd_message.set_name('IGF','IGF_SL_CL4_DISB_EXCEED');
1018             g_tab_index := g_tab_index + 1;
1019             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1020             check_passed := FALSE;
1021         END IF;
1022         CLOSE c_num_disb;
1023            -- Check for Actual Record Type
1024           IF l_interface.actual_record_type_code NOT IN ('M' , 'N' , 'C', 'T', 'S' ) OR l_interface.actual_record_type_code IS NULL THEN
1025               g_tab_index := g_tab_index + 1;
1026               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1027               fnd_message.set_token('FIELD','ACTUAL_RECORD_TYPE_CODE');
1028               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1029               check_passed := FALSE;
1030           END IF;
1031 
1032       -- Checking for a valid combination of Processing type, send record code and Response record code
1033 
1034         IF l_interface.record_code = 'A' THEN
1035            IF (l_interface.prc_type_code IN ('GO' , 'GP' ) )AND(l_interface.actual_record_type_code  IN ('S','M')) THEN
1036               NULL;
1037            ELSE
1038               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
1039               g_tab_index := g_tab_index + 1;
1040               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1041               check_passed := FALSE;
1042            END IF;
1043 
1044         ELSIF l_interface.record_code = 'C' THEN
1045           IF (l_interface.prc_type_code  IN ('GO' , 'GP' )) AND (l_interface.actual_record_type_code IN ('S','M'))THEN
1046               NULL;
1047            ELSE
1048               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
1049               g_tab_index := g_tab_index + 1;
1050               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1051               check_passed := FALSE;
1052           END IF;
1053 
1054         ELSIF l_interface.record_code = 'R' THEN
1055           IF (l_interface.prc_type_code IN ( 'GP' ) ) AND (l_interface.actual_record_type_code  IN ('N')) THEN
1056               NULL;
1057            ELSE
1058               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
1059               g_tab_index := g_tab_index + 1;
1060               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1061               check_passed := FALSE;
1062           END IF;
1063 
1064         ELSIF l_interface.record_code = 'T' THEN
1065           IF (l_interface.prc_type_code IN ( 'GO','GP' ) )AND (l_interface.actual_record_type_code  IN ('S','T')) THEN
1066               NULL;
1067            ELSE
1068               fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_RT_RC');
1069               g_tab_index := g_tab_index + 1;
1070               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1071               check_passed := FALSE;
1072           END IF;
1073 
1074         END IF;
1075 
1076 
1077 
1078       -- Validate application form code
1079               -- Bug # 4732538
1080         IF l_interface.fed_appl_form_type IS NOT NULL THEN
1081           IF ((p_fed_fund_cd IN ('FLS','FLU') AND l_interface.fed_appl_form_type  IN ('M','P')) OR
1082               (p_fed_fund_cd IN ('FLP') AND l_interface.fed_appl_form_type  IN ('Q','M','P')) OR
1083               (p_fed_fund_cd IN ('GPLUSFL') AND l_interface.fed_appl_form_type  IN ('G'))) THEN
1084              NULL;
1085           ELSE
1086              g_tab_index := g_tab_index + 1;
1087              fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1088              fnd_message.set_token('FIELD','FED_APPL_FORM_TYPE');
1089              g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1090              check_passed := FALSE;
1091           END IF;
1092         END IF;
1093 
1094       -- Check if any of the release 4 fields are populated then raise an error
1095 
1096         IF l_interface.cl_rec_status  IS NOT NULL THEN
1097            g_tab_index := g_tab_index + 1;
1098            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1099            fnd_message.set_token('FIELD','CL_REC_STATUS');
1100            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1101            check_passed := FALSE;
1102         END IF;
1103 
1104         IF l_interface.lend_apprv_denied_code  IS NOT NULL THEN
1105            g_tab_index := g_tab_index + 1;
1106            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1107            fnd_message.set_token('FIELD','LEND_APPRV_DENIED_CODE');
1108            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1109            check_passed := FALSE;
1110         END IF;
1111 
1112         IF l_interface.lend_apprv_denied_date  IS NOT NULL THEN
1113            g_tab_index := g_tab_index + 1;
1114            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1115            fnd_message.set_token('FIELD','LEND_APPRV_DENIED_DATE');
1116            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1117            check_passed := FALSE;
1118         END IF;
1119 
1120         IF l_interface.appl_loan_phase_code  IS NOT NULL THEN
1121            g_tab_index := g_tab_index + 1;
1122            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1123            fnd_message.set_token('FIELD','APPL_LOAN_PHASE_CODE');
1124            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1125            check_passed := FALSE;
1126         END IF;
1127 
1128         IF l_interface.mpn_confirm_code  IS NOT NULL THEN
1129            g_tab_index := g_tab_index + 1;
1130            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1131            fnd_message.set_token('FIELD','MPN_CONFIRM_CODE');
1132            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1133            check_passed := FALSE;
1134         END IF;
1135 
1136         IF l_interface.appl_loan_phase_code_chg  IS NOT NULL THEN
1137            g_tab_index := g_tab_index + 1;
1138            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1139            fnd_message.set_token('FIELD','APPL_LOAN_PHASE_CODE_CHG');
1140            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1141            check_passed := FALSE;
1142         END IF;
1143 
1144 
1145         IF l_interface.lend_apprv_denied_code  IS NOT NULL THEN
1146            g_tab_index := g_tab_index + 1;
1147            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1148            fnd_message.set_token('FIELD','LEND_APPRV_DENIED_CODE');
1149            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1150            check_passed := FALSE;
1151         END IF;
1152 
1153         IF l_interface.lend_apprv_denied_date  IS NOT NULL THEN
1154            g_tab_index := g_tab_index + 1;
1155            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1156            fnd_message.set_token('FIELD','LEND_APPRV_DENIED_DATE');
1157            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1158            check_passed := FALSE;
1159         END IF;
1160 
1161 
1162     END IF;  -- ver not in rel-4 or rel-5
1163 
1164     -- External loan number required if record tpye is C
1165     IF l_interface.record_code = 'C' THEN
1166         IF l_interface.external_loan_id_txt IS NULL THEN
1167            g_tab_index := g_tab_index + 1;
1168            fnd_message.set_name('IGF','IGF_SL_CL_SCR_XLID_NTFND');
1169            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1170            check_passed := FALSE;
1171         END IF;
1172     ELSE
1173         IF l_interface.external_loan_id_txt IS NOT NULL THEN
1174            g_tab_index := g_tab_index + 1;
1175            fnd_message.set_name('IGF','IGF_SL_CL_SCR_XLID_FND');
1176            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1177            check_passed := FALSE;
1178         END IF;
1179     END IF;
1180 
1181 
1182 RETURN check_passed;
1183 
1184 EXCEPTION
1185   WHEN others THEN
1186    IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
1187      fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.validate_release.exception','Exception ' || SQLERRM);
1188    END IF;
1189    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
1190    fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.VALIDATE_RELEASE');
1191 
1192    RAISE IMPORT_ERROR;
1193 END;
1194 
1195 
1196 PROCEDURE validate_loan_orig_int( p_interface     IN  c_interface%ROWTYPE,
1197                                   p_award_id      IN  NUMBER,
1198                                   p_status        OUT NOCOPY BOOLEAN,
1199                                   p_cal_type      IN  VARCHAR2,
1200                                   p_seq_number    IN  NUMBER,
1201                                   p_open_flag     IN  BOOLEAN,
1202                                   p_fed_fund_cd   IN  VARCHAR2
1203                                   )
1204 AS
1205 --
1206 --    Created By : gmuralid
1207 --    Created On : 24-JUN-2003
1208 --    Purpose : This procedure is used to validate the loan origination interface record
1209 --    Known limitations, enhancements or remarks :
1210 --    Change History :
1211 --    Who             When            What
1212 --    pssahni        3-Nov-2004       validation for prc_type_cpde changed to have valid values GP and GO
1213 --                                    also added validation for combination of process type and record code
1214 --    bkkumar         10-apr-04       FACR116 - Added validation for the alt_prog_typ_code
1215 --                                    and corrected the validations for the 'ALT' Loan
1216 --    ugummall        21-OCT-2003     Bug 3102439. FA 126 - Multiple FA Offices.
1217 --                                    Added the validation for sch_non_ed_brc_id_txt is a valid Non Ed Brc Id
1218 --                                    that is setup as alternate identifier in the System.
1219 --    bkkumar         07-oct-2003     Bug 3104228 . Added the validation for the relationship code.
1220 --                                    present in the interface table.
1221 --    (reverse chronological order - newest change first)
1222 --    veramach       16-SEP-2003      Validation for prc_type_code changed to look into 'GP' only
1223 
1224      l_valid         BOOLEAN;
1225 
1226      l_amt           NUMBER;
1227      lv_person_id    NUMBER;
1228      lv_base_id      NUMBER;
1229 
1230      l_result        VARCHAR2(1);
1231 
1232      CURSOR c_lender_id(cp_lender_id VARCHAR2)
1233      IS
1234      SELECT
1235      1
1236      FROM
1237      igf_sl_lender
1238      WHERE
1239      lender_id = cp_lender_id;
1240 
1241      l_lender_id   c_lender_id%ROWTYPE;
1242 
1243      CURSOR c_guarantor_id(cp_guarnt_id VARCHAR2)
1244      IS
1245      SELECT
1246      1
1247      FROM
1248      igf_sl_guarantor
1249      WHERE
1250      guarantor_id = cp_guarnt_id;
1251 
1252      l_guarantor_id  c_guarantor_id%ROWTYPE;
1253 
1254 --5026901, SQL Repository
1255      CURSOR c_relationship (cp_person_number   VARCHAR2,
1256                             cp_b_person_number VARCHAR2
1257                             )
1258      IS
1259      SELECT 'X'
1260      FROM hz_relationships pr,
1261           igs_pe_hz_parties pe,
1262           hz_parties br,
1263           hz_parties st
1264      WHERE
1265           br.party_number = cp_b_person_number
1266      AND  st.party_number = cp_person_number
1267      AND  pr.subject_id = st.party_id
1268      AND  pr.object_id =  br.party_id
1269      AND  st.party_id = pe.party_id;
1270 
1271 
1272      l_relationship c_relationship%ROWTYPE;
1273 
1274      CURSOR  cur_chk_grd (p_cal_type    VARCHAR2,
1275                           p_seq_number  NUMBER,
1276                           p_grd_lvl     VARCHAR2)
1277      IS
1278      SELECT '1'
1279      FROM
1280      igf_ap_class_std_map
1281      WHERE
1282      cl_std_code = p_grd_lvl AND
1283      ppt_id IN
1284           (
1285                SELECT ppt_id
1286                FROM   igf_ap_pr_prg_type
1287                WHERE  sequence_number = p_seq_number AND
1288                       cal_type        = p_cal_type
1289           );
1290 
1291      lv_grd VARCHAR2(1);
1292 
1293      CURSOR  cur_chk_enrl (p_cal_type    VARCHAR2,
1294                            p_seq_number   NUMBER,
1295                            p_enrl_code    VARCHAR2)
1296      IS
1297      SELECT '1'
1298      FROM
1299      igf_ap_attend_map_v
1300      WHERE
1301      cl_att_code     = p_enrl_code  AND
1302      sequence_number = p_seq_number AND
1303      cal_type        = p_cal_type;
1304 
1305      lv_enrl VARCHAR2(1);
1306 
1307  -- FA 122 Loan Enhancements
1308      CURSOR  cur_chk_rel_code (p_cal_type    VARCHAR2,
1309                                p_seq_number   NUMBER,
1310                                p_rel_code    VARCHAR2)
1311      IS
1312      SELECT relationship_cd
1313      FROM
1314      igf_sl_cl_setup
1315      WHERE
1316      ci_cal_type        = p_cal_type  AND
1317      ci_sequence_number = p_seq_number AND
1318      NVL(relationship_cd,'*')    = p_rel_code;
1319 
1320      l_chk_rel_code    cur_chk_rel_code%ROWTYPE;
1321 
1322     CURSOR c_get_alternate_code(cp_cal_type VARCHAR2,
1323                                  cp_seq_number NUMBER)
1324      IS
1325      SELECT alternate_code
1326      FROM   igs_ca_inst
1327      WHERE  cal_type = cp_cal_type
1328      AND    sequence_number = cp_seq_number;
1329 
1330      l_get_alternate_code  c_get_alternate_code%ROWTYPE;
1331 
1332   -- Cursor to validate School Non Educational Branch Id.
1333      CURSOR c_source_or_branch_id(cp_sch_non_ed_brc_id VARCHAR2, cp_source_type VARCHAR2)
1334      IS
1335       SELECT 1
1336         FROM hz_parties hz,
1337              igs_or_org_alt_ids oli,
1338              igs_or_org_alt_idtyp olt
1339        WHERE oli.org_structure_id = hz.party_number
1340          AND oli.org_alternate_id_type = olt.org_alternate_id_type
1341          AND SYSDATE BETWEEN oli.start_date AND NVL(oli.end_date, SYSDATE)
1342          AND hz.status = 'A'
1343          AND oli.org_alternate_id = cp_sch_non_ed_brc_id
1344          AND system_id_type = cp_source_type;
1345 
1346      l_source_or_branch_id   c_source_or_branch_id%ROWTYPE;
1347 
1348    -- FACR116
1349      CURSOR c_get_fund_code ( cp_alt_loan_code igf_aw_fund_cat_all.alt_loan_code%TYPE,
1350                               cp_alt_rel_code  igf_aw_fund_cat_all.alt_rel_code%TYPE,
1351                               cp_fund_code     igf_aw_fund_cat_all.fund_code%TYPE
1352                              )
1353 
1354      IS
1355      SELECT fund_code
1356      FROM   igf_aw_fund_cat_all
1357      WHERE  NVL(alt_loan_code,'*') = cp_alt_loan_code
1358      AND    NVL(alt_rel_code,'*') = cp_alt_rel_code
1359      AND    fund_code = cp_fund_code;
1360 
1361      l_get_fund_code  c_get_fund_code%ROWTYPE;
1362       PROCEDURE set_message_and_flag(       p_message_name       VARCHAR,
1363                                             p_val                VARCHAR,
1364                                             p_cosigner_number    NUMBER) AS
1365       BEGIN
1366           fnd_message.set_name('IGF',     p_message_name);
1367           fnd_message.set_token('VAL',    p_val);
1368           fnd_message.set_token('CS_NO',  p_cosigner_number);
1369           g_tab_index := g_tab_index + 1;
1370           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1371           p_status := FALSE;
1372       END set_message_and_flag;
1373 
1374 
1375       PROCEDURE validate_alt_loan_cosigner (p_cosigner_number             NUMBER,
1376                                             p_ssn_txt                       igf_sl_li_orig_ints.cs1_ssn_txt%TYPE,
1377                                             p_citizenship_status            igf_sl_li_orig_ints.cs1_citizenship_status%TYPE,
1378                                             p_state_txt                     igf_sl_li_orig_ints.cs1_state_txt%TYPE,
1379                                             p_drv_license_state_txt         igf_sl_li_orig_ints.cs1_drv_license_state_txt%TYPE,
1380                                             p_signature_code_txt            igf_sl_li_orig_ints.cs1_signature_code_txt%TYPE,
1381                                             p_credit_auth_code_txt          igf_sl_li_orig_ints.cs1_credit_auth_code_txt%TYPE,
1382                                             p_elect_sig_ind_code_txt        igf_sl_li_orig_ints.cs1_elect_sig_ind_code_txt%TYPE,
1383                                             p_rel_to_student_flag           igf_sl_li_orig_ints.cs1_rel_to_student_flag%TYPE
1384                                           ) AS
1385       --
1386       --
1387       --  This procedure is used to validate the cosigner data
1388       --  which is expected to be validated only for
1389       --  ALT loans.
1390       --  FA 157 - Bug# - 4382371
1391       --
1392       --  mnade         6/15/2005         Creation of the procedure.
1393       --
1394       --
1395       CURSOR c_citizenship_codes (cp_lookup_code      VARCHAR2) IS
1396         SELECT lookup_code
1397         FROM igf_aw_lookups_view
1398         WHERE
1399           lookup_type             = 'IGF_SL_ALT_CS_US_CT_ST_CODE'
1400           AND cal_type            = p_cal_type
1401           AND sequence_number     = p_seq_number
1402           AND enabled_flag        = 'Y'
1403           AND lookup_code         = cp_lookup_code;
1404 
1405       CURSOR c_state_codes (cp_lookup_code      VARCHAR2) IS
1406         SELECT lookup_code
1407         FROM igf_aw_lookups_view
1408         WHERE
1409           lookup_type             = 'IGF_AP_STATE_CODES'
1410           AND cal_type            = p_cal_type
1411           AND sequence_number     = p_seq_number
1412           AND enabled_flag        = 'Y'
1413           AND lookup_code         NOT IN ('BL', 'CN', 'MX', 'OT')
1414           AND lookup_code         = cp_lookup_code;
1415 
1416       CURSOR c_yes_no_codes (cp_lookup_code      VARCHAR2) IS                   -- Used for Signature/Credit Aut/Elect Sig validations.
1417         SELECT lookup_code
1418         FROM igf_aw_lookups_view
1419         WHERE
1420           lookup_type             = 'YES_NO'
1421           AND cal_type            = p_cal_type
1422           AND sequence_number     = p_seq_number
1423           AND enabled_flag        = 'Y'
1424           AND lookup_code         = cp_lookup_code;
1425 
1426       CURSOR c_relationship_codes (cp_lookup_code      VARCHAR2) IS
1427         SELECT lookup_code
1428         FROM igf_aw_lookups_view
1429         WHERE
1430           lookup_type             = 'IGF_SL_ALT_CS_STUDENT_RELATION'
1431           AND cal_type            = p_cal_type
1432           AND sequence_number     = p_seq_number
1433           AND enabled_flag        = 'Y'
1434           AND lookup_code         = cp_lookup_code;
1435 
1436       l_lookup_code               igf_aw_lookups_view.lookup_code%TYPE;
1437 
1438       BEGIN
1439         IF  SUBSTR(p_ssn_txt,1,1)  = '8' OR                                                   -- SSN Validations - CL Spec - 8/9/000 at start not permitted.
1440             SUBSTR(p_ssn_txt,1,1)    = '9' OR
1441             SUBSTR(p_ssn_txt,1,3)    = '000' OR
1442             LENGTH(NVL(p_ssn_txt, '123456789')) <> 9 THEN
1443             set_message_and_flag('IGF_SL_CL_ALT_CS_INV_SSN', p_ssn_txt, p_cosigner_number);
1444         END IF;                                                                               -- END SSN Validations - CL Spec - 8/9/000 at start not permitted.
1445 
1446         -- Citizenship Validations
1447         OPEN c_citizenship_codes (p_citizenship_status);
1448         FETCH c_citizenship_codes INTO l_lookup_code;
1449         IF c_citizenship_codes%NOTFOUND AND p_citizenship_status IS NOT NULL THEN
1450           set_message_and_flag('IGF_SL_CL_ALT_CS_INV_CT_STATUS', p_citizenship_status, p_cosigner_number);
1451         END IF;
1452         CLOSE c_citizenship_codes;
1453 
1454         -- State Validations
1455         OPEN c_state_codes (p_state_txt);
1456         FETCH c_state_codes INTO l_lookup_code;
1457         IF c_state_codes%NOTFOUND AND p_state_txt IS NOT NULL THEN
1458           set_message_and_flag('IGF_SL_CL_ALT_CS_INV_STATE', p_state_txt, p_cosigner_number);
1459         ELSE
1460           IF l_lookup_code = 'FC' THEN
1461             fnd_message.set_name('IGF',     'IGF_SL_CL_ALT_CS_STATE_COUNTRY');
1462             g_tab_index := g_tab_index + 1;
1463             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1464           END IF;
1465         END IF;
1466         CLOSE c_state_codes;
1467 
1468         -- Drivers State Validations
1469         OPEN c_state_codes (p_drv_license_state_txt);
1470         FETCH c_state_codes INTO l_lookup_code;
1471         IF c_state_codes%NOTFOUND AND p_drv_license_state_txt IS NOT NULL THEN
1472           set_message_and_flag('IGF_SL_CL_ALT_CS_INV_LIC_STATE', p_drv_license_state_txt, p_cosigner_number);
1473         END IF;
1474         CLOSE c_state_codes;
1475 
1476         -- Signature Code Validations
1477         OPEN c_yes_no_codes (p_signature_code_txt);
1478         FETCH c_yes_no_codes INTO l_lookup_code;
1479         IF c_yes_no_codes%NOTFOUND AND p_signature_code_txt IS NOT NULL THEN
1480           set_message_and_flag('IGF_SL_CL_ALT_CS_INV_SIG_CODE', p_signature_code_txt, p_cosigner_number);
1481         END IF;
1482         CLOSE c_yes_no_codes;
1483 
1484         -- Relationship Validations
1485         OPEN c_relationship_codes (p_rel_to_student_flag);
1486         FETCH c_relationship_codes INTO l_lookup_code;
1487         IF c_relationship_codes%NOTFOUND AND p_rel_to_student_flag IS NOT NULL THEN
1488           set_message_and_flag('IGF_SL_CL_ALT_CS_INV_REL_CODE', p_rel_to_student_flag, p_cosigner_number);
1489         END IF;
1490         CLOSE c_relationship_codes;
1491 
1492         IF g_rel_version = 'RELEASE-5' THEN             -- CL5 ALT loans specific validations
1493 
1494           -- Credit Autcode Validations
1495           OPEN c_yes_no_codes (p_credit_auth_code_txt);
1496           FETCH c_yes_no_codes INTO l_lookup_code;
1497           IF c_yes_no_codes%NOTFOUND AND p_credit_auth_code_txt IS NOT NULL THEN
1498             set_message_and_flag('IGF_SL_CL_ALT_CS_INV_CRD_AUTH', p_credit_auth_code_txt, p_cosigner_number);
1499           END IF;
1500           CLOSE c_yes_no_codes;
1501 
1502           -- Elect Sig Code Validations
1503           OPEN c_yes_no_codes (p_elect_sig_ind_code_txt);
1504           FETCH c_yes_no_codes INTO l_lookup_code;
1505           IF c_yes_no_codes%NOTFOUND AND p_elect_sig_ind_code_txt IS NOT NULL THEN
1506             set_message_and_flag('IGF_SL_CL_ALT_CS_INV_ELECT_SIG', p_elect_sig_ind_code_txt, p_cosigner_number);
1507           END IF;
1508           CLOSE c_yes_no_codes;
1509 
1510         END IF;                                         -- END CL5 ALT loans specific validations
1511 
1512       END validate_alt_loan_cosigner;
1513 
1514 BEGIN
1515 
1516      g_tab_index := 0;
1517      l_valid     := is_valid(p_interface.loan_number_txt,p_cal_type,p_seq_number);
1518 
1519      IF NOT l_valid THEN
1520 
1521           fnd_message.set_name('IGF','IGF_SL_CL_INV_LOAN_NUM');
1522           g_tab_index := g_tab_index + 1;
1523           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1524           p_status := FALSE;
1525 
1526      END IF;
1527 
1528      l_get_alternate_code := NULL;
1529      OPEN c_get_alternate_code(p_cal_type,p_seq_number);
1530      FETCH c_get_alternate_code INTO l_get_alternate_code;
1531      CLOSE c_get_alternate_code;
1532 
1533      -- FA 122 Loans Enhancements Check for the relationship code
1534      IF p_interface.relationship_cd IS NULL THEN
1535        fnd_message.set_name('IGF','IGF_SL_CL_RELATION_CD_FAIL');
1536        fnd_message.set_token('REL_CODE','NULL');
1537        fnd_message.set_token('AWD_YR',l_get_alternate_code.alternate_code);
1538        g_tab_index := g_tab_index + 1;
1539        g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1540        p_status := FALSE;
1541      ELSE
1542        l_chk_rel_code := NULL;
1543        OPEN  cur_chk_rel_code(p_cal_type,p_seq_number,p_interface.relationship_cd);
1544        FETCH cur_chk_rel_code INTO l_chk_rel_code;
1545        CLOSE cur_chk_rel_code;
1546        IF l_chk_rel_code.relationship_cd IS NULL THEN
1547         fnd_message.set_name('IGF','IGF_SL_CL_RELATION_CD_FAIL');
1548         fnd_message.set_token('REL_CODE',p_interface.relationship_cd);
1549         fnd_message.set_token('AWD_YR',l_get_alternate_code.alternate_code);
1550         g_tab_index := g_tab_index + 1;
1551         g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1552         p_status := FALSE;
1553        END IF;
1554      END IF;
1555      l_get_fund_code := NULL;
1556      -- FACR116 Grant Loan Changes
1557      -- 1. Check if the alt_prg_type_cd is not null for 'ALT' loan
1558      -- 2. If the alt_prg_type_cd and the relationship_cd are assosiated in the fund code setup
1559      IF p_fed_fund_cd = 'ALT' THEN
1560         IF p_interface.alt_prog_type_cd IS NULL THEN
1561            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1562            fnd_message.set_token('FIELD','ALT_PROG_TYPE_CD');
1563            g_tab_index := g_tab_index + 1;
1564            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1565            p_status := FALSE;
1566         END IF;
1567         OPEN c_get_fund_code(p_interface.alt_prog_type_cd,p_interface.relationship_cd,l_get_award.fund_code);
1568         FETCH c_get_fund_code INTO l_get_fund_code;
1569         CLOSE c_get_fund_code;
1570         IF l_get_fund_code.fund_code IS NULL THEN
1571            fnd_message.set_name('IGF','IGF_SL_ALT_INV_SETUP');
1572            fnd_message.set_token('FUND_CODE',l_get_award.fund_code);
1573            fnd_message.set_token('ALT_LOAN_CODE',p_interface.alt_prog_type_cd);
1574            fnd_message.set_token('REL_CODE',p_interface.relationship_cd);
1575            g_tab_index := g_tab_index + 1;
1576            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1577            p_status := FALSE;
1578         END IF;
1579      ELSIF p_interface.alt_prog_type_cd IS NOT NULL THEN -- If fund_code <> 'ALT' then alt_prog_type_cd shd be NULL
1580         fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1581         fnd_message.set_token('FIELD','ALT_PROG_TYPE_CD');
1582         g_tab_index := g_tab_index + 1;
1583         g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1584         p_status := FALSE;
1585      END IF;
1586 
1587       -- Validate release information : FA 134
1588       -- bvisvana - Bug # 4732538 - Validation of Fed appl form code based on Release type and fed fund code
1589       -- Added p_fed_fund_cd as a new parameter to the function
1590       p_status  :=  validate_release (p_interface,p_cal_type,p_seq_number,p_fed_fund_cd);  -- set error if the function returns false
1591 
1592 -- credit decision can be 	01   Unknown
1593 --                        	05   Not applicable
1594 --                        	10   Awaiting Credit
1595 --                        	15   Credit check performed
1596 --                        	20   Credit denied
1597 --                        	25   Credit on appeal
1598 --                        	30   Appeal denied
1599 --                        	35   Credit approved
1600 
1601 -- FA134 : guarnt_status_code, lend_status_code, pnote_status_code are Release -5 field only
1602      IF g_rel_version = 'RELEASE-5' THEN
1603        IF ( p_open_flag = TRUE ) THEN
1604             IF (p_interface.loan_status_code = 'A') AND
1605                  (( p_interface.prc_type_code <> 'GP') OR (p_interface.guarnt_status_code <> '40')
1606                  OR (p_interface.lend_status_code <> '45') OR (p_interface.pnote_status_code <> '60')
1607                  OR (p_interface.credit_status_code NOT IN ('01','05','10','15','20','25','30','35') ) )
1608                  THEN
1609 
1610                  fnd_message.set_name('IGF','IGF_SL_CL_LOAN_STATUS_ERR');
1611                  fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1612                  p_status := FALSE;
1613 
1614             END IF;
1615        END IF;
1616      END IF;
1617 
1618      IF ( p_fed_fund_cd NOT IN('ALT','FLP','GPLUSFL') ) AND (p_interface.borr_person_number IS NOT NULL)
1619      THEN
1620 
1621           fnd_message.set_name('IGF','IGF_SL_CL_BORW_NOT_REQD');
1622           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1623           p_status := FALSE;
1624 
1625      END IF;
1626 
1627      IF (p_fed_fund_cd IN ('ALT','FLP','GPLUSFL')) AND (p_interface.borr_person_number IS NULL )
1628      THEN
1629 
1630           fnd_message.set_name('IGF','IGF_SL_CL_BOR_NUM_REQD');
1631           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1632           p_status := FALSE;
1633 
1634      END IF;
1635 
1636      IF p_fed_fund_cd <> 'ALT' AND p_interface.b_stu_indicator_flag IS NOT NULL THEN
1637           fnd_message.set_name('IGF','IGF_SL_CL_INV_BOR_STU_IND');
1638           g_tab_index := g_tab_index + 1;
1639           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1640           p_status := FALSE;
1641 
1642      ELSIF p_fed_fund_cd = 'ALT' AND p_interface.loan_status_code = 'A' AND p_interface.b_stu_indicator_flag IS NULL THEN
1643           fnd_message.set_name('IGF','IGF_SL_CL_INV_BOR_STU_IND');
1644           g_tab_index := g_tab_index + 1;
1645           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1646           p_status := FALSE;
1647      END IF;
1648 
1649      IF p_fed_fund_cd = 'ALT' AND p_interface.b_stu_indicator_flag IS NOT NULL THEN
1650        IF  igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.b_stu_indicator_flag) IS NULL THEN
1651            g_tab_index := g_tab_index + 1;
1652            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1653            fnd_message.set_token('FIELD','B_STU_INDICATOR_FLAG');
1654            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1655            p_status := FALSE;
1656         END IF;
1657      END IF;
1658 
1659      IF p_fed_fund_cd IN ('ALT')
1660         AND p_interface.borr_person_number IS NOT NULL
1661         AND NVL(p_interface.b_stu_indicator_flag,'X') = 'Y'
1662         AND p_interface.borr_person_number <> p_interface.person_number
1663      THEN
1664 
1665           fnd_message.set_name('IGF','IGF_SL_CL_S_BOR_NOT_SAME');
1666           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1667           p_status := FALSE;
1668 
1669      END IF;
1670 
1671      --FA 163 : For Federal Graduate plus loans, borrower and student should be same
1672      IF p_fed_fund_cd IN ('GPLUSFL') THEN
1673         IF p_interface.borr_person_number <> p_interface.person_number THEN
1674              fnd_message.set_name('IGF','IGF_SL_CL_STU_BOR_DIFFER');
1675              fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1676              p_status := FALSE;
1677         ELSE
1678              igf_ap_gen.check_person(p_interface.borr_person_number,NULL,NULL,lv_person_id,lv_base_id);
1679              IF lv_person_id IS NULL THEN
1680                   fnd_message.set_name('IGF','IGF_SL_LI_INVALID_BORR');
1681                   fnd_message.set_token('PERS_NUM', p_interface.borr_person_number);
1682                   fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1683                   p_status := FALSE;
1684              ELSE
1685                   g_p_person_id := lv_person_id;
1686              END IF;
1687         END IF;
1688      END IF;
1689 
1690 
1691      IF p_fed_fund_cd IN ('ALT','FLP')
1692         AND p_interface.borr_person_number IS NOT NULL
1693         AND NVL(p_interface.b_stu_indicator_flag,'X') <> 'Y'
1694      THEN
1695 
1696           igf_ap_gen.check_person(p_interface.borr_person_number,NULL,NULL,lv_person_id,lv_base_id);
1697 
1698           IF lv_person_id IS NULL THEN
1699                 fnd_message.set_name('IGF','IGF_SL_LI_INVALID_BORR');
1700                 fnd_message.set_token('PERS_NUM', p_interface.borr_person_number);
1701                 fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1702                 p_status := FALSE;
1703           ELSE
1704 
1705                 IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1706                   fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.validate_loan_orig_int.debug','Borr Person ID ' || lv_person_id);
1707                 END IF;
1708                 g_p_person_id := lv_person_id;
1709 
1710                 OPEN c_relationship(p_interface.person_number,p_interface.borr_person_number);
1711                 FETCH c_relationship INTO l_relationship;
1712                 IF (c_relationship%NOTFOUND) THEN
1713                      CLOSE c_relationship;
1714                      fnd_message.set_name('IGF','IGF_SL_CL_INV_BOR_REL');
1715                      fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
1716                      p_status := FALSE;
1717                 ELSE
1718                      CLOSE c_relationship;
1719                 END IF;
1720           END IF;
1721      END IF;
1722 
1723      IF p_interface.loan_seq_num IS NOT NULL THEN
1724         IF (p_interface.loan_seq_num <= 0) OR (p_interface.loan_seq_num > 99) THEN
1725            fnd_message.set_name('IGF','IGF_SL_CL_INV_LOAN_SEQ_NUM');
1726            g_tab_index := g_tab_index + 1;
1727            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1728            p_status := FALSE;
1729         END IF;
1730      END IF;
1731 
1732      IF (p_interface.loan_per_end_date < p_interface.loan_per_begin_date) THEN
1733            fnd_message.set_name('IGF','IGF_SL_CL_LOAN_INV_END_DT');
1734            g_tab_index := g_tab_index + 1;
1735            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1736            p_status := FALSE;
1737      END IF;
1738 
1739      IF (p_interface.loan_status_code IN ('B','C','R','S','T'))
1740            OR (igf_ap_gen.get_aw_lookup_meaning('IGF_SL_LOAN_STATUS',p_interface.loan_status_code,g_sys_award_year)) IS NULL THEN
1741            g_tab_index := g_tab_index + 1;
1742            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1743            fnd_message.set_token('FIELD','LOAN_STATUS_CODE');
1744            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1745            p_status := FALSE;
1746      END IF;
1747 
1748      IF  igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.active_flag) IS NULL THEN
1749            g_tab_index := g_tab_index + 1;
1750            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1751            fnd_message.set_token('FIELD','ACTIVE_FLAG');
1752            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1753            p_status := FALSE;
1754      END IF;
1755 
1756      IF p_interface.defer_req_flag IS NOT NULL THEN
1757           IF  igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.defer_req_flag) IS NULL THEN
1758                 g_tab_index := g_tab_index + 1;
1759                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1760                 fnd_message.set_token('FIELD','DEFER_REQ_FLAG');
1761                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1762                 p_status := FALSE;
1763           END IF;
1764 
1765      END IF;
1766 
1767      IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_REC_TYPE_IND',p_interface.record_code,g_sys_award_year) IS NULL THEN
1768           g_tab_index := g_tab_index + 1;
1769           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1770           fnd_message.set_token('FIELD','RECORD_CODE');
1771           g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1772           p_status := FALSE;
1773      END IF;
1774 
1775 
1776      IF (p_interface.loan_status_code = 'A') AND (p_interface.req_loan_amt IS NULL) THEN
1777            fnd_message.set_name('IGF','IGF_SL_CL_REQ_LOAN_AMT_REQD');
1778             g_tab_index := g_tab_index + 1;
1779             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1780             p_status := FALSE;
1781      ELSIF (p_interface.req_loan_amt IS NOT NULL) THEN
1782 
1783          l_amt := l_get_award.accepted_amt;
1784 
1785          IF (l_amt IS NULL) OR (l_amt <> p_interface.req_loan_amt) THEN
1786              fnd_message.set_name('IGF','IGF_SL_CL_INV_REQ_LOAN_AMT');
1787              g_tab_index := g_tab_index + 1;
1788              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1789              p_status := FALSE;
1790          END IF;
1791      END IF;
1792 
1793      IF (p_interface.borw_interest_flag IS NOT NULL) THEN
1794           IF (igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.borw_interest_flag) IS NULL) THEN
1795               g_tab_index := g_tab_index + 1;
1796               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1797               fnd_message.set_token('FIELD','BORW_INTEREST_FLAG');
1798               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1799               p_status := FALSE;
1800            END IF;
1801       END IF;
1802 
1803      IF p_interface.b_signature_flag IS NOT NULL THEN
1804          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.b_signature_flag) IS NULL THEN
1805               g_tab_index := g_tab_index + 1;
1806               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1807               fnd_message.set_token('FIELD','B_SIGNATURE_FLAG');
1808               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1809               p_status := FALSE;
1810           END IF;
1811      END IF;
1812 
1813      IF (p_fed_fund_cd NOT IN ('FLP','ALT','GPLUSFL')) AND ((p_interface.b_default_status_flag IS NOT NULL)) THEN
1814           fnd_message.set_name('IGF','IGF_SL_CL_INV_DEF_RETURN_CD');
1815           g_tab_index := g_tab_index + 1;
1816           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1817           p_status := FALSE;
1818 
1819      ELSIF (p_fed_fund_cd IN ('FLP','ALT','GPLUSFL')) AND (p_interface.b_default_status_flag IS NOT NULL) THEN
1820           IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.b_default_status_flag) IS NULL THEN
1821               g_tab_index := g_tab_index + 1;
1822               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1823               fnd_message.set_token('FIELD','B_DEFAULT_STATUS_FLAG');
1824               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1825               p_status := FALSE;
1826           END IF;
1827      END IF;
1828 
1829      IF (p_fed_fund_cd NOT IN ('FLP','ALT','GPLUSFL')) AND ((p_interface.borw_outstd_loan_flag IS NOT NULL)) THEN
1830           fnd_message.set_name('IGF','IGF_SL_CL_BORW_OUTSTD_LOAN_CD');
1831           g_tab_index := g_tab_index + 1;
1832           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1833           p_status := FALSE;
1834 
1835      ELSIF (p_fed_fund_cd IN ('FLP','ALT','GPLUSFL')) AND (p_interface.borw_outstd_loan_flag IS NOT NULL) THEN
1836           IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.borw_outstd_loan_flag) IS NULL THEN
1837               g_tab_index := g_tab_index + 1;
1838               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1839               fnd_message.set_token('FIELD','BORW_OUTSTD_LOAN_FLAG');
1840               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1841               p_status := FALSE;
1842           END IF;
1843      END IF;
1844 
1845      IF (p_fed_fund_cd NOT IN ('FLP','ALT','GPLUSFL')) AND ((p_interface.s_default_status_flag IS NOT NULL)) THEN
1846            fnd_message.set_name('IGF','IGF_SL_CL_STUD_DEF_REFND_CD');
1847            g_tab_index := g_tab_index + 1;
1848            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1849            p_status := FALSE;
1850 
1851      ELSIF (p_fed_fund_cd IN ('FLP','ALT','GPLUSFL')) AND (p_interface.s_default_status_flag IS NOT NULL) THEN
1852            IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.s_default_status_flag) IS NULL THEN
1853                 g_tab_index := g_tab_index + 1;
1854                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1855                 fnd_message.set_token('FIELD','S_DEFAULT_STATUS_FLAG');
1856                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1857                 p_status := FALSE;
1858            END IF;
1859      END IF;
1860 
1861      IF (p_fed_fund_cd NOT IN ('FLP','ALT','GPLUSFL')) AND ((p_interface.s_signature_flag IS NOT NULL)) THEN
1862           fnd_message.set_name('IGF','IGF_SL_CL_INV_STU_SIGNATURE');
1863           g_tab_index := g_tab_index + 1;
1864           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1865           p_status := FALSE;
1866 
1867      ELSIF (p_fed_fund_cd IN ('FLP','ALT','GPLUSFL')) AND (p_interface.s_signature_flag IS NOT NULL) THEN
1868           IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.s_signature_flag) IS NULL THEN
1869               g_tab_index := g_tab_index + 1;
1870               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1871               fnd_message.set_token('FIELD','S_SIGNATURE_FLAG');
1872               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1873               p_status := FALSE;
1874           END IF;
1875      END IF;
1876 
1877      IF p_interface.grade_level_code IS NULL THEN
1878           fnd_message.set_name('IGF','IGF_SL_CL_GRADE_LVL_REQD');
1879           g_tab_index := g_tab_index + 1;
1880           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1881           p_status := FALSE;
1882      ELSIF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_GRADE_LEVEL',p_interface.grade_level_code,g_sys_award_year) IS NULL THEN
1883           g_tab_index := g_tab_index + 1;
1884           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1885           fnd_message.set_token('FIELD','GRADE_LEVEL_CODE');
1886           g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1887           p_status := FALSE;
1888 
1889      ELSE
1890           OPEN  cur_chk_grd (p_cal_type,
1891                              p_seq_number,
1892                              p_interface.grade_level_code);
1893           FETCH cur_chk_grd INTO lv_grd;
1894           CLOSE cur_chk_grd;
1895           IF NVL(lv_grd,'*') <> '1' THEN
1896                g_tab_index := g_tab_index + 1;
1897                fnd_message.set_name('IGF','IGF_SL_INV_GRD_VAL');
1898                fnd_message.set_token('GRD_LVL',p_interface.grade_level_code);
1899                g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1900                p_status := FALSE;
1901           END IF;
1902      END IF;
1903 
1904      IF p_interface.borr_sign_flag IS NOT NULL THEN
1905          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.borr_sign_flag) IS NULL THEN
1906                g_tab_index := g_tab_index + 1;
1907                fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1908                fnd_message.set_token('FIELD','BORR_SIGN_FLAG');
1909                g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1910                p_status := FALSE;
1911           END IF;
1912      END IF;
1913 
1914      IF p_interface.eft_auth_flag IS NOT NULL THEN
1915          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.eft_auth_flag) IS NULL THEN
1916               g_tab_index := g_tab_index + 1;
1917               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1918               fnd_message.set_token('FIELD','EFT_AUTH_FLAG');
1919               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1920               p_status := FALSE;
1921           END IF;
1922      END IF;
1923 
1924      IF (p_interface.loan_status_code = 'A') AND (p_interface.anticip_compl_date IS NULL) THEN
1925           g_tab_index := g_tab_index + 1;
1926           fnd_message.set_name('IGF','IGF_SL_INV_ANT_COM');
1927           g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1928           p_status := FALSE;
1929      END IF;
1930 
1931      IF (p_interface.loan_status_code = 'A') AND (p_interface.enrollment_code IS NULL) THEN
1932           fnd_message.set_name('IGF','IGF_SL_CL_ENRL_CD_REQD');
1933           g_tab_index := g_tab_index + 1;
1934           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1935           p_status := FALSE;
1936 
1937      ELSIF p_interface.enrollment_code IS NOT NULL THEN
1938 
1939           IF   igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ENROL_STATUS',p_interface.enrollment_code,g_sys_award_year) IS NULL THEN
1940                g_tab_index := g_tab_index + 1;
1941                fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1942                fnd_message.set_token('FIELD','ENROLLMENT_CODE');
1943                g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1944                p_status := FALSE;
1945           ELSE
1946           --
1947           -- Check if enrollment code mapping is done
1948           --
1949               OPEN   cur_chk_enrl(p_cal_type,p_seq_number,p_interface.enrollment_code);
1950               FETCH  cur_chk_enrl INTO lv_enrl;
1951               CLOSE  cur_chk_enrl;
1952 
1953               IF NVL(lv_enrl,'*') <> '1' THEN
1954                  g_tab_index := g_tab_index + 1;
1955                  fnd_message.set_name('IGF','IGF_SL_INV_ENRL_CODE');
1956                  fnd_message.set_token('ENRL_CODE',p_interface.enrollment_code);
1957                  g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1958                  p_status := FALSE;
1959               END IF;
1960           END IF;
1961 
1962      END IF;
1963 
1964      IF (p_fed_fund_cd NOT IN ('ALT')) AND (p_interface.alt_appl_ver_code_num IS NOT NULL) THEN
1965           fnd_message.set_name('IGF','IGF_SL_CL_INV_ALT_APPL_VER_CD');
1966           g_tab_index := g_tab_index + 1;
1967           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1968           p_status := FALSE;
1969      END IF;
1970 
1971      IF p_interface.req_serial_loan_code IS NOT NULL THEN
1972         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_SERIAL_LOAN_CODE',p_interface.req_serial_loan_code,g_sys_award_year) IS NULL THEN
1973               g_tab_index := g_tab_index + 1;
1974               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1975               fnd_message.set_token('FIELD','REQ_SERIAL_LOAN_CODE');
1976               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1977               p_status := FALSE;
1978         END IF;
1979      END IF;
1980 
1981      IF p_interface.borr_credit_auth_flag IS NOT NULL THEN
1982         IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.borr_credit_auth_flag) IS NULL THEN
1983               g_tab_index := g_tab_index + 1;
1984               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
1985               fnd_message.set_token('FIELD','BORR_CREDIT_AUTH_FLAG');
1986               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
1987               p_status := FALSE;
1988         END IF;
1989      END IF;
1990 
1991     -- FA 134 : STUD_SIGN_FLAG  is a Release -5 field only
1992      IF g_rel_version = 'RELEASE-5' THEN
1993        IF (p_fed_fund_cd NOT IN ('FLP','ALT','GPLUSFL')) AND ((p_interface.stud_sign_flag IS NOT NULL)) THEN
1994             fnd_message.set_name('IGF','IGF_SL_INV_STUD_SIGN_CODE');
1995             g_tab_index := g_tab_index + 1;
1996             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
1997             p_status := FALSE;
1998 
1999        ELSIF (p_fed_fund_cd IN ('FLP','ALT','GPLUSFL')) AND (p_interface.stud_sign_flag IS NOT NULL) THEN
2000             IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.stud_sign_flag) IS NULL THEN
2001                 g_tab_index := g_tab_index + 1;
2002                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2003                 fnd_message.set_token('FIELD','STUD_SIGN_FLAG');
2004                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2005                 p_status := FALSE;
2006             END IF;
2007        END IF;
2008      END IF;
2009 
2010      IF p_interface.prc_type_code IS NULL THEN
2011           fnd_message.set_name('IGF','IGF_SL_CL_PRC_TYP_CD_REQD');
2012           g_tab_index := g_tab_index + 1;
2013           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2014           p_status := FALSE;
2015 
2016      ELSIF  p_interface.prc_type_code NOT IN ('GP', 'GO') THEN
2017         IF  igf_ap_gen.get_aw_lookup_meaning('IGF_SL_PRC_TYPE_CODE',p_interface.prc_type_code,g_sys_award_year) IS NULL THEN
2018               g_tab_index := g_tab_index + 1;
2019               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2020               fnd_message.set_token('FIELD','PRC_TYPE_CODE');
2021               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2022               p_status := FALSE;
2023         END IF;
2024      END IF;
2025 
2026     -- Check for the combination of processing type and record code
2027 
2028     IF (p_interface.prc_type_code ='GO' AND p_interface.record_code IN ('A', 'C', 'T' ))
2029         OR (p_interface.prc_type_code ='GP' AND p_interface.record_code IN ('A', 'C', 'T','R' ))
2030 
2031       THEN
2032         -- Valid Combination
2033         NULL;
2034     ELSE
2035           g_tab_index := g_tab_index + 1;
2036           fnd_message.set_name('IGF','IGF_SL_CL_INV_COMB_PT_RC');
2037           g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2038           p_status := FALSE;
2039     END IF;
2040 
2041 
2042 
2043      IF p_interface.service_type_code IS NOT NULL THEN
2044         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_SERV_CD',p_interface.service_type_code,g_sys_award_year) IS NULL THEN
2045               g_tab_index := g_tab_index + 1;
2046               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2047               fnd_message.set_token('FIELD','SERVICE_TYPE_CODE');
2048               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2049               p_status := FALSE;
2050         END IF;
2051      END IF;
2052 
2053      IF p_interface.rev_notice_of_guarnt_code IS NOT NULL THEN
2054         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_REV_GUARNT_CD',p_interface.rev_notice_of_guarnt_code,g_sys_award_year) IS NULL THEN
2055               g_tab_index := g_tab_index + 1;
2056               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2057               fnd_message.set_token('FIELD','REV_NOTICE_OF_GUARNT_CODE');
2058               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2059               p_status := FALSE;
2060         END IF;
2061      END IF;
2062 
2063      IF p_interface.pnote_delivery_code IS NOT NULL THEN
2064         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_PNOTE_DELIVERY',p_interface.pnote_delivery_code,g_sys_award_year) IS NULL THEN
2065               g_tab_index := g_tab_index + 1;
2066               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2067               fnd_message.set_token('FIELD','PNOTE_DELIVERY_CODE');
2068               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2069               p_status := FALSE;
2070         END IF;
2071      END IF;
2072 
2073      IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.guarnt_adj_flag IS NOT NULL) THEN
2074           fnd_message.set_name('IGF','IGF_SL_CL_INV_GUARNT_ADJ_FLG');
2075           g_tab_index := g_tab_index + 1;
2076           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2077           p_status := FALSE;
2078      ELSIF p_interface.guarnt_adj_flag IS NOT NULL THEN
2079          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.guarnt_adj_flag) IS NULL THEN
2080               g_tab_index := g_tab_index + 1;
2081               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2082               fnd_message.set_token('FIELD','GUARNT_ADJ_FLAG');
2083               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)  || fnd_message.get;
2084               p_status := FALSE;
2085          END IF;
2086      END IF;
2087 
2088      IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.guarantee_date IS NOT NULL) THEN
2089          fnd_message.set_name('IGF','IGF_SL_CL_INV_GUARNT_DATE');
2090          g_tab_index := g_tab_index + 1;
2091          g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2092          p_status := FALSE;
2093      ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.guarantee_date IS NULL) THEN
2094          fnd_message.set_name('IGF','IGF_SL_CL_INV_GUARNT_DATE');
2095          g_tab_index := g_tab_index + 1;
2096          g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2097          p_status := FALSE;
2098      END IF;
2099 
2100      IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.guarantee_amt IS NOT NULL) THEN
2101          fnd_message.set_name('IGF','IGF_SL_CL_INV_GUARNT_AMT');
2102          g_tab_index := g_tab_index + 1;
2103          g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2104          p_status := FALSE;
2105      ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.guarantee_amt IS NULL) THEN
2106          fnd_message.set_name('IGF','IGF_SL_CL_INV_GUARNT_AMT');
2107          g_tab_index := g_tab_index + 1;
2108          g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2109          p_status := FALSE;
2110      END IF;
2111 
2112      IF p_interface.borw_confirm_flag IS NOT NULL THEN
2113         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_BORW_CONFIRM',p_interface.borw_confirm_flag,g_sys_award_year) IS NULL THEN
2114               g_tab_index := g_tab_index + 1;
2115               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2116               fnd_message.set_token('FIELD','BORW_CONFIRM_FLAG');
2117               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2118               p_status := FALSE;
2119         END IF;
2120      END IF;
2121 
2122      IF p_interface.last_resort_lender_flag IS NOT NULL THEN
2123         IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.last_resort_lender_flag) IS NULL THEN
2124               g_tab_index := g_tab_index + 1;
2125               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2126               fnd_message.set_token('FIELD','LAST_RESORT_LENDER_FLAG');
2127               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2128               p_status := FALSE;
2129         END IF;
2130      END IF;
2131 
2132      IF p_interface.resp_to_orig_flag IS NOT NULL THEN
2133         IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.resp_to_orig_flag) IS NULL THEN
2134               g_tab_index := g_tab_index + 1;
2135               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2136               fnd_message.set_token('FIELD','RESP_TO_ORIG_FLAG');
2137               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2138               p_status := FALSE;
2139         END IF;
2140      END IF;
2141 
2142      IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.guarnt_amt_redn_code IS NOT NULL) THEN
2143          fnd_message.set_name('IGF','IGF_SL_CL_INV_G_AMT_REDN_CD');
2144          g_tab_index := g_tab_index + 1;
2145          g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2146          p_status := FALSE;
2147      ELSIF p_interface.guarnt_amt_redn_code IS NOT NULL THEN
2148         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_GUARNT_AMT_RED_CODE',p_interface.guarnt_amt_redn_code,g_sys_award_year) IS NULL THEN
2149               g_tab_index := g_tab_index + 1;
2150               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2151               fnd_message.set_token('FIELD','GUARNT_AMT_REDN_CODE');
2152               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2153               p_status := FALSE;
2154         END IF;
2155      END IF;
2156 
2157     -- FA 134 : GUARNT_STATUS_CODE is a Release -5 field only
2158      IF g_rel_version = 'RELEASE-5' THEN
2159        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.guarnt_status_code IS NOT NULL) THEN
2160            fnd_message.set_name('IGF','IGF_SL_CL_INV_G_STATUS_CODE');
2161            g_tab_index := g_tab_index + 1;
2162            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2163            p_status := FALSE;
2164        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.guarnt_status_code IS NULL) THEN
2165            fnd_message.set_name('IGF','IGF_SL_CL_INV_G_STATUS_CODE');
2166            g_tab_index := g_tab_index + 1;
2167            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2168            p_status := FALSE;
2169        ELSIF p_interface.guarnt_status_code IS NOT NULL THEN
2170          IF  igf_ap_gen.get_aw_lookup_meaning('IGF_SL_GUARNT_STATUS',p_interface.guarnt_status_code,g_sys_award_year) IS NULL THEN
2171                 g_tab_index := g_tab_index + 1;
2172                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2173                 fnd_message.set_token('FIELD','GUARNT_STATUS_CODE');
2174                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2175                 p_status := FALSE;
2176           END IF;
2177        END IF;
2178      END IF;
2179 
2180      -- FA 134: is a Release -5 field only
2181      IF g_rel_version = 'RELEASE-5' THEN
2182        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND
2183           (p_interface.guarnt_status_date IS NOT NULL) THEN
2184 
2185            fnd_message.set_name('IGF','IGF_SL_CL_INV_G_STATUS_DATE');
2186            g_tab_index := g_tab_index + 1;
2187            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2188            p_status := FALSE;
2189 
2190        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.guarnt_status_date IS NULL) THEN
2191 
2192            fnd_message.set_name('IGF','IGF_SL_CL_INV_G_STATUS_DATE');
2193            g_tab_index := g_tab_index + 1;
2194            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2195            p_status := FALSE;
2196 
2197        END IF;
2198      END IF;
2199 
2200      -- FA 134: lend_status_code is a Release -5 field only
2201      IF g_rel_version = 'RELEASE-5' THEN
2202        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.lend_status_code IS NOT NULL) THEN
2203            fnd_message.set_name('IGF','IGF_SL_CL_INV_L_STATUS_CODE');
2204            g_tab_index := g_tab_index + 1;
2205            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2206            p_status := FALSE;
2207        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.lend_status_code IS NULL) THEN
2208            fnd_message.set_name('IGF','IGF_SL_CL_INV_L_STATUS_CODE');
2209            g_tab_index := g_tab_index + 1;
2210            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2211            p_status := FALSE;
2212        ELSIF p_interface.lend_status_code IS NOT NULL THEN
2213           IF  igf_ap_gen.get_aw_lookup_meaning('IGF_SL_LEND_STATUS',p_interface.lend_status_code,g_sys_award_year) IS NULL THEN
2214                 g_tab_index := g_tab_index + 1;
2215                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2216                 fnd_message.set_token('FIELD','LEND_STATUS_CODE');
2217                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2218                 p_status := FALSE;
2219            END IF;
2220        END IF;
2221      END IF;
2222 
2223      -- FA 134:lend_status_date is a Release -5 field only
2224      IF g_rel_version = 'RELEASE-5' THEN
2225        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND
2226           (p_interface.lend_status_date  IS NOT NULL) THEN
2227 
2228            fnd_message.set_name('IGF','IGF_SL_CL_INV_L_STATUS_DATE');
2229            g_tab_index := g_tab_index + 1;
2230            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2231            p_status := FALSE;
2232 
2233        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.lend_status_date IS NULL) THEN
2234 
2235            fnd_message.set_name('IGF','IGF_SL_CL_INV_L_STATUS_DATE');
2236            g_tab_index := g_tab_index + 1;
2237            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2238            p_status := FALSE;
2239 
2240        END IF;
2241      END IF;
2242 
2243      -- FA 134: PNOTE_STATUS is a Release -5 field only
2244      IF g_rel_version = 'RELEASE-5' THEN
2245        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND (p_interface.pnote_status_code IS NOT NULL) THEN
2246            fnd_message.set_name('IGF','IGF_SL_CL_INV_PNOTE_STATUS');
2247            g_tab_index := g_tab_index + 1;
2248            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2249            p_status := FALSE;
2250        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.pnote_status_code IS NULL) THEN
2251            fnd_message.set_name('IGF','IGF_SL_CL_INV_PNOTE_STATUS');
2252            g_tab_index := g_tab_index + 1;
2253            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2254            p_status := FALSE;
2255        ELSIF p_interface.pnote_status_code IS NOT NULL THEN
2256          IF p_interface.pnote_status_code IN ('A','C','F','G','I','M','N','P','Q','R','S','X')
2257           OR (igf_ap_gen.get_aw_lookup_meaning('IGF_SL_PNOTE_STATUS',p_interface.pnote_status_code,g_sys_award_year) IS NULL) THEN
2258 
2259                 g_tab_index := g_tab_index + 1;
2260                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2261                 fnd_message.set_token('FIELD','PNOTE_STATUS_CODE');
2262                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2263                 p_status := FALSE;
2264           END IF;
2265        END IF;
2266      END IF;
2267 
2268      -- FA 134: is a Release -5 field only
2269      IF g_rel_version = 'RELEASE-5' THEN
2270        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND
2271           (p_interface.pnote_status_date IS NOT NULL) THEN
2272 
2273            fnd_message.set_name('IGF','IGF_SL_CL_INV_P_STATUS_DATE');
2274            g_tab_index := g_tab_index + 1;
2275            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2276            p_status := FALSE;
2277 
2278        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.pnote_status_date IS NULL) THEN
2279 
2280            fnd_message.set_name('IGF','IGF_SL_CL_INV_P_STATUS_DATE');
2281            g_tab_index := g_tab_index + 1;
2282            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2283            p_status := FALSE;
2284 
2285        END IF;
2286      END IF;
2287 
2288      -- FA 134: credit_status_code is a Release -5 field only
2289      IF g_rel_version = 'RELEASE-5' THEN
2290        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND
2291           (p_interface.credit_status_code IS NOT NULL) THEN
2292            fnd_message.set_name('IGF','IGF_SL_CL_INV_C_STATUS_CODE');
2293            g_tab_index := g_tab_index + 1;
2294            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2295            p_status := FALSE;
2296 
2297        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.credit_status_code IS NULL) THEN
2298            fnd_message.set_name('IGF','IGF_SL_CL_INV_C_STATUS_CODE');
2299            g_tab_index := g_tab_index + 1;
2300            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2301            p_status := FALSE;
2302 
2303        ELSIF p_interface.credit_status_code IS NOT NULL THEN
2304          IF p_interface.credit_status_code IN ('C','D','E','N')
2305           OR (igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CREDIT_OVERRIDE',p_interface.credit_status_code,g_sys_award_year) IS NULL) THEN
2306                 g_tab_index := g_tab_index + 1;
2307                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2308                 fnd_message.set_token('FIELD','CREDIT_STATUS_CODE');
2309                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2310                 p_status := FALSE;
2311           END IF;
2312        END IF;
2313      END IF;
2314 
2315      -- FA 134: credit_status_date is a Release -5 field only
2316      IF g_rel_version = 'RELEASE-5' THEN
2317        IF (p_interface.loan_status_code = 'N' OR p_interface.loan_status_code = 'G') AND
2318           (p_interface.credit_status_date IS NOT NULL) THEN
2319 
2320            fnd_message.set_name('IGF','IGF_SL_CL_INV_C_STATUS_DATE');
2321            g_tab_index := g_tab_index + 1;
2322            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2323            p_status := FALSE;
2324 
2325        ELSIF (p_interface.loan_status_code = 'A') AND (p_interface.credit_status_date IS NULL) THEN
2326 
2327            fnd_message.set_name('IGF','IGF_SL_CL_INV_C_STATUS_DATE');
2328            g_tab_index := g_tab_index + 1;
2329            g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2330            p_status := FALSE;
2331 
2332        END IF;
2333      END IF;
2334 
2335      IF p_fed_fund_cd = 'ALT' AND p_interface.crdt_undr_difft_name_flag IS NOT NULL THEN
2336         IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.crdt_undr_difft_name_flag) IS NULL THEN
2337               g_tab_index := g_tab_index + 1;
2338               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2339               fnd_message.set_token('FIELD','CRDT_UNDR_DIFFT_NAME_FLAG');
2340               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2341               p_status := FALSE;
2342         END IF;
2343      ELSIF p_fed_fund_cd <> 'ALT' AND p_interface.crdt_undr_difft_name_flag IS NOT NULL THEN
2344         fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2345         fnd_message.set_token('FIELD','CRDT_UNDR_DIFFT_NAME_FLAG');
2346         g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2347         p_status := FALSE;
2348      END IF;
2349 
2350      -- FA 134:ACT_SERIAL_LOAN_CODE is a Release -5 field only
2351      IF g_rel_version = 'RELEASE-5' THEN
2352        IF p_interface.act_serial_loan_code IS NOT NULL THEN
2353          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_SERIAL_LOAN_CODE',p_interface.act_serial_loan_code,g_sys_award_year) IS NULL THEN
2354                 g_tab_index := g_tab_index + 1;
2355                 fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2356                 fnd_message.set_token('FIELD','ACT_SERIAL_LOAN_CODE');
2357                 g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2358                 p_status := FALSE;
2359          END IF;
2360        END IF;
2361      END IF;
2362 
2363      IF p_interface.int_rate_opt_code IS NOT NULL THEN
2364          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_ALT_INT_RATE_OPTION',p_interface.int_rate_opt_code,g_sys_award_year) IS NULL THEN
2365               g_tab_index := g_tab_index + 1;
2366               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2367               fnd_message.set_token('FIELD','INT_RATE_OPT_CODE');
2368               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2369               p_status := FALSE;
2370          END IF;
2371      END IF;
2372 
2373      IF p_interface.repayment_opt_code IS NOT NULL THEN
2374          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_ALT_REPAY_OPTION',p_interface.repayment_opt_code,g_sys_award_year) IS NULL THEN
2375               g_tab_index := g_tab_index + 1;
2376               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2377               fnd_message.set_token('FIELD','REPAYMENT_OPT_CODE');
2378               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2379               p_status := FALSE;
2380          END IF;
2381      END IF;
2382 
2383      IF  (p_fed_fund_cd = 'ALT' AND NVL(p_interface.alt_borw_tot_stu_loan_debt_amt,0) < 0 )  OR (
2384             p_fed_fund_cd <> 'ALT' AND p_interface.alt_borw_tot_stu_loan_debt_amt IS NOT NULL )   THEN
2385            g_tab_index := g_tab_index + 1;
2386            fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2387            fnd_message.set_token('FIELD','ALT_BORW_TOT_STU_LOAN_DEBT_AMT');
2388            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2389            p_status := FALSE;
2390      END IF;
2391 
2392      IF NVL(p_interface.reinst_avail_amt,0) < 0 THEN
2393           g_tab_index := g_tab_index + 1;
2394           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2395           fnd_message.set_token('FIELD','REINST_AVAIL_AMT');
2396           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2397           p_status := FALSE;
2398      END IF;
2399 
2400      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.borw_gross_annual_sal_amt,0) < 0) OR (
2401             p_fed_fund_cd <> 'ALT' AND  p_interface.borw_gross_annual_sal_amt IS NOT NULL ) THEN
2402           g_tab_index := g_tab_index + 1;
2403           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2404           fnd_message.set_token('FIELD','BORW_GROSS_ANNUAL_SAL_AMT');
2405           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2406           p_status := FALSE;
2407      END IF;
2408 
2409      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.borw_other_income_amt,0) < 0 ) OR (
2410            p_fed_fund_cd <> 'ALT' AND  p_interface.borw_other_income_amt IS NOT NULL ) THEN
2411           g_tab_index := g_tab_index + 1;
2412           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2413           fnd_message.set_token('FIELD','BORW_OTHER_INCOME_AMT');
2414           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2415           p_status := FALSE;
2416      END IF;
2417 
2418      IF NVL(p_interface.coa_amt,0) < 0 THEN
2419           g_tab_index := g_tab_index + 1;
2420           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2421           fnd_message.set_token('FIELD','COA_AMT');
2422           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2423           p_status := FALSE;
2424      END IF;
2425 
2426      IF NVL(p_interface.efc_amt,0) < 0 THEN
2427           g_tab_index := g_tab_index + 1;
2428           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2429           fnd_message.set_token('FIELD','EFC_AMT');
2430           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2431           p_status := FALSE;
2432      END IF;
2433 
2434      IF NVL(p_interface.est_fa_amt,0) < 0 THEN
2435           g_tab_index := g_tab_index + 1;
2436           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2437           fnd_message.set_token('FIELD','EST_FA_AMT');
2438           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2439           p_status := FALSE;
2440      END IF;
2441 
2442      IF NVL(p_interface.alt_approved_amt,0) < 0 THEN
2443           g_tab_index := g_tab_index + 1;
2444           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2445           fnd_message.set_token('FIELD','ALT_APPROVED_AMT');
2446           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2447           p_status := FALSE;
2448      END IF;
2449 
2450      IF p_fed_fund_cd <> 'ALT' AND p_interface.alt_approved_amt IS NOT NULL THEN
2451           g_tab_index := g_tab_index + 1;
2452           fnd_message.set_name('IGF','IGF_SL_INV_ALT_APP_AMT');
2453           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2454           p_status := FALSE;
2455      END IF;
2456 
2457      IF p_fed_fund_cd = 'ALT' AND p_interface.alt_approved_amt IS NULL THEN
2458           g_tab_index := g_tab_index + 1;
2459           fnd_message.set_name('IGF','IGF_SL_INV_ALT_APP_AMT_1');
2460           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2461           p_status := FALSE;
2462      END IF;
2463 
2464      IF NVL(p_interface.flp_approved_amt,0) < 0 THEN
2465           g_tab_index := g_tab_index + 1;
2466           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2467           fnd_message.set_token('FIELD','FLP_APPROVED_AMT');
2468           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2469           p_status := FALSE;
2470      END IF;
2471 
2472      IF p_fed_fund_cd NOT IN ('FLP','GPLUSFL') AND p_interface.flp_approved_amt IS NOT NULL THEN
2473           g_tab_index := g_tab_index + 1;
2474           fnd_message.set_name('IGF','IGF_SL_INV_FLP_APP_AMT');
2475           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2476           p_status := FALSE;
2477      END IF;
2478 
2479      IF p_fed_fund_cd IN ('FLP','GPLUSFL') AND p_interface.flp_approved_amt IS NULL THEN
2480           g_tab_index := g_tab_index + 1;
2481           fnd_message.set_name('IGF','IGF_SL_INV_FLP_APP_AMT_1');
2482           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2483           p_status := FALSE;
2484      END IF;
2485 
2486      IF NVL(p_interface.fls_approved_amt,0) < 0 THEN
2487           g_tab_index := g_tab_index + 1;
2488           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2489           fnd_message.set_token('FIELD','FLS_APPROVED_AMT');
2490           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2491           p_status := FALSE;
2492      END IF;
2493 
2494      IF p_fed_fund_cd <> 'FLS' AND p_interface.fls_approved_amt IS NOT NULL THEN
2495           g_tab_index := g_tab_index + 1;
2496           fnd_message.set_name('IGF','IGF_SL_INV_FLS_APP_AMT');
2497           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2498           p_status := FALSE;
2499      END IF;
2500 
2501      IF p_fed_fund_cd = 'FLS' AND p_interface.fls_approved_amt IS NULL THEN
2502           g_tab_index := g_tab_index + 1;
2503           fnd_message.set_name('IGF','IGF_SL_INV_FLS_APP_AMT_1');
2504           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2505           p_status := FALSE;
2506      END IF;
2507 
2508      IF NVL(p_interface.flu_approved_amt,0) < 0 THEN
2509           g_tab_index := g_tab_index + 1;
2510           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2511           fnd_message.set_token('FIELD','FLU_APPROVED_AMT');
2512           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2513           p_status := FALSE;
2514      END IF;
2515 
2516      IF p_fed_fund_cd <> 'FLU' AND p_interface.flu_approved_amt IS NOT NULL THEN
2517           g_tab_index := g_tab_index + 1;
2518           fnd_message.set_name('IGF','IGF_SL_INV_FLU_APP_AMT');
2519           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2520           p_status := FALSE;
2521      END IF;
2522 
2523      IF p_fed_fund_cd = 'FLU' AND p_interface.flu_approved_amt IS NULL THEN
2524           g_tab_index := g_tab_index + 1;
2525           fnd_message.set_name('IGF','IGF_SL_INV_FLU_APP_AMT_1');
2526           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2527           p_status := FALSE;
2528      END IF;
2529 
2530      IF NVL(p_interface.alt_cert_amt,0) < 0 THEN
2531           g_tab_index := g_tab_index + 1;
2532           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2533           fnd_message.set_token('FIELD','ALT_CERT_AMT');
2534           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2535           p_status := FALSE;
2536      END IF;
2537 
2538      IF p_fed_fund_cd <> 'ALT' AND p_interface.alt_cert_amt IS NOT NULL THEN
2539           g_tab_index := g_tab_index + 1;
2540           fnd_message.set_name('IGF','IGF_SL_INV_ALT_CRT_AMT_1');
2541           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2542           p_status := FALSE;
2543      END IF;
2544 
2545      IF p_fed_fund_cd = 'ALT' AND p_interface.loan_status_code = 'A' AND p_interface.alt_cert_amt IS NULL THEN
2546           g_tab_index := g_tab_index + 1;
2547           fnd_message.set_name('IGF','IGF_SL_INV_ALT_CRT_AMT_2');
2548           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2549           p_status := FALSE;
2550      END IF;
2551 
2552      IF NVL(p_interface.flp_cert_amt,0) < 0 THEN
2553           g_tab_index := g_tab_index + 1;
2554           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2555           fnd_message.set_token('FIELD','FLP_CERT_AMT');
2556           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2557           p_status := FALSE;
2558      END IF;
2559 
2560      IF p_fed_fund_cd NOT IN ('FLP','GPLUSFL') AND p_interface.flp_cert_amt IS NOT NULL THEN
2561           g_tab_index := g_tab_index + 1;
2562           fnd_message.set_name('IGF','IGF_SL_INV_FLP_CRT_AMT_1');
2563           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2564           p_status := FALSE;
2565      END IF;
2566 
2567      IF p_fed_fund_cd IN ('FLP','GPLUSFL') AND p_interface.loan_status_code = 'A' AND p_interface.flp_cert_amt IS NULL THEN
2568           g_tab_index := g_tab_index + 1;
2569           fnd_message.set_name('IGF','IGF_SL_INV_FLP_CRT_AMT_2');
2570           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2571           p_status := FALSE;
2572      END IF;
2573 
2574      IF NVL(p_interface.fls_cert_amt,0) < 0 THEN
2575           g_tab_index := g_tab_index + 1;
2576           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2577           fnd_message.set_token('FIELD','FLS_CERT_AMT');
2578           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2579           p_status := FALSE;
2580      END IF;
2581 
2582      IF p_fed_fund_cd <> 'FLS' AND p_interface.fls_cert_amt IS NOT NULL THEN
2583           g_tab_index := g_tab_index + 1;
2584           fnd_message.set_name('IGF','IGF_SL_INV_FLS_CRT_AMT_1');
2585           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2586           p_status := FALSE;
2587      END IF;
2588 
2589      IF p_fed_fund_cd = 'FLS' AND p_interface.loan_status_code = 'A' AND p_interface.fls_cert_amt IS NULL THEN
2590           g_tab_index := g_tab_index + 1;
2591           fnd_message.set_name('IGF','IGF_SL_INV_FLS_CRT_AMT_2');
2592           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2593           p_status := FALSE;
2594      END IF;
2595 
2596      IF NVL(p_interface.flu_cert_amt,0) < 0 THEN
2597           g_tab_index := g_tab_index + 1;
2598           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2599           fnd_message.set_token('FIELD','FLU_CERT_AMT');
2600           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2601           p_status := FALSE;
2602      END IF;
2603 
2604      IF p_fed_fund_cd <> 'FLU' AND p_interface.flu_cert_amt IS NOT NULL THEN
2605           g_tab_index := g_tab_index + 1;
2606           fnd_message.set_name('IGF','IGF_SL_INV_FLU_CRT_AMT_1');
2607           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2608           p_status := FALSE;
2609      END IF;
2610 
2611      IF p_fed_fund_cd = 'FLU' AND p_interface.loan_status_code = 'A' AND p_interface.flu_cert_amt IS NULL THEN
2612           g_tab_index := g_tab_index + 1;
2613           fnd_message.set_name('IGF','IGF_SL_INV_FLU_CRT_AMT_2');
2614           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2615           p_status := FALSE;
2616      END IF;
2617 
2618      IF NVL(p_interface.guarantee_amt,0) < 0 THEN
2619           g_tab_index := g_tab_index + 1;
2620           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2621           fnd_message.set_token('FIELD','GUARANTEE_AMT');
2622           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2623           p_status := FALSE;
2624      END IF;
2625 
2626      IF NVL(p_interface.req_loan_amt,0) < 0 THEN
2627           g_tab_index := g_tab_index + 1;
2628           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2629           fnd_message.set_token('FIELD','REQ_LOAN_AMT');
2630           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2631           p_status := FALSE;
2632      END IF;
2633 
2634      IF NVL(p_interface.sch_refund_amt,0) < 0 THEN
2635           g_tab_index := g_tab_index + 1;
2636           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2637           fnd_message.set_token('FIELD','SCH_REFUND_AMT');
2638           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2639           p_status := FALSE;
2640      END IF;
2641 
2642      IF NVL(p_interface.tot_outstd_plus_amt,0) < 0 THEN
2643           g_tab_index := g_tab_index + 1;
2644           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2645           fnd_message.set_token('FIELD','TOT_OUTSTD_PLUS_AMT');
2646           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2647           p_status := FALSE;
2648      END IF;
2649 
2650      IF NVL(p_interface.tot_outstd_stafford_amt,0) < 0 THEN
2651           g_tab_index := g_tab_index + 1;
2652           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2653           fnd_message.set_token('FIELD','TOT_OUTSTD_STAFFORD_AMT');
2654           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2655           p_status := FALSE;
2656      END IF;
2657 
2658      -- ALT
2659 
2660      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.fed_sls_debt_amt,0) < 0) OR (
2661            p_fed_fund_cd <> 'ALT' AND p_interface.fed_sls_debt_amt IS NOT NULL ) THEN
2662           g_tab_index := g_tab_index + 1;
2663           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2664           fnd_message.set_token('FIELD','FED_SLS_DEBT_AMT');
2665           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2666           p_status := FALSE;
2667      END IF;
2668 
2669      IF NVL(p_interface.fed_stafford_loan_debt_amt,0) < 0 THEN
2670           g_tab_index := g_tab_index + 1;
2671           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2672           fnd_message.set_token('FIELD','FED_STAFFORD_LOAN_DEBT_AMT');
2673           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2674           p_status := FALSE;
2675      END IF;
2676 
2677      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.heal_debt_amt,0) < 0 ) OR (
2678            p_fed_fund_cd <> 'ALT' AND p_interface.heal_debt_amt IS NOT NULL ) THEN
2679           g_tab_index := g_tab_index + 1;
2680           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2681           fnd_message.set_token('FIELD','HEAL_DEBT_AMT');
2682           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2683           p_status := FALSE;
2684      END IF;
2685 
2686      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.other_debt_amt,0) < 0  ) OR (
2687             p_fed_fund_cd <> 'ALT' AND p_interface.other_debt_amt IS NOT NULL ) THEN
2688           g_tab_index := g_tab_index + 1;
2689           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2690           fnd_message.set_token('FIELD','OTHER_DEBT_AMT');
2691           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2692           p_status := FALSE;
2693      END IF;
2694 
2695      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.perkins_debt_amt,0) < 0 ) OR (
2696            p_fed_fund_cd <> 'ALT' AND p_interface.perkins_debt_amt IS NOT NULL) THEN
2697           g_tab_index := g_tab_index + 1;
2698           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2699           fnd_message.set_token('FIELD','PERKINS_DEBT_AMT');
2700           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2701           p_status := FALSE;
2702      END IF;
2703 
2704      IF (p_fed_fund_cd = 'ALT' AND NVL(p_interface.stud_mth_auto_pymt_amt,0) < 0 ) OR (
2705            p_fed_fund_cd <> 'ALT' AND p_interface.stud_mth_auto_pymt_amt IS NOT NULL ) THEN
2706           g_tab_index := g_tab_index + 1;
2707           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2708           fnd_message.set_token('FIELD','STUD_MTH_AUTO_PYMT_AMT');
2709           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2710           p_status := FALSE;
2711      END IF;
2712 
2713      -- FA 134: STUD_MTH_CRDTCARD_PYMT_AMT,STUD_MTH_ED_LOAN_PYMT_AMT,STUD_MTH_HOUSING_PYMT_AMT,STUD_MTH_OTHER_PYMT_AMT is a Release -5 field only
2714      IF g_rel_version = 'RELEASE-5' THEN
2715        IF NVL(p_interface.stud_mth_crdtcard_pymt_amt,0) < 0 THEN
2716             g_tab_index := g_tab_index + 1;
2717             fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2718             fnd_message.set_token('FIELD','STUD_MTH_CRDTCARD_PYMT_AMT');
2719             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2720             p_status := FALSE;
2721        END IF;
2722 
2723        IF NVL(p_interface.stud_mth_ed_loan_pymt_amt,0) < 0 THEN
2724             g_tab_index := g_tab_index + 1;
2725             fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2726             fnd_message.set_token('FIELD','STUD_MTH_ED_LOAN_PYMT_AMT');
2727             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2728             p_status := FALSE;
2729        END IF;
2730 
2731        IF NVL(p_interface.stud_mth_housing_pymt_amt,0) < 0 THEN
2732             g_tab_index := g_tab_index + 1;
2733             fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2734             fnd_message.set_token('FIELD','STUD_MTH_HOUSING_PYMT_AMT');
2735             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2736             p_status := FALSE;
2737        END IF;
2738 
2739        IF NVL(p_interface.stud_mth_other_pymt_amt,0) < 0 THEN
2740             g_tab_index := g_tab_index + 1;
2741             fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2742             fnd_message.set_token('FIELD','STUD_MTH_OTHER_PYMT_AMT');
2743             g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2744             p_status := FALSE;
2745        END IF;
2746      END IF;
2747 
2748      IF p_interface.err_mesg_1_cd IS NOT NULL THEN
2749          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_interface.err_mesg_1_cd,g_sys_award_year) IS NULL THEN
2750               g_tab_index := g_tab_index + 1;
2751               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2752               fnd_message.set_token('FIELD','ERR_MESG_1_CD');
2753               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2754               p_status := FALSE;
2755          END IF;
2756      END IF;
2757 
2758      IF p_interface.err_mesg_2_cd IS NOT NULL THEN
2759          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_interface.err_mesg_2_cd,g_sys_award_year) IS NULL THEN
2760               g_tab_index := g_tab_index + 1;
2761               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2762               fnd_message.set_token('FIELD','ERR_MESG_2_CD');
2763               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2764               p_status := FALSE;
2765          END IF;
2766      END IF;
2767 
2768      IF p_interface.err_mesg_3_cd IS NOT NULL THEN
2769          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_interface.err_mesg_3_cd,g_sys_award_year) IS NULL THEN
2770               g_tab_index := g_tab_index + 1;
2771               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2772               fnd_message.set_token('FIELD','ERR_MESG_3_CD');
2773               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2774               p_status := FALSE;
2775          END IF;
2776      END IF;
2777 
2778      IF p_interface.err_mesg_4_cd IS NOT NULL THEN
2779          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_interface.err_mesg_4_cd,g_sys_award_year) IS NULL THEN
2780               g_tab_index := g_tab_index + 1;
2781               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2782               fnd_message.set_token('FIELD','ERR_MESG_4_CD');
2783               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2784               p_status := FALSE;
2785          END IF;
2786      END IF;
2787 
2788      IF p_interface.err_mesg_5_cd IS NOT NULL THEN
2789          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_interface.err_mesg_5_cd,g_sys_award_year) IS NULL THEN
2790               g_tab_index := g_tab_index + 1;
2791               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2792               fnd_message.set_token('FIELD','ERR_MESG_5_CD');
2793               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2794               p_status := FALSE;
2795          END IF;
2796      END IF;
2797 
2798      IF p_interface.fed_appl_form_type IS NOT NULL THEN
2799           IF p_fed_fund_cd = 'ALT' THEN
2800               g_tab_index := g_tab_index + 1;
2801               fnd_message.set_name('IGF','IGF_SL_INV_FED_FORM_1');
2802               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2803               p_status := FALSE;
2804           END IF;
2805      END IF;
2806 
2807      IF p_interface.fed_appl_form_type IS NULL THEN
2808           IF p_interface.loan_status_code NOT IN ('G','N') AND p_fed_fund_cd <> 'ALT' THEN
2809               g_tab_index := g_tab_index + 1;
2810               fnd_message.set_name('IGF','IGF_SL_INV_FED_FORM_2');
2811               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2812               p_status := FALSE;
2813           END IF;
2814      END IF;
2815 
2816      IF p_interface.lend_blkt_guarnt_flag IS NOT NULL AND p_interface.lend_blkt_guarnt_flag <> 'Y' THEN
2817           g_tab_index := g_tab_index + 1;
2818           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2819           fnd_message.set_token('FIELD','LEND_BLKT_GUARNT_FLAG');
2820           g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2821           p_status := FALSE;
2822      END IF;
2823 
2824      IF p_interface.b_reference_flag IS NOT NULL THEN
2825         IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_interface.b_reference_flag ) IS NULL THEN
2826               g_tab_index := g_tab_index + 1;
2827               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2828               fnd_message.set_token('FIELD','B_REFERENCE_FLAG');
2829               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2830               p_status := FALSE;
2831         END IF;
2832      END IF;
2833 
2834      -- Validate if the source_id_txt is part of the loan number and also present in the
2835      -- system as OPE_ID_NUM value.
2836      IF(p_interface.source_id_txt IS NOT NULL)THEN
2837        -- the source id txt should match with the substrign of the loan number txt
2838        IF(p_interface.source_id_txt <> substr(p_interface.loan_number_txt,1,8))THEN
2839          g_tab_index := g_tab_index + 1;
2840          FND_MESSAGE.SET_NAME('IGF', 'IGF_SL_LNUM_SCHBCH_NMTCH');
2841          FND_MESSAGE.SET_TOKEN('LNUM', p_interface.loan_number_txt);
2842          FND_MESSAGE.SET_TOKEN('FIELD','SOURCE_ID_TXT');
2843          g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2844          p_status := FALSE;
2845        END IF;
2846        OPEN c_source_or_branch_id(p_interface.source_id_txt, 'OPE_ID_NUM');
2847        FETCH c_source_or_branch_id INTO l_source_or_branch_id;
2848        IF (c_source_or_branch_id%NOTFOUND) THEN
2849          CLOSE c_source_or_branch_id;
2850          g_tab_index := g_tab_index + 1;
2851          FND_MESSAGE.SET_NAME('IGF', 'IGF_AP_INV_FLD_VAL');
2852          FND_MESSAGE.SET_TOKEN('FIELD', 'SOURCE_ID_TXT');
2853          g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2854          p_status := FALSE;
2855        ELSE
2856          CLOSE c_source_or_branch_id;
2857        END IF;
2858      END IF;
2859 
2860      -- Validate if the school_non_ed_brc_id_txt is a valid Source Non Ed Brc Id that is setup
2861      -- as alternate_identifier in the system. Bug 3102439.
2862      -- FA134 SCH_NON_ED_BRC_ID_TXT is a realease 5 field only
2863      IF g_rel_version = 'RELEASE-5' THEN
2864        IF(p_interface.sch_non_ed_brc_id_txt IS NOT NULL)THEN
2865          -- the school non ed branch id should be the same as the substr of loan number txt
2866          IF(p_interface.sch_non_ed_brc_id_txt <> substr(p_interface.loan_number_txt,7,4))THEN
2867            g_tab_index := g_tab_index + 1;
2868            FND_MESSAGE.SET_NAME('IGF', 'IGF_SL_LNUM_SCHBCH_NMTCH');
2869            FND_MESSAGE.SET_TOKEN('LNUM', p_interface.loan_number_txt);
2870            FND_MESSAGE.SET_TOKEN('FIELD','SCH_NON_ED_BRC_ID_TXT');
2871            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2872            p_status := FALSE;
2873          END IF;
2874          OPEN c_source_or_branch_id(p_interface.sch_non_ed_brc_id_txt, 'SCH_NON_ED_BRC_ID');
2875          FETCH c_source_or_branch_id INTO l_source_or_branch_id;
2876          IF (c_source_or_branch_id%NOTFOUND) THEN
2877            CLOSE c_source_or_branch_id;
2878            g_tab_index := g_tab_index + 1;
2879            FND_MESSAGE.SET_NAME('IGF', 'IGF_AP_INV_FLD_VAL');
2880            FND_MESSAGE.SET_TOKEN('FIELD', 'SCH_NON_ED_BRC_ID_TXT');
2881            g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
2882            p_status := FALSE;
2883          ELSE
2884            CLOSE c_source_or_branch_id;
2885          END IF;
2886        END IF;
2887      END IF;
2888 
2889       IF p_fed_fund_cd = 'ALT' THEN                                     -- FA 157 - Cosigner Data validations for ALT loans
2890         validate_alt_loan_cosigner (1,
2891                                     p_interface.cs1_ssn_txt                 ,
2892                                     p_interface.cs1_citizenship_status      ,
2893                                     p_interface.cs1_state_txt               ,
2894                                     p_interface.cs1_drv_license_state_txt   ,
2895                                     p_interface.cs1_signature_code_txt      ,
2896                                     p_interface.cs1_credit_auth_code_txt    ,
2897                                     p_interface.cs1_elect_sig_ind_code_txt  ,
2898                                     p_interface.cs1_rel_to_student_flag);
2899         validate_alt_loan_cosigner (2,
2900                                     p_interface.cs2_ssn_txt                 ,
2901                                     p_interface.cs2_citizenship_status      ,
2902                                     p_interface.cs2_state_txt               ,
2903                                     p_interface.cs2_drv_license_state_txt   ,
2904                                     p_interface.cs2_signature_code_txt      ,
2905                                     p_interface.cs2_credit_auth_code_txt    ,
2906                                     p_interface.cs2_elect_sig_ind_code_txt  ,
2907                                     p_interface.cs2_rel_to_student_flag);
2908       END IF;                                                           -- END FA 157 - Cosigner Data validations for ALT loans
2909 
2910 
2911      IF NVL(p_status,TRUE) <> FALSE THEN
2912        p_status := TRUE;
2913      END IF;
2914 
2915 EXCEPTION
2916 WHEN OTHERS THEN
2917 
2918    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
2919    fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.VALIDATE_LOAN_ORIG_INT');
2920    fnd_file.put_line(fnd_file.log,fnd_message.get);
2921 
2922    IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
2923      fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.validate_loan_orig_int.exception','VALIDATE_LOAN_ORIG_INT ' || SQLERRM);
2924    END IF;
2925 
2926    RAISE IMPORT_ERROR;
2927 
2928 
2929 END validate_loan_orig_int;
2930 
2931 PROCEDURE validate_loan_disb( p_disb_interface    IN c_disb_interface%ROWTYPE,
2932                               p_award_id          IN NUMBER,
2933                               p_d_status          OUT NOCOPY BOOLEAN)
2934 AS
2935 --
2936 --      Created By : gmuralid
2937 --      Created On : 24-JUN-2003
2938 --      Purpose : This procedure is used to validate the loan origination disbursement interface record
2939 --      Known limitations, enhancements or remarks :
2940 --      Change History :
2941 --      Who             When            What
2942 --      (reverse chronological order - newest change first)
2943 --      veramach       16-SEP-2003      1.Validation for disbursement_hld_release_flag changed to look into 'F','N'
2944 --                                      2. Validation for record type changed to look  into IGF_SL_CL_REC_TYPE_CD
2945 
2946 CURSOR c_gross_amt(cp_award_id NUMBER,
2947                    cp_disb_num NUMBER)
2948 IS
2949 SELECT disb_accepted_amt disb_gross_amt
2950 FROM   igf_aw_awd_disb_all
2951 WHERE  award_id = cp_award_id
2952 AND    disb_num = cp_disb_num;
2953 
2954 l_gross_amt           c_gross_amt%ROWTYPE;
2955 lv_disb_net_amt       NUMBER;
2956 
2957 l_result VARCHAR2(1);
2958 
2959 BEGIN
2960 
2961      g_tab_index := 0;
2962 
2963      IF p_disb_interface.record_type IS NULL THEN
2964              fnd_message.set_name('IGF','IGF_SL_DISB_REC_TYP_REQD');
2965              fnd_message.set_token('DISB_NUM',p_disb_interface.disbursement_num);
2966              g_tab_index := g_tab_index + 1;
2967              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2968              p_d_status := FALSE;
2969      ELSE
2970         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_REC_TYPE_CD',p_disb_interface.record_type,g_sys_award_year) IS NULL THEN
2971           g_tab_index := g_tab_index + 1;
2972           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
2973           fnd_message.set_token('FIELD','RECORD_TYPE');
2974           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
2975           p_d_status := FALSE;
2976         END IF;
2977 
2978      END IF;
2979 
2980      IF (p_disb_interface.disbursement_num < 0) OR (p_disb_interface.disbursement_num > 99) THEN
2981              fnd_message.set_name('IGF','IGF_SL_CL_INV_DISB_NUM');
2982              fnd_message.set_token('DISB_NUM',p_disb_interface.disbursement_num);
2983              g_tab_index := g_tab_index + 1;
2984              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2985              p_d_status := FALSE;
2986      END IF;
2987 
2988      IF p_disb_interface.gross_disbursement_amt IS NOT NULL THEN
2989        OPEN c_gross_amt(p_award_id,p_disb_interface.disbursement_num);
2990        FETCH c_gross_amt INTO l_gross_amt;
2991        CLOSE c_gross_amt;
2992 
2993        IF (l_gross_amt.disb_gross_amt IS NULL) OR (l_gross_amt.disb_gross_amt <> p_disb_interface.gross_disbursement_amt) THEN
2994              fnd_message.set_name('IGF','IGF_SL_CL_INV_DISB_AMT');
2995              g_tab_index := g_tab_index + 1;
2996              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
2997              p_d_status := FALSE;
2998         END IF;
2999      END IF;
3000 
3001      IF p_disb_interface.origination_fee_amt  IS NOT NULL THEN
3002        IF (p_disb_interface.origination_fee_amt < 0) THEN
3003              fnd_message.set_name('IGF','IGF_SL_CL_INV_ORG_FEE_AMT');
3004              g_tab_index := g_tab_index + 1;
3005              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3006              p_d_status := FALSE;
3007        END IF;
3008      END IF;
3009 
3010      IF p_disb_interface.guarantee_fee_amt  IS NOT NULL THEN
3011        IF (p_disb_interface.guarantee_fee_amt < 0) THEN
3012              fnd_message.set_name('IGF','IGF_SL_CL_INV_GUA_FEE_AMT');
3013              g_tab_index := g_tab_index + 1;
3014              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3015              p_d_status := FALSE;
3016        END IF;
3017      END IF;
3018 
3019      IF NVL(p_disb_interface.outstd_cancel_amt,0) < 0 THEN
3020           g_tab_index := g_tab_index + 1;
3021           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3022           fnd_message.set_token('FIELD','OUTSTD_CANCEL_AMT');
3023           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
3024           p_d_status := FALSE;
3025      END IF;
3026 
3027      IF NVL(p_disb_interface.netted_cancel_amt,0) < 0 THEN
3028           g_tab_index := g_tab_index + 1;
3029           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3030           fnd_message.set_token('FIELD','NETTED_CANCEL_AMT');
3031           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
3032           p_d_status := FALSE;
3033      END IF;
3034 
3035      IF NVL(p_disb_interface.net_cancel_amt,0) < 0 THEN
3036           g_tab_index := g_tab_index + 1;
3037           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3038           fnd_message.set_token('FIELD','NET_CANCEL_AMT');
3039           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
3040           p_d_status := FALSE;
3041      END IF;
3042 
3043     -- FA 134 Enhancements : guarantee_fees_paid_amt is release 5 field only
3044     -- FA 163 guarantee_fees_paid_amt is valid for realease 4 also
3045      IF g_rel_version IN ('RELEASE-5','RELEASE-4') AND NVL(p_disb_interface.guarantee_fees_paid_amt,0) < 0 THEN
3046           g_tab_index := g_tab_index + 1;
3047           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3048           fnd_message.set_token('FIELD','GUARANTEE_FEES_PAID_AMT');
3049           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
3050           p_d_status := FALSE;
3051      END IF;
3052 
3053      IF NVL(p_disb_interface.guarantee_amt,0) < 0 THEN
3054           g_tab_index := g_tab_index + 1;
3055           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3056           fnd_message.set_token('FIELD','GUARANTEE_AMT');
3057           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
3058           p_d_status := FALSE;
3059      END IF;
3060 
3061      IF NVL(p_disb_interface.sch_disbursement_num,0) < 0 THEN
3062           g_tab_index := g_tab_index + 1;
3063           fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3064           fnd_message.set_token('FIELD','SCH_DISBURSEMENT_NUM');
3065           g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11)|| fnd_message.get;
3066           p_d_status := FALSE;
3067      END IF;
3068 
3069      -- FA 163 : direct_to_borr_flag should be either Y or N
3070      IF p_disb_interface.direct_to_borr_flag IS NOT NULL THEN
3071          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_disb_interface.direct_to_borr_flag) IS NULL THEN
3072               g_tab_index := g_tab_index + 1;
3073               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3074               fnd_message.set_token('FIELD','DIRECT_TO_BORR_FLAG');
3075               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3076               p_d_status := FALSE;
3077          END IF;
3078       END IF;
3079 
3080 --
3081 -- Check the net amount, should not be negative
3082 --
3083 
3084       lv_disb_net_amt :=  NVL(p_disb_interface.gross_disbursement_amt,0) - NVL(p_disb_interface.guarantee_fee_amt,0) - NVL(p_disb_interface.origination_fee_amt,0)
3085                         + NVL(p_disb_interface.guarantee_fees_paid_amt,0) + NVL(p_disb_interface.origination_fees_paid_amt,0);
3086 
3087       IF lv_disb_net_amt < 0 THEN
3088               fnd_message.set_name('IGF','IGF_DB_INVALID_NET_AMT');
3089               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3090               p_d_status := FALSE;
3091       END IF;
3092 
3093       IF p_disb_interface.fund_dist_mthd_type IS NOT NULL THEN
3094         IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_DB_FUND_DISB_METH',p_disb_interface.fund_dist_mthd_type,g_sys_award_year) IS NULL THEN
3095               g_tab_index := g_tab_index + 1;
3096               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3097               fnd_message.set_token('FIELD','FUND_DIST_MTHD_TYPE');
3098               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3099               p_d_status := FALSE;
3100         END IF;
3101       END IF;
3102 
3103       IF p_disb_interface.late_disbursement_flag IS NOT NULL THEN
3104          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_disb_interface.late_disbursement_flag) IS NULL THEN
3105               g_tab_index := g_tab_index + 1;
3106               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3107               fnd_message.set_token('FIELD','LATE_DISBURSEMENT_FLAG');
3108               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3109               p_d_status := FALSE;
3110          END IF;
3111       END IF;
3112 
3113       IF p_disb_interface.prev_reported_flag IS NOT NULL THEN
3114          IF igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_disb_interface.prev_reported_flag) IS NULL THEN
3115               g_tab_index := g_tab_index + 1;
3116               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3117               fnd_message.set_token('FIELD','PREV_REPORTED_FLAG');
3118               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3119               p_d_status := FALSE;
3120          END IF;
3121       END IF;
3122 
3123       IF p_disb_interface.disbursement_hld_release_flag IS NOT NULL THEN
3124          IF p_disb_interface.disbursement_hld_release_flag IN ('H','R') OR
3125                   (igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_DB_HOLD_REL_IND',p_disb_interface.disbursement_hld_release_flag,g_sys_award_year)) IS NULL
3126          THEN
3127               g_tab_index := g_tab_index + 1;
3128               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3129               fnd_message.set_token('FIELD','DISBURSEMENT_HLD_RELEASE_FLAG');
3130               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3131               p_d_status := FALSE;
3132          END IF;
3133       END IF;
3134 
3135       IF p_disb_interface.pnote_code IS NULL THEN
3136              fnd_message.set_name('IGF','IGF_SL_CL_PNOTE_STAT_REQD');
3137              g_tab_index := g_tab_index + 1;
3138              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3139              p_d_status := FALSE;
3140 
3141       ELSIF p_disb_interface.pnote_code IN ('A','C','F','G','I','M','N','P','Q','R','S','X')
3142              OR (igf_ap_gen.get_aw_lookup_meaning('IGF_SL_PNOTE_STATUS',p_disb_interface.pnote_code,g_sys_award_year) IS NULL)
3143              THEN
3144 
3145              g_tab_index := g_tab_index + 1;
3146              fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3147              fnd_message.set_token('FIELD','PNOTE_CODE');
3148              g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3149              p_d_status := FALSE;
3150 
3151       END IF;
3152 
3153       -- FA 134: is a Release -5 field only
3154       IF g_rel_version = 'RELEASE-5' THEN
3155         IF p_disb_interface.pnote_status_date IS NULL THEN
3156                fnd_message.set_name('IGF','IGF_SL_CL_P_STAT_DT_REQD');
3157                g_tab_index := g_tab_index + 1;
3158                g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3159                p_d_status := FALSE;
3160         END IF;
3161       END IF;
3162 
3163       IF p_disb_interface.origination_fees_paid_amt IS NOT NULL THEN
3164          IF (p_disb_interface.origination_fees_paid_amt < 0) THEN
3165               fnd_message.set_name('IGF','IGF_SL_CL_INV_ORG_FEE_AMT');
3166               g_tab_index := g_tab_index + 1;
3167               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3168               p_d_status := FALSE;
3169          END IF;
3170       END IF;
3171 
3172 
3173       IF p_disb_interface.disbursement_status_code IS NOT NULL THEN
3174          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_DISB_STATUS',p_disb_interface.disbursement_status_code,g_sys_award_year) IS NULL THEN
3175               g_tab_index := g_tab_index + 1;
3176               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3177               fnd_message.set_token('FIELD','DISBURSEMENT_STATUS_CODE');
3178               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3179               p_d_status := FALSE;
3180          END IF;
3181       END IF;
3182 
3183       IF p_disb_interface.fund_status_code IS NOT NULL THEN
3184          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_DB_FUND_STATUS',p_disb_interface.fund_status_code,g_sys_award_year) IS NULL THEN
3185               g_tab_index := g_tab_index + 1;
3186               fnd_message.set_name('IGF','IGF_SL_CL_INV_FND_STATUS');
3187               g_igf_sl_msg_table(g_tab_index).msg_text := RPAD(g_error,11) || fnd_message.get;
3188               p_d_status := FALSE;
3189          END IF;
3190       END IF;
3191 
3192      IF p_disb_interface.err_mesg_1_cd IS NOT NULL THEN
3193          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_disb_interface.err_mesg_1_cd,g_sys_award_year) IS NULL THEN
3194               g_tab_index := g_tab_index + 1;
3195               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3196               fnd_message.set_token('FIELD','ERR_MESG_1_CD');
3197               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3198               p_d_status := FALSE;
3199          END IF;
3200      END IF;
3201 
3202      IF p_disb_interface.err_mesg_2_cd IS NOT NULL THEN
3203          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_disb_interface.err_mesg_2_cd,g_sys_award_year) IS NULL THEN
3204               g_tab_index := g_tab_index + 1;
3205               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3206               fnd_message.set_token('FIELD','ERR_MESG_2_CD');
3207               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3208               p_d_status := FALSE;
3209          END IF;
3210      END IF;
3211 
3212      IF p_disb_interface.err_mesg_3_cd IS NOT NULL THEN
3213          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_disb_interface.err_mesg_3_cd,g_sys_award_year) IS NULL THEN
3214               g_tab_index := g_tab_index + 1;
3215               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3216               fnd_message.set_token('FIELD','ERR_MESG_3_CD');
3217               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3218               p_d_status := FALSE;
3219          END IF;
3220      END IF;
3221 
3222      IF p_disb_interface.err_mesg_4_cd IS NOT NULL THEN
3223          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_disb_interface.err_mesg_4_cd,g_sys_award_year) IS NULL THEN
3224               g_tab_index := g_tab_index + 1;
3225               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3226               fnd_message.set_token('FIELD','ERR_MESG_4_CD');
3227               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3228               p_d_status := FALSE;
3229          END IF;
3230      END IF;
3231 
3232      IF p_disb_interface.err_mesg_5_cd IS NOT NULL THEN
3233          IF igf_ap_gen.get_aw_lookup_meaning('IGF_SL_CL_ERROR',p_disb_interface.err_mesg_5_cd,g_sys_award_year) IS NULL THEN
3234               g_tab_index := g_tab_index + 1;
3235               fnd_message.set_name('IGF','IGF_AP_INV_FLD_VAL');
3236               fnd_message.set_token('FIELD','ERR_MESG_5_CD');
3237               g_igf_sl_msg_table(g_tab_index).msg_text :=  RPAD(g_error,11)|| fnd_message.get;
3238               p_d_status := FALSE;
3239          END IF;
3240      END IF;
3241 
3242 
3243      IF NVL(p_d_status,TRUE) <> FALSE THEN
3244         p_d_status := TRUE;
3245      END IF;
3246 
3247 EXCEPTION
3248      WHEN OTHERS THEN
3249 
3250         fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
3251         fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.VALIDATE_LOAN_DISB');
3252         fnd_file.put_line(fnd_file.log,fnd_message.get);
3253 
3254         IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3255           fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.validate_loan_disb.exception','Unhandled exception : '||SQLERRM);
3256         END IF;
3257         RAISE IMPORT_ERROR;
3258 
3259 END validate_loan_disb;
3260 
3261 PROCEDURE write_logfile(p_log IN VARCHAR2)
3262 AS
3263 --
3264 --    Created By : gmuralid
3265 --    Created On : 24-JUN-2003
3266 --    Purpose : This procedure is used to write the messages into log file
3267 --    Known limitations, enhancements or remarks :
3268 --    Change History :
3269 --    Who             When            What
3270 --    (reverse chronological order - newest change first)
3271 --
3272 
3273 indx NUMBER;
3274 
3275 BEGIN
3276 
3277      IF g_igf_sl_msg_table.COUNT <> 0 THEN
3278         FOR indx IN g_igf_sl_msg_table.FIRST..g_igf_sl_msg_table.LAST
3279         LOOP
3280                IF p_log = 'D' THEN
3281                     fnd_file.put_line(fnd_file.log,LPAD(' ',11) || g_igf_sl_msg_table(indx).msg_text);
3282                ELSE
3283                     fnd_file.put_line(fnd_file.log,g_igf_sl_msg_table(indx).msg_text);
3284                END IF;
3285         END LOOP;
3286      END IF;
3287 
3288      g_igf_sl_msg_table.DELETE;
3289 
3290 EXCEPTION
3291 WHEN OTHERS THEN
3292 
3293    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
3294    fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.WRITE_LOGFILE');
3295    fnd_file.put_line(fnd_file.log,fnd_message.get);
3296 
3297    IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3298      fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.write_logfile.exception','unhandled exception : '||SQLERRM);
3299    END IF;
3300    RAISE IMPORT_ERROR;
3301 
3302 END write_logfile;
3303 
3304 
3305 PROCEDURE delete_records ( p_rowid       ROWID,
3306                            p_loan_id     NUMBER,
3307                            p_loan_number VARCHAR2)
3308 IS
3309 
3310 
3311      l_award_id               igf_aw_award_all.award_id%TYPE;
3312 
3313      l_lor_orig_id            NUMBER;
3314      l_resp_r1_clrp1_id       NUMBER;
3315 
3316      l_lor_rowid              ROWID;
3317      l_loc_rowid              ROWID;
3318      l_alt_rowid              ROWID;
3319      l_disb_rowid             ROWID;
3320      l_resp_r1_rowid          ROWID;
3321      l_resp_r4_rowid          ROWID;
3322      l_resp_r8_rowid          ROWID;
3323      l_disb_resp_rowid        ROWID;
3324 
3325      CURSOR c_lor(cp_loan_id NUMBER)
3326      IS
3327      SELECT
3328      rowid,
3329      origination_id
3330      FROM   igf_sl_lor_all
3331      WHERE  loan_id = cp_loan_id;
3332 
3333      l_lor c_lor%ROWTYPE;
3334 
3335      CURSOR c_lor_loc(cp_orig_id NUMBER)
3336      IS
3337      SELECT rowid
3338      FROM   igf_sl_lor_loc_all
3339      WHERE  origination_id = cp_orig_id;
3340 
3341      l_lor_loc c_lor_loc%ROWTYPE;
3342 
3343      CURSOR c_alt_borw(cp_loan_id NUMBER)
3344      IS
3345      SELECT rowid
3346      FROM   igf_sl_alt_borw_all
3347      WHERE  loan_id = cp_loan_id;
3348 
3349      l_alt_borw c_alt_borw%ROWTYPE;
3350 
3351      CURSOR c_disb_loc(cp_award_id NUMBER)
3352      IS
3353      SELECT rowid
3354      FROM   igf_sl_awd_disb_loc_all
3355      WHERE  award_id = cp_award_id;
3356 
3357      l_disb_loc c_disb_loc%ROWTYPE;
3358 
3359      CURSOR c_resp_r1(cp_loan_number VARCHAR2)
3360      IS
3361      SELECT rowid,clrp1_id
3362      FROM   igf_sl_cl_resp_r1_all
3363      WHERE  loan_number = cp_loan_number;
3364 
3365      l_resp_r1 c_resp_r1%ROWTYPE;
3366 
3367      CURSOR c_resp_r4(cp_rp1_id  NUMBER)
3368      IS
3369      SELECT rowid
3370      FROM   igf_sl_cl_resp_r4_all
3371      WHERE  clrp1_id = cp_rp1_id;
3372 
3373      l_resp_r4 c_resp_r4%ROWTYPE;
3374 
3375      CURSOR c_resp_r8(cp_rp1_id  NUMBER)
3376      IS
3377      SELECT rowid
3378      FROM   igf_sl_cl_resp_r8_all
3379      WHERE  clrp1_id = cp_rp1_id;
3380 
3381      l_resp_r8  c_resp_r8%ROWTYPE;
3382 
3383      CURSOR c_disb_resp(cp_loan_number VARCHAR2)
3384      IS
3385      SELECT rowid
3386      FROM   igf_db_cl_disb_resp_all
3387      WHERE  loan_number = cp_loan_number;
3388 
3389      l_disb_resp c_disb_resp%ROWTYPE;
3390 
3391 
3392      CURSOR c_pnote_hist(cp_loan_id NUMBER)
3393      IS
3394      SELECT
3395      rowid
3396      FROM  igf_sl_pnote_stat_h
3397      WHERE loan_id = cp_loan_id;
3398 
3399      l_pnote_hist  c_pnote_hist%ROWTYPE;
3400 
3401 
3402 BEGIN
3403 
3404      OPEN c_lor(p_loan_id);
3405      FETCH c_lor INTO l_lor;
3406      IF (c_lor%FOUND) THEN
3407         CLOSE c_lor;
3408         l_lor_rowid   := l_lor.rowid;
3409         l_lor_orig_id := l_lor.origination_id;
3410         IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3411           fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','DELETE_RECORDS: Before c_pnote_hist OPEN');
3412         END IF;
3413 
3414         FOR l_pnote_hist IN c_pnote_hist(p_loan_id)
3415         LOOP
3416             IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3417               fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_records.debug','DELETE_RECORDS: c_pnote_hist ROWID ' || l_pnote_hist.rowid);
3418             END IF;
3419             igf_sl_pnote_stat_h_pkg.delete_row(l_pnote_hist.rowid);
3420         END LOOP;
3421 
3422         OPEN c_lor_loc(l_lor_orig_id);
3423         FETCH c_lor_loc INTO l_lor_loc;
3424         IF (c_lor_loc%FOUND) THEN
3425              CLOSE c_lor_loc;
3426              l_loc_rowid := l_lor_loc.rowid;
3427              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3428                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_lor_rowid.rowid:'||l_lor_rowid);
3429                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_loc_rowid.rowid:'||l_loc_rowid);
3430              END IF;
3431              igf_sl_lor_loc_pkg.delete_row(l_loc_rowid);
3432              igf_sl_lor_pkg.delete_row(l_lor_rowid);
3433         ELSE
3434              CLOSE c_lor_loc;
3435              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3436                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_lor_rowid.rowid:'||l_lor_rowid);
3437              END IF;
3438              igf_sl_lor_pkg.delete_row(l_lor_rowid);
3439         END IF;
3440      ELSE
3441         CLOSE c_lor;
3442         l_lor_rowid   := NULL;
3443         l_lor_orig_id := NULL;
3444      END IF;
3445 
3446      OPEN c_alt_borw(p_loan_id);
3447      FETCH c_alt_borw INTO l_alt_borw;
3448      IF (c_alt_borw%FOUND) THEN
3449         CLOSE c_alt_borw;
3450         IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3451           fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.delete_records.debug','l_alt_borw ROWID '|| l_alt_borw.rowid);
3452         END IF;
3453         igf_sl_alt_borw_pkg.delete_row(x_ROWID => l_alt_borw.rowid);
3454      ELSE
3455         CLOSE c_alt_borw;
3456      END IF;
3457 
3458      FOR l_disb_loc IN c_disb_loc(l_award_id) LOOP
3459         IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3460           fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_li_imp_pkg.delete_records.debug','l_disb_loc ROWID ' || l_disb_loc.rowid);
3461         END IF;
3462          igf_sl_awd_disb_loc_pkg.delete_row(x_ROWID  => l_disb_loc.rowid);
3463      END LOOP;
3464 
3465      IF (p_loan_number IS NOT NULL) THEN
3466        OPEN c_resp_r1(p_loan_number);
3467        FETCH c_resp_r1 INTO l_resp_r1;
3468        IF (c_resp_r1%FOUND) THEN
3469           CLOSE c_resp_r1;
3470           l_resp_r1_rowid     := l_resp_r1.rowid;
3471           l_resp_r1_clrp1_id  := l_resp_r1.clrp1_id;
3472 
3473           OPEN c_resp_r4(l_resp_r1_clrp1_id);
3474           FETCH c_resp_r4 INTO l_resp_r4;
3475           IF (c_resp_r4%FOUND) THEN
3476              CLOSE c_resp_r4;
3477              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3478                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_resp_r4 ROWID ' || l_resp_r4.rowid);
3479              END IF;
3480              igf_sl_cl_resp_r4_pkg.delete_row(l_resp_r4.rowid);
3481           ELSE
3482              CLOSE c_resp_r4;
3483           END IF;
3484 
3485           FOR l_resp_r8 IN c_resp_r8(l_resp_r1_clrp1_id) LOOP
3486              IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3487                fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_resp_r8 ROWID ' || l_resp_r8.rowid);
3488              END IF;
3489              igf_sl_cl_resp_r8_pkg.delete_row(x_ROWID => l_resp_r8.rowid);
3490           END LOOP;
3491            IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3492              fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_resp_r1 ROWID ' || l_resp_r1.rowid);
3493            END IF;
3494            igf_sl_cl_resp_r1_pkg.delete_row(x_ROWID => l_resp_r1_rowid);
3495 
3496        ELSE
3497            CLOSE c_resp_r1;
3498        END IF;
3499 
3500        FOR l_disb_resp IN c_disb_resp(p_loan_number) LOOP
3501            IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3502              fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','l_disb_resp ROWID ' || l_disb_resp.rowid);
3503            END IF;
3504            igf_db_cl_disb_resp_pkg.delete_row(x_ROWID => l_disb_resp.rowid);
3505        END LOOP;
3506 
3507      END IF;
3508 
3509      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3510        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','igf_sl_loans ROWID ' || p_rowid);
3511      END IF;
3512      igf_sl_loans_pkg.delete_row(p_rowid);
3513 
3514      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3515        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.delete_record.debug','Deletion Complete');
3516      END IF;
3517 
3518 
3519 EXCEPTION
3520 WHEN OTHERS THEN
3521 
3522    IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
3523      fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.delete_records.exception','Exception ' || SQLERRM);
3524    END IF;
3525    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
3526    fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.DELETE_RECORDS');
3527 
3528    RAISE IMPORT_ERROR;
3529 
3530 
3531 END delete_records;
3532 
3533 PROCEDURE insert_records(p_interface              IN c_interface%ROWTYPE,
3534                          p_award_id               IN NUMBER,
3535                          p_fed_fund               IN VARCHAR2,
3536                          p_student_person_id      IN NUMBER)
3537 AS
3538 --
3539 --    Created By : gmuralid
3540 --    Created On : 24-JUN-2003
3541 --    Purpose : This procedure is used to perform the dml operation on every table
3542 --    Known limitations, enhancements or remarks :
3543 --    Change History :
3544 --    Who             When            What
3545 --    (reverse chronological order - newest change first)
3546 --    bkkumar     07-oct-2003    Bug 3104228  FA 122 Loans Enhancements
3547 --                               a) Impact of obsoleting GUARANTOR_ID_TXT,
3548 --                               LENDER_ID_TXT,LEND_NON_ED_BRC_ID_TXT,RECIPIENT_ID_TXT,
3549 --                               RECIPIENT_TYPE,RECIPIENT_NON_ED_BRC_ID_TXT from the
3550 --                               interface table and also adding a new column relationship_cd
3551 --                               b) Impact of adding the relationship_cd
3552 --                               in igf_sl_lor_all table and obsoleting
3553 --                               BORW_LENDER_ID, DUNS_BORW_LENDER_ID,
3554 --                               GUARANTOR_ID, DUNS_GUARNT_ID,
3555 --                               LENDER_ID, DUNS_LENDER_ID
3556 --                               LEND_NON_ED_BRC_ID, RECIPIENT_ID
3557 --                               RECIPIENT_TYPE,DUNS_RECIP_ID
3558 --                               RECIP_NON_ED_BRC_ID columns.
3559 --                               c) The DUNS_BORW_LENDER_ID
3560 --                               DUNS_GUARNT_ID
3561 --                               DUNS_LENDER_ID
3562 --                               DUNS_RECIP_ID columns are osboleted from the
3563 --                               igf_sl_lor_loc_all table.
3564 --    veramach   23-SEP-2003     Bug 3104228:
3565 --                                        1. Obsoleted lend_apprv_denied_code,lend_apprv_denied_date,cl_rec_status_last_update,
3566 --                                        cl_rec_status,mpn_confirm_code,appl_loan_phase_code_chg,appl_loan_phase_code,
3567 --                                        p_ssn_chg_date,p_dob_chg_date,s_ssn_chg_date,s_dob_chg_date,s_local_addr_chg_date,
3568 --                                        chg_batch_id,appl_send_error_codes from igf_sl_lor
3569 --                                        2. Obsoleted lend_apprv_denied_code,lend_apprv_denied_date,cl_rec_status_last_update,
3570 --                                        cl_rec_status,mpn_confirm_code,appl_loan_phase_code_chg,appl_loan_phase_code,
3571 --                                        p_ssn_chg_date,p_dob_chg_date,s_ssn_chg_date,s_dob_chg_date,s_local_addr_chg_date,
3572 --                                        chg_batch_id from igf_sl_lor_loc
3573 --    veramach        16-SEP-2003    FA 122 loan enhancements
3574 --                                   Changed c_loan_dtls cursor.it does not select borrower information.igf_sl_gen.get_person_details is used for this
3575 
3576 
3577      ln_rowid                 ROWID;
3578      lor_rowid                ROWID;
3579      loc_rowid                ROWID;
3580      alt_rowid                ROWID;
3581 
3582 
3583      l_b_permt_zip            NUMBER(30);
3584      l_b_permt_zip_suffix     NUMBER(30);
3585 
3586      l_b_dob                  DATE;
3587      l_b_legal_res_date       DATE;
3588      l_b_signature_date       DATE;
3589 
3590      l_p_default_status       VARCHAR2(30);
3591      l_b_first_name           VARCHAR2(150);
3592      l_b_last_name            VARCHAR2(150);
3593      l_b_middle_name          VARCHAR2(150);
3594      l_b_ssn                  VARCHAR2(9);
3595      l_b_permt_addr1          VARCHAR2(240);
3596      l_b_permt_addr2          VARCHAR2(240);
3597      l_b_permt_city           VARCHAR2(60);
3598      l_b_permt_state          VARCHAR2(60);
3599      l_b_permt_phone          VARCHAR2(60);
3600      l_b_signature_code       VARCHAR2(30);
3601      l_b_citizenship_status   VARCHAR2(30);
3602      l_b_state_of_legal_res   VARCHAR2(30);
3603      l_b_default_status       VARCHAR2(30);
3604      l_b_license_state        VARCHAR2(30);
3605      l_b_license_number       VARCHAR2(30);
3606 
3607      ln_loan_id         igf_sl_loans.loan_id%TYPE;
3608      ln_albw_id         igf_sl_alt_borw_all.albw_id%TYPE;
3609      ln_origination_id  igf_sl_lor_all.origination_id%TYPE;
3610 
3611      -- FA 122 Loans Enhancements
3612      CURSOR c_get_base_id ( cp_award_id  igf_aw_award.award_id%TYPE)
3613      IS
3614      SELECT base_id,
3615             ci_cal_type,
3616             ci_sequence_number
3617      FROM   igf_aw_award_v
3618      WHERE  award_id = cp_award_id;
3619 
3620      l_get_base_id  c_get_base_id%ROWTYPE;
3621  -- cursor to get the est_orig_fee_perct for the given set up  FA 122 Loans Enhancemtns
3622     CURSOR c_setup (
3623                       cp_cal_type          igs_ca_inst_all.cal_type%TYPE,
3624                       cp_sequence_number   igs_ca_inst_all.sequence_number%TYPE,
3625                       cp_rel_code          igf_sl_cl_setup.relationship_cd%TYPE
3626 
3627                    )
3628     IS
3629     SELECT est_orig_fee_perct
3630     FROM   igf_sl_cl_setup
3631     WHERE  ci_cal_type = cp_cal_type
3632     AND    ci_sequence_number = cp_sequence_number
3633     AND    cp_rel_code = NVL(relationship_cd,'*');
3634 
3635     l_setup c_setup%ROWTYPE;
3636 
3637      CURSOR c_loan_dtls(p_loan_id          NUMBER,
3638                         cp_origination_id   NUMBER) IS
3639      SELECT loans.row_id,
3640             loans.loan_id,
3641             lor.s_default_status,
3642             lor.p_default_status,
3643             lor.p_person_id,
3644             lor.recipient_id,
3645             lor.lender_id,
3646             lor.guarantor_id,
3647             lor.lend_non_ed_brc_id,
3648             lor.recip_non_ed_brc_id,
3649             lor.recipient_type,
3650             fabase.person_id student_id
3651      FROM   igf_sl_loans       loans,
3652             igf_sl_lor_v       lor,
3653             igf_aw_award       awd,
3654             igf_ap_fa_base_rec fabase
3655      WHERE  fabase.base_id     = awd.base_id
3656      AND    loans.award_id     = awd.award_id
3657      AND    loans.loan_id      = lor.loan_id
3658      AND    loans.loan_id      = p_loan_id;
3659 
3660 
3661      loan_rec   c_loan_dtls%ROWTYPE;
3662 
3663      student_dtl_rec igf_sl_gen.person_dtl_rec;
3664      student_dtl_cur igf_sl_gen.person_dtl_cur;
3665 
3666      parent_dtl_rec igf_sl_gen.person_dtl_rec;
3667      parent_dtl_cur igf_sl_gen.person_dtl_cur;
3668 
3669      CURSOR cur_isir_depend_status (cp_person_id NUMBER)
3670      IS
3671      SELECT isir.dependency_status
3672        FROM igf_ap_fa_base_rec fabase,
3673             igf_ap_isir_matched isir
3674       WHERE isir.payment_isir = 'Y'
3675         AND isir.system_record_type = 'ORIGINAL'
3676         AND isir.base_id     =   fabase.base_id
3677         AND fabase.person_id =   cp_person_id;
3678 
3679      l_student_license   cur_isir_depend_status%ROWTYPE;
3680 
3681      CURSOR c_disb_det (cp_disb_num NUMBER)
3682      IS
3683      SELECT
3684      ROWID,
3685      adisb.*
3686      FROM
3687      igf_aw_awd_disb_all adisb
3688      WHERE
3689      adisb.award_id   =  p_award_id AND
3690      adisb.disb_num   =  cp_disb_num;
3691 
3692      l_disb_det c_disb_det%ROWTYPE;
3693 
3694      CURSOR chk_batch_id(cp_orig_ack_batch_id_txt VARCHAR2)
3695      IS
3696      SELECT cbth_id
3697      FROM   igf_sl_cl_batch_all
3698      WHERE  batch_id = cp_orig_ack_batch_id_txt;
3699 
3700      l_batch_id chk_batch_id%ROWTYPE;
3701 
3702      lv_cl_loan_type              VARCHAR2(2);
3703      lv_s_citizenship_status      VARCHAR2(30);
3704 
3705 
3706      lv_p_permt_phone             igf_sl_lor_loc_all.s_permt_phone%TYPE;
3707      lv_p_citizenship_status      igf_ap_isir_matched_all.citizenship_status%TYPE;
3708      lv_p_foreign_postal_code     igf_sl_lor_loc_all.s_foreign_postal_code%TYPE;
3709      lv_s_permt_phone             igf_sl_lor_loc_all.s_permt_phone%TYPE;
3710      lv_s_license_number          igf_ap_isir_matched.driver_license_number%TYPE;
3711      lv_s_license_state           igf_ap_isir_matched.driver_license_state%TYPE;
3712      lv_alien_reg_num             igf_ap_isir_matched.alien_reg_number%TYPE;
3713      lv_dependency_status         igf_ap_isir_matched.dependency_status%TYPE;
3714      lv_s_legal_res_date          igf_ap_isir_matched.s_legal_resd_date%TYPE;
3715      lv_s_legal_res_state         igf_ap_isir_matched.s_state_legal_residence%TYPE;
3716      ln_cbth_id                   igf_sl_cl_batch_all.cbth_id%TYPE;
3717      l_clrp1_id                   igf_sl_cl_resp_r1_all.clrp1_id%TYPE;
3718 
3719      l_disb_interface             c_disb_interface%ROWTYPE;
3720 
3721 
3722      awdloc_rowid                 ROWID;
3723      clb_rowid                    ROWID;
3724      l_rl_row_id                  ROWID;
3725      l_r4_row_id                  ROWID;
3726      l_r8_row_id                  ROWID;
3727      l_rost_rowid                 ROWID;
3728 
3729      i                            NUMBER;
3730      l_cdbr_id                    NUMBER;
3731      lv_disb_net_amt              NUMBER;
3732 
3733 BEGIN
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_sl_cl_imp_pkg.insert_record.debug','Before insert into loans IGF_SL_LOANS_ALL');
3737        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg..debug','Values :' ||
3738                                                    ' Award ID '                      ||
3739                                                    p_award_id                        ||
3740                                                    ' Loan Seq Number '               ||
3741                                                    p_interface.loan_seq_num          ||
3742                                                    ' Loan Number '                   ||
3743                                                    p_interface.loan_number_txt);
3744      END IF;
3745 
3746     -- FA 122 Loans Enhancements
3747      OPEN c_get_base_id(p_award_id);
3748      FETCH c_get_base_id INTO l_get_base_id;
3749      CLOSE c_get_base_id;
3750 
3751      OPEN  c_setup(l_get_base_id.ci_cal_type,l_get_base_id.ci_sequence_number,p_interface.relationship_cd);
3752      FETCH c_setup INTO l_setup;
3753      CLOSE c_setup;
3754 
3755      ln_loan_id := NULL;
3756      ln_rowid   := NULL;
3757 
3758      igf_sl_loans_pkg.insert_row (
3759            x_mode                 => 'R',
3760            x_rowid                => ln_rowid,
3761            x_loan_id              => ln_loan_id,
3762            x_award_id             => p_award_id,
3763            x_seq_num              => p_interface.loan_seq_num,
3764            x_loan_number          => p_interface.loan_number_txt,
3765            x_loan_per_begin_date  => p_interface.loan_per_begin_date,
3766            x_loan_per_end_date    => p_interface.loan_per_end_date,
3767            x_loan_status          => p_interface.loan_status_code,
3768            x_loan_status_date     => p_interface.loan_status_date,
3769            x_loan_chg_status      => NULL,
3770            x_loan_chg_status_date => NULL,
3771            x_active               => p_interface.active_flag,
3772            x_active_date          => p_interface.active_date,
3773            x_borw_detrm_code      => NULL,
3774            x_legacy_record_flag   => 'Y',
3775            x_external_loan_id_txt => p_interface.external_loan_id_txt
3776 
3777          );
3778 
3779      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3780        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After Insert into IGF_SL_LOANS LOAN_ID ' || ln_loan_id);
3781      END IF;
3782 
3783 
3784      IF p_fed_fund = 'FLU' THEN
3785             lv_cl_loan_type := 'SU';
3786      ELSIF p_fed_fund = 'FLS' THEN
3787             lv_cl_loan_type := 'SF';
3788      ELSIF p_fed_fund = 'FLP' THEN
3789           lv_cl_loan_type := 'PL';
3790      ELSIF p_fed_fund = 'ALT' THEN
3791             lv_cl_loan_type := 'AL';
3792      ELSIF p_fed_fund = 'GPLUSFL' THEN
3793             lv_cl_loan_type := 'GB';
3794      END IF;
3795 
3796      IF (NVL(p_interface.b_stu_indicator_flag,'X') = 'Y') AND (p_fed_fund = 'ALT') THEN
3797         l_p_default_status := p_interface.s_default_status_flag;
3798         g_p_person_id      := p_student_person_id;
3799      ELSE
3800         l_p_default_status := p_interface.b_default_status_flag;
3801      END IF;
3802 
3803      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3804        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_LOR');
3805      END IF;
3806 
3807      lor_rowid         := NULL;
3808      ln_origination_id := NULL;
3809 
3810      igf_sl_lor_pkg.insert_row (
3811                 x_mode                              => 'R',
3812                 x_rowid                             => lor_rowid,
3813                 x_origination_id                    => ln_origination_id,
3814                 x_loan_id                           => ln_loan_id,
3815                 x_sch_cert_date                     => p_interface.sch_cert_date,
3816                 x_orig_status_flag                  => NULL,--This is applicable for Direct Loans
3817                 x_orig_batch_id                     => p_interface.orig_batch_id_txt,
3818                 x_orig_batch_date                   => p_interface.orig_batch_date,
3819                 x_chg_batch_id                      => NULL,--This is applicable for Direct Loans
3820                 x_orig_ack_date                     => p_interface.orig_ack_date,
3821                 x_credit_override                   => NULL,    -- FA 149 Credit status override changed to crdt_decision_status
3822                 x_credit_decision_date              => p_interface.credit_status_date,
3823                 x_req_serial_loan_code              => p_interface.req_serial_loan_code,
3824                 x_act_serial_loan_code              => p_interface.act_serial_loan_code,
3825                 x_pnote_delivery_code               => p_interface.pnote_delivery_code,
3826                 x_pnote_status                      => p_interface.pnote_status_code,
3827                 x_pnote_status_date                 => p_interface.pnote_status_date,
3828                 x_pnote_id                          => NULL,--This is applicable for Direct Loans
3829                 x_pnote_print_ind                   => NULL,--This is applicable for Direct Loans
3830                 x_pnote_accept_amt                  => NULL,--This is applicable for Direct Loans
3831                 x_pnote_accept_date                 => NULL,--This is applicable for Direct Loans
3832                 x_unsub_elig_for_heal               => NULL,--This is applicable for Direct Loans
3833                 x_disclosure_print_ind              => NULL,--This is applicable for Direct Loans
3834                 x_orig_fee_perct                    => l_setup.est_orig_fee_perct,
3835                 x_borw_confirm_ind                  => p_interface.borw_confirm_flag,
3836                 x_borw_interest_ind                 => p_interface.borw_interest_flag,
3837                 x_borw_outstd_loan_code             => p_interface.borw_outstd_loan_flag,
3838                 x_unsub_elig_for_depnt              => NULL,--This is applicable for Direct Loans
3839                 x_guarantee_amt                     => p_interface.guarantee_amt,
3840                 x_guarantee_date                    => p_interface.guarantee_date,
3841                 x_guarnt_amt_redn_code              => p_interface.guarnt_amt_redn_code,
3842                 x_guarnt_status_code                => p_interface.guarnt_status_code,
3843                 x_guarnt_status_date                => p_interface.guarnt_status_date,
3844                 x_lend_apprv_denied_code            => p_interface.lend_apprv_denied_code,
3845                 x_lend_apprv_denied_date            => p_interface.lend_apprv_denied_date,
3846                 x_lend_status_code                  => p_interface.lend_status_code,
3847                 x_lend_status_date                  => p_interface.lend_status_date,
3848                 x_guarnt_adj_ind                    => p_interface.guarnt_adj_flag,
3849                 x_grade_level_code                  => p_interface.grade_level_code,
3850                 x_enrollment_code                   => p_interface.enrollment_code,
3851                 x_anticip_compl_date                => p_interface.anticip_compl_date,
3852                 x_borw_lender_id                    => NULL,
3853                 x_duns_borw_lender_id               => NULL,
3854                 x_guarantor_id                      => NULL,
3855                 x_duns_guarnt_id                    => NULL,
3856                 x_prc_type_code                     => p_interface.prc_type_code,
3857                 x_cl_seq_number                     => p_interface.cl_seq_num,
3858                 x_last_resort_lender                => p_interface.last_resort_lender_flag,
3859                 x_lender_id                         => NULL,
3860                 x_duns_lender_id                    => NULL,
3861                 x_lend_non_ed_brc_id                => NULL,
3862                 x_recipient_id                      => NULL,
3863                 x_recipient_type                    => NULL,
3864                 x_duns_recip_id                     => NULL,
3865                 x_recip_non_ed_brc_id               => NULL,
3866                 x_rec_type_ind                      => p_interface.record_code,
3867                 x_cl_loan_type                      => lv_cl_loan_type,
3868                 x_cl_rec_status                     => p_interface.cl_rec_status,
3869                 x_cl_rec_status_last_update         => p_interface.cl_rec_status_last_update,
3870                 x_alt_prog_type_code                => p_interface.alt_prog_type_cd,
3871                 x_alt_appl_ver_code                 => p_interface.alt_appl_ver_code_num,
3872                 x_mpn_confirm_code                  => p_interface.mpn_confirm_code,-- May be Obsolete field
3873                 x_resp_to_orig_code                 => p_interface.resp_to_orig_flag,
3874                 x_appl_loan_phase_code              => p_interface.appl_loan_phase_code,
3875                 x_appl_loan_phase_code_chg          => p_interface.appl_loan_phase_code_chg,
3876                 x_appl_send_error_codes             => NULL,-- May be Obsolete field
3877                 x_tot_outstd_stafford               => p_interface.tot_outstd_stafford_amt,
3878                 x_tot_outstd_plus                   => p_interface.tot_outstd_plus_amt,
3879                 x_alt_borw_tot_debt                 => p_interface.alt_borw_tot_stu_loan_debt_amt,
3880                 x_act_interest_rate                 => p_interface.act_interest_rate_num,
3881                 x_service_type_code                 => p_interface.service_type_code,
3882                 x_rev_notice_of_guarnt              => p_interface.rev_notice_of_guarnt_code,
3883                 x_sch_refund_amt                    => p_interface.sch_refund_amt,
3884                 x_sch_refund_date                   => p_interface.sch_refund_date,
3885                 x_uniq_layout_vend_code             => p_interface.uniq_layout_vend_code,
3886                 x_uniq_layout_ident_code            => p_interface.uniq_layout_ident_code,
3887                 x_p_person_id                       => g_p_person_id,
3888                 x_p_ssn_chg_date                    => NULL,--Change Field for Direct Loan
3889                 x_p_dob_chg_date                    => NULL,--Change Field for Direct Loan
3890                 x_p_permt_addr_chg_date             => NULL,--Change Field for Direct Loan
3891                 x_p_default_status                  => l_p_default_status,
3892                 x_p_signature_code                  => p_interface.b_signature_flag,
3893                 x_p_signature_date                  => p_interface.b_signature_date,
3894                 x_s_ssn_chg_date                    => NULL,--Change Field for Direct Loan
3895                 x_s_dob_chg_date                    => NULL,--Change Field for Direct Loan
3896                 x_s_permt_addr_chg_date             => NULL,--Change Field for Direct Loan
3897                 x_s_local_addr_chg_date             => NULL,--Change Field for Direct Loan
3898                 x_s_default_status                  => p_interface.s_default_status_flag,
3899                 x_s_signature_code                  => p_interface.s_signature_flag,
3900                 x_pnote_batch_id                    => NULL,--This is applicable for Direct Loans
3901                 x_pnote_ack_date                    => NULL,--This is applicable for Direct Loans
3902                 x_pnote_mpn_ind                     => NULL,--This is applicable for Direct Loans
3903                 x_elec_mpn_ind                      => NULL,--This is applicable for Direct Loans
3904                 x_borr_sign_ind                     => p_interface.borr_sign_flag ,
3905                 x_stud_sign_ind                     => p_interface.stud_sign_flag,
3906                 x_borr_credit_auth_code             => p_interface.borr_credit_auth_flag,
3907                 x_relationship_cd                   => p_interface.relationship_cd,
3908                 x_interest_rebate_percent_num       => NULL,
3909                 x_cps_trans_num                     => NULL,
3910                 x_atd_entity_id_txt                 => NULL,
3911                 x_rep_entity_id_txt                 => NULL,
3912                 x_crdt_decision_status              => p_interface.credit_status_code,
3913                 x_note_message                      => NULL,
3914                 x_book_loan_amt                     => NULL,
3915                 x_book_loan_amt_date                => NULL,
3916                 x_pymt_servicer_amt                 => NULL,
3917                 x_pymt_servicer_date                => NULL,
3918                 x_external_loan_id_txt              => p_interface.external_loan_id_txt,
3919                 x_alt_approved_amt                  => p_interface.alt_approved_amt,
3920                 x_flp_approved_amt                  => p_interface.flp_approved_amt,
3921                 x_fls_approved_amt                  => p_interface.fls_approved_amt,
3922                 x_flu_approved_amt                  => p_interface.flu_approved_amt,
3923                 x_guarantor_use_txt                 => p_interface.guarantor_use_txt,
3924                 x_lender_use_txt                    => p_interface.lender_use_txt,
3925                 x_loan_app_form_code                => p_interface.fed_appl_form_type,
3926                 x_reinstatement_amt                 => p_interface.reinst_avail_amt,
3927                 x_requested_loan_amt                => p_interface.req_loan_amt,
3928                 x_school_use_txt                    => p_interface.school_use_txt,
3929                 x_deferment_request_code            => p_interface.defer_req_flag,
3930                 x_eft_authorization_code            => p_interface.eft_auth_flag,
3931                 x_actual_record_type_code           => p_interface.actual_record_type_code,
3932                 x_override_grade_level_code         => NULL,
3933 		x_acad_begin_date                   => NULL,
3934             	x_acad_end_date                     => NULL,
3935                 x_b_alien_reg_num_txt               => NULL,
3936                 x_esign_src_typ_cd                  => p_interface.esign_src_typ_cd
3937                 );
3938      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3939        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After insert into IGF_SL_LOR ln_origination_id ' || ln_origination_id);
3940      END IF;
3941 
3942      IF p_fed_fund = 'ALT' THEN
3943 
3944           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
3945             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_ALT_BORW_ALL');
3946           END IF;
3947 
3948           ln_albw_id := NULL;
3949           alt_rowid  := NULL;
3950 
3951           igf_sl_alt_borw_pkg.insert_row (
3952                     x_mode                              => 'R',
3953                     x_rowid                             => alt_rowid,
3954                     x_stud_mth_auto_pymt                => p_interface.stud_mth_auto_pymt_amt,
3955                     x_stud_mth_ed_loan_pymt             => p_interface.stud_mth_ed_loan_pymt_amt ,
3956                     x_stud_mth_other_pymt               => p_interface.stud_mth_other_pymt_amt ,
3957                     x_stud_mth_crdtcard_pymt            => p_interface.stud_mth_crdtcard_pymt_amt   ,
3958                     x_repayment_opt_code                => p_interface.repayment_opt_code,
3959                     x_stud_mth_housing_pymt             => p_interface.stud_mth_housing_pymt_amt ,
3960                     x_albw_id                           => ln_albw_id,
3961                     x_loan_id                           => ln_loan_id,
3962                     x_fed_stafford_loan_debt            => p_interface.fed_stafford_loan_debt_amt ,
3963                     x_fed_sls_debt                      => p_interface.fed_sls_debt_amt,
3964                     x_heal_debt                         => p_interface.heal_debt_amt,
3965                     x_perkins_debt                      => p_interface.perkins_debt_amt,
3966                     x_other_debt                        => p_interface.other_debt_amt,
3967                     x_crdt_undr_difft_name              => p_interface.crdt_undr_difft_name_flag,
3968                     x_borw_gross_annual_sal             => p_interface.borw_gross_annual_sal_amt,
3969                     x_borw_other_income                 => p_interface.borw_other_income_amt,
3970                     x_student_major                     => p_interface.student_major_txt,
3971                     x_int_rate_opt                      => p_interface.int_rate_opt_code,
3972                     x_other_loan_amt                    => p_interface.other_loan_amt,
3973                     x_cs1_lname                         => p_interface.cs1_lname,
3974                     x_cs1_fname                         => p_interface.cs1_fname,
3975                     x_cs1_mi_txt                        => p_interface.cs1_mi_txt,
3976                     x_cs1_ssn_txt                       => p_interface.cs1_ssn_txt,
3977                     x_cs1_citizenship_status            => p_interface.cs1_citizenship_status,
3978                     x_cs1_address_line_1_txt            => p_interface.cs1_address_line_1_txt,
3979                     x_cs1_address_line_2_txt            => p_interface.cs1_address_line_2_txt,
3980                     x_cs1_city_txt                      => p_interface.cs1_city_txt,
3981                     x_cs1_state_txt                     => p_interface.cs1_state_txt,
3982                     x_cs1_zip_txt                       => p_interface.cs1_zip_txt,
3983                     x_cs1_zip_suffix_txt                => p_interface.cs1_zip_suffix_txt,
3984                     x_cs1_telephone_number_txt          => p_interface.cs1_telephone_number_txt,
3985                     x_cs1_signature_code_txt            => p_interface.cs1_signature_code_txt,
3986                     x_cs2_lname                         => p_interface.cs2_lname,
3987                     x_cs2_fname                         => p_interface.cs2_fname,
3988                     x_cs2_mi_txt                        => p_interface.cs2_mi_txt,
3989                     x_cs2_ssn_txt                       => p_interface.cs2_ssn_txt,
3990                     x_cs2_citizenship_status            => p_interface.cs2_citizenship_status,
3991                     x_cs2_address_line_1_txt            => p_interface.cs2_address_line_1_txt,
3992                     x_cs2_address_line_2_txt            => p_interface.cs2_address_line_2_txt,
3993                     x_cs2_city_txt                      => p_interface.cs2_city_txt,
3994                     x_cs2_state_txt                     => p_interface.cs2_state_txt,
3995                     x_cs2_zip_txt                       => p_interface.cs2_zip_txt,
3996                     x_cs2_zip_suffix_txt                => p_interface.cs2_zip_suffix_txt,
3997                     x_cs2_telephone_number_txt          => p_interface.cs2_telephone_number_txt,
3998                     x_cs2_signature_code_txt            => p_interface.cs2_signature_code_txt,
3999                     x_cs1_credit_auth_code_txt          => p_interface.cs1_credit_auth_code_txt,
4000                     x_cs1_birth_date                    => p_interface.cs1_birth_date,
4001                     x_cs1_drv_license_num_txt           => p_interface.cs1_drv_license_num_txt,
4002                     x_cs1_drv_license_state_txt         => p_interface.cs1_drv_license_state_txt,
4003                     x_cs1_elect_sig_ind_code_txt        => p_interface.cs1_elect_sig_ind_code_txt,
4004                     x_cs1_frgn_postal_code_txt          => p_interface.cs1_frgn_postal_code_txt,
4005                     x_cs1_frgn_tel_num_prefix_txt       => p_interface.cs1_frgn_tel_num_prefix_txt,
4006                     x_cs1_gross_annual_sal_num          => p_interface.cs1_gross_annual_sal_num,
4007                     x_cs1_mthl_auto_pay_txt             => p_interface.cs1_mthl_auto_pay_txt,
4008                     x_cs1_mthl_cc_pay_txt               => p_interface.cs1_mthl_cc_pay_txt,
4009                     x_cs1_mthl_edu_loan_pay_txt         => p_interface.cs1_mthl_edu_loan_pay_txt,
4010                     x_cs1_mthl_housing_pay_txt          => p_interface.cs1_mthl_housing_pay_txt,
4011                     x_cs1_mthl_other_pay_txt            => p_interface.cs1_mthl_other_pay_txt,
4012                     x_cs1_other_income_amt              => p_interface.cs1_other_income_amt,
4013                     x_cs1_rel_to_student_flag           => p_interface.cs1_rel_to_student_flag,
4014                     x_cs1_suffix_txt                    => p_interface.cs1_suffix_txt,
4015                     x_cs1_years_at_address_txt          => p_interface.cs1_years_at_address_txt,
4016                     x_cs2_credit_auth_code_txt          => p_interface.cs2_credit_auth_code_txt,
4017                     x_cs2_birth_date                    => p_interface.cs2_birth_date,
4018                     x_cs2_drv_license_num_txt           => p_interface.cs2_drv_license_num_txt,
4019                     x_cs2_drv_license_state_txt         => p_interface.cs2_drv_license_state_txt,
4020                     x_cs2_elect_sig_ind_code_txt        => p_interface.cs2_elect_sig_ind_code_txt,
4021                     x_cs2_frgn_postal_code_txt          => p_interface.cs2_frgn_postal_code_txt,
4022                     x_cs2_frgn_tel_num_prefix_txt       => p_interface.cs2_frgn_tel_num_prefix_txt,
4023                     x_cs2_gross_annual_sal_num          => p_interface.cs2_gross_annual_sal_num,
4024                     x_cs2_mthl_auto_pay_txt             => p_interface.cs2_mthl_auto_pay_txt,
4025                     x_cs2_mthl_cc_pay_txt               => p_interface.cs2_mthl_cc_pay_txt,
4026                     x_cs2_mthl_edu_loan_pay_txt         => p_interface.cs2_mthl_edu_loan_pay_txt,
4027                     x_cs2_mthl_housing_pay_txt          => p_interface.cs2_mthl_housing_pay_txt,
4028                     x_cs2_mthl_other_pay_txt            => p_interface.cs2_mthl_other_pay_txt,
4029                     x_cs2_other_income_amt              => p_interface.cs2_other_income_amt,
4030                     x_cs2_rel_to_student_flag           => p_interface.cs2_rel_to_student_flag,
4031                     x_cs2_suffix_txt                    => p_interface.cs2_suffix_txt,
4032                     x_cs2_years_at_address_txt          => p_interface.cs2_years_at_address_txt
4033                     );
4034 
4035           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4036             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After insert into IGF_SL_ALT_BORW_ALL albw_id ' || ln_albw_id);
4037           END IF;
4038 
4039      END IF;
4040 
4041      OPEN  c_loan_dtls(ln_loan_id,ln_origination_id);
4042      FETCH c_loan_dtls INTO loan_rec;
4043 
4044      igf_sl_gen.get_person_details(loan_rec.student_id,student_dtl_cur);
4045      FETCH student_dtl_cur INTO student_dtl_rec;
4046      igf_sl_gen.get_person_details(loan_rec.p_person_id,parent_dtl_cur);
4047      FETCH parent_dtl_cur INTO parent_dtl_rec;
4048 
4049 
4050      CLOSE c_loan_dtls;
4051      CLOSE student_dtl_cur;
4052      CLOSE parent_dtl_cur;
4053 
4054      OPEN  cur_isir_depend_status(loan_rec.student_id);
4055      FETCH cur_isir_depend_status INTO  lv_dependency_status;
4056      CLOSE cur_isir_depend_status;
4057 
4058      lv_s_permt_phone  := igf_sl_gen.get_person_phone(loan_rec.student_id);
4059      lv_p_permt_phone  := igf_sl_gen.get_person_phone(loan_rec.p_person_id);
4060 
4061      --Code added for bug 3603289 start
4062      lv_s_license_number     := student_dtl_rec.p_license_num;
4063      lv_s_license_state      := student_dtl_rec.p_license_state;
4064      lv_s_citizenship_status := student_dtl_rec.p_citizenship_status;
4065      lv_alien_reg_num        := student_dtl_rec.p_alien_reg_num;
4066      lv_s_legal_res_date     := student_dtl_rec.p_legal_res_date;
4067      lv_s_legal_res_state    := student_dtl_rec.p_state_of_legal_res;
4068      --Code added for bug 3603289 end
4069 
4070      IF p_fed_fund = 'ALT' AND NVL(p_interface.b_stu_indicator_flag,'X') = 'Y' THEN
4071 
4072         parent_dtl_rec.p_citizenship_status := lv_s_citizenship_status;
4073         parent_dtl_rec.p_state_of_legal_res := lv_s_legal_res_state;
4074         parent_dtl_rec.p_legal_res_date     := lv_s_legal_res_date;
4075         loan_rec.p_default_status           := loan_rec.s_default_status;
4076         parent_dtl_rec.p_license_num        := lv_s_license_number;
4077         parent_dtl_rec.p_license_state      := lv_s_license_state;
4078         lv_p_permt_phone                    := lv_s_permt_phone;
4079 
4080      END IF;
4081 
4082 
4083      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4084        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_record.debug','Before insert into IGF_SL_LOR_LOC_ALL');
4085      END IF;
4086 
4087      loc_rowid := NULL;
4088 
4089      igf_sl_lor_loc_pkg.insert_row (
4090                     x_rowid                      => loc_rowid,
4091                     x_loan_id                    => ln_loan_id,
4092                     x_origination_id             => ln_origination_id,
4093                     x_loan_number                => p_interface.loan_number_txt,
4094                     x_loan_type                  => p_fed_fund,
4095                     x_loan_amt_offered           => l_get_award.offered_amt,
4096                     x_loan_amt_accepted          => l_get_award.accepted_amt,
4097                     x_loan_per_begin_date        => p_interface.loan_per_begin_date,
4098                     x_loan_per_end_date          => p_interface.loan_per_end_date,
4099                     x_acad_yr_begin_date         => NULL,--This is applicable for Direct Loans
4100                     x_acad_yr_end_date           => NULL,--This is applicable for Direct Loans
4101                     x_loan_status                => p_interface.loan_status_code,
4102                     x_loan_status_date           => p_interface.loan_status_date,
4103                     x_loan_chg_status            => NULL,--This is applicable for Direct Loans
4104                     x_loan_chg_status_date       => NULL,--This is applicable for Direct Loans
4105                     x_req_serial_loan_code       => p_interface.req_serial_loan_code,
4106                     x_act_serial_loan_code       => p_interface.act_serial_loan_code,
4107                     x_active                     => p_interface.active_flag,
4108                     x_active_date                => p_interface.active_date,
4109                     x_sch_cert_date              => p_interface.sch_cert_date,
4110                     x_orig_status_flag           => NULL,--This is applicable for Direct Loans
4111                     x_orig_batch_id              => p_interface.orig_batch_id_txt,
4112                     x_orig_batch_date            => p_interface.orig_batch_date,
4113                     x_chg_batch_id               => NULL,--This is applicable for Direct Loans
4114                     x_orig_ack_date              => p_interface.orig_ack_date,
4115                     x_credit_override            => NULL,
4116                     x_credit_decision_date       => p_interface.credit_status_date,
4117                     x_pnote_delivery_code        => p_interface.pnote_delivery_code,
4118                     x_pnote_status               => p_interface.pnote_status_code,
4119                     x_pnote_status_date          => p_interface.pnote_status_date,
4120                     x_pnote_id                   => NULL,--This is applicable for Direct Loans
4121                     x_pnote_print_ind            => NULL,--This is applicable for Direct Loans
4122                     x_pnote_accept_amt           => NULL,--This is applicable for Direct Loans
4123                     x_pnote_accept_date          => NULL,--This is applicable for Direct Loans
4124                     x_p_signature_code           => p_interface.b_signature_flag,
4125                     x_p_signature_date           => p_interface.b_signature_date,
4126                     x_s_signature_code           => p_interface.s_signature_flag,
4127                     x_unsub_elig_for_heal        => NULL,--This is applicable for Direct Loans
4128                     x_disclosure_print_ind       => NULL,--This is applicable for Direct Loans
4129                     x_orig_fee_perct             => l_setup.est_orig_fee_perct,
4130                     x_borw_confirm_ind           => p_interface.borw_confirm_flag,
4131                     x_borw_interest_ind          => p_interface.borw_interest_flag ,
4132                     x_unsub_elig_for_depnt       => NULL,--This is applicable for Direct Loans
4133                     x_guarantee_amt              => p_interface.guarantee_amt,
4134                     x_guarantee_date             => p_interface.guarantee_date,
4135                     x_guarnt_adj_ind             => p_interface.guarnt_adj_flag,
4136                     x_guarnt_amt_redn_code       => p_interface.guarnt_amt_redn_code,
4137                     x_guarnt_status_code         => p_interface.guarnt_status_code,
4138                     x_guarnt_status_date         => p_interface.guarnt_status_date,
4139                     x_lend_apprv_denied_code     => p_interface.lend_apprv_denied_code,
4140                     x_lend_apprv_denied_date     => p_interface.lend_apprv_denied_date,
4141                     x_lend_status_code           => p_interface.lend_status_code,
4142                     x_lend_status_date           => p_interface.lend_status_date,
4143                     x_grade_level_code           => p_interface.grade_level_code,
4144                     x_enrollment_code            => p_interface.enrollment_code,
4145                     x_anticip_compl_date         => p_interface.anticip_compl_date,
4146                     x_borw_lender_id             => loan_rec.lender_id,
4147                     x_duns_borw_lender_id        => NULL,
4148                     x_guarantor_id               => loan_rec.guarantor_id,
4149                     x_duns_guarnt_id             => NULL,
4150                     x_prc_type_code              => p_interface.prc_type_code,
4151                     x_rec_type_ind               => p_interface.record_code,
4152                     x_cl_loan_type               => lv_cl_loan_type,
4153                     x_cl_seq_number              => p_interface.cl_seq_num,
4154                     x_last_resort_lender         => p_interface.last_resort_lender_flag,
4155                     x_lender_id                  => loan_rec.lender_id,
4156                     x_duns_lender_id             => NULL,
4157                     x_lend_non_ed_brc_id         => loan_rec.lend_non_ed_brc_id,
4158                     x_recipient_id               => loan_rec.recipient_id,
4159                     x_recipient_type             => loan_rec.recipient_type,
4160                     x_duns_recip_id              => NULL,
4161                     x_recip_non_ed_brc_id        => loan_rec.recip_non_ed_brc_id,
4162                     x_cl_rec_status              => p_interface.cl_rec_status,
4163                     x_cl_rec_status_last_update  => p_interface.cl_rec_status_last_update,
4164                     x_alt_prog_type_code         => p_interface.alt_prog_type_cd,
4165                     x_alt_appl_ver_code          => p_interface.alt_appl_ver_code_num,
4166                     x_borw_outstd_loan_code      => p_interface.borw_outstd_loan_flag,
4167                     x_mpn_confirm_code           => p_interface.mpn_confirm_code,
4168                     x_resp_to_orig_code          => p_interface.resp_to_orig_flag,
4169                     x_appl_loan_phase_code       => p_interface.appl_loan_phase_code,
4170                     x_appl_loan_phase_code_chg   => p_interface.appl_loan_phase_code_chg,
4171                     x_tot_outstd_stafford        => p_interface.tot_outstd_stafford_amt,
4172                     x_tot_outstd_plus            => p_interface.tot_outstd_plus_amt,
4173                     x_alt_borw_tot_debt          => p_interface.alt_borw_tot_stu_loan_debt_amt,
4174                     x_act_interest_rate          => p_interface.act_interest_rate_num,
4175                     x_service_type_code          => p_interface.service_type_code,
4176                     x_rev_notice_of_guarnt       => p_interface.rev_notice_of_guarnt_code,
4177                     x_sch_refund_amt             => p_interface.sch_refund_amt,
4178                     x_sch_refund_date            => p_interface.sch_refund_date,
4179                     x_uniq_layout_vend_code      => p_interface.uniq_layout_vend_code,
4180                     x_uniq_layout_ident_code     => p_interface.uniq_layout_ident_code,
4181                     x_p_person_id                => loan_rec.p_person_id,
4182                     x_p_ssn                      => SUBSTR(parent_dtl_rec.p_ssn,1,9),
4183                     x_p_ssn_chg_date             => NULL,-- Change field
4184                     x_p_last_name                => parent_dtl_rec.p_last_name,
4185                     x_p_first_name               => parent_dtl_rec.p_first_name,
4186                     x_p_middle_name              => parent_dtl_rec.p_middle_name,
4187                     x_p_permt_addr1              => parent_dtl_rec.p_permt_addr1,
4188                     x_p_permt_addr2              => parent_dtl_rec.p_permt_addr2,
4189                     x_p_permt_city               => parent_dtl_rec.p_permt_city,
4190                     x_p_permt_state              => parent_dtl_rec.p_permt_state,
4191                     x_p_permt_zip                => parent_dtl_rec.p_permt_zip,
4192                     x_p_permt_addr_chg_date      => NULL,-- Change field
4193                     x_p_permt_phone              => lv_p_permt_phone,
4194                     x_p_email_addr               => parent_dtl_rec.p_email_addr,
4195                     x_p_date_of_birth            => parent_dtl_rec.p_date_of_birth,
4196                     x_p_dob_chg_date             => NULL,-- Change field
4197                     x_p_license_num              => parent_dtl_rec.p_license_num,
4198                     x_p_license_state            => parent_dtl_rec.p_license_state,
4199                     x_p_citizenship_status       => parent_dtl_rec.p_citizenship_status,
4200                     x_p_alien_reg_num            => parent_dtl_rec.p_alien_reg_num,
4201                     x_p_default_status           => loan_rec.p_default_status,
4202                     x_p_foreign_postal_code      => p_interface.b_foreign_postal_cd,
4203                     x_p_state_of_legal_res       => parent_dtl_rec.p_state_of_legal_res,
4204                     x_p_legal_res_date           => parent_dtl_rec.p_legal_res_date,
4205                     x_s_ssn                      => SUBSTR(student_dtl_rec.p_ssn,1,9),
4206                     x_s_ssn_chg_date             => NULL,-- Change field
4207                     x_s_last_name                => student_dtl_rec.p_last_name,
4208                     x_s_first_name               => student_dtl_rec.p_first_name,
4209                     x_s_middle_name              => student_dtl_rec.p_middle_name,
4210                     x_s_permt_addr1              => student_dtl_rec.p_permt_addr1,
4211                     x_s_permt_addr2              => student_dtl_rec.p_permt_addr2,
4212                     x_s_permt_city               => student_dtl_rec.p_permt_city,
4213                     x_s_permt_state              => student_dtl_rec.p_permt_state,
4214                     x_s_permt_zip                => student_dtl_rec.p_permt_zip,
4215                     x_s_permt_addr_chg_date      => NULL,-- Change field
4216                     x_s_permt_phone              => lv_s_permt_phone,
4217                     x_s_local_addr1              => student_dtl_rec.p_local_addr1,
4218                     x_s_local_addr2              => student_dtl_rec.p_local_addr2,
4219                     x_s_local_city               => student_dtl_rec.p_local_city,
4220                     x_s_local_state              => student_dtl_rec.p_local_state,
4221                     x_s_local_zip                => student_dtl_rec.p_local_zip,
4222                     x_s_local_addr_chg_date      => NULL,-- Change field
4223                     x_s_email_addr               => student_dtl_rec.p_email_addr,
4224                     x_s_date_of_birth            => student_dtl_rec.p_date_of_birth,
4225                     x_s_dob_chg_date             => NULL,-- Change field
4226                     x_s_license_num              => lv_s_license_number,
4227                     x_s_license_state            => lv_s_license_state,
4228                     x_s_depncy_status            => lv_dependency_status,
4229                     x_s_default_status           => p_interface.s_default_status_flag,
4230                     x_s_citizenship_status       => lv_s_citizenship_status,
4231                     x_s_alien_reg_num            => lv_alien_reg_num,
4232                     x_s_foreign_postal_code      => p_interface.b_foreign_postal_cd,
4233                     x_mode                       => 'R',
4234                     x_pnote_batch_id             => NULL,
4235                     x_pnote_ack_date             => NULL,
4236                     x_pnote_mpn_ind              => NULL,
4237                     x_award_id                   => p_award_id,
4238                     x_base_id                    => l_get_base_id.base_id,
4239                     x_document_id_txt            => NULL,
4240                     x_loan_key_num               => NULL,
4241                     x_interest_rebate_percent_num=> NULL,
4242                     x_fin_award_year             => NULL,
4243                     x_cps_trans_num              => NULL,
4244                     x_atd_entity_id_txt          => NULL,
4245                     x_rep_entity_id_txt          => NULL,
4246                     x_source_entity_id_txt       => NULL,
4247                     x_pymt_servicer_amt          => NULL,
4248                     x_pymt_servicer_date         => NULL,
4249                     x_book_loan_amt              => NULL,
4250                     x_book_loan_amt_date         => NULL,
4251                     x_s_chg_birth_date           => NULL,
4252                     x_s_chg_ssn                  => NULL,
4253                     x_s_chg_last_name            => NULL,
4254                     x_b_chg_birth_date           => NULL,
4255                     x_b_chg_ssn                  => NULL,
4256                     x_b_chg_last_name            => NULL,
4257                     x_note_message               => NULL,
4258                     x_full_resp_code             => NULL,
4259                     x_s_permt_county             => NULL,
4260                     x_b_permt_county             => NULL,
4261                     x_s_permt_country            => NULL,
4262                     x_b_permt_country            => NULL,
4263                     x_crdt_decision_status       => p_interface.credit_status_code,
4264                     x_actual_record_type_code    => p_interface.actual_record_type_code,
4265                     x_alt_approved_amt           => p_interface.alt_approved_amt,
4266                     x_alt_borrower_ind_flag      => p_interface.b_stu_indicator_flag,
4267                     x_borower_credit_authoriz_flag => p_interface.borr_credit_auth_flag,
4268                     x_borower_electronic_sign_flag => p_interface.borr_sign_flag,
4269                     x_cost_of_attendance_amt       => p_interface.coa_amt,
4270                     x_deferment_request_code       => p_interface.defer_req_flag,
4271                     x_eft_authorization_code       => p_interface.eft_auth_flag,
4272                     x_established_fin_aid_amount   => p_interface.est_fa_amt,
4273                     x_expect_family_contribute_amt => p_interface.efc_amt,
4274                     x_external_loan_id_txt         => p_interface.external_loan_id_txt,
4275                     x_flp_approved_amt             => p_interface.flp_approved_amt,
4276                     x_fls_approved_amt             => p_interface.fls_approved_amt,
4277                     x_flu_approved_amt             => p_interface.flu_approved_amt,
4278                     x_guarantor_use_txt            => p_interface.guarantor_use_txt,
4279                     x_lender_use_txt               => p_interface.lender_use_txt,
4280                     x_loan_app_form_code           => p_interface.fed_appl_form_type,
4281                     x_mpn_type_flag                => NULL,
4282                     x_reinstatement_amt            => p_interface.reinst_avail_amt,
4283                     x_requested_loan_amt           => p_interface.req_loan_amt,
4284                     x_school_id_txt                => SUBSTR(p_interface.loan_number_txt,1,8),
4285                     x_school_use_txt               => p_interface.school_use_txt,
4286                     x_student_electronic_sign_flag => p_interface.stud_sign_flag,
4287                     x_esign_src_typ_cd             => p_interface.esign_src_typ_cd
4288                     );
4289 
4290      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4291        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_record.debug','After insert into IGF_SL_LOR_LOC_ALL');
4292      END IF;
4293 
4294      IF ( p_fed_fund in ('ALT','FLP','GPLUSFL') ) AND  (NVL(p_interface.b_stu_indicator_flag,'X') <> 'Y') THEN
4295           l_b_last_name           :=    parent_dtl_rec.p_last_name;
4296           l_b_first_name          :=    parent_dtl_rec.p_first_name;
4297           l_b_middle_name         :=    parent_dtl_rec.p_middle_name;
4298           l_b_ssn                 :=    SUBSTR(parent_dtl_rec.p_ssn,1,9);
4299           l_b_permt_addr1         :=    parent_dtl_rec.p_permt_addr1;
4300           l_b_permt_addr2         :=    parent_dtl_rec.p_permt_addr2;
4301           l_b_permt_city          :=    parent_dtl_rec.p_permt_city;
4302           l_b_permt_state         :=    parent_dtl_rec.p_permt_state;
4303           l_b_permt_zip           :=    parent_dtl_rec.p_permt_zip;
4304           l_b_permt_zip_suffix    :=    NULL;
4305           l_b_permt_phone         :=    lv_p_permt_phone;
4306           l_b_signature_code      :=    p_interface.b_signature_flag;
4307           l_b_signature_date      :=    p_interface.b_signature_date;
4308           l_b_citizenship_status  :=    parent_dtl_rec.p_citizenship_status;
4309           l_b_state_of_legal_res  :=    parent_dtl_rec.p_state_of_legal_res;
4310           l_b_legal_res_date      :=    parent_dtl_rec.p_legal_res_date;
4311           l_b_default_status      :=    p_interface.b_default_status_flag ;
4312           l_b_license_state       :=    p_interface.b_license_state_code;
4313           l_b_license_number      :=    p_interface.b_license_number_txt;
4314           l_b_dob                 :=    parent_dtl_rec.p_date_of_birth;
4315      ELSE
4316           l_b_last_name           :=    student_dtl_rec.p_last_name;
4317           l_b_first_name          :=    student_dtl_rec.p_first_name;
4318           l_b_middle_name         :=    student_dtl_rec.p_middle_name;
4319           l_b_ssn                 :=    SUBSTR(student_dtl_rec.p_ssn,1,9);
4320           l_b_permt_addr1         :=    student_dtl_rec.p_permt_addr1;
4321           l_b_permt_addr2         :=    student_dtl_rec.p_permt_addr2;
4322           l_b_permt_city          :=    student_dtl_rec.p_permt_city;
4323           l_b_permt_state         :=    student_dtl_rec.p_permt_state;
4324           l_b_permt_zip           :=    student_dtl_rec.p_permt_zip;
4325           l_b_permt_zip_suffix    :=    NULL;
4326           l_b_permt_phone         :=    lv_s_permt_phone;
4327           l_b_signature_code      :=    p_interface.s_signature_flag;
4328           l_b_signature_date      :=    p_interface.b_signature_date;
4329           l_b_citizenship_status  :=    lv_s_citizenship_status;
4330           l_b_state_of_legal_res  :=    lv_s_legal_res_state;
4331           l_b_legal_res_date      :=    lv_s_legal_res_date;
4332           l_b_default_status      :=    p_interface.s_default_status_flag;
4333           l_b_license_state       :=    lv_s_license_state;
4334           l_b_license_number      :=    lv_s_license_number;
4335           l_b_dob                 :=    student_dtl_rec.p_date_of_birth;
4336      END IF;
4337 
4338      IF NVL(p_interface.send_resp_code,'X') = 'S'  THEN
4339         ln_cbth_id := NULL;
4340 
4341         OPEN  chk_batch_id(p_interface.orig_send_batch_id_txt);
4342         FETCH chk_batch_id INTO l_batch_id;
4343 
4344         IF (chk_batch_id%NOTFOUND) THEN
4345           CLOSE  chk_batch_id;
4346           clb_rowid  := NULL;
4347 
4348           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4349             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_BATCH_ALL - I');
4350           END IF;
4351 
4352           igf_sl_cl_batch_pkg.insert_row (
4353                    x_rowid                     =>  clb_rowid,
4354                    x_cbth_id                   =>  ln_cbth_id,
4355                    x_batch_id                  =>  p_interface.orig_send_batch_id_txt,
4356                    x_file_creation_date        =>  p_interface.file_creation_date,
4357                    x_file_trans_date           =>  p_interface.file_trans_date ,
4358                    x_file_ident_code           =>  'A005P',
4359                    x_recipient_id              =>  NULL,
4360                    x_recip_non_ed_brc_id       =>  NULL,
4361                    x_source_id                 =>  p_interface.source_id_txt,
4362                    x_source_non_ed_brc_id      =>  p_interface.source_non_ed_brc_id_txt,
4363                    x_send_resp                 =>  p_interface.send_resp_code,
4364                    x_mode                      =>  'R',
4365                    x_record_count_num          =>  NULL,
4366                    x_total_net_disb_amt        =>  NULL,
4367                    x_total_net_eft_amt         =>  NULL,
4368                    x_total_net_non_eft_amt     =>  NULL,
4369                    x_total_reissue_amt         =>  NULL,
4370                    x_total_cancel_amt          =>  NULL,
4371                    x_total_deficit_amt         =>  NULL,
4372                    x_total_net_cancel_amt      =>  NULL,
4373                    x_total_net_out_cancel_amt  =>  NULL);
4374 
4375           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4376             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After insert into IGF_SL_CL_BATCH_ALL - I ln_cbth_id ' || ln_cbth_id);
4377           END IF;
4378         ELSE
4379            CLOSE  chk_batch_id;
4380         END IF;
4381 
4382      END IF;
4383 
4384      IF NVL(p_interface.send_resp_code,'X') = 'R'     AND
4385         p_interface.loan_status_code NOT IN ('G','N')
4386 
4387      THEN
4388 
4389         ln_cbth_id := NULL;
4390 
4391         OPEN chk_batch_id(p_interface.orig_ack_batch_id_txt);
4392         FETCH chk_batch_id INTO l_batch_id;
4393 
4394         IF (chk_batch_id%NOTFOUND) THEN
4395           CLOSE  chk_batch_id;
4396           clb_rowid  := NULL;
4397 
4398           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4399             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_record.debug','Before insert into IGF_SL_CL_BATCH_ALL');
4400           END IF;
4401 
4402           igf_sl_cl_batch_pkg.insert_row (
4403                    x_rowid                     =>  clb_rowid,
4404                    x_cbth_id                   =>  ln_cbth_id,
4405                    x_batch_id                  =>  p_interface.orig_ack_batch_id_txt ,
4406                    x_file_creation_date        =>  p_interface.file_creation_date,
4407                    x_file_trans_date           =>  p_interface.file_trans_date ,
4408                    x_file_ident_code           =>  'R005P',
4409                    x_recipient_id              =>  NULL,
4410                    x_recip_non_ed_brc_id       =>  NULL,
4411                    x_source_id                 =>  p_interface.source_id_txt,
4412                    x_source_non_ed_brc_id      =>  p_interface.source_non_ed_brc_id_txt,
4413                    x_send_resp                 =>  p_interface.send_resp_code,
4414                    x_mode                      =>  'R',
4415                    x_record_count_num          =>  NULL,
4416                    x_total_net_disb_amt        =>  NULL,
4417                    x_total_net_eft_amt         =>  NULL,
4418                    x_total_net_non_eft_amt     =>  NULL,
4419                    x_total_reissue_amt         =>  NULL,
4420                    x_total_cancel_amt          =>  NULL,
4421                    x_total_deficit_amt         =>  NULL,
4422                    x_total_net_cancel_amt      =>  NULL,
4423                    x_total_net_out_cancel_amt  =>  NULL);
4424 
4425           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4426             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_BATCH_ALL ln_cbth_id ' || ln_cbth_id);
4427           END IF;
4428         ELSE
4429            CLOSE  chk_batch_id;
4430         END IF;
4431 
4432       -- POPULATE R1 AND R4
4433         IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4434           fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_RESP_R1');
4435         END IF;
4436 
4437         l_rl_row_id := NULL;
4438 
4439         IF ln_cbth_id IS NULL THEN
4440             ln_cbth_id := l_batch_id.cbth_id;
4441         END IF;
4442 
4443         l_clrp1_id := NULL;
4444 
4445         igf_sl_cl_resp_r1_pkg.insert_row (
4446                               x_mode                       =>  'R',
4447                               x_rowid                      =>  l_rl_row_id,
4448                               x_clrp1_id                   =>  l_clrp1_id, -- generated by sequence and value returned
4449                               x_cbth_id                    =>  ln_cbth_id,
4450                               x_rec_code                   =>  '@1',
4451                               x_rec_type_ind               =>  p_interface.record_code,
4452                               x_b_last_name                =>  l_b_last_name,
4453                               x_b_first_name               =>  l_b_first_name,
4454                               x_b_middle_name              =>  l_b_middle_name,
4455                               x_b_ssn                      =>  TO_NUMBER(l_b_ssn),
4456                               x_b_permt_addr1              =>  l_b_permt_addr1,
4457                               x_b_permt_addr2              =>  l_b_permt_addr2,
4458                               x_b_permt_city               =>  l_b_permt_city,
4459                               x_b_permt_state              =>  l_b_permt_state,
4460                               x_b_permt_zip                =>  l_b_permt_zip,
4461                               x_b_permt_zip_suffix         =>  l_b_permt_zip_suffix,
4462                               x_b_permt_phone              =>  l_b_permt_phone,
4463                               x_b_date_of_birth            =>  l_b_dob,
4464                               x_cl_loan_type               =>  lv_cl_loan_type,
4465                               x_req_loan_amt               =>  p_interface.req_loan_amt,
4466                               x_defer_req_code             =>  p_interface.defer_req_flag,
4467                               x_borw_interest_ind          =>  p_interface.borw_interest_flag,
4468                               x_eft_auth_code              =>  p_interface.eft_auth_flag,
4469                               x_b_signature_code           =>  l_b_signature_code,
4470                               x_b_signature_date           =>  l_b_signature_date,
4471                               x_loan_number                =>  p_interface.loan_number_txt,
4472                               x_cl_seq_number              =>  p_interface.cl_seq_num,
4473                               x_borr_credit_auth_code      =>  p_interface.borr_credit_auth_flag,
4474                               x_b_citizenship_status       =>  l_b_citizenship_status,
4475                               x_b_state_of_legal_res       =>  l_b_state_of_legal_res,
4476                               x_b_legal_res_date           =>  l_b_legal_res_date,
4477                               x_b_default_status           =>  l_b_default_status,
4478                               x_b_outstd_loan_code         =>  p_interface.borw_outstd_loan_flag,
4479                               x_b_indicator_code           =>  p_interface.b_stu_indicator_flag,
4480                               x_s_last_name                =>  student_dtl_rec.p_last_name,
4481                               x_s_first_name               =>  student_dtl_rec.p_first_name,
4482                               x_s_middle_name              =>  student_dtl_rec.p_middle_name,
4483                               x_s_ssn                      =>  TO_NUMBER(SUBSTR(student_dtl_rec.p_ssn,1,9)),
4484                               x_s_date_of_birth            =>  student_dtl_rec.p_date_of_birth,
4485                               x_s_citizenship_status       =>  lv_s_citizenship_status,
4486                               x_s_default_code             =>  p_interface.s_default_status_flag,
4487                               x_s_signature_code           =>  p_interface.s_signature_flag,
4488                               x_school_id                  =>  SUBSTR(p_interface.loan_number_txt,1,8),
4489                               x_loan_per_begin_date        =>  p_interface.loan_per_begin_date,
4490                               x_loan_per_end_date          =>  p_interface.loan_per_end_date,
4491                               x_grade_level_code           =>  p_interface.grade_level_code,
4492                               x_borr_sign_ind              =>  p_interface.borr_sign_flag,
4493                               x_enrollment_code            =>  p_interface.enrollment_code,
4494                               x_anticip_compl_date         =>  p_interface.anticip_compl_date,
4495                               x_coa_amt                    =>  p_interface.coa_amt,
4496                               x_efc_amt                    =>  p_interface.efc_amt,
4497                               x_est_fa_amt                 =>  p_interface.est_fa_amt,
4498                               x_fls_cert_amt               =>  p_interface.fls_cert_amt,
4499                               x_flu_cert_amt               =>  p_interface.flu_cert_amt,
4500                               x_flp_cert_amt               =>  p_interface.flp_cert_amt,
4501                               x_sch_cert_date              =>  p_interface.sch_cert_date,
4502                               x_alt_cert_amt               =>  p_interface.alt_cert_amt,
4503                               x_alt_appl_ver_code          =>  p_interface.alt_appl_ver_code_num,
4504                               x_duns_school_id             =>  NULL,
4505                               x_lender_id                  =>  NULL,
4506                               x_fls_approved_amt           =>  p_interface.fls_approved_amt,
4507                               x_flu_approved_amt           =>  p_interface.flu_approved_amt,
4508                               x_flp_approved_amt           =>  p_interface.flp_approved_amt,
4509                               x_alt_approved_amt           =>  p_interface.alt_approved_amt,
4510                               x_duns_lender_id             =>  NULL,
4511                               x_guarantor_id               =>  NULL,
4512                               x_fed_appl_form_code         =>  p_interface.fed_appl_form_type,
4513                               x_duns_guarnt_id             =>  NULL,
4514                               x_lend_blkt_guarnt_ind       =>  p_interface.lend_blkt_guarnt_flag,
4515                               x_lend_blkt_guarnt_appr_date =>  p_interface.lend_blkt_guarnt_appr_date,
4516                               x_guarnt_adj_ind             =>  p_interface.guarnt_adj_flag,
4517                               x_guarantee_date             =>  p_interface.guarantee_date,
4518                               x_guarantee_amt              =>  p_interface.guarantee_amt,
4519                               x_req_serial_loan_code       =>  p_interface.req_serial_loan_code,
4520                               x_borw_confirm_ind           =>  p_interface.borw_confirm_flag,
4521                               x_b_license_state            =>  l_b_license_state,
4522                               x_b_license_number           =>  l_b_license_number,
4523                               x_b_ref_code                 =>  p_interface.b_reference_flag,
4524                               x_pnote_delivery_code        =>  p_interface.pnote_delivery_code,
4525                               x_b_foreign_postal_code      =>  p_interface.b_foreign_postal_cd,
4526                               x_stud_sign_ind              =>  p_interface.stud_sign_flag,
4527                               x_lend_non_ed_brc_id         =>  NULL,
4528                               x_last_resort_lender         =>  p_interface.last_resort_lender_flag,
4529                               x_resp_to_orig_code          =>  p_interface.resp_to_orig_flag,
4530                               x_err_mesg_1                 =>  p_interface.err_mesg_1_cd,
4531                               x_err_mesg_2                 =>  p_interface.err_mesg_2_cd,
4532                               x_err_mesg_3                 =>  p_interface.err_mesg_3_cd,
4533                               x_err_mesg_4                 =>  p_interface.err_mesg_4_cd,
4534                               x_err_mesg_5                 =>  p_interface.err_mesg_5_cd,
4535                               x_guarnt_amt_redn_code       =>  p_interface.guarnt_amt_redn_code,
4536                               x_tot_outstd_stafford        =>  p_interface.tot_outstd_stafford_amt,
4537                               x_tot_outstd_plus            =>  p_interface.tot_outstd_plus_amt,
4538                               x_b_permt_addr_chg_date      =>  p_interface.b_permt_addr_chg_date,
4539                               x_alt_prog_type_code         =>  p_interface.alt_prog_type_cd,
4540                               x_alt_borw_tot_debt          =>  p_interface.alt_borw_tot_stu_loan_debt_amt,
4541                               x_act_interest_rate          =>  p_interface.act_interest_rate_num,
4542                               x_prc_type_code              =>  p_interface.prc_type_code,
4543                               x_service_type_code          =>  p_interface.service_type_code,
4544                               x_rev_notice_of_guarnt       =>  p_interface.rev_notice_of_guarnt_code,
4545                               x_sch_refund_amt             =>  p_interface.sch_refund_amt,
4546                               x_sch_refund_date            =>  p_interface.sch_refund_date,
4547                               x_guarnt_status_code         =>  p_interface.guarnt_status_code,
4548                               x_lender_status_code         =>  p_interface.lend_status_code,
4549                               x_pnote_status_code          =>  p_interface.pnote_status_code,
4550                               x_credit_status_code         =>  p_interface.credit_status_code,
4551                               x_guarnt_status_date         =>  p_interface.guarnt_status_date,
4552                               x_lender_status_date         =>  p_interface.lend_status_date,
4553                               x_pnote_status_date          =>  p_interface.pnote_status_date,
4554                               x_credit_status_date         =>  p_interface.credit_status_date,
4555                               x_act_serial_loan_code       =>  p_interface.act_serial_loan_code,
4556                               x_amt_avail_for_reinst       =>  p_interface.reinst_avail_amt,
4557                               x_sch_non_ed_brc_id          =>  p_interface.source_non_ed_brc_id_txt,
4558                               x_uniq_layout_vend_code      =>  p_interface.uniq_layout_vend_code,
4559                               x_uniq_layout_ident_code     =>  p_interface.uniq_layout_ident_code,
4560                               x_resp_record_status         =>  'Y',
4561                               x_appl_loan_phase_code       => p_interface.appl_loan_phase_code,
4562                               x_appl_loan_phase_code_chg   => p_interface.appl_loan_phase_code_chg,
4563                               x_cl_rec_status              => p_interface.cl_rec_status,
4564                               x_cl_rec_status_last_update  => p_interface.cl_rec_status_last_update,
4565                               x_cl_version_code            => g_rel_version,
4566                               x_guarantor_use_txt          => p_interface.guarantor_use_txt,
4567                               x_lend_apprv_denied_code     => p_interface.lend_apprv_denied_code,
4568                               x_lend_apprv_denied_date     => p_interface.lend_apprv_denied_date,
4569                               x_lender_use_txt             => p_interface.lender_use_txt,
4570                               x_mpn_confirm_ind            => p_interface.mpn_confirm_code,
4571                               x_school_use_txt             => p_interface.school_use_txt,
4572                               x_b_alien_reg_num_txt        => NULL,
4573                               x_esign_src_typ_cd           => p_interface.esign_src_typ_cd
4574                               );
4575 
4576           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4577             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After insert into IGF_SL_CL_RESP_R1 l_clrp1_id ' || l_clrp1_id);
4578             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_RESP_R4');
4579           END IF;
4580 
4581           l_r4_row_id := NULL;
4582 
4583           igf_sl_cl_resp_r4_pkg.insert_row (
4584                      x_mode                              => 'R',
4585                      x_rowid                             =>  l_r4_row_id,
4586                      x_clrp1_id                          =>  l_clrp1_id,
4587                      x_loan_number                       =>  p_interface.loan_number_txt,
4588                      x_fed_stafford_loan_debt            =>  p_interface.fed_stafford_loan_debt_amt,
4589                      x_fed_sls_debt                      =>  p_interface.fed_sls_debt_amt ,
4590                      x_heal_debt                         =>  p_interface.heal_debt_amt ,
4591                      x_perkins_debt                      =>  p_interface.perkins_debt_amt ,
4592                      x_other_debt                        =>  p_interface.other_debt_amt ,
4593                      x_crdt_undr_difft_name              =>  p_interface.crdt_undr_difft_name_flag,
4594                      x_borw_gross_annual_sal             =>  p_interface.borw_gross_annual_sal_amt,
4595                      x_borw_other_income                 =>  p_interface.borw_other_income_amt ,
4596                      x_student_major                     =>  p_interface.student_major_txt ,
4597                      x_int_rate_opt                      =>  p_interface.int_rate_opt_code,
4598                      x_repayment_opt_code                =>  p_interface.repayment_opt_code,
4599                      x_stud_mth_housing_pymt             =>  p_interface.stud_mth_housing_pymt_amt ,
4600                      x_stud_mth_crdtcard_pymt            =>  p_interface.stud_mth_crdtcard_pymt_amt ,
4601                      x_stud_mth_auto_pymt                =>  p_interface.stud_mth_auto_pymt_amt ,
4602                      x_stud_mth_ed_loan_pymt             =>  p_interface.stud_mth_ed_loan_pymt_amt ,
4603                      x_stud_mth_other_pymt               =>  p_interface.stud_mth_other_pymt_amt ,
4604                      x_cosnr_1_last_name                 =>  NULL,
4605                      x_cosnr_1_first_name                =>  NULL,
4606                      x_cosnr_1_middle_name               =>  NULL,
4607                      x_cosnr_1_ssn                       =>  NULL,
4608                      x_cosnr_1_citizenship               =>  NULL,
4609                      x_cosnr_1_addr_line1                =>  NULL,
4610                      x_cosnr_1_addr_line2                =>  NULL,
4611                      x_cosnr_1_city                      =>  NULL,
4612                      x_cosnr_1_state                     =>  NULL,
4613                      x_cosnr_1_zip                       =>  NULL,
4614                      x_cosnr_1_zip_suffix                =>  NULL,
4615                      x_cosnr_1_phone                     =>  NULL,
4616                      x_cosnr_1_sig_code                  =>  NULL,
4617                      x_cosnr_1_gross_anl_sal             =>  NULL,
4618                      x_cosnr_1_other_income              =>  NULL,
4619                      x_cosnr_1_forn_postal_code          =>  NULL,
4620                      x_cosnr_1_forn_phone_prefix         =>  NULL,
4621                      x_cosnr_1_dob                       =>  NULL,
4622                      x_cosnr_1_license_state             =>  NULL,
4623                      x_cosnr_1_license_num               =>  NULL,
4624                      x_cosnr_1_relationship_to           =>  NULL,
4625                      x_cosnr_1_years_at_addr             =>  NULL,
4626                      x_cosnr_1_mth_housing_pymt          =>  NULL,
4627                      x_cosnr_1_mth_crdtcard_pymt         =>  NULL,
4628                      x_cosnr_1_mth_auto_pymt             =>  NULL,
4629                      x_cosnr_1_mth_ed_loan_pymt          =>  NULL,
4630                      x_cosnr_1_mth_other_pymt            =>  NULL,
4631                      x_cosnr_1_crdt_auth_code            =>  NULL,
4632                      x_cosnr_2_last_name                 =>  NULL,
4633                      x_cosnr_2_first_name                =>  NULL,
4634                      x_cosnr_2_middle_name               =>  NULL,
4635                      x_cosnr_2_ssn                       =>  NULL,
4636                      x_cosnr_2_citizenship               =>  NULL,
4637                      x_cosnr_2_addr_line1                =>  NULL,
4638                      x_cosnr_2_addr_line2                =>  NULL,
4639                      x_cosnr_2_city                      =>  NULL,
4640                      x_cosnr_2_state                     =>  NULL,
4641                      x_cosnr_2_zip                       =>  NULL,
4642                      x_cosnr_2_zip_suffix                =>  NULL,
4643                      x_cosnr_2_phone                     =>  NULL,
4644                      x_cosnr_2_sig_code                  =>  NULL,
4645                      x_cosnr_2_gross_anl_sal             =>  NULL,
4646                      x_cosnr_2_other_income              =>  NULL,
4647                      x_cosnr_2_forn_postal_code          =>  NULL,
4648                      x_cosnr_2_forn_phone_prefix         =>  NULL,
4649                      x_cosnr_2_dob                       =>  NULL,
4650                      x_cosnr_2_license_state             =>  NULL,
4651                      x_cosnr_2_license_num               =>  NULL,
4652                      x_cosnr_2_relationship_to           =>  NULL,
4653                      x_cosnr_2_years_at_addr             =>  NULL,
4654                      x_cosnr_2_mth_housing_pymt          =>  NULL,
4655                      x_cosnr_2_mth_crdtcard_pymt         =>  NULL,
4656                      x_cosnr_2_mth_auto_pymt             =>  NULL,
4657                      x_cosnr_2_mth_ed_loan_pymt          =>  NULL,
4658                      x_cosnr_2_mth_other_pymt            =>  NULL,
4659                      x_cosnr_2_crdt_auth_code            =>  NULL,
4660                      x_other_loan_amt                    =>  p_interface.other_loan_amt,
4661                      x_alt_layout_owner_code_txt         =>  NULL,
4662                      x_alt_layout_identi_code_txt        =>  NULL,
4663                      x_student_school_phone_txt          =>  NULL,
4664                      x_first_csgnr_elec_sign_flag        =>  NULL,
4665                      x_second_csgnr_elec_sign_flag       =>  NULL
4666                     );
4667 
4668           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4669             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_RESP_R4 l_clrp1_id ' || l_clrp1_id);
4670           END IF;
4671           -- THEN R8 BASED ON RECORD RETRIEVED THRU R1
4672           i := 0;
4673 
4674           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4675             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_RESP_R8');
4676           END IF;
4677 
4678           FOR l_disb_interface IN c_disb_interface( p_interface.ci_alternate_code,
4679                                                     p_interface.person_number,
4680                                                     p_interface.award_number_txt,
4681                                                     p_interface.loan_number_txt
4682                                                   ) LOOP
4683               i := i+1;
4684 
4685               lv_disb_net_amt := NVL(l_disb_interface.gross_disbursement_amt,0) - NVL(l_disb_interface.guarantee_fee_amt,0) - NVL(l_disb_interface.origination_fee_amt,0)
4686                      + NVL(l_disb_interface.guarantee_fees_paid_amt,0) + NVL(l_disb_interface.origination_fees_paid_amt,0);
4687 
4688               OPEN  c_disb_det(l_disb_interface.disbursement_num);
4689               FETCH c_disb_det INTO l_disb_det;
4690               CLOSE c_disb_det;
4691 
4692               IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4693                 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before Update IGF_AW_AWD_DISB');
4694               END IF;
4695 
4696               igf_aw_awd_disb_pkg.update_row (
4697                                x_mode                              => 'R',
4698                                x_rowid                             => l_disb_det.rowid,
4699                                x_award_id                          => l_disb_det.award_id,
4700                                x_disb_num                          => l_disb_det.disb_num,
4701                                x_tp_cal_type                       => l_disb_det.tp_cal_type,
4702                                x_tp_sequence_number                => l_disb_det.tp_sequence_number   ,
4703                                x_disb_gross_amt                    => l_disb_det.disb_gross_amt,
4704                                x_fee_1                             => l_disb_interface.origination_fee_amt,
4705                                x_fee_2                             => l_disb_interface.guarantee_fee_amt,
4706                                x_disb_net_amt                      => lv_disb_net_amt,
4707                                x_disb_date                         => l_disb_det.disb_date,
4708                                x_trans_type                        => l_disb_det.trans_type,
4709                                x_elig_status                       => l_disb_det.elig_status,
4710                                x_elig_status_date                  => l_disb_det.elig_status_date,
4711                                x_affirm_flag                       => l_disb_det.affirm_flag,
4712                                x_hold_rel_ind                      => l_disb_interface.disbursement_hld_release_flag,
4713                                x_manual_hold_ind                   => l_disb_det.manual_hold_ind,
4714                                x_disb_status                       => l_disb_interface.disbursement_status_code,
4715                                x_disb_status_date                  => l_disb_interface.disbursement_status_date,
4716                                x_late_disb_ind                     => l_disb_interface.late_disbursement_flag,
4717                                x_fund_dist_mthd                    => l_disb_interface.fund_dist_mthd_type,
4718                                x_prev_reported_ind                 => l_disb_interface.prev_reported_flag,
4719                                x_fund_release_date                 => l_disb_interface.fund_release_date,
4720                                x_fund_status                       => l_disb_interface.fund_status_code,
4721                                x_fund_status_date                  => l_disb_interface.fund_status_date,
4722                                x_fee_paid_1                        => l_disb_interface.origination_fees_paid_amt,
4723                                x_fee_paid_2                        => l_disb_interface.guarantee_fees_paid_amt,
4724                                x_cheque_number                     => l_disb_interface.check_number_txt,
4725                                x_ld_cal_type                       => l_disb_det.ld_cal_type,
4726                                x_ld_sequence_number                => l_disb_det.ld_sequence_number,
4727                                x_disb_accepted_amt                 => l_disb_det.disb_accepted_amt,
4728                                x_disb_paid_amt                     => l_disb_det.disb_paid_amt,
4729                                x_rvsn_id                           => l_disb_det.rvsn_id,
4730                                x_int_rebate_amt                    => l_disb_det.int_rebate_amt,
4731                                x_force_disb                        => l_disb_det.force_disb,
4732                                x_min_credit_pts                    => l_disb_det.min_credit_pts,
4733                                x_disb_exp_dt                       => l_disb_det.disb_exp_dt,
4734                                x_verf_enfr_dt                      => l_disb_det.verf_enfr_dt,
4735                                x_fee_class                         => l_disb_det.fee_class,
4736                                x_show_on_bill                      => l_disb_det.show_on_bill,
4737                                x_attendance_type_code              => l_disb_det.attendance_type_code,
4738                                x_base_attendance_type_code         => l_disb_det.base_attendance_type_code,
4739                                x_change_type_code                  => l_disb_det.change_type_code,
4740                                x_fund_return_mthd_code             => l_disb_det.fund_return_mthd_code,
4741                                x_payment_prd_st_date               => l_disb_det.payment_prd_st_date,
4742                                x_direct_to_borr_flag               => l_disb_interface.direct_to_borr_flag
4743                                );
4744 
4745               IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4746                 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_RESP_R8 - LOOP');
4747               END IF;
4748 
4749               igf_sl_cl_resp_r8_pkg.insert_row (
4750                         x_mode                   => 'R',
4751                         x_rowid                  => l_r8_row_id,
4752                         x_clrp1_id               => l_clrp1_id,
4753                         x_clrp8_id               => i,
4754                         x_disb_date              => l_disb_interface.disbursement_date,
4755                         x_disb_gross_amt         => l_disb_interface.gross_disbursement_amt,
4756                         x_orig_fee               => l_disb_interface.origination_fee_amt,
4757                         x_guarantee_fee          => l_disb_interface.guarantee_fee_amt,
4758                         x_net_disb_amt           => lv_disb_net_amt,
4759                         x_disb_hold_rel_ind      => l_disb_interface.disbursement_hld_release_flag,
4760                         x_disb_status            => l_disb_interface.disbursement_status_code,
4761                         x_guarnt_fee_paid        => l_disb_interface.guarantee_fees_paid_amt,
4762                         x_orig_fee_paid          => l_disb_interface.origination_fees_paid_amt,
4763                         x_resp_record_status     => 'Y',
4764                         x_layout_owner_code_txt   => NULL,
4765                         x_layout_version_code_txt => NULL,
4766                         x_record_code_txt         => NULL,
4767                         x_direct_to_borr_flag     => l_disb_interface.direct_to_borr_flag);
4768 
4769               IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4770                 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_RESP_R8 - LOOP l_clrp1_id ' || l_clrp1_id || ' i ' || i);
4771               END IF;
4772               clb_rowid  := NULL;
4773               ln_cbth_id := NULL;
4774 
4775               IF NVL(l_disb_interface.send_resp_code,'X') = 'D' THEN
4776 
4777                     OPEN  chk_batch_id(l_disb_interface.roster_batch_id);
4778                     FETCH chk_batch_id INTO l_batch_id;
4779 
4780                     IF (chk_batch_id%NOTFOUND) THEN
4781                          CLOSE chk_batch_id;
4782 
4783                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4784                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_CL_BATCH');
4785                          END IF;
4786 
4787                          ln_cbth_id := NULL;
4788                          clb_rowid  := NULL;
4789 
4790                          igf_sl_cl_batch_pkg.insert_row (
4791                                   x_rowid                     =>  clb_rowid,
4792                                   x_cbth_id                   =>  ln_cbth_id,
4793                                   x_batch_id                  =>  l_disb_interface.roster_batch_id,
4794                                   x_file_creation_date        =>  l_disb_interface.file_creation_date,
4795                                   x_file_trans_date           =>  l_disb_interface.file_trans_date ,
4796                                   x_file_ident_code           =>  'E005P',
4797                                   x_recipient_id              =>  l_disb_interface.recipient_id_txt,
4798                                   x_recip_non_ed_brc_id       =>  l_disb_interface.recipient_non_ed_brc_id_txt,
4799                                   x_source_id                 =>  l_disb_interface.source_id_txt,
4800                                   x_source_non_ed_brc_id      =>  l_disb_interface.source_non_ed_brc_id_txt,
4801                                   x_send_resp                 =>  l_disb_interface.send_resp_code,
4802                                   x_mode                      =>  'R',
4803                                   x_record_count_num          =>  NULL,
4804                                   x_total_net_disb_amt        =>  NULL,
4805                                   x_total_net_eft_amt         =>  NULL,
4806                                   x_total_net_non_eft_amt     =>  NULL,
4807                                   x_total_reissue_amt         =>  NULL,
4808                                   x_total_cancel_amt          =>  NULL,
4809                                   x_total_deficit_amt         =>  NULL,
4810                                   x_total_net_cancel_amt      =>  NULL,
4811                                   x_total_net_out_cancel_amt  =>  NULL);
4812                     ELSE
4813                         CLOSE chk_batch_id;
4814                     END IF;
4815 
4816                     IF ln_cbth_id IS NULL THEN
4817                           ln_cbth_id := l_batch_id.cbth_id;
4818                     END IF;
4819 
4820                     IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4821                       fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After insert into IGF_SL_CL_BATCH ln_cbth_id  ' || ln_cbth_id);
4822                       fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_DB_CL_DISB_RESP');
4823                     END IF;
4824 
4825                     l_rost_rowid := NULL;
4826                     l_cdbr_id    := NULL;
4827 
4828                     igf_db_cl_disb_resp_pkg.insert_row (
4829                                    x_mode                 => 'R',
4830                                    x_rowid                => l_rost_rowid,
4831                                    x_cdbr_id              => l_cdbr_id,
4832                                    x_cbth_id              => ln_cbth_id,
4833                                    x_record_type          => l_disb_interface.record_type,
4834                                    x_loan_number          => l_disb_interface.loan_number_txt,
4835                                    x_cl_seq_number        => p_interface.cl_seq_num,
4836                                    x_b_last_name          => l_b_last_name,
4837                                    x_b_first_name         => l_b_first_name,
4838                                    x_b_middle_name        => l_b_middle_name,
4839                                    x_b_ssn                => l_b_ssn,
4840                                    x_b_addr_line_1        => l_b_permt_addr1,
4841                                    x_b_addr_line_2        => l_b_permt_addr2,
4842                                    x_b_city               => l_b_permt_city,
4843                                    x_b_state              => l_b_permt_state,
4844                                    x_b_zip                => l_b_permt_zip,
4845                                    x_b_zip_suffix         => NULL,
4846                                    x_b_addr_chg_date      => NULL,
4847                                    x_eft_auth_code        => p_interface.eft_auth_flag,
4848                                    x_s_last_name          => student_dtl_rec.p_last_name,
4849                                    x_s_first_name         => student_dtl_rec.p_first_name,
4850                                    x_s_middle_initial     => student_dtl_rec.p_middle_name,
4851                                    x_s_ssn                => SUBSTR(student_dtl_rec.p_ssn,1,9),
4852                                    x_school_id            => SUBSTR(p_interface.loan_number_txt,1,8),
4853                                    x_school_use           => l_disb_interface.school_use_txt,
4854                                    x_loan_per_start_date  => p_interface.loan_per_begin_date ,
4855                                    x_loan_per_end_date    => p_interface.loan_per_end_date ,
4856                                    x_cl_loan_type         => lv_cl_loan_type,
4857                                    x_alt_prog_type_code   => p_interface.alt_prog_type_cd ,
4858                                    x_lender_id            => NULL,
4859                                    x_lend_non_ed_brc_id   => NULL,
4860                                    x_lender_use           => l_disb_interface.lender_use_txt,
4861                                    x_borw_confirm_ind     => p_interface.borw_confirm_flag,
4862                                    x_tot_sched_disb       => l_disb_interface.sch_disbursement_num,
4863                                    x_fund_release_date    => l_disb_interface.fund_release_date,
4864                                    x_disb_num             => l_disb_interface.disbursement_num,
4865                                    x_guarantor_id         => NULL,
4866                                    x_guarantor_use        => l_disb_interface.guarantor_use_txt,
4867                                    x_guarantee_date       => l_disb_interface.guarantee_date,
4868                                    x_guarantee_amt        => l_disb_interface.guarantee_amt,
4869                                    x_gross_disb_amt       => l_disb_interface.gross_disbursement_amt,
4870                                    x_fee_1                => l_disb_interface.origination_fee_amt,
4871                                    x_fee_2                => l_disb_interface.guarantee_fee_amt,
4872                                    x_net_disb_amt         => lv_disb_net_amt,
4873                                    x_fund_dist_mthd       => l_disb_interface.fund_dist_mthd_type,
4874                                    x_check_number         => l_disb_interface.check_number_txt,
4875                                    x_late_disb_ind        => l_disb_interface.late_disbursement_flag,
4876                                    x_prev_reported_ind    => l_disb_interface.prev_reported_flag,
4877                                    x_err_code1            => l_disb_interface.err_mesg_1_cd,
4878                                    x_err_code2            => l_disb_interface.err_mesg_2_cd,
4879                                    x_err_code3            => l_disb_interface.err_mesg_3_cd,
4880                                    x_err_code4            => l_disb_interface.err_mesg_4_cd,
4881                                    x_err_code5            => l_disb_interface.err_mesg_5_cd,
4882                                    x_fee_paid_2           => l_disb_interface.guarantee_fees_paid_amt,
4883                                    x_lender_name          => l_disb_interface.lender_name,
4884                                    x_net_cancel_amt       => l_disb_interface.net_cancel_amt,
4885                                    x_duns_lender_id       => NULL,
4886                                    x_duns_guarnt_id       => NULL,
4887                                    x_hold_rel_ind         => l_disb_interface.disbursement_hld_release_flag,
4888                                    x_pnote_code           => SUBSTR(l_disb_interface.pnote_code,1,2),
4889                                    x_pnote_status_date    => l_disb_interface.pnote_status_date ,
4890                                    x_fee_paid_1           => l_disb_interface.origination_fees_paid_amt,
4891                                    x_netted_cancel_amt    => l_disb_interface.netted_cancel_amt,
4892                                    x_outstd_cancel_amt    => l_disb_interface.outstd_cancel_amt,
4893                                    x_sch_non_ed_brc_id    => p_interface.source_non_ed_brc_id_txt,
4894                                    x_status               => 'Y',
4895                                    x_esign_src_typ_cd     => NULL,
4896                                    x_direct_to_borr_flag   => l_disb_interface.direct_to_borr_flag);
4897               END IF;
4898           END LOOP;
4899      ELSE
4900           --
4901           -- Update Disbursement Related Information
4902           --
4903           FOR l_disb_interface IN c_disb_interface( p_interface.ci_alternate_code,
4904                                                     p_interface.person_number,
4905                                                     p_interface.award_number_txt,
4906                                                     p_interface.loan_number_txt
4907                                                   ) LOOP
4908               i := i+1;
4909 
4910               lv_disb_net_amt := NVL(l_disb_interface.gross_disbursement_amt,0) - NVL(l_disb_interface.guarantee_fee_amt,0) - NVL(l_disb_interface.origination_fee_amt,0)
4911                      + NVL(l_disb_interface.guarantee_fees_paid_amt,0) + NVL(l_disb_interface.origination_fees_paid_amt,0);
4912 
4913               OPEN  c_disb_det(l_disb_interface.disbursement_num);
4914               FETCH c_disb_det INTO l_disb_det;
4915               CLOSE c_disb_det;
4916 
4917               IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4918                 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before Update IGF_AW_AWD_DISB');
4919               END IF;
4920 
4921               igf_aw_awd_disb_pkg.update_row (
4922                                x_mode                              => 'R',
4923                                x_rowid                             => l_disb_det.rowid,
4924                                x_award_id                          => l_disb_det.award_id,
4925                                x_disb_num                          => l_disb_det.disb_num,
4926                                x_tp_cal_type                       => l_disb_det.tp_cal_type,
4927                                x_tp_sequence_number                => l_disb_det.tp_sequence_number   ,
4928                                x_disb_gross_amt                    => l_disb_det.disb_gross_amt,
4929                                x_fee_1                             => l_disb_interface.origination_fee_amt,
4930                                x_fee_2                             => l_disb_interface.guarantee_fee_amt,
4931                                x_disb_net_amt                      => lv_disb_net_amt,
4932                                x_disb_date                         => l_disb_det.disb_date,
4933                                x_trans_type                        => l_disb_det.trans_type,
4934                                x_elig_status                       => l_disb_det.elig_status,
4935                                x_elig_status_date                  => l_disb_det.elig_status_date,
4936                                x_affirm_flag                       => l_disb_det.affirm_flag,
4937                                x_hold_rel_ind                      => l_disb_interface.disbursement_hld_release_flag,
4938                                x_manual_hold_ind                   => l_disb_det.manual_hold_ind,
4939                                x_disb_status                       => l_disb_interface.disbursement_status_code,
4940                                x_disb_status_date                  => l_disb_interface.disbursement_status_date,
4941                                x_late_disb_ind                     => l_disb_interface.late_disbursement_flag,
4942                                x_fund_dist_mthd                    => l_disb_interface.fund_dist_mthd_type,
4943                                x_prev_reported_ind                 => l_disb_interface.prev_reported_flag,
4944                                x_fund_release_date                 => l_disb_interface.fund_release_date,
4945                                x_fund_status                       => l_disb_interface.fund_status_code,
4946                                x_fund_status_date                  => l_disb_interface.fund_status_date,
4947                                x_fee_paid_1                        => l_disb_interface.origination_fees_paid_amt,
4948                                x_fee_paid_2                        => l_disb_interface.guarantee_fees_paid_amt,
4949                                x_cheque_number                     => l_disb_interface.check_number_txt,
4950                                x_ld_cal_type                       => l_disb_det.ld_cal_type,
4951                                x_ld_sequence_number                => l_disb_det.ld_sequence_number,
4952                                x_disb_accepted_amt                 => l_disb_det.disb_accepted_amt,
4953                                x_disb_paid_amt                     => l_disb_det.disb_paid_amt,
4954                                x_rvsn_id                           => l_disb_det.rvsn_id,
4955                                x_int_rebate_amt                    => l_disb_det.int_rebate_amt,
4956                                x_force_disb                        => l_disb_det.force_disb,
4957                                x_min_credit_pts                    => l_disb_det.min_credit_pts,
4958                                x_disb_exp_dt                       => l_disb_det.disb_exp_dt,
4959                                x_verf_enfr_dt                      => l_disb_det.verf_enfr_dt,
4960                                x_fee_class                         => l_disb_det.fee_class,
4961                                x_show_on_bill                      => l_disb_det.show_on_bill,
4962                                x_attendance_type_code              => l_disb_det.attendance_type_code,
4963                                x_base_attendance_type_code         => l_disb_det.base_attendance_type_code,
4964                                x_change_type_code                  => l_disb_det.change_type_code,
4965                                x_fund_return_mthd_code             => l_disb_det.fund_return_mthd_code,
4966                                x_payment_prd_st_date               => l_disb_det.payment_prd_st_date,
4967                                x_direct_to_borr_flag               => l_disb_interface.direct_to_borr_flag
4968                                );
4969 
4970               IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4971                 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','After insert into IGF_SL_CL_RESP_R8 - LOOP');
4972               END IF;
4973           END LOOP;
4974      END IF;
4975 
4976      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
4977        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','Before insert into IGF_SL_AWD_DISB_LOC');
4978      END IF;
4979 
4980      DECLARE
4981 
4982         lv_row_id  VARCHAR2(25);
4983 
4984         CURSOR c_loc_cur IS
4985            SELECT *
4986            FROM   igf_sl_awd_disb_loc
4987            WHERE  award_id = p_award_id;
4988 
4989         CURSOR c_awd_cur IS
4990            SELECT *
4991            FROM   igf_aw_awd_disb
4992            WHERE  award_id = p_award_id;
4993 
4994      BEGIN
4995 
4996         FOR tbh_rec IN c_loc_cur LOOP
4997             igf_sl_awd_disb_loc_pkg.delete_row (tbh_rec.row_id);
4998         END LOOP;
4999 
5000         FOR tbh_rec IN c_awd_cur LOOP
5001 
5002           lv_row_id  := NULL;
5003 
5004           igf_sl_awd_disb_loc_pkg.insert_row (
5005             x_mode                              => 'R',
5006             x_rowid                             => lv_row_id,
5007             x_award_id                          => tbh_rec.award_id,
5008             x_disb_num                          => tbh_rec.disb_num,
5009             x_disb_gross_amt                    => tbh_rec.disb_accepted_amt,
5010             x_fee_1                             => tbh_rec.fee_1,
5011             x_fee_2                             => tbh_rec.fee_2,
5012             x_disb_net_amt                      => tbh_rec.disb_net_amt,
5013             x_disb_date                         => tbh_rec.disb_date,
5014             x_hold_rel_ind                      => tbh_rec.hold_rel_ind,
5015             x_fee_paid_1                        => tbh_rec.fee_paid_1,
5016             x_fee_paid_2                        => tbh_rec.fee_paid_2);
5017 
5018           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5019             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug',' After insert into IGF_SL_AWD_DISB_LOC');
5020           END IF;
5021 
5022         END LOOP;
5023 
5024      END;
5025 
5026      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5027        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.debug','DML Complete');
5028      END IF;
5029 
5030 EXCEPTION
5031 WHEN OTHERS THEN
5032 
5033    IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
5034      fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.insert_records.exception','Exception ' || SQLERRM);
5035    END IF;
5036    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
5037    fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.INSERT_RECORDS');
5038 
5039    RAISE IMPORT_ERROR;
5040 
5041 END insert_records;
5042 
5043 
5044 
5045 PROCEDURE run (  errbuf         IN OUT NOCOPY VARCHAR2,
5046                  retcode        IN OUT NOCOPY NUMBER,
5047                  p_awd_yr       IN VARCHAR2,
5048                  p_batch_id     IN NUMBER,
5049                  p_delete_flag  IN VARCHAR2
5050                )
5051 IS
5052 --
5053 --    Created By : gmuralid
5054 --    Created On : 24-JUN-2003
5055 --    Purpose : This procedure is the main procedure invoked via concurrent program to import legacy data.
5056 --    Known limitations, enhancements or remarks :
5057 --    Change History :
5058 --    Who             When            What
5059 --    tsailaja		  15/Jan/2006     Bug 4947880 Added invocation of igf_aw_gen.set_org_id(NULL);
5060 --    bvisvana   07-July-2005   Bug # 4008991 - IGF_GR_BATCH_DOES_NOT_EXIST replaced by IGF_SL_GR_BATCH_DOES_NO_EXIST
5061 --    (reverse chronological order - newest change first
5062 --
5063 
5064 
5065      p_d_status               BOOLEAN;
5066      p_l_status               BOOLEAN;
5067      p_status                 BOOLEAN;
5068      lb_isir_flag             BOOLEAN := TRUE;
5069      g_error_flag             BOOLEAN := FALSE;
5070      lb_open_flag             BOOLEAN := FALSE;
5071 
5072      l_total_record_cnt       NUMBER;
5073      lb_base_id               NUMBER;
5074      g_error_record_cnt       NUMBER  := 0;
5075      l_success_record_cnt     NUMBER  := 0;
5076 
5077      result1                  VARCHAR2(1);
5078      result2                  VARCHAR2(1);
5079      l_award_year_status      VARCHAR2(80);
5080      l_batch_desc             VARCHAR2(80);
5081      l_chk_profile            VARCHAR2(1);
5082      l_chk_batch              VARCHAR2(1);
5083 
5084      l_cal_type               igf_ap_fa_base_rec_all.ci_cal_type%TYPE;
5085      l_seq_number             igf_ap_fa_base_rec_all.ci_sequence_number%TYPE;
5086      l_award_id               igf_aw_award_all.award_id%TYPE;
5087      l_fed_fund_cd            igf_aw_fund_cat.fed_fund_code%TYPE;
5088      lv_person_id             igs_pe_hz_parties.party_id%TYPE;
5089      lv_base_id               igf_ap_fa_base_rec_all.base_id%TYPE;
5090 
5091      l_interface              c_interface%ROWTYPE;
5092      l_disb_interface         c_disb_interface%ROWTYPE;
5093 
5094      CURSOR c_get_batch_desc(cp_batch_num NUMBER)
5095      IS
5096      SELECT batch_desc
5097      FROM   igf_ap_li_bat_ints
5098      WHERE  batch_num = cp_batch_num;
5099 
5100      l_get_batch_desc c_get_batch_desc%ROWTYPE;
5101 
5102      CURSOR c_get_alternate_code(cp_cal_type VARCHAR2,
5103                                  cp_seq_number NUMBER)
5104      IS
5105      SELECT alternate_code
5106      FROM   igs_ca_inst
5107      WHERE  cal_type = cp_cal_type
5108      AND    sequence_number = cp_seq_number;
5109 
5110      l_get_alternate_code  c_get_alternate_code%ROWTYPE;
5111 
5112 
5113      CURSOR c_award_det(cp_cal_type VARCHAR2,
5114                         cp_seq_number NUMBER)
5115      IS
5116      SELECT batch_year,
5117             award_year_status_code,
5118             sys_award_year
5119      FROM   igf_ap_batch_aw_map_v
5120      WHERE  ci_cal_type        = cp_cal_type
5121      AND    ci_sequence_number = cp_seq_number;
5122 
5123      l_award_det c_award_det%ROWTYPE;
5124 
5125 
5126      CURSOR c_act_isir(cp_base_id NUMBER)
5127      IS
5128      SELECT    1
5129      FROM      igf_ap_isir_matched   isir
5130      WHERE     isir.base_id          = cp_base_id
5131      AND       isir.active_isir      = 'Y';
5132 
5133      l_act_isir c_act_isir%ROWTYPE;
5134 
5135 
5136      CURSOR c_chk_loan_exist (cp_award_id NUMBER)
5137      IS
5138      SELECT
5139      rowid row_id,
5140      loan_id,
5141      award_id,
5142      loan_number,
5143      legacy_record_flag
5144      FROM
5145      igf_sl_loans_all
5146      WHERE
5147      award_id = cp_award_id;
5148 
5149      l_chk_loan_exist c_chk_loan_exist%ROWTYPE;
5150 
5151      CURSOR c_chk_loan_number (cp_loan_number VARCHAR2)
5152      IS
5153      SELECT
5154      rowid row_id,
5155      loan_id,
5156      award_id,
5157      loan_number,
5158      legacy_record_flag
5159      FROM
5160      igf_sl_loans_all
5161      WHERE
5162      loan_number = cp_loan_number;
5163 
5164      l_chk_loan_number c_chk_loan_number%ROWTYPE;
5165 
5166      CURSOR c_disb_det(cp_award_id NUMBER,
5167                        cp_disb_num NUMBER)
5168      IS
5169      SELECT 1
5170      FROM   igf_aw_awd_disb_all adisb
5171      WHERE  adisb.award_id   =  cp_award_id
5172      AND    adisb.disb_num   =  cp_disb_num;
5173 
5174      l_disb_det c_disb_det%ROWTYPE;
5175 
5176 BEGIN
5177 	 igf_aw_gen.set_org_id(NULL);
5178      errbuf             :=  NULL;
5179      retcode            :=  0;
5180      g_error            := '           ';
5181      l_chk_profile      := 'N';
5182      l_chk_batch        := 'Y';
5183      l_cal_type         :=  LTRIM(RTRIM(SUBSTR(p_awd_yr,1,10)));
5184      l_seq_number       :=  TO_NUMBER(SUBSTR(p_awd_yr,11));
5185 
5186      --
5187      -- Get batch description and display it
5188      --
5189      OPEN  c_get_batch_desc(p_batch_id);
5190      FETCH c_get_batch_desc INTO l_get_batch_desc;
5191      CLOSE c_get_batch_desc;
5192 
5193      l_batch_desc := p_batch_id ||' - ' || l_get_batch_desc.batch_desc ;
5194      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5195        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_batch_desc ' || l_batch_desc);
5196      END IF;
5197 
5198      l_get_alternate_code := NULL;
5199 
5200      OPEN  c_get_alternate_code(l_cal_type,l_seq_number);
5201      FETCH c_get_alternate_code INTO l_get_alternate_code;
5202      CLOSE c_get_alternate_code;
5203 
5204      log_parameters( l_get_alternate_code.alternate_code,p_batch_id,igf_ap_gen.get_lookup_meaning('IGF_AP_YES_NO',p_delete_flag));
5205 
5206      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5207        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_cal_type:'||l_cal_type ||' l_seq_number:'||l_seq_number);
5208      END IF;
5209 
5210      l_chk_profile      :=  igf_ap_gen.check_profile;
5211 
5212      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5213        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_chk_profile ' || l_chk_profile);
5214      END IF;
5215 
5216 
5217      IF l_chk_profile = 'N' THEN
5218           fnd_message.set_name('IGF','IGF_AP_LGCY_PROC_NOT_RUN');
5219           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5220           RETURN;
5221      END IF;
5222 
5223      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5224        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_get_alternate_code.alternate_code ' || l_get_alternate_code.alternate_code);
5225      END IF;
5226 
5227      IF (l_get_alternate_code.alternate_code IS NULL) THEN
5228         fnd_message.set_name('IGF','IGF_SL_NO_CALENDAR');
5229         fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5230         RETURN;
5231      END IF;
5232 
5233      l_chk_batch := igf_ap_gen.check_batch(p_batch_id,'LOANS');
5234      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5235        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_chk_batch ' || l_chk_batch);
5236      END IF;
5237 
5238      IF l_chk_batch = 'N' THEN
5239            -- Bug # 4008991
5240            fnd_message.set_name('IGF','IGF_SL_GR_BATCH_DOES_NO_EXIST');
5241            fnd_message.set_token('BATCH_ID',p_batch_id);
5242            fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5243            RETURN;
5244      END IF;
5245 
5246 
5247      OPEN  c_award_det(l_cal_type,l_seq_number);
5248      FETCH c_award_det INTO l_award_det;
5249      IF c_award_det%NOTFOUND THEN
5250            fnd_message.set_name('IGF','IGF_AP_AWD_YR_NOT_FOUND');
5251            fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5252            fnd_file.new_line(fnd_file.log,1);
5253            CLOSE c_award_det;
5254            RETURN;
5255      ELSE
5256        CLOSE c_award_det;
5257      END IF;
5258 
5259      l_award_year_status := l_award_det.award_year_status_code;
5260      g_sys_award_year    := l_award_det.sys_award_year;
5261 
5262      fnd_file.put_line(fnd_file.log,RPAD(g_award_year_status_desc,40)|| ' : '
5263                                                                 || igf_aw_gen.lookup_desc('IGF_AWARD_YEAR_STATUS',l_award_year_status));
5264      fnd_file.new_line(fnd_file.log,1);
5265      fnd_file.put_line(fnd_file.log, '--------------------------------------------------------');
5266 
5267      IF l_award_det.award_year_status_code NOT IN ('LD','O') THEN
5268           fnd_message.set_name('IGF','IGF_AP_LG_INVALID_STAT');
5269           fnd_message.set_token('AWARD_STATUS',igf_aw_gen.lookup_desc('IGF_AWARD_YEAR_STATUS',l_award_year_status));
5270           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5271           fnd_file.new_line(fnd_file.log,1);
5272           RETURN;
5273      END IF;
5274 
5275      IF (l_award_year_status = 'O') THEN
5276          lb_open_flag := TRUE;
5277          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5278            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','lb_open_flag : TRUE');
5279          END IF;
5280      ELSE
5281          lb_open_flag := FALSE;
5282          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5283            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','lb_open_flag : FALSE');
5284          END IF;
5285      END IF;
5286 
5287      FOR l_interface IN c_interface(p_batch_id,l_get_alternate_code.alternate_code,'U','R') LOOP
5288 
5289           BEGIN
5290 
5291               SAVEPOINT sp1;
5292 
5293               fnd_file.new_line(fnd_file.log,1);
5294               fnd_file.put_line(fnd_file.log,g_processing    ||
5295                                              ' '             ||
5296                                              g_person_number ||
5297                                              ' '             ||
5298                                              l_interface.person_number);
5299               --
5300               -- Check if person exists in OSS
5301               --
5302               igf_ap_gen.check_person(l_interface.person_number,l_cal_type,l_seq_number,lv_person_id,lv_base_id);
5303 
5304               IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5305                 fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','lv_person_id ' || lv_person_id||' lv_base_id ' || lv_base_id);
5306               END IF;
5307 
5308               IF lv_person_id IS NULL THEN
5309                   fnd_message.set_name('IGF','IGF_SL_LI_PERSON_NOT_FND');
5310                   fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5311                   fnd_file.new_line(fnd_file.log,1);
5312                   g_error_flag := TRUE;
5313               ELSE
5314                   IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5315                     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Pesron Number check passed');
5316                   END IF;
5317                   --
5318                   -- Check if base record present
5319                   --
5320                   IF lv_base_id IS NULL THEN
5321                       fnd_message.set_name('IGF','IGF_AP_FABASE_NOT_FOUND');
5322                       fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5323                       fnd_file.new_line(fnd_file.log,1);
5324                       g_error_flag := TRUE;
5325 
5326                   ELSE
5327                       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5328                         fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Base record check passed');
5329                       END IF;
5330                       --
5331                       -- Check if corresponding award is present in the awards table
5332                       --
5333                       fnd_file.put_line(fnd_file.log, g_processing ||
5334                                                       ' '          ||
5335                                                       g_loan_record||
5336                                                       ' '          ||
5337                                                       l_interface.loan_number_txt);
5338 
5339                       OPEN c_get_award(lv_base_id,l_interface.award_number_txt);
5340                       FETCH c_get_award INTO l_get_award;
5341                       IF (c_get_award%NOTFOUND) THEN
5342                           CLOSE c_get_award;
5343                           fnd_message.set_name('IGF','IGF_SL_CL_LI_NO_AW_REF');
5344                           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5345                           g_error_flag := TRUE;
5346                       ELSE
5347                           CLOSE c_get_award;
5348 
5349                           l_award_id  := l_get_award.award_id;
5350 
5351                           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5352                             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Award ID ' || l_award_id);
5353                             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Award Reference check passed');
5354                           END IF;
5355 
5356                           lb_isir_flag := TRUE;
5357 
5358                           IF ( lb_open_flag = TRUE ) THEN
5359                               --
5360                               -- Check for active isir only if open award year
5361                               --
5362                                OPEN  c_act_isir(lv_base_id);
5363                                FETCH c_act_isir INTO l_act_isir;
5364 
5365                                IF (c_act_isir%NOTFOUND) THEN
5366                                   CLOSE c_act_isir;
5367                                   fnd_message.set_name('IGF','IGF_AP_NO_ACTIVE_ISIR');
5368                                   fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5369                                   lb_isir_flag := FALSE;
5370                                   g_error_flag := TRUE;
5371                                ELSE
5372                                   CLOSE c_act_isir;
5373                                   IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5374                                     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Active ISIR for Open Award Year check passed');
5375                                   END IF;
5376                                END IF; -- c_act_isir IF
5377                           END IF; -- lb_open_flag IF
5378 
5379                           IF (lb_isir_flag = TRUE) THEN
5380 
5381                                  IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5382                                    fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Loan status and active isir check passed');
5383                                  END IF;
5384                                  --
5385                                  -- Check for the fed fund code and based on this check the person borrower relationship
5386                                  --
5387                                  l_fed_fund_cd := l_get_award.fed_fund_code;
5388                                  IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5389                                    fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Fed Fund Code ' || l_fed_fund_cd);
5390                                  END IF;
5391 
5392                                  IF (l_fed_fund_cd IS NULL) OR (l_fed_fund_cd NOT IN ('FLP','FLS','FLU','ALT','GPLUSFL'))
5393                                  THEN
5394                                       fnd_message.set_name('IGF','IGF_SL_CL_INV_FED_FND_CD');
5395                                       fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5396                                       g_error_flag    := TRUE;
5397                                  ELSE
5398                                       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5399                                         fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Person Borrower relationship check passed');
5400                                       END IF;
5401 
5402 
5403                                       validate_loan_orig_int(l_interface,
5404                                                              l_award_id,
5405                                                              p_status,
5406                                                              l_cal_type,
5407                                                              l_seq_number,
5408                                                              lb_open_flag,
5409                                                              l_fed_fund_cd);
5410 
5411                                       IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5412                                         fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','After calling validate_loan_orig_int');
5413                                       END IF;
5414                                  END IF; -- Fund Code IF
5415 
5416 
5417                                  IF p_status = FALSE OR g_error_flag THEN
5418                                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5419                                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Validation of interface record failed');
5420                                          END IF;
5421                                          g_error_flag := TRUE;
5422                                          write_logfile('O');
5423                                  ELSE
5424                                         OPEN  c_disb_interface(l_interface.ci_alternate_code,l_interface.person_number,l_interface.award_number_txt,l_interface.loan_number_txt);
5425                                         FETCH c_disb_interface INTO l_disb_interface;
5426 
5427                                         IF (c_disb_interface%NOTFOUND) THEN
5428                                             CLOSE c_disb_interface;
5429                                             p_d_status   := FALSE;
5430                                             g_error_flag := TRUE;
5431                                             fnd_message.set_name('IGF','IGF_SL_CL_NO_DIS_REC');
5432                                             fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5433                                         ELSE
5434                                             CLOSE c_disb_interface;
5435                                             l_disb_interface := NULL;
5436                                             p_d_status := TRUE;
5437                                             p_l_status := TRUE;
5438 
5439                                             FOR l_disb_interface IN
5440                                                   c_disb_interface(l_interface.ci_alternate_code,
5441                                                                    l_interface.person_number,
5442                                                                    l_interface.award_number_txt,
5443                                                                    l_interface.loan_number_txt)
5444                                             LOOP
5445 
5446                                                   fnd_file.put_line(fnd_file.log,LPAD(' ',11)
5447                                                   ||g_processing
5448                                                   ||' '
5449                                                   ||g_loan_disb
5450                                                   ||' '
5451                                                   ||l_disb_interface.disbursement_num);
5452 
5453                                                   OPEN c_disb_det(l_award_id,l_disb_interface.disbursement_num);
5454                                                   FETCH c_disb_det INTO l_disb_det;
5455 
5456                                                   IF (c_disb_det%NOTFOUND) THEN
5457                                                        CLOSE c_disb_det;
5458                                                        g_error_flag := TRUE;
5459                                                        fnd_message.set_name('IGF','IGF_SL_CL_DISB_REC_NO_EXIST');
5460                                                        fnd_message.set_token('DISB_NUM',l_disb_interface.disbursement_num);
5461                                                        fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5462                                                        p_d_status := FALSE;
5463                                                   ELSE
5464                                                        CLOSE c_disb_det;
5465                                                        --
5466                                                        -- Validate disb
5467                                                        --
5468                                                        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5469                                                          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Before calling validate_loan_disb');
5470                                                        END IF;
5471                                                        validate_loan_disb( l_disb_interface,l_award_id,p_d_status);
5472                                                        IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5473                                                          fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','After calling validate_loan_disb');
5474                                                        END IF;
5475 
5476                                                   END IF;
5477 
5478                                                   IF p_d_status  = FALSE THEN
5479                                                      p_l_status   := FALSE;
5480                                                      g_error_flag := TRUE;
5481                                                      write_logfile('D');
5482                                                   END IF;
5483 
5484                                             END LOOP;
5485 
5486                                             IF p_l_status = FALSE THEN
5487                                                     p_d_status := FALSE;
5488                                             END IF;
5489 
5490                                             IF p_d_status = FALSE THEN
5491                                                     IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5492                                                       fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Validation of Disbursement interface record failed');
5493                                                     END IF;
5494                                                     g_error_flag := TRUE;
5495                                             ELSIF p_d_status = TRUE AND p_status = TRUE THEN
5496 
5497                                                     OPEN c_chk_loan_exist(l_award_id);
5498                                                     FETCH c_chk_loan_exist INTO l_chk_loan_exist;
5499                                                     --
5500                                                     -- If interface record does not exist log message
5501                                                     --
5502                                                     IF  (c_chk_loan_exist%NOTFOUND) THEN
5503 
5504                                                        CLOSE c_chk_loan_exist;
5505 
5506                                                        IF (NVL(l_interface.import_record_type,'X') = 'U' ) THEN
5507                                                             fnd_message.set_name('IGF','IGF_AP_ORIG_REC_NOT_FOUND');
5508                                                             fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5509                                                             g_error_flag := TRUE;
5510                                                        END IF;
5511 
5512                                                     ELSIF (c_chk_loan_exist%FOUND) THEN
5513 
5514                                                        CLOSE c_chk_loan_exist;
5515 
5516                                                        IF (NVL(l_interface.import_record_type,'X') <> 'U' ) THEN
5517                                                                 fnd_message.set_name('IGF','IGF_SL_CL_RECORD_EXIST');
5518                                                                 fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5519                                                                 g_error_flag := TRUE;
5520                                                        END IF;
5521 
5522                                                        IF (NVL(l_chk_loan_exist.legacy_record_flag,'N') = 'N') THEN
5523                                                             fnd_message.set_name('IGF','IGF_SL_CL_UPD_OPEN');
5524                                                             fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5525                                                             g_error_flag := TRUE;
5526                                                        END IF;
5527 
5528                                                        IF (NVL(l_interface.import_record_type,'X') = 'U' ) THEN
5529                                                            IF l_chk_loan_exist.loan_number <> l_interface.loan_number_txt THEN
5530                                                                    fnd_message.set_name('IGF','IGF_SL_LI_LOAN_NUM_MISMTCH');
5531                                                                    fnd_message.set_token('SYS_LOAN_NUM',l_chk_loan_exist.loan_number);
5532                                                                    fnd_message.set_token('INT_LOAN_NUM',l_interface.loan_number_txt);
5533                                                                    fnd_message.set_token('AWARD_ID',l_award_id);
5534                                                                    fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5535                                                                    g_error_flag := TRUE;
5536                                                            END IF;
5537                                                        END IF;
5538 
5539                                                     END IF;
5540 
5541                                                     OPEN  c_chk_loan_number(l_interface.loan_number_txt);
5542                                                     FETCH c_chk_loan_number INTO l_chk_loan_number;
5543                                                     CLOSE c_chk_loan_number;
5544 
5545                                                     IF NVL(l_chk_loan_number.award_id,l_award_id) <> l_award_id THEN
5546                                                           fnd_message.set_name('IGF','IGF_SL_DUP_LOAN');
5547                                                           fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5548                                                           g_error_flag := TRUE;
5549                                                     END IF;
5550 
5551                                                     IF NOT g_error_flag AND l_chk_loan_exist.loan_id IS NOT NULL THEN
5552                                                       delete_records(l_chk_loan_exist.row_id,
5553                                                                      l_chk_loan_exist.loan_id,
5554                                                                      l_chk_loan_exist.loan_number);
5555                                                     END IF;
5556 
5557                                                     IF NOT g_error_flag THEN
5558                                                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5559                                                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Record to be updated deleted successfully');
5560                                                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_award_id    ' || l_award_id);
5561                                                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','l_fed_fund_cd ' || l_fed_fund_cd);
5562                                                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','lv_person_id  ' || lv_person_id);
5563                                                          END IF;
5564 
5565 
5566                                                          insert_records(l_interface,
5567                                                                         l_award_id,
5568                                                                         l_fed_fund_cd,
5569                                                                         lv_person_id);
5570                                                     END IF;
5571                                             END IF; -- PD STATUS IF
5572                                         END IF; -- DISBURSEMENT RECORDS FOUND IF
5573                                  END IF; -- P STATUS FLAG IF
5574                           END IF; -- ISIR PASS IF
5575                       END IF; -- AWARD REF IF
5576                   END IF; -- BASE ID IF
5577               END IF; -- PERSON ID IF
5578 
5579           EXCEPTION
5580 
5581           WHEN IMPORT_ERROR THEN
5582                g_error_flag  := TRUE;
5583                fnd_message.set_name('IGF','IGF_SL_CL_LI_UPD_FLD');
5584                fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5585                fnd_file.new_line(fnd_file.log,1);
5586                ROLLBACK TO sp1;
5587 
5588           WHEN OTHERS THEN
5589                RAISE;
5590           END;
5591 
5592           BEGIN  -- Block for updating Interface Record
5593 
5594                IF    g_error_flag = TRUE  OR
5595                      p_status     = FALSE OR
5596                      p_d_status   = FALSE
5597 
5598                      THEN
5599                      g_error_flag := FALSE;
5600                      --
5601                      -- update the legacy interface table column import_status to 'E'
5602                      --
5603                      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5604                        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Before update of interface table : status E');
5605                      END IF;
5606                      UPDATE
5607                      igf_sl_li_orig_ints
5608                      SET
5609                      import_status_type     = 'E',
5610                      last_update_date       = SYSDATE,
5611                      last_update_login      = fnd_global.login_id,
5612                      request_id             = fnd_global.conc_request_id,
5613                      program_id             = fnd_global.conc_program_id,
5614                      program_application_id = fnd_global.prog_appl_id,
5615                      program_update_date    = SYSDATE
5616                      WHERE
5617                      ROWID = l_interface.ROWID;
5618 
5619                      g_error_record_cnt := g_error_record_cnt + 1;
5620                      IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5621                        fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','After update of interface table : status E');
5622                      END IF;
5623                      fnd_file.new_line(fnd_file.log,1);
5624                      fnd_message.set_name('IGF','IGF_SL_LI_SKIPPING_AWD');
5625                      fnd_file.put_line(fnd_file.log,fnd_message.get);
5626                      fnd_file.new_line(fnd_file.log,1);
5627                ELSE
5628 
5629                     IF p_delete_flag = 'Y' THEN
5630 
5631                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5632                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Before deleting disb interface table record');
5633                          END IF;
5634 
5635                          DELETE
5636                          FROM
5637                          igf_sl_li_org_disb_ints
5638                          WHERE
5639                          ci_alternate_code = l_interface.ci_alternate_code AND
5640                          person_number     = l_interface.person_number     AND
5641                          award_number_txt  = l_interface.award_number_txt;
5642 
5643                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5644                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Before deleting orig interface table record');
5645                          END IF;
5646 
5647                          DELETE
5648                          FROM
5649                          igf_sl_li_orig_ints
5650                          WHERE
5651                          ROWID = l_interface.ROWID;
5652 
5653                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5654                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','After deleting orig interface table record');
5655                          END IF;
5656 
5657                     ELSE
5658                          --
5659                          -- update the legacy interface table column import_status to 'I'
5660                          --
5661 
5662                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5663                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Before update of interface table : status I');
5664                          END IF;
5665 
5666                          UPDATE
5667                          igf_sl_li_orig_ints
5668                          SET
5669                          import_status_type     = 'I',
5670                          last_update_date       = SYSDATE,
5671                          last_update_login      = fnd_global.login_id,
5672                          request_id             = fnd_global.conc_request_id,
5673                          program_id             = fnd_global.conc_program_id,
5674                          program_application_id = fnd_global.prog_appl_id,
5675                          program_update_date    = SYSDATE
5676                          WHERE
5677                          ROWID = l_interface.ROWID;
5678 
5679                          IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5680                            fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','After update of interface table : status I');
5681                          END IF;
5682 
5683                     END IF;
5684 
5685                     l_success_record_cnt := l_success_record_cnt + 1;
5686                     fnd_message.set_name('IGF','IGF_SL_LI_IMP_SUCCES');
5687                     fnd_file.put_line(fnd_file.log, fnd_message.get);
5688                     fnd_file.new_line(fnd_file.log,1);
5689 
5690                END IF;
5691 
5692                IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
5693                  fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_sl_cl_imp_pkg.run.debug','Before COMMIT');
5694                END IF;
5695 
5696                COMMIT;
5697                fnd_file.new_line(fnd_file.log,1);
5698           END;
5699 
5700 
5701      END LOOP;
5702 
5703      IF l_success_record_cnt = 0 AND g_error_record_cnt = 0 THEN
5704        fnd_message.set_name('IGF','IGF_SL_CL_LI_NO_RECORDS');
5705        fnd_message.set_token('AID_YR', l_get_alternate_code.alternate_code);
5706        fnd_message.set_token('BATCH_ID',p_batch_id);
5707        fnd_file.put_line(fnd_file.log,RPAD(g_error,11) || fnd_message.get);
5708        RETURN;
5709      END IF;
5710 
5711      l_total_record_cnt := l_success_record_cnt + g_error_record_cnt;
5712      fnd_file.put_line(fnd_file.output,' ' );
5713      fnd_file.put_line(fnd_file.output, RPAD('-',50,'-'));
5714      fnd_file.put_line(fnd_file.output,' ' );
5715      fnd_file.put_line(fnd_file.output, RPAD(igf_ap_gen.get_lookup_meaning('IGF_GE_PARAMETERS','RECORDS_PROCESSED'), 40)  || ' : ' || l_total_record_cnt);
5716      fnd_file.put_line(fnd_file.output, RPAD(igf_ap_gen.get_lookup_meaning('IGF_GE_PARAMETERS','RECORDS_SUCCESSFUL'), 40) || ' : ' || l_success_record_cnt);
5717      fnd_file.put_line(fnd_file.output, RPAD(igf_ap_gen.get_lookup_meaning('IGF_GE_PARAMETERS','RECORDS_REJECTED'), 40)   || ' : ' || g_error_record_cnt);
5718      fnd_file.put_line(fnd_file.output,' ' );
5719      fnd_file.put_line(fnd_file.output, RPAD('-',50,'-'));
5720      fnd_file.put_line(fnd_file.output,' ' );
5721 
5722 
5723 EXCEPTION
5724 
5725      WHEN others THEN
5726      ROLLBACK;
5727 
5728      IF fnd_log.level_exception >= fnd_log.g_current_runtime_level THEN
5729        fnd_log.string(fnd_log.level_exception,'igf.plsql.igf_sl_cl_imp_pkg.run.exception','Exception'|| SQLERRM);
5730      END IF;
5731      fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
5732      fnd_message.set_token('NAME','IGF_SL_CL_LI_IMP_PKG.RUN');
5733      fnd_file.put_line(fnd_file.log,fnd_message.get);
5734      retcode := 2;
5735      errbuf  := fnd_message.get;
5736      igs_ge_msg_stack.conc_exception_hndl;
5737  END run;
5738 
5739 END IGF_SL_CL_LI_IMP_PKG;