DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_SL_CL_CREATE_CHG

Source


1 PACKAGE BODY igf_sl_cl_create_chg AS
2 /* $Header: IGFSL22B.pls 120.1 2006/04/21 04:07:10 bvisvana noship $ */
3 ------------------------------------------------------------------
4 --Created by  : Sanil Madathil, Oracle IDC
5 --Date created: 10 October 2004
6 --
7 --Purpose:
8 -- Invoked     : Through Table Handlers of Disbursement and Loans table
9 -- Function    : To create Change Records for CommonLine Release 4 version Loans.
10 --               Four routines defined in this package would be invoked for changes
11 --               IN award or loan information for CommonLine Release 4 version Loans
12 --               that are "Accepted"
13 --
14 --Known limitations/enhancements and/or remarks:
15 --
16 --Change History:
17 --Who         When            What
18 --
19 -------------------------------------------------------------------
20 
21 -- procedure for enabling statement level logging
22 PROCEDURE log_to_fnd ( p_v_module IN VARCHAR2,
23                        p_v_string IN VARCHAR2
24                      );
25 -- function to return the change send details
26 FUNCTION get_sl_clchsn_dtls ( p_rowid ROWID) RETURN igf_sl_clchsn_dtls%ROWTYPE;
27 
28 PROCEDURE create_loan_chg_rec(p_new_loan_rec    IN igf_sl_loans_all%ROWTYPE,
29                               p_b_return_status OUT NOCOPY BOOLEAN,
30                               p_v_message_name  OUT NOCOPY VARCHAR2
31                               ) AS
32 ------------------------------------------------------------------
33 --Created by  : Sanil Madathil, Oracle IDC
34 --Date created: 10 October 2004
35 --
36 -- Purpose:
37 -- Invoked     : From loans table handler after update row of loans table
38 -- Function    :
39 --
40 -- Parameters  : p_new_loan_rec    : IN parameter. Required.
41 --               p_b_return_status : OUT parmeter.
42 --               p_v_message_name  : OUT parameter
43 --
44 --
45 --Known limitations/enhancements and/or remarks:
46 --
47 --Change History:
48 --Who         When            What
49 ------------------------------------------------------------------
50 
51 CURSOR  c_igf_sl_lor (cp_n_loan_id igf_sl_loans_all.loan_id%TYPE) IS
52 SELECT  lor.prc_type_code
53        ,lor.cl_rec_status
54 FROM    igf_sl_lor_all lor
55 WHERE   loan_id = cp_n_loan_id;
56 
57 rec_c_igf_sl_lor c_igf_sl_lor%ROWTYPE;
58 
59 CURSOR  c_igf_sl_cl_resp_r1(cp_v_loan_number igf_sl_loans_all.loan_number%TYPE) IS
60 SELECT  resp.loan_per_begin_date
61        ,resp.loan_per_end_date
62 FROM    igf_sl_cl_resp_r1_all resp
63 WHERE   resp.loan_number = cp_v_loan_number
64 AND     resp.cl_rec_status IN ('B','G')
65 AND     resp.prc_type_code IN ('GO','GP')
66 AND     resp.cl_version_code = 'RELEASE-4'
67 ORDER BY clrp1_id DESC;
68 
69 rec_c_igf_sl_cl_resp_r1 c_igf_sl_cl_resp_r1%ROWTYPE;
70 
71 TYPE ref_CurclchsnTyp IS REF CURSOR;
72 c_igf_sl_clchsn_dtls ref_CurclchsnTyp;
73 
74 rec_c_igf_sl_clchsn_dtls igf_sl_clchsn_dtls%ROWTYPE;
75 
76 l_d_loan_per_begin_date   igf_sl_cl_resp_r1_all.loan_per_begin_date%TYPE;
77 l_d_loan_per_end_date     igf_sl_cl_resp_r1_all.loan_per_end_date%TYPE;
78 l_d_res_loan_per_begin_dt igf_sl_cl_resp_r1_all.loan_per_begin_date%TYPE;
79 l_d_res_loan_per_end_dt   igf_sl_cl_resp_r1_all.loan_per_end_date%TYPE;
80 l_n_cl_version            igf_sl_cl_setup_all.cl_version%TYPE;
81 l_v_loan_status           igf_sl_loans_all.loan_status%TYPE;
82 l_n_clchgsnd_id           igf_sl_clchsn_dtls.clchgsnd_id%TYPE;
83 l_n_award_id              igf_aw_award_all.award_id%TYPE;
84 l_v_loan_number           igf_sl_loans_all.loan_number%TYPE;
85 l_n_loan_id               igf_sl_loans_all.loan_id%TYPE;
86 l_c_cl_rec_status         igf_sl_lor_all.cl_rec_status%TYPE;
87 l_v_prc_type_code         igf_sl_lor_all.prc_type_code%TYPE;
88 l_v_sqlstmt               VARCHAR2(32767);
89 l_v_rowid                 ROWID;
90 l_v_message_name          fnd_new_messages.message_name%TYPE;
91 l_b_return_status         BOOLEAN;
92 l_d_message_tokens        igf_sl_cl_chg_prc.token_tab%TYPE;
93 
94 e_valid_edits     EXCEPTION;
95 e_resource_busy   EXCEPTION;
96 PRAGMA EXCEPTION_INIT(e_resource_busy,-00054);
97 
98 BEGIN
99 
100   SAVEPOINT igf_sl_cl_create_chg_sp;
101   log_to_fnd(p_v_module => 'create_loan_chg_rec',
102              p_v_string => ' Entered Procedure create_loan_chg_rec: The input parameters are '          ||
103                            ' new reference of Award Id : '          ||p_new_loan_rec.award_id           ||
104                            ' new reference of Loan Id : '           ||p_new_loan_rec.loan_id            ||
105                            ' new reference of Loan Number : '       ||p_new_loan_rec.loan_number        ||
106                            ' new reference of Loan per begin date: '||p_new_loan_rec.loan_per_begin_date||
107                            ' new reference of Loan per end date: '  ||p_new_loan_rec.loan_per_end_date  ||
108                            ' new reference of Loan status: '        ||p_new_loan_rec.loan_status
109             );
110 
111   l_n_award_id            := p_new_loan_rec.award_id;
112   l_n_loan_id             := p_new_loan_rec.loan_id;
113   l_v_loan_number         := p_new_loan_rec.loan_number;
114   l_v_loan_status         := p_new_loan_rec.loan_status;
115   l_d_loan_per_begin_date := p_new_loan_rec.loan_per_begin_date;
116   l_d_loan_per_end_date   := p_new_loan_rec.loan_per_end_date;
117 
118   -- get the loan version for the input award id
119   l_n_cl_version  := igf_sl_award.get_loan_cl_version(p_n_award_id => l_n_award_id);
120   -- get the processing type code and loan record status for the input loan id
121   OPEN  c_igf_sl_lor(cp_n_loan_id => l_n_loan_id);
122   FETCH c_igf_sl_lor INTO rec_c_igf_sl_lor;
123   CLOSE c_igf_sl_lor;
124 
125   l_v_prc_type_code := rec_c_igf_sl_lor.prc_type_code;
126   l_c_cl_rec_status := rec_c_igf_sl_lor.cl_rec_status;
127 
128   -- get the latest Guaranteed Response for Begin Date for the input loan number
129   -- if no records are found change record would not be created. The control is returned back
130   -- to the calling program.
131 
132   OPEN  c_igf_sl_cl_resp_r1 (cp_v_loan_number =>l_v_loan_number);
133   FETCH c_igf_sl_cl_resp_r1 INTO l_d_res_loan_per_begin_dt,l_d_res_loan_per_end_dt;
134   IF c_igf_sl_cl_resp_r1%NOTFOUND THEN
135     CLOSE c_igf_sl_cl_resp_r1 ;
136     log_to_fnd(p_v_module => 'create_loan_chg_rec.',
137                p_v_string => ' No Response record found for loan number: ' ||l_v_loan_number
138               );
139     p_b_return_status := FALSE;
140     p_v_message_name  := NULL;
141     RETURN;
142   END IF;
143   CLOSE c_igf_sl_cl_resp_r1 ;
144   log_to_fnd(p_v_module => 'create_loan_chg_rec',
145              p_v_string => ' Response record found for loan number: ' ||l_v_loan_number           ||
146                            ' response loan per begin dt           : ' ||l_d_res_loan_per_begin_dt ||
147                            ' response loan per end dt             : ' ||l_d_res_loan_per_end_dt
148             );
149   -- Check if the change record should be created or not
150   -- Change Record would be created only if
151   -- The version = CommonLine Release 4 Version Loan,
152   -- Loan Status = Accepted
153   -- Loan Record Status is Guaranteed or Accepted
154   -- Processing Type Code is GP or GO
155   -- The information is different from the latest Guaranteed Response Received for the Loan
156   IF (l_n_cl_version = 'RELEASE-4' AND
157       l_v_loan_status = 'A' AND
158       l_v_prc_type_code IN ('GO','GP') AND
159       l_c_cl_rec_status IN ('B','G'))
160   THEN
161     -- verify if latest Guaranteed Response has a different value for Begin Date
162     -- start of code logic for loan per begin date changes
163     IF (l_d_res_loan_per_begin_dt <> l_d_loan_per_begin_date)
164     THEN
165 
166         log_to_fnd(p_v_module => 'create_loan_chg_rec',
167                    p_v_string => ' Verifying if existing change record is to be updated or inserted ' ||
168                                  ' Loan Number                : ' || l_v_loan_number                  ||
169                                  ' cl version                 : ' || l_n_cl_version                   ||
170                                  ' loan status                : ' || l_v_loan_status                  ||
171                                  ' Processing Type            : ' || l_v_prc_type_code                ||
172                                  ' Loan Record Status         : ' || l_c_cl_rec_status                ||
173                                  ' response loan per begin dt : ' || l_d_res_loan_per_begin_dt        ||
174                                  ' new loan per begin dt      : ' || l_d_loan_per_begin_date          ||
175                                  ' change_field_code          : ' || 'LOAN_PER_BEGIN_DT'
176                   );
177         -- verify if the existing change record is to be updated or inserted
178       l_v_sqlstmt := 'SELECT chdt.ROWID row_id '                             ||
179                      'FROM   igf_sl_clchsn_dtls chdt '                       ||
180                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
181                      'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
182                      'AND    chdt.old_date = :cp_d_resp_begin_dt '           ||
183                      'AND    chdt.change_field_code = ''LOAN_PER_BEGIN_DT'' '||
184                      'AND    chdt.change_code_txt = ''A'' '                  ||
185                      'AND    chdt.change_record_type_txt = ''07'' ';
186 
187       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_d_res_loan_per_begin_dt;
188       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
189       IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
190         CLOSE c_igf_sl_clchsn_dtls;
191         l_v_rowid       := NULL;
192         l_n_clchgsnd_id := NULL;
193         log_to_fnd(p_v_module => 'create_loan_chg_rec',
194                    p_v_string => ' New Change record is Created  '                                                           ||
195                                  ' Change_field_code : ' ||'LOAN_PER_BEGIN_DT'                                               ||
196                                  ' Change record type: ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change' ||
197                                  ' Change code       : ' ||'A - Loan Period Change '
198                   );
199 
200         igf_sl_clchsn_dtls_pkg.insert_row
201         (
202           x_rowid                      => l_v_rowid,
203           x_clchgsnd_id                => l_n_clchgsnd_id,
204           x_award_id                   => l_n_award_id,
205           x_loan_number_txt            => l_v_loan_number,
206           x_cl_version_code            => l_n_cl_version,
207           x_change_field_code          => 'LOAN_PER_BEGIN_DT',
208           x_change_record_type_txt     => '07',
209           x_change_code_txt            => 'A',
210           x_status_code                => 'R',
211           x_status_date                => TRUNC(SYSDATE),
212           x_response_status_code       => NULL,
213           x_old_value_txt              => NULL,
214           x_new_value_txt              => NULL,
215           x_old_date                   => l_d_res_loan_per_begin_dt,
216           x_new_date                   => l_d_loan_per_begin_date,
217           x_old_amt                    => NULL,
218           x_new_amt                    => NULL,
219           x_disbursement_number        => NULL,
220           x_disbursement_date          => NULL,
221           x_change_issue_code          => NULL,
222           x_disbursement_cancel_date   => NULL,
223           x_disbursement_cancel_amt    => NULL,
224           x_disbursement_revised_amt   => NULL,
225           x_disbursement_revised_date  => NULL,
226           x_disbursement_reissue_code  => NULL,
227           x_disbursement_reinst_code   => NULL,
228           x_disbursement_return_amt    => NULL,
229           x_disbursement_return_date   => NULL,
230           x_disbursement_return_code   => NULL,
231           x_post_with_disb_return_amt  => NULL,
232           x_post_with_disb_return_date => NULL,
233           x_post_with_disb_return_code => NULL,
234           x_prev_with_disb_return_amt  => NULL,
235           x_prev_with_disb_return_date => NULL,
236           x_school_use_txt             => NULL,
237           x_lender_use_txt             => NULL,
238           x_guarantor_use_txt          => NULL,
239           x_validation_edit_txt        => NULL,
240           x_send_record_txt            => NULL
241         );
242         -- invoke validation edits to validate the change record. The validation checks if
243         -- all the required fields are populated or not for a change record
244         log_to_fnd(p_v_module => ' create_loan_chg_rec ',
245                    p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
246                   );
247         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
248                                         p_b_return_status => l_b_return_status,
249                                         p_v_message_name  => l_v_message_name,
250                                         p_t_message_tokens => l_d_message_tokens
251                                        );
252 
253         IF NOT(l_b_return_status) THEN
254           log_to_fnd(p_v_module => 'create_loan_chg_rec ',
255                      p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
256                     );
257           RAISE e_valid_edits;
258         END IF;
259         p_b_return_status := TRUE;
260         p_v_message_name  := NULL;
261         log_to_fnd(p_v_module => 'create_loan_chg_rec',
262                    p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
263                   );
264       ELSE
265         CLOSE c_igf_sl_clchsn_dtls;
266         rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
267         log_to_fnd(p_v_module => 'create_loan_chg_rec',
268                    p_v_string => ' Change record is updated  '                                                               ||
269                                  ' Change_field_code : ' ||'LOAN_PER_BEGIN_DT'                                               ||
270                                  ' Change record type: ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change' ||
271                                  ' Change code       : ' ||'A - Loan Period Change '
272                   );
273         igf_sl_clchsn_dtls_pkg.update_row
274         (
275           x_rowid                      => l_v_rowid                                           ,
276           x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
277           x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
278           x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
279           x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
280           x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
281           x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
282           x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
283           x_status_code                => 'R'                                                 ,
284           x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
285           x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
286           x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
287           x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
288           x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
289           x_new_date                   => l_d_loan_per_begin_date                             ,
290           x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
291           x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
292           x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
293           x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
294           x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
295           x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
296           x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
297           x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
298           x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
299           x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
300           x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
301           x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
302           x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
303           x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
304           x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
305           x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
306           x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
307           x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
308           x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
309           x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
310           x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
311           x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
312           x_validation_edit_txt        => NULL                                                ,
313           x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
314         );
315         -- invoke validation edits to validate the change record. The validation checks if
316         -- all the required fields are populated or not for a change record
317         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
318                    p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
319                   );
320         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
321                                         p_b_return_status => l_b_return_status,
322                                         p_v_message_name  => l_v_message_name,
323                                         p_t_message_tokens => l_d_message_tokens
324                                         );
325 
326         IF NOT(l_b_return_status) THEN
327           -- substring of the out bound parameter l_v_message_name is carried
328           -- out since it can expect either IGS OR IGF message
329           fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
330             igf_sl_cl_chg_prc.parse_tokens(
331               p_t_message_tokens => l_d_message_tokens);
332 /*
333           FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
334              fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
335           END LOOP;
336 */
337           log_to_fnd(p_v_module => 'create_loan_chg_rec ',
338                      p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
339                      );
340           log_to_fnd(p_v_module => 'create_loan_chg_rec',
341                      p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
342                      );
343           igf_sl_clchsn_dtls_pkg.update_row
344           (
345             x_rowid                      => l_v_rowid                                           ,
346             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
347             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
348             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
349             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
350             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
351             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
352             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
353             x_status_code                => 'N'                                                 ,
354             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
355             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
356             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
357             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
358             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
359             x_new_date                   => l_d_loan_per_begin_date                             ,
360             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
361             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
362             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
363             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
364             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
365             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
366             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
367             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
368             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
369             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
370             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
371             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
372             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
373             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
374             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
375             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
376             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
377             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
378             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
379             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
380             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
381             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
382             x_validation_edit_txt        => fnd_message.get                                     ,
383             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
384           );
385           log_to_fnd(p_v_module => 'create_loan_chg_rec',
386                      p_v_string => ' updated the status of change send record to Not Ready to Send'
387                      );
388 
389         END IF;
390         p_b_return_status := TRUE;
391         p_v_message_name  := NULL;
392 
393       END IF;
394     -- verify if changes have been reverted back
395     ELSIF (l_d_res_loan_per_begin_dt = l_d_loan_per_begin_date)
396     THEN
397         log_to_fnd(p_v_module => 'create_loan_chg_rec',
398                    p_v_string => ' Verifying if  change record is to be deleted or not '      ||
399                                  ' cl version                 : ' ||l_n_cl_version            ||
400                                  ' loan status                : ' ||l_v_loan_status           ||
401                                  ' Processing Type            : ' ||l_v_prc_type_code         ||
402                                  ' Loan Record Status         : ' ||l_c_cl_rec_status         ||
403                                  ' response loan per begin dt : ' ||l_d_res_loan_per_begin_dt ||
404                                  ' new loan per begin dt      : ' ||l_d_loan_per_begin_date   ||
405                                  ' change_field_code          : ' ||'LOAN_PER_BEGIN_DT'
406                   );
407         -- verify if the existing change record is to be deleted
408       l_v_sqlstmt := 'SELECT chdt.ROWID row_id '                             ||
409                      'FROM   igf_sl_clchsn_dtls chdt '                       ||
410                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
411                      'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
412                      'AND    chdt.old_date = :cp_d_new_begin_dt '            ||
413                      'AND    chdt.change_field_code = ''LOAN_PER_BEGIN_DT'' '||
414                      'AND    chdt.change_code_txt = ''A'' '                  ||
415                      'AND    chdt.change_record_type_txt = ''07'' ';
416 
417       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_d_loan_per_begin_date;
418       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
419       IF c_igf_sl_clchsn_dtls%FOUND THEN
420         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
421                    p_v_string => ' Change record to be deleted '     ||
422                                  ' Award Id    : '    ||l_n_award_id ||
423                                  ' loan number : '    ||l_v_loan_number
424                   );
425         igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
426         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
427                    p_v_string => ' Change record deleted successfully' ||
428                                  ' Award Id    : '    ||l_n_award_id   ||
429                                  ' loan number : '    ||l_v_loan_number
430                   );
431       END IF;
432       CLOSE c_igf_sl_clchsn_dtls;
433       p_b_return_status := TRUE;
434       p_v_message_name  := NULL;
435     END IF;
436     -- end of code logic for loan per begin date changes
437     -- start of code logic for loan per end date changes
438     -- verify if latest Guaranteed Response has a different value for End Date
439     IF (l_d_res_loan_per_end_dt <> l_d_loan_per_end_date)
440     THEN
441       log_to_fnd(p_v_module => 'create_loan_chg_rec ',
442                  p_v_string => ' Verifying if existing change record is to be updated or inserted ' ||
443                                ' cl version               : ' ||l_n_cl_version                      ||
444                                ' loan status              : ' ||l_v_loan_status                     ||
445                                ' Processing Type          : ' ||l_v_prc_type_code                   ||
446                                ' Loan Record Status       : ' ||l_c_cl_rec_status                   ||
447                                ' response loan per end dt : ' ||l_d_res_loan_per_end_dt             ||
448                                ' new loan per end dt      : ' ||l_d_loan_per_end_date               ||
449                                ' change_field_code        : ' ||'LOAN_PER_END_DT'
450                   );
451         -- verify if the existing change record is to be updated or inserted
452       l_v_sqlstmt := 'SELECT chdt.ROWID row_id '                           ||
453                      'FROM   igf_sl_clchsn_dtls chdt '                     ||
454                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '    ||
455                      'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
456                      'AND    chdt.old_date = :cp_d_resp_end_dt '           ||
457                      'AND    chdt.change_field_code = ''LOAN_PER_END_DT'' '||
458                      'AND    chdt.change_code_txt = ''A'' '                ||
459                      'AND    chdt.change_record_type_txt = ''07'' ';
460       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_d_res_loan_per_end_dt;
461       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
462       IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
463         CLOSE c_igf_sl_clchsn_dtls;
464         l_v_rowid       := NULL;
465         l_n_clchgsnd_id := NULL;
466         log_to_fnd(p_v_module => 'create_loan_chg_rec  ',
467                    p_v_string => ' New Change record is Created'                                                             ||
468                                  ' Change_field_code : ' ||'LOAN_PER_END_DT'                                                 ||
469                                  ' Change record type: ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change' ||
470                                  ' Change code       : ' ||'A - Loan Period Change '
471                   );
472         igf_sl_clchsn_dtls_pkg.insert_row
473         (
474           x_rowid                      => l_v_rowid                    ,
475           x_clchgsnd_id                => l_n_clchgsnd_id              ,
476           x_award_id                   => p_new_loan_rec.award_id      ,
477           x_loan_number_txt            => p_new_loan_rec.loan_number   ,
478           x_cl_version_code            => l_n_cl_version               ,
479           x_change_field_code          => 'LOAN_PER_END_DT'            ,
480           x_change_record_type_txt     => '07'                         ,
481           x_change_code_txt            => 'A'                          ,
482           x_status_code                => 'R'                          ,
483           x_status_date                => TRUNC(SYSDATE)               ,
484           x_response_status_code       => NULL                         ,
485           x_old_value_txt              => NULL                         ,
486           x_new_value_txt              => NULL                         ,
487           x_old_date                   => l_d_res_loan_per_end_dt      ,
488           x_new_date                   => l_d_loan_per_end_date        ,
489           x_old_amt                    => NULL                         ,
490           x_new_amt                    => NULL                         ,
491           x_disbursement_number        => NULL                         ,
492           x_disbursement_date          => NULL                         ,
493           x_change_issue_code          => NULL                         ,
494           x_disbursement_cancel_date   => NULL                         ,
495           x_disbursement_cancel_amt    => NULL                         ,
496           x_disbursement_revised_amt   => NULL                         ,
497           x_disbursement_revised_date  => NULL                         ,
498           x_disbursement_reissue_code  => NULL                         ,
499           x_disbursement_reinst_code   => NULL                         ,
500           x_disbursement_return_amt    => NULL                         ,
501           x_disbursement_return_date   => NULL                         ,
502           x_disbursement_return_code   => NULL                         ,
503           x_post_with_disb_return_amt  => NULL                         ,
504           x_post_with_disb_return_date => NULL                         ,
505           x_post_with_disb_return_code => NULL                         ,
506           x_prev_with_disb_return_amt  => NULL                         ,
507           x_prev_with_disb_return_date => NULL                         ,
508           x_school_use_txt             => NULL                         ,
509           x_lender_use_txt             => NULL                         ,
510           x_guarantor_use_txt          => NULL                         ,
511           x_validation_edit_txt        => NULL                         ,
512           x_send_record_txt            => NULL
513         );
514         -- invoke validation edits to validate the change record. The validation checks if
515         -- all the required fields are populated or not for a change record
516         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
517                    p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
518                   );
519         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
520                                         p_b_return_status => l_b_return_status,
521                                         p_v_message_name  => l_v_message_name,
522                                         p_t_message_tokens => l_d_message_tokens
523                                         );
524 
525         IF NOT(l_b_return_status) THEN
526           log_to_fnd(p_v_module => 'create_loan_chg_rec ',
527                      p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
528                     );
529           RAISE e_valid_edits;
530         END IF;
531         p_b_return_status := TRUE;
532         p_v_message_name  := NULL;
533         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
534                    p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
535                   );
536       ELSE
537         CLOSE c_igf_sl_clchsn_dtls;
538         rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
539         log_to_fnd(p_v_module => 'create_loan_chg_rec  ',
540                    p_v_string => ' Change record is updated '                                                                 ||
541                                  ' Change_field_code  : ' ||'LOAN_PER_END_DT'                                                 ||
542                                  ' Change record type : ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change' ||
543                                  ' Change code        : ' ||'A - Loan Period Change '
544                   );
545         igf_sl_clchsn_dtls_pkg.update_row
546         (
547           x_rowid                      => l_v_rowid                                           ,
548           x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
549           x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
550           x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
551           x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
552           x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
553           x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
554           x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
555           x_status_code                => 'R'                                                 ,
556           x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
557           x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
558           x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
559           x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
560           x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
561           x_new_date                   => l_d_loan_per_end_date                               ,
562           x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
563           x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
564           x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
565           x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
566           x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
567           x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
568           x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
569           x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
570           x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
571           x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
572           x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
573           x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
574           x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
575           x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
576           x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
577           x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
578           x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
579           x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
580           x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
581           x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
582           x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
583           x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
584           x_validation_edit_txt        => NULL                                                ,
585           x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
586         );
587         -- invoke validation edits to validate the change record. The validation checks if
588         -- all the required fields are populated or not for a change record
589         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
590                    p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
591                   );
592         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
593                                         p_b_return_status => l_b_return_status,
594                                         p_v_message_name  => l_v_message_name,
595                                         p_t_message_tokens => l_d_message_tokens
596                                         );
597 
598         IF NOT(l_b_return_status) THEN
599           log_to_fnd(p_v_module => 'create_loan_chg_rec ',
600                      p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
601                     );
602           -- substring of the out bound parameter l_v_message_name is carried
603           -- out since it can expect either IGS OR IGF message
604           fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
605           igf_sl_cl_chg_prc.parse_tokens(
606             p_t_message_tokens => l_d_message_tokens);
607 /*
608           FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
609              fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
610           END LOOP;
611 */
612           log_to_fnd(p_v_module => 'create_loan_chg_rec',
613                      p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
614                      );
615           igf_sl_clchsn_dtls_pkg.update_row
616           (
617             x_rowid                      => l_v_rowid                                           ,
618             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
619             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
620             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
621             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
622             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
623             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
624             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
625             x_status_code                => 'N'                                                 ,
626             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
627             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
628             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
629             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
630             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
631             x_new_date                   => l_d_loan_per_end_date                               ,
632             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
633             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
634             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
635             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
636             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
637             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
638             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
639             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
640             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
641             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
642             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
643             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
644             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
645             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
646             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
647             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
648             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
649             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
650             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
651             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
652             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
653             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
654             x_validation_edit_txt        => fnd_message.get                                     ,
655             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
656           );
657           log_to_fnd(p_v_module => 'create_loan_chg_rec',
658                      p_v_string => ' updated the status of change send record to Not Ready to Send'
659                      );
660         END IF;
661         p_b_return_status := TRUE;
662         p_v_message_name  := NULL;
663       END IF;
664     ELSIF (l_d_res_loan_per_end_dt = l_d_loan_per_end_date) THEN
665       log_to_fnd(p_v_module => 'create_loan_chg_rec',
666                  p_v_string => ' Verifying if  change record is to be deleted or not '    ||
667                                ' cl version               : ' ||l_n_cl_version            ||
668                                ' loan status              : ' ||l_v_loan_status           ||
669                                ' Processing Type          : ' ||l_v_prc_type_code         ||
670                                ' Loan Record Status       : ' ||l_c_cl_rec_status         ||
671                                ' response loan per end dt : ' ||l_d_res_loan_per_end_dt   ||
672                                ' new loan per end dt      : ' ||l_d_loan_per_end_date     ||
673                                ' change_field_code        : ' ||'LOAN_PER_END_DT'
674                   );
675       l_v_sqlstmt := 'SELECT  chdt.ROWID '                                 ||
676                      'FROM   igf_sl_clchsn_dtls chdt '                     ||
677                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '    ||
678                      'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
679                      'AND    chdt.old_date = :cp_d_new_end_dt '            ||
680                      'AND    chdt.change_field_code = ''LOAN_PER_END_DT'' '||
681                      'AND    chdt.change_code_txt = ''A'' '                ||
682                      'AND    chdt.change_record_type_txt = ''07'' ';
683       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_d_loan_per_end_date;
684       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
685       IF c_igf_sl_clchsn_dtls%FOUND THEN
686         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
687                    p_v_string => ' Change record to be deleted '    ||
688                                  ' Award Id    : ' ||l_n_award_id   ||
689                                  ' loan number : ' ||l_v_loan_number
690                   );
691         igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
692         log_to_fnd(p_v_module => 'create_loan_chg_rec ',
693                    p_v_string => ' Change record deleted successfully '  ||
694                                  ' Award Id    : ' ||l_n_award_id        ||
695                                  ' loan number : ' ||l_v_loan_number
696                   );
697       END IF;
698       CLOSE c_igf_sl_clchsn_dtls;
699       p_b_return_status := TRUE;
700       p_v_message_name  := NULL;
701     END IF;
702   END IF;--end of if condition for checking if change record should be created or not
703 
704 EXCEPTION
705   WHEN e_resource_busy THEN
706     ROLLBACK TO igf_sl_cl_create_chg_sp;
707     log_to_fnd(p_v_module => 'create_loan_chg_rec',
708                p_v_string => ' e resource busy exception ' || SQLERRM
709                );
710     p_b_return_status := FALSE;
711     p_v_message_name  := 'IGS_GE_RECORD_LOCKED';
712     RETURN;
713   WHEN e_valid_edits THEN
714     ROLLBACK TO igf_sl_cl_create_chg_sp;
715     log_to_fnd(p_v_module => 'create_loan_chg_rec',
716                p_v_string => ' e_valid_edits exception handler. change record validation raised errors '||l_v_message_name
717               );
718     p_b_return_status := FALSE;
719     p_v_message_name  := l_v_message_name;
720     igf_sl_cl_chg_prc.g_message_tokens := l_d_message_tokens;
721     RETURN;
722   WHEN OTHERS THEN
723     ROLLBACK TO igf_sl_cl_create_chg_sp;
724     log_to_fnd(p_v_module => 'create_loan_chg_rec',
725                p_v_string => ' when others exception handler' ||SQLERRM
726               );
727     fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
728     fnd_message.set_token('NAME','igf_sl_cl_create_chg.create_loan_chg_rec');
729     igs_ge_msg_stack.add;
730     app_exception.raise_exception;
731 
732 END create_loan_chg_rec;
733 
734 
735 PROCEDURE create_lor_chg_rec ( p_new_lor_rec IN igf_sl_lor_all%ROWTYPE,
736                                p_b_return_status OUT NOCOPY BOOLEAN,
737                                p_v_message_name  OUT NOCOPY VARCHAR2
738                              ) AS
739 ------------------------------------------------------------------
740 --Created by  : Sanil Madathil, Oracle IDC
741 --Date created: 10 October 2004
742 --
743 -- Purpose:
744 -- Invoked     : From lor table handler after update row of lor table
745 -- Function    :
746 --
747 -- Parameters  : p_new_lor_rec     : IN parameter. Required.
748 --               p_b_return_status : OUT parmeter.
749 --               p_v_message_name  : OUT parameter
750 --
751 --
752 --Known limitations/enhancements and/or remarks:
753 --
754 --Change History:
755 --Who         When            What
756 ------------------------------------------------------------------
757 
758 CURSOR  c_igf_sl_loans (cp_n_loan_id igf_sl_loans_all.loan_id%TYPE) IS
759 SELECT  lar.loan_number
760        ,lar.loan_status
761        ,lar.award_id
762 FROM    igf_sl_loans_all lar
763 WHERE   loan_id = cp_n_loan_id;
764 
765 rec_c_igf_sl_loans c_igf_sl_loans%ROWTYPE;
766 
767 CURSOR c_igf_sl_cl_resp_r1(cp_v_loan_number igf_sl_loans_all.loan_number%TYPE) IS
768 SELECT  resp.anticip_compl_date
769        ,resp.grade_level_code
770 FROM    igf_sl_cl_resp_r1_all resp
771 WHERE   resp.loan_number = cp_v_loan_number
772 AND     resp.cl_rec_status IN ('B','G')
773 AND     resp.prc_type_code IN ('GO','GP')
774 AND     resp.cl_version_code = 'RELEASE-4'
775 ORDER BY clrp1_id DESC;
776 
777 TYPE ref_CurclchsnTyp IS REF CURSOR;
778 c_igf_sl_clchsn_dtls ref_CurclchsnTyp;
779 
780 rec_c_igf_sl_clchsn_dtls igf_sl_clchsn_dtls%ROWTYPE;
781 
782 l_d_resp_anticip_compl_dt    igf_sl_cl_resp_r1_all.anticip_compl_date%TYPE;
783 l_d_lor_anticip_compl_dt     igf_sl_lor_all.anticip_compl_date%TYPE;
784 l_v_resp_grade_level_cd      igf_sl_lor_all.override_grade_level_code%TYPE;
785 l_v_ovr_grade_level_cd       igf_sl_lor_all.override_grade_level_code%TYPE;
786 l_n_cl_version               igf_sl_cl_setup_all.cl_version%TYPE;
787 l_v_loan_status              igf_sl_loans_all.loan_status%TYPE;
788 l_n_clchgsnd_id              igf_sl_clchsn_dtls.clchgsnd_id%TYPE;
789 l_v_sqlstmt                  VARCHAR2(32767);
790 l_v_rowid                    ROWID;
791 l_v_message_name             fnd_new_messages.message_name%TYPE;
792 l_b_return_status            BOOLEAN;
793 l_c_cl_rec_status            igf_sl_lor_all.cl_rec_status%TYPE;
794 l_v_prc_type_code            igf_sl_lor_all.prc_type_code%TYPE;
795 l_n_award_id                 igf_aw_award_all.award_id%TYPE;
796 l_v_loan_number              igf_sl_loans_all.loan_number%TYPE;
797 
798 e_valid_edits     EXCEPTION;
799 e_resource_busy   EXCEPTION;
800 l_d_message_tokens        igf_sl_cl_chg_prc.token_tab%TYPE;
801 PRAGMA EXCEPTION_INIT(e_resource_busy,-00054);
802 
803 BEGIN
804   SAVEPOINT igf_sl_cl_create_chg_lor_sp;
805 
806   log_to_fnd(p_v_module => 'create_lor_chg_rec',
807              p_v_string => ' Entered Procedure create_lor_chg_rec: The input parameters are '                  ||
808                            ' new reference of origination id     : ' ||p_new_lor_rec.origination_id            ||
809                            ' new reference of Loan Id            : ' ||p_new_lor_rec.loan_id                   ||
810                            ' new reference of anticip compl date : ' ||p_new_lor_rec.anticip_compl_date        ||
811                            ' new reference of ovr grade level    : ' ||p_new_lor_rec.override_grade_level_code ||
812                            ' new reference of Processing Type    : ' ||p_new_lor_rec.prc_type_code             ||
813                            ' new reference of Loan Record Status : ' ||p_new_lor_rec.cl_rec_status
814             );
815   -- get the loan number , loan status and award id from sl loan table for the input loan id
816 
817   OPEN  c_igf_sl_loans(cp_n_loan_id => p_new_lor_rec.loan_id);
818   FETCH c_igf_sl_loans INTO rec_c_igf_sl_loans;
819   CLOSE c_igf_sl_loans;
820 
821   -- get the loan version for the input award id
822   l_n_award_id             := rec_c_igf_sl_loans.award_id;
823   l_v_loan_number          := rec_c_igf_sl_loans.loan_number;
824   l_v_loan_status          := rec_c_igf_sl_loans.loan_status;
825   l_n_cl_version           := igf_sl_award.get_loan_cl_version(p_n_award_id => l_n_award_id);
826   l_v_prc_type_code        := p_new_lor_rec.prc_type_code;
827   l_c_cl_rec_status        := p_new_lor_rec.cl_rec_status;
828   l_d_lor_anticip_compl_dt := p_new_lor_rec.anticip_compl_date;
829   --bvisvana #bug 5091388   if override grade level is null then take grade level ride
830   l_v_ovr_grade_level_cd   := NVL(p_new_lor_rec.override_grade_level_code,p_new_lor_rec.grade_level_code);
831 
832   -- get the latest Guaranteed Response for anticipated completion date for the input loan number
833   -- if no records are found change record would not be created. The control is returned back
834   -- to the calling program.
835 
836   OPEN  c_igf_sl_cl_resp_r1 (cp_v_loan_number => l_v_loan_number);
837   FETCH c_igf_sl_cl_resp_r1 INTO l_d_resp_anticip_compl_dt,l_v_resp_grade_level_cd;
838   IF c_igf_sl_cl_resp_r1%NOTFOUND THEN
839     CLOSE c_igf_sl_cl_resp_r1 ;
840     log_to_fnd(p_v_module => 'create_lor_chg_rec',
841                p_v_string => ' No Response record found for loan number: ' ||l_v_loan_number
842               );
843     p_b_return_status := FALSE;
844     p_v_message_name  := NULL;
845     RETURN;
846   END IF;
847   CLOSE c_igf_sl_cl_resp_r1 ;
848   log_to_fnd(p_v_module => 'create_lor_chg_rec',
849              p_v_string => ' Response record found for loan number: ' ||l_v_loan_number           ||
850                            ' response anticip compl date          : ' ||l_d_resp_anticip_compl_dt ||
851                            ' response grade level                 : ' ||l_v_resp_grade_level_cd
852             );
853   -- Check if the change record should be created or not
854   -- Change Record would be created only if
855   -- The version = CommonLine Release 4 Version Loan,
856   -- Loan Status = Accepted
857   -- Loan Record Status is Guaranteed or Accepted
858   -- Processing Type Code is GP or GO
859   -- The information is different from the latest Guaranteed Response Received for the Loan
860   log_to_fnd(p_v_module => 'create_lor_chg_rec ',
861              p_v_string => ' cl version                  : ' ||l_n_cl_version                   ||
862                            ' loan status                 : ' ||l_v_loan_status                  ||
863                            ' Processing Type             : ' ||l_v_prc_type_code                ||
864                            ' Loan Record Status          : ' ||l_c_cl_rec_status
865            );
866   IF (l_n_cl_version = 'RELEASE-4' AND
867       l_v_loan_status = 'A' AND
868       l_v_prc_type_code IN ('GO','GP') AND
869       l_c_cl_rec_status IN ('B','G'))
870   THEN
871         log_to_fnd(p_v_module => ' create_lor_chg_rec ',
872                    p_v_string => ' Verifying if existing change record is to be updated or inserted ' ||
873                                  ' cl version                  : ' ||l_n_cl_version                   ||
874                                  ' loan status                 : ' ||l_v_loan_status                  ||
875                                  ' Processing Type             : ' ||l_v_prc_type_code                ||
876                                  ' Loan Record Status          : ' ||l_c_cl_rec_status                ||
877                                  ' response anticip compl date : ' ||l_d_resp_anticip_compl_dt        ||
878                                  ' new anticip compl date      : ' ||l_d_lor_anticip_compl_dt         ||
879                                  ' change_field_code           : ' ||'ANTICIP_COML_DT'
880                  );
881      -- verify if latest Guaranteed Response has a different value for anticipated completion date
882      --  start of code logic for anticip compl dt changes
883     IF (l_d_resp_anticip_compl_dt <> l_d_lor_anticip_compl_dt)
884     THEN
885 
886       l_v_sqlstmt := 'SELECT chdt.ROWID row_id '                             ||
887                      'FROM   igf_sl_clchsn_dtls chdt '                       ||
888                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
889                      'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
890                      'AND    chdt.old_date = :cp_d_resp_anticip_dt '         ||
891                      'AND    chdt.change_field_code = ''ANTICIP_COML_DT'' '  ||
892                      'AND    chdt.change_code_txt = ''C'' '                  ||
893                      'AND    chdt.change_record_type_txt = ''07'' ';
894       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_d_resp_anticip_compl_dt;
895       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
896       IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
897         CLOSE c_igf_sl_clchsn_dtls;
898         l_v_rowid       := NULL;
899         l_n_clchgsnd_id := NULL;
900         log_to_fnd(p_v_module => 'create_lor_chg_rec  ',
901                    p_v_string => ' New Change record is Created '                                                             ||
902                                  ' Change_field_code  : ' ||'ANTICIP_COML_DT'                                                 ||
903                                  ' Change record type : ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change' ||
904                                  ' Change code        : ' ||'C - Anticipated Completion Date Change '
905                   );
906         igf_sl_clchsn_dtls_pkg.insert_row
907         (
908           x_rowid                      => l_v_rowid                    ,
909           x_clchgsnd_id                => l_n_clchgsnd_id              ,
910           x_award_id                   => l_n_award_id                 ,
911           x_loan_number_txt            => l_v_loan_number              ,
912           x_cl_version_code            => l_n_cl_version               ,
913           x_change_field_code          => 'ANTICIP_COML_DT'            ,
914           x_change_record_type_txt     => '07'                         ,
915           x_change_code_txt            => 'C'                          ,
916           x_status_code                => 'R'                          ,
917           x_status_date                => TRUNC(SYSDATE)               ,
918           x_response_status_code       => NULL                         ,
919           x_old_value_txt              => NULL                         ,
920           x_new_value_txt              => NULL                         ,
921           x_old_date                   => l_d_resp_anticip_compl_dt    ,
922           x_new_date                   => l_d_lor_anticip_compl_dt     ,
923           x_old_amt                    => NULL                         ,
924           x_new_amt                    => NULL                         ,
925           x_disbursement_number        => NULL                         ,
926           x_disbursement_date          => NULL                         ,
927           x_change_issue_code          => NULL                         ,
928           x_disbursement_cancel_date   => NULL                         ,
929           x_disbursement_cancel_amt    => NULL                         ,
930           x_disbursement_revised_amt   => NULL                         ,
931           x_disbursement_revised_date  => NULL                         ,
932           x_disbursement_reissue_code  => NULL                         ,
933           x_disbursement_reinst_code   => NULL                         ,
934           x_disbursement_return_amt    => NULL                         ,
935           x_disbursement_return_date   => NULL                         ,
936           x_disbursement_return_code   => NULL                         ,
937           x_post_with_disb_return_amt  => NULL                         ,
938           x_post_with_disb_return_date => NULL                         ,
939           x_post_with_disb_return_code => NULL                         ,
940           x_prev_with_disb_return_amt  => NULL                         ,
941           x_prev_with_disb_return_date => NULL                         ,
942           x_school_use_txt             => NULL                         ,
943           x_lender_use_txt             => NULL                         ,
944           x_guarantor_use_txt          => NULL                         ,
945           x_validation_edit_txt        => NULL                         ,
946           x_send_record_txt            => NULL
947         );
948         -- invoke validation edits to validate the change record. The validation checks if
949         -- all the required fields are populated or not for a change record
950         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
951                    p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
952                   );
953         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
954                                         p_b_return_status => l_b_return_status,
955                                         p_v_message_name  => l_v_message_name,
956                                         p_t_message_tokens => l_d_message_tokens
957                                         );
958 
959         IF NOT(l_b_return_status) THEN
960           log_to_fnd(p_v_module => ' create_lor_chg_rec ',
961                      p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
962                     );
963           RAISE e_valid_edits;
964         END IF;
965         p_b_return_status := TRUE;
966         p_v_message_name  := NULL;
967       ELSE
968         CLOSE c_igf_sl_clchsn_dtls;
969         rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
970         igf_sl_clchsn_dtls_pkg.update_row
971         (
972           x_rowid                      => l_v_rowid                                           ,
973           x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
974           x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
975           x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
976           x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
977           x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
978           x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
979           x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
980           x_status_code                => 'R'                                                 ,
981           x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
982           x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
983           x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
984           x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
985           x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
986           x_new_date                   => l_d_lor_anticip_compl_dt                            ,
987           x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
988           x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
989           x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
990           x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
991           x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
992           x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
993           x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
994           x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
995           x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
996           x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
997           x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
998           x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
999           x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
1000           x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
1001           x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
1002           x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
1003           x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
1004           x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
1005           x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
1006           x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
1007           x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
1008           x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
1009           x_validation_edit_txt        => NULL                                                ,
1010           x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
1011         );
1012         -- invoke validation edits to validate the change record. The validation checks if
1013         -- all the required fields are populated or not for a change record
1014         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1015                    p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
1016                   );
1017         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
1018                                         p_b_return_status => l_b_return_status,
1019                                         p_v_message_name  => l_v_message_name,
1020                                         p_t_message_tokens => l_d_message_tokens
1021                                         );
1022 
1023         IF NOT(l_b_return_status) THEN
1024           log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1025                      p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
1026                     );
1027           -- substring of the out bound parameter l_v_message_name is carried
1028           -- out since it can expect either IGS OR IGF message
1029           fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
1030           igf_sl_cl_chg_prc.parse_tokens(
1031             p_t_message_tokens => l_d_message_tokens);
1032 /*
1033           FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
1034              fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
1035           END LOOP;
1036 */
1037           log_to_fnd(p_v_module => 'create_lor_chg_rec',
1038                      p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
1039                      );
1040           igf_sl_clchsn_dtls_pkg.update_row
1041           (
1042             x_rowid                      => l_v_rowid                                           ,
1043             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
1044             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
1045             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
1046             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
1047             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
1048             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
1049             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
1050             x_status_code                => 'N'                                                 ,
1051             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
1052             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
1053             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
1054             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
1055             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
1056             x_new_date                   => l_d_lor_anticip_compl_dt                            ,
1057             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
1058             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
1059             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
1060             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
1061             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
1062             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
1063             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
1064             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
1065             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
1066             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
1067             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
1068             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
1069             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
1070             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
1071             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
1072             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
1073             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
1074             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
1075             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
1076             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
1077             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
1078             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
1079             x_validation_edit_txt        => fnd_message.get                                     ,
1080             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
1081           );
1082           log_to_fnd(p_v_module => 'create_lor_chg_rec',
1083                      p_v_string => ' updated the status of change send record to Not Ready to Send'
1084                      );
1085         END IF;
1086         p_b_return_status := TRUE;
1087         p_v_message_name  := NULL;
1088         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1089                    p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
1090                   );
1091       END IF;
1092     -- Verify if the existing change record values have been reverted back
1093     ELSIF (l_d_resp_anticip_compl_dt = l_d_lor_anticip_compl_dt) THEN
1094         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1095                    p_v_string => ' Verifying if  change record is to be deleted or not '       ||
1096                                  ' cl version                  : ' ||l_n_cl_version            ||
1097                                  ' loan status                 : ' ||l_v_loan_status           ||
1098                                  ' Processing Type             : ' ||l_v_prc_type_code         ||
1099                                  ' Loan Record Status          : ' ||l_c_cl_rec_status         ||
1100                                  ' response anticip compl date : ' ||l_d_resp_anticip_compl_dt ||
1101                                  ' new anticip compl date      : ' ||l_d_lor_anticip_compl_dt  ||
1102                                  ' change_field_code           : ' ||'ANTICIP_COML_DT'
1103                  );
1104       l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                            ||
1105                      'FROM   igf_sl_clchsn_dtls chdt '                       ||
1106                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
1107                      'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
1108                      'AND    chdt.old_date = :cp_d_new_anticip_dt '          ||
1109                      'AND    chdt.change_field_code = ''ANTICIP_COML_DT'' '  ||
1110                      'AND    chdt.change_code_txt = ''C'' '                  ||
1111                      'AND    chdt.change_record_type_txt = ''07'' ';
1112       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_d_lor_anticip_compl_dt;
1113       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1114       IF c_igf_sl_clchsn_dtls%FOUND THEN
1115         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1116                    p_v_string => ' Change record to be deleted '    ||
1117                                  ' Award Id    : ' || l_n_award_id  ||
1118                                  ' loan number : ' || l_v_loan_number
1119                   );
1120         igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
1121         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1122                    p_v_string => ' Change record deleted successfully ' ||
1123                                  ' Award Id    : ' || l_n_award_id      ||
1124                                  ' loan number : ' || l_v_loan_number
1125                   );
1126       END IF;
1127       CLOSE c_igf_sl_clchsn_dtls;
1128       p_b_return_status := TRUE;
1129       p_v_message_name  := NULL;
1130     END IF;
1131    --  end of code logic for anticip compl dt changes
1132    --  start of code logic for grade level changes
1133    -- Verify if grade level is different from the one in response record
1134    IF (l_v_resp_grade_level_cd <> l_v_ovr_grade_level_cd)
1135    THEN
1136         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1137                    p_v_string => ' Verifying if existing change record is to be updated or inserted ' ||
1138                                  ' cl version               : ' ||l_n_cl_version            ||
1139                                  ' loan status              : ' ||l_v_loan_status           ||
1140                                  ' Processing Type          : ' ||l_v_prc_type_code         ||
1141                                  ' Loan Record Status       : ' ||l_c_cl_rec_status         ||
1142                                  ' response grade level cd  : ' ||l_v_resp_grade_level_cd   ||
1143                                  ' new grade level cd       : ' ||l_v_ovr_grade_level_cd    ||
1144                                  ' change_field_code        : ' ||'GRADE_LEVEL_CODE'
1145                   );
1146       -- verify if the existing change record is to be updated or inserted
1147       l_v_sqlstmt := 'SELECT chdt.ROWID row_id '                             ||
1148                      'FROM   igf_sl_clchsn_dtls chdt '                       ||
1149                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
1150                      'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
1151                      'AND    chdt.old_value_txt = :cp_v_resp_grade_lvl_cd '  ||
1152                      'AND    chdt.change_field_code = ''GRADE_LEVEL_CODE'' ' ||
1153                      'AND    chdt.change_code_txt          = ''B'' '         ||
1154                      'AND    chdt.change_record_type_txt   = ''07'' ';
1155 
1156       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_v_resp_grade_level_cd;
1157       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1158       IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
1159         CLOSE c_igf_sl_clchsn_dtls;
1160         l_v_rowid       := NULL;
1161         l_n_clchgsnd_id := NULL;
1162         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1163                    p_v_string => ' New Change record is Created '                                                             ||
1164                                  ' Change_field_code  : ' ||'GRADE_LEVEL_CODE'                                                ||
1165                                  ' Change record type : ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change' ||
1166                                  ' Change code        : ' ||'B - Grade Level Change '
1167                   );
1168         igf_sl_clchsn_dtls_pkg.insert_row
1169         (
1170           x_rowid                      => l_v_rowid                  ,
1171           x_clchgsnd_id                => l_n_clchgsnd_id            ,
1172           x_award_id                   => l_n_award_id               ,
1173           x_loan_number_txt            => l_v_loan_number            ,
1174           x_cl_version_code            => l_n_cl_version             ,
1175           x_change_field_code          => 'GRADE_LEVEL_CODE'         ,
1176           x_change_record_type_txt     => '07'                       ,
1177           x_change_code_txt            => 'B'                        ,
1178           x_status_code                => 'R'                        ,
1179           x_status_date                => TRUNC(SYSDATE)             ,
1180           x_response_status_code       => NULL                       ,
1181           x_old_value_txt              => l_v_resp_grade_level_cd    ,
1182           x_new_value_txt              => l_v_ovr_grade_level_cd     ,
1183           x_old_date                   => NULL                       ,
1184           x_new_date                   => NULL                       ,
1185           x_old_amt                    => NULL                       ,
1186           x_new_amt                    => NULL                       ,
1187           x_disbursement_number        => NULL                       ,
1188           x_disbursement_date          => NULL                       ,
1189           x_change_issue_code          => NULL                       ,
1190           x_disbursement_cancel_date   => NULL                       ,
1191           x_disbursement_cancel_amt    => NULL                       ,
1192           x_disbursement_revised_amt   => NULL                       ,
1193           x_disbursement_revised_date  => NULL                       ,
1194           x_disbursement_reissue_code  => NULL                       ,
1195           x_disbursement_reinst_code   => NULL                       ,
1196           x_disbursement_return_amt    => NULL                       ,
1197           x_disbursement_return_date   => NULL                       ,
1198           x_disbursement_return_code   => NULL                       ,
1199           x_post_with_disb_return_amt  => NULL                       ,
1200           x_post_with_disb_return_date => NULL                       ,
1201           x_post_with_disb_return_code => NULL                       ,
1202           x_prev_with_disb_return_amt  => NULL                       ,
1203           x_prev_with_disb_return_date => NULL                       ,
1204           x_school_use_txt             => NULL                       ,
1205           x_lender_use_txt             => NULL                       ,
1206           x_guarantor_use_txt          => NULL                       ,
1207           x_validation_edit_txt        => NULL                       ,
1208           x_send_record_txt            => NULL
1209         );
1210         -- invoke validation edits to validate the change record. The validation checks if
1211         -- all the required fields are populated or not for a change record
1212         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1213                    p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
1214                   );
1215         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
1216                                         p_b_return_status => l_b_return_status,
1217                                         p_v_message_name  => l_v_message_name,
1218                                         p_t_message_tokens => l_d_message_tokens
1219                                         );
1220 
1221         IF NOT(l_b_return_status) THEN
1222           log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1223                      p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
1224                     );
1225           RAISE e_valid_edits;
1226         END IF;
1227         p_b_return_status := TRUE;
1228         p_v_message_name  := NULL;
1229         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1230                    p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
1231                   );
1232       ELSE
1233         CLOSE c_igf_sl_clchsn_dtls;
1234         rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
1235         log_to_fnd(p_v_module => 'create_lor_chg_rec  ',
1236                    p_v_string => ' Change record is updated '                                                                ||
1237                                  ' Change_field_code  : ' ||'GRADE_LEVEL_CODE'                                               ||
1238                                  ' Change record type : ' ||'07 - Loan Period/Grade Level/Anticipated Completion Date Change'||
1239                                  ' Change code        : ' ||'B - Grade Level Change '
1240                   );
1241         igf_sl_clchsn_dtls_pkg.update_row
1242         (
1243           x_rowid                      => l_v_rowid                                           ,
1244           x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
1245           x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
1246           x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
1247           x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
1248           x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
1249           x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
1250           x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
1251           x_status_code                => 'R'                                                 ,
1252           x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
1253           x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
1254           x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
1255           x_new_value_txt              => l_v_ovr_grade_level_cd                              ,
1256           x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
1257           x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
1258           x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
1259           x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
1260           x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
1261           x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
1262           x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
1263           x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
1264           x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
1265           x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
1266           x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
1267           x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
1268           x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
1269           x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
1270           x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
1271           x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
1272           x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
1273           x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
1274           x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
1275           x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
1276           x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
1277           x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
1278           x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
1279           x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
1280           x_validation_edit_txt        => NULL                                                ,
1281           x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
1282         );
1283         -- invoke validation edits to validate the change record. The validation checks if
1284         -- all the required fields are populated or not for a change record
1285         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1286                    p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
1287                   );
1288         igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
1289                                         p_b_return_status => l_b_return_status,
1290                                         p_v_message_name  => l_v_message_name,
1291                                         p_t_message_tokens => l_d_message_tokens
1292                                         );
1293 
1294         IF NOT(l_b_return_status) THEN
1295            log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1296                       p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
1297                      );
1298           -- substring of the out bound parameter l_v_message_name is carried
1299           -- out since it can expect either IGS OR IGF message
1300           fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
1301           igf_sl_cl_chg_prc.parse_tokens(
1302             p_t_message_tokens => l_d_message_tokens);
1303 /*
1304           FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
1305              fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
1306           END LOOP;
1307 */
1308           log_to_fnd(p_v_module => 'create_lor_chg_rec',
1309                      p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
1310                      );
1311           igf_sl_clchsn_dtls_pkg.update_row
1312           (
1313             x_rowid                      => l_v_rowid                                           ,
1314             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
1315             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
1316             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
1317             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
1318             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
1319             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
1320             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
1321             x_status_code                => 'N'                                                 ,
1322             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
1323             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
1324             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
1325             x_new_value_txt              => l_v_ovr_grade_level_cd                              ,
1326             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
1327             x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
1328             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
1329             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
1330             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
1331             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
1332             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
1333             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
1334             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
1335             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
1336             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
1337             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
1338             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
1339             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
1340             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
1341             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
1342             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
1343             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
1344             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
1345             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
1346             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
1347             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
1348             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
1349             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
1350             x_validation_edit_txt        => fnd_message.get                                     ,
1351             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
1352           );
1353           log_to_fnd(p_v_module => 'create_lor_chg_rec',
1354                      p_v_string => ' updated the status of change send record to Not Ready to Send'
1355                      );
1356         END IF;
1357         p_b_return_status := TRUE;
1358         p_v_message_name  := NULL;
1359       END IF;
1360 
1361    ELSIF (l_v_resp_grade_level_cd = l_v_ovr_grade_level_cd)
1362    THEN
1363         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1364                    p_v_string => ' Verifying if  change record is to be deleted or not '   ||
1365                                  ' cl version              : ' ||l_n_cl_version            ||
1366                                  ' loan status             : ' ||l_v_loan_status           ||
1367                                  ' Processing Type         : ' ||l_v_prc_type_code         ||
1368                                  ' Loan Record Status      : ' ||l_c_cl_rec_status         ||
1369                                  ' response grade level cd : ' ||l_v_resp_grade_level_cd   ||
1370                                  ' new grade level cd      : ' ||l_v_ovr_grade_level_cd    ||
1371                                  ' change_field_code       : ' ||'GRADE_LEVEL_CODE'
1372                   );
1373       l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                            ||
1374                      'FROM   igf_sl_clchsn_dtls chdt '                       ||
1375                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
1376                      'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
1377                      'AND    chdt.old_value_txt = :cp_v_new_grade_lvl_cd '   ||
1378                      'AND    chdt.change_field_code = ''GRADE_LEVEL_CODE'' ' ||
1379                      'AND    chdt.change_code_txt        = ''B'' '           ||
1380                      'AND    chdt.change_record_type_txt = ''07'' ';
1381 
1382       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_v_ovr_grade_level_cd;
1383       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1384       IF c_igf_sl_clchsn_dtls%FOUND THEN
1385         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1386                    p_v_string => ' Change record to be deleted'     ||
1387                                  ' Award Id    : ' ||l_n_award_id   ||
1388                                  ' loan number : ' ||l_v_loan_number
1389                   );
1390         igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
1391         log_to_fnd(p_v_module => 'create_lor_chg_rec ',
1392                    p_v_string => ' Change record deleted successfully' ||
1393                                  ' Award Id    : ' ||l_n_award_id      ||
1394                                  ' loan number : ' ||l_v_loan_number
1395                   );
1396       END IF;
1397       CLOSE c_igf_sl_clchsn_dtls;
1398       p_b_return_status := TRUE;
1399       p_v_message_name  := NULL;
1400    END IF;
1401    --  end of code logic for grade level changes
1402   END IF; --end of if condition for checking if change record should be created or not
1403 
1404 EXCEPTION
1405   WHEN e_resource_busy THEN
1406     ROLLBACK TO igf_sl_cl_create_chg_lor_sp;
1407     log_to_fnd(p_v_module => 'create_lor_chg_rec',
1408                p_v_string => ' e resource busy exception '||SQLERRM
1409                );
1410     p_b_return_status := FALSE;
1411     p_v_message_name  := 'IGS_GE_RECORD_LOCKED';
1412     RETURN;
1413   WHEN e_valid_edits THEN
1414     ROLLBACK TO igf_sl_cl_create_chg_lor_sp;
1415     log_to_fnd(p_v_module => 'create_lor_chg_rec',
1416                p_v_string => ' e_valid_edits exception handler. change record validation raised errors '||l_v_message_name
1417               );
1418     p_b_return_status := FALSE;
1419     p_v_message_name  := l_v_message_name;
1420     igf_sl_cl_chg_prc.g_message_tokens := l_d_message_tokens;
1421     RETURN;
1422   WHEN OTHERS THEN
1423     ROLLBACK TO igf_sl_cl_create_chg_lor_sp;
1424     log_to_fnd(p_v_module => 'create_lor_chg_rec',
1425                p_v_string => ' when others exception handler'||SQLERRM
1426               );
1427     fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
1428     fnd_message.set_token('NAME','igf_sl_cl_create_chg.create_lor_chg_rec');
1429     igs_ge_msg_stack.add;
1430     app_exception.raise_exception;
1431 
1432 END create_lor_chg_rec;
1433 
1434 PROCEDURE create_awd_chg_rec ( p_n_award_id      IN igf_aw_award_all.award_id%TYPE,
1435                                p_n_old_amount    IN NUMBER,
1436                                p_n_new_amount    IN NUMBER,
1437                                p_v_chg_type      IN VARCHAR2,
1438                                p_b_return_status OUT NOCOPY BOOLEAN,
1439                                p_v_message_name  OUT NOCOPY VARCHAR2
1440                                ) AS
1441 ------------------------------------------------------------------
1442 --Created by  : Sanil Madathil, Oracle IDC
1443 --Date created: 10 October 2004
1444 --
1445 -- Purpose:
1446 -- Invoked     : From awards table handler after update row of awards table
1447 -- Function    :
1448 --
1449 -- Parameters  : p_n_award_id      : IN parameter. Required.
1450 --               p_n_old_amount    : IN parameter. Required.
1451 --               p_n_new_amount    : IN parameter. Required.
1452 --               p_v_chg_type      : IN parameter. Required.
1453 --               p_b_return_status : OUT parmeter.
1454 --               p_v_message_name  : OUT parameter
1455 --
1456 --
1457 --Known limitations/enhancements and/or remarks:
1458 --
1459 --Change History:
1460 --Who         When            What
1461 ------------------------------------------------------------------
1462 
1463 CURSOR  c_igf_sl_lorlar(cp_n_award_id igf_aw_award_all.award_id%TYPE) IS
1464 SELECT  lar.loan_number
1465        ,lar.loan_status
1466        ,lor.prc_type_code
1467        ,lor.cl_rec_status
1468 FROM    igf_sl_lor_all lor
1469        ,igf_sl_loans_all lar
1470 WHERE  lor.loan_id  = lar.loan_id
1471 AND    lar.award_id = cp_n_award_id;
1472 
1473 rec_c_igf_sl_lorlar c_igf_sl_lorlar%ROWTYPE;
1474 
1475 CURSOR  c_igf_aw_awd_disb (cp_n_award_id igf_aw_award_all.award_id%TYPE) IS
1476 SELECT  adisb.disb_num
1477 FROM    igf_aw_awd_disb_all adisb
1478 WHERE   adisb.award_id = cp_n_award_id
1479 AND     NVL(adisb.fund_status,'N') = 'Y';
1480 
1481 CURSOR c_igf_sl_cl_resp_r1(cp_v_loan_number igf_sl_loans_all.loan_number%TYPE) IS
1482 SELECT resp.guarantee_amt
1483 FROM   igf_sl_cl_resp_r1_all resp
1484 WHERE  resp.loan_number = cp_v_loan_number
1485 AND    resp.cl_rec_status IN ('B','G')
1486 AND    resp.prc_type_code IN ('GO','GP')
1487 AND    resp.cl_version_code = 'RELEASE-4'
1488 ORDER BY clrp1_id DESC;
1489 
1490 TYPE ref_CurclchsnTyp IS REF CURSOR;
1491 c_igf_sl_clchsn_dtls ref_CurclchsnTyp;
1492 c_sl_clchsn_dtls     ref_CurclchsnTyp;
1493 
1494 rec_c_igf_sl_clchsn_dtls igf_sl_clchsn_dtls%ROWTYPE;
1495 
1496 l_n_cl_version            igf_sl_cl_setup_all.cl_version%TYPE;
1497 l_v_loan_status           igf_sl_loans_all.loan_status%TYPE;
1498 l_n_clchgsnd_id           igf_sl_clchsn_dtls.clchgsnd_id%TYPE;
1499 l_v_sqlstmt               VARCHAR2(32767);
1500 l_v_rowid                 ROWID;
1501 l_v_message_name          fnd_new_messages.message_name%TYPE;
1502 l_b_return_status         BOOLEAN;
1503 l_c_cl_rec_status         igf_sl_lor_all.cl_rec_status%TYPE;
1504 l_v_prc_type_code         igf_sl_lor_all.prc_type_code%TYPE;
1505 l_n_award_id              igf_aw_award_all.award_id%TYPE;
1506 l_v_loan_number           igf_sl_loans_all.loan_number%TYPE;
1507 l_n_disb_num              igf_aw_awd_disb_all.disb_num%TYPE;
1508 l_n_resp_guarantee_amt    igf_sl_cl_resp_r1_all.guarantee_amt%TYPE;
1509 l_v_response_status_code  igf_sl_clchsn_dtls.response_status_code%TYPE;
1510 l_v_status_code           igf_sl_clchsn_dtls.status_code%TYPE;
1511 
1512 e_valid_edits     EXCEPTION;
1513 e_resource_busy   EXCEPTION;
1514 l_d_message_tokens        igf_sl_cl_chg_prc.token_tab%TYPE;
1515 PRAGMA EXCEPTION_INIT(e_resource_busy,-00054);
1516 
1517 BEGIN
1518 
1519   SAVEPOINT igf_sl_cl_create_chg_awd_sp;
1520 
1521   log_to_fnd(p_v_module => 'create_awd_chg_rec',
1522              p_v_string => ' Entered Procedure. The input parameters are '        ||
1523                            ' new reference of Award Id : '   ||p_n_award_id       ||
1524                            ' old amount                : '   ||p_n_old_amount     ||
1525                            ' new amount                : '   ||p_n_new_amount     ||
1526                            ' chg_type                  : '   ||p_v_chg_type
1527             );
1528 
1529   l_n_award_id := p_n_award_id;
1530 
1531   -- get the processing type code, loan record status, loan status and loan number for the input award id
1532   OPEN   c_igf_sl_lorlar (cp_n_award_id => l_n_award_id);
1533   FETCH  c_igf_sl_lorlar INTO rec_c_igf_sl_lorlar;
1534   CLOSE  c_igf_sl_lorlar;
1535 
1536   l_v_loan_number   := rec_c_igf_sl_lorlar.loan_number;
1537   l_v_loan_status   := rec_c_igf_sl_lorlar.loan_status;
1538   l_v_prc_type_code := rec_c_igf_sl_lorlar.prc_type_code;
1539   l_c_cl_rec_status := rec_c_igf_sl_lorlar.cl_rec_status;
1540 
1541   -- get the loan version for the input award id
1542   l_n_cl_version  := igf_sl_award.get_loan_cl_version(p_n_award_id => l_n_award_id);
1543 
1544 
1545   -- if any of the disbursements pertaining to the award id is funded, then
1546   -- loan cancellation record would not be created.
1547   -- The control is returned back to the calling program.
1548 
1549   IF (p_v_chg_type = 'LC') THEN
1550       OPEN   c_igf_aw_awd_disb(cp_n_award_id => l_n_award_id);
1551       FETCH  c_igf_aw_awd_disb INTO l_n_disb_num;
1552       IF c_igf_aw_awd_disb%FOUND THEN
1553         log_to_fnd(p_v_module => 'create_awd_chg_rec',
1554                    p_v_string => ' Loan cancellation/reinstatement record would not be created. ' ||
1555                                  ' disbursements pertaining to the award id: '      ||l_n_award_id||
1556                                  ' is funded '
1557                   );
1558         CLOSE c_igf_aw_awd_disb ;
1559         p_b_return_status := FALSE;
1560         p_v_message_name  := NULL;
1561         RETURN;
1562       END IF;
1563       CLOSE  c_igf_aw_awd_disb;
1564       log_to_fnd(p_v_module => 'create_awd_chg_rec',
1565                  p_v_string => ' Loan cancellation/reinstatement record would be created ' ||
1566                                ' disbursements pertaining to the award id: ' ||l_n_award_id||
1567                                ' is not funded '
1568                 );
1569   END IF;
1570 
1571   -- get the latest Guaranteed Response of guarantee amount for the input loan number
1572   -- if no records are found change record would not be created. The control is returned back
1573   -- to the calling program.
1574   OPEN  c_igf_sl_cl_resp_r1 (cp_v_loan_number => l_v_loan_number);
1575   FETCH c_igf_sl_cl_resp_r1 INTO l_n_resp_guarantee_amt;
1576   IF c_igf_sl_cl_resp_r1%NOTFOUND THEN
1577     CLOSE c_igf_sl_cl_resp_r1 ;
1578     log_to_fnd(p_v_module => ' create_awd_chg_rec',
1579                p_v_string => ' No Response record found for loan number: ' ||l_v_loan_number
1580               );
1581     p_b_return_status := FALSE;
1582     p_v_message_name  := NULL;
1583     RETURN;
1584   END IF;
1585   CLOSE c_igf_sl_cl_resp_r1 ;
1586 
1587   log_to_fnd(p_v_module => ' create_awd_chg_rec',
1588              p_v_string => ' Response record found for '  ||
1589                            ' loan number            : '   ||l_v_loan_number       ||
1590                            ' Response Guaranteed amt: '   ||l_n_resp_guarantee_amt
1591             );
1592 
1593   -- Check if the Loan Cancellation record should be created or not
1594   -- Change Record would be created only if
1595   -- The version = CommonLine Release 4 Version Loan,
1596   -- Loan Status = Accepted
1597   -- Loan Record Status is Guaranteed or Accepted
1598   -- Processing Type Code is GP or GO
1599   -- None of the disbursements are issued
1600 
1601   IF (l_n_cl_version = 'RELEASE-4' AND
1602       l_v_loan_status = 'A' AND
1603       l_v_prc_type_code IN ('GO','GP') AND
1604       l_c_cl_rec_status IN ('B','G'))
1605   THEN
1606     IF (p_v_chg_type = 'LC') THEN
1607       IF (l_n_resp_guarantee_amt <> p_n_new_amount AND p_n_new_amount = 0) THEN
1608         log_to_fnd(p_v_module => ' create_awd_chg_rec',
1609                    p_v_string => ' Verifying if change record is to be inserted or not '   ||
1610                                  ' cl version              : ' ||l_n_cl_version            ||
1611                                  ' loan status             : ' ||l_v_loan_status           ||
1612                                  ' Processing Type         : ' ||l_v_prc_type_code         ||
1613                                  ' Loan Record Status      : ' ||l_c_cl_rec_status         ||
1614                                  ' Response Guaranteed amt : ' ||l_n_resp_guarantee_amt    ||
1615                                  ' New Guaranteed amt      : ' ||p_n_new_amount            ||
1616                                  ' change_field_code       : ' ||'AWARD_AMOUNT'            ||
1617                                  ' chg_type                : ' ||p_v_chg_type              ||
1618                                  ' Change record type      : ' ||'08 - Loan Cancellation'  ||
1619                                  ' Change code             : ' ||'A - Full Loan Cancellation '
1620                   );
1621         -- verify if the existing change record is to be inserted or not
1622         l_v_sqlstmt := 'SELECT chdt.ROWID row_id '                             ||
1623                        'FROM   igf_sl_clchsn_dtls chdt '                       ||
1624                        'WHERE  chdt.loan_number_txt = :cp_v_loan_number '      ||
1625                        'AND    chdt.status_code IN (''R'',''N'',''D'') '       ||
1626                        'AND    chdt.new_amt  = 0 '                             ||
1627                        'AND    chdt.old_amt  = :cp_n_old_amt '                 ||
1628                        'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '     ||
1629                        'AND    chdt.change_code_txt       = ''A'' '            ||
1630                        'AND    chdt.change_record_type_txt     = ''08'' ';
1631         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
1632         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1633         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
1634           l_v_rowid       := NULL;
1635           l_n_clchgsnd_id := NULL;
1636           igf_sl_clchsn_dtls_pkg.insert_row
1637           (
1638             x_rowid                      => l_v_rowid                ,
1639             x_clchgsnd_id                => l_n_clchgsnd_id          ,
1640             x_award_id                   => l_n_award_id             ,
1641             x_loan_number_txt            => l_v_loan_number          ,
1642             x_cl_version_code            => l_n_cl_version           ,
1643             x_change_field_code          => 'AWARD_AMOUNT'           ,
1644             x_change_record_type_txt     => '08'                     ,
1645             x_change_code_txt            => 'A'                      ,
1646             x_status_code                => 'R'                      ,
1647             x_status_date                => TRUNC(SYSDATE)           ,
1648             x_response_status_code       => NULL                     ,
1649             x_old_value_txt              => NULL                     ,
1650             x_new_value_txt              => NULL                     ,
1651             x_old_date                   => NULL                     ,
1652             x_new_date                   => NULL                     ,
1653             x_old_amt                    => l_n_resp_guarantee_amt   ,
1654             x_new_amt                    => 0                        ,
1655             x_disbursement_number        => NULL                     ,
1656             x_disbursement_date          => NULL                     ,
1657             x_change_issue_code          => NULL                     ,
1658             x_disbursement_cancel_date   => NULL                     ,
1659             x_disbursement_cancel_amt    => NULL                     ,
1660             x_disbursement_revised_amt   => NULL                     ,
1661             x_disbursement_revised_date  => NULL                     ,
1662             x_disbursement_reissue_code  => NULL                     ,
1663             x_disbursement_reinst_code   => NULL                     ,
1664             x_disbursement_return_amt    => NULL                     ,
1665             x_disbursement_return_date   => NULL                     ,
1666             x_disbursement_return_code   => NULL                     ,
1667             x_post_with_disb_return_amt  => NULL                     ,
1668             x_post_with_disb_return_date => NULL                     ,
1669             x_post_with_disb_return_code => NULL                     ,
1670             x_prev_with_disb_return_amt  => NULL                     ,
1671             x_prev_with_disb_return_date => NULL                     ,
1672             x_school_use_txt             => NULL                     ,
1673             x_lender_use_txt             => NULL                     ,
1674             x_guarantor_use_txt          => NULL                     ,
1675             x_validation_edit_txt        => NULL                     ,
1676             x_send_record_txt            => NULL
1677           );
1678           -- invoke validation edits to validate the change record. The validation checks if
1679           -- all the required fields are populated or not for a change record
1680           log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1681                      p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
1682                     );
1683           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
1684                                           p_b_return_status => l_b_return_status,
1685                                           p_v_message_name  => l_v_message_name,
1686                                         p_t_message_tokens => l_d_message_tokens
1687                                          );
1688           IF NOT(l_b_return_status) THEN
1689             log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1690                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
1691                       );
1692             RAISE e_valid_edits;
1693           END IF;
1694           p_b_return_status := TRUE;
1695           p_v_message_name  := NULL;
1696           log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1697                      p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
1698                     );
1699         END IF;
1700         CLOSE c_igf_sl_clchsn_dtls;
1701       END IF;
1702       -- if changes have been reverted back (i.e. reverting back to LC after fully reinstated record
1703       -- is created before sending to external processor)
1704 
1705       -- verify if fullY reinstated record is to be deleted as award change is reverted back
1706       l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
1707                      'FROM   igf_sl_clchsn_dtls chdt '                                  ||
1708                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
1709                      'AND    chdt.old_amt  = 0 '                                        ||
1710                      'AND    chdt.new_amt  = :cp_n_new_amt '                            ||
1711                      'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
1712                      'AND    chdt.change_code_txt = ''B'' '                             ||
1713                      'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
1714                      'AND    chdt.change_record_type_txt = ''08'' ';
1715       l_v_rowid  := NULL;
1716       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
1717       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1718       IF c_igf_sl_clchsn_dtls%FOUND THEN
1719         log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1720                    p_v_string => ' fullY reinstated Change record to be deleted ' ||
1721                                  ' Award Id             : ' ||l_n_award_id        ||
1722                                  ' loan number          : ' ||l_v_loan_number
1723                   );
1724         igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
1725         log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1726                    p_v_string => ' Change record deleted successfully '       ||
1727                                  ' Award Id             : ' ||l_n_award_id    ||
1728                                  ' loan number          : ' ||l_v_loan_number
1729                   );
1730       END IF;
1731       CLOSE c_igf_sl_clchsn_dtls;
1732       p_b_return_status := TRUE;
1733       p_v_message_name  := NULL;
1734 
1735       -- verify if loan increase record is to be deleted as award change is reverted back
1736       l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
1737                      'FROM   igf_sl_clchsn_dtls chdt '                                  ||
1738                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
1739                      'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
1740                      'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
1741                      'AND    chdt.change_code_txt = ''A'' '                             ||
1742                      'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
1743                      'AND    chdt.change_record_type_txt = ''24'' ';
1744       l_v_rowid := NULL;
1745       OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
1746       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1747       IF c_igf_sl_clchsn_dtls%FOUND THEN
1748         log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1749                    p_v_string => ' Loan Increase Change record to be deleted '    ||
1750                                  ' Award Id             : ' ||l_n_award_id        ||
1751                                  ' loan number          : ' ||l_v_loan_number
1752                   );
1753         igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
1754         log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1755                    p_v_string => ' Change record deleted successfully '       ||
1756                                  ' Award Id             : ' ||l_n_award_id    ||
1757                                  ' loan number          : ' ||l_v_loan_number
1758                   );
1759       END IF;
1760       CLOSE c_igf_sl_clchsn_dtls;
1761       p_b_return_status := TRUE;
1762       p_v_message_name  := NULL;
1763 
1764     ELSIF (p_v_chg_type = 'RIDC') THEN
1765 
1766       log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1767                  p_v_string => ' Verifying if full loan cancellation record exists with'||
1768                                ' response status as Acknowledged  '                     ||
1769                                ' cl version             : ' ||l_n_cl_version            ||
1770                                ' loan status            : ' ||l_v_loan_status           ||
1771                                ' Processing Type        : ' ||l_v_prc_type_code         ||
1772                                ' Loan Record Status     : ' ||l_c_cl_rec_status         ||
1773                                ' Response Guaranteed amt: ' ||l_n_resp_guarantee_amt    ||
1774                                ' New Guaranteed amt     : ' ||p_n_new_amount            ||
1775                                ' change_field_code      : ' ||'AWARD_AMOUNT'            ||
1776                                ' chg_type               : ' ||p_v_chg_type
1777                   );
1778       l_v_sqlstmt := 'SELECT  chdt.ROWID, chdt.response_status_code '                   ||
1779                      'FROM   igf_sl_clchsn_dtls chdt '                                  ||
1780                      'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
1781                      'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
1782                      'AND    chdt.new_amt  = 0 '                                        ||
1783                      'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
1784                      'AND    chdt.change_code_txt = ''A'' '                             ||
1785                      'AND    chdt.change_record_type_txt = ''08'' ';
1786       l_v_rowid  := NULL;
1787       OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
1788       FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid, l_v_response_status_code;
1789       CLOSE c_igf_sl_clchsn_dtls;
1790       -- if record has been found
1791       log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1792                  p_v_string => ' response status code: ' ||l_v_response_status_code
1793                 );
1794       IF l_v_response_status_code IS NOT NULL THEN
1795         -- if response status code is Accepted
1796         -- Loan increase or Reinstatement change record should be created or not
1797         IF (l_v_response_status_code = 'A') THEN
1798           -- if the new amount = response guarantee amount i.e. award amount is retained
1799           -- delete the loan increase record if exists
1800           -- create Full Loan Reinstatement change record
1801           -- The reinstated loan amount must not exceed the original guarantee amount.
1802           IF p_n_new_amount > 0 AND
1803              p_n_new_amount <= l_n_resp_guarantee_amt THEN
1804             log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1805                        p_v_string => ' Verifying if  Loan Increase change record is to be deleted or not '  ||
1806                                      ' cl version             : ' ||l_n_cl_version            ||
1807                                      ' loan status            : ' ||l_v_loan_status           ||
1808                                      ' Processing Type        : ' ||l_v_prc_type_code         ||
1809                                      ' Loan Record Status     : ' ||l_c_cl_rec_status         ||
1810                                      ' Response Guaranteed amt: ' ||l_n_resp_guarantee_amt    ||
1811                                      ' New Guaranteed amt     : ' ||p_n_new_amount            ||
1812                                      ' change_field_code      : ' ||'AWARD_AMOUNT'            ||
1813                                      ' chg_type               : ' ||p_v_chg_type              ||
1814                                      ' Change record type     : ' ||'24 - Loan Increase'      ||
1815                                      ' change_code            : ' ||'A - Loan Increase'
1816                        );
1817             -- verify if loan increase record is to be deleted as award change is reverted back
1818             l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
1819                            'FROM   igf_sl_clchsn_dtls chdt '                                  ||
1820                            'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
1821                            'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
1822                            'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
1823                            'AND    chdt.change_code_txt = ''A'' '                             ||
1824                            'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
1825                            'AND    chdt.change_record_type_txt = ''24'' ';
1826             l_v_rowid := NULL;
1827             OPEN  c_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
1828             FETCH c_sl_clchsn_dtls INTO l_v_rowid;
1829             IF c_sl_clchsn_dtls%FOUND THEN
1830               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1831                          p_v_string => ' Loan Increase Change record to be deleted '    ||
1832                                        ' Award Id             : ' ||l_n_award_id        ||
1833                                        ' loan number          : ' ||l_v_loan_number
1834                         );
1835               igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
1836               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1837                          p_v_string => ' Change record deleted successfully '       ||
1838                                        ' Award Id             : ' ||l_n_award_id    ||
1839                                        ' loan number          : ' ||l_v_loan_number
1840                         );
1841             END IF;
1842             CLOSE c_sl_clchsn_dtls;
1843             p_b_return_status := TRUE;
1844             p_v_message_name  := NULL;
1845 
1846             log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1847                        p_v_string => ' Verifying if Full Loan Reinstatement change record to be inserted or not'||
1848                                      ' cl version             : ' ||l_n_cl_version            ||
1849                                      ' loan status            : ' ||l_v_loan_status           ||
1850                                      ' Processing Type        : ' ||l_v_prc_type_code         ||
1851                                      ' Loan Record Status     : ' ||l_c_cl_rec_status         ||
1852                                      ' Response Guaranteed amt: ' ||l_n_resp_guarantee_amt    ||
1853                                      ' New Guaranteed amt     : ' ||p_n_new_amount            ||
1854                                      ' change_field_code      : ' ||'AWARD_AMOUNT'            ||
1855                                      ' chg_type               : ' ||p_v_chg_type              ||
1856                                      ' Change record type     : ' ||'08 - Loan Cancellation'  ||
1857                                      ' change_code            : ' ||'B - Full Loan Reinstatement'
1858                      );
1859             -- verify if the reinstatement change record is to be updated or inserted
1860             l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                                        ||
1861                            'FROM    igf_sl_clchsn_dtls chdt '                                  ||
1862                            'WHERE   chdt.loan_number_txt = :cp_v_loan_number '                 ||
1863                            'AND     chdt.old_amt  = 0 '                                        ||
1864                            'AND     chdt.change_field_code      = ''AWARD_AMOUNT'' '           ||
1865                            'AND     chdt.change_code_txt        = ''B'' '                      ||
1866                            'AND     chdt.status_code IN (''R'',''N'',''D'') '                  ||
1867                            'AND     chdt.change_record_type_txt = ''08'' ';
1868             l_v_rowid  := NULL;
1869             OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number;
1870             FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
1871             IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
1872               CLOSE c_igf_sl_clchsn_dtls;
1873               l_v_rowid       := NULL;
1874               l_n_clchgsnd_id := NULL;
1875               log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
1876                          p_v_string => ' New Full Loan Reinstatement Change record is Created ' ||
1877                                        ' Change_field_code  : ' ||'AWARD_AMOUNT'                ||
1878                                        ' Change record type : ' ||'08 - Loan Cancellation'      ||
1879                                        ' change code        : ' ||'B - Full Loan Reinstatement'
1880                         );
1881               igf_sl_clchsn_dtls_pkg.insert_row
1882               (
1883                 x_rowid                      => l_v_rowid         ,
1884                 x_clchgsnd_id                => l_n_clchgsnd_id   ,
1885                 x_award_id                   => l_n_award_id      ,
1886                 x_loan_number_txt            => l_v_loan_number   ,
1887                 x_cl_version_code            => l_n_cl_version    ,
1888                 x_change_field_code          => 'AWARD_AMOUNT'    ,
1889                 x_change_record_type_txt     => '08'              ,
1890                 x_change_code_txt            => 'B'               ,
1891                 x_status_code                => 'R'               ,
1892                 x_status_date                => TRUNC(SYSDATE)    ,
1893                 x_response_status_code       => NULL              ,
1894                 x_old_value_txt              => NULL              ,
1895                 x_new_value_txt              => NULL              ,
1896                 x_old_date                   => NULL              ,
1897                 x_new_date                   => NULL              ,
1898                 x_old_amt                    => 0                 ,
1899                 x_new_amt                    => p_n_new_amount    ,
1900                 x_disbursement_number        => NULL              ,
1901                 x_disbursement_date          => NULL              ,
1902                 x_change_issue_code          => NULL              ,
1903                 x_disbursement_cancel_date   => NULL              ,
1904                 x_disbursement_cancel_amt    => NULL              ,
1905                 x_disbursement_revised_amt   => NULL              ,
1906                 x_disbursement_revised_date  => NULL              ,
1907                 x_disbursement_reissue_code  => NULL              ,
1908                 x_disbursement_reinst_code   => NULL              ,
1909                 x_disbursement_return_amt    => NULL              ,
1910                 x_disbursement_return_date   => NULL              ,
1911                 x_disbursement_return_code   => NULL              ,
1912                 x_post_with_disb_return_amt  => NULL              ,
1913                 x_post_with_disb_return_date => NULL              ,
1914                 x_post_with_disb_return_code => NULL              ,
1915                 x_prev_with_disb_return_amt  => NULL              ,
1916                 x_prev_with_disb_return_date => NULL              ,
1917                 x_school_use_txt             => NULL              ,
1918                 x_lender_use_txt             => NULL              ,
1919                 x_guarantor_use_txt          => NULL              ,
1920                 x_validation_edit_txt        => NULL              ,
1921                 x_send_record_txt            => NULL
1922               );
1923               -- invoke validation edits to validate the change record. The validation checks if
1924               -- all the required fields are populated or not for a change record
1925               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1926                          p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
1927                         );
1928               igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
1929                                               p_b_return_status => l_b_return_status,
1930                                               p_v_message_name  => l_v_message_name,
1931                                         p_t_message_tokens => l_d_message_tokens
1932                                               );
1933 
1934               IF NOT(l_b_return_status) THEN
1935                 log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1936                            p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
1937                           );
1938                 RAISE e_valid_edits;
1939               END IF;
1940               p_b_return_status := TRUE;
1941               p_v_message_name  := NULL;
1942             ELSE
1943               CLOSE c_igf_sl_clchsn_dtls;
1944               rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
1945               log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
1946                          p_v_string => ' Change record is updated '                        ||
1947                                        ' Change_field_code  : ' ||'AWARD_AMOUNT'           ||
1948                                        ' Change record type : ' ||'08 - Loan Reinstatement'||
1949                                        ' Change code        : ' ||'B - Loan Reinstatement '
1950                         );
1951               igf_sl_clchsn_dtls_pkg.update_row
1952               (
1953                 x_rowid                      => l_v_rowid                                           ,
1954                 x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
1955                 x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
1956                 x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
1957                 x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
1958                 x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
1959                 x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
1960                 x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
1961                 x_status_code                => 'R'                                                 ,
1962                 x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
1963                 x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
1964                 x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
1965                 x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
1966                 x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
1967                 x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
1968                 x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
1969                 x_new_amt                    => p_n_new_amount                                      ,
1970                 x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
1971                 x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
1972                 x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
1973                 x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
1974                 x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
1975                 x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
1976                 x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
1977                 x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
1978                 x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
1979                 x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
1980                 x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
1981                 x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
1982                 x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
1983                 x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
1984                 x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
1985                 x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
1986                 x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
1987                 x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
1988                 x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
1989                 x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
1990                 x_validation_edit_txt        => NULL                                                ,
1991                 x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
1992               );
1993               -- invoke validation edits to validate the change record. The validation checks if
1994               -- all the required fields are populated or not for a change record
1995               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
1996                          p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
1997                         );
1998               igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
1999                                               p_b_return_status => l_b_return_status,
2000                                               p_v_message_name  => l_v_message_name,
2001                                               p_t_message_tokens => l_d_message_tokens
2002                                              );
2003               IF NOT(l_b_return_status) THEN
2004                 log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2005                            p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2006                           );
2007                 -- substring of the out bound parameter l_v_message_name is carried
2008                 -- out since it can expect either IGS OR IGF message
2009                 fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
2010                 igf_sl_cl_chg_prc.parse_tokens(
2011                   p_t_message_tokens => l_d_message_tokens);
2012 /*
2013           FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
2014              fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
2015           END LOOP;
2016 */
2017                 log_to_fnd(p_v_module => ' create_awd_chg_rec',
2018                            p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
2019                            );
2020                 igf_sl_clchsn_dtls_pkg.update_row
2021                 (
2022                   x_rowid                      => l_v_rowid                                           ,
2023                   x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2024                   x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2025                   x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2026                   x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2027                   x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2028                   x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2029                   x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2030                   x_status_code                => 'N'                                                 ,
2031                   x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2032                   x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2033                   x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2034                   x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2035                   x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2036                   x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2037                   x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2038                   x_new_amt                    => p_n_new_amount                                      ,
2039                   x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2040                   x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2041                   x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2042                   x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2043                   x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2044                   x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2045                   x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2046                   x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2047                   x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2048                   x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2049                   x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2050                   x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2051                   x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2052                   x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2053                   x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2054                   x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2055                   x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2056                   x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2057                   x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2058                   x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2059                   x_validation_edit_txt        => fnd_message.get                                     ,
2060                   x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2061                 );
2062                 log_to_fnd(p_v_module => ' create_awd_chg_rec',
2063                            p_v_string => ' updated the status of change send record to Not Ready to Send'
2064                           );
2065               END IF;
2066               p_b_return_status := TRUE;
2067               p_v_message_name  := NULL;
2068             END IF;
2069           END IF;
2070           -- Loan re-instatement should be done till the Guarantee Amount.
2071           -- So if P_NEW_AMT > L_RESP_GUARNT_AMT THEN we should re-instate till the full loan cancellation
2072           -- change record's old amount. For the rest amount (P_NEW_AMT - OLD_AMT from full loan cancellation record)
2073           -- we should create Loan Increase Record
2074           IF p_n_new_amount > l_n_resp_guarantee_amt THEN
2075             -- verify if the reinstatement change record is to be updated or inserted
2076             l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                                        ||
2077                            'FROM    igf_sl_clchsn_dtls chdt '                                  ||
2078                            'WHERE   chdt.loan_number_txt = :cp_v_loan_number '                 ||
2079                            'AND     chdt.old_amt  = 0 '                                        ||
2080                            'AND     chdt.change_field_code      = ''AWARD_AMOUNT'' '           ||
2081                            'AND     chdt.change_code_txt        = ''B'' '                      ||
2082                            'AND     chdt.status_code IN (''R'',''N'',''D'') '                  ||
2083                            'AND     chdt.change_record_type_txt = ''08'' ';
2084             l_v_rowid  := NULL;
2085             OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number;
2086             FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
2087             IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
2088               CLOSE c_igf_sl_clchsn_dtls;
2089               l_v_rowid       := NULL;
2090               l_n_clchgsnd_id := NULL;
2091               log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
2092                          p_v_string => ' New Full Loan Reinstatement Change record is Created ' ||
2093                                        ' Change_field_code  : ' ||'AWARD_AMOUNT'                ||
2094                                        ' Change record type : ' ||'08 - Loan Cancellation'      ||
2095                                        ' change code        : ' ||'B - Full Loan Reinstatement'
2096                         );
2097               igf_sl_clchsn_dtls_pkg.insert_row
2098               (
2099                 x_rowid                      => l_v_rowid         ,
2100                 x_clchgsnd_id                => l_n_clchgsnd_id   ,
2101                 x_award_id                   => l_n_award_id      ,
2102                 x_loan_number_txt            => l_v_loan_number   ,
2103                 x_cl_version_code            => l_n_cl_version    ,
2104                 x_change_field_code          => 'AWARD_AMOUNT'    ,
2105                 x_change_record_type_txt     => '08'              ,
2106                 x_change_code_txt            => 'B'               ,
2107                 x_status_code                => 'R'               ,
2108                 x_status_date                => TRUNC(SYSDATE)    ,
2109                 x_response_status_code       => NULL              ,
2110                 x_old_value_txt              => NULL              ,
2111                 x_new_value_txt              => NULL              ,
2112                 x_old_date                   => NULL              ,
2113                 x_new_date                   => NULL              ,
2114                 x_old_amt                    => 0                 ,
2115                 x_new_amt                    => l_n_resp_guarantee_amt,
2116                 x_disbursement_number        => NULL              ,
2117                 x_disbursement_date          => NULL              ,
2118                 x_change_issue_code          => NULL              ,
2119                 x_disbursement_cancel_date   => NULL              ,
2120                 x_disbursement_cancel_amt    => NULL              ,
2121                 x_disbursement_revised_amt   => NULL              ,
2122                 x_disbursement_revised_date  => NULL              ,
2123                 x_disbursement_reissue_code  => NULL              ,
2124                 x_disbursement_reinst_code   => NULL              ,
2125                 x_disbursement_return_amt    => NULL              ,
2126                 x_disbursement_return_date   => NULL              ,
2127                 x_disbursement_return_code   => NULL              ,
2128                 x_post_with_disb_return_amt  => NULL              ,
2129                 x_post_with_disb_return_date => NULL              ,
2130                 x_post_with_disb_return_code => NULL              ,
2131                 x_prev_with_disb_return_amt  => NULL              ,
2132                 x_prev_with_disb_return_date => NULL              ,
2133                 x_school_use_txt             => NULL              ,
2134                 x_lender_use_txt             => NULL              ,
2135                 x_guarantor_use_txt          => NULL              ,
2136                 x_validation_edit_txt        => NULL              ,
2137                 x_send_record_txt            => NULL
2138               );
2139               -- invoke validation edits to validate the change record. The validation checks if
2140               -- all the required fields are populated or not for a change record
2141               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2142                          p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
2143                         );
2144               igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
2145                                               p_b_return_status => l_b_return_status,
2146                                               p_v_message_name  => l_v_message_name,
2147                                         p_t_message_tokens => l_d_message_tokens
2148                                               );
2149 
2150               IF NOT(l_b_return_status) THEN
2151                 log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2152                            p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
2153                           );
2154                 RAISE e_valid_edits;
2155               END IF;
2156               p_b_return_status := TRUE;
2157               p_v_message_name  := NULL;
2158             ELSE
2159               CLOSE c_igf_sl_clchsn_dtls;
2160               rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
2161               log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
2162                          p_v_string => ' Change record is updated '                        ||
2163                                        ' Change_field_code  : ' ||'AWARD_AMOUNT'           ||
2164                                        ' Change record type : ' ||'08 - Loan Reinstatement'||
2165                                        ' Change code        : ' ||'B - Loan Reinstatement '
2166                         );
2167               igf_sl_clchsn_dtls_pkg.update_row
2168               (
2169                 x_rowid                      => l_v_rowid                                           ,
2170                 x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2171                 x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2172                 x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2173                 x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2174                 x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2175                 x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2176                 x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2177                 x_status_code                => 'R'                                                 ,
2178                 x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2179                 x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2180                 x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2181                 x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2182                 x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2183                 x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2184                 x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2185                 x_new_amt                    => l_n_resp_guarantee_amt                              ,
2186                 x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2187                 x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2188                 x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2189                 x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2190                 x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2191                 x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2192                 x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2193                 x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2194                 x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2195                 x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2196                 x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2197                 x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2198                 x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2199                 x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2200                 x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2201                 x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2202                 x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2203                 x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2204                 x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2205                 x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2206                 x_validation_edit_txt        => NULL                                                ,
2207                 x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2208               );
2209               -- invoke validation edits to validate the change record. The validation checks if
2210               -- all the required fields are populated or not for a change record
2211               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2212                          p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2213                         );
2214               igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
2215                                               p_b_return_status => l_b_return_status,
2216                                               p_v_message_name  => l_v_message_name,
2217                                               p_t_message_tokens => l_d_message_tokens
2218                                              );
2219               IF NOT(l_b_return_status) THEN
2220                 log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2221                            p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2222                           );
2223                 -- substring of the out bound parameter l_v_message_name is carried
2224                 -- out since it can expect either IGS OR IGF message
2225                 fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
2226                 igf_sl_cl_chg_prc.parse_tokens(
2227                   p_t_message_tokens => l_d_message_tokens);
2228 /*
2229                 FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
2230                    fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
2231                 END LOOP;
2232 */
2233                 log_to_fnd(p_v_module => ' create_awd_chg_rec',
2234                            p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
2235                            );
2236                 igf_sl_clchsn_dtls_pkg.update_row
2237                 (
2238                   x_rowid                      => l_v_rowid                                           ,
2239                   x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2240                   x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2241                   x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2242                   x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2243                   x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2244                   x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2245                   x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2246                   x_status_code                => 'N'                                                 ,
2247                   x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2248                   x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2249                   x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2250                   x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2251                   x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2252                   x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2253                   x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2254                   x_new_amt                    => l_n_resp_guarantee_amt                              ,
2255                   x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2256                   x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2257                   x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2258                   x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2259                   x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2260                   x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2261                   x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2262                   x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2263                   x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2264                   x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2265                   x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2266                   x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2267                   x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2268                   x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2269                   x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2270                   x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2271                   x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2272                   x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2273                   x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2274                   x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2275                   x_validation_edit_txt        => fnd_message.get                                     ,
2276                   x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2277                 );
2278                 log_to_fnd(p_v_module => ' create_awd_chg_rec',
2279                            p_v_string => ' updated the status of change send record to Not Ready to Send'
2280                           );
2281               END IF;
2282               p_b_return_status := TRUE;
2283               p_v_message_name  := NULL;
2284             END IF;
2285 
2286             -- verify if loan increase record is to be created or updated
2287             l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
2288                            'FROM   igf_sl_clchsn_dtls chdt '                                  ||
2289                            'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
2290                            'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
2291                            'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
2292                            'AND    chdt.change_code_txt = ''A'' '                             ||
2293                            'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
2294                            'AND    chdt.change_record_type_txt = ''24'' ';
2295             l_v_rowid := NULL;
2296             OPEN  c_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
2297             FETCH c_sl_clchsn_dtls INTO l_v_rowid;
2298             IF c_sl_clchsn_dtls%NOTFOUND THEN
2299               CLOSE c_sl_clchsn_dtls;
2300               l_v_rowid       := NULL;
2301               l_n_clchgsnd_id := NULL;
2302               log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
2303                          p_v_string => ' New Loan Increase Change record is Created '  ||
2304                                        ' Change_field_code  : ' ||'AWARD_AMOUNT'       ||
2305                                        ' Change record type : ' ||'24 - Loan Increase' ||
2306                                        ' change code        : ' ||'A - Loan Increase '
2307                         );
2308               igf_sl_clchsn_dtls_pkg.insert_row
2309               (
2310                 x_rowid                      => l_v_rowid              ,
2311                 x_clchgsnd_id                => l_n_clchgsnd_id        ,
2312                 x_award_id                   => l_n_award_id           ,
2313                 x_loan_number_txt            => l_v_loan_number        ,
2314                 x_cl_version_code            => l_n_cl_version         ,
2315                 x_change_field_code          => 'AWARD_AMOUNT'         ,
2316                 x_change_record_type_txt     => '24'                   ,
2317                 x_change_code_txt            => 'A'                    ,
2318                 x_status_code                => 'R'                    ,
2319                 x_status_date                => TRUNC(SYSDATE)         ,
2320                 x_response_status_code       => NULL                   ,
2321                 x_old_value_txt              => NULL                   ,
2322                 x_new_value_txt              => NULL                   ,
2323                 x_old_date                   => NULL                   ,
2324                 x_new_date                   => NULL                   ,
2325                 x_old_amt                    => l_n_resp_guarantee_amt ,
2326                 x_new_amt                    => p_n_new_amount         ,
2327                 x_disbursement_number        => NULL                   ,
2328                 x_disbursement_date          => NULL                   ,
2329                 x_change_issue_code          => NULL                   ,
2330                 x_disbursement_cancel_date   => NULL                   ,
2331                 x_disbursement_cancel_amt    => NULL                   ,
2332                 x_disbursement_revised_amt   => NULL                   ,
2333                 x_disbursement_revised_date  => NULL                   ,
2334                 x_disbursement_reissue_code  => NULL                   ,
2335                 x_disbursement_reinst_code   => NULL                   ,
2336                 x_disbursement_return_amt    => NULL                   ,
2337                 x_disbursement_return_date   => NULL                   ,
2338                 x_disbursement_return_code   => NULL                   ,
2339                 x_post_with_disb_return_amt  => NULL                   ,
2340                 x_post_with_disb_return_date => NULL                   ,
2341                 x_post_with_disb_return_code => NULL                   ,
2342                 x_prev_with_disb_return_amt  => NULL                   ,
2343                 x_prev_with_disb_return_date => NULL                   ,
2344                 x_school_use_txt             => NULL                   ,
2345                 x_lender_use_txt             => NULL                   ,
2346                 x_guarantor_use_txt          => NULL                   ,
2347                 x_validation_edit_txt        => NULL                   ,
2348                 x_send_record_txt            => NULL
2349               );
2350               -- invoke validation edits to validate the change record. The validation checks if
2351               -- all the required fields are populated or not for a change record
2352               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2353                          p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
2354                         );
2355               igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
2356                                               p_b_return_status => l_b_return_status,
2357                                               p_v_message_name  => l_v_message_name,
2358                                         p_t_message_tokens => l_d_message_tokens
2359                                              );
2360               IF NOT(l_b_return_status) THEN
2361                 log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2362                            p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
2363                            );
2364                 RAISE e_valid_edits;
2365               END IF;
2366               p_b_return_status := TRUE;
2367               p_v_message_name  := NULL;
2368               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2369                          p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
2370                          );
2371             ELSE
2372               CLOSE c_sl_clchsn_dtls;
2373               rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
2374               log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
2375                          p_v_string => ' Change record is updated '                   ||
2376                                        ' Change_field_code  : ' ||'AWARD_AMOUNT'      ||
2377                                        ' Change record type : ' ||'24 - Loan Increase'||
2378                                        ' Change code        : ' ||'A - LOan Increase '
2379                         );
2380               igf_sl_clchsn_dtls_pkg.update_row
2381               (
2382                 x_rowid                      => l_v_rowid                                           ,
2383                 x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2384                 x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2385                 x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2386                 x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2387                 x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2388                 x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2389                 x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2390                 x_status_code                => 'R'                                                 ,
2391                 x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2392                 x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2393                 x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2394                 x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2395                 x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2396                 x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2397                 x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2398                 x_new_amt                    => p_n_new_amount                                      ,
2399                 x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2400                 x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2401                 x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2402                 x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2403                 x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2404                 x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2405                 x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2406                 x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2407                 x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2408                 x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2409                 x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2410                 x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2411                 x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2412                 x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2413                 x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2414                 x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2415                 x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2416                 x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2417                 x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2418                 x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2419                 x_validation_edit_txt        => NULL                                                ,
2420                 x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2421               );
2422               -- invoke validation edits to validate the change record. The validation checks if
2423               -- all the required fields are populated or not for a change record
2424               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2425                          p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2426                         );
2427               igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
2428                                               p_b_return_status => l_b_return_status,
2429                                               p_v_message_name  => l_v_message_name,
2430                                               p_t_message_tokens => l_d_message_tokens
2431                                              );
2432 
2433               IF NOT(l_b_return_status) THEN
2434                 log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2435                            p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2436                           );
2437                 -- substring of the out bound parameter l_v_message_name is carried
2438                 -- out since it can expect either IGS OR IGF message
2439                 fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
2440                 igf_sl_cl_chg_prc.parse_tokens(
2441                   p_t_message_tokens => l_d_message_tokens);
2442 /*
2443                 FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
2444                    fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
2445                 END LOOP;
2446 */
2447                 log_to_fnd(p_v_module => ' create_awd_chg_rec',
2448                            p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
2449                            );
2450                 igf_sl_clchsn_dtls_pkg.update_row
2451                 (
2452                   x_rowid                      => l_v_rowid                                           ,
2453                   x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2454                   x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2455                   x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2456                   x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2457                   x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2458                   x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2459                   x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2460                   x_status_code                => 'N'                                                 ,
2461                   x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2462                   x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2463                   x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2464                   x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2465                   x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2466                   x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2467                   x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2468                   x_new_amt                    => p_n_new_amount                                      ,
2469                   x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2470                   x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2471                   x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2472                   x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2473                   x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2474                   x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2475                   x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2476                   x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2477                   x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2478                   x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2479                   x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2480                   x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2481                   x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2482                   x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2483                   x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2484                   x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2485                   x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2486                   x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2487                   x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2488                   x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2489                   x_validation_edit_txt        => fnd_message.get                                     ,
2490                   x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2491                 );
2492                 log_to_fnd(p_v_module => ' create_awd_chg_rec',
2493                            p_v_string => ' updated the status of change send record to Not Ready to Send'
2494                           );
2495               END IF;
2496               p_b_return_status := TRUE;
2497               p_v_message_name  := NULL;
2498             END IF;
2499           END IF;
2500         END IF;
2501       -- no Loan cancellation record exists with response status code = 'A'
2502       -- hence just create loan increase record
2503       ELSIF l_v_response_status_code IS NULL THEN
2504           -- verify if full loan cancellation record to be deleted
2505         l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
2506                        'FROM   igf_sl_clchsn_dtls chdt '                                  ||
2507                        'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
2508                        'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
2509                        'AND    chdt.new_amt  = 0 '                                        ||
2510                        'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
2511                        'AND    chdt.change_code_txt = ''A'' '                             ||
2512                        'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
2513                        'AND    chdt.change_record_type_txt = ''08'' ';
2514         l_v_rowid  := NULL;
2515         OPEN c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
2516         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
2517         IF c_igf_sl_clchsn_dtls%FOUND THEN
2518           log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2519                      p_v_string => ' full loan cancellation Change record to be deleted ' ||
2520                                    ' Award Id             : ' ||l_n_award_id              ||
2521                                    ' loan number          : ' ||l_v_loan_number
2522                     );
2523           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
2524           log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2525                      p_v_string => ' full loan cancellation Change record deleted successfully ' ||
2526                                    ' Award Id             : ' ||l_n_award_id                     ||
2527                                    ' loan number          : ' ||l_v_loan_number
2528                     );
2529         END IF;
2530         CLOSE c_igf_sl_clchsn_dtls;
2531         p_b_return_status := TRUE;
2532         p_v_message_name  := NULL;
2533         IF p_n_new_amount > l_n_resp_guarantee_amt  THEN
2534           -- verify if Loan Increase change record is to be inserted or not
2535           log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2536                      p_v_string => ' Verifying if Loan Increase change record is to be inserted or not'||
2537                                    ' cl version             : ' ||l_n_cl_version            ||
2538                                    ' loan status            : ' ||l_v_loan_status           ||
2539                                    ' Processing Type        : ' ||l_v_prc_type_code         ||
2540                                    ' Loan Record Status     : ' ||l_c_cl_rec_status         ||
2541                                    ' Response Guaranteed amt: ' ||l_n_resp_guarantee_amt    ||
2542                                    ' New Guaranteed amt     : ' ||p_n_new_amount            ||
2543                                    ' change_field_code      : ' ||'AWARD_AMOUNT'            ||
2544                                    ' chg_type               : ' ||p_v_chg_type              ||
2545                                    ' Change record type     : ' ||'24 - Loan Increase'      ||
2546                                    ' change_code            : ' ||'A - Loan Increase'
2547                      );
2548           l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
2549                          'FROM   igf_sl_clchsn_dtls chdt '                                  ||
2550                          'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
2551                          'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
2552                          'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
2553                          'AND    chdt.change_code_txt = ''A'' '                             ||
2554                          'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
2555                          'AND    chdt.change_record_type_txt = ''24'' ';
2556           l_v_rowid := NULL;
2557           OPEN  c_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,l_n_resp_guarantee_amt;
2558           FETCH c_sl_clchsn_dtls INTO l_v_rowid;
2559           IF c_sl_clchsn_dtls%NOTFOUND THEN
2560             CLOSE c_sl_clchsn_dtls;
2561             l_v_rowid       := NULL;
2562             l_n_clchgsnd_id := NULL;
2563             log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
2564                        p_v_string => ' New Loan Increase Change record is Created '  ||
2565                                      ' Change_field_code  : ' ||'AWARD_AMOUNT'       ||
2566                                      ' Change record type : ' ||'24 - Loan Increase' ||
2567                                      ' change code        : ' ||'A - Loan Increase '
2568                       );
2569             igf_sl_clchsn_dtls_pkg.insert_row
2570             (
2571               x_rowid                      => l_v_rowid              ,
2572               x_clchgsnd_id                => l_n_clchgsnd_id        ,
2573               x_award_id                   => l_n_award_id           ,
2574               x_loan_number_txt            => l_v_loan_number        ,
2575               x_cl_version_code            => l_n_cl_version         ,
2576               x_change_field_code          => 'AWARD_AMOUNT'         ,
2577               x_change_record_type_txt     => '24'                   ,
2578               x_change_code_txt            => 'A'                    ,
2579               x_status_code                => 'R'                    ,
2580               x_status_date                => TRUNC(SYSDATE)         ,
2581               x_response_status_code       => NULL                   ,
2582               x_old_value_txt              => NULL                   ,
2583               x_new_value_txt              => NULL                   ,
2584               x_old_date                   => NULL                   ,
2585               x_new_date                   => NULL                   ,
2586               x_old_amt                    => l_n_resp_guarantee_amt ,
2587               x_new_amt                    => p_n_new_amount         ,
2588               x_disbursement_number        => NULL                   ,
2589               x_disbursement_date          => NULL                   ,
2590               x_change_issue_code          => NULL                   ,
2591               x_disbursement_cancel_date   => NULL                   ,
2592               x_disbursement_cancel_amt    => NULL                   ,
2593               x_disbursement_revised_amt   => NULL                   ,
2594               x_disbursement_revised_date  => NULL                   ,
2595               x_disbursement_reissue_code  => NULL                   ,
2596               x_disbursement_reinst_code   => NULL                   ,
2597               x_disbursement_return_amt    => NULL                   ,
2598               x_disbursement_return_date   => NULL                   ,
2599               x_disbursement_return_code   => NULL                   ,
2600               x_post_with_disb_return_amt  => NULL                   ,
2601               x_post_with_disb_return_date => NULL                   ,
2602               x_post_with_disb_return_code => NULL                   ,
2603               x_prev_with_disb_return_amt  => NULL                   ,
2604               x_prev_with_disb_return_date => NULL                   ,
2605               x_school_use_txt             => NULL                   ,
2606               x_lender_use_txt             => NULL                   ,
2607               x_guarantor_use_txt          => NULL                   ,
2608               x_validation_edit_txt        => NULL                   ,
2609               x_send_record_txt            => NULL
2610             );
2611             -- invoke validation edits to validate the change record. The validation checks if
2612             -- all the required fields are populated or not for a change record
2613             log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2614                        p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
2615                       );
2616             igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
2617                                             p_b_return_status => l_b_return_status,
2618                                             p_v_message_name  => l_v_message_name,
2619                                         p_t_message_tokens => l_d_message_tokens
2620                                            );
2621             IF NOT(l_b_return_status) THEN
2622               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2623                          p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
2624                         );
2625               RAISE e_valid_edits;
2626             END IF;
2627             p_b_return_status := TRUE;
2628             p_v_message_name  := NULL;
2629             log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2630                        p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
2631                       );
2632           ELSE
2633             CLOSE c_sl_clchsn_dtls;
2634             rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
2635             log_to_fnd(p_v_module => ' create_awd_chg_rec  ',
2636                        p_v_string => ' Change record is updated '                   ||
2637                                      ' Change_field_code  : ' ||'AWARD_AMOUNT'      ||
2638                                      ' Change record type : ' ||'24 - Loan Increase'||
2639                                      ' Change code        : ' ||'A - LOan Increase '
2640                       );
2641             igf_sl_clchsn_dtls_pkg.update_row
2642             (
2643                x_rowid                      => l_v_rowid                                           ,
2644                x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2645                x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2646                x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2647                x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2648                x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2649                x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2650                x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2651                x_status_code                => 'R'                                                 ,
2652                x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2653                x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2654                x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2655                x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2656                x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2657                x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2658                x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2659                x_new_amt                    => p_n_new_amount                                      ,
2660                x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2661                x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2662                x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2663                x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2664                x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2665                x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2666                x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2667                x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2668                x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2669                x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2670                x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2671                x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2672                x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2673                x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2674                x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2675                x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2676                x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2677                x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2678                x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2679                x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2680                x_validation_edit_txt        => NULL                                                ,
2681                x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2682             );
2683             -- invoke validation edits to validate the change record. The validation checks if
2684             -- all the required fields are populated or not for a change record
2685             log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2686                        p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2687                       );
2688             igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
2689                                             p_b_return_status => l_b_return_status,
2690                                             p_v_message_name  => l_v_message_name,
2691                                             p_t_message_tokens => l_d_message_tokens
2692                                            );
2693             IF NOT(l_b_return_status) THEN
2694               log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2695                          p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
2696                         );
2697               -- substring of the out bound parameter l_v_message_name is carried
2698               -- out since it can expect either IGS OR IGF message
2699               fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
2700               igf_sl_cl_chg_prc.parse_tokens(
2701                 p_t_message_tokens => l_d_message_tokens);
2702 /*
2703               FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
2704                  fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
2705               END LOOP;
2706 */
2707               log_to_fnd(p_v_module => ' create_awd_chg_rec',
2708                          p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
2709                         );
2710               igf_sl_clchsn_dtls_pkg.update_row
2711               (
2712                   x_rowid                      => l_v_rowid                                           ,
2713                   x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
2714                   x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
2715                   x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
2716                   x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
2717                   x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
2718                   x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
2719                   x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
2720                   x_status_code                => 'N'                                                 ,
2721                   x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
2722                   x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
2723                   x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
2724                   x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
2725                   x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
2726                   x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
2727                   x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
2728                   x_new_amt                    => p_n_new_amount                                      ,
2729                   x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
2730                   x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
2731                   x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
2732                   x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
2733                   x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
2734                   x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
2735                   x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
2736                   x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
2737                   x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
2738                   x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
2739                   x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
2740                   x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
2741                   x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
2742                   x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
2743                   x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
2744                   x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
2745                   x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
2746                   x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
2747                   x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
2748                   x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
2749                   x_validation_edit_txt        => fnd_message.get                                     ,
2750                   x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
2751               );
2752               log_to_fnd(p_v_module => ' create_awd_chg_rec',
2753                          p_v_string => ' updated the status of change send record to Not Ready to Send'
2754                         );
2755             END IF;
2756             p_b_return_status := TRUE;
2757             p_v_message_name  := NULL;
2758           END IF;
2759         ELSIF l_n_resp_guarantee_amt = p_n_new_amount THEN
2760           log_to_fnd(p_v_module => ' create_awd_chg_rec ',
2761                      p_v_string => ' Verifying if  change record is to be deleted or not '  ||
2762                                    ' cl version             : ' ||l_n_cl_version            ||
2763                                    ' loan status            : ' ||l_v_loan_status           ||
2764                                    ' Processing Type        : ' ||l_v_prc_type_code         ||
2765                                    ' Loan Record Status     : ' ||l_c_cl_rec_status         ||
2766                                    ' Response Guaranteed amt: ' ||l_n_resp_guarantee_amt    ||
2767                                    ' New Guaranteed amt     : ' ||p_n_new_amount            ||
2768                                    ' change_field_code      : ' ||'AWARD_AMOUNT'            ||
2769                                    ' chg_type               : ' ||p_v_chg_type              ||
2770                                    ' Change record type     : ' ||'24 - Loan Increase'      ||
2771                                    ' change_code            : ' ||'A - Loan Increase'
2772                      );
2773         -- verify if the existing change record is to be deleted
2774           l_v_sqlstmt := 'SELECT  chdt.ROWID  '                                             ||
2775                          'FROM   igf_sl_clchsn_dtls chdt '                                  ||
2776                          'WHERE  chdt.loan_number_txt = :cp_v_loan_number '                 ||
2777                          'AND    chdt.old_amt  = :cp_n_old_amt '                            ||
2778                          'AND    chdt.change_field_code = ''AWARD_AMOUNT'' '                ||
2779                          'AND    chdt.change_code_txt = ''A'' '                             ||
2780                          'AND    chdt.status_code IN (''R'',''N'',''D'') '                  ||
2781                          'AND    chdt.change_record_type_txt = ''24'' ';
2782           l_v_rowid := NULL;
2783           OPEN  c_sl_clchsn_dtls FOR l_v_sqlstmt USING l_v_loan_number,p_n_new_amount;
2784           FETCH c_sl_clchsn_dtls INTO l_v_rowid;
2785           IF c_sl_clchsn_dtls%FOUND THEN
2786             log_to_fnd(p_v_module => 'create_awd_chg_rec',
2787                        p_v_string => ' @24 Change record to be deleted ' ||
2788                                      ' Award Id    : '    ||l_n_award_id ||
2789                                      ' loan number : '    ||l_v_loan_number
2790                   );
2791             igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
2792             log_to_fnd(p_v_module => 'create_awd_chg_rec',
2793                        p_v_string => ' @24 Change record deleted successfully' ||
2794                                      ' Award Id    : '    ||l_n_award_id       ||
2795                                      ' loan number : '    ||l_v_loan_number
2796                       );
2797           END IF;
2798           CLOSE c_sl_clchsn_dtls;
2799           p_b_return_status := TRUE;
2800           p_v_message_name  := NULL;
2801         END IF;
2802       END IF;
2803     END IF;
2804   END IF;
2805 EXCEPTION
2806   WHEN e_resource_busy THEN
2807     ROLLBACK TO igf_sl_cl_create_chg_awd_sp;
2808     log_to_fnd(p_v_module => 'create_awd_chg_rec',
2809                p_v_string => ' eresource busy exception handler ' ||SQLERRM
2810                );
2811     p_b_return_status := FALSE;
2812     p_v_message_name  := 'IGS_GE_RECORD_LOCKED';
2813     RETURN;
2814   WHEN e_valid_edits THEN
2815     ROLLBACK TO igf_sl_cl_create_chg_awd_sp;
2816     log_to_fnd(p_v_module => 'create_awd_chg_rec',
2817                p_v_string => ' e_valid_edits exception handler change record validation raised errors '||l_v_message_name
2818               );
2819     p_b_return_status := FALSE;
2820     p_v_message_name  := l_v_message_name;
2821     igf_sl_cl_chg_prc.g_message_tokens := l_d_message_tokens;
2822     RETURN;
2823   WHEN OTHERS THEN
2824     ROLLBACK TO igf_sl_cl_create_chg_awd_sp;
2825     log_to_fnd(p_v_module => 'create_awd_chg_rec',
2826                p_v_string => ' when others exception handler ' ||SQLERRM
2827               );
2828     fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
2829     fnd_message.set_token('NAME','igf_sl_cl_create_chg.create_awd_chg_rec');
2830     igs_ge_msg_stack.add;
2831     app_exception.raise_exception;
2832 
2833 END create_awd_chg_rec;
2834 
2835 
2836 PROCEDURE create_disb_chg_rec ( p_new_disb_rec    IN igf_aw_awd_disb_all%ROWTYPE,
2837                                 p_old_disb_rec    IN igf_aw_awd_disb_all%ROWTYPE,
2838                                 p_b_return_status OUT NOCOPY BOOLEAN,
2839                                 p_v_message_name  OUT NOCOPY VARCHAR2
2840                               ) AS
2841 ------------------------------------------------------------------
2842 --Created by  : Sanil Madathil, Oracle IDC
2843 --Date created: 10 October 2004
2844 --
2845 -- Purpose:
2846 -- Invoked     : From Award Disbursement table handler after update row
2847 -- Function    :
2848 --
2849 -- Parameters  : p_new_disb_rec    : IN parameter. Required.
2850 --               p_old_disb_rec    : IN parameter. Required.
2851 --               p_b_return_status : OUT parmeter.
2852 --               p_v_message_name  : OUT parameter
2853 --
2854 --
2855 --Known limitations/enhancements and/or remarks:
2856 --
2857 --Change History:
2858 --Who         When            What
2859 ------------------------------------------------------------------
2860 CURSOR  c_igf_sl_lorlar(cp_n_award_id igf_aw_award_all.award_id%TYPE) IS
2861 SELECT  lar.loan_number
2862        ,lar.loan_status
2863        ,lor.prc_type_code
2864        ,lor.cl_rec_status
2865 FROM    igf_sl_lor_all lor
2866        ,igf_sl_loans_all lar
2867 WHERE  lor.loan_id  = lar.loan_id
2868 AND    lar.award_id = cp_n_award_id;
2869 
2870 rec_c_igf_sl_lorlar c_igf_sl_lorlar%ROWTYPE;
2871 
2872 CURSOR  c_resp_r1_r8 (cp_v_loan_number igf_sl_loans_all.loan_number%TYPE,
2873                       cp_n_disb_num    igf_aw_awd_disb_all.disb_num%TYPE
2874                       ) IS
2875 SELECT   resp_r8.disb_date
2876         ,resp_r8.disb_gross_amt
2877         ,resp_r8.disb_hold_rel_ind
2878 FROM     igf_sl_cl_resp_r1_all resp_r1
2879         ,igf_sl_cl_resp_r8_all resp_r8
2880 WHERE    resp_r1.loan_number = cp_v_loan_number
2881 AND      resp_r1.cl_rec_status IN ('B','G')
2882 AND      resp_r1.prc_type_code IN ('GO','GP')
2883 AND      resp_r1.cl_version_code = 'RELEASE-4'
2884 AND      resp_r8.clrp1_id  = resp_r1.clrp1_id
2885 AND      resp_r8.clrp8_id  = cp_n_disb_num
2886 ORDER BY resp_r1.clrp1_id DESC;
2887 
2888 TYPE ref_CurclchsnTyp IS REF CURSOR;
2889 c_igf_sl_clchsn_dtls ref_CurclchsnTyp;
2890 
2891 rec_c_igf_sl_clchsn_dtls igf_sl_clchsn_dtls%ROWTYPE;
2892 
2893 l_n_cl_version            igf_sl_cl_setup_all.cl_version%TYPE;
2894 l_v_loan_status           igf_sl_loans_all.loan_status%TYPE;
2895 l_n_clchgsnd_id           igf_sl_clchsn_dtls.clchgsnd_id%TYPE;
2896 l_v_sqlstmt               VARCHAR2(32767);
2897 l_v_rowid                 ROWID;
2898 l_v_message_name          fnd_new_messages.message_name%TYPE;
2899 l_b_return_status         BOOLEAN;
2900 l_c_cl_rec_status         igf_sl_lor_all.cl_rec_status%TYPE;
2901 l_v_prc_type_code         igf_sl_lor_all.prc_type_code%TYPE;
2902 l_n_award_id              igf_aw_award_all.award_id%TYPE;
2903 l_v_loan_number           igf_sl_loans_all.loan_number%TYPE;
2904 l_n_disb_num              igf_aw_awd_disb_all.disb_num%TYPE;
2905 l_v_old_fund_status       igf_aw_awd_disb_all.fund_status%TYPE;
2906 l_n_resp_disb_gross_amt   igf_aw_awd_disb_all.disb_gross_amt%TYPE;
2907 l_d_resp_disb_date        igf_aw_awd_disb_all.disb_date%TYPE;
2908 l_c_resp_hold_rel_ind     igf_aw_awd_disb_all.hold_rel_ind%TYPE;
2909 l_n_new_disb_accepted_amt  igf_aw_awd_disb_all.disb_accepted_amt%TYPE;
2910 l_d_new_disb_date         igf_aw_awd_disb_all.disb_date%TYPE;
2911 l_c_new_hold_rel_ind      igf_aw_awd_disb_all.hold_rel_ind%TYPE;
2912 l_v_new_change_type_code  igf_aw_awd_disb_all.change_type_code%TYPE;
2913 l_v_change_code_txt       igf_sl_clchsn_dtls.change_code_txt%TYPE;
2914 l_d_disb_cancel_dt        igf_aw_awd_disb_all.disb_DATE%TYPE;
2915 l_n_disb_cancel_amt       igf_aw_awd_disb_all.disb_gross_amt%TYPE;
2916 l_v_fund_return_mthd_code igf_aw_awd_disb_all.fund_return_mthd_code%TYPE;
2917 
2918 e_valid_edits     EXCEPTION;
2919 e_resource_busy   EXCEPTION;
2920 l_d_message_tokens        igf_sl_cl_chg_prc.token_tab%TYPE;
2921 PRAGMA EXCEPTION_INIT(e_resource_busy,-00054);
2922 
2923 BEGIN
2924   SAVEPOINT igf_sl_cl_create_chg_disb_sp;
2925   log_to_fnd(p_v_module => 'create_disb_chg_rec',
2926              p_v_string => ' Entered Procedure create_disb_chg_rec: The input parameters are '         ||
2927                            ' new reference of Award Id         : ' ||p_new_disb_rec.award_id           ||
2928                            ' new reference of disb num         : ' ||p_new_disb_rec.disb_num           ||
2929                            ' new reference of disb date        : ' ||TO_CHAR(p_new_disb_rec.disb_date,'YYYY-MM-DD HH24:MI:SS')||
2930                            ' new reference of disb accepted amt: ' ||p_new_disb_rec.disb_accepted_amt  ||
2931                            ' new reference of hold rel ind     : ' ||p_new_disb_rec.hold_rel_ind       ||
2932                            ' new reference of trans type       : ' ||p_new_disb_rec.trans_type         ||
2933                            ' new reference of fund status      : ' ||p_new_disb_rec.fund_status        ||
2934                            ' old reference of fund status      : ' ||p_old_disb_rec.fund_status        ||
2935                            ' new reference of disb gross amt   : ' ||p_new_disb_rec.disb_gross_amt     ||
2936                            ' new reference of change type code : ' ||NVL(p_new_disb_rec.change_type_code,'NULL')
2937             );
2938 
2939   l_n_award_id             := p_new_disb_rec.award_id;
2940   l_n_disb_num             := p_new_disb_rec.disb_num;
2941   l_n_new_disb_accepted_amt:= p_new_disb_rec.disb_accepted_amt;
2942   l_d_new_disb_date        := TRUNC(p_new_disb_rec.disb_date);
2943   l_c_new_hold_rel_ind     := p_new_disb_rec.hold_rel_ind ;
2944   l_v_old_fund_status      := NVL(p_new_disb_rec.fund_status,'N');
2945   l_v_new_change_type_code := NVL(p_new_disb_rec.change_type_code,'NULL');
2946   l_v_fund_return_mthd_code:= p_new_disb_rec.fund_return_mthd_code;
2947 
2948   -- get the processing type code, loan record status, loan status and loan number for the input award id
2949   OPEN   c_igf_sl_lorlar (cp_n_award_id => l_n_award_id);
2950   FETCH  c_igf_sl_lorlar INTO rec_c_igf_sl_lorlar;
2951   CLOSE  c_igf_sl_lorlar;
2952 
2953   l_v_loan_number   := rec_c_igf_sl_lorlar.loan_number;
2954   l_v_loan_status   := rec_c_igf_sl_lorlar.loan_status;
2955   l_v_prc_type_code := rec_c_igf_sl_lorlar.prc_type_code;
2956   l_c_cl_rec_status := rec_c_igf_sl_lorlar.cl_rec_status;
2957 
2958   -- get the loan version for the input award id
2959   l_n_cl_version  := igf_sl_award.get_loan_cl_version(p_n_award_id => l_n_award_id);
2960 
2961   -- get the latest Guaranteed Response for the required fields
2962   -- if no records are found change record would not be created. The control is returned back
2963   -- to the calling program.
2964 
2965   OPEN  c_resp_r1_r8 ( cp_v_loan_number => l_v_loan_number,
2966                        cp_n_disb_num    => l_n_disb_num
2967                      );
2968   FETCH  c_resp_r1_r8 INTO l_d_resp_disb_date,l_n_resp_disb_gross_amt,l_c_resp_hold_rel_ind;
2969   IF c_resp_r1_r8%NOTFOUND THEN
2970     CLOSE  c_resp_r1_r8 ;
2971     log_to_fnd(p_v_module => ' create_disb_chg_rec ',
2972                p_v_string => ' No Response record found '          ||
2973                              ' for loan number: ' ||l_v_loan_number||
2974                              ' and for disb num: '||l_n_disb_num
2975               );
2976     p_b_return_status := FALSE;
2977     p_v_message_name  := NULL;
2978     RETURN;
2979   END IF;
2980   CLOSE  c_resp_r1_r8 ;
2981   log_to_fnd(p_v_module => ' create_disb_chg_rec ',
2982              p_v_string => ' Response record found '                              ||
2983                            ' for loan number: '        ||l_v_loan_number          ||
2984                            ' and for disb num: '       ||l_n_disb_num             ||
2985                            ' response disb date: '     ||TO_CHAR(l_d_resp_disb_date,'YYYY-MM-DD HH24:MI:SS')||
2986                            ' response disb gross amt: '||l_n_resp_disb_gross_amt  ||
2987                            ' response hold rel ind: '  ||l_c_resp_hold_rel_ind
2988             );
2989   -- Check if the Loan Cancellation record should be created or not
2990   -- Change Record would be created only if
2991   -- The version = CommonLine Release 4 Version Loan,
2992   -- Loan Status = Accepted
2993   -- Loan Record Status is Guaranteed or Accepted
2994   -- Processing Type Code is GP or GO
2995   -- information is different from the latest guaranteed response for the loan
2996 
2997   IF (l_n_cl_version = 'RELEASE-4' AND
2998       l_v_loan_status = 'A' AND
2999       l_v_prc_type_code IN ('GO','GP') AND
3000       l_c_cl_rec_status IN ('B','G'))
3001   THEN
3002     --  following code logic is for pre disbursement changes (@9)
3003     -- if fund status is 'N', changes are pre disbursement changes (@9)
3004     IF l_v_old_fund_status = 'N'  THEN
3005       -- start  of code logic for disbursement date change
3006       -- start of code logic for Change Type other than Reinstatement
3007       IF TRUNC(l_d_resp_disb_date) <> l_d_new_disb_date AND
3008          l_v_new_change_type_code <> 'REINSTATEMENT'
3009       THEN
3010         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3011                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
3012                                  ' cl version                : '||l_n_cl_version            ||
3013                                  ' loan status               : '||l_v_loan_status           ||
3014                                  ' Processing Type           : '||l_v_prc_type_code         ||
3015                                  ' Loan Record Status        : '||l_c_cl_rec_status         ||
3016                                  ' response disb date        : '||l_d_resp_disb_date        ||
3017                                  ' new reference of disb date: '||l_d_new_disb_date         ||
3018                                  ' fund status               : '||'Pre Disbursement change' ||
3019                                  ' change type code          : '|| l_v_new_change_type_code ||
3020                                  ' change_field_code         : '|| 'DISB_DATE'
3021                   );
3022         -- verify if the existing change record is to be updated or inserted
3023         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
3024                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
3025                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
3026                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
3027                        'AND    chdt.old_date = :cp_d_resp_disb_dt '          ||
3028                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
3029                        'AND    chdt.change_code_txt = ''B'' '                ||
3030                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
3031                        'AND    chdt.change_record_type_txt = ''09'' ';
3032 
3033         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,TRUNC(l_d_resp_disb_date);
3034         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3035         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
3036           CLOSE c_igf_sl_clchsn_dtls;
3037           l_v_rowid       := NULL;
3038           l_n_clchgsnd_id := NULL;
3039           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3040                      p_v_string => ' New Change record is Created  '                                  ||
3041                                    ' Change_field_code  : ' ||'DISB_DATE'                             ||
3042                                    ' Change record type : ' ||'09 - Disbursement Cancellation/Change' ||
3043                                    ' Change code        : ' ||'B - Disbursement Date Change '
3044                     );
3045           igf_sl_clchsn_dtls_pkg.insert_row
3046           (
3047              x_rowid                      => l_v_rowid                ,
3048              x_clchgsnd_id                => l_n_clchgsnd_id          ,
3049              x_award_id                   => l_n_award_id             ,
3050              x_loan_number_txt            => l_v_loan_number          ,
3051              x_cl_version_code            => l_n_cl_version           ,
3052              x_change_field_code          => 'DISB_DATE'              ,
3053              x_change_record_type_txt     => '09'                     ,
3054              x_change_code_txt            => 'B'                      ,
3055              x_status_code                => 'R'                      ,
3056              x_status_date                => TRUNC(SYSDATE)           ,
3057              x_response_status_code       => NULL                     ,
3058              x_old_value_txt              => NULL                     ,
3059              x_new_value_txt              => NULL                     ,
3060              x_old_date                   => TRUNC(l_d_resp_disb_date),
3061              x_new_date                   => l_d_new_disb_date        ,
3062              x_old_amt                    => NULL                     ,
3063              x_new_amt                    => NULL                     ,
3064              x_disbursement_number        => l_n_disb_num             ,
3065              x_disbursement_date          => TRUNC(l_d_resp_disb_date),
3066              x_change_issue_code          => 'PRE_DISB'               ,
3067              x_disbursement_cancel_date   => NULL                     ,
3068              x_disbursement_cancel_amt    => NULL                     ,
3069              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
3070              x_disbursement_revised_date  => l_d_new_disb_date        ,
3071              x_disbursement_reissue_code  => NULL                     ,
3072              x_disbursement_reinst_code   => 'N'                      ,
3073              x_disbursement_return_amt    => NULL                     ,
3074              x_disbursement_return_date   => NULL                     ,
3075              x_disbursement_return_code   => NULL                     ,
3076              x_post_with_disb_return_amt  => NULL                     ,
3077              x_post_with_disb_return_date => NULL                     ,
3078              x_post_with_disb_return_code => NULL                     ,
3079              x_prev_with_disb_return_amt  => NULL                     ,
3080              x_prev_with_disb_return_date => NULL                     ,
3081              x_school_use_txt             => NULL                     ,
3082              x_lender_use_txt             => NULL                     ,
3083              x_guarantor_use_txt          => NULL                     ,
3084              x_validation_edit_txt        => NULL                     ,
3085              x_send_record_txt            => NULL
3086            );
3087            -- invoke validation edits to validate the change record. The validation checks if
3088            -- all the required fields are populated or not for a change record
3089            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3090                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
3091                      );
3092            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
3093                                            p_b_return_status => l_b_return_status,
3094                                            p_v_message_name  => l_v_message_name,
3095                                         p_t_message_tokens => l_d_message_tokens
3096                                            );
3097            IF NOT(l_b_return_status) THEN
3098             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3099                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
3100                       );
3101              RAISE e_valid_edits;
3102            END IF;
3103            p_b_return_status := TRUE;
3104            p_v_message_name  := NULL;
3105            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3106                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
3107                      );
3108         ELSE
3109           CLOSE c_igf_sl_clchsn_dtls;
3110           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
3111           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
3112                      p_v_string => ' Change record is updated '                                      ||
3113                                    ' Change_field_code : ' ||'DISB_DATE'                             ||
3114                                    ' Change record type: ' ||'09 - Disbursement Cancellation/Change' ||
3115                                    ' Change code       : ' ||'B - Disbursement Date Change '         ||
3116                                    ' new disb date     : ' || l_d_new_disb_date
3117                     );
3118           igf_sl_clchsn_dtls_pkg.update_row
3119           (
3120             x_rowid                      => l_v_rowid                                           ,
3121             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
3122             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
3123             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
3124             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
3125             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
3126             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
3127             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
3128             x_status_code                => 'R'                                                 ,
3129             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
3130             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
3131             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
3132             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
3133             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
3134             x_new_date                   => l_d_new_disb_date                                   ,
3135             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
3136             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
3137             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
3138             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
3139             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
3140             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
3141             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
3142             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
3143             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
3144             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
3145             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
3146             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
3147             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
3148             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
3149             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
3150             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
3151             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
3152             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
3153             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
3154             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
3155             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
3156             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
3157             x_validation_edit_txt        => NULL                                                ,
3158             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
3159           );
3160           -- invoke validation edits to validate the change record. The validation checks if
3161           -- all the required fields are populated or not for a change record
3162           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3163                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3164                     );
3165           l_v_message_name  := NULL;
3166           l_b_return_status := TRUE;
3167           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
3168                                           p_b_return_status => l_b_return_status,
3169                                           p_v_message_name  => l_v_message_name,
3170                                         p_t_message_tokens => l_d_message_tokens
3171                                           );
3172 
3173           IF NOT(l_b_return_status) THEN
3174             -- substring of the out bound parameter l_v_message_name is carried
3175             -- out since it can expect either IGS OR IGF message
3176             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
3177             igf_sl_cl_chg_prc.parse_tokens(
3178               p_t_message_tokens => l_d_message_tokens);
3179 /*
3180             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
3181                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
3182             END LOOP;
3183 */
3184             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3185                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3186                        );
3187             log_to_fnd(p_v_module => ' create_disb_chg_rec',
3188                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
3189                        );
3190             igf_sl_clchsn_dtls_pkg.update_row
3191             (
3192               x_rowid                      => l_v_rowid                                           ,
3193               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
3194               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
3195               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
3196               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
3197               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
3198               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
3199               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
3200               x_status_code                => 'N'                                                 ,
3201               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
3202               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
3203               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
3204               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
3205               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
3206               x_new_date                   => l_d_new_disb_date                                   ,
3207               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
3208               x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
3209               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
3210               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
3211               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
3212               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
3213               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
3214               x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
3215               x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
3216               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
3217               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
3218               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
3219               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
3220               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
3221               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
3222               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
3223               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
3224               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
3225               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
3226               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
3227               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
3228               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
3229               x_validation_edit_txt        => fnd_message.get                                     ,
3230               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
3231             );
3232             log_to_fnd(p_v_module => ' create_disb_chg_rec',
3233                        p_v_string => ' updated the status of change send record to Not Ready to Send'
3234                       );
3235           END IF;
3236           p_b_return_status := TRUE;
3237           p_v_message_name  := NULL;
3238           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3239                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3240                     );
3241         END IF;
3242       -- if changes have been reverted back
3243       ELSIF l_d_resp_disb_date = l_d_new_disb_date AND
3244             l_v_new_change_type_code <> 'REINSTATEMENT'
3245       THEN
3246         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3247                    p_v_string => ' Verifying if  change record is to be deleted or not  '   ||
3248                                  ' cl version                : ' ||l_n_cl_version            ||
3249                                  ' loan status               : ' ||l_v_loan_status           ||
3250                                  ' Processing Type           : ' ||l_v_prc_type_code         ||
3251                                  ' Loan Record Status        : ' ||l_c_cl_rec_status         ||
3252                                  ' response disb date        : ' ||l_d_resp_disb_date        ||
3253                                  ' new reference of disb date: ' ||l_d_new_disb_date         ||
3254                                  ' fund status               : ' ||'Pre Disbursement change' ||
3255                                  ' change type code          : ' || l_v_new_change_type_code ||
3256                                  ' change_field_code         : ' || 'DISB_DATE'
3257                   );
3258         -- verify if the existing change record is to be deleted
3259         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
3260                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
3261                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
3262                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
3263                        'AND    chdt.old_date = :cp_d_new_disb_dt '           ||
3264                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
3265                        'AND    chdt.change_code_txt = ''B'' '                ||
3266                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
3267                        'AND    chdt.change_record_type_txt = ''09'' ';
3268 
3269         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_new_disb_date;
3270         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3271         IF c_igf_sl_clchsn_dtls%FOUND THEN
3272           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3273                      p_v_string => ' Change record to be deleted '  ||
3274                                    ' Award Id     : '||l_n_award_id ||
3275                                    ' Disb Num     : '||l_n_disb_num ||
3276                                    ' New disb Date: '||l_d_new_disb_date
3277                     );
3278           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
3279           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3280                      p_v_string => ' Change record deleted  Successfully'  ||
3281                                    ' Award Id     : '||l_n_award_id ||
3282                                    ' Disb Num     : '||l_n_disb_num ||
3283                                    ' New disb Date: '||l_d_new_disb_date
3284                     );
3285         END IF;
3286         CLOSE c_igf_sl_clchsn_dtls;
3287         p_b_return_status := TRUE;
3288         p_v_message_name  := NULL;
3289       END IF;
3290       -- end of code logic for Change Type other than Reinstatement
3291       -- end  of code logic for disbursement date change
3292 
3293       -- start of code logic for hold release indicator change
3294       IF l_c_resp_hold_rel_ind <> l_c_new_hold_rel_ind THEN
3295         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3296                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
3297                                  ' cl version               : '||l_n_cl_version            ||
3298                                  ' loan status              : '||l_v_loan_status           ||
3299                                  ' Processing Type          : '||l_v_prc_type_code         ||
3300                                  ' Loan Record Status       : '||l_c_cl_rec_status         ||
3301                                  ' response hold release ind: '||l_c_resp_hold_rel_ind     ||
3302                                  ' new hold release ind     : '||l_c_new_hold_rel_ind      ||
3303                                  ' fund status              : '||'Pre Disbursement change' ||
3304                                  ' change type code         : '||l_v_new_change_type_code ||
3305                                  ' change_field_code        : '||'DISB_HOLD_REL_IND'
3306                   );
3307         -- verify if the existing change record is to be updated or inserted
3308         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                             ||
3309                        'FROM   igf_sl_clchsn_dtls chdt '                        ||
3310                        'WHERE  chdt.award_id = :cp_n_award_id '                 ||
3311                        'AND    chdt.disbursement_number = :cp_n_dib_num '       ||
3312                        'AND    chdt.old_value_txt = :cp_c_resp_hold_rel_ind '   ||
3313                        'AND    chdt.change_field_code = ''DISB_HOLD_REL_IND'' ' ||
3314                        'AND    chdt.change_code_txt = ''E'' '                   ||
3315                        'AND    chdt.status_code IN (''R'',''N'',''D'') '        ||
3316                        'AND    chdt.change_record_type_txt = ''09'' ';
3317 
3318         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_c_resp_hold_rel_ind;
3319         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3320         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
3321           CLOSE c_igf_sl_clchsn_dtls;
3322           l_v_rowid       := NULL;
3323           l_n_clchgsnd_id := NULL;
3324           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
3325                      p_v_string => ' New Change record is Created '                                  ||
3326                                    ' Change_field_code : ' ||'DISB_HOLD_REL_IND'                     ||
3327                                    ' Change record type: ' ||'09 - Disbursement Cancellation/Change' ||
3328                                    ' Change code       : ' ||'E - Disbursement Hold Release Change '
3329                     );
3330           igf_sl_clchsn_dtls_pkg.insert_row
3331           (
3332              x_rowid                      => l_v_rowid                ,
3333              x_clchgsnd_id                => l_n_clchgsnd_id          ,
3334              x_award_id                   => l_n_award_id             ,
3335              x_loan_number_txt            => l_v_loan_number          ,
3336              x_cl_version_code            => l_n_cl_version           ,
3337              x_change_field_code          => 'DISB_HOLD_REL_IND'      ,
3338              x_change_record_type_txt     => '09'                     ,
3339              x_change_code_txt            => 'E'                      ,
3340              x_status_code                => 'R'                      ,
3341              x_status_date                => TRUNC(SYSDATE)           ,
3342              x_response_status_code       => NULL                     ,
3343              x_old_value_txt              => l_c_resp_hold_rel_ind    ,
3344              x_new_value_txt              => l_c_new_hold_rel_ind     ,
3345              x_old_date                   => NULL                     ,
3346              x_new_date                   => NULL                     ,
3347              x_old_amt                    => NULL                     ,
3348              x_new_amt                    => NULL                     ,
3349              x_disbursement_number        => l_n_disb_num             ,
3350              x_disbursement_date          => l_d_resp_disb_date       ,
3351              x_change_issue_code          => 'PRE_DISB'               ,
3352              x_disbursement_cancel_date   => NULL                     ,
3353              x_disbursement_cancel_amt    => NULL                     ,
3354              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
3355              x_disbursement_revised_date  => l_d_new_disb_date        ,
3356              x_disbursement_reissue_code  => NULL                     ,
3357              x_disbursement_reinst_code   => 'N'                      ,
3358              x_disbursement_return_amt    => NULL                     ,
3359              x_disbursement_return_date   => NULL                     ,
3360              x_disbursement_return_code   => NULL                     ,
3361              x_post_with_disb_return_amt  => NULL                     ,
3362              x_post_with_disb_return_date => NULL                     ,
3363              x_post_with_disb_return_code => NULL                     ,
3364              x_prev_with_disb_return_amt  => NULL                     ,
3365              x_prev_with_disb_return_date => NULL                     ,
3366              x_school_use_txt             => NULL                     ,
3367              x_lender_use_txt             => NULL                     ,
3368              x_guarantor_use_txt          => NULL                     ,
3369              x_validation_edit_txt        => NULL                     ,
3370              x_send_record_txt            => NULL
3371            );
3372             -- invoke validation edits to validate the change record. The validation checks if
3373            -- all the required fields are populated or not for a change record
3374            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3375                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
3376                      );
3377            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
3378                                            p_b_return_status => l_b_return_status,
3379                                            p_v_message_name  => l_v_message_name,
3380                                         p_t_message_tokens => l_d_message_tokens
3381                                            );
3382            IF NOT(l_b_return_status) THEN
3383             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3384                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
3385                       );
3386              RAISE e_valid_edits;
3387            END IF;
3388            p_b_return_status := TRUE;
3389            p_v_message_name  := NULL;
3390            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3391                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
3392                      );
3393         ELSE
3394           CLOSE c_igf_sl_clchsn_dtls;
3395           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
3396           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
3397                      p_v_string => ' Change record is updated '                                        ||
3398                                    ' Change_field_code   : ' ||'DISB_HOLD_REL_IND'                     ||
3399                                    ' Change record type  : ' ||'09 - Disbursement Cancellation/Change' ||
3400                                    ' Change code         : ' ||'E - Disbursement Hold Release Change ' ||
3401                                    ' new hold release ind: ' || l_c_new_hold_rel_ind
3402                     );
3403           igf_sl_clchsn_dtls_pkg.update_row
3404           (
3405             x_rowid                      => l_v_rowid,
3406             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
3407             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
3408             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
3409             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
3410             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
3411             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
3412             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
3413             x_status_code                => 'R'                                                 ,
3414             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
3415             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
3416             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
3417             x_new_value_txt              => l_c_new_hold_rel_ind                                ,
3418             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
3419             x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
3420             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
3421             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
3422             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
3423             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
3424             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
3425             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
3426             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
3427             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
3428             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
3429             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
3430             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
3431             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
3432             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
3433             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
3434             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
3435             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
3436             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
3437             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
3438             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
3439             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
3440             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
3441             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
3442             x_validation_edit_txt        => NULL                                                ,
3443             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
3444           );
3445           -- invoke validation edits to validate the change record. The validation checks if
3446           -- all the required fields are populated or not for a change record
3447           log_to_fnd(p_v_module => ' create_disb_chg_rec',
3448                      p_v_string => ' validating the Change record for  Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3449                     );
3450           l_v_message_name  := NULL;
3451           l_b_return_status := TRUE;
3452           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
3453                                           p_b_return_status => l_b_return_status,
3454                                           p_v_message_name  => l_v_message_name,
3455                                           p_t_message_tokens => l_d_message_tokens
3456                                           );
3457 
3458           IF NOT(l_b_return_status) THEN
3459             -- substring of the out bound parameter l_v_message_name is carried
3460             -- out since it can expect either IGS OR IGF message
3461             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
3462             igf_sl_cl_chg_prc.parse_tokens(
3463               p_t_message_tokens => l_d_message_tokens);
3464 /*
3465             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
3466                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
3467             END LOOP;
3468 */
3469             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3470                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3471                        );
3472             log_to_fnd(p_v_module => ' create_disb_chg_rec',
3473                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
3474                        );
3475             igf_sl_clchsn_dtls_pkg.update_row
3476             (
3477               x_rowid                      => l_v_rowid                                           ,
3478               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
3479               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
3480               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
3481               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
3482               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
3483               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
3484               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
3485               x_status_code                => 'N'                                                 ,
3486               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
3487               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
3488               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
3489               x_new_value_txt              => l_c_new_hold_rel_ind                                ,
3490               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
3491               x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
3492               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
3493               x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
3494               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
3495               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
3496               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
3497               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
3498               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
3499               x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
3500               x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
3501               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
3502               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
3503               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
3504               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
3505               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
3506               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
3507               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
3508               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
3509               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
3510               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
3511               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
3512               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
3513               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
3514               x_validation_edit_txt        => fnd_message.get                                     ,
3515               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
3516             );
3517             log_to_fnd(p_v_module => ' create_disb_chg_rec',
3518                        p_v_string => ' updated the status of change send record to Not Ready to Send'
3519                        );
3520           END IF;
3521           p_b_return_status := TRUE;
3522           p_v_message_name  := NULL;
3523           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3524                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3525                     );
3526         END IF;
3527       -- if changes have been reverted back
3528       ELSIF l_c_resp_hold_rel_ind = l_c_new_hold_rel_ind THEN
3529         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3530                    p_v_string => ' Verifying if  change record is to be deleted or not '    ||
3531                                  ' cl version               : '||l_n_cl_version            ||
3532                                  ' loan status              : '||l_v_loan_status           ||
3533                                  ' Processing Type          : '||l_v_prc_type_code         ||
3534                                  ' Loan Record Status       : '||l_c_cl_rec_status         ||
3535                                  ' response hold release ind: '||l_c_resp_hold_rel_ind     ||
3536                                  ' new hold release ind     : '||l_c_new_hold_rel_ind      ||
3537                                  ' fund status              : '||'Pre Disbursement change' ||
3538                                  ' change type code         : '|| l_v_new_change_type_code ||
3539                                  ' change_field_code        : '|| 'DISB_HOLD_REL_IND'
3540                    );
3541         -- verify if the existing change record is to be deleted
3542         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                             ||
3543                        'FROM   igf_sl_clchsn_dtls chdt '                        ||
3544                        'WHERE  chdt.award_id = :cp_n_award_id '                 ||
3545                        'AND    chdt.disbursement_number = :cp_n_dib_num '       ||
3546                        'AND    chdt.old_value_txt = :cp_c_new_hold_rel_ind '    ||
3547                        'AND    chdt.change_field_code = ''DISB_HOLD_REL_IND'' ' ||
3548                        'AND    chdt.change_code_txt = ''E'' '                   ||
3549                        'AND    chdt.status_code IN (''R'',''N'',''D'') '        ||
3550                        'AND    chdt.change_record_type_txt = ''09'' ';
3551         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_c_new_hold_rel_ind;
3552         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3553         IF c_igf_sl_clchsn_dtls%FOUND THEN
3554           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3555                      p_v_string => ' Change record to be deleted '         ||
3556                                    ' Award Id            : '||l_n_award_id ||
3557                                    ' Disb Num            : '||l_n_disb_num ||
3558                                    ' new hold release ind: '||l_c_new_hold_rel_ind
3559                     );
3560           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
3561           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3562                      p_v_string => ' Change record to be deleted successfully'||
3563                                    ' Award Id            : '||l_n_award_id    ||
3564                                    ' Disb Num            : '||l_n_disb_num    ||
3565                                    ' new hold release ind: '||l_c_new_hold_rel_ind
3566                     );
3567         END IF;
3568         CLOSE c_igf_sl_clchsn_dtls;
3569         p_b_return_status := TRUE;
3570         p_v_message_name  := NULL;
3571       END IF;
3572       -- end of code logic for hold release indicator change
3573       -- start of code logic for disbursement amount change
3574       -- start of code logic for Change Type othet than Reinstatement
3575       IF l_n_resp_disb_gross_amt <> l_n_new_disb_accepted_amt AND
3576          l_v_new_change_type_code <> 'REINSTATEMENT'
3577       THEN
3578         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3579                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
3580                                  ' cl version                : '||l_n_cl_version            ||
3581                                  ' loan status               : '||l_v_loan_status           ||
3582                                  ' Processing Type           : '||l_v_prc_type_code         ||
3583                                  ' Loan Record Status        : '||l_c_cl_rec_status         ||
3584                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt   ||
3585                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt ||
3586                                  ' fund status               : '||'Pre Disbursement change' ||
3587                                  ' change type code          : '||l_v_new_change_type_code  ||
3588                                  ' change_field_code         : '||'DISB_AMOUNT'
3589                   );
3590 
3591         l_d_disb_cancel_dt  := NULL;
3592         l_n_disb_cancel_amt := NULL;
3593         IF l_n_resp_disb_gross_amt < l_n_new_disb_accepted_amt THEN
3594           -- change code = amount increase
3595           l_v_change_code_txt := 'AI';
3596         ELSIF l_n_resp_disb_gross_amt > l_n_new_disb_accepted_amt AND
3597               l_v_new_change_type_code = 'NULL' THEN
3598           -- change code = amount decrease
3599           l_v_change_code_txt := 'AD';
3600         ELSIF l_n_resp_disb_gross_amt > l_n_new_disb_accepted_amt AND
3601               l_v_new_change_type_code = 'CANCELLATION' THEN
3602           -- change code = amount decrease with cancellation
3603           l_v_change_code_txt := 'ADI';
3604           l_d_disb_cancel_dt  := TRUNC(SYSDATE);
3605           l_n_disb_cancel_amt := NVL((l_n_resp_disb_gross_amt - l_n_new_disb_accepted_amt),0);
3606         END IF;
3607         log_to_fnd(p_v_module => ' Derived tha change Code ',
3608                    p_v_string => ' Change Code: '   ||l_v_change_code_txt
3609                   );
3610         IF l_v_change_code_txt = 'ADI' THEN
3611           l_v_rowid := NULL;
3612           -- verify if the AI record is to be deleted
3613           l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
3614                          'FROM   igf_sl_clchsn_dtls chdt '                     ||
3615                          'WHERE  chdt.award_id = :cp_n_award_id '              ||
3616                          'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
3617                          'AND    chdt.old_amt = :cp_d_resp_disb_amt '          ||
3618                          'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
3619                          'AND    chdt.change_code_txt = ''AI'' '               ||
3620                          'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
3621                          'AND    chdt.change_record_type_txt = ''09'' ';
3622           OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_resp_disb_gross_amt;
3623           FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3624           IF c_igf_sl_clchsn_dtls%FOUND THEN
3625             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3626                        p_v_string => ' Change record to be deleted'        ||
3627                                      ' Award Id        : ' ||l_n_award_id   ||
3628                                      ' loan number     : ' ||l_v_loan_number||
3629                                      ' Disb Number     : ' ||l_n_disb_num   ||
3630                                      ' change_code_txt : ' ||'AI'
3631                   );
3632             igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
3633             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3634                        p_v_string => ' Change record deleted successfully ' ||
3635                                      ' Award Id        : ' ||l_n_award_id   ||
3636                                      ' loan number     : ' ||l_v_loan_number||
3637                                      ' Disb Number     : ' ||l_n_disb_num   ||
3638                                      ' change_code_txt : ' ||'AI'
3639                   );
3640           END IF;
3641           CLOSE c_igf_sl_clchsn_dtls;
3642           p_b_return_status := TRUE;
3643           p_v_message_name  := NULL;
3644         END IF;
3645         -- verify if the existing change record is to be updated or inserted
3646         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
3647                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
3648                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
3649                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
3650                        'AND    chdt.old_amt = :cp_d_resp_disb_amt '          ||
3651                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
3652                        'AND    chdt.change_code_txt = :cp_change_code '      ||
3653                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
3654                        'AND    chdt.change_record_type_txt = ''09'' ';
3655         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_resp_disb_gross_amt,l_v_change_code_txt;
3656         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3657         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
3658           CLOSE c_igf_sl_clchsn_dtls;
3659           l_v_rowid       := NULL;
3660           l_n_clchgsnd_id := NULL;
3661           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
3662                      p_v_string => ' New Change record is Created '                                  ||
3663                                    ' Change_field_code : ' ||'DISB_AMOUNT'                           ||
3664                                    ' Change record type: ' ||'09 - Disbursement Cancellation/Change' ||
3665                                    ' Change code       : ' ||l_v_change_code_txt
3666                     );
3667           igf_sl_clchsn_dtls_pkg.insert_row
3668           (
3669              x_rowid                      => l_v_rowid                ,
3670              x_clchgsnd_id                => l_n_clchgsnd_id          ,
3671              x_award_id                   => l_n_award_id             ,
3672              x_loan_number_txt            => l_v_loan_number          ,
3673              x_cl_version_code            => l_n_cl_version           ,
3674              x_change_field_code          => 'DISB_AMOUNT'            ,
3675              x_change_record_type_txt     => '09'                     ,
3676              x_change_code_txt            => l_v_change_code_txt      ,
3677              x_status_code                => 'R'                      ,
3678              x_status_date                => TRUNC(SYSDATE)           ,
3679              x_response_status_code       => NULL                     ,
3680              x_old_value_txt              => NULL                     ,
3681              x_new_value_txt              => NULL                     ,
3682              x_old_date                   => NULL                     ,
3683              x_new_date                   => NULL                     ,
3684              x_old_amt                    => l_n_resp_disb_gross_amt  ,
3685              x_new_amt                    => l_n_new_disb_accepted_amt,
3686              x_disbursement_number        => l_n_disb_num             ,
3687              x_disbursement_date          => l_d_resp_disb_date       ,
3688              x_change_issue_code          => 'PRE_DISB'               ,
3689              x_disbursement_cancel_date   => l_d_disb_cancel_dt       ,
3690              x_disbursement_cancel_amt    => l_n_disb_cancel_amt      ,
3691              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
3692              x_disbursement_revised_date  => l_d_new_disb_date        ,
3693              x_disbursement_reissue_code  => NULL                     ,
3694              x_disbursement_reinst_code   => 'N'                      ,
3695              x_disbursement_return_amt    => NULL                     ,
3696              x_disbursement_return_date   => NULL                     ,
3697              x_disbursement_return_code   => NULL                     ,
3698              x_post_with_disb_return_amt  => NULL                     ,
3699              x_post_with_disb_return_date => NULL                     ,
3700              x_post_with_disb_return_code => NULL                     ,
3701              x_prev_with_disb_return_amt  => NULL                     ,
3702              x_prev_with_disb_return_date => NULL                     ,
3703              x_school_use_txt             => NULL                     ,
3704              x_lender_use_txt             => NULL                     ,
3705              x_guarantor_use_txt          => NULL                     ,
3706              x_validation_edit_txt        => NULL                     ,
3707              x_send_record_txt            => NULL
3708            );
3709             -- invoke validation edits to validate the change record. The validation checks if
3710            -- all the required fields are populated or not for a change record
3711            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3712                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
3713                      );
3714            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
3715                                            p_b_return_status => l_b_return_status,
3716                                            p_v_message_name  => l_v_message_name,
3717                                         p_t_message_tokens => l_d_message_tokens
3718                                            );
3719            IF NOT(l_b_return_status) THEN
3720             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3721                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
3722                       );
3723              RAISE e_valid_edits;
3724            END IF;
3725            p_b_return_status := TRUE;
3726            p_v_message_name  := NULL;
3727            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3728                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
3729                      );
3730         ELSE
3731           CLOSE c_igf_sl_clchsn_dtls;
3732           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
3733           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
3734                      p_v_string => ' Change record is updated '                                        ||
3735                                    ' Change_field_code  : ' ||'DISB_AMOUNT'                           ||
3736                                    ' Change record type : ' ||'09 - Disbursement Cancellation/Change' ||
3737                                    ' Change code        : ' ||l_v_change_code_txt                     ||
3738                                    ' new disb Amount    : ' ||l_n_new_disb_accepted_amt
3739                     );
3740             l_d_disb_cancel_dt  := rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date ;
3741             l_n_disb_cancel_amt := rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt  ;
3742           IF rec_c_igf_sl_clchsn_dtls.change_code_txt = 'ADI' THEN
3743             l_d_disb_cancel_dt  := TRUNC(SYSDATE);
3744             l_n_disb_cancel_amt := NVL((rec_c_igf_sl_clchsn_dtls.old_amt - l_n_new_disb_accepted_amt),0);
3745           END IF;
3746           igf_sl_clchsn_dtls_pkg.update_row
3747           (
3748             x_rowid                      => l_v_rowid                                           ,
3749             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
3750             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
3751             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
3752             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
3753             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
3754             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
3755             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
3756             x_status_code                => 'R'                                                 ,
3757             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
3758             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
3759             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
3760             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
3761             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
3762             x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
3763             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
3764             x_new_amt                    => l_n_new_disb_accepted_amt                           ,
3765             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
3766             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
3767             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
3768             x_disbursement_cancel_date   => l_d_disb_cancel_dt                                  ,
3769             x_disbursement_cancel_amt    => l_n_disb_cancel_amt                                 ,
3770             x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                           ,
3771             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
3772             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
3773             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
3774             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
3775             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
3776             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
3777             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
3778             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
3779             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
3780             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
3781             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
3782             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
3783             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
3784             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
3785             x_validation_edit_txt        => NULL                                                ,
3786             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
3787           );
3788           -- invoke validation edits to validate the change record. The validation checks if
3789           -- all the required fields are populated or not for a change record
3790           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3791                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3792                     );
3793           l_v_message_name  := NULL;
3794           l_b_return_status := TRUE;
3795           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
3796                                           p_b_return_status => l_b_return_status,
3797                                           p_v_message_name  => l_v_message_name,
3798                                           p_t_message_tokens => l_d_message_tokens
3799                                           );
3800 
3801           IF NOT(l_b_return_status) THEN
3802             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3803                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3804                       );
3805             -- substring of the out bound parameter l_v_message_name is carried
3806             -- out since it can expect either IGS OR IGF message
3807             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
3808             igf_sl_cl_chg_prc.parse_tokens(
3809               p_t_message_tokens => l_d_message_tokens);
3810 /*
3811             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
3812                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
3813             END LOOP;
3814 */
3815             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3816                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3817                        );
3818             log_to_fnd(p_v_module => ' create_disb_chg_rec',
3819                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
3820                        );
3821             igf_sl_clchsn_dtls_pkg.update_row
3822             (
3823               x_rowid                      => l_v_rowid                                           ,
3824               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
3825               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
3826               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
3827               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
3828               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
3829               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
3830               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
3831               x_status_code                => 'N'                                                 ,
3832               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
3833               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
3834               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
3835               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
3836               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
3837               x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
3838               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
3839               x_new_amt                    => l_n_new_disb_accepted_amt                           ,
3840               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
3841               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
3842               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
3843               x_disbursement_cancel_date   => l_d_disb_cancel_dt                                  ,
3844               x_disbursement_cancel_amt    => l_n_disb_cancel_amt                                 ,
3845               x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                           ,
3846               x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
3847               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
3848               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
3849               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
3850               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
3851               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
3852               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
3853               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
3854               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
3855               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
3856               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
3857               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
3858               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
3859               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
3860               x_validation_edit_txt        => fnd_message.get                                     ,
3861               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
3862             );
3863             log_to_fnd(p_v_module => ' create_disb_chg_rec',
3864                        p_v_string => ' updated the status of change send record to Not Ready to Send'
3865                       );
3866           END IF;
3867           p_b_return_status := TRUE;
3868           p_v_message_name  := NULL;
3869           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3870                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
3871                     );
3872         END IF;
3873       -- if changes are reverted back
3874       ELSIF l_n_resp_disb_gross_amt = l_n_new_disb_accepted_amt AND
3875             l_v_new_change_type_code <> 'REINSTATEMENT'
3876       THEN
3877         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3878                    p_v_string => ' Verifying if existing change record is to be deleted '||
3879                                  ' cl version                : '||l_n_cl_version            ||
3880                                  ' loan status               : '||l_v_loan_status           ||
3881                                  ' Processing Type           : '||l_v_prc_type_code         ||
3882                                  ' Loan Record Status        : '||l_c_cl_rec_status         ||
3883                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt   ||
3884                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt ||
3885                                  ' fund status               : '||'Pre Disbursement change' ||
3886                                  ' change type code          : '||l_v_new_change_type_code  ||
3887                                  ' change_field_code         : '||'DISB_AMOUNT'
3888                   );
3889         -- verify if the existing change record is to be deleted
3890         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
3891                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
3892                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
3893                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
3894                        'AND    chdt.old_amt = :cp_d_new_disb_amt '           ||
3895                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
3896                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
3897                        'AND    chdt.change_record_type_txt = ''09'' ';
3898 
3899         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_new_disb_accepted_amt;
3900         LOOP
3901           FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3902           EXIT  WHEN c_igf_sl_clchsn_dtls%NOTFOUND;
3903           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
3904           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3905                      p_v_string => ' Change record to be deleted '                                  ||
3906                                    ' Award Id      : '   ||l_n_award_id                             ||
3907                                    ' Disb Num      : '   ||l_n_disb_num                             ||
3908                                    ' Loan number   : '   ||rec_c_igf_sl_clchsn_dtls.loan_number_txt ||
3909                                    ' Change send id: '   ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id     ||
3910                                    ' Change Code   : '   ||rec_c_igf_sl_clchsn_dtls.change_code_txt
3911                     );
3912           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
3913           log_to_fnd(p_v_module => ' create_disb_chg_rec',
3914                      p_v_string => ' Change record deleted successfully '                           ||
3915                                    ' Award Id      : '   ||l_n_award_id                             ||
3916                                    ' Disb Num      : '   ||l_n_disb_num                             ||
3917                                    ' Loan number   : '   ||rec_c_igf_sl_clchsn_dtls.loan_number_txt ||
3918                                    ' Change send id: '   ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id     ||
3919                                    ' Change Code   : '   ||rec_c_igf_sl_clchsn_dtls.change_code_txt
3920                     );
3921         END LOOP;
3922         CLOSE c_igf_sl_clchsn_dtls;
3923         p_b_return_status := TRUE;
3924         p_v_message_name  := NULL;
3925       END IF;
3926       -- end of code logic for Change Type othet than Reinstatement
3927       -- start of code logic for Change Type = Reinstatement
3928       IF l_n_resp_disb_gross_amt <> l_n_new_disb_accepted_amt AND
3929          l_v_new_change_type_code = 'REINSTATEMENT'
3930       THEN
3931         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
3932                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
3933                                  ' cl version                : '||l_n_cl_version            ||
3934                                  ' loan status               : '||l_v_loan_status           ||
3935                                  ' Processing Type           : '||l_v_prc_type_code         ||
3936                                  ' Loan Record Status        : '||l_c_cl_rec_status         ||
3937                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt   ||
3938                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt ||
3939                                  ' fund status               : '||'Pre Disbursement change' ||
3940                                  ' change type code          : '||l_v_new_change_type_code  ||
3941                                  ' change_field_code         : '||'DISB_AMOUNT'
3942                   );
3943         -- verify if the existing change record is to be updated or inserted
3944         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
3945                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
3946                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
3947                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
3948                        'AND    chdt.old_amt = :cp_d_resp_disb_amt '          ||
3949                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
3950                        'AND    chdt.change_code_txt = ''C'' '                ||
3951                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
3952                        'AND    chdt.change_record_type_txt = ''09'' ';
3953 
3954         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_resp_disb_gross_amt;
3955         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
3956         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
3957           CLOSE c_igf_sl_clchsn_dtls;
3958           l_v_rowid       := NULL;
3959           l_n_clchgsnd_id := NULL;
3960           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
3961                      p_v_string => ' New Change record is Created '                                  ||
3962                                    ' Change_field_code : ' ||'DISB_AMOUNT'                           ||
3963                                    ' Change record type: ' ||'09 - Disbursement Cancellation/Change' ||
3964                                    ' Change code       : ' ||'C - Disbursement Reinstatement '
3965                     );
3966           igf_sl_clchsn_dtls_pkg.insert_row
3967           (
3968              x_rowid                      => l_v_rowid                   ,
3969              x_clchgsnd_id                => l_n_clchgsnd_id             ,
3970              x_award_id                   => l_n_award_id                ,
3971              x_loan_number_txt            => l_v_loan_number             ,
3972              x_cl_version_code            => l_n_cl_version              ,
3973              x_change_field_code          => 'DISB_AMOUNT'               ,
3974              x_change_record_type_txt     => '09'                        ,
3975              x_change_code_txt            => 'C'                         ,
3976              x_status_code                => 'R'                         ,
3977              x_status_date                => TRUNC(SYSDATE)              ,
3978              x_response_status_code       => NULL                        ,
3979              x_old_value_txt              => NULL                        ,
3980              x_new_value_txt              => NULL                        ,
3981              x_old_date                   => NULL                        ,
3982              x_new_date                   => NULL                        ,
3983              x_old_amt                    => l_n_resp_disb_gross_amt     ,
3984              x_new_amt                    => l_n_new_disb_accepted_amt   ,
3985              x_disbursement_number        => l_n_disb_num                ,
3986              x_disbursement_date          => l_d_resp_disb_date          ,
3987              x_change_issue_code          => 'PRE_DISB'                  ,
3988              x_disbursement_cancel_date   => NULL                        ,
3989              x_disbursement_cancel_amt    => NULL                        ,
3990              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt   ,
3991              x_disbursement_revised_date  => l_d_new_disb_date           ,
3992              x_disbursement_reissue_code  => NULL                        ,
3993              x_disbursement_reinst_code   => 'Y'                         ,
3994              x_disbursement_return_amt    => NULL                        ,
3995              x_disbursement_return_date   => NULL                        ,
3996              x_disbursement_return_code   => NULL                        ,
3997              x_post_with_disb_return_amt  => NULL                        ,
3998              x_post_with_disb_return_date => NULL                        ,
3999              x_post_with_disb_return_code => NULL                        ,
4000              x_prev_with_disb_return_amt  => NULL                        ,
4001              x_prev_with_disb_return_date => NULL                        ,
4002              x_school_use_txt             => NULL                        ,
4003              x_lender_use_txt             => NULL                        ,
4004              x_guarantor_use_txt          => NULL                        ,
4005              x_validation_edit_txt        => NULL                        ,
4006              x_send_record_txt            => NULL
4007            );
4008             -- invoke validation edits to validate the change record. The validation checks if
4009            -- all the required fields are populated or not for a change record
4010            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4011                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
4012                      );
4013            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
4014                                            p_b_return_status => l_b_return_status,
4015                                            p_v_message_name  => l_v_message_name,
4016                                         p_t_message_tokens => l_d_message_tokens
4017                                            );
4018            IF NOT(l_b_return_status) THEN
4019             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4020                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
4021                       );
4022              RAISE e_valid_edits;
4023            END IF;
4024            p_b_return_status := TRUE;
4025            p_v_message_name  := NULL;
4026            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4027                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
4028                      );
4029         ELSE
4030           CLOSE c_igf_sl_clchsn_dtls;
4031           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
4032           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
4033                      p_v_string => ' Change record is updated '                                       ||
4034                                    ' Change_field_code  : ' ||'DISB_AMOUNT'                           ||
4035                                    ' Change record type : ' ||'09 - Disbursement Cancellation/Change' ||
4036                                    ' Change code        : ' ||'C - Disbursement Reinstatement '       ||
4037                                    ' new disb Amount    : ' ||l_n_new_disb_accepted_amt
4038                     );
4039           igf_sl_clchsn_dtls_pkg.update_row
4040           (
4041             x_rowid                      => l_v_rowid                                           ,
4042             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
4043             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
4044             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
4045             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
4046             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
4047             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
4048             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
4049             x_status_code                => 'R'                                                 ,
4050             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
4051             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
4052             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
4053             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
4054             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
4055             x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
4056             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
4057             x_new_amt                    => l_n_new_disb_accepted_amt                           ,
4058             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
4059             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
4060             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
4061             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
4062             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
4063             x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                           ,
4064             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
4065             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
4066             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
4067             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
4068             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
4069             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
4070             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
4071             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
4072             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
4073             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
4074             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
4075             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
4076             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
4077             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
4078             x_validation_edit_txt        => NULL                                                ,
4079             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4080           );
4081           -- invoke validation edits to validate the change record. The validation checks if
4082           -- all the required fields are populated or not for a change record
4083           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4084                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4085                     );
4086           l_v_message_name  := NULL;
4087           l_b_return_status := TRUE;
4088           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
4089                                           p_b_return_status => l_b_return_status,
4090                                           p_v_message_name  => l_v_message_name,
4091                                           p_t_message_tokens => l_d_message_tokens
4092                                           );
4093 
4094           IF NOT(l_b_return_status) THEN
4095             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4096                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4097                       );
4098             -- substring of the out bound parameter l_v_message_name is carried
4099             -- out since it can expect either IGS OR IGF message
4100             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
4101             igf_sl_cl_chg_prc.parse_tokens(
4102               p_t_message_tokens => l_d_message_tokens);
4103 /*
4104             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
4105                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
4106             END LOOP;
4107 */
4108             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4109                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4110                        );
4111             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4112                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
4113                        );
4114             igf_sl_clchsn_dtls_pkg.update_row
4115             (
4116               x_rowid                      => l_v_rowid                                           ,
4117               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
4118               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
4119               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
4120               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
4121               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
4122               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
4123               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
4124               x_status_code                => 'N'                                                 ,
4125               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
4126               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
4127               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
4128               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
4129               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
4130               x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
4131               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
4132               x_new_amt                    => l_n_new_disb_accepted_amt                           ,
4133               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
4134               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
4135               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
4136               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
4137               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
4138               x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                           ,
4139               x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
4140               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
4141               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
4142               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
4143               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
4144               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
4145               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
4146               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
4147               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
4148               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
4149               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
4150               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
4151               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
4152               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
4153               x_validation_edit_txt        => NULL                                                ,
4154               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4155             );
4156             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4157                        p_v_string => ' updated the status of change send record to Not Ready to Send'
4158                       );
4159           END IF;
4160           p_b_return_status := TRUE;
4161           p_v_message_name  := NULL;
4162           log_to_fnd(p_v_module => ' create_disb_chg_rec',
4163                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4164                     );
4165         END IF;
4166       -- if changes are reverted back
4167       ELSIF l_n_resp_disb_gross_amt = l_n_new_disb_accepted_amt AND
4168             l_v_new_change_type_code = 'REINSTATEMENT'
4169       THEN
4170         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4171                    p_v_string => ' Verifying if  change record is to be deleted or not '    ||
4172                                  ' cl version                : '||l_n_cl_version            ||
4173                                  ' loan status               : '||l_v_loan_status           ||
4174                                  ' Processing Type           : '||l_v_prc_type_code         ||
4175                                  ' Loan Record Status        : '||l_c_cl_rec_status         ||
4176                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt   ||
4177                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt ||
4178                                  ' fund status               : '||'Pre Disbursement change' ||
4179                                  ' change type code          : '||l_v_new_change_type_code  ||
4180                                  ' change_field_code         : '||'DISB_AMOUNT'
4181                   );
4182         -- verify if the existing change record is to be deleted
4183         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
4184                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
4185                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
4186                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
4187                        'AND    chdt.old_amt = :cp_d_new_disb_amt '           ||
4188                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
4189                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
4190                        'AND    chdt.change_code_txt = ''C'' '                ||
4191                        'AND    chdt.change_record_type_txt = ''09'' ';
4192 
4193         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_new_disb_accepted_amt;
4194         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
4195         IF c_igf_sl_clchsn_dtls%FOUND THEN
4196           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4197                      p_v_string => ' Change record to be deleted '    ||
4198                                    ' Award Id       : '||l_n_award_id ||
4199                                    ' Disb Num       : '||l_n_disb_num ||
4200                                    ' New disb Amount: '||l_n_new_disb_accepted_amt
4201                     );
4202           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
4203           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4204                      p_v_string => ' Change record to be deleted  successfully'    ||
4205                                    ' Award Id       : '||l_n_award_id              ||
4206                                    ' Disb Num       : '||l_n_disb_num              ||
4207                                    ' New disb Amount: '||l_n_new_disb_accepted_amt
4208                     );
4209         END IF;
4210         CLOSE c_igf_sl_clchsn_dtls;
4211         p_b_return_status := TRUE;
4212         p_v_message_name  := NULL;
4213       END IF;
4214       -- end of code logic for Change Type = Reinstatement
4215       -- end of code logic for disbursement amount change
4216 
4217       -- start  of code logic for disbursement date change
4218       -- start of code logic for Change Type = Reinstatement
4219       IF l_d_resp_disb_date <> l_d_new_disb_date AND
4220          l_v_new_change_type_code = 'REINSTATEMENT'
4221       THEN
4222         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4223                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
4224                                  ' cl version                : '||l_n_cl_version            ||
4225                                  ' loan status               : '||l_v_loan_status           ||
4226                                  ' Processing Type           : '||l_v_prc_type_code         ||
4227                                  ' Loan Record Status        : '||l_c_cl_rec_status         ||
4228                                  ' response disb date        : '||l_d_resp_disb_date        ||
4229                                  ' new reference of disb date: '||l_d_new_disb_date         ||
4230                                  ' fund status               : '||'Pre Disbursement change' ||
4231                                  ' change type code          : '|| l_v_new_change_type_code ||
4232                                  ' change_field_code         : '|| 'DISB_DATE'
4233                   );
4234         -- verify if the existing change record is to be updated or inserted
4235         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
4236                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
4237                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
4238                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
4239                        'AND    chdt.old_date = :cp_d_resp_disb_dt '          ||
4240                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
4241                        'AND    chdt.change_code_txt = ''C'' '                ||
4242                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
4243                        'AND    chdt.change_record_type_txt = ''09'' ';
4244 
4245         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_resp_disb_date;
4246         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
4247         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
4248           CLOSE c_igf_sl_clchsn_dtls;
4249           l_v_rowid       := NULL;
4250           l_n_clchgsnd_id := NULL;
4251           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4252                      p_v_string => ' New Change record is Created  '                                  ||
4253                                    ' Change_field_code  : ' ||'DISB_DATE'                             ||
4254                                    ' Change record type : ' ||'09 - Disbursement Cancellation/Change' ||
4255                                    ' Change code        : ' ||'C - Disbursement Reinstatement '
4256                     );
4257           igf_sl_clchsn_dtls_pkg.insert_row
4258           (
4259              x_rowid                      => l_v_rowid                ,
4260              x_clchgsnd_id                => l_n_clchgsnd_id          ,
4261              x_award_id                   => l_n_award_id             ,
4262              x_loan_number_txt            => l_v_loan_number          ,
4263              x_cl_version_code            => l_n_cl_version           ,
4264              x_change_field_code          => 'DISB_DATE'              ,
4265              x_change_record_type_txt     => '09'                     ,
4266              x_change_code_txt            => 'C'                      ,
4267              x_status_code                => 'R'                      ,
4268              x_status_date                => TRUNC(SYSDATE)           ,
4269              x_response_status_code       => NULL                     ,
4270              x_old_value_txt              => NULL                     ,
4271              x_new_value_txt              => NULL                     ,
4272              x_old_date                   => l_d_resp_disb_date       ,
4273              x_new_date                   => l_d_new_disb_date        ,
4274              x_old_amt                    => NULL                     ,
4275              x_new_amt                    => NULL                     ,
4276              x_disbursement_number        => l_n_disb_num             ,
4277              x_disbursement_date          => l_d_resp_disb_date       ,
4278              x_change_issue_code          => 'PRE_DISB'               ,
4279              x_disbursement_cancel_date   => NULL                     ,
4280              x_disbursement_cancel_amt    => NULL                     ,
4281              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
4282              x_disbursement_revised_date  => l_d_new_disb_date        ,
4283              x_disbursement_reissue_code  => NULL                     ,
4284              x_disbursement_reinst_code   => 'Y'                      ,
4285              x_disbursement_return_amt    => NULL                     ,
4286              x_disbursement_return_date   => NULL                     ,
4287              x_disbursement_return_code   => NULL                     ,
4288              x_post_with_disb_return_amt  => NULL                     ,
4289              x_post_with_disb_return_date => NULL                     ,
4290              x_post_with_disb_return_code => NULL                     ,
4291              x_prev_with_disb_return_amt  => NULL                     ,
4292              x_prev_with_disb_return_date => NULL                     ,
4293              x_school_use_txt             => NULL                     ,
4294              x_lender_use_txt             => NULL                     ,
4295              x_guarantor_use_txt          => NULL                     ,
4296              x_validation_edit_txt        => NULL                     ,
4297              x_send_record_txt            => NULL
4298            );
4299            -- invoke validation edits to validate the change record. The validation checks if
4300            -- all the required fields are populated or not for a change record
4301            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4302                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
4303                      );
4304            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
4305                                            p_b_return_status => l_b_return_status,
4306                                            p_v_message_name  => l_v_message_name,
4307                                         p_t_message_tokens => l_d_message_tokens
4308                                            );
4309            IF NOT(l_b_return_status) THEN
4310             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4311                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
4312                       );
4313              RAISE e_valid_edits;
4314            END IF;
4315            p_b_return_status := TRUE;
4316            p_v_message_name  := NULL;
4317            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4318                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
4319                      );
4320         ELSE
4321           CLOSE c_igf_sl_clchsn_dtls;
4322           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
4323           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
4324                      p_v_string => ' Change record is updated '                                      ||
4325                                    ' Change_field_code : ' ||'DISB_DATE'                             ||
4326                                    ' Change record type: ' ||'09 - Disbursement Cancellation/Change' ||
4327                                    ' Change code       : ' ||'B - Disbursement Date Change '         ||
4328                                    ' new disb date     : ' || l_d_new_disb_date
4329                     );
4330           igf_sl_clchsn_dtls_pkg.update_row
4331           (
4332             x_rowid                      => l_v_rowid                                           ,
4333             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
4334             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
4335             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
4336             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
4337             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
4338             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
4339             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
4340             x_status_code                => 'R'                                                 ,
4341             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
4342             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
4343             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
4344             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
4345             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
4346             x_new_date                   => l_d_new_disb_date                                   ,
4347             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
4348             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
4349             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
4350             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
4351             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
4352             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
4353             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
4354             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
4355             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
4356             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
4357             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
4358             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
4359             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
4360             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
4361             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
4362             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
4363             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
4364             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
4365             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
4366             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
4367             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
4368             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
4369             x_validation_edit_txt        => NULL                                                ,
4370             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4371           );
4372           -- invoke validation edits to validate the change record. The validation checks if
4373           -- all the required fields are populated or not for a change record
4374           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4375                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4376                     );
4377           l_v_message_name  := NULL;
4378           l_b_return_status := TRUE;
4379           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
4380                                           p_b_return_status => l_b_return_status,
4381                                           p_v_message_name  => l_v_message_name,
4382                                           p_t_message_tokens => l_d_message_tokens
4383                                           );
4384 
4385           IF NOT(l_b_return_status) THEN
4386             -- substring of the out bound parameter l_v_message_name is carried
4387             -- out since it can expect either IGS OR IGF message
4388             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
4389             igf_sl_cl_chg_prc.parse_tokens(
4390               p_t_message_tokens => l_d_message_tokens);
4391 /*
4392             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
4393                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
4394             END LOOP;
4395 */
4396             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4397                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4398                        );
4399             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4400                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
4401                        );
4402             igf_sl_clchsn_dtls_pkg.update_row
4403             (
4404               x_rowid                      => l_v_rowid                                           ,
4405               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
4406               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
4407               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
4408               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
4409               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
4410               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
4411               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
4412               x_status_code                => 'N'                                                 ,
4413               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
4414               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
4415               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
4416               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
4417               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
4418               x_new_date                   => l_d_new_disb_date                                   ,
4419               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
4420               x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
4421               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
4422               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
4423               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
4424               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
4425               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
4426               x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
4427               x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
4428               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
4429               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
4430               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
4431               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
4432               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
4433               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
4434               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
4435               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
4436               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
4437               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
4438               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
4439               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
4440               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
4441               x_validation_edit_txt        => fnd_message.get                                     ,
4442               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4443             );
4444             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4445                        p_v_string => ' updated the status of change send record to Not Ready to Send'
4446                       );
4447           END IF;
4448           p_b_return_status := TRUE;
4449           p_v_message_name  := NULL;
4450           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4451                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4452                     );
4453         END IF;
4454       -- if changes have been reverted back
4455       ELSIF l_d_resp_disb_date = l_d_new_disb_date AND
4456             l_v_new_change_type_code = 'REINSTATEMENT'
4457       THEN
4458         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4459                    p_v_string => ' Verifying if  change record is to be deleted or not  '   ||
4460                                  ' cl version                : ' ||l_n_cl_version            ||
4461                                  ' loan status               : ' ||l_v_loan_status           ||
4462                                  ' Processing Type           : ' ||l_v_prc_type_code         ||
4463                                  ' Loan Record Status        : ' ||l_c_cl_rec_status         ||
4464                                  ' response disb date        : ' ||l_d_resp_disb_date        ||
4465                                  ' new reference of disb date: ' ||l_d_new_disb_date         ||
4466                                  ' fund status               : ' ||'Pre Disbursement change' ||
4467                                  ' change type code          : ' || l_v_new_change_type_code ||
4468                                  ' change_field_code         : ' || 'DISB_DATE'
4469                   );
4470         -- verify if the existing change record is to be deleted
4471         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
4472                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
4473                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
4474                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
4475                        'AND    chdt.old_date = :cp_d_new_disb_dt '           ||
4476                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
4477                        'AND    chdt.change_code_txt = ''C'' '                ||
4478                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
4479                        'AND    chdt.change_record_type_txt = ''09'' ';
4480 
4481         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_new_disb_date;
4482         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
4483         IF c_igf_sl_clchsn_dtls%FOUND THEN
4484           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4485                      p_v_string => ' Change record to be deleted '  ||
4486                                    ' Award Id     : '||l_n_award_id ||
4487                                    ' Disb Num     : '||l_n_disb_num ||
4488                                    ' New disb Date: '||l_d_new_disb_date
4489                     );
4490           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
4491           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4492                      p_v_string => ' Change record deleted  Successfully'  ||
4493                                    ' Award Id     : '||l_n_award_id ||
4494                                    ' Disb Num     : '||l_n_disb_num ||
4495                                    ' New disb Date: '||l_d_new_disb_date
4496                     );
4497         END IF;
4498         CLOSE c_igf_sl_clchsn_dtls;
4499         p_b_return_status := TRUE;
4500         p_v_message_name  := NULL;
4501       END IF;
4502       -- end of code logic for Change Type = Reinstatement
4503       -- end  of code logic for disbursement date change
4504     END IF;
4505     -- end of code logic for pre disbursement changes (@9)
4506 
4507     -- start of code logic for post disbursement changes (@10)
4508     -- if fund status is 'Y', changes are post disbursement changes (@10)
4509     IF l_v_old_fund_status = 'Y'  THEN
4510       -- start  of code logic for disbursement amount change
4511       -- Full or Partial Reinstatement
4512       IF l_n_resp_disb_gross_amt <> l_n_new_disb_accepted_amt AND
4513          l_v_new_change_type_code = 'REINSTATEMENT'
4514       THEN
4515         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4516                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
4517                                  ' cl version                : '||l_n_cl_version             ||
4518                                  ' loan status               : '||l_v_loan_status            ||
4519                                  ' Processing Type           : '||l_v_prc_type_code          ||
4520                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
4521                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt    ||
4522                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt  ||
4523                                  ' fund status               : '||'Post Disbursement change' ||
4524                                  ' change type code          : '||l_v_new_change_type_code   ||
4525                                  ' change_field_code         : '||'DISB_AMOUNT'
4526                   );
4527         -- verify if the existing change record is to be updated or inserted
4528         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
4529                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
4530                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
4531                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
4532                        'AND    chdt.old_amt = :cp_d_resp_disb_amt '          ||
4533                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
4534                        'AND    chdt.change_code_txt = ''C'' '                ||
4535                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
4536                        'AND    chdt.change_record_type_txt = ''10'' ';
4537 
4538         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_resp_disb_gross_amt;
4539         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
4540         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
4541           CLOSE c_igf_sl_clchsn_dtls;
4542           l_v_rowid       := NULL;
4543           l_n_clchgsnd_id := NULL;
4544           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
4545                      p_v_string => ' New Change record is Created '                                    ||
4546                                    ' Change_field_code : ' ||'DISB_AMOUNT'                             ||
4547                                    ' Change record type: ' ||'10 - Disbursement Notification / Change' ||
4548                                    ' Change code       : ' ||'C-Full or Partial Reinstatement'
4549                     );
4550           igf_sl_clchsn_dtls_pkg.insert_row
4551           (
4552              x_rowid                      => l_v_rowid                     ,
4553              x_clchgsnd_id                => l_n_clchgsnd_id               ,
4554              x_award_id                   => l_n_award_id                  ,
4555              x_loan_number_txt            => l_v_loan_number               ,
4556              x_cl_version_code            => l_n_cl_version                ,
4557              x_change_field_code          => 'DISB_AMOUNT'                 ,
4558              x_change_record_type_txt     => '10'                          ,
4559              x_change_code_txt            => 'C'                           ,
4560              x_status_code                => 'R'                           ,
4561              x_status_date                => TRUNC(SYSDATE)                ,
4562              x_response_status_code       => NULL                          ,
4563              x_old_value_txt              => NULL                          ,
4564              x_new_value_txt              => NULL                          ,
4565              x_old_date                   => NULL                          ,
4566              x_new_date                   => NULL                          ,
4567              x_old_amt                    => l_n_resp_disb_gross_amt       ,
4568              x_new_amt                    => l_n_new_disb_accepted_amt     ,
4569              x_disbursement_number        => l_n_disb_num                  ,
4570              x_disbursement_date          => l_d_resp_disb_date            ,
4571              x_change_issue_code          => 'POST_DISB'                   ,
4572              x_disbursement_cancel_date   => NULL                          ,
4573              x_disbursement_cancel_amt    => NULL                          ,
4574              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt     ,
4575              x_disbursement_revised_date  => l_d_new_disb_date             ,
4576              x_disbursement_reissue_code  => NULL                          ,
4577              x_disbursement_reinst_code   => 'Y'                           ,
4578              x_disbursement_return_amt    => NULL                          ,
4579              x_disbursement_return_date   => NULL                          ,
4580              x_disbursement_return_code   => NULL                          ,
4581              x_post_with_disb_return_amt  => NULL                          ,
4582              x_post_with_disb_return_date => NULL                          ,
4583              x_post_with_disb_return_code => NULL                          ,
4584              x_prev_with_disb_return_amt  => NULL                          ,
4585              x_prev_with_disb_return_date => NULL                          ,
4586              x_school_use_txt             => NULL                          ,
4587              x_lender_use_txt             => NULL                          ,
4588              x_guarantor_use_txt          => NULL                          ,
4589              x_validation_edit_txt        => NULL                          ,
4590              x_send_record_txt            => NULL
4591            );
4592             -- invoke validation edits to validate the change record. The validation checks if
4593            -- all the required fields are populated or not for a change record
4594            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4595                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
4596                      );
4597            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
4598                                            p_b_return_status => l_b_return_status,
4599                                            p_v_message_name  => l_v_message_name,
4600                                         p_t_message_tokens => l_d_message_tokens
4601                                            );
4602            IF NOT(l_b_return_status) THEN
4603             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4604                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
4605                       );
4606              RAISE e_valid_edits;
4607            END IF;
4608            p_b_return_status := TRUE;
4609            p_v_message_name  := NULL;
4610            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4611                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
4612                      );
4613         ELSE
4614           CLOSE c_igf_sl_clchsn_dtls;
4615           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
4616           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
4617                      p_v_string => ' Change record is updated '                                          ||
4618                                    ' Change_field_code : '  ||'DISB_AMOUNT'                             ||
4619                                    ' Change record type: '  ||'10 - Disbursement Notification / Change' ||
4620                                    ' Change code       : '  ||'C-Full or Partial Reinstatement'         ||
4621                                    ' new disb Amount   : '  ||l_n_new_disb_accepted_amt
4622                     );
4623           igf_sl_clchsn_dtls_pkg.update_row
4624           (
4625             x_rowid                      => l_v_rowid                                           ,
4626             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
4627             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
4628             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
4629             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
4630             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
4631             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
4632             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
4633             x_status_code                => 'R'                                                 ,
4634             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
4635             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
4636             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
4637             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
4638             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
4639             x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
4640             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
4641             x_new_amt                    => l_n_new_disb_accepted_amt                           ,
4642             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
4643             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
4644             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
4645             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
4646             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
4647             x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                           ,
4648             x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
4649             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
4650             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
4651             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
4652             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
4653             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
4654             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
4655             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
4656             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
4657             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
4658             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
4659             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
4660             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
4661             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
4662             x_validation_edit_txt        => NULL                                                ,
4663             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4664           );
4665           -- invoke validation edits to validate the change record. The validation checks if
4666           -- all the required fields are populated or not for a change record
4667           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4668                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4669                     );
4670           l_v_message_name  := NULL;
4671           l_b_return_status := TRUE;
4672           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
4673                                           p_b_return_status => l_b_return_status,
4674                                           p_v_message_name  => l_v_message_name,
4675                                           p_t_message_tokens => l_d_message_tokens
4676                                           );
4677 
4678           IF NOT(l_b_return_status) THEN
4679             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4680                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4681                       );
4682             -- substring of the out bound parameter l_v_message_name is carried
4683             -- out since it can expect either IGS OR IGF message
4684             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
4685             igf_sl_cl_chg_prc.parse_tokens(
4686               p_t_message_tokens => l_d_message_tokens);
4687 /*
4688             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
4689                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
4690             END LOOP;
4691 */
4692             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4693                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4694                        );
4695             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4696                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
4697                        );
4698             igf_sl_clchsn_dtls_pkg.update_row
4699             (
4700               x_rowid                      => l_v_rowid                                           ,
4701               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
4702               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
4703               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
4704               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
4705               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
4706               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
4707               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
4708               x_status_code                => 'N'                                                 ,
4709               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
4710               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
4711               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
4712               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
4713               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
4714               x_new_date                   => rec_c_igf_sl_clchsn_dtls.new_date                   ,
4715               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
4716               x_new_amt                    => l_n_new_disb_accepted_amt                           ,
4717               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
4718               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
4719               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
4720               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
4721               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
4722               x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                           ,
4723               x_disbursement_revised_date  => rec_c_igf_sl_clchsn_dtls.disbursement_revised_date  ,
4724               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
4725               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
4726               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
4727               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
4728               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
4729               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
4730               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
4731               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
4732               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
4733               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
4734               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
4735               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
4736               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
4737               x_validation_edit_txt        => fnd_message.get                                     ,
4738               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4739             );
4740             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4741                        p_v_string => ' updated the status of change send record to Not Ready to Send'
4742                        );
4743           END IF;
4744           p_b_return_status := TRUE;
4745           p_v_message_name  := NULL;
4746           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4747                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4748                     );
4749         END IF;
4750       -- changes are reverted back
4751       ELSIF l_n_resp_disb_gross_amt = l_n_new_disb_accepted_amt AND
4752          l_v_new_change_type_code = 'REINSTATEMENT'
4753       THEN
4754         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4755                    p_v_string => ' Verifying if  change record is to be deleted or not '     ||
4756                                  ' cl version                : '||l_n_cl_version             ||
4757                                  ' loan status               : '||l_v_loan_status            ||
4758                                  ' Processing Type           : '||l_v_prc_type_code          ||
4759                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
4760                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt    ||
4761                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt  ||
4762                                  ' fund status               : '||'Post Disbursement change' ||
4763                                  ' change type code          : '||l_v_new_change_type_code   ||
4764                                  ' change_field_code         : '||'DISB_AMOUNT'
4765                   );
4766         -- verify if the existing change record is to be deleted
4767         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
4768                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
4769                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
4770                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
4771                        'AND    chdt.old_amt = :cp_d_new_disb_amt '           ||
4772                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
4773                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
4774                        'AND    chdt.change_code_txt = ''C'' '                ||
4775                        'AND    chdt.change_record_type_txt = ''10'' ';
4776         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_new_disb_accepted_amt;
4777         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
4778         IF c_igf_sl_clchsn_dtls%FOUND THEN
4779           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4780                      p_v_string => ' Change record to be deleted '         ||
4781                                    ' Award Id       : ' ||l_n_award_id ||
4782                                    ' Disb Num       : ' ||l_n_disb_num ||
4783                                    ' new disb Amount: ' ||l_n_new_disb_accepted_amt
4784                     );
4785           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
4786           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4787                      p_v_string => ' Change record to be deleted  succesfully'         ||
4788                                    ' Award Id       : ' ||l_n_award_id ||
4789                                    ' Disb Num       : ' ||l_n_disb_num ||
4790                                    ' new disb Amount: ' ||l_n_new_disb_accepted_amt
4791                     );
4792         END IF;
4793         CLOSE c_igf_sl_clchsn_dtls;
4794         p_b_return_status := TRUE;
4795         p_v_message_name  := NULL;
4796       END IF;
4797       -- end  of code logic for disbursement amount change
4798       -- Full or Partial Reinstatement code logic ends here
4799 
4800       -- Full or Partial Reissue code logic starts here
4801       -- start  of code logic for disbursement amount change
4802       IF ((l_n_resp_disb_gross_amt <> l_n_new_disb_accepted_amt) AND
4803            l_v_new_change_type_code = 'REISSUE')
4804       THEN
4805         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4806                    p_v_string => ' Verifying if existing change record is to be updated or inserted '     ||
4807                                  ' cl version                : '||l_n_cl_version             ||
4808                                  ' loan status               : '||l_v_loan_status            ||
4809                                  ' Processing Type           : '||l_v_prc_type_code          ||
4810                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
4811                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt    ||
4812                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt  ||
4813                                  ' fund status               : '||'Post Disbursement change' ||
4814                                  ' change type code          : '||l_v_new_change_type_code   ||
4815                                  ' change_field_code         : '||'DISB_AMOUNT'
4816                   );
4817         -- verify if the existing change record is to be updated or inserted
4818         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
4819                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
4820                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
4821                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
4822                        'AND    chdt.old_amt = :cp_d_resp_disb_amt '          ||
4823                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
4824                        'AND    chdt.change_code_txt = ''B'' '                ||
4825                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
4826                        'AND    chdt.change_record_type_txt = ''10'' ';
4827         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_resp_disb_gross_amt;
4828         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
4829         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
4830 
4831           CLOSE c_igf_sl_clchsn_dtls;
4832           l_v_rowid       := NULL;
4833           l_n_clchgsnd_id := NULL;
4834           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
4835                      p_v_string => ' New Change record is Created '                                     ||
4836                                    ' Change_field_code : '  ||'DISB_AMOUNT'                             ||
4837                                    ' Change record type: '  ||'10 - Disbursement Notification / Change' ||
4838                                    ' Change code       : '  ||'B-Full or Partial Reissue'               ||
4839                                    ' new disb Amount   : '  ||l_n_new_disb_accepted_amt
4840                     );
4841 
4842           igf_sl_clchsn_dtls_pkg.insert_row
4843           (
4844              x_rowid                      => l_v_rowid                ,
4845              x_clchgsnd_id                => l_n_clchgsnd_id          ,
4846              x_award_id                   => l_n_award_id             ,
4847              x_loan_number_txt            => l_v_loan_number          ,
4848              x_cl_version_code            => l_n_cl_version           ,
4849              x_change_field_code          => 'DISB_AMOUNT'            ,
4850              x_change_record_type_txt     => '10'                     ,
4851              x_change_code_txt            => 'B'                      ,
4852              x_status_code                => 'R'                      ,
4853              x_status_date                => TRUNC(SYSDATE)           ,
4854              x_response_status_code       => NULL                     ,
4855              x_old_value_txt              => NULL                     ,
4856              x_new_value_txt              => NULL                     ,
4857              x_old_date                   => l_d_resp_disb_date       ,
4858              x_new_date                   => l_d_new_disb_date        ,
4859              x_old_amt                    => l_n_resp_disb_gross_amt  ,
4860              x_new_amt                    => l_n_new_disb_accepted_amt,
4861              x_disbursement_number        => l_n_disb_num             ,
4862              x_disbursement_date          => l_d_resp_disb_date       ,
4863              x_change_issue_code          => 'POST_DISB'              ,
4864              x_disbursement_cancel_date   => NULL                     ,
4865              x_disbursement_cancel_amt    => NULL                     ,
4866              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
4867              x_disbursement_revised_date  => l_d_new_disb_date        ,
4868              x_disbursement_reissue_code  => 'Y'                      ,
4869              x_disbursement_reinst_code   => 'N'                      ,
4870              x_disbursement_return_amt    => NULL                     ,
4871              x_disbursement_return_date   => NULL                     ,
4872              x_disbursement_return_code   => l_v_fund_return_mthd_code,
4873              x_post_with_disb_return_amt  => NULL                     ,
4874              x_post_with_disb_return_date => NULL                     ,
4875              x_post_with_disb_return_code => NULL                     ,
4876              x_prev_with_disb_return_amt  => NULL                     ,
4877              x_prev_with_disb_return_date => NULL                     ,
4878              x_school_use_txt             => NULL                     ,
4879              x_lender_use_txt             => NULL                     ,
4880              x_guarantor_use_txt          => NULL                     ,
4881              x_validation_edit_txt        => NULL                     ,
4882              x_send_record_txt            => NULL
4883            );
4884             -- invoke validation edits to validate the change record. The validation checks if
4885            -- all the required fields are populated or not for a change record
4886            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4887                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
4888                      );
4889            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
4890                                            p_b_return_status => l_b_return_status,
4891                                            p_v_message_name  => l_v_message_name,
4892                                         p_t_message_tokens => l_d_message_tokens
4893                                            );
4894            IF NOT(l_b_return_status) THEN
4895             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4896                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
4897                       );
4898              RAISE e_valid_edits;
4899            END IF;
4900            p_b_return_status := TRUE;
4901            p_v_message_name  := NULL;
4902            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4903                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
4904                      );
4905         ELSE
4906           CLOSE c_igf_sl_clchsn_dtls;
4907           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
4908           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
4909                      p_v_string => ' New Change record is Created '                                     ||
4910                                    ' Change_field_code : '  ||'DISB_AMOUNT'                             ||
4911                                    ' Change record type: '  ||'10 - Disbursement Notification / Change' ||
4912                                    ' Change code       : '  ||'B-Full or Partial Reissue'               ||
4913                                    ' new disb Amount   : '  ||l_n_new_disb_accepted_amt
4914                     );
4915           igf_sl_clchsn_dtls_pkg.update_row
4916           (
4917             x_rowid                      => l_v_rowid                                             ,
4918             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                  ,
4919             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                     ,
4920             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt              ,
4921             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code              ,
4922             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code            ,
4923             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt       ,
4924             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt              ,
4925             x_status_code                => 'R'                                                   ,
4926             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                  ,
4927             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code         ,
4928             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt                ,
4929             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt                ,
4930             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                     ,
4931             x_new_date                   => l_d_new_disb_date                                     ,
4932             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                      ,
4933             x_new_amt                    => l_n_new_disb_accepted_amt                             ,
4934             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number          ,
4935             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date            ,
4936             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code            ,
4937             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date     ,
4938             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt      ,
4939             x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                             ,
4940             x_disbursement_revised_date  => l_d_new_disb_date                                     ,
4941             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code    ,
4942             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code     ,
4943             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt      ,
4944             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date     ,
4945             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code     ,
4946             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt    ,
4947             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date   ,
4948             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code   ,
4949             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt    ,
4950             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date   ,
4951             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt               ,
4952             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt               ,
4953             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt            ,
4954             x_validation_edit_txt        => NULL                                                  ,
4955             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
4956           );
4957           -- invoke validation edits to validate the change record. The validation checks if
4958           -- all the required fields are populated or not for a change record
4959           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4960                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4961                     );
4962           l_v_message_name  := NULL;
4963           l_b_return_status := TRUE;
4964           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
4965                                           p_b_return_status => l_b_return_status,
4966                                           p_v_message_name  => l_v_message_name,
4967                                           p_t_message_tokens => l_d_message_tokens
4968                                           );
4969 
4970           IF NOT(l_b_return_status) THEN
4971             -- substring of the out bound parameter l_v_message_name is carried
4972             -- out since it can expect either IGS OR IGF message
4973             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
4974             igf_sl_cl_chg_prc.parse_tokens(
4975               p_t_message_tokens => l_d_message_tokens);
4976 /*
4977             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
4978                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
4979             END LOOP;
4980 */
4981             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
4982                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
4983                        );
4984             log_to_fnd(p_v_module => ' create_disb_chg_rec',
4985                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
4986                        );
4987             igf_sl_clchsn_dtls_pkg.update_row
4988             (
4989               x_rowid                      => l_v_rowid                                             ,
4990               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                  ,
4991               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                     ,
4992               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt              ,
4993               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code              ,
4994               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code            ,
4995               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt       ,
4996               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt              ,
4997               x_status_code                => 'N'                                                   ,
4998               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                  ,
4999               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code         ,
5000               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt                ,
5001               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt                ,
5002               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                     ,
5003               x_new_date                   => l_d_new_disb_date                                     ,
5004               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                      ,
5005               x_new_amt                    => l_n_new_disb_accepted_amt                             ,
5006               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number          ,
5007               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date            ,
5008               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code            ,
5009               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date     ,
5010               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt      ,
5011               x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                             ,
5012               x_disbursement_revised_date  => l_d_new_disb_date                                     ,
5013               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code    ,
5014               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code     ,
5015               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt      ,
5016               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date     ,
5017               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code     ,
5018               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt    ,
5019               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date   ,
5020               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code   ,
5021               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt    ,
5022               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date   ,
5023               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt               ,
5024               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt               ,
5025               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt            ,
5026               x_validation_edit_txt        => fnd_message.get                                       ,
5027               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5028             );
5029             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5030                        p_v_string => ' updated the status of change send record to Not Ready to Send'
5031                       );
5032           END IF;
5033           p_b_return_status := TRUE;
5034           p_v_message_name  := NULL;
5035           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5036                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5037                     );
5038         END IF;
5039       -- if changes are reverted back
5040       ELSIF ((l_n_resp_disb_gross_amt = l_n_new_disb_accepted_amt) AND
5041              l_v_new_change_type_code = 'REISSUE')
5042       THEN
5043         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5044                    p_v_string => ' Verifying if  change record is to be deleted or not '     ||
5045                                  ' cl version                : '||l_n_cl_version             ||
5046                                  ' loan status               : '||l_v_loan_status            ||
5047                                  ' Processing Type           : '||l_v_prc_type_code          ||
5048                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
5049                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt    ||
5050                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt  ||
5051                                  ' fund status               : '||'Post Disbursement change' ||
5052                                  ' change type code          : '||l_v_new_change_type_code   ||
5053                                  ' change_field_code         : '||'DISB_AMOUNT'
5054                   );
5055 
5056         -- verify if the existing change record is to be deleted
5057         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5058                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5059                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5060                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5061                        'AND    chdt.old_amt = :cp_d_new_disb_amt '           ||
5062                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
5063                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5064                        'AND    chdt.change_code_txt = ''B'' '                ||
5065                        'AND    chdt.change_record_type_txt = ''10'' ';
5066         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_new_disb_accepted_amt;
5067         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5068         IF c_igf_sl_clchsn_dtls%FOUND THEN
5069           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5070                      p_v_string => ' Change record to be deleted '         ||
5071                                    ' Award Id       : ' ||l_n_award_id ||
5072                                    ' Disb Num       : ' ||l_n_disb_num ||
5073                                    ' new disb Amount: ' ||l_n_new_disb_accepted_amt
5074                     );
5075           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
5076           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5077                      p_v_string => ' Change record to be deleted  succesfully'         ||
5078                                    ' Award Id       : ' ||l_n_award_id ||
5079                                    ' Disb Num       : ' ||l_n_disb_num ||
5080                                    ' new disb Amount: ' ||l_n_new_disb_accepted_amt
5081                     );
5082         END IF;
5083         CLOSE c_igf_sl_clchsn_dtls;
5084         p_b_return_status := TRUE;
5085         p_v_message_name  := NULL;
5086       END IF;
5087       -- End  of code logic for disbursement amount change (Reissue)
5088       -- Full or Partial cancellation logic starts here
5089       -- start  of code logic for disbursement amount change
5090       IF ((l_n_resp_disb_gross_amt <> l_n_new_disb_accepted_amt) AND
5091            l_v_new_change_type_code = 'CANCELLATION')
5092       THEN
5093         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5094                    p_v_string => ' Verifying if existing change record is to be updated or inserted '     ||
5095                                  ' cl version                : '||l_n_cl_version             ||
5096                                  ' loan status               : '||l_v_loan_status            ||
5097                                  ' Processing Type           : '||l_v_prc_type_code          ||
5098                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
5099                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt    ||
5100                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt  ||
5101                                  ' fund status               : '||'Post Disbursement change' ||
5102                                  ' change type code          : '||l_v_new_change_type_code   ||
5103                                  ' change_field_code         : '||'DISB_AMOUNT'
5104                   );
5105         -- verify if the existing change record is to be updated or inserted
5106         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5107                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5108                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5109                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5110                        'AND    chdt.old_amt = :cp_d_resp_disb_amt '          ||
5111                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
5112                        'AND    chdt.change_code_txt = ''A'' '                ||
5113                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5114                        'AND    chdt.change_record_type_txt = ''10'' ';
5115         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_resp_disb_gross_amt;
5116         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5117         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
5118 
5119           CLOSE c_igf_sl_clchsn_dtls;
5120           l_v_rowid       := NULL;
5121           l_n_clchgsnd_id := NULL;
5122           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
5123                      p_v_string => ' New Change record is Created '                                     ||
5124                                    ' Change_field_code : '  ||'DISB_AMOUNT'                             ||
5125                                    ' Change record type: '  ||'10 - Disbursement Notification / Change' ||
5126                                    ' Change code       : '  ||'A-Full or Partial Cancellation'          ||
5127                                    ' new disb Amount   : '  ||l_n_new_disb_accepted_amt
5128                     );
5129 
5130           igf_sl_clchsn_dtls_pkg.insert_row
5131           (
5132              x_rowid                      => l_v_rowid                ,
5133              x_clchgsnd_id                => l_n_clchgsnd_id          ,
5134              x_award_id                   => l_n_award_id             ,
5135              x_loan_number_txt            => l_v_loan_number          ,
5136              x_cl_version_code            => l_n_cl_version           ,
5137              x_change_field_code          => 'DISB_AMOUNT'            ,
5138              x_change_record_type_txt     => '10'                     ,
5139              x_change_code_txt            => 'A'                      ,
5140              x_status_code                => 'R'                      ,
5141              x_status_date                => TRUNC(SYSDATE)           ,
5142              x_response_status_code       => NULL                     ,
5143              x_old_value_txt              => NULL                     ,
5144              x_new_value_txt              => NULL                     ,
5145              x_old_date                   => l_d_resp_disb_date       ,
5146              x_new_date                   => l_d_new_disb_date        ,
5147              x_old_amt                    => l_n_resp_disb_gross_amt  ,
5148              x_new_amt                    => l_n_new_disb_accepted_amt,
5149              x_disbursement_number        => l_n_disb_num             ,
5150              x_disbursement_date          => l_d_resp_disb_date       ,
5151              x_change_issue_code          => 'POST_DISB'              ,
5152              x_disbursement_cancel_date   => TRUNC(SYSDATE)           ,
5153              x_disbursement_cancel_amt    => (l_n_resp_disb_gross_amt -  l_n_new_disb_accepted_amt) ,
5154              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
5155              x_disbursement_revised_date  => l_d_new_disb_date        ,
5156              x_disbursement_reissue_code  => NULL                     ,
5157              x_disbursement_reinst_code   => 'N'                      ,
5158              x_disbursement_return_amt    => NULL                     ,
5159              x_disbursement_return_date   => NULL                     ,
5160              x_disbursement_return_code   => l_v_fund_return_mthd_code,
5161              x_post_with_disb_return_amt  => NULL                     ,
5162              x_post_with_disb_return_date => NULL                     ,
5163              x_post_with_disb_return_code => NULL                     ,
5164              x_prev_with_disb_return_amt  => NULL                     ,
5165              x_prev_with_disb_return_date => NULL                     ,
5166              x_school_use_txt             => NULL                     ,
5167              x_lender_use_txt             => NULL                     ,
5168              x_guarantor_use_txt          => NULL                     ,
5169              x_validation_edit_txt        => NULL                     ,
5170              x_send_record_txt            => NULL
5171            );
5172             -- invoke validation edits to validate the change record. The validation checks if
5173            -- all the required fields are populated or not for a change record
5174            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5175                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
5176                      );
5177            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
5178                                            p_b_return_status => l_b_return_status,
5179                                            p_v_message_name  => l_v_message_name,
5180                                         p_t_message_tokens => l_d_message_tokens
5181                                            );
5182            IF NOT(l_b_return_status) THEN
5183             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5184                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
5185                       );
5186              RAISE e_valid_edits;
5187            END IF;
5188            p_b_return_status := TRUE;
5189            p_v_message_name  := NULL;
5190            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5191                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
5192                      );
5193         ELSE
5194           CLOSE c_igf_sl_clchsn_dtls;
5195           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
5196           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
5197                      p_v_string => ' New Change record is Created '                                     ||
5198                                    ' Change_field_code : '  ||'DISB_AMOUNT'                             ||
5199                                    ' Change record type: '  ||'10 - Disbursement Notification / Change' ||
5200                                    ' Change code       : '  ||'A-Full or Partial Cancellation'          ||
5201                                    ' new disb Amount   : '  ||l_n_new_disb_accepted_amt
5202                     );
5203           igf_sl_clchsn_dtls_pkg.update_row
5204           (
5205             x_rowid                      => l_v_rowid                                             ,
5206             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                  ,
5207             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                     ,
5208             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt              ,
5209             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code              ,
5210             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code            ,
5211             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt       ,
5212             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt              ,
5213             x_status_code                => 'R'                                                   ,
5214             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                  ,
5215             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code         ,
5216             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt                ,
5217             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt                ,
5218             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                     ,
5219             x_new_date                   => l_d_new_disb_date                                     ,
5220             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                      ,
5221             x_new_amt                    => l_n_new_disb_accepted_amt                             ,
5222             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number          ,
5223             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date            ,
5224             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code            ,
5225             x_disbursement_cancel_date   => TRUNC(SYSDATE)                                        ,
5226             x_disbursement_cancel_amt    => (rec_c_igf_sl_clchsn_dtls.old_amt - l_n_new_disb_accepted_amt) ,
5227             x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                             ,
5228             x_disbursement_revised_date  => l_d_new_disb_date                                     ,
5229             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code    ,
5230             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code     ,
5231             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt      ,
5232             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date     ,
5233             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code     ,
5234             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt    ,
5235             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date   ,
5236             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code   ,
5237             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt    ,
5238             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date   ,
5239             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt               ,
5240             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt               ,
5241             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt            ,
5242             x_validation_edit_txt        => NULL                                                  ,
5243             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5244           );
5245           -- invoke validation edits to validate the change record. The validation checks if
5246           -- all the required fields are populated or not for a change record
5247           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5248                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5249                     );
5250           l_v_message_name  := NULL;
5251           l_b_return_status := TRUE;
5252           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
5253                                           p_b_return_status => l_b_return_status,
5254                                           p_v_message_name  => l_v_message_name,
5255                                           p_t_message_tokens => l_d_message_tokens
5256                                           );
5257 
5258           IF NOT(l_b_return_status) THEN
5259             -- substring of the out bound parameter l_v_message_name is carried
5260             -- out since it can expect either IGS OR IGF message
5261             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
5262             igf_sl_cl_chg_prc.parse_tokens(
5263               p_t_message_tokens => l_d_message_tokens);
5264 /*
5265             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
5266                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
5267             END LOOP;
5268 */
5269             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5270                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5271                        );
5272             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5273                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
5274                        );
5275             igf_sl_clchsn_dtls_pkg.update_row
5276             (
5277               x_rowid                      => l_v_rowid                                             ,
5278               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                  ,
5279               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                     ,
5280               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt              ,
5281               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code              ,
5282               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code            ,
5283               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt       ,
5284               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt              ,
5285               x_status_code                => 'N'                                                   ,
5286               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                  ,
5287               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code         ,
5288               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt                ,
5289               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt                ,
5290               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                     ,
5291               x_new_date                   => l_d_new_disb_date                                     ,
5292               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                      ,
5293               x_new_amt                    => l_n_new_disb_accepted_amt                             ,
5294               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number          ,
5295               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date            ,
5296               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code            ,
5297               x_disbursement_cancel_date   => TRUNC(SYSDATE)                                        ,
5298               x_disbursement_cancel_amt    => (rec_c_igf_sl_clchsn_dtls.old_amt - l_n_new_disb_accepted_amt),
5299               x_disbursement_revised_amt   => l_n_new_disb_accepted_amt                             ,
5300               x_disbursement_revised_date  => l_d_new_disb_date                                     ,
5301               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code    ,
5302               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code     ,
5303               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt      ,
5304               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date     ,
5305               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code     ,
5306               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt    ,
5307               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date   ,
5308               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code   ,
5309               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt    ,
5310               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date   ,
5311               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt               ,
5312               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt               ,
5313               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt            ,
5314               x_validation_edit_txt        => fnd_message.get                                       ,
5315               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5316             );
5317             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5318                        p_v_string => ' updated the status of change send record to Not Ready to Send'
5319                       );
5320           END IF;
5321           p_b_return_status := TRUE;
5322           p_v_message_name  := NULL;
5323           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5324                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5325                     );
5326         END IF;
5327       -- if changes are reverted back
5328       ELSIF ((l_n_resp_disb_gross_amt = l_n_new_disb_accepted_amt) AND
5329              l_v_new_change_type_code = 'CANCELLATION')
5330       THEN
5331         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5332                    p_v_string => ' Verifying if  change record is to be deleted or not '     ||
5333                                  ' cl version                : '||l_n_cl_version             ||
5334                                  ' loan status               : '||l_v_loan_status            ||
5335                                  ' Processing Type           : '||l_v_prc_type_code          ||
5336                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
5337                                  ' response disb gross amount: '||l_n_resp_disb_gross_amt    ||
5338                                  ' new disb accepted amount  : '||l_n_new_disb_accepted_amt  ||
5339                                  ' fund status               : '||'Post Disbursement change' ||
5340                                  ' change type code          : '||l_v_new_change_type_code   ||
5341                                  ' change_field_code         : '||'DISB_AMOUNT'
5342                   );
5343 
5344         -- verify if the existing change record is to be deleted
5345         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5346                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5347                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5348                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5349                        'AND    chdt.old_amt = :cp_d_new_disb_amt '           ||
5350                        'AND    chdt.change_field_code = ''DISB_AMOUNT'' '    ||
5351                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5352                        'AND    chdt.change_code_txt = ''A'' '                ||
5353                        'AND    chdt.change_record_type_txt = ''10'' ';
5354         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_n_new_disb_accepted_amt;
5355         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5356         IF c_igf_sl_clchsn_dtls%FOUND THEN
5357           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5358                      p_v_string => ' Change record to be deleted '         ||
5359                                    ' Award Id       : ' ||l_n_award_id ||
5360                                    ' Disb Num       : ' ||l_n_disb_num ||
5361                                    ' new disb Amount: ' ||l_n_new_disb_accepted_amt
5362                     );
5363           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
5364           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5365                      p_v_string => ' Change record to be deleted  succesfully'         ||
5366                                    ' Award Id       : ' ||l_n_award_id ||
5367                                    ' Disb Num       : ' ||l_n_disb_num ||
5368                                    ' new disb Amount: ' ||l_n_new_disb_accepted_amt
5369                     );
5370         END IF;
5371         CLOSE c_igf_sl_clchsn_dtls;
5372         p_b_return_status := TRUE;
5373         p_v_message_name  := NULL;
5374       END IF;
5375       -- End  of code logic for disbursement amount change (Cancellation)
5376       -- start of code logic for Change Type = Reinstatement
5377       -- start  of code logic for disbursement date change
5378       IF l_d_resp_disb_date <> l_d_new_disb_date AND
5379          l_v_new_change_type_code = 'REINSTATEMENT'
5380       THEN
5381         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5382                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
5383                                  ' cl version                : '||l_n_cl_version             ||
5384                                  ' loan status               : '||l_v_loan_status            ||
5385                                  ' Processing Type           : '||l_v_prc_type_code          ||
5386                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
5387                                  ' response disb date        : '||l_d_resp_disb_date         ||
5388                                  ' new reference of disb date: '||l_d_new_disb_date          ||
5389                                  ' fund status               : '||'Post Disbursement change' ||
5390                                  ' change type code          : '|| l_v_new_change_type_code  ||
5391                                  ' change_field_code         : '|| 'DISB_DATE'
5392                   );
5393         -- verify if the existing change record is to be updated or inserted
5394         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5395                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5396                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5397                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5398                        'AND    chdt.old_date = :cp_d_resp_disb_dt '          ||
5399                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
5400                        'AND    chdt.change_code_txt = ''C'' '                ||
5401                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5402                        'AND    chdt.change_record_type_txt = ''10'' ';
5403 
5404         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_resp_disb_date;
5405         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5406         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
5407           CLOSE c_igf_sl_clchsn_dtls;
5408           l_v_rowid       := NULL;
5409           l_n_clchgsnd_id := NULL;
5410           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5411                      p_v_string => ' New Change record is Created  '                                    ||
5412                                    ' Change_field_code  : ' ||'DISB_DATE'                               ||
5413                                    ' Change record type : ' ||'10 - Disbursement Notification / Change' ||
5414                                    ' Change code        : ' ||'C - Full or Partial Reinstatement '
5415                     );
5416           igf_sl_clchsn_dtls_pkg.insert_row
5417           (
5418              x_rowid                      => l_v_rowid                ,
5419              x_clchgsnd_id                => l_n_clchgsnd_id          ,
5420              x_award_id                   => l_n_award_id             ,
5421              x_loan_number_txt            => l_v_loan_number          ,
5422              x_cl_version_code            => l_n_cl_version           ,
5423              x_change_field_code          => 'DISB_DATE'              ,
5424              x_change_record_type_txt     => '10'                     ,
5425              x_change_code_txt            => 'C'                      ,
5426              x_status_code                => 'R'                      ,
5427              x_status_date                => TRUNC(SYSDATE)           ,
5428              x_response_status_code       => NULL                     ,
5429              x_old_value_txt              => NULL                     ,
5430              x_new_value_txt              => NULL                     ,
5431              x_old_date                   => l_d_resp_disb_date       ,
5432              x_new_date                   => l_d_new_disb_date        ,
5433              x_old_amt                    => NULL                     ,
5434              x_new_amt                    => NULL                     ,
5435              x_disbursement_number        => l_n_disb_num             ,
5436              x_disbursement_date          => l_d_resp_disb_date       ,
5437              x_change_issue_code          => 'POST_DISB'              ,
5438              x_disbursement_cancel_date   => NULL                     ,
5439              x_disbursement_cancel_amt    => NULL                     ,
5440              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
5441              x_disbursement_revised_date  => l_d_new_disb_date        ,
5442              x_disbursement_reissue_code  => NULL                     ,
5443              x_disbursement_reinst_code   => 'Y'                      ,
5444              x_disbursement_return_amt    => NULL                     ,
5445              x_disbursement_return_date   => NULL                     ,
5446              x_disbursement_return_code   => NULL                     ,
5447              x_post_with_disb_return_amt  => NULL                     ,
5448              x_post_with_disb_return_date => NULL                     ,
5449              x_post_with_disb_return_code => NULL                     ,
5450              x_prev_with_disb_return_amt  => NULL                     ,
5451              x_prev_with_disb_return_date => NULL                     ,
5452              x_school_use_txt             => NULL                     ,
5453              x_lender_use_txt             => NULL                     ,
5454              x_guarantor_use_txt          => NULL                     ,
5455              x_validation_edit_txt        => NULL                     ,
5456              x_send_record_txt            => NULL
5457            );
5458            -- invoke validation edits to validate the change record. The validation checks if
5459            -- all the required fields are populated or not for a change record
5460            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5461                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
5462                      );
5463            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
5464                                            p_b_return_status => l_b_return_status,
5465                                            p_v_message_name  => l_v_message_name,
5466                                         p_t_message_tokens => l_d_message_tokens
5467                                            );
5468            IF NOT(l_b_return_status) THEN
5469             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5470                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
5471                       );
5472              RAISE e_valid_edits;
5473            END IF;
5474            p_b_return_status := TRUE;
5475            p_v_message_name  := NULL;
5476            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5477                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
5478                      );
5479         ELSE
5480           CLOSE c_igf_sl_clchsn_dtls;
5481           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
5482           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
5483                      p_v_string => ' Change record is updated '                                         ||
5484                                    ' Change_field_code  : ' ||'DISB_DATE'                               ||
5485                                    ' Change record type : ' ||'10 - Disbursement Notification / Change' ||
5486                                    ' Change code        : ' ||'C - Full or Partial Reinstatement '      ||
5487                                    ' new disb date      : ' || l_d_new_disb_date
5488                     );
5489           igf_sl_clchsn_dtls_pkg.update_row
5490           (
5491             x_rowid                      => l_v_rowid                                           ,
5492             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
5493             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
5494             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
5495             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
5496             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
5497             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
5498             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
5499             x_status_code                => 'R'                                                 ,
5500             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
5501             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
5502             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
5503             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
5504             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
5505             x_new_date                   => l_d_new_disb_date                                   ,
5506             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
5507             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
5508             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
5509             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
5510             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
5511             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
5512             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
5513             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
5514             x_disbursement_revised_date  => l_d_new_disb_date                                   ,
5515             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
5516             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
5517             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
5518             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
5519             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
5520             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
5521             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
5522             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
5523             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
5524             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
5525             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
5526             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
5527             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
5528             x_validation_edit_txt        => NULL                                                ,
5529             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5530           );
5531           -- invoke validation edits to validate the change record. The validation checks if
5532           -- all the required fields are populated or not for a change record
5533           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5534                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5535                     );
5536           l_v_message_name  := NULL;
5537           l_b_return_status := TRUE;
5538           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
5539                                           p_b_return_status => l_b_return_status,
5540                                           p_v_message_name  => l_v_message_name,
5541                                           p_t_message_tokens => l_d_message_tokens
5542                                           );
5543 
5544           IF NOT(l_b_return_status) THEN
5545             -- substring of the out bound parameter l_v_message_name is carried
5546             -- out since it can expect either IGS OR IGF message
5547             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
5548             igf_sl_cl_chg_prc.parse_tokens(
5549               p_t_message_tokens => l_d_message_tokens);
5550 /*
5551             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
5552                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
5553             END LOOP;
5554 */
5555             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5556                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5557                        );
5558             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5559                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
5560                        );
5561             igf_sl_clchsn_dtls_pkg.update_row
5562             (
5563               x_rowid                      => l_v_rowid                                           ,
5564               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
5565               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
5566               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
5567               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
5568               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
5569               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
5570               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
5571               x_status_code                => 'N'                                                 ,
5572               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
5573               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
5574               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
5575               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
5576               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
5577               x_new_date                   => l_d_new_disb_date                                   ,
5578               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
5579               x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
5580               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
5581               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
5582               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
5583               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
5584               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
5585               x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
5586               x_disbursement_revised_date  => l_d_new_disb_date                                   ,
5587               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
5588               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
5589               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
5590               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
5591               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
5592               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
5593               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
5594               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
5595               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
5596               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
5597               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
5598               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
5599               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
5600               x_validation_edit_txt        => fnd_message.get                                     ,
5601               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5602             );
5603             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5604                        p_v_string => ' updated the status of change send record to Not Ready to Send'
5605                       );
5606           END IF;
5607           p_b_return_status := TRUE;
5608           p_v_message_name  := NULL;
5609           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5610                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5611                     );
5612         END IF;
5613       -- if changes have been reverted back
5614       ELSIF l_d_resp_disb_date = l_d_new_disb_date AND
5615             l_v_new_change_type_code = 'REINSTATEMENT'
5616       THEN
5617         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5618                    p_v_string => ' Verifying if  change record is to be deleted or not  '     ||
5619                                  ' cl version                : ' ||l_n_cl_version             ||
5620                                  ' loan status               : ' ||l_v_loan_status            ||
5621                                  ' Processing Type           : ' ||l_v_prc_type_code          ||
5622                                  ' Loan Record Status        : ' ||l_c_cl_rec_status          ||
5623                                  ' response disb date        : ' ||l_d_resp_disb_date         ||
5624                                  ' new reference of disb date: ' ||l_d_new_disb_date          ||
5625                                  ' fund status               : ' ||'Post Disbursement change' ||
5626                                  ' change type code          : ' || l_v_new_change_type_code  ||
5627                                  ' change_field_code         : ' || 'DISB_DATE'
5628                   );
5629         -- verify if the existing change record is to be deleted
5630         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5631                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5632                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5633                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5634                        'AND    chdt.old_date = :cp_d_new_disb_dt '           ||
5635                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
5636                        'AND    chdt.change_code_txt = ''C'' '                ||
5637                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5638                        'AND    chdt.change_record_type_txt = ''10'' ';
5639 
5640         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_new_disb_date;
5641         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5642         IF c_igf_sl_clchsn_dtls%FOUND THEN
5643           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5644                      p_v_string => ' Change record to be deleted '  ||
5645                                    ' Award Id     : '||l_n_award_id ||
5646                                    ' Disb Num     : '||l_n_disb_num ||
5647                                    ' New disb Date: '||l_d_new_disb_date
5648                     );
5649           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
5650           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5651                      p_v_string => ' Change record deleted  Successfully'  ||
5652                                    ' Award Id     : '||l_n_award_id ||
5653                                    ' Disb Num     : '||l_n_disb_num ||
5654                                    ' New disb Date: '||l_d_new_disb_date
5655                     );
5656         END IF;
5657         CLOSE c_igf_sl_clchsn_dtls;
5658         p_b_return_status := TRUE;
5659         p_v_message_name  := NULL;
5660       END IF;
5661       -- end of code logic for Change Type = Reinstatement
5662       -- end  of code logic for disbursement date change
5663       -- start of code logic for Change Type = Reissue
5664       -- start  of code logic for disbursement date change
5665       IF l_d_resp_disb_date <> l_d_new_disb_date AND
5666          l_v_new_change_type_code = 'REISSUE'
5667       THEN
5668         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5669                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
5670                                  ' cl version                : '||l_n_cl_version             ||
5671                                  ' loan status               : '||l_v_loan_status            ||
5672                                  ' Processing Type           : '||l_v_prc_type_code          ||
5673                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
5674                                  ' response disb date        : '||l_d_resp_disb_date         ||
5675                                  ' new reference of disb date: '||l_d_new_disb_date          ||
5676                                  ' fund status               : '||'Post Disbursement change' ||
5677                                  ' change type code          : '|| l_v_new_change_type_code  ||
5678                                  ' change_field_code         : '|| 'DISB_DATE'
5679                   );
5680         -- verify if the existing change record is to be updated or inserted
5681         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5682                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5683                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5684                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5685                        'AND    chdt.old_date = :cp_d_resp_disb_dt '          ||
5686                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
5687                        'AND    chdt.change_code_txt = ''B'' '                ||
5688                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5689                        'AND    chdt.change_record_type_txt = ''10'' ';
5690 
5691         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_resp_disb_date;
5692         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5693         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
5694           CLOSE c_igf_sl_clchsn_dtls;
5695           l_v_rowid       := NULL;
5696           l_n_clchgsnd_id := NULL;
5697           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5698                      p_v_string => ' New Change record is Created  '                                    ||
5699                                    ' Change_field_code  : ' ||'DISB_DATE'                               ||
5700                                    ' Change record type : ' ||'10 - Disbursement Notification / Change' ||
5701                                    ' Change code        : ' ||'B - Full or Partial Reissue '
5702                     );
5703           igf_sl_clchsn_dtls_pkg.insert_row
5704           (
5705              x_rowid                      => l_v_rowid                ,
5706              x_clchgsnd_id                => l_n_clchgsnd_id          ,
5707              x_award_id                   => l_n_award_id             ,
5708              x_loan_number_txt            => l_v_loan_number          ,
5709              x_cl_version_code            => l_n_cl_version           ,
5710              x_change_field_code          => 'DISB_DATE'              ,
5711              x_change_record_type_txt     => '10'                     ,
5712              x_change_code_txt            => 'B'                      ,
5713              x_status_code                => 'R'                      ,
5714              x_status_date                => TRUNC(SYSDATE)           ,
5715              x_response_status_code       => NULL                     ,
5716              x_old_value_txt              => NULL                     ,
5717              x_new_value_txt              => NULL                     ,
5718              x_old_date                   => l_d_resp_disb_date       ,
5719              x_new_date                   => l_d_new_disb_date        ,
5720              x_old_amt                    => NULL                     ,
5721              x_new_amt                    => NULL                     ,
5722              x_disbursement_number        => l_n_disb_num             ,
5723              x_disbursement_date          => l_d_resp_disb_date       ,
5724              x_change_issue_code          => 'POST_DISB'              ,
5725              x_disbursement_cancel_date   => NULL                     ,
5726              x_disbursement_cancel_amt    => NULL                     ,
5727              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
5728              x_disbursement_revised_date  => l_d_new_disb_date        ,
5729              x_disbursement_reissue_code  => 'Y'                      ,
5730              x_disbursement_reinst_code   => 'N'                      ,
5731              x_disbursement_return_amt    => NULL                     ,
5732              x_disbursement_return_date   => NULL                     ,
5733              x_disbursement_return_code   => l_v_fund_return_mthd_code,
5734              x_post_with_disb_return_amt  => NULL                     ,
5735              x_post_with_disb_return_date => NULL                     ,
5736              x_post_with_disb_return_code => NULL                     ,
5737              x_prev_with_disb_return_amt  => NULL                     ,
5738              x_prev_with_disb_return_date => NULL                     ,
5739              x_school_use_txt             => NULL                     ,
5740              x_lender_use_txt             => NULL                     ,
5741              x_guarantor_use_txt          => NULL                     ,
5742              x_validation_edit_txt        => NULL                     ,
5743              x_send_record_txt            => NULL
5744            );
5745            -- invoke validation edits to validate the change record. The validation checks if
5746            -- all the required fields are populated or not for a change record
5747            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5748                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
5749                      );
5750            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
5751                                            p_b_return_status => l_b_return_status,
5752                                            p_v_message_name  => l_v_message_name,
5753                                         p_t_message_tokens => l_d_message_tokens
5754                                            );
5755            IF NOT(l_b_return_status) THEN
5756             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5757                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
5758                       );
5759              RAISE e_valid_edits;
5760            END IF;
5761            p_b_return_status := TRUE;
5762            p_v_message_name  := NULL;
5763            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5764                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
5765                      );
5766         ELSE
5767           CLOSE c_igf_sl_clchsn_dtls;
5768           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
5769           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
5770                      p_v_string => ' Change record is updated '                                         ||
5771                                    ' Change_field_code  : ' ||'DISB_DATE'                               ||
5772                                    ' Change record type : ' ||'10 - Disbursement Notification / Change' ||
5773                                    ' Change code        : ' ||'B - Full or Partial Reissue '            ||
5774                                    ' new disb date      : ' || l_d_new_disb_date
5775                     );
5776           igf_sl_clchsn_dtls_pkg.update_row
5777           (
5778             x_rowid                      => l_v_rowid                                           ,
5779             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
5780             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
5781             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
5782             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
5783             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
5784             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
5785             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
5786             x_status_code                => 'R'                                                 ,
5787             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
5788             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
5789             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
5790             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
5791             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
5792             x_new_date                   => l_d_new_disb_date                                   ,
5793             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
5794             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
5795             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
5796             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
5797             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
5798             x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
5799             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
5800             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
5801             x_disbursement_revised_date  => l_d_new_disb_date                                   ,
5802             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
5803             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
5804             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
5805             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
5806             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
5807             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
5808             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
5809             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
5810             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
5811             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
5812             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
5813             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
5814             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
5815             x_validation_edit_txt        => NULL                                                ,
5816             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5817           );
5818           -- invoke validation edits to validate the change record. The validation checks if
5819           -- all the required fields are populated or not for a change record
5820           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5821                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5822                     );
5823           l_v_message_name  := NULL;
5824           l_b_return_status := TRUE;
5825           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
5826                                           p_b_return_status => l_b_return_status,
5827                                           p_v_message_name  => l_v_message_name,
5828                                           p_t_message_tokens => l_d_message_tokens
5829                                           );
5830 
5831           IF NOT(l_b_return_status) THEN
5832             -- substring of the out bound parameter l_v_message_name is carried
5833             -- out since it can expect either IGS OR IGF message
5834             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
5835             igf_sl_cl_chg_prc.parse_tokens(
5836               p_t_message_tokens => l_d_message_tokens);
5837 /*
5838             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
5839                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
5840             END LOOP;
5841 */
5842             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5843                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5844                        );
5845             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5846                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
5847                        );
5848             igf_sl_clchsn_dtls_pkg.update_row
5849             (
5850               x_rowid                      => l_v_rowid                                           ,
5851               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
5852               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
5853               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
5854               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
5855               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
5856               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
5857               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
5858               x_status_code                => 'N'                                                 ,
5859               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
5860               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
5861               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
5862               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
5863               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
5864               x_new_date                   => l_d_new_disb_date                                   ,
5865               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
5866               x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
5867               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
5868               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
5869               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
5870               x_disbursement_cancel_date   => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_date   ,
5871               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
5872               x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
5873               x_disbursement_revised_date  => l_d_new_disb_date                                   ,
5874               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
5875               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
5876               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
5877               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
5878               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
5879               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
5880               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
5881               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
5882               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
5883               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
5884               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
5885               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
5886               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
5887               x_validation_edit_txt        => fnd_message.get                                     ,
5888               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
5889             );
5890             log_to_fnd(p_v_module => ' create_disb_chg_rec',
5891                        p_v_string => ' updated the status of change send record to Not Ready to Send'
5892                       );
5893           END IF;
5894           p_b_return_status := TRUE;
5895           p_v_message_name  := NULL;
5896           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5897                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
5898                     );
5899         END IF;
5900       -- if changes have been reverted back
5901       ELSIF l_d_resp_disb_date = l_d_new_disb_date AND
5902             l_v_new_change_type_code = 'REISSUE'
5903       THEN
5904         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5905                    p_v_string => ' Verifying if  change record is to be deleted or not  '     ||
5906                                  ' cl version                : ' ||l_n_cl_version             ||
5907                                  ' loan status               : ' ||l_v_loan_status            ||
5908                                  ' Processing Type           : ' ||l_v_prc_type_code          ||
5909                                  ' Loan Record Status        : ' ||l_c_cl_rec_status          ||
5910                                  ' response disb date        : ' ||l_d_resp_disb_date         ||
5911                                  ' new reference of disb date: ' ||l_d_new_disb_date          ||
5912                                  ' fund status               : ' ||'Post Disbursement change' ||
5913                                  ' change type code          : ' || l_v_new_change_type_code  ||
5914                                  ' change_field_code         : ' || 'DISB_DATE'
5915                   );
5916         -- verify if the existing change record is to be deleted
5917         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5918                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5919                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5920                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5921                        'AND    chdt.old_date = :cp_d_new_disb_dt '           ||
5922                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
5923                        'AND    chdt.change_code_txt = ''B'' '                ||
5924                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5925                        'AND    chdt.change_record_type_txt = ''10'' ';
5926 
5927         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_new_disb_date;
5928         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5929         IF c_igf_sl_clchsn_dtls%FOUND THEN
5930           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5931                      p_v_string => ' Change record to be deleted '  ||
5932                                    ' Award Id     : '||l_n_award_id ||
5933                                    ' Disb Num     : '||l_n_disb_num ||
5934                                    ' New disb Date: '||l_d_new_disb_date
5935                     );
5936           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
5937           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5938                      p_v_string => ' Change record deleted  Successfully'  ||
5939                                    ' Award Id     : '||l_n_award_id ||
5940                                    ' Disb Num     : '||l_n_disb_num ||
5941                                    ' New disb Date: '||l_d_new_disb_date
5942                     );
5943         END IF;
5944         CLOSE c_igf_sl_clchsn_dtls;
5945         p_b_return_status := TRUE;
5946         p_v_message_name  := NULL;
5947       END IF;
5948       -- end of code logic for Change Type = Reissue
5949       -- end  of code logic for disbursement date change
5950       -- start of code logic for Change Type = Cancellation
5951       -- start  of code logic for disbursement date change
5952       IF l_d_resp_disb_date <> l_d_new_disb_date AND
5953          l_v_new_change_type_code = 'CANCELLATION'
5954       THEN
5955         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5956                    p_v_string => ' Verifying if existing change record is to be updated or inserted '||
5957                                  ' cl version                : '||l_n_cl_version             ||
5958                                  ' loan status               : '||l_v_loan_status            ||
5959                                  ' Processing Type           : '||l_v_prc_type_code          ||
5960                                  ' Loan Record Status        : '||l_c_cl_rec_status          ||
5961                                  ' response disb date        : '||l_d_resp_disb_date         ||
5962                                  ' new reference of disb date: '||l_d_new_disb_date          ||
5963                                  ' fund status               : '||'Post Disbursement change' ||
5964                                  ' change type code          : '|| l_v_new_change_type_code  ||
5965                                  ' change_field_code         : '|| 'DISB_DATE'
5966                   );
5967         -- verify if the existing change record is to be updated or inserted
5968         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
5969                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
5970                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
5971                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
5972                        'AND    chdt.old_date = :cp_d_resp_disb_dt '          ||
5973                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
5974                        'AND    chdt.change_code_txt = ''A'' '                ||
5975                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
5976                        'AND    chdt.change_record_type_txt = ''10'' ';
5977 
5978         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_resp_disb_date;
5979         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
5980         IF c_igf_sl_clchsn_dtls%NOTFOUND THEN
5981           CLOSE c_igf_sl_clchsn_dtls;
5982           l_v_rowid       := NULL;
5983           l_n_clchgsnd_id := NULL;
5984           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
5985                      p_v_string => ' New Change record is Created  '                                    ||
5986                                    ' Change_field_code  : ' ||'DISB_DATE'                               ||
5987                                    ' Change record type : ' ||'10 - Disbursement Notification / Change' ||
5988                                    ' Change code        : ' ||'A - Full or Partial Cancellation '
5989                     );
5990           igf_sl_clchsn_dtls_pkg.insert_row
5991           (
5992              x_rowid                      => l_v_rowid                ,
5993              x_clchgsnd_id                => l_n_clchgsnd_id          ,
5994              x_award_id                   => l_n_award_id             ,
5995              x_loan_number_txt            => l_v_loan_number          ,
5996              x_cl_version_code            => l_n_cl_version           ,
5997              x_change_field_code          => 'DISB_DATE'              ,
5998              x_change_record_type_txt     => '10'                     ,
5999              x_change_code_txt            => 'A'                      ,
6000              x_status_code                => 'R'                      ,
6001              x_status_date                => TRUNC(SYSDATE)           ,
6002              x_response_status_code       => NULL                     ,
6003              x_old_value_txt              => NULL                     ,
6004              x_new_value_txt              => NULL                     ,
6005              x_old_date                   => l_d_resp_disb_date       ,
6006              x_new_date                   => l_d_new_disb_date        ,
6007              x_old_amt                    => NULL                     ,
6008              x_new_amt                    => NULL                     ,
6009              x_disbursement_number        => l_n_disb_num             ,
6010              x_disbursement_date          => l_d_resp_disb_date       ,
6011              x_change_issue_code          => 'POST_DISB'              ,
6012              x_disbursement_cancel_date   => l_d_new_disb_date        ,
6013              x_disbursement_cancel_amt    => NULL                     ,
6014              x_disbursement_revised_amt   => l_n_new_disb_accepted_amt,
6015              x_disbursement_revised_date  => l_d_new_disb_date        ,
6016              x_disbursement_reissue_code  => NULL                     ,
6017              x_disbursement_reinst_code   => 'N'                      ,
6018              x_disbursement_return_amt    => NULL                     ,
6019              x_disbursement_return_date   => NULL                     ,
6020              x_disbursement_return_code   => l_v_fund_return_mthd_code,
6021              x_post_with_disb_return_amt  => NULL                     ,
6022              x_post_with_disb_return_date => NULL                     ,
6023              x_post_with_disb_return_code => NULL                     ,
6024              x_prev_with_disb_return_amt  => NULL                     ,
6025              x_prev_with_disb_return_date => NULL                     ,
6026              x_school_use_txt             => NULL                     ,
6027              x_lender_use_txt             => NULL                     ,
6028              x_guarantor_use_txt          => NULL                     ,
6029              x_validation_edit_txt        => NULL                     ,
6030              x_send_record_txt            => NULL
6031            );
6032            -- invoke validation edits to validate the change record. The validation checks if
6033            -- all the required fields are populated or not for a change record
6034            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6035                       p_v_string => ' validating the Change record for Change send id: '  ||l_n_clchgsnd_id
6036                      );
6037            igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => l_n_clchgsnd_id,
6038                                            p_b_return_status => l_b_return_status,
6039                                            p_v_message_name  => l_v_message_name,
6040                                         p_t_message_tokens => l_d_message_tokens
6041                                            );
6042            IF NOT(l_b_return_status) THEN
6043             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6044                        p_v_string => ' validation of the Change record failed for Change send id: '  ||l_n_clchgsnd_id
6045                       );
6046              RAISE e_valid_edits;
6047            END IF;
6048            p_b_return_status := TRUE;
6049            p_v_message_name  := NULL;
6050            log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6051                       p_v_string => ' validation of the Change record successful for Change send id: '  ||l_n_clchgsnd_id
6052                      );
6053         ELSE
6054           CLOSE c_igf_sl_clchsn_dtls;
6055           rec_c_igf_sl_clchsn_dtls := get_sl_clchsn_dtls ( p_rowid => l_v_rowid);
6056           log_to_fnd(p_v_module => ' create_disb_chg_rec  ',
6057                      p_v_string => ' Change record is updated '                                         ||
6058                                    ' Change_field_code  : ' ||'DISB_DATE'                               ||
6059                                    ' Change record type : ' ||'10 - Disbursement Notification / Change' ||
6060                                    ' Change code        : ' ||'A - Full or Partial Cancellation '       ||
6061                                    ' new disb date      : ' || l_d_new_disb_date
6062                     );
6063           igf_sl_clchsn_dtls_pkg.update_row
6064           (
6065             x_rowid                      => l_v_rowid                                           ,
6066             x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
6067             x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
6068             x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
6069             x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
6070             x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
6071             x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
6072             x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
6073             x_status_code                => 'R'                                                 ,
6074             x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
6075             x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
6076             x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
6077             x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
6078             x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
6079             x_new_date                   => l_d_new_disb_date                                   ,
6080             x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
6081             x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
6082             x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
6083             x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
6084             x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
6085             x_disbursement_cancel_date   => TRUNC(SYSDATE)                                      ,
6086             x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
6087             x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
6088             x_disbursement_revised_date  => l_d_new_disb_date                                   ,
6089             x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
6090             x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
6091             x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
6092             x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
6093             x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
6094             x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
6095             x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
6096             x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
6097             x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
6098             x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
6099             x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
6100             x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
6101             x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
6102             x_validation_edit_txt        => NULL                                                ,
6103             x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
6104           );
6105           -- invoke validation edits to validate the change record. The validation checks if
6106           -- all the required fields are populated or not for a change record
6107           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6108                      p_v_string => ' validating the Change record for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
6109                     );
6110           l_v_message_name  := NULL;
6111           l_b_return_status := TRUE;
6112           igf_sl_cl_chg_prc.validate_chg (p_n_clchgsnd_id   => rec_c_igf_sl_clchsn_dtls.clchgsnd_id,
6113                                           p_b_return_status => l_b_return_status,
6114                                           p_v_message_name  => l_v_message_name,
6115                                           p_t_message_tokens => l_d_message_tokens
6116                                           );
6117 
6118           IF NOT(l_b_return_status) THEN
6119             -- substring of the out bound parameter l_v_message_name is carried
6120             -- out since it can expect either IGS OR IGF message
6121             fnd_message.set_name(SUBSTR(l_v_message_name,1,3),l_v_message_name);
6122             igf_sl_cl_chg_prc.parse_tokens(
6123               p_t_message_tokens => l_d_message_tokens);
6124 /*
6125             FOR token_counter IN l_d_message_tokens.FIRST..l_d_message_tokens.LAST LOOP
6126                fnd_message.set_token(l_d_message_tokens(token_counter).token_name, l_d_message_tokens(token_counter).token_value);
6127             END LOOP;
6128 */
6129             log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6130                        p_v_string => ' validation of the Change record failed for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
6131                        );
6132             log_to_fnd(p_v_module => ' create_disb_chg_rec',
6133                        p_v_string => ' Invoking igf_sl_clchsn_dtls_pkg.update_row to update the status to Not Ready to Send'
6134                        );
6135             igf_sl_clchsn_dtls_pkg.update_row
6136             (
6137               x_rowid                      => l_v_rowid                                           ,
6138               x_clchgsnd_id                => rec_c_igf_sl_clchsn_dtls.clchgsnd_id                ,
6139               x_award_id                   => rec_c_igf_sl_clchsn_dtls.award_id                   ,
6140               x_loan_number_txt            => rec_c_igf_sl_clchsn_dtls.loan_number_txt            ,
6141               x_cl_version_code            => rec_c_igf_sl_clchsn_dtls.cl_version_code            ,
6142               x_change_field_code          => rec_c_igf_sl_clchsn_dtls.change_field_code          ,
6143               x_change_record_type_txt     => rec_c_igf_sl_clchsn_dtls.change_record_type_txt     ,
6144               x_change_code_txt            => rec_c_igf_sl_clchsn_dtls.change_code_txt            ,
6145               x_status_code                => 'N'                                                 ,
6146               x_status_date                => rec_c_igf_sl_clchsn_dtls.status_date                ,
6147               x_response_status_code       => rec_c_igf_sl_clchsn_dtls.response_status_code       ,
6148               x_old_value_txt              => rec_c_igf_sl_clchsn_dtls.old_value_txt              ,
6149               x_new_value_txt              => rec_c_igf_sl_clchsn_dtls.new_value_txt              ,
6150               x_old_date                   => rec_c_igf_sl_clchsn_dtls.old_date                   ,
6151               x_new_date                   => l_d_new_disb_date                                   ,
6152               x_old_amt                    => rec_c_igf_sl_clchsn_dtls.old_amt                    ,
6153               x_new_amt                    => rec_c_igf_sl_clchsn_dtls.new_amt                    ,
6154               x_disbursement_number        => rec_c_igf_sl_clchsn_dtls.disbursement_number        ,
6155               x_disbursement_date          => rec_c_igf_sl_clchsn_dtls.disbursement_date          ,
6156               x_change_issue_code          => rec_c_igf_sl_clchsn_dtls.change_issue_code          ,
6157               x_disbursement_cancel_date   => TRUNC(SYSDATE)                                      ,
6158               x_disbursement_cancel_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_cancel_amt    ,
6159               x_disbursement_revised_amt   => rec_c_igf_sl_clchsn_dtls.disbursement_revised_amt   ,
6160               x_disbursement_revised_date  => l_d_new_disb_date                                   ,
6161               x_disbursement_reissue_code  => rec_c_igf_sl_clchsn_dtls.disbursement_reissue_code  ,
6162               x_disbursement_reinst_code   => rec_c_igf_sl_clchsn_dtls.disbursement_reinst_code   ,
6163               x_disbursement_return_amt    => rec_c_igf_sl_clchsn_dtls.disbursement_return_amt    ,
6164               x_disbursement_return_date   => rec_c_igf_sl_clchsn_dtls.disbursement_return_date   ,
6165               x_disbursement_return_code   => rec_c_igf_sl_clchsn_dtls.disbursement_return_code   ,
6166               x_post_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_amt  ,
6167               x_post_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_date ,
6168               x_post_with_disb_return_code => rec_c_igf_sl_clchsn_dtls.post_with_disb_return_code ,
6169               x_prev_with_disb_return_amt  => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_amt  ,
6170               x_prev_with_disb_return_date => rec_c_igf_sl_clchsn_dtls.prev_with_disb_return_date ,
6171               x_school_use_txt             => rec_c_igf_sl_clchsn_dtls.school_use_txt             ,
6172               x_lender_use_txt             => rec_c_igf_sl_clchsn_dtls.lender_use_txt             ,
6173               x_guarantor_use_txt          => rec_c_igf_sl_clchsn_dtls.guarantor_use_txt          ,
6174               x_validation_edit_txt        => fnd_message.get                                     ,
6175               x_send_record_txt            => rec_c_igf_sl_clchsn_dtls.send_record_txt
6176             );
6177             log_to_fnd(p_v_module => ' create_disb_chg_rec',
6178                        p_v_string => ' updated the status of change send record to Not Ready to Send'
6179                       );
6180           END IF;
6181           p_b_return_status := TRUE;
6182           p_v_message_name  := NULL;
6183           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6184                      p_v_string => ' validation of the Change record successful for Change send id: '  ||rec_c_igf_sl_clchsn_dtls.clchgsnd_id
6185                     );
6186         END IF;
6187       -- if changes have been reverted back
6188       ELSIF l_d_resp_disb_date = l_d_new_disb_date AND
6189             l_v_new_change_type_code = 'CANCELLATION'
6190       THEN
6191         log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6192                    p_v_string => ' Verifying if  change record is to be deleted or not  '     ||
6193                                  ' cl version                : ' ||l_n_cl_version             ||
6194                                  ' loan status               : ' ||l_v_loan_status            ||
6195                                  ' Processing Type           : ' ||l_v_prc_type_code          ||
6196                                  ' Loan Record Status        : ' ||l_c_cl_rec_status          ||
6197                                  ' response disb date        : ' ||l_d_resp_disb_date         ||
6198                                  ' new reference of disb date: ' ||l_d_new_disb_date          ||
6199                                  ' fund status               : ' ||'Post Disbursement change' ||
6200                                  ' change type code          : ' || l_v_new_change_type_code  ||
6201                                  ' change_field_code         : ' || 'DISB_DATE'
6202                   );
6203         -- verify if the existing change record is to be deleted
6204         l_v_sqlstmt := 'SELECT  chdt.ROWID row_id '                          ||
6205                        'FROM   igf_sl_clchsn_dtls chdt '                     ||
6206                        'WHERE  chdt.award_id = :cp_n_award_id '              ||
6207                        'AND    chdt.disbursement_number = :cp_n_dib_num '    ||
6208                        'AND    chdt.old_date = :cp_d_new_disb_dt '           ||
6209                        'AND    chdt.change_field_code = ''DISB_DATE'' '      ||
6210                        'AND    chdt.change_code_txt = ''A'' '                ||
6211                        'AND    chdt.status_code IN (''R'',''N'',''D'') '     ||
6212                        'AND    chdt.change_record_type_txt = ''10'' ';
6213 
6214         OPEN  c_igf_sl_clchsn_dtls FOR l_v_sqlstmt USING l_n_award_id,l_n_disb_num,l_d_new_disb_date;
6215         FETCH c_igf_sl_clchsn_dtls INTO l_v_rowid;
6216         IF c_igf_sl_clchsn_dtls%FOUND THEN
6217           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6218                      p_v_string => ' Change record to be deleted '  ||
6219                                    ' Award Id     : '||l_n_award_id ||
6220                                    ' Disb Num     : '||l_n_disb_num ||
6221                                    ' New disb Date: '||l_d_new_disb_date
6222                     );
6223           igf_sl_clchsn_dtls_pkg.delete_row(x_rowid =>  l_v_rowid);
6224           log_to_fnd(p_v_module => ' create_disb_chg_rec ',
6225                      p_v_string => ' Change record deleted  Successfully'  ||
6226                                    ' Award Id     : '||l_n_award_id ||
6227                                    ' Disb Num     : '||l_n_disb_num ||
6228                                    ' New disb Date: '||l_d_new_disb_date
6229                     );
6230         END IF;
6231         CLOSE c_igf_sl_clchsn_dtls;
6232         p_b_return_status := TRUE;
6233         p_v_message_name  := NULL;
6234       END IF;
6235       -- end of code logic for Change Type = Cancellation
6236       -- end  of code logic for disbursement date change
6237     END IF;
6238     -- end of code logic for post disbursement changes (@10)
6239   END IF;
6240 
6241 EXCEPTION
6242   WHEN e_resource_busy THEN
6243     ROLLBACK TO igf_sl_cl_create_chg_disb_sp;
6244     log_to_fnd(p_v_module => ' Procedure create_disb_chg_rec:  e resource busy exception',
6245                p_v_string => SQLERRM
6246                );
6247     p_b_return_status := FALSE;
6248     p_v_message_name  := 'IGS_GE_RECORD_LOCKED';
6249     RETURN;
6250   WHEN e_valid_edits THEN
6251     ROLLBACK TO igf_sl_cl_create_chg_disb_sp;
6252     log_to_fnd(p_v_module => 'Procedure create_disb_chg_rec: validation edits exception handler',
6253                p_v_string => ' change record validation raised errors '||l_v_message_name
6254               );
6255     p_b_return_status := FALSE;
6256     p_v_message_name  := l_v_message_name;
6257     igf_sl_cl_chg_prc.g_message_tokens := l_d_message_tokens;
6258     RETURN;
6259   WHEN OTHERS THEN
6260     ROLLBACK TO igf_sl_cl_create_chg_disb_sp;
6261     log_to_fnd(p_v_module => 'Procedure create_disb_chg_rec: when others exception handler',
6262                p_v_string => SQLERRM
6263               );
6264     fnd_message.set_name ('IGS', 'IGS_GE_UNHANDLED_EXP');
6265     fnd_message.set_token('NAME','igf_sl_cl_create_chg.create_disb_chg_rec');
6266     igs_ge_msg_stack.add;
6267     app_exception.raise_exception;
6268 
6269 END create_disb_chg_rec;
6270 
6271 PROCEDURE log_to_fnd ( p_v_module IN VARCHAR2,
6272                        p_v_string IN VARCHAR2 ) AS
6273 ------------------------------------------------------------------
6274 --Created by  : Sanil Madathil, Oracle IDC
6275 --Date created: 18 October 2004
6276 --
6277 -- Purpose:
6278 -- Invoked     : from within validate_chg procedure
6279 -- Function    : Private procedure for logging all the statement level
6280 --               messages
6281 -- Parameters  : p_v_module   : IN parameter. Required.
6282 --               p_v_string   : IN parameter. Required.
6283 --
6284 --
6285 --Known limitations/enhancements and/or remarks:
6286 --
6287 --Change History:
6288 --Who         When            What
6289 ------------------------------------------------------------------
6290 BEGIN
6291   IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
6292     fnd_log.string( fnd_log.level_statement, 'igf.plsql.igf_sl_cl_create_chg.'||p_v_module, p_v_string);
6293   END IF;
6294 END log_to_fnd;
6295 
6296 FUNCTION get_sl_clchsn_dtls ( p_rowid ROWID)
6297 RETURN igf_sl_clchsn_dtls%ROWTYPE AS
6298 ------------------------------------------------------------------
6299 --Created by  : Sanil Madathil, Oracle IDC
6300 --Date created: 18 October 2004
6301 --
6302 -- Purpose:
6303 -- Invoked     : from within procedures in this package
6304 -- Function    : Private procedure which returns igf_sl_clchsn_dtls%ROWTYPE
6305 --
6306 -- Parameters  : p_rowid   : IN parameter. Required.
6307 --
6308 --
6309 --Known limitations/enhancements and/or remarks:
6310 --
6311 --Change History:
6312 --Who         When            What
6313 ------------------------------------------------------------------
6314   CURSOR c_sl_clchsn_dtls (cp_rowid ROWID) IS
6315   SELECT chdt.*
6316   FROM   igf_sl_clchsn_dtls chdt
6317   WHERE  rowid = p_rowid;
6318 
6319   rec_sl_clchsn_dtls c_sl_clchsn_dtls%ROWTYPE;
6320 BEGIN
6321   OPEN  c_sl_clchsn_dtls (cp_rowid => p_rowid);
6322   FETCH c_sl_clchsn_dtls  INTO rec_sl_clchsn_dtls ;
6323   CLOSE c_sl_clchsn_dtls  ;
6324   RETURN rec_sl_clchsn_dtls;
6325 END get_sl_clchsn_dtls;
6326 
6327 END igf_sl_cl_create_chg;