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