DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_GEN_003

Source


1 PACKAGE BODY IGS_FI_GEN_003 AS
2 /* $Header: IGSFI03B.pls 120.5 2005/08/29 05:21:14 appldev ship $ */
3 
4 /******************************************************************
5  Change History
6      svuppala  23-JUN-2005   Bug 3392088 Modifications as part of CPF build
7                              Added 2 functions finp_del_fsert , finp_del_fser
8     rnirwani       05-May-02        removed reference to IGS_FI_DSBR_SPSHT
9                                     bug# 2329407
10     rnirwani       25-Apr-02        Obsoleted the procedures:
11                                     finp_ins_disb_jnl
12                                     FINP_DEL_DISB_JNL
13                                     Bug# 2329407
14  --
15  -- nalkumar       30-Nov-2001       Removed the funtion FINP_INS_PRSN_ENCMB from this package.
16  --		                     This is as per the SFCR015-HOLDS DLD. Bug:2126091
17  -- nalkumar       16-Jan-2002 Added 'SET VERIFY OFF' before whenever sqlerr... |
18  --
19 --
20 *************************************************************************/
21 
22 PROCEDURE FINP_DEL_DISB_SNPSHT(
23   errbuf  out NOCOPY  varchar2,
24   retcode out NOCOPY  NUMBER,
25   p_fee_period IN VARCHAR2,
26   p_fee_type VARCHAR2 ,
27   p_snapshot_create_dt_C VARCHAR2 ,
28   p_delete_ds_ind  VARCHAR2 ,
29   p_delete_dsd_ind  VARCHAR2 ,
30   p_delete_dda_ind  VARCHAR2 ,
31   p_org_id NUMBER
32 ) AS
33 BEGIN
34 -- As per SFCR005, this Concurrent Program is obsolete and if the user is trying to
35 -- run the program then an error message should be written to the Log file that
36 -- the Concurrent Program is obsolete and this should not be run
37   FND_MESSAGE.Set_Name('IGS',
38                        'IGS_GE_OBSOLETE_JOB');
39   FND_FILE.Put_Line(FND_FILE.Log,
40                     FND_MESSAGE.Get);
41   retcode := 0;
42 
43 EXCEPTION
44   WHEN OTHERS THEN
45 	RETCODE:=2;
46 	ERRBUF:=FND_MESSAGE.GET_STRING('IGS','IGS_GE_UNHANDLED_EXCEPTION');
47         IGS_GE_MSG_STACK.CONC_EXCEPTION_HNDL;
48 END finp_del_disb_snpsht;
49 --
50 FUNCTION finp_del_err(
51   p_fee_type IN VARCHAR2 ,
52   p_fee_cal_type IN VARCHAR2 ,
53   p_fee_ci_sequence_number IN NUMBER ,
54   p_s_relation_type IN VARCHAR2 ,
55   p_fee_cat IN VARCHAR2 ,
56   p_range_number IN NUMBER ,
57   p_rate_number IN NUMBER ,
58   p_message_name OUT NOCOPY VARCHAR2 )
59 RETURN BOOLEAN AS
60 	gv_other_detail		VARCHAR2(255);
61 BEGIN	-- finp_del_err
62 	-- This routine will logically delete all IGS_FI_ELM_RANGE_RT records
63 	-- associated with an IGS_FI_ELM_RANGE or IGS_FI_FEE_AS_RATE record which is
64 	-- being logically deleted.
65 DECLARE
66 	e_resource_busy_exception		EXCEPTION;
67 	PRAGMA EXCEPTION_INIT(e_resource_busy_exception, -54);
68 	CURSOR c_err IS
69 		SELECT
70                   ROWID,
71                   err_id,
72 			FEE_TYPE,
73 			FEE_CAL_TYPE,
74 			FEE_CI_SEQUENCE_NUMBER,
75 			S_RELATION_TYPE,
76 			RANGE_NUMBER,
77 			RATE_NUMBER,
78 			CREATE_DT,
79 			FEE_CAT,
80 			LOGICAL_DELETE_DT
81 		FROM	IGS_FI_ELM_RANGE_RT err
82 		WHERE	err.FEE_TYPE 			= p_fee_type 		AND
83 			err.fee_cal_type	 	= p_fee_cal_type 			AND
84 			err.fee_ci_sequence_number	= p_fee_ci_sequence_number	AND
85 			err.s_relation_type 		= p_s_relation_type 		AND
86 			NVL(err.FEE_CAT, 'NULL')	= NVL(p_fee_cat, 'NULL') 		AND
87 			err.range_number 		= NVL(p_range_number, err.range_number) AND
88 			err.rate_number  		= NVL(p_rate_number, err.rate_number) 	AND
89 			err.logical_delete_dt 		IS NULL
90 		FOR UPDATE OF err.logical_delete_dt NOWAIT;
91 BEGIN
92 	-- Set the default message number
93 	p_message_name := Null;
94 	-- 1. Check parameters.
95 	IF p_fee_type IS NULL OR
96 			p_fee_cal_type IS NULL OR
97 			p_fee_ci_sequence_number IS NULL OR
98 			p_s_relation_type IS NULL OR
99 			(p_range_number IS NULL AND
100 			p_rate_number IS NULL) OR
101 			(p_range_number IS NOT NULL AND
102 			p_rate_number IS NOT NULL) THEN
103 		RETURN TRUE;
104 	END IF;
105 	-- 2. Issue a save point for the module so that if locks exist,
106 	-- a rollback can be performed.
107 	SAVEPOINT sp_save_point;
108 	-- Perform a logical delete of the associated IGS_FI_ELM_RANGE_RT items.
109 	-- Update the appropriate records with NOWAIT option.
110 	FOR v_err_rec IN c_err LOOP
111 		IGS_FI_ELM_RANGE_RT_PKG.UPDATE_ROW(
112 			X_ROWID  => v_err_rec.ROWID,
113                         X_ERR_ID => v_err_rec.ERR_ID,
114 			X_FEE_TYPE  => v_err_rec.FEE_TYPE,
115 			X_FEE_CAL_TYPE => v_err_rec.FEE_CAL_TYPE,
116 			X_FEE_CI_SEQUENCE_NUMBER => v_err_rec.FEE_CI_SEQUENCE_NUMBER,
117 			X_S_RELATION_TYPE => v_err_rec.S_RELATION_TYPE,
118 			X_RANGE_NUMBER  => v_err_rec.RANGE_NUMBER,
119 			X_RATE_NUMBER => v_err_rec.RATE_NUMBER,
120 			X_CREATE_DT => v_err_rec.CREATE_DT,
121 			X_FEE_CAT => v_err_rec.FEE_CAT,
122 			X_LOGICAL_DELETE_DT => SYSDATE,
123 			X_MODE => 'R');
124 	END LOOP;
125 	RETURN TRUE;
126 EXCEPTION
127 	WHEN e_resource_busy_exception THEN
128 		IF c_err%ISOPEN THEN
129 			CLOSE c_err;
130 		END IF;
131 		ROLLBACK TO sp_save_point;
132 		p_message_name := 'IGS_FI_UNABLE_LOGDEL_ELERNG';
133 		RETURN FALSE;
134 	WHEN OTHERS THEN
135 		IF c_err%ISOPEN THEN
136 			CLOSE c_err;
137 		END IF;
138 		RAISE;
139 END;
140 EXCEPTION
141 WHEN OTHERS THEN
142 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
143 Fnd_Message.Set_Token('NAME','IGS_FI_GEN_003.FINP_DEL_ERR');
144 IGS_GE_MSG_STACK.ADD;
145  APP_EXCEPTION.RAISE_EXCEPTION;
146 END finp_del_err;
147 --
148 PROCEDURE finp_del_minor_debt(
149   errbuf  out NOCOPY  varchar2,
150   retcode out NOCOPY  number,
151   P_FEE_ASSESSMENT_PERIOD IN VARCHAR2 ,
152   p_fee_type IN IGS_FI_FEE_TYPE_ALL.fee_type%TYPE ,
153   p_fee_cat IN IGS_EN_STDNT_PS_ATT_ALL.fee_cat%TYPE ,
154   p_course_cd IN igs_ps_course.course_cd%type,
155   p_person_id      IN HZ_PARTIES.PARTY_ID%type,
156   p_group_id IN IGS_PE_PERSID_GROUP_ALL.group_id%TYPE ,
157   p_min_days_overdue IN NUMBER,
158   p_max_outstanding IN IGS_FI_FEE_AS_ALL.transaction_amount%TYPE ,
159   p_comments IN igs_fi_fee_as_all.comments%type,
160   p_org_id NUMBER
161 ) AS
162 
163 BEGIN
164 -- As per the CCR05 for Student Finance, this concurrent program is obsoleted
165 -- and if the user tries to run this program ,then  a message should be logged in the
166 -- Error log that the Concurrent Program is obsolete and should not be run.
167         FND_MESSAGE.Set_Name('IGS',
168                              'IGS_GE_OBSOLETE_JOB');
169         FND_FILE.Put_Line(FND_FILE.Log,
170                           FND_MESSAGE.Get);
171         retcode := 0;
172 
173 EXCEPTION
174   WHEN OTHERS THEN
175 	RETCODE:=2;
176 	ERRBUF:=FND_MESSAGE.GET_STRING('IGS','IGS_GE_UNHANDLED_EXCEPTION');
177         IGS_GE_MSG_STACK.CONC_EXCEPTION_HNDL;
178 END finp_del_minor_debt;
179 --
180 FUNCTION finp_ins_cfar(
181   p_person_id  IGS_FI_FEE_AS_RT.person_id%TYPE ,
182   p_course_cd  IGS_FI_FEE_AS_RT.course_cd%TYPE ,
183   p_fee_type  IGS_FI_FEE_AS_RT.FEE_TYPE%TYPE ,
184   p_start_dt  IGS_FI_FEE_AS_RT.start_dt%TYPE ,
185   p_end_dt  IGS_FI_FEE_AS_RT.end_dt%TYPE ,
186   p_location_cd  IGS_FI_FEE_AS_RT.location_cd%TYPE ,
187   p_attendance_type  IGS_FI_FEE_AS_RT.ATTENDANCE_TYPE%TYPE ,
188   p_attendance_mode  IGS_FI_FEE_AS_RT.ATTENDANCE_MODE%TYPE ,
189   p_chg_rate  IGS_FI_FEE_AS_RT.chg_rate%TYPE ,
190   p_lower_nrml_rate_ovrd_ind  IGS_FI_FEE_AS_RT.lower_nrml_rate_ovrd_ind%TYPE ,
191   p_message_name OUT NOCOPY VARCHAR2 )
192 RETURN BOOLEAN AS
193 	gv_other_detail		VARCHAR2(255);
194 BEGIN	-- finp_ins_cfar
195 	-- This routine is used to insert a contract fee assessment rate record.
196 DECLARE
197        X_ROWID      VARCHAR2(25);
198 	v_ret_val	BOOLEAN	DEFAULT TRUE;
199 BEGIN
200 	p_message_name := Null;
201 	IF NOT IGS_FI_VAL_CFAR.finp_val_ft_closed(
202 						p_fee_type,
203 						p_message_name) THEN
204 		RETURN FALSE;
205 	END IF;
206 	IF NOT IGS_FI_VAL_CFAR.finp_val_cfar_ins(
207 					p_person_id,
208 					p_course_cd,
209 					p_fee_type,
210 					p_message_name) THEN
211 		RETURN FALSE;
212 	END IF;
213 	IF NOT IGS_FI_VAL_CFAR.finp_val_att_closed(
214 					p_attendance_type,
215 					p_message_name) THEN
216 		RETURN FALSE;
217 	END IF;
218 	IF NOT IGS_FI_VAL_CFAR.finp_val_am_closed(
219 					p_attendance_mode,
220 					p_message_name) THEN
221 		RETURN FALSE;
222 	END IF;
223 	IF NOT IGS_FI_VAL_CFAR.finp_val_loc_closed(
224 					p_location_cd,
225 					p_message_name) THEN
226 		RETURN FALSE;
227 	END IF;
228 	--Validate the IGS_FI_FEE_AS_RT (cfar) table to ensure that for
229 	--records with the same person_id, course_cd and IGS_FI_FEE_TYPE, that only
230 	--one record has a open end_dt.
231 	IF p_end_dt IS NULL THEN
232 		IF NOT IGS_FI_VAL_CFAR.finp_val_cfar_open (
233 						p_person_id,
234 						p_course_cd,
235 						p_fee_type,
236 						p_start_dt,
237 						p_message_name) THEN
238 			RETURN FALSE;
239 		END IF;
240 	END IF;
241 	--Validate the IGS_FI_FEE_AS_RT (cfar) table to ensure that for
242 	--records with the same person_id, course_cd and IGS_FI_FEE_TYPE, that the
243 	--date ranges don't overlap.
244 	IF NOT IGS_FI_VAL_CFAR.finp_val_cfar_ovrlp (
245 						p_person_id,
246 						p_course_cd,
247 						p_fee_type,
248 						p_start_dt,
249 						p_end_dt,
250 						p_message_name) THEN
251 		RETURN FALSE;
252 	END IF;
253 	--Insert the contract fee assessment rate
254          IGS_FI_FEE_AS_RT_PKG.INSERT_ROW(
255             X_ROWID => X_ROWID,
256 		X_person_id => p_person_id,
257 		X_course_cd => p_course_cd,
258 		X_FEE_TYPE => p_fee_type,
259 		X_start_dt => p_start_dt,
260 		X_end_dt => p_end_dt,
261 		X_location_cd => p_location_cd,
262 		X_ATTENDANCE_TYPE => p_attendance_type,
263 		X_ATTENDANCE_MODE => p_attendance_mode,
264 		X_chg_rate => p_chg_rate,
265 		X_lower_nrml_rate_ovrd_ind => p_lower_nrml_rate_ovrd_ind,
266             X_MODE => 'R');
267 	RETURN v_ret_val;
268 END;
269 EXCEPTION
270 WHEN OTHERS THEN
271 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
272 Fnd_Message.Set_Token('NAME','IGS_FI_GEN_003.FINP_INS_CFAR');
273 IGS_GE_MSG_STACK.ADD;
274  APP_EXCEPTION.RAISE_EXCEPTION;
275 
276 END finp_ins_cfar;
277 
278 -- Function to delete FSERT block
279 FUNCTION finp_del_fsert(
280   p_sub_er_id NUMBER,
281   p_message_name OUT NOCOPY VARCHAR2 )
282 RETURN BOOLEAN AS
283 	gv_other_detail		VARCHAR2(255);
284 BEGIN
285         -- This routine will logically delete all IGS_FI_SUB_ER_RT records
286 
287 DECLARE
288 	e_resource_busy_exception		EXCEPTION;
289 	PRAGMA EXCEPTION_INIT(e_resource_busy_exception, -54);
290 	CURSOR c_fsert IS
291 		SELECT
292                   ROWID,
293 		 SUB_ERR_ID ,
294                  SUB_ER_ID ,
295                  FAR_ID   ,
296                  CREATE_DATE ,
297                  LOGICAL_DELETE_DATE
298   		FROM	IGS_FI_SUB_ER_RT fsert
299   		WHERE	fsert.sub_er_id	 = p_sub_er_id	AND
300   			fsert.logical_delete_date IS NULL
301 		FOR UPDATE OF fsert.logical_delete_date NOWAIT;
302 BEGIN
303 	-- Set the default message number
304 	p_message_name := Null;
305 	-- 1. Check parameters.
306 	IF  (p_sub_er_id IS NULL)
307             THEN
308 		RETURN TRUE;
309 	END IF;
310 	-- 2. Issue a save point for the module so that if locks exist,
311 	-- a rollback can be performed.
312 	SAVEPOINT sp_save_point;
313 	-- Perform a logical delete of the associated IGS_FI_SUB_ER_RT items.
314 	-- Update the appropriate records with NOWAIT option.
315 	FOR v_fsert_rec IN c_fsert LOOP
316                igs_fi_sub_er_rt_pkg.update_row (
317                   x_mode                              => 'R',
318                   x_rowid                             => v_fsert_rec.ROWID,
319                   x_sub_err_id                        => v_fsert_rec.SUB_ERR_ID,
320                   x_sub_er_id                         => v_fsert_rec.SUB_ER_ID,
321                   x_far_id                            => v_fsert_rec.FAR_ID,
322                   x_create_date                       => v_fsert_rec.CREATE_DATE,
323                   x_logical_delete_date               => SYSDATE
324                   );
325 
326 	END LOOP;
327 	RETURN TRUE;
328 EXCEPTION
329 	WHEN e_resource_busy_exception THEN
330 		IF c_fsert%ISOPEN THEN
331 			CLOSE c_fsert;
332 		END IF;
333 		ROLLBACK TO sp_save_point;
334 		p_message_name := 'IGS_FI_UNABLE_LOGDEL_SUB_ER_RT';
335 		RETURN FALSE;
336 	WHEN OTHERS THEN
337 		IF c_fsert%ISOPEN THEN
338 			CLOSE c_fsert;
339 		END IF;
340 		RAISE;
341 END;
342 EXCEPTION
343 WHEN OTHERS THEN
344 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
345 Fnd_Message.Set_Token('NAME','IGS_FI_GEN_003.FINP_DEL_FSERT');
346 IGS_GE_MSG_STACK.ADD;
347  APP_EXCEPTION.RAISE_EXCEPTION;
348 END finp_del_fsert;
349 
350 
351 FUNCTION finp_del_fser(
352   p_er_id NUMBER,
353   p_message_name OUT NOCOPY VARCHAR2 )
354 RETURN BOOLEAN AS
355 	gv_other_detail		VARCHAR2(255);
356 BEGIN
357         -- This routine will logically delete all IGS_FI_SUB_ER_RT records
358 
359 DECLARE
360 	e_resource_busy_exception		EXCEPTION;
361 	PRAGMA EXCEPTION_INIT(e_resource_busy_exception, -54);
362 	CURSOR c_fser IS
363 		SELECT
364                   ROWID,
365 		 SUB_ER_ID ,
366                  ER_ID ,
367                  sub_range_num,
368                  sub_lower_range,
369                  sub_upper_range,
370                  sub_chg_method_code,
371                  LOGICAL_DELETE_DATE
372   		FROM	IGS_FI_SUB_ELM_RNG fser
373   		WHERE	fser.er_id     = p_er_id	AND
374   			fser.logical_delete_date	IS NULL
375 		FOR UPDATE OF fser.logical_delete_date NOWAIT;
376         v_message_name          VARCHAR2(30);
377         v_message_icon varchar2(10);
378 BEGIN
379 	-- Set the default message number
380 	p_message_name := Null;
381 	-- 1. Check parameters.
382 	IF  (p_er_id IS NULL)
383             THEN
384 		RETURN TRUE;
385 	END IF;
386 	-- 2. Issue a save point for the module so that if locks exist,
387 	-- a rollback can be performed.
388 	SAVEPOINT sp_fser_save_point;
389 	-- Perform a logical delete of the associated IGS_FI_SUB_ELM_RNG items.
390 	-- Update the appropriate records with NOWAIT option.
391 	FOR v_fser_rec IN c_fser LOOP
392 
393         igs_fi_sub_elm_rng_pkg.update_row (
394               x_mode                              => 'R',
395               x_rowid                             => v_fser_rec.ROWID,
396               x_sub_er_id                         => v_fser_rec.SUB_ER_ID,
397               x_er_id                             => v_fser_rec.ER_ID,
398               x_sub_range_num                     => v_fser_rec.SUB_RANGE_NUM,
399               x_sub_lower_range                   => v_fser_rec.SUB_LOWER_RANGE,
400               x_sub_upper_range                   => v_fser_rec.SUB_UPPER_RANGE,
401               x_sub_chg_method_code               => v_fser_rec.SUB_CHG_METHOD_CODE,
402               x_logical_delete_date               => SYSDATE
403             );
404 
405              IF IGS_FI_GEN_003.FINP_DEL_FSERT (v_fser_rec.SUB_ER_ID,
406                                                  v_message_name) = FALSE THEN
407                                     fnd_message.set_name ('IGS', v_message_name);
408                                     FND_FILE.Put_Line(FND_FILE.Log,
409                                                       FND_MESSAGE.Get);
410              END IF;
411 
412 
413 	END LOOP;
414 	RETURN TRUE;
415 EXCEPTION
416 	WHEN e_resource_busy_exception THEN
417 		IF c_fser%ISOPEN THEN
418 			CLOSE c_fser;
419 		END IF;
420 		ROLLBACK TO sp_fser_save_point;
421 		p_message_name := ': IGS_FI_UNABLE_LOGDEL_SUB_ELM_RNG';
422 		RETURN FALSE;
423 	WHEN OTHERS THEN
424 		IF c_fser%ISOPEN THEN
425 			CLOSE c_fser;
426 		END IF;
427 		RAISE;
428 END;
429 EXCEPTION
430 WHEN OTHERS THEN
431 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
432 Fnd_Message.Set_Token('NAME','IGS_FI_GEN_003.FINP_DEL_FSER');
433 IGS_GE_MSG_STACK.ADD;
434  APP_EXCEPTION.RAISE_EXCEPTION;
435 END finp_del_fser;
436 
437 -- Function to delete Rate in FSERT block
438 FUNCTION finp_del_sub_rt(
439   p_sub_err_id NUMBER,
440   p_message_name OUT NOCOPY VARCHAR2 )
441 RETURN BOOLEAN AS
442 	gv_other_detail		VARCHAR2(255);
443 BEGIN
444         -- This routine will logically delete particular record in IGS_FI_SUB_ER_RT
445 
446 DECLARE
447 	e_resource_busy_exception		EXCEPTION;
448 	PRAGMA EXCEPTION_INIT(e_resource_busy_exception, -54);
449 	CURSOR c_fsert IS
450 		SELECT
451                  ROWID,
452                  SUB_ER_ID ,
453                  FAR_ID   ,
454                  CREATE_DATE
455   		FROM	IGS_FI_SUB_ER_RT fsert
456   		WHERE	fsert.sub_err_id	 = p_sub_err_id	AND
457   			fsert.logical_delete_date IS NULL
458 		FOR UPDATE OF fsert.logical_delete_date NOWAIT;
459 
460   l_rowid          ROWID;
461 	l_sub_er_id      igs_fi_sub_er_rt.sub_er_id%TYPE;
462 	l_far_id         igs_fi_sub_er_rt.far_id%TYPE;
463 	l_create_date    igs_fi_sub_er_rt.create_date%TYPE;
464 
465 BEGIN
466 	-- Set the default message number
467 	p_message_name := Null;
468 	-- 1. Check parameters.
469 	IF  (p_sub_err_id IS NULL)
470             THEN
471 		RETURN TRUE;
472 	END IF;
473 	-- 2. Issue a save point for the module so that if locks exist,
474 	-- a rollback can be performed.
475 	SAVEPOINT sp_save_point;
476 	-- Perform a logical delete of the associated IGS_FI_SUB_ER_RT items.
477 	-- Update the appropriate records with NOWAIT option.
478 	OPEN c_fsert;
479 	FETCH c_fsert INTO l_rowid, l_sub_er_id,l_far_id,l_create_date;
480 	IF c_fsert%FOUND THEN
481             CLOSE c_fsert;
482             igs_fi_sub_er_rt_pkg.update_row (
483                   x_mode                              => 'R',
484                   x_rowid                             => l_rowid,
485                   x_sub_err_id                        => p_sub_err_id,
486                   x_sub_er_id                         => l_sub_er_id,
487                   x_far_id                            => l_far_id,
488                   x_create_date                       => l_create_date,
489                   x_logical_delete_date               => SYSDATE
490                   );
491 	RETURN TRUE;
492        END IF;
493    CLOSE c_fsert;
494 EXCEPTION
495 	WHEN e_resource_busy_exception THEN
496 		IF c_fsert%ISOPEN THEN
497 			CLOSE c_fsert;
498 		END IF;
499 		ROLLBACK TO sp_save_point;
500 		p_message_name := 'IGS_FI_UNABLE_LOGDEL_SUB_ER_RT';
501 		RETURN FALSE;
502 	WHEN OTHERS THEN
503 		IF c_fsert%ISOPEN THEN
504 			CLOSE c_fsert;
505 		END IF;
506 		RAISE;
507 END;
508 EXCEPTION
509 WHEN OTHERS THEN
510 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
511 Fnd_Message.Set_Token('NAME','IGS_FI_GEN_003.FINP_DEL_SUB_RT');
512 IGS_GE_MSG_STACK.ADD;
513  APP_EXCEPTION.RAISE_EXCEPTION;
514 END finp_del_sub_rt;
515 --
516 END IGS_FI_GEN_003;