DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_VAL_ESVS

Source


1 PACKAGE BODY IGS_AS_VAL_ESVS AS
2 /* $Header: IGSAS21B.pls 115.5 2002/11/28 22:44:40 nsidana ship $ */
3   -------------------------------------------------------------------------------------------
4   --Change History:
5   --Who         When            What
6   --smadathi    28-AUG-2001     Bug No. 1956374 .The function genp_val_staff_prsn
7   --                            removed
8   -------------------------------------------------------------------------------------------
9   -- Validate if a IGS_PE_PERSON is an active student.
10 
11   --
12   -- Validate exam instance exists for the session and IGS_GR_VENUE.
13   FUNCTION ASSP_VAL_EI_VENUE(
14   p_exam_cal_type IN VARCHAR2 ,
15   p_exam_ci_sequence_number IN NUMBER ,
16   p_dt_alias IN VARCHAR2 ,
17   p_dai_sequence_number IN NUMBER ,
18   p_start_time IN DATE ,
19   p_end_time IN DATE ,
20   p_venue_cd IN VARCHAR2 ,
21   P_MESSAGE_NAME OUT NOCOPY VARCHAR2 )
22   RETURN BOOLEAN AS
23   BEGIN	-- assp_val_ei_venue
24   	-- Validate there exists at least one exam instance
25   	-- at a IGS_GR_VENUE for which the supervisor is being allocated.
26   DECLARE
27   	v_start_time	DATE;
28 	v_flag VARCHAR2(1) ;
29   	v_end_time	DATE;
30   	v_system_date	DATE;
31 	CURSOR c_ei IS
32   		SELECT	'1',ei.start_time,ei.end_time
33   		FROM	IGS_AS_EXAM_INSTANCE ei
34   		WHERE	ei.exam_cal_type 		= p_exam_cal_type AND
35   			ei.exam_ci_sequence_number 	= p_exam_ci_sequence_number AND
36   			ei.dt_alias			= p_dt_alias AND
37   			ei.dai_sequence_number		= p_dai_sequence_number	AND
38   			ei.venue_cd 		  	= p_venue_cd;
39      v_x	c_ei%ROWTYPE;
40   BEGIN
41   	P_MESSAGE_NAME := NULL;
42   	v_system_date := SYSDATE;
43     v_flag := 'F' ;
44   	v_start_time := Igs_Ge_Gen_003.GENP_SET_TIME(p_start_time);
45   	v_end_time := Igs_Ge_Gen_003.GENP_SET_TIME(p_end_time);
46   	OPEN c_ei;
47 	LOOP
48   	FETCH c_ei INTO v_x;
49 	EXIT WHEN c_ei%NOTFOUND ;
50     IF	Igs_Ge_Gen_003.GENP_SET_TIME(v_x.start_time) 	=  v_start_time	AND
51 		Igs_Ge_Gen_003.GENP_SET_TIME(v_x.end_time)   	=  v_end_time	THEN
52         v_flag := 'T' ;
53 		EXIT;
54 	END IF;
55 	END LOOP;
56   	CLOSE c_ei;
57 	IF v_flag = 'F' THEN
58   		P_MESSAGE_NAME := 'IGS_AS_NOEXAM_INSTANCE_EXIST';
59   		RETURN FALSE;
60 	ELSE
61     	P_MESSAGE_NAME := NULL;
62     	RETURN TRUE;
63 	END IF;
64   END;
65   EXCEPTION
66   	WHEN OTHERS THEN
67            	FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
68  		FND_MESSAGE.SET_TOKEN('NAME','IGS_AS_VAL_ESVS.assp_val_ei_venue');
69  		IGS_GE_MSG_STACK.ADD;
70   END assp_val_ei_venue;
71   --
72   -- Validate IGS_GR_VENUE is within the supervisor's exam IGS_AD_LOCATIONs
73   FUNCTION ASSP_VAL_ELS_VENUE(
74   p_person_id IN NUMBER ,
75   p_venue_cd IN VARCHAR2 ,
76   P_MESSAGE_NAME OUT NOCOPY VARCHAR2 )
77   RETURN BOOLEAN AS
78   BEGIN	--assp_val_els_venue
79   	--Validate if the IGS_PE_PERSON is being allocated to supervise an exam
80   	-- instance/IGS_GR_VENUE, then check that the IGS_GR_VENUE is within one of the IGS_PE_PERSONs
81   	-- exam_location_supvsr records
82   DECLARE
83   	v_els_exists	VARCHAR2(1);
84   	CURSOR c_els IS
85   		SELECT 	'X'
86   		FROM 	IGS_AS_EXM_LOC_SPVSR	els,
87   			IGS_GR_VENUE			ve
88   		WHERE 	els.person_id		= p_person_id		AND
89   			els.exam_location_cd	= ve.exam_location_cd	AND
90   			ve.venue_cd		= p_venue_cd;
91   BEGIN
92   	--Set the default message number
93   	P_MESSAGE_NAME := NULL;
94   	--Determine if the IGS_GR_VENUE is within a persons supervisory IGS_AD_LOCATIONs
95   	OPEN c_els;
96   	FETCH c_els INTO v_els_exists;
97   	IF (c_els%NOTFOUND) THEN
98   		--Return a warning message indicating that the exam IGS_GR_VENUE is not within
99   		--a IGS_AD_LOCATION that the IGS_PE_PERSON supervises.
100   		CLOSE c_els;
101   		P_MESSAGE_NAME := 'IGS_AS_VENUE_NOTWITHIN_SUPVEX';
102   		RETURN FALSE;
103   	END IF;
104   	CLOSE c_els;
105   	RETURN TRUE;
106   END;
107   EXCEPTION
108   	WHEN OTHERS THEN
109 	 	FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
110  		FND_MESSAGE.SET_TOKEN('NAME','IGS_AS_VAL_ESVS.assp_val_els_venue');
111  		IGS_GE_MSG_STACK.ADD;
112   END assp_val_els_venue;
113   --
114    -- Validate if the exam supervisor type is not closed.
115 
116   --
117   --
118   -- Validate if supervisor allocated different exam IGS_AD_LOCATION for same day.
119   FUNCTION ASSP_VAL_ESU_ESE_EL(
120   p_person_id IN NUMBER ,
121   p_exam_cal_type IN VARCHAR2 ,
122   p_exam_ci_sequence_number IN NUMBER ,
123   p_dt_alias IN VARCHAR2 ,
124   p_dai_sequence_number IN NUMBER ,
125   p_start_time IN DATE ,
126   p_end_time IN DATE ,
127   p_venue_cd IN VARCHAR2 ,
128   P_MESSAGE_NAME OUT NOCOPY VARCHAR2 )
129   RETURN BOOLEAN AS
130   BEGIN	-- assp_val_esu_ese_el
131   	-- Validate the IGS_PE_PERSON is not being allocated to sessions at two different exam
132   	-- locations on the same day
133   DECLARE
134   	v_dt_alias_val		DATE;
135   	v_exam_location_cd	IGS_GR_VENUE.exam_location_cd%TYPE;
136   	v_check			CHAR;
137   	CURSOR c_venue IS
138   		SELECT 	exam_location_cd
139   		FROM	IGS_GR_VENUE
140   		WHERE	venue_cd = p_venue_cd;
141   	CURSOR	c_eis_ve (
142   			cp_dt_alias_val		DATE,
143   			cp_exam_location_cd	IGS_GR_VENUE.exam_location_cd%TYPE) IS
144   		SELECT	'x'
145   		FROM	IGS_AS_EXM_INS_SPVSR 	eis,
146   			IGS_GR_VENUE 			ve
147   		WHERE	eis.person_id 	= p_person_id		AND
148   			IGS_CA_GEN_001.CALP_GET_ALIAS_VAL(
149   					eis.dt_alias,
150   					eis.dai_sequence_number,
151   					eis.exam_cal_type,
152   					eis.exam_ci_sequence_number) = cp_dt_alias_val AND
153   			eis.venue_cd 	= ve.venue_cd 				AND
154   			ve.exam_location_cd <> cp_exam_location_cd;
155   	CURSOR	c_esvs_ve (
156   			cp_dt_alias_val		DATE,
157   			cp_exam_location_cd	IGS_GR_VENUE.exam_location_cd%TYPE) IS
158   		SELECT	'x'
159   		FROM	IGS_AS_EXM_SES_VN_SP 	esvs,
160   			IGS_GR_VENUE 				ve
161   		WHERE	esvs.person_id 	= p_person_id			AND
162   			IGS_CA_GEN_001.CALP_GET_ALIAS_VAL(
163   					esvs.dt_alias,
164   					esvs.dai_sequence_number,
165   					esvs.exam_cal_type,
166   					esvs.exam_ci_sequence_number) = cp_dt_alias_val AND
167   			esvs.venue_cd 	= ve.venue_cd			AND
168   			ve.exam_location_cd <> cp_exam_location_cd;
169   BEGIN
170   	P_MESSAGE_NAME := NULL;
171   	-- Get the date for the date alias instance value.
172   	v_dt_alias_val := IGS_CA_GEN_001.CALP_GET_ALIAS_VAL(
173   					p_dt_alias,
174   					p_dai_sequence_number,
175   					p_exam_cal_type,
176   					p_exam_ci_sequence_number);
177   	-- Get the exam IGS_AD_LOCATION for the IGS_GR_VENUE.
178   	OPEN c_venue;
179   	FETCH c_venue INTO v_exam_location_cd;
180   	CLOSE c_venue;
181   	-- Determine if the IGS_PE_PERSON has been allocated to supervise an exam instance for
182   	-- the same day at a different exam locations.
183   	OPEN c_eis_ve (
184   			v_dt_alias_val,
185   			v_exam_location_cd);
186   	FETCH c_eis_ve INTO v_check;
187   	IF (c_eis_ve%FOUND) THEN
188   		-- Return an warning message indicating that the IGS_PE_PERSON has been allocated
189   		-- to different exam locations on the same day.
190   		CLOSE c_eis_ve;
191   		P_MESSAGE_NAME := 'IGS_AS_PRSN_ALLOC_DIFF_EXAM';
192   		RETURN FALSE;
193   	END IF;
194   	CLOSE c_eis_ve;
195   	-- Determine if the IGS_PE_PERSON has already been allocated to supervise at a IGS_GR_VENUE
196   	-- for the same day at a different exam IGS_AD_LOCATION.
197   	OPEN c_esvs_ve(
198   			v_dt_alias_val,
199   			v_exam_location_cd);
200   	FETCH c_esvs_ve INTO v_check;
201   	IF (c_esvs_ve%FOUND) THEN
202   		-- Return an warning message indicating that the IGS_PE_PERSON has been allocated
203   		-- to different exam locations on the same day.
204   		CLOSE c_esvs_ve;
205   		P_MESSAGE_NAME := 'IGS_AS_PRSN_ALLOC_DIFF_EXAM';
206   		RETURN FALSE;
207   	END IF;
208   	CLOSE c_esvs_ve;
209   	RETURN TRUE;
210   END;
211   EXCEPTION
212   	WHEN OTHERS THEN
213 	 	FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
214  		FND_MESSAGE.SET_TOKEN('NAME','IGS_AS_VAL_ESVS.assp_val_esu_ese_el');
215  		IGS_GE_MSG_STACK.ADD;
216   END assp_val_esu_ese_el;
217   --
218   -- Validate if the supervisor limit exceeded for the session and IGS_GR_VENUE.
219    -- Supervisor cannot be allocated concurrent sessions at different IGS_GR_VENUEs
220   FUNCTION ASSP_VAL_ESU_ESE_VE(
221   p_person_id IN NUMBER ,
222   p_exam_cal_type IN VARCHAR2 ,
223   p_exam_ci_sequence_number IN NUMBER ,
224   p_dt_alias IN VARCHAR2 ,
225   p_dai_sequence_number IN NUMBER ,
226   p_start_time IN DATE ,
227   p_end_time IN DATE ,
228   p_override_start_time IN DATE ,
229   p_override_end_time IN DATE ,
230   p_venue_cd IN VARCHAR2 ,
231   P_MESSAGE_NAME OUT NOCOPY VARCHAR2 )
232   RETURN BOOLEAN AS
233   	gv_other_detail_1	VARCHAR2(255);
234   	gv_other_detail_2	VARCHAR2(255);
235   BEGIN	--assp_val_esu_ese_ve
236   	--Validate the IGS_PE_PERSON cannot be allocated to supervise
237   	--concurrent exam sessions at different IGS_GR_VENUEs
238   DECLARE
239   	v_eis_exists	VARCHAR2(1);
240   	v_esvs_exists	VARCHAR2(1);
241   	v_dt_alias_val	DATE;
242   	v_start_time	DATE;
243   	v_end_time	DATE;
244   	CURSOR c_eis IS
245   		SELECT	'X'
246   		FROM	IGS_AS_EXM_INS_SPVSR	eis
247   		WHERE	person_id			= p_person_id		AND
248   			IGS_CA_GEN_001.CALP_GET_ALIAS_VAL(
249   				dt_alias,
250   				dai_sequence_number,
251   				exam_cal_type,
252   				exam_ci_sequence_number) = v_dt_alias_val	AND
253    				((Igs_Ge_Gen_003.GENP_SET_TIME(NVL(override_start_time, start_time))
254   					BETWEEN v_start_time AND v_end_time OR
255   				(Igs_Ge_Gen_003.GENP_SET_TIME( NVL(override_end_time, end_time))
256   					BETWEEN  v_start_time AND v_end_time)) OR
257   				(Igs_Ge_Gen_003.GENP_SET_TIME( NVL(override_start_time, start_time)) 	<= v_start_time AND
258   				Igs_Ge_Gen_003.GENP_SET_TIME( NVL(override_end_time, end_time)) 	>= v_end_time)) AND
259   				venue_cd 						<> p_venue_cd;
260   	CURSOR c_esvs IS
261   		SELECT	'X'
262   		FROM	IGS_AS_EXM_SES_VN_SP	esvs
263   		WHERE	person_id			= p_person_id		AND
264   			IGS_CA_GEN_001.CALP_GET_ALIAS_VAL(
265   				dt_alias,
266   				dai_sequence_number,
267   				exam_cal_type,
268   				exam_ci_sequence_number) = v_dt_alias_val	AND
269    				((Igs_Ge_Gen_003.GENP_SET_TIME(NVL(override_start_time, start_time))
270   					BETWEEN v_start_time AND v_end_time OR
271   				(Igs_Ge_Gen_003.GENP_SET_TIME( NVL(override_end_time, end_time))
272   					BETWEEN  v_start_time AND v_end_time)) OR
273   				(Igs_Ge_Gen_003.GENP_SET_TIME( NVL(override_start_time, start_time)) 	<= v_start_time AND
274   				Igs_Ge_Gen_003.GENP_SET_TIME( NVL(override_end_time, end_time)) 	>= v_end_time)) AND
275   				venue_cd 						<> p_venue_cd;
276   BEGIN
277   	--Set the default message number
278   	P_MESSAGE_NAME := NULL;
279   	--Get the date for the date alias instance value
280   	v_dt_alias_val := IGS_CA_GEN_001.CALP_GET_ALIAS_VAL(
281   					p_dt_alias,
282   					p_dai_sequence_number,
283   					p_exam_cal_type,
284   					p_exam_ci_sequence_number);
285   	--Calculate which time parameter to use and set the date component
286   	--to be consistent when comparing times.
287   	--This is due to the date component varying when entering
288   	--a time format within a form
289   	v_start_time	:= Igs_Ge_Gen_003.GENP_SET_TIME(NVL(p_override_start_time, p_start_time));
290   	v_end_time	:= Igs_Ge_Gen_003.GENP_SET_TIME( NVL(p_override_end_time, p_end_time));
291   	OPEN c_eis;
292   	FETCH c_eis INTO v_eis_exists;
293   	IF (c_eis%FOUND) THEN
294   		P_MESSAGE_NAME := 'IGS_AS_PRSN_ALLOC_DIFF_VENUE';
295   		CLOSE c_eis;
296   		RETURN FALSE;
297   	END IF;
298   	CLOSE c_eis;
299   	--Determine if the IGS_PE_PERSON has been allocated to supervise
300   	--at a different IGS_GR_VENUE for the same session.
301   	OPEN c_esvs;
302   	FETCH c_esvs INTO v_esvs_exists;
303   	IF (c_esvs%FOUND) THEN
304   		--Return an error message indicating that the IGS_PE_PERSON has been
305   		--allocated to concurrent sessions at different venues.
306   		P_MESSAGE_NAME := 'IGS_AS_PRSN_ALLOC_DIFF_VENUE';
307   		CLOSE c_esvs;
308   		RETURN FALSE;
309   	END IF;
310   	CLOSE c_esvs;
311   	RETURN TRUE;
312   END;
313   EXCEPTION
314   	WHEN OTHERS THEN
315 	 	FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
316  		FND_MESSAGE.SET_TOKEN('NAME','IGS_AS_VAL_ESVS.assp_val_esu_ese_ve');
317  		IGS_GE_MSG_STACK.ADD;
318   END assp_val_esu_ese_ve;
319   --
320 
321 END Igs_As_Val_Esvs;