DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_VAL_POT

Source


1 PACKAGE BODY IGS_PR_VAL_POT AS
2 /* $Header: IGSPR03B.pls 115.8 2002/11/29 05:17:58 nalkumar ship $ */
3   -- Validate the dflt_restricted_enrolment_cp field.
4 --
5 -- bug id : 1956374
6 -- sjadhav ,28-aug-2001
7 -- removed function enrp_val_et_closed
8 --
9 ----------------------------------------------------------------------------
10 --  Change History :
11 --  Who             When            What
12 -- ayedubat      15-DEC-2001   Enhance Bug no : 2138644 , changed the Function, prgp_val_pot_et
13 -- avenkatr      30-AUG-2001   Bug Id: 1956374, Removed procedure "crsp_val_att_closed"
14 -- Nalin Kumar   12-NOV-2002   Modified the 'prgp_val_pot_et' function as per the FA110 PR-ENH. bug# 2658550
15 ----------------------------------------------------------------------------
16   FUNCTION prgp_val_pot_att(
17   p_dflt_restricted_att_type IN VARCHAR2 ,
18   p_encumbrance_type IN VARCHAR2 ,
19   p_message_name OUT NOCOPY VARCHAR2 )
20   RETURN BOOLEAN AS
21   	gv_other_detail		VARCHAR2(255);
22   BEGIN 	-- prgp_val_pot_att
23   	-- Validate the IGS_PR_OU_TYPE.dflt_restricted_att_type field.
24   	-- Should only be specified where the related encumbrance type has a
25   	-- restricted attendance type related effect.
26   DECLARE
27   	cst_rstr_at_ty		CONSTANT	VARCHAR2(10) := 'RSTR_AT_TY';
28   	v_dummy					VARCHAR2(1);
29   	CURSOR c_etde IS
30   		SELECT	'X'
31   		FROM	IGS_FI_ENC_DFLT_EFT 	etde
32   		WHERE	etde.encumbrance_type	= p_encumbrance_type AND
33   			etde.s_encmb_effect_type	= cst_rstr_at_ty;
34   BEGIN
35   	-- Set the default message number
36   	p_message_name := null;
37   	IF p_dflt_restricted_att_type IS NULL THEN
38   		RETURN TRUE;
39   	END IF;
40   	IF p_encumbrance_type IS NULL THEN
41   		p_message_name := 'IGS_PR_CHK_DFLT_ATTEND_TYPE';
42   		RETURN FALSE;
43   	END IF;
44   	OPEN c_etde;
45   	FETCH c_etde INTO v_dummy;
46   	IF c_etde%NOTFOUND THEN
47   		CLOSE c_etde;
48   		p_message_name := 'IGS_PR_CHK_DFLT_ATTEND_TYPE';
49   		RETURN FALSE;
50   	ELSE
51   		CLOSE c_etde;
52   	END IF;
53   	RETURN TRUE;
54   EXCEPTION
55   	WHEN OTHERS THEN
56   		IF c_etde%ISOPEN THEN
57   			CLOSE c_etde;
58   		END IF;
59   		RAISE;
60   END;
61   EXCEPTION
62   	WHEN OTHERS THEN
63 		Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
64                 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_POT.PRGP_VAL_POT_ATT');
65                 --IGS_GE_MSG_STACK.ADD;
66 
67   END prgp_val_pot_att;
68 
69   -- Validate the dflt_restricted_enrolment_cp field.
70   FUNCTION prgp_val_pot_cp(
71   p_dflt_restricted_enrolment_cp IN NUMBER ,
72   p_encumbrance_type IN VARCHAR2 ,
73   p_message_name OUT NOCOPY VARCHAR2 )
74   RETURN BOOLEAN AS
75   	gv_other_detail		VARCHAR2(255);
76   BEGIN 	-- prgp_val_pot_cp
77   	-- Validate the IGS_PR_OU_TYPE.dflt_restricted_enrolment_cp field.
78   	-- Should only be specified where the related encumbrance type has a
79   	-- restricted enrolment related effect.
80   DECLARE
81   	cst_rstr_ge_cp		CONSTANT	VARCHAR2(10) := 'RSTR_GE_CP';
82   	cst_rstr_le_cp		CONSTANT	VARCHAR2(10) := 'RSTR_LE_CP';
83   	v_dummy					VARCHAR2(1);
84   	CURSOR c_etde IS
85   		SELECT	'X'
86   		FROM	IGS_FI_ENC_DFLT_EFT 	etde
87   		WHERE	etde.encumbrance_type	= p_encumbrance_type AND
88   			etde.s_encmb_effect_type IN (
89   						cst_rstr_ge_cp,
90   						cst_rstr_le_cp);
91   BEGIN
92   	-- Set the default message number
93   	p_message_name := null;
94   	IF p_dflt_restricted_enrolment_cp IS NULL THEN
95   		RETURN TRUE;
96   	END IF;
97   	IF p_encumbrance_type IS NULL THEN
98   		p_message_name := 'IGS_PR_SPECIF_ONLY_DFT_ENR_CP';
99   		RETURN FALSE;
100   	END IF;
101   	OPEN c_etde;
102   	FETCH c_etde INTO v_dummy;
103   	IF c_etde%NOTFOUND THEN
104   		CLOSE c_etde;
105   		p_message_name := 'IGS_PR_SPECIF_ONLY_DFT_ENR_CP';
106   		RETURN FALSE;
107   	ELSE
108   		CLOSE c_etde;
109   	END IF;
110   	RETURN TRUE;
111   EXCEPTION
112   	WHEN OTHERS THEN
113   		IF c_etde%ISOPEN THEN
114   			CLOSE c_etde;
115   		END IF;
116   		RAISE;
117   END;
118   EXCEPTION
119   	WHEN OTHERS THEN
120 		Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
121                 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_POT.PRGP_VAL_POT_CP');
122                 --IGS_GE_MSG_STACK.ADD;
123 
124   END prgp_val_pot_cp;
125 
126   -- Validate the Encumbrance Type.
127   FUNCTION prgp_val_pot_et(
128   p_s_progression_outcome_type IN VARCHAR2 ,
129   p_encumbrance_type IN VARCHAR2 ,
130   p_message_name OUT NOCOPY VARCHAR2)
131   RETURN BOOLEAN AS
132   	gv_other_detail		VARCHAR2(255);
133   /* Change History
134    WHO         WHEN              WHAT
135    ayedubat    15/12/2001        Added the Validation if the System Progression Outcome Type
136                                  is 'AWARD' as per Enhancement Bug No : 2138644
137    Nalin Kumar 13/11/2002        Added the Validation if the System Progression Outcome Type
138                                  is 'FUND' as per Enhancement Bug No : 2658550  */
139 
140   BEGIN 	-- prgp_val_pot_et
141   	-- Validate the encumbrance type for a IGS_PR_OU_TYPE record based
142   	-- on the s_progression_outcome_type which has been entered.
143   DECLARE
144   	cst_academic		CONSTANT	VARCHAR2(10) := 'ACADEMIC';
145   	cst_expulsion		CONSTANT	VARCHAR2(10) := 'EXPULSION';
146   	cst_exclusion		CONSTANT	VARCHAR2(10) := 'EXCLUSION';
147   	cst_suspension		CONSTANT	VARCHAR2(10) := 'SUSPENSION';
148   	cst_probation		CONSTANT	VARCHAR2(10) := 'PROBATION';
149   	cst_nopenalty		CONSTANT	VARCHAR2(10) := 'NOPENALTY';
150   	cst_manual		CONSTANT	VARCHAR2(10) := 'MANUAL';
151   	cst_award		CONSTANT	VARCHAR2(10) := 'AWARD';
152   	cst_sus			CONSTANT	VARCHAR2(10) := 'SUS%';
153   	cst_sus_course		CONSTANT	VARCHAR2(10) := 'SUS_COURSE';
154   	cst_exc			CONSTANT	VARCHAR2(10) := 'EXC%';
155   	cst_exc_course		CONSTANT	VARCHAR2(10) := 'EXC_COURSE';
156   	cst_exc_crs_gp		CONSTANT	VARCHAR2(10) := 'EXC_CRS_GP';
157   	cst_rqrd_crs_u		CONSTANT	VARCHAR2(10) := 'RQRD_CRS_U';
158   	cst_rstr_ge_cp		CONSTANT	VARCHAR2(10) := 'RSTR_GE_CP';
159   	cst_rstr_le_cp		CONSTANT	VARCHAR2(10) := 'RSTR_LE_CP';
160   	cst_rstr_at_ty		CONSTANT	VARCHAR2(10) := 'RSTR_AT_TY';
161 --
162   	cst_ex_fund		CONSTANT	VARCHAR2(15) := 'EX_FUND';
163 	cst_ex_sp_awd		CONSTANT	VARCHAR2(10) := 'EX_SP_AWD';
164 	cst_ex_sp_disb		CONSTANT	VARCHAR2(10) := 'EX_SP_DISB';
165  	cst_ex_awd		CONSTANT	VARCHAR2(10) := 'EX_AWD';
166  	cst_ex_disb		CONSTANT	VARCHAR2(10) := 'EX_DISB';
167   	v_ex_fund_1_exists	BOOLEAN                      := FALSE;
168 
169 --
170 	v_s_encumbrance_cat			IGS_FI_ENCMB_TYPE.s_encumbrance_cat%TYPE;
171   	v_suspension_1_exists			BOOLEAN := FALSE;
172   	v_suspension_2_exists			BOOLEAN := FALSE;
173   	v_exclusion_1_exists			BOOLEAN := FALSE;
174   	v_exclusion_2_exists			BOOLEAN := FALSE;
175   	v_expulsion_1_exists			BOOLEAN := FALSE;
176   	v_probation_1_exists			BOOLEAN := FALSE;
177   	v_probation_2_exists			BOOLEAN := FALSE;
178   	CURSOR c_et IS
179   		SELECT 	et.s_encumbrance_cat
180   		FROM	IGS_FI_ENCMB_TYPE 		et
181   		WHERE	et.encumbrance_type		= p_encumbrance_type;
182   	CURSOR c_edte IS
183   		SELECT	edte.s_encmb_effect_type
184   		FROM	IGS_FI_ENC_DFLT_EFT 		edte
185   		WHERE	edte.encumbrance_type		= p_encumbrance_type;
186   BEGIN
187   	-- Set the default message number
188   	p_message_name := null;
189   	IF p_s_progression_outcome_type IN (
190   					cst_expulsion,
191   					cst_exclusion,
192   					cst_suspension,
193   					cst_probation,
194 					cst_ex_fund) AND
195   			p_encumbrance_type IS NULL THEN
196   		p_message_name := 'IGS_PR_CHK_PRG_OUT_TYPE';
197   		RETURN FALSE;
198   	END IF;
199   	IF p_encumbrance_type IS NULL THEN
200   		RETURN TRUE;
201   	END IF;
202   	OPEN c_et;
203   	FETCH c_et INTO v_s_encumbrance_cat;
204   	IF c_et%FOUND THEN
205   		CLOSE c_et;
206   		IF v_s_encumbrance_cat <> cst_academic THEN
207   			p_message_name := 'IGS_PR_ENCUM_TYPE_MUST_BE_ACA';
208   			RETURN FALSE;
209   		END IF;
210   	ELSE
211   		CLOSE c_et;
212   		RETURN TRUE;
213   	END IF;
214   	FOR v_edte_rec IN c_edte LOOP
215   		IF p_s_progression_outcome_type = cst_suspension THEN
216   			IF v_edte_rec.s_encmb_effect_type = cst_sus_course THEN
217   				v_suspension_1_exists := TRUE;
218   			END IF;
219   			IF v_edte_rec.s_encmb_effect_type LIKE cst_exc THEN
220   				v_suspension_2_exists := TRUE;
221   			END IF;
222   		END IF;
223   		IF p_s_progression_outcome_type IN (
224   						cst_exclusion,
225   						cst_expulsion) THEN
226   			IF p_s_progression_outcome_type = cst_exclusion THEN
227   				v_expulsion_1_exists := TRUE;
228   				IF v_edte_rec.s_encmb_effect_type LIKE cst_exc THEN
229   					v_exclusion_1_exists := TRUE;
230   				END IF;
231   			ELSE
232   				v_exclusion_1_exists := TRUE;
233   				IF v_edte_rec.s_encmb_effect_type IN (
234   								cst_exc_course,
235   								cst_exc_crs_gp) THEN
236   					v_expulsion_1_exists := TRUE;
237   				END IF;
238   			END IF;
239   			IF v_edte_rec.s_encmb_effect_type LIKE cst_sus THEN
240   				v_exclusion_2_exists := TRUE;
241   			END IF;
242   		END IF;
243   		IF p_s_progression_outcome_type = cst_probation THEN
244   			IF v_edte_rec.s_encmb_effect_type IN (
245   							cst_rqrd_crs_u,
246   							cst_rstr_ge_cp,
247   							cst_rstr_le_cp,
248   							cst_rstr_at_ty) THEN
249   				v_probation_1_exists := TRUE;
250   			END IF;
251   			IF v_edte_rec.s_encmb_effect_type LIKE cst_sus OR
252   					v_edte_rec.s_encmb_effect_type LIKE cst_exc THEN
253   				v_probation_2_exists := TRUE;
254   			END IF;
255   		END IF;
256 		--Start of new code added as per FA110 PR-ENH. bug# 2658550
257 		IF p_s_progression_outcome_type = cst_ex_fund THEN
258 		     IF v_edte_rec.s_encmb_effect_type IN (cst_ex_sp_awd, cst_ex_sp_disb, cst_ex_awd, cst_ex_disb) THEN
259 			  v_ex_fund_1_exists := TRUE;
260 		      END IF;
261 		 END IF;
262 		--End of new code added as per FA110 PR-ENH. bug# 2658550
263   	END LOOP;
264   	IF p_s_progression_outcome_type = cst_suspension THEN
265   		IF NOT v_suspension_1_exists THEN
266   			p_message_name := 'IGS_PR_CHK_SUSP_PRG_OUTCOME';
267   			RETURN FALSE;
268   		END IF;
269   		IF v_suspension_2_exists THEN
270   			p_message_name := 'IGS_PR_CHK_SUSP_PRG_OUT_TYPES';
271   			RETURN FALSE;
272   		END IF;
273   		RETURN TRUE;
274   	END IF;
275   	IF p_s_progression_outcome_type IN (
276   					cst_exclusion,
277   					cst_expulsion) THEN
278   		IF NOT v_exclusion_1_exists OR
279   				NOT v_expulsion_1_exists THEN
280   			p_message_name := 'IGS_PR_CHK_EXCL_PRG_OUT_TYPES';
281   			RETURN FALSE;
282   		END IF;
283   		IF v_exclusion_2_exists THEN
284   			p_message_name := 'IGS_PR_CHK_EXPL_PRG_OUT_TYPES';
285   			RETURN FALSE;
286   		END IF;
287   		RETURN TRUE;
288   	END IF;
289   	IF p_s_progression_outcome_type = cst_probation THEN
290   		IF NOT v_probation_1_exists THEN
291   			p_message_name := 'IGS_PR_CHK_PROB_PRG_OUT_TYPES';
292   			RETURN FALSE;
293   		END IF;
294   		IF v_probation_2_exists THEN
295   			p_message_name := 'IGS_PR_INVALID_PRG_OUTCOMES';
296   			RETURN FALSE;
297   		END IF;
298   		RETURN TRUE;
299   	END IF;
300   	IF p_s_progression_outcome_type = cst_nopenalty AND
301   			p_encumbrance_type IS NOT NULL THEN
302   		p_message_name :='IGS_PR_CANNOT_LNK_NO_PRG_OUT';
303   		RETURN FALSE;
304   	END IF;
305   	IF p_s_progression_outcome_type = cst_manual AND
306   			p_encumbrance_type IS NOT NULL THEN
307   		p_message_name := 'IGS_PR_CANT_LINK_MANUAL_PRG';
308   		RETURN FALSE;
309   	END IF;
310   	IF p_s_progression_outcome_type = cst_award AND
311   			p_encumbrance_type IS NOT NULL THEN
312   		p_message_name := 'IGS_PR_CANT_LINK_AWARD_PRG';
313   		RETURN FALSE;
314   	END IF;
315 	--Start of new code added as per FA110 PR-ENH. bug# 2658550
316 	IF p_s_progression_outcome_type = cst_ex_fund THEN
317   	  IF NOT v_ex_fund_1_exists THEN
318   	    p_message_name := 'IGS_PR_CHK_EX_FND_PRG_OUT_TYPE';
319   	    RETURN FALSE;
320   	  END IF;
321   	END IF;
322 	--End of new code added as per FA110 PR-ENH. bug# 2658550
323   	RETURN TRUE;
324   EXCEPTION
325   	WHEN OTHERS THEN
326   		IF c_et%ISOPEN THEN
327   			CLOSE c_et;
328   		END IF;
329   		IF c_edte%ISOPEN THEN
330   			CLOSE c_edte;
331   		END IF;
332   		RAISE;
333   END;
334   EXCEPTION
335   	WHEN OTHERS THEN
336 		Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
337                 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_POT.PRGP_VAL_POT_ET');
338                 --IGS_GE_MSG_STACK.ADD;
339 
340   END prgp_val_pot_et;
341 
342   -- Validate the Change of Encumbrance Type.
343   FUNCTION prgp_val_pot_et_upd(
344   p_progression_outcome_type IN VARCHAR2 ,
345   p_old_encumbrance_type IN VARCHAR2 ,
346   p_new_encumbrance_type IN VARCHAR2 ,
347   p_message_name OUT NOCOPY VARCHAR2 )
348   RETURN BOOLEAN AS
349   	gv_other_detail		VARCHAR2(255);
350   BEGIN 	-- prgp_val_pot_et_upd
351   	-- Validate the change of encumbrance type for a progression outcome type.
352   	-- The encumbrance type cannot be changed once the progression outcome type
353   	-- has been used.
354   DECLARE
355   	v_dummy			VARCHAR2(1);
356   	CURSOR c_pro IS
357   		SELECT	'X'
358   		FROM	IGS_PR_RU_OU 	pro
359   		WHERE	pro.progression_outcome_type	= p_progression_outcome_type;
360   	CURSOR c_spo IS
361   		SELECT	'X'
362   		FROM	IGS_PR_STDNT_PR_OU 	spo
363   		WHERE	spo.progression_outcome_type	= p_progression_outcome_type;
364   BEGIN
365   	-- Set the default message number
366   	p_message_name := null;
367   	IF NVL(p_old_encumbrance_type, ' ') = NVL(p_new_encumbrance_type, ' ') THEN
368   		RETURN TRUE;
369   	END IF;
370   	OPEN c_pro;
371   	FETCH c_pro INTO v_dummy;
372   	IF c_pro%FOUND THEN
373   		CLOSE c_pro;
374   		p_message_name := 'IGS_PR_ENCUM_TYPE_CANT_CHANGE';
375   		RETURN FALSE;
376   	ELSE
377   		CLOSE c_pro;
378   		OPEN c_spo;
379   		FETCH c_spo INTO v_dummy;
380   		IF c_spo%FOUND THEN
381   			CLOSE c_spo;
382   			p_message_name := 'IGS_PR_ENCUM_TYPE_CANT_CHANGE';
383   			RETURN FALSE;
384   		ELSE
385   			CLOSE c_spo;
386   		END IF;
387   	END IF;
388   	RETURN TRUE;
389   EXCEPTION
390   	WHEN OTHERS THEN
391   		IF c_pro%ISOPEN THEN
392   			CLOSE c_pro;
393   		END IF;
394   		IF c_spo%ISOPEN THEN
395   			CLOSE c_spo;
396   		END IF;
397   		RAISE;
398   END;
399   EXCEPTION
400   	WHEN OTHERS THEN
401 		Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
402                 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_POT.PRGP_VAL_POT_ET_UPD');
403                 --IGS_GE_MSG_STACK.ADD;
404 
405   END prgp_val_pot_et_upd;
406 
407   -- Validate the Change of System Progression Outcome Type.
408   FUNCTION prgp_val_pot_spot_u(
409   p_progression_outcome_type IN VARCHAR2 ,
410   p_old_s_prg_outcome_type IN VARCHAR2 ,
411   p_new_s_prg_outcome_type IN VARCHAR2 ,
412   p_message_name OUT NOCOPY VARCHAR2 )
413   RETURN BOOLEAN AS
414   	gv_other_detail		VARCHAR2(255);
415   BEGIN 	-- prgp_val_pot_spot_u
416   	-- Validate the change of system progression outcome type for a progression
417   	-- outcome type.
418   	-- The system type cannot be changed once the progression outcome type has
419   	-- been used.
420   DECLARE
421   	v_dummy			VARCHAR2(1);
422   	CURSOR c_pro IS
423   		SELECT	'X'
424   		FROM	IGS_PR_RU_OU 	pro
425   		WHERE	pro.progression_outcome_type	= p_progression_outcome_type;
426   	CURSOR c_spo IS
427   		SELECT	'X'
428   		FROM	IGS_PR_STDNT_PR_OU 	spo
429   		WHERE	spo.progression_outcome_type	= p_progression_outcome_type;
430   BEGIN
431   	-- Set the default message number
432   	p_message_name := null;
436   	OPEN c_pro;
433   	IF NVL(p_old_s_prg_outcome_type, ' ') = NVL(p_new_s_prg_outcome_type, ' ') THEN
434   		RETURN TRUE;
435   	END IF;
437   	FETCH c_pro INTO v_dummy;
438   	IF c_pro%FOUND THEN
439   		CLOSE c_pro;
440   		p_message_name := 'IGS_PR_OUT_TYPE_CANT_CHANGED';
441   		RETURN FALSE;
442   	ELSE
443   		CLOSE c_pro;
444   		OPEN c_spo;
445   		FETCH c_spo INTO v_dummy;
446   		IF c_spo%FOUND THEN
447   			CLOSE c_spo;
448   			p_message_name := 'IGS_PR_OUT_TYPE_CANT_CHANGED';
449   			RETURN FALSE;
450   		ELSE
451   			CLOSE c_spo;
452   		END IF;
453   	END IF;
454   	RETURN TRUE;
455   EXCEPTION
456   	WHEN OTHERS THEN
457   		IF c_pro%ISOPEN THEN
458   			CLOSE c_pro;
459   		END IF;
460   		IF c_spo%ISOPEN THEN
461   			CLOSE c_spo;
462   		END IF;
463   		RAISE;
464   END;
465   EXCEPTION
466   	WHEN OTHERS THEN
467 		Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
468                 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_POT.PRGP_VAL_POT_SPOT_U');
469                 --IGS_GE_MSG_STACK.ADD;
470 
471   END prgp_val_pot_spot_u;
472 
473 
474   -- Validate that the s_progression_outcome_type is not closed
475   FUNCTION prgp_val_spot_closed(
476   p_s_prog_outcome_type IN VARCHAR2 ,
477   p_message_name OUT NOCOPY VARCHAR2 )
478   RETURN BOOLEAN AS
479   	gv_other_detail		VARCHAR2(255);
480   BEGIN 	-- prgp_val_spot_closed
481   	-- Validate if s_progression_outcome_type.s_progression_outcome_type is closed
482   DECLARE
483   	v_closed_ind		VARCHAR2(1);
484   	CURSOR c_spot IS
485   		SELECT	spot.closed_ind
486   		FROM	IGS_LOOKUPS_VIEW	spot
487   		WHERE	spot.LOOKUP_TYPE	= p_s_prog_outcome_type;
488   BEGIN
489   	--set default message_name
490   	p_message_name := null;
491   	OPEN c_spot;
492   	FETCH c_spot INTO v_closed_ind;
493   	IF c_spot%FOUND THEN
494   		CLOSE c_spot;
495   		IF v_closed_ind = 'Y' THEN
496   			p_message_name := 'IGS_PR_SYS_PRG_OUT_TYPE_CLOSE';
497   			RETURN FALSE;
498   		END IF;
499   	ELSE
500   		CLOSE c_spot;
501   	END IF;
502   	RETURN TRUE;
503   EXCEPTION
504   	WHEN OTHERS THEN
505   		IF c_spot%ISOPEN THEN
506   			CLOSE c_spot;
507   		END IF;
508   		RAISE;
509   END;
510   EXCEPTION
511   	WHEN OTHERS THEN
512 		Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
513                 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_POT.PRGP_VAL_SPOT_CLOSED');
514                 --IGS_GE_MSG_STACK.ADD;
515 
516   END prgp_val_spot_closed;
517 END IGS_PR_VAL_POT;