DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_GR_RFMS_DISB_ORIG

Source


1 PACKAGE BODY igf_gr_rfms_disb_orig AS
2 /* $Header: IGFGR03B.pls 120.4 2006/02/08 23:46:42 ridas ship $ */
3 
4 ------------------------------------------------------------------------
5 -- bvisvana   07-July-2005   Bug # 4008991 - IGF_GR_BATCH_DOES_NOT_EXIST replaced by IGF_SL_GR_BATCH_DOES_NO_EXIST
6 ------------------------------------------------------------------------
7 --  ayedubat  20-OCT-2004    FA 149 COD-XML Standards build bug # 3416863
8 --                           Changed the logic as per the TD, FA149_TD_COD_XML_i1a.doc
9 ------------------------------------------------------------------------
10 -- veramach   29-Jan-2004    Bug 3408092 Added 2004-2005 in g_ver_num checks
11 ------------------------------------------------------------------------
12 -- ugummall   08-JAN-2004    Bug 3318202. Changed the order of parameters and removed p_org_id in main procedure.
13 ------------------------------------------------------------------------
14 -- ugummall   06-NOV-2003    Bug 3102439. FA 126 Multiple FA Offices.
15 --                           1. Added two extra parameters to main and rfms_disb_orig procedures.
16 --                           2. Modified cursor cur_rfms_disb to include reporting and attending pell ids.
17 --                           3. Removed l_rep_pell_id and its references. Used p_reporting_pell, newly
18 --                              passed parameter, in igf_gr_gen.{get_pell_trailer, get_pell_header} procedures.
19 --                           4. New cursor cur_attending_pell to check attending pell is a child of reporting
20 --                              pell or not.
21 --                           5. In rfms_disb_orig prcodure processed only those records for which attending
22 --                              pell is a child of reporting pell id.
23 ------------------------------------------------------------------------------
24 -- ugummall   03-NOV-2003    Bug 3102439. FA 126 - Multiple FA Offices.
25 --                           Added two extra parameters in call to igf_gr_gen.get_pell_header
26 ------------------------------------------------------------------------------
27 -- cdcruz     16-Aug-2003    Bug BUG FA121-3085558
28 --                           Check added to check for Transaction Number
29 --                           Match against Payment ISIR.
30 ------------------------------------------------------------------------
31 -- rasahoo    13-May-2003      Bug #2938258 If Disbursement Record is not part of this batch
32 --                             in the System then raise error.Cannot process Disbursement
33 --                             Record which status for acknowledgement processing is not "Sent".
34 -------------------------------------------------------------------------------
35 -- sjadhav    06-Feb-2003      FA116 Build Bug - 2758812
36 --                             added invalid_version expcetion
37 --                             modified for 03-04 compliance
38 --                             output file in UPPERCASE
39 ------------------------------------------------------------------------------
40 -- sjadhav    Bug 2383690      added igf_gr_gen.send_orig_disb call
41 ------------------------------------------------------------------------------
42 -- sjadhav    FEB13th,2002     BUG 2216956
43 --                             Removed flag and disbursement number parameters
44 --                             Added Award Year parameter to main_ack
45 ------------------------------------------------------------------------------
46 -- sjadhav    18-jun-2001      Bug ID : 1823995
47 --                             1. Query for the main cursor 'cur_rfms_disb'
48 --                             modified to have NVL clause
49 --                             2. base_id is made null if the process is
50 --                             run for an award year
51 ------------------------------------------------------------------------------
52 -- sjadhav    25-apr-2001      Bug No : 1750071
53 --                             Do not create Origination Record if any of
54 --                             the following field is null
55 --                             disb_ref_num,db_cr_flag,disb_amt
56 ------------------------------------------------------------------------------
57 -- sjadhav    19-apr-2001      Bug ID : 1731177 Added main_ack to process
58 --                             rfms disb ack . this will get
59 --                             called from conc. mgr.
60 --                             Removed l_mode from main
61 ------------------------------------------------------------------------------
62 
63 
64   no_data_in_table      EXCEPTION;
65   param_error           EXCEPTION;
66   batch_not_created     EXCEPTION;
67   invalid_version       EXCEPTION;
68   next_record           EXCEPTION;
69 
70   l_cy_yr               VARCHAR2(10)    DEFAULT NULL; -- to hold cycle year
71   l_msg_prn_1           BOOLEAN         DEFAULT TRUE;
72   g_ver_num             VARCHAR2(30)    DEFAULT NULL; -- Flat File Version Number
73   g_alt_code            VARCHAR2(80);
74   g_header              VARCHAR2(1000);
75   g_header_written      VARCHAR2(1)     DEFAULT 'N';
76   g_trans_type          VARCHAR2(1);
77   g_persid_grp          igs_pe_persid_group_all.group_id%TYPE;
78 
79 -- Main Cursor to pick up RFMS Records
80 -- for preparing Origination File
81 
82 -- FA 126. This cursor cur_rfms_disb is modified to include reporting and attending pell ids.
83         CURSOR cur_rfms_disb(
84                              l_base_id              igf_gr_rfms.base_id%TYPE,
85                              l_ci_cal_type          igf_gr_rfms.ci_cal_type%TYPE,
86                              l_ci_sequence_number   igf_gr_rfms.ci_sequence_number%TYPE,
87                              cp_reporting_pell      igf_gr_rfms.rep_pell_id%TYPE,
88                              cp_attending_pell      igf_gr_rfms.attending_campus_id%TYPE
89                             ) IS
90         SELECT rfmd.*,
91                rfms.inst_cross_ref_cd,
92                rfms.base_id,
93                rfms.award_id,
94                rfms.transaction_num,
95                rfms.ci_cal_type,
96                rfms.ci_sequence_number,
97                rfms.rep_pell_id,
98                rfms.attending_campus_id,
99                rfms.pell_amount
100           FROM igf_gr_rfms   rfms ,
101                igf_gr_rfms_disb rfmd,
102                igf_gr_pell_setup setup
103          WHERE rfms.base_id             =  NVL(l_base_id,rfms.base_id)
104            AND rfms.ci_cal_type         =  l_ci_cal_type
105            AND rfms.ci_sequence_number  =  l_ci_sequence_number
106            AND rfms.rep_pell_id         =  cp_reporting_pell
107            AND rfms.attending_campus_id =  NVL(cp_attending_pell, rfms.attending_campus_id)
108            AND rfmd.disb_ack_act_status =  'R'
109            AND rfmd.origination_id      = rfms.origination_id
110            AND rfmd.disb_ref_num IN (SELECT disb.disb_num
111                                        FROM igf_aw_awd_disb_all disb
112                                       WHERE disb.trans_type IN ('A')
113                                         AND disb.award_id = rfms.award_id
114                                         AND g_trans_type IN ('A','P')
115                                      UNION ALL
116                                      SELECT disb.disb_num
117                                        FROM igf_aw_awd_disb_all disb
118                                       WHERE disb.trans_type IN ('P')
119                                         AND disb.award_id = rfms.award_id
120                                         AND disb.disb_date <= DECODE(setup.funding_method,'J',TRUNC(SYSDATE) + 7,'A',TRUNC(SYSDATE) + 30)
121                                         AND g_trans_type = 'P'
122                                     )
123            AND setup.rep_pell_id        = rfms.rep_pell_id
124            AND setup.ci_cal_type        = rfms.ci_cal_type
125            AND setup.ci_sequence_number = rfms.ci_sequence_number
126            AND rfms.orig_action_code    IN ('A','D','C')
127 	       ORDER BY rfms.origination_id
128        FOR UPDATE OF disb_ack_act_status NOWAIT;
129        rec_rfms_disb cur_rfms_disb%ROWTYPE;
130 
131 PROCEDURE  upd_rfms_disb(p_rec_disb_orig cur_rfms_disb%ROWTYPE,
132                          p_rfmb_id  igf_gr_rfms_batch.rfmb_id%TYPE)  IS
133 
134 ------------------------------------------------------------------------------
135 --
136 --  Created By : sjadhav
137 --
138 --  Date Created On : 2001/01/03
139 --  Purpose :
140 -- This procedure updates the records which are sent to
141 -- external processor.
142 -- orig_ack_act_status is updated to 'S' for the record which is
143 -- sent to external processor.
144 --  Know limitations, enhancements or remarks
145 --  Change History
146 --  Who             When            What
147 --
148 --  (reverse chronological order - newest change first)
149 --
150 ------------------------------------------------------------------------------
151 
152 BEGIN
153 
154      igf_gr_rfms_disb_pkg.update_row (
155                          x_rowid                                    => p_rec_disb_orig.row_id,
156                          x_rfmd_id                                  => p_rec_disb_orig.rfmd_id ,
157                          x_origination_id                           => p_rec_disb_orig.origination_id,
158                          x_disb_ref_num                             => p_rec_disb_orig.disb_ref_num,
159                          x_disb_dt                                  => p_rec_disb_orig.disb_dt,
160                          x_disb_amt                                 => p_rec_disb_orig.disb_amt,
161                          x_db_cr_flag                               => p_rec_disb_orig.db_cr_flag,
162                          x_disb_ack_act_status                      => 'S',                -- record processed
163                          x_disb_status_dt                           => p_rec_disb_orig.disb_status_dt,
164                          x_accpt_disb_dt                            => p_rec_disb_orig.accpt_disb_dt ,
165                          x_disb_accpt_amt                           => p_rec_disb_orig.disb_accpt_amt,
166                          x_accpt_db_cr_flag                         => p_rec_disb_orig.accpt_db_cr_flag,
167                          x_disb_ytd_amt                             => p_rec_disb_orig.disb_ytd_amt,
168                          x_pymt_prd_start_dt                        => p_rec_disb_orig.pymt_prd_start_dt,
169                          x_accpt_pymt_prd_start_dt                  => p_rec_disb_orig.accpt_pymt_prd_start_dt,
170                          x_edit_code                                => p_rec_disb_orig.edit_code ,
171                          x_rfmb_id                                  => p_rfmb_id,
172                          x_mode                                     => 'R',
173                          x_ed_use_flags                             => p_rec_disb_orig.ed_use_flags);
174 
175 
176 EXCEPTION
177 WHEN OTHERS THEN
178    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
179    fnd_message.set_token('NAME','IGF_GR_RFMS_DISB_ORIG.UPD_RFMS_DISB');
180    igs_ge_msg_stack.add;
181    app_exception.raise_exception;
182 END upd_rfms_disb;
183 
184 
185 PROCEDURE  prepare_data
186           ( p_rfms_rec        IN  cur_rfms_disb%ROWTYPE,
187             p_num_of_records  IN  OUT NOCOPY NUMBER,
188             p_rfmb_id         IN  igf_gr_rfms_batch.rfmb_id%TYPE)
189 IS
190 ------------------------------------------------------------------------------
191 --
192 --   Created By : sjadhav
193 --
194 --   Date Created On : 2001/01/03
195 --   Purpose :This procedure loads the record data into datafile
196 --   Know limitations, enhancements or remarks
197 --   Change History
198 --   Who             When            What
199 --   ugummall        06-NOV-2003     Bug 3102439. FA 126 - Multiple FA Offices.
200 --                                   1. Since Header needs to be written only when at least one data record to
201 --                                      be written is there, it is written just before writing first data record
202 --                                      into output file.
203 --
204 --   (reverse chronological order - newest change first)
205 --
206 ------------------------------------------------------------------------------
207 
208    l_data           VARCHAR2(1000);
209    -- This cursor gets l_inst_crref_id from igf_gr_pell_setup
210    -- for a particualr origination
211 
212 
213    BEGIN
214 
215    l_data        :=   NULL;
216    --
217    --
218    -- Bug No : 1750071
219    -- Do not create Origination Record if any of the following field is null
220    -- disb_ref_num,db_cr_flag,disb_amt
221    -- Write into the log file which records were not originated
222    --
223    --
224    IF p_rfms_rec.disb_ref_num IS NULL OR
225       p_rfms_rec.db_cr_flag   IS NULL OR
226       p_rfms_rec.disb_amt     IS NULL THEN
227       fnd_file.new_line(fnd_file.log,1);
228       fnd_message.set_name('IGF','IGF_GR_ORIG_DATA_REQD');
229       fnd_message.set_token('PER_NUM',igf_gr_gen.get_per_num(p_rfms_rec.base_id));
230       fnd_file.put_line(fnd_file.log,fnd_message.get);
231       fnd_file.put_line(fnd_file.log, RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','DISB_REF_NUM'),50) || ' : ' ||p_rfms_rec.disb_ref_num);
232       fnd_file.put_line(fnd_file.log, RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','DB_CR_FLAG'),50) || ' : ' ||p_rfms_rec.db_cr_flag);
233       fnd_file.put_line(fnd_file.log, RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','DISB_AMT'),50) || ' : ' ||p_rfms_rec.disb_amt);
234       fnd_file.new_line(fnd_file.log,1);
235    ELSE
236         IF g_ver_num IN ('2002-2003','2003-2004','2004-2005') THEN
237                  l_data     :=   RPAD(p_rfms_rec.origination_id,23)                                  ||
238                                  RPAD(NVL(p_rfms_rec.inst_cross_ref_cd,' '),13)                      ||
239                                  RPAD(' ',1)                                                         ||   -- Action Code
240                                  LPAD(p_rfms_rec.disb_ref_num,2,'0')                                 ||
241                                  RPAD(p_rfms_rec.db_cr_flag,1)                                       ||
242                                  LPAD(TO_CHAR(ABS(100*NVL(p_rfms_rec.disb_amt,0))),7,'0')            ||
243                                  RPAD(NVL(TO_CHAR(p_rfms_rec.disb_dt,'YYYYMMDD'),' '),8)             ||
244                                  RPAD(NVL(TO_CHAR(p_rfms_rec.pymt_prd_start_dt,'YYYYMMDD'),' '),8)   ||
245                                  RPAD(' ',37);                                                    -- Unused
246              --
247              -- The length of this record is 100
248              -- update rfms_disb table for the records sent.
249              --
250              -- Bug 2383690
251              -- If this is not first disbursement and
252              -- If fed verf stat is W, do not send
253              -- log message
254              --
255 
256             IF NVL(p_rfms_rec.disb_ref_num,0) <>
257                NVL(igf_gr_gen.get_min_pell_disb ( p_rfms_rec.origination_id ),0) THEN
258                 IF   igf_gr_gen.send_orig_disb( p_rfms_rec.origination_id) THEN
259 
260                      IF (g_header_written = 'N') THEN
261                        fnd_file.put_line(fnd_file.output, UPPER(g_header));
262                        g_header_written := 'Y';
263                      END IF;
264 
265                      fnd_file.put_line(fnd_file.output,UPPER(l_data));
266                      upd_rfms_disb(p_rfms_rec,p_rfmb_id);
267                      p_num_of_records := p_num_of_records + 1;
268 
269                 ELSE
270 
271                       fnd_message.set_name('IGF','IGF_GR_VERF_STAT_W');
272                       fnd_message.set_token('ORIG_ID',igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','ORIGINATION_ID') ||
273                                                            ' : ' || p_rfms_rec.origination_id        ||
274                                                            ' , ' || igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','DISB_REF_NUM') ||
275                                                            ' : ' || p_rfms_rec.disb_ref_num);
276 
277                       fnd_file.put_line(fnd_file.log,fnd_message.get);
278                END IF;
279             ELSE
280 
281                      IF (g_header_written = 'N') THEN
282                        fnd_file.put_line(fnd_file.output, UPPER(g_header));
283                        g_header_written := 'Y';
284                      END IF;
285 
286                      fnd_file.put_line(fnd_file.output,UPPER(l_data));
287                      upd_rfms_disb(p_rfms_rec,p_rfmb_id);
288                      p_num_of_records := p_num_of_records + 1;
289 
290             END IF;
291 
292 
293         ELSE
294             RAISE igf_gr_gen.no_file_version;
295         END IF;
296     END IF;
297 
298 
299     EXCEPTION
300 
301     WHEN igf_gr_gen.no_file_version THEN
302       RAISE;
303 
304     WHEN OTHERS THEN
305       fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
306       fnd_message.set_token('NAME','IGF_GR_RFMS_DISB_ORIG.PREPARE_DATA');
307       igs_ge_msg_stack.add;
308       app_exception.raise_exception;
309 
310 END prepare_data;
311 
312 PROCEDURE   log_message
313        (p_batch_id                 VARCHAR2,
314         p_origination_id           igf_gr_rfms.origination_id%TYPE )  IS
315 
316 ------------------------------------------------------------------------------
317 --
318 --   Created By : sjadhav
319 --
320 --   Date Created On : 2001/01/03
321 --   Purpose :This overloaded procedure formats the messages
322 --   to be put into log file.
323 --   Know limitations, enhancements or remarks
324 --   Change History
325 --   Who             When            What
326 --
327 --   (reverse chronological order - newest change first)
328 --
329 ------------------------------------------------------------------------------
330     l_msg_str_0     VARCHAR2(1000);
331     l_msg_str_1     VARCHAR2(1000);
332 BEGIN
333 
334     l_msg_str_0  :=  RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','BATCH_ID'),50) ||
335                      RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','ORIGINATION_ID'),50);
336     l_msg_str_1  :=  RPAD(p_batch_id,50) ||
337                      RPAD(p_origination_id,50);
338 
339     fnd_file.put_line(fnd_file.log,'');
340     fnd_message.set_name('IGF','IGF_GR_NO_RFMS_ORIG');
341     fnd_file.put_line(fnd_file.log,fnd_message.get);
342     fnd_file.put_line(fnd_file.log,'         ');
343     fnd_file.put_line(fnd_file.log,l_msg_str_0);
344     fnd_file.put_line(fnd_file.log,RPAD('-',100,'-'));
345 
346     fnd_file.put_line(fnd_file.log,l_msg_str_1);
347 
348 
349 EXCEPTION
350    WHEN others THEN
351         fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
352         fnd_message.set_token('NAME','IGF_GR_RFMS_ORIG.LOG_MESSAGE');
353         igs_ge_msg_stack.add;
354         app_exception.raise_exception;
355 END log_message;
356 
357 PROCEDURE out_message( p_origination_id      igf_gr_rfms_disb.origination_id%TYPE,
358                        p_disb_ref_num        igf_gr_rfms_disb.disb_ref_num%TYPE)
359 IS
360 ------------------------------------------------------------------------------
361 --
362 --   Created By : sjadhav
363 --
364 --   Date Created On : 2001/01/03
365 --   Purpose :This overloaded procedure formats the messages
366 --   to be put into log file.
367 --   Know limitations, enhancements or remarks
368 --   Change History
369 --   Who             When            What
370 --
371 --   (reverse chronological order - newest change first)
372 --
373 ------------------------------------------------------------------------------
374 
375     l_msg_str_0     VARCHAR2(1000);
376     l_msg_str_1     VARCHAR2(1000);
377 
378 BEGIN
379 
380      l_msg_str_0  :=  RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','ORIGINATION_ID'),50)       ||
381                       RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','DISB_REF_NUM'),50);
382 
383      l_msg_str_1  :=  RPAD(p_origination_id,30)   ||
384                       RPAD(p_disb_ref_num,30);
385 
386      IF l_msg_prn_1 = TRUE THEN
387         fnd_message.set_name('IGF','IGF_GR_RECORDS_UPDATED');
388         fnd_file.put_line(fnd_file.output,fnd_message.get);
389         fnd_file.new_line(fnd_file.output,1);
390         fnd_file.put_line(fnd_file.output,l_msg_str_0);
391         fnd_file.put_line(fnd_file.output,RPAD('-',100,'-'));
392         l_msg_prn_1 := FALSE;
393      END IF;
394      fnd_file.put_line(fnd_file.output,l_msg_str_1);
395 
396 
397 EXCEPTION
398    WHEN others THEN
399         fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
400         fnd_message.set_token('NAME','IGF_GR_RFMS_ORIG.LOG_MESSAGE');
401         igs_ge_msg_stack.add;
402         app_exception.raise_exception;
403 END out_message;
404 
405 
406 PROCEDURE log_rej_message(p_origination_id      igf_gr_rfms_disb.origination_id%TYPE,
407                           p_disb_ref_num        igf_gr_rfms_disb.disb_ref_num%TYPE,
408                           p_edit_code           igf_gr_rfms_disb.edit_code%TYPE)
409 IS
410 ------------------------------------------------------------------------------
411 --
412 --   Created By : sjadhav
413 --
414 --   Date Created On : 2001/01/03
415 --   Purpose :This overloaded procedure formats the messages
416 --   to be put into log file.
417 --   Know limitations, enhancements or remarks
418 --   Change History
419 --   Who             When            What
420 --
421 --   (reverse chronological order - newest change first)
422 --
423 ------------------------------------------------------------------------------
424 
425     l_msg_str_0                 VARCHAR2(1000)  DEFAULT NULL;
426     l_msg_str_1                 VARCHAR2(1000)  DEFAULT NULL;
427     l_msg_str_2                 VARCHAR2(1000)  DEFAULT NULL;
428     l_msg_str_3                 VARCHAR2(1000)  DEFAULT NULL;
429 
430     CURSOR cur_err_desc(l_err_cd igf_gr_rfms_error.edit_code%TYPE) IS
431     SELECT
432     igf_gr_rfms_error.message
433     FROM igf_gr_rfms_error
434     WHERE
435     igf_gr_rfms_error.edit_code = l_err_cd;
436 
437     l_count             NUMBER  DEFAULT 1;
438     l_error_code        igf_gr_rfms_error.edit_code%TYPE;
439     l_msg_desc          VARCHAR2(4000)  DEFAULT NULL;
440 
441 BEGIN
442 
443      IF NVL(TO_NUMBER(RTRIM(LTRIM(p_edit_code))),0) > 0 THEN
444           fnd_file.new_line(fnd_file.log,1);
445           fnd_message.set_name('IGF','IGF_GR_REC_CONTAIN_EDIT_CODES');
446           fnd_file.put_line(fnd_file.log,fnd_message.get);
447 
448           l_msg_str_0  :=  RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','ORIGINATION_ID'),50)       ||
449                            RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','DISB_REF_NUM'),50);
450 
451           l_msg_str_1  :=  RPAD(p_origination_id,30)   ||
452                            RPAD(p_disb_ref_num,30);
453 
454 
455           l_msg_str_2  :=  RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','EDIT_CODE'),50);
456           fnd_file.put_line(fnd_file.log,l_msg_str_0);
457           fnd_file.put_line(fnd_file.log,RPAD('-',100,'-'));
458           fnd_file.put_line(fnd_file.log,l_msg_str_1);
459           fnd_file.put_line(fnd_file.log,' ');
460 
461           IF NVL(p_edit_code,'0') <> '0' THEN
462             fnd_file.put_line(fnd_file.log,l_msg_str_2);
463             fnd_file.put_line(fnd_file.log,RPAD('-',50,'-'));
464           END IF;
465 
466           FOR l_cn IN 1 .. 25 LOOP
467 
468               l_error_code :=  NVL(SUBSTR(p_edit_code,l_count,3),'000');
469               IF l_error_code <>'000' THEN
470 
471                     l_msg_str_3   :=    RPAD(l_error_code,5);
472                     fnd_file.put_line(fnd_file.log,l_msg_str_3);
473 
474                END IF;
475                l_count      :=  l_count + 3;
476           END LOOP;
477      END IF;
478 
479 
480 EXCEPTION
481 
482    WHEN others THEN
483         fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
484         fnd_message.set_token('NAME','IGF_GR_RFMS_ORIG.LOG_MESSAGE');
485         igs_ge_msg_stack.add;
486         app_exception.raise_exception;
487 
488 END log_rej_message;
489 
490 
491 PROCEDURE rfms_disb_orig(
492                          p_ci_cal_type          IN VARCHAR2,
493                          p_ci_sequence_number   IN NUMBER,
494                          p_base_id              IN VARCHAR2,
495                          p_reporting_pell       IN VARCHAR2,
496                          p_attending_pell       IN VARCHAR2
497                         ) IS
498 ------------------------------------------------------------------------------
499 --
500 --  Created By : sjadhav
501 --
502 --  Date Created On : 2001/01/03
503 --  Purpose : This procedure reads the data from igf_gr_rfms table
504 --  for the paricular award year and base id and loads the data
505 --  into a datafile after formatting
506 --
507 --  Know limitations, enhancements or remarks
508 --  Change History
509 --  Who             When            What
510 --  ugummall        10-DEC-2003     Bug 3252832. FA 131 - COD Updates
511 --                                  Added check - Amount should not be less than sum of disbursement amounts.
512 --                                  Added cursor cur_disb_amt_tot
513 --  ugummall        06-NOV-2003     Bug 3102439. FA 126 Multiple FA Offices.
514 --                                  1. Added two extra parameters namely p_reporting_pell
515 --                                     and p_attending_pell to this procedure.
516 --                                  2. Added cursor cur_attending_pell. Added check for attending pell
517 --                                     is a child of reporting pell. If not skipped Context Student's records.
518 --                                  3. Parameters are shown in log file irrespective of wether cur_rfms
519 --                                     fetches the records or not. This is done for clarity.
520 --  ugummall        03-NOV-2003     Bug 3102439. FA 126 - Multiple FA Offices.
521 --                                  Added two extra parameters in call to igf_gr_gen.get_pell_header
522 --  rasahoo         16-Oct-2003     FA121-Bug# 3085558 cur_pymnt_isir_rec is initialised to null
523 --  cdcruz          16-Sep-03       FA121-Bug# 3085558 New Cursor added cur_pymnt_isir
524 --                                  That checks for the Transaction Number
525 --                                  On the Payment ISIR
526 --                                  Entire Looping Changed
527 --
528 --  (reverse chronological order - newest change first)
529 --
530 ------------------------------------------------------------------------------
531 
532   -- l_header is removed, and new g_header is used.
533 
534   l_record              VARCHAR2(4000);
535   l_trailer             VARCHAR2(1000);
536   l_num_of_rec          NUMBER DEFAULT 0;
537   l_amount_total        NUMBER DEFAULT 0;
538 
539   p_rfmb_id             igf_gr_rfms_batch.rfmb_id%TYPE;
540   l_batch_id            VARCHAR2(60);
541   l_running_orig_id     VARCHAR2(30);
542   l_last_disb_rec       VARCHAR2(1);
543   l_valid_rec           BOOLEAN;
544   I  NUMBER;
545 
546 	CURSOR cur_pymnt_isir(
547                         l_base_id igf_gr_rfms.base_id%TYPE
548                        )  IS
549   SELECT isir.transaction_num
550     FROM igf_ap_isir_matched isir
551    WHERE isir.base_id = l_base_id
552      AND isir.payment_isir = 'Y' ;
553   cur_pymnt_isir_rec cur_pymnt_isir%rowtype;
554 
555   -- Cursor to check attending pell id is a child of reporting pell id
556   CURSOR cur_attending_pell(
557                             cp_ci_cal_type          igf_gr_report_pell.ci_cal_type%TYPE,
558                             cp_ci_sequence_number   igf_gr_report_pell.ci_sequence_number%TYPE,
559                             cp_reporting_pell       igf_gr_report_pell.reporting_pell_cd%TYPE,
560                             cp_attending_pell       igf_gr_attend_pell.attending_pell_cd%TYPE
561                            ) IS
562   SELECT  'Y'
563     FROM  igf_gr_report_pell rep,
564           igf_gr_attend_pell att
565    WHERE  rep.rcampus_id            =   att.rcampus_id
566      AND  rep.ci_cal_type           =   cp_ci_cal_type
567      AND  rep.ci_sequence_number    =   cp_ci_sequence_number
568      AND  rep.reporting_pell_cd     =   cp_reporting_pell
569      AND  att.attending_pell_cd     =   cp_attending_pell;
570   l_attending_pell_exists      cur_attending_pell%ROWTYPE;
571 
572   -- To get sum of disbursement amounts.
573   CURSOR cur_disb_amt_tot(cp_origination_id igf_gr_rfms_disb.origination_id%TYPE) IS
574     SELECT SUM(disb_amt) disb_amt_tot
575       FROM igf_gr_rfms_disb
576      WHERE origination_id = cp_origination_id;
577   rec_disb_amt_tot  cur_disb_amt_tot%ROWTYPE;
578 
579 BEGIN
580 
581   IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
582     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.rfms_disb_orig.debug','p_ci_cal_type:'||p_ci_cal_type);
583     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.rfms_disb_orig.debug','p_ci_sequence_number:'||p_ci_sequence_number);
584     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.rfms_disb_orig.debug','p_base_id:'||p_base_id);
585     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.rfms_disb_orig.debug','p_reporting_pell:'||p_reporting_pell);
586     fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.rfms_disb_orig.debug','p_attending_pell:'||p_attending_pell);
587   END IF;
588 
589   -- FA 126. Passed extra parameters p_reporting_pell and p_attending_pell to this cursor.
590   OPEN     cur_rfms_disb(p_base_id,p_ci_cal_type,p_ci_sequence_number, p_reporting_pell, p_attending_pell);
591   FETCH    cur_rfms_disb INTO rec_rfms_disb;
592 
593   -- If the table does not contain any data for this base_id or award_year
594   -- message is logged into log file and relevent details are also shown
595   IF cur_rfms_disb%NOTFOUND  THEN
596     CLOSE cur_rfms_disb;
597     IF (g_persid_grp IS NULL)THEN
598       fnd_message.set_name('IGF','IGF_GR_NO_RFMS_ORIG');
599       igs_ge_msg_stack.add;
600       fnd_file.put_line(fnd_file.log,fnd_message.get);
601       RAISE no_data_in_table;
602     ELSE
603       RAISE next_record;
604     END IF;
605   END IF;
606 
607   -- since the table has data, prepare a header record
608   g_header := igf_gr_gen.get_pell_header(g_ver_num,
609                                          l_cy_yr,
610                                          p_reporting_pell,
611                                          '#D',
612                                          p_rfmb_id,
613                                          l_batch_id,
614                                          p_ci_cal_type,
615                                          p_ci_sequence_number);
616 
617   -- Header can not be written into output datafile unless and until we are sure that
618   -- at least one data record will be created. Hence commenting out the following line.
619   -- fnd_file.put_line(fnd_file.output,UPPER(l_header));
620   -- Header(above line) will be written in prepare_data procedure just before first
621   -- data record is written. by ugummall.
622 
623   fnd_file.new_line(fnd_file.log,1);
624   fnd_file.put_line(fnd_file.log,RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','BATCH_ID'),10)||' :'
625                                                               ||'  '|| l_batch_id);
626   fnd_file.new_line(fnd_file.log,1);
627 
628   l_amount_total := 0;
629   l_num_of_rec   := 0;
630 
631 
632   -- Initiallise the current Origination ID to -1
633   l_running_orig_id := '-1';
634   l_last_disb_rec   := 'N' ;
635 
636   LOOP
637     IF (l_running_orig_id <> rec_rfms_disb.origination_id) THEN
638 
639       -- Student in Context has changed so do the Transaction Check as well Attending Pell child check.
640       l_running_orig_id := rec_rfms_disb.origination_id ;
641       l_valid_rec   :=  TRUE;
642 
643       fnd_message.set_name('IGF','IGF_GR_RFMS_ORG_ID');
644       fnd_message.set_token('ORIG_ID',l_running_orig_id);
645       fnd_file.put_line(fnd_file.log,fnd_message.get);
646 
647       -- Get The Payment ISIR Transaction Number
648       cur_pymnt_isir_rec := NULL;
649       OPEN cur_pymnt_isir(rec_rfms_disb.base_id);
650       FETCH cur_pymnt_isir INTO cur_pymnt_isir_rec;
651       CLOSE cur_pymnt_isir;
652 
653       -- If the Transaction Number being reported does not match do not Originate
654       IF rec_rfms_disb.transaction_num <> NVL(cur_pymnt_isir_rec.transaction_num,-1) THEN
655         l_valid_rec := FALSE;
656 
657         IF cur_pymnt_isir_rec.transaction_num IS NULL THEN
658           fnd_message.set_name('IGF','IGF_AP_NO_PAYMENT_ISIR');
659           fnd_file.put_line(fnd_file.log,fnd_message.get);
660         ELSE
661           fnd_message.set_name('IGF','IGF_GR_PYMNT_ISIR_MISMATCH');
662           fnd_file.put_line(fnd_file.log,fnd_message.get);
663         END IF;
664       END IF;
665 
666       -- check if attending pell is a child of reporting pell id.
667       l_attending_pell_exists := NULL;
668       OPEN cur_attending_pell(rec_rfms_disb.ci_cal_type,
669                               rec_rfms_disb.ci_sequence_number,
670                               rec_rfms_disb.rep_pell_id,
671                               rec_rfms_disb.attending_campus_id);
672       FETCH cur_attending_pell INTO l_attending_pell_exists;
673 
674       -- If Attending pell child record does not exist?
675       IF (cur_attending_pell%NOTFOUND) THEN
676         l_valid_rec := FALSE;
677 
678         FND_MESSAGE.SET_NAME('IGF', 'IGF_GR_ATTEND_PELL_NOT_SETUP');
679         FND_FILE.PUT_LINE(FND_FILE.LOG, FND_MESSAGE.GET);
680       END IF;
681       CLOSE cur_attending_pell;
682 
683       -- Check if sum of disbursement amounts is less than origination record's amount.
684       rec_disb_amt_tot := NULL;
685       OPEN cur_disb_amt_tot(rec_rfms_disb.origination_id);
686       FETCH cur_disb_amt_tot INTO rec_disb_amt_tot;
687       CLOSE cur_disb_amt_tot;
688 
689       IF (rec_rfms_disb.pell_amount < rec_disb_amt_tot.disb_amt_tot) THEN
690         l_valid_rec := FALSE;
691         fnd_message.set_name('IGF','IGF_GR_PELL_DIFF_AMTS');
692         FND_MESSAGE.SET_TOKEN('DISB_AMT', TO_CHAR(rec_disb_amt_tot.disb_amt_tot));
693         FND_MESSAGE.SET_TOKEN('PELL_TOT', TO_CHAR(rec_rfms_disb.pell_amount));
694 
695         fnd_file.put_line(fnd_file.log,fnd_message.get);
696       END IF;
697 
698       -- if Context student record is invalid for sending his disbersements
699       -- due to transaction number mismatch or attending pell child does not exist.
700       IF NOT l_valid_rec THEN
701         -- Since context student record is not valid, skip all his records.
702         LOOP
703           FETCH cur_rfms_disb INTO rec_rfms_disb;
704           IF (cur_rfms_disb%NOTFOUND) THEN
705             l_last_disb_rec :=  'Y';
706             EXIT;
707           END IF;
708           IF (l_running_orig_id <> rec_rfms_disb.origination_id) THEN
709             -- New Student arrived.
710             EXIT;
711           END IF;
712         END LOOP;     -- end of skipping context student's records.
713       END IF;      -- end of context student record is invalid.
714     END IF;     -- end of Student in Context has changed.
715 
716     IF l_last_disb_rec = 'Y' THEN
717       EXIT ;
718     END IF;
719 
720     IF (l_valid_rec) THEN
721       l_amount_total := l_amount_total + NVL(rec_rfms_disb.disb_amt,0);  -- Check this
722       prepare_data(rec_rfms_disb,l_num_of_rec,p_rfmb_id);
723       FETCH cur_rfms_disb INTO rec_rfms_disb;
724       EXIT WHEN cur_rfms_disb%NOTFOUND;
725     END IF;
726   END LOOP;
727 
728   CLOSE cur_rfms_disb;
729   -- since the table has data, prepare a trailer record
730   l_trailer := igf_gr_gen.get_pell_trailer(g_ver_num,
731                                            l_cy_yr,
732                                            p_reporting_pell,
733                                            '#D',
734                                            l_num_of_rec,
735                                            l_amount_total,
736                                            l_batch_id);
737 
738   fnd_file.new_line(fnd_file.log,1);
739   fnd_message.set_name('IGF','IGF_GR_ORIG_REC_NUM');
740   fnd_message.set_token('TOT_NUM',TO_CHAR(l_num_of_rec));
741   fnd_file.put_line(fnd_file.log,fnd_message.get);
742   -- p_num_of_rec || ' records written into data file
743   fnd_file.new_line(fnd_file.log,1);
744 
745   IF  l_num_of_rec > 0 THEN
746     fnd_file.put_line(fnd_file.output,UPPER(l_trailer));
747   ELSE
748     RAISE batch_not_created;
749   END IF;
750 
751 EXCEPTION
752   WHEN igf_gr_gen.no_file_version THEN
753     RAISE;
754   WHEN batch_not_created THEN
755     RAISE;
756   WHEN no_data_in_table THEN
757     RAISE;
758   WHEN next_record THEN
759     RAISE;
760   WHEN OTHERS THEN
761     fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
762     fnd_message.set_token('NAME','IGF_GR_RFMS_DISB_ORIG.RFMS_DISB_ORIG');
763     igs_ge_msg_stack.add;
764     app_exception.raise_exception;
765 END rfms_disb_orig;
766 
767 
768 PROCEDURE rfms_disb_ack  IS
769 
770 ------------------------------------------------------------------------------
771 --
772 --  Created By : sjadhav
773 --
774 --  Date Created On : 2001/01/03
775 --  Purpose : This procedure reads the data from datafile(RFMS Ack File )
776 --            and loads data into origination table after formatting
777 --  Know limitations, enhancements or remarks
778 --  Change History
779 --  Who             When            What
780 -- rasahoo         13-May-2003      Bug #2938258 If Disbursement Record is not part of this batch
781 --                                 in the System then raise error.Cannot process Disbursement
782 --                                 Record which status for acknowledgement processing is not "Sent".
783 --------------------------------------------------------------------------------------------
784 --
785 --  (reverse chronological order - newest change first)
786 --
787 ------------------------------------------------------------------------------
788 
789     l_last_gldr_id     NUMBER;
790     l_number_rec       NUMBER;
791     l_count            NUMBER          DEFAULT  1;
792     l_batch_id         VARCHAR2(100);
793     l_rfms_process_dt  VARCHAR2(200);
794     lp_count           NUMBER          DEFAULT  0;
795     lf_count           NUMBER          DEFAULT  0;
796     lv_message         fnd_new_messages.message_name%TYPE;
797     SYSTEM_STATUS      VARCHAR2(20);
798 ----Bug #2938258
799 
800     CURSOR cur_gr_rfmb_disb ( p_batch_id  igf_gr_rfms_batch.batch_id%TYPE)
801        IS
802        SELECT
803        rfmb_id
804        FROM
805        igf_gr_rfms_batch
806        WHERE batch_id = p_batch_id;
807 
808        cur_get_rfmb_disb  cur_gr_rfmb_disb%ROWTYPE;
809        l_rfmb_id     igf_gr_rfms_batch.rfmb_id%TYPE;
810 --end -Bug #2938258
811 BEGIN
812 
813     igf_gr_gen.process_pell_ack (g_ver_num,
814                                  'GR_RFMS_DISB_ORIG',
815                                  l_number_rec,
816                                  l_last_gldr_id,
817                                  l_batch_id);
818 
819   ----Bug #2938258
820 
821   OPEN cur_gr_rfmb_disb(l_batch_id);
822   FETCH cur_gr_rfmb_disb INTO cur_get_rfmb_disb;
823   CLOSE cur_gr_rfmb_disb;
824    l_rfmb_id := cur_get_rfmb_disb.rfmb_id;
825   --end -Bug #2938258
826    --
827    --  Check the award year matches with the award year in PELL setup.
828    --
829    igf_gr_gen.match_file_version (g_ver_num, l_batch_id, lv_message);
830 
831    IF lv_message = 'IGF_GR_VRSN_MISMTCH' THEN
832       fnd_message.set_name('IGF','IGF_GR_VRSN_MISMTCH');
833       fnd_message.set_token('CYCL',SUBSTR(l_batch_id,3,4));
834       fnd_message.set_token('BATCH',l_batch_id);
835       fnd_message.set_token('VRSN',g_ver_num);
836       fnd_message.set_token('AWD_YR',g_alt_code);
837       fnd_file.put_line(fnd_file.log,fnd_message.get);
838       RAISE invalid_version;
839    END IF;
840 
841    IF l_number_rec > 0 THEN
842 
843        DECLARE
844 
845         l_actual_rec               NUMBER DEFAULT 0;
846         l_origination_id           igf_gr_rfms.origination_id%TYPE;
847         l_ci_cal_type              igf_gr_rfms.ci_cal_type%TYPE;
848         l_ci_sequence_number       igf_gr_rfms.ci_sequence_number%TYPE;
849         l_chk_flag                 BOOLEAN DEFAULT FALSE;
850 
851         CURSOR cur_award(l_origination_id   igf_gr_rfms.origination_id%TYPE) IS
852         SELECT
853         *
854         FROM
855         igf_gr_rfms
856         WHERE
857         origination_id = l_origination_id;
858 
859         rec_award  cur_award%ROWTYPE;
860 
861         CURSOR c_rfms_data IS
862         SELECT record_data
863         FROM
864         igf_gr_load_file_t
865         WHERE
866         gldr_id BETWEEN 2 AND (l_last_gldr_id - 1)
867         AND    file_type = 'GR_RFMS_DISB_ORIG';
868 
869         CURSOR cur_disb_orig(l_origination_id igf_gr_rfms_disb.origination_id%TYPE,
870                              l_disb_ref_num   igf_gr_rfms_disb.disb_ref_num%TYPE)
871         IS
872         SELECT *
873         FROM   igf_gr_rfms_disb
874         WHERE
875         origination_id   = l_origination_id AND
876         disb_ref_num     = l_disb_ref_num
877         FOR UPDATE OF edit_code NOWAIT;
878 
879         rec_disb_orig   cur_disb_orig%ROWTYPE;
880         l_rfms          igf_gr_rfms_disb%ROWTYPE;
881         l_disb_ref_num   igf_gr_rfms_disb.disb_ref_num%TYPE;
882 
883         BEGIN
884 
885                FOR rec_data  IN c_rfms_data LOOP
886 
887                 BEGIN                              -- For Loop Inner Begin
888 
889                     l_actual_rec      :=  l_actual_rec + 1;
890 
891 
892                     BEGIN
893                     IF g_ver_num  IN ('2002-2003','2003-2004','2004-2005') THEN
894 
895                     l_rfms.origination_id            :=  LTRIM(RTRIM(SUBSTR(rec_data.record_data,1,23)));
896                     l_disb_ref_num                   :=  NVL(TO_NUMBER(RTRIM(LTRIM(SUBSTR(rec_data.record_data,38,2)))),0);
897                     l_rfms.disb_ack_act_status       :=  LTRIM(RTRIM(SUBSTR(rec_data.record_data,37,1)));
898                     l_rfms.accpt_db_cr_flag          :=  LTRIM(RTRIM(SUBSTR(rec_data.record_data,40,1)));
899                     l_rfms.disb_accpt_amt            :=  NVL(TO_NUMBER(RTRIM(LTRIM(SUBSTR(rec_data.record_data,41,7))))/100,0);  -- check
900                     l_rfms.accpt_disb_dt             :=  fnd_date.string_to_date(LTRIM(RTRIM(SUBSTR(rec_data.record_data,48,8))),'YYYYMMDD');
901                     l_rfms.disb_ytd_amt              :=  NVL(TO_NUMBER(RTRIM(LTRIM(SUBSTR(rec_data.record_data,101,7))))/100,0); -- check
902                     l_rfms.accpt_pymt_prd_start_dt   :=  fnd_date.string_to_date(LTRIM(RTRIM(SUBSTR(rec_data.record_data,56,8))),'YYYYMMDD');
903                     l_rfms.edit_code                 :=  LTRIM(RTRIM(SUBSTR(rec_data.record_data,108,75)));
904                     l_rfms.ed_use_flags              :=  LTRIM(RTRIM(SUBSTR(rec_data.record_data,183,10)));
905 
906                     ELSE
907                       RAISE igf_gr_gen.no_file_version;
908                     END IF;
909 
910 
911                     EXCEPTION
912                         -- The exception caught here will be the data format exceptions
913                         WHEN OTHERS THEN
914                         lf_count := lf_count + 1;
915                         fnd_file.put_line(fnd_file.log, ' ' );
916                         fnd_message.set_name('IGF','IGF_GR_DISB_INVALID_RECORD');
917                         fnd_message.set_token('ORIG_ID',l_rfms.origination_id);
918                         -- Cannot Process Record for Origination ORIG_ID as it contains corrupt data
919                         fnd_file.put_line(fnd_file.log,fnd_message.get);
920 
921                         fnd_message.set_name('IGF','IGF_SL_SKIPPING');
922                         fnd_file.put_line(fnd_file.log,fnd_message.get);
923                         fnd_file.put_line(fnd_file.log, ' ' );
924 
925                         RAISE igf_gr_gen.skip_this_record;
926 
927                     END;
928 
929                     OPEN cur_award(l_rfms.origination_id);
930                     FETCH cur_award INTO  rec_award;
931 
932                     IF cur_award%NOTFOUND THEN
933                       CLOSE cur_award;
934                       log_message(l_batch_id,l_rfms.origination_id);
935                       RAISE igf_gr_gen.skip_this_record;
936                     END IF;
937 
938                     OPEN cur_disb_orig(l_rfms.origination_id,l_disb_ref_num);
939                     FETCH cur_disb_orig INTO rec_disb_orig;
940 
941                     IF cur_disb_orig%NOTFOUND THEN
942                        CLOSE cur_disb_orig;
943                        fnd_file.put_line(fnd_file.log,' ');
944                        fnd_message.set_name('IGF','IGF_GR_NO_RFMS_ORIG');
945                        fnd_file.put_line(fnd_file.log,fnd_message.get);
946                        --write to log file
947                        log_message(l_batch_id,LTRIM(RTRIM(SUBSTR(rec_data.record_data,1,23))));
948                        RAISE  igf_gr_gen.skip_this_record;
949                     END IF;
950 
951 ----Bug #2938258
952                    IF  l_rfmb_id<>rec_disb_orig.rfmb_id THEN
953 
954                       fnd_message.set_name('IGF','IGF_GR_DISB_BATCH_MISMATCH');
955                       fnd_message.set_token('BATCH_ID',l_batch_id);
956                       fnd_message.set_token('DISB_ID',l_rfms.origination_id );
957                       fnd_file.put_line(fnd_file.log,fnd_message.get);
958                       fnd_file.new_line(fnd_file.log,1);
959                       RAISE igf_gr_gen.skip_this_record;
960                      END IF;
961 
962                      IF rec_disb_orig.disb_ack_act_status <> 'S' THEN
963 
964 
965                        fnd_message.set_name('IGF','IGF_GR_DISB_NOT_IN_SENT');
966                        fnd_message.set_token('DISB_ID',l_rfms.origination_id );
967                        SYSTEM_STATUS := igf_aw_gen.lookup_desc('IGF_GR_ORIG_STATUS',rec_disb_orig.disb_ack_act_status);
968                        fnd_message.set_token('SYS_STATUS',SYSTEM_STATUS );
969                        fnd_file.put_line(fnd_file.log,fnd_message.get);
970                        fnd_file.new_line(fnd_file.log,1);
971 
972                        RAISE igf_gr_gen.skip_this_record;
973                       END IF;
974 
975 --end -Bug #2938258
976 
977                     l_rfms.disb_ref_num              :=  rec_disb_orig.disb_ref_num;
978                     l_rfms.rfmd_id                   :=  rec_disb_orig.rfmd_id;
979                     l_rfms.rfmb_id                   :=  rec_disb_orig.rfmb_id;
980                     l_rfms.disb_amt                  :=  rec_disb_orig.disb_amt;
981                     l_rfms.disb_dt                   :=  rec_disb_orig.disb_dt;
982                     l_rfms.db_cr_flag                :=  rec_disb_orig.db_cr_flag;
983                     l_rfms.pymt_prd_start_dt         :=  rec_disb_orig.accpt_pymt_prd_start_dt;
984                     l_rfms.disb_status_dt            :=  TRUNC(SYSDATE);
985 
986                     lp_count := lp_count + 1;
987                     igf_gr_rfms_disb_pkg.update_row (
988                                        x_rowid                                    => rec_disb_orig.row_id,
989                                        x_rfmd_id                                  => l_rfms.rfmd_id ,
990                                        x_origination_id                           => l_rfms.origination_id,
991                                        x_disb_ref_num                             => l_rfms.disb_ref_num,
992                                        x_disb_dt                                  => l_rfms.disb_dt,
993                                        x_disb_amt                                 => l_rfms.disb_amt,
994                                        x_db_cr_flag                               => l_rfms.db_cr_flag,
995                                        x_disb_ack_act_status                      => l_rfms.disb_ack_act_status,
996                                        x_disb_status_dt                           => l_rfms.disb_status_dt,
997                                        x_accpt_disb_dt                            => l_rfms.accpt_disb_dt ,
998                                        x_disb_accpt_amt                           => l_rfms.disb_accpt_amt,
999                                        x_accpt_db_cr_flag                         => l_rfms.accpt_db_cr_flag,
1000                                        x_disb_ytd_amt                             => l_rfms.disb_ytd_amt,
1001                                        x_pymt_prd_start_dt                        => l_rfms.pymt_prd_start_dt,
1002                                        x_accpt_pymt_prd_start_dt                  => l_rfms.accpt_pymt_prd_start_dt,
1003                                        x_edit_code                                => l_rfms.edit_code,
1004                                        x_rfmb_id                                  => l_rfms.rfmb_id,
1005                                        x_mode                                     => 'R',
1006                                        x_ed_use_flags                             => l_rfms.ed_use_flags);
1007 
1008                 --write to output file
1009 
1010                     out_message( l_rfms.origination_id,
1011                                  l_rfms.disb_ref_num);
1012 
1013                 --write to log file
1014                     log_rej_message( l_rfms.origination_id,
1015                                      l_rfms.disb_ref_num,
1016                                      l_rfms.edit_code);
1017 
1018                     IF  l_rfms.disb_accpt_amt <> l_rfms.disb_amt THEN
1019 
1020                             igf_gr_gen.insert_sys_holds(rec_award.award_id,rec_disb_orig.disb_ref_num,'PELL');
1021                             fnd_message.set_name('IGF','IGF_GR_DIFF_PELL_DISB');
1022                             fnd_message.set_token('ORIG_ID',l_rfms.origination_id);
1023                             fnd_message.set_token('DISB_NUM',l_rfms.disb_ref_num);
1024                             fnd_file.put_line(fnd_file.log,fnd_message.get);
1025 
1026                             fnd_message.set_name('IGF','IGF_GR_REPORTED_AMT');
1027                             fnd_message.set_token('AMT', TO_CHAR(l_rfms.disb_amt));
1028                             fnd_file.put_line(fnd_file.log,fnd_message.get);
1029 
1030                             fnd_message.set_name('IGF','IGF_GR_RECEIVED_AMT');
1031                             fnd_message.set_token('AMT', TO_CHAR(l_rfms.disb_accpt_amt));
1032                             fnd_file.put_line(fnd_file.log,fnd_message.get);
1033                             fnd_file.new_line(fnd_file.log,1);
1034 
1035                     END IF;
1036 
1037                     CLOSE cur_award;
1038                     CLOSE cur_disb_orig;
1039 
1040                     EXCEPTION
1041 
1042                     WHEN igf_gr_gen.skip_this_record THEN
1043                       IF cur_award%ISOPEN THEN
1044                          CLOSE cur_award;
1045                       END IF;
1046                       IF cur_disb_orig%ISOPEN THEN
1047                          CLOSE cur_disb_orig;
1048                       END IF;
1049 
1050               END; -- For Loop Inner Begin-End
1051 
1052            END LOOP;
1053 
1054            IF l_actual_rec <> l_number_rec THEN
1055               fnd_message.set_name('IGF','IGF_GE_RECORD_NUM_NOT_MATCH');
1056               igs_ge_msg_stack.add;
1057               RAISE igf_gr_gen.file_not_loaded;
1058            END IF;
1059 
1060        END;                 -- Inner Begin
1061 
1062   fnd_file.new_line(fnd_file.log,2);
1063 
1064   fnd_message.set_name('IGF','IGF_GR_FILE_REC_CNT');
1065   fnd_message.set_token('CNT',l_number_rec);
1066   fnd_file.put_line(fnd_file.log,fnd_message.get);
1067 
1068   fnd_message.set_name('IGF','IGF_GR_FILE_REC_PAS');
1069   fnd_message.set_token('CNT',lp_count);
1070   fnd_file.put_line(fnd_file.log,fnd_message.get);
1071 
1072   fnd_message.set_name('IGF','IGF_GR_FILE_REC_FAL');
1073   fnd_message.set_token('CNT',lf_count);
1074   fnd_file.put_line(fnd_file.log,fnd_message.get);
1075 
1076  END IF;   -- if l_num_rec --
1077 
1078 EXCEPTION
1079 
1080 WHEN invalid_version THEN
1081      RAISE;
1082 WHEN igf_gr_gen.no_file_version THEN
1083      RAISE;
1084 WHEN igf_gr_gen.corrupt_data_file THEN
1085      RAISE;
1086 WHEN no_data_in_table THEN
1087      RAISE;
1088 WHEN igf_gr_gen.batch_not_in_system  THEN
1089       -- Bug # 4008991
1090      fnd_message.set_name('IGF','IGF_SL_GR_BATCH_DOES_NO_EXIST');
1091      fnd_message.set_token('BATCH_ID',l_batch_id);
1092      RAISE;
1093 WHEN igf_gr_gen.file_not_loaded THEN
1094      RAISE;
1095 WHEN OTHERS THEN
1096    fnd_message.set_name('IGF','IGF_GE_UNHANDLED_EXP');
1097    fnd_message.set_token('NAME','IGF_GR_RFMS_DISB_ORIG.RFMS_DISB_ACK');
1098    igs_ge_msg_stack.add;
1099    app_exception.raise_exception;
1100 END rfms_disb_ack;
1101 
1102 
1103 PROCEDURE main(
1104                errbuf               OUT     NOCOPY  VARCHAR2,
1105                retcode              OUT     NOCOPY  NUMBER,
1106                award_year           IN              VARCHAR2,
1107                p_reporting_pell     IN              VARCHAR2,
1108                p_attending_pell     IN              VARCHAR2,
1109                p_trans_type         IN              VARCHAR2,
1110                base_id              IN              igf_gr_rfms_all.base_id%TYPE,
1111                p_dummy              IN              VARCHAR2,
1112                p_pers_id_grp        IN              NUMBER
1113               )
1114 AS
1115 
1116 ------------------------------------------------------------------------------
1117 --
1118 --  Created By : sjadhav
1119 --
1120 --  Date Created On : 2001/01/03
1121 --
1122 --  Purpose :This is the procedeure called by con prog.
1123 --  This procedure updates igf_aw_awd_disb table based on
1124 --  certain conditions.
1125 --  This process will set the status of all the records
1126 --  processed as 'Processed' in the igf_db_cl_disb_resp
1127 --  table.
1128 --
1129 --  Know limitations, enhancements or remarks
1130 --  Change History
1131 --  Who             When            What
1132 --  ridas           08-FEB-2006     Bug #5021084. Added new parameter 'lv_group_type' in call to igf_ap_ss_pkg.get_pid
1133 --  tsailaja		    13/Jan/2006     Bug 4947880 Added invocation of igf_aw_gen.set_org_id(NULL);
1134 --  ugummall        08-JAN-2004     Bug 3318202. Changed the order of parameters and removed p_org_id
1135 --  ugummall        06-NOV-2003     Bug 3102439. FA 126 - Multiple FA Offices.
1136 --                                  1. Added two parameters to this procedure namely
1137 --                                     p_reporting_pell and p_attending_pell
1138 --                                  2. base_id and p_attending_pell are mutually exclusive. Added this check.
1139 --
1140 --  brajendr        02-Sep-2002     Bug # 2483249
1141 --                                  Modifed the messages as per the message standards
1142 
1143 -- bug 2216956
1144 -- sjadhav, FEB13th,2002
1145 --
1146 -- Removed flag and disbursement number parameters
1147 -- Added Award Year parameter to main_ack
1148 --
1149 --
1150 --  Bug ID : 1731177
1151 --  Who           When           What
1152 --  sjadhav       19-apr-2001    Added main_ack to process
1153 --                               rfms disb ack . this will get
1154 --                               called from conc. mgr.
1155 --                               Removed l_mode from main
1156 --
1157 --(reverse chronological order - newest change first)
1158 --
1159 ------------------------------------------------------------------------------
1160 
1161   l_ci_cal_type         igf_gr_rfms.ci_cal_type%TYPE;
1162   l_ci_sequence_number  igf_gr_rfms.ci_sequence_number%TYPE;
1163   ln_base_id            NUMBER;
1164   lv_status VARCHAR2(1);
1165   l_list    VARCHAR2(32767);
1166   TYPE base_idRefCur IS REF CURSOR;
1167   c_base_id base_idRefCur;
1168 
1169   l_msg_str_1           VARCHAR2(1000);
1170   l_msg_str_2           VARCHAR2(1000);
1171   l_msg_str_3           VARCHAR2(1000);
1172   l_msg_str_4           VARCHAR2(1000);
1173   l_msg_str_5           VARCHAR2(1000);
1174   l_msg_str_6           VARCHAR2(1000);
1175   -- Get person id group name
1176   CURSOR c_pers_id_grp_name(
1177                             cp_persid_grp igs_pe_persid_group_all.group_id%TYPE
1178                            ) IS
1179     SELECT group_cd group_name
1180       FROM igs_pe_persid_group_all
1181      WHERE group_id = cp_persid_grp;
1182   l_pers_id_grp_name c_pers_id_grp_name%ROWTYPE;
1183 
1184   l_error           NUMBER;
1185   l_record          NUMBER;
1186   l_cod_year_flag   BOOLEAN;
1187   lv_group_type     igs_pe_persid_group_v.group_type%TYPE;
1188 
1189 BEGIN
1190   igf_aw_gen.set_org_id(NULL);
1191   retcode := 0;
1192 
1193   ln_base_id           := base_id;
1194   l_ci_cal_type        := LTRIM(RTRIM(SUBSTR(award_year,1,10)));
1195   l_ci_sequence_number := TO_NUMBER(SUBSTR(award_year,11));
1196   g_trans_type         := p_trans_type;
1197   g_persid_grp         := p_pers_id_grp;
1198 
1199   -- Check wether the awarding year is COD-XML processing Year or not
1200   l_cod_year_flag  := NULL;
1201   l_cod_year_flag := igf_sl_dl_validation.check_full_participant (l_ci_cal_type,l_ci_sequence_number,'PELL');
1202 
1203   -- This process is allowed to run only for PHASE_IN_PARTICIPANT
1204   -- If the award year is FULL_PARTICIPANT then raise the error message
1205   --  and stop processing else continue the process
1206   IF l_cod_year_flag THEN
1207 
1208    fnd_message.set_name('IGF','IGF_GR_COD_NO_DISB');
1209    fnd_file.put_line(fnd_file.log,fnd_message.get);
1210    RETURN;
1211 
1212   END IF;
1213 
1214   -- FA 126. base_id and attending pell are mutually exclusive.
1215   IF (base_id IS NOT NULL AND p_attending_pell IS NOT NULL) OR (p_pers_id_grp IS NOT NULL AND p_attending_pell IS NOT NULL) THEN
1216     FND_MESSAGE.SET_NAME('IGF', 'IGF_GR_PORIG_INCOMPAT');
1217     FND_FILE.PUT_LINE(FND_FILE.LOG, FND_MESSAGE.GET);
1218     RETURN;
1219   END IF;
1220 
1221   IF l_ci_cal_type IS  NULL OR l_ci_sequence_number IS NULL  THEN
1222     RAISE param_error;
1223   END IF;
1224 
1225   IF ln_base_id IS NOT NULL AND p_pers_id_grp IS NOT NULL THEN
1226     RAISE param_error;
1227   END IF;
1228   --
1229   -- Get the Flat File Version and then Proceed
1230   --
1231   g_ver_num  := igf_aw_gen.get_ver_num(l_ci_cal_type,l_ci_sequence_number,'P');
1232 
1233   --
1234   -- Get the Cycle Year
1235   --
1236   l_cy_yr    :=  igf_gr_gen.get_cycle_year(l_ci_cal_type,l_ci_sequence_number);
1237 
1238   IF g_ver_num ='NULL' THEN
1239     RAISE igf_gr_gen.no_file_version;
1240   END IF;
1241 
1242   -- show parameter 1 - award year
1243 	l_msg_str_1        :=   RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','AWARD_YEAR'),20) || RPAD(igf_gr_gen.get_alt_code(l_ci_cal_type,l_ci_sequence_number),20);
1244   fnd_file.put_line(fnd_file.log,l_msg_str_1);
1245 
1246   -- show parameter 2 - report pell id
1247   l_msg_str_3        :=   RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS', 'REPORT_PELL'),20) || p_reporting_pell;
1248   fnd_file.put_line(fnd_file.log,l_msg_str_3);
1249 
1250   -- show parameter 3 - attend pell id
1251   IF (p_attending_pell IS NOT NULL) THEN
1252     l_msg_str_4      :=   RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS', 'ATTEND_PELL'),20) || p_attending_pell;
1253   	fnd_file.put_line(fnd_file.log,l_msg_str_4);
1254   END IF;
1255 
1256   -- show trans_type parameter
1257   l_msg_str_6        := RPAD(igf_aw_gen.lookup_desc('IGF_GE_PARAMETERS', 'TRANS_TYPE'),20) || igf_aw_gen.lookup_desc('IGF_GR_TRANS_TYPE',p_trans_type);
1258   fnd_file.put_line(fnd_file.log,l_msg_str_6);
1259 
1260   -- show parameter 4 - base id
1261   IF (base_id IS NOT NULL) THEN
1262     l_msg_str_2        :=   RPAD(igf_aw_gen.lookup_desc('IGF_GR_LOOKUPS','BASE_ID'),20) || RPAD(igf_gr_gen.get_per_num(base_id),20);
1263   	fnd_file.put_line(fnd_file.log,l_msg_str_2);
1264   END IF;
1265 
1266   -- show parameter 5 - person id group
1267   IF p_pers_id_grp IS NOT NULL THEN
1268     OPEN c_pers_id_grp_name(p_pers_id_grp);
1269     FETCH c_pers_id_grp_name INTO l_pers_id_grp_name;
1270     CLOSE c_pers_id_grp_name;
1271     l_msg_str_5       :=   RPAD(igf_aw_gen.lookup_desc('IGF_GE_PARAMETERS','PERSON_ID_GROUP'),20) || l_pers_id_grp_name.group_name;
1272     fnd_file.put_line(fnd_file.log,l_msg_str_5);
1273   END IF;
1274   fnd_file.new_line(fnd_file.log,1);
1275 
1276   /*
1277     Main logic starts here.
1278   */
1279   IF ln_base_id IS NOT NULL THEN
1280     IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1281       fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.main.debug','(A)calling rfms_disb_orig with base_id:'||ln_base_id);
1282     END IF;
1283     --call the main processing routine
1284     rfms_disb_orig(l_ci_cal_type,l_ci_sequence_number,ln_base_id, p_reporting_pell, p_attending_pell);
1285 
1286   ELSIF p_attending_pell IS NOT NULL THEN
1287     IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1288       fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.main.debug','(B)calling rfms_disb_orig with attedning pell:'||p_attending_pell);
1289     END IF;
1290     --call the main processing routine
1291     rfms_disb_orig(l_ci_cal_type,l_ci_sequence_number,ln_base_id, p_reporting_pell, p_attending_pell);
1292 
1293   ELSIF p_pers_id_grp IS NOT NULL THEN
1294     --Bug #5021084
1295     l_list := igf_ap_ss_pkg.get_pid(p_pers_id_grp,lv_status,lv_group_type);
1296 
1297     --Bug #5021084. Passing Group ID if the group type is STATIC.
1298     IF lv_group_type = 'STATIC' THEN
1299       OPEN c_base_id FOR ' SELECT base_id FROM igf_ap_fa_base_rec_all WHERE  ci_cal_type = :p_ci_cal_type AND  ci_sequence_number = :p_ci_sequence_number AND  person_id IN (' || l_list  || ') ' USING l_ci_cal_type,l_ci_sequence_number,p_pers_id_grp;
1300     ELSIF lv_group_type = 'DYNAMIC' THEN
1301       OPEN c_base_id FOR ' SELECT base_id FROM igf_ap_fa_base_rec_all WHERE  ci_cal_type = :p_ci_cal_type AND  ci_sequence_number = :p_ci_sequence_number AND  person_id IN (' || l_list  || ') ' USING l_ci_cal_type,l_ci_sequence_number;
1302     END IF;
1303 
1304     FETCH c_base_id INTO ln_base_id;
1305 
1306     IF c_base_id%FOUND THEN
1307 
1308       WHILE c_base_id%FOUND LOOP
1309         BEGIN
1310           IF fnd_log.level_statement >= fnd_log.g_current_runtime_level THEN
1311             fnd_log.string(fnd_log.level_statement,'igf.plsql.igf_gr_rfms_disb_orig.main.debug','(C)calling rfms_disb_orig with base_id:'||ln_base_id);
1312           END IF;
1313 
1314           l_record := NVL(l_record,0) + 1;
1315           --call the main processing routine
1316           rfms_disb_orig(l_ci_cal_type,l_ci_sequence_number,ln_base_id, p_reporting_pell, p_attending_pell);
1317         EXCEPTION
1318           WHEN next_record THEN
1319             l_error := NVL(l_error,0) + 1;
1320         END;
1321         FETCH c_base_id INTO ln_base_id;
1322       END LOOP;
1323       CLOSE c_base_id;
1324       IF l_error = l_record THEN
1325         RAISE no_data_in_table;
1326       END IF;
1327     ELSE
1328       fnd_message.set_name('IGF','IGF_DB_NO_PER_GRP');
1329       fnd_file.put_line(fnd_file.log,fnd_message.get);
1330     END IF;
1331   ELSE
1332     RAISE param_error;
1333   END IF;
1334 
1335   COMMIT;
1336 
1337 EXCEPTION
1338   WHEN igf_gr_gen.no_file_version THEN
1339     ROLLBACK;
1340     retcode := 2;
1341     errbuf  := fnd_message.get_string('IGF','IGF_GR_VERSION_NOTFOUND');
1342     fnd_file.put_line(fnd_file.log,errbuf);
1343   WHEN batch_not_created THEN
1344     ROLLBACK;
1345   WHEN param_error THEN
1346     ROLLBACK;
1347     retcode := 2;
1348     errbuf  := fnd_message.get_string('IGF','IGF_AW_PARAM_ERR');
1349     fnd_file.put_line(fnd_file.log,errbuf);
1350   WHEN no_data_in_table THEN
1351     ROLLBACK;
1352     errbuf := fnd_message.get_string('IGF','IGF_AP_NO_DATA_FOUND');
1353     fnd_file.put_line(fnd_file.log,errbuf);
1354   WHEN OTHERS THEN
1355     ROLLBACK;
1356     retcode := 2;
1357     errbuf := fnd_message.get_string('IGS','IGS_GE_UNHANDLED_EXCEPTION') || SQLERRM;
1358     igs_ge_msg_stack.conc_exception_hndl;
1359  END main;
1360 
1361 
1362 PROCEDURE main_ack( errbuf      OUT NOCOPY   VARCHAR2,
1363                     retcode     OUT NOCOPY   NUMBER,
1364                     p_awd_yr    IN           VARCHAR2,
1365                     p_org_id    IN           NUMBER)
1366 AS
1367 
1368 ------------------------------------------------------------------------------
1369 --  This process is called from concurrent manager. This process
1370 --  will invoke rfms disbursements acknowledgement.
1371 --  Who           When           What
1372 --
1373 -- bug 2216956
1374 -- sjadhav, FEB13th,2002
1375 --
1376 -- Removed flag and disbursement number parameters
1377 -- Added Award Year parameter to main_ack
1378 --
1379 --  sjadhav       19-apr-2001    Added main_ack to process
1380 --                               rfms disb ack . this will get
1381 --                               called from conc. mgr.
1382 --                               Removed l_mode from main
1383 --
1384 --  (reverse chronological order - newest change first)
1385 --
1386 ------------------------------------------------------------------------------
1387 
1388    l_ci_cal_type         igf_gr_rfms.ci_cal_type%TYPE;
1389    l_ci_sequence_number  igf_gr_rfms.ci_sequence_number%TYPE;
1390 
1391 BEGIN
1392 
1393    retcode := 0;
1394    igf_aw_gen.set_org_id(p_org_id);
1395    l_ci_cal_type            :=   LTRIM(RTRIM(SUBSTR(p_awd_yr,1,10)));
1396    l_ci_sequence_number     :=   TO_NUMBER(SUBSTR(p_awd_yr,11));
1397 
1398    IF l_ci_cal_type IS  NULL OR l_ci_sequence_number IS NULL  THEN
1399             RAISE param_error;
1400    END IF;
1401 
1402    -- Check wether the awarding year is COD-XML processing Year or not
1403    -- This process is allowed to run only for PHASE_IN_PARTICIPANT
1404    -- If the award year is FULL_PARTICIPANT then raise the error message
1405    --  and stop processing else continue the process
1406    IF igf_sl_dl_validation.check_full_participant (l_ci_cal_type,l_ci_sequence_number,'PELL') THEN
1407 
1408      fnd_message.set_name('IGF','IGF_GR_COD_NO_DISB_ACK');
1409      fnd_file.put_line(fnd_file.log,fnd_message.get);
1410      RETURN;
1411 
1412    END IF;
1413 
1414 --
1415 -- Get the Flat File Version and then Proceed
1416 --
1417 
1418    g_ver_num  := igf_aw_gen.get_ver_num(l_ci_cal_type,l_ci_sequence_number,'P');
1419    g_alt_code := igf_gr_gen.get_alt_code(l_ci_cal_type,l_ci_sequence_number);
1420    l_cy_yr    :=  igf_gr_gen.get_cycle_year(l_ci_cal_type,l_ci_sequence_number);
1421 
1422    IF g_ver_num ='NULL' THEN
1423       RAISE igf_gr_gen.no_file_version;
1424    ELSE
1425       rfms_disb_ack;
1426    END IF;
1427 
1428    COMMIT;
1429 
1430 EXCEPTION
1431 
1432     WHEN invalid_version THEN
1433        ROLLBACK;
1434        retcode := 2;
1435 
1436     WHEN igf_gr_gen.no_file_version THEN
1437        ROLLBACK;
1438        retcode := 2;
1439        errbuf  := fnd_message.get_string('IGF','IGF_GR_VERSION_NOTFOUND');
1440        fnd_file.put_line(fnd_file.log,errbuf);
1441 
1442     WHEN batch_not_created THEN
1443        ROLLBACK;
1444 
1445     WHEN param_error THEN
1446        ROLLBACK;
1447        retcode := 2;
1448        errbuf  := fnd_message.get_string('IGF','IGF_AW_PARAM_ERR');
1449        fnd_file.put_line(fnd_file.log,errbuf);
1450 
1451      WHEN igf_gr_gen.corrupt_data_file THEN
1452        ROLLBACK;
1453        retcode := 2;
1454        errbuf  := fnd_message.get_string('IGF','IGF_GR_CORRUPT_DATA_FILE');
1455        fnd_file.put_line(fnd_file.log,errbuf);
1456 
1457      WHEN igf_gr_gen.batch_not_in_system  THEN
1458        ROLLBACK;
1459        retcode := 2;
1460        errbuf  := fnd_message.get; -- Bug # 4008991
1461        fnd_file.put_line(fnd_file.log,errbuf);
1462 
1463      WHEN igf_gr_gen.file_not_loaded THEN
1464        ROLLBACK;
1465        retcode := 2;
1466        errbuf := fnd_message.get_string('IGF','IGF_GE_FILE_NOT_LOADED');
1467        fnd_file.put_line(fnd_file.log,errbuf);
1468 
1469      WHEN no_data_in_table THEN
1470        ROLLBACK;
1471        errbuf := fnd_message.get_string('IGF','IGF_AP_NO_DATA_FOUND');
1472        fnd_file.put_line(fnd_file.log,errbuf);
1473 
1474      WHEN OTHERS THEN
1475        ROLLBACK;
1476        retcode := 2;
1477        errbuf  := fnd_message.get_string('IGS','IGS_GE_UNHANDLED_EXCEPTION') || SQLERRM;
1478        igs_ge_msg_stack.conc_exception_hndl;
1479 
1480 END main_ack;
1481 
1482 END igf_gr_rfms_disb_orig;