DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_VAL_SCFT

Source


1 PACKAGE BODY IGS_AD_VAL_SCFT AS
2 /* $Header: IGSAD69B.pls 115.4 2002/11/28 21:39:32 nsidana ship $ */
3 
4 -----------------------------------------------------------------------
5 --  Change History :
6 --  Who             When            What
7 -- avenkatR     30-AUG-2001     Remove procedure "crsp_Val_fs_closed"
8 -- avenkatr     30-AUG-2001     Remove procedure "crsp_Val_iud_crv_dtl"
9 -----------------------------------------------------------------------
10   --
11   -- Validate SCFT optional values unique across records
12   FUNCTION admp_val_scft_uniq(
13   p_submission_yr IN NUMBER ,
14   p_submission_number IN NUMBER ,
15   p_course_cd IN VARCHAR2 ,
16   p_crv_version_number IN NUMBER ,
17   p_funding_source IN VARCHAR2 ,
18   p_location_cd IN VARCHAR2 ,
19   p_attendance_mode IN VARCHAR2 ,
20   p_attendance_type IN VARCHAR2 ,
21   p_unit_set_cd IN VARCHAR2 ,
22   p_us_version_number IN NUMBER ,
23   p_message_name OUT NOCOPY VARCHAR2 )
24   RETURN BOOLEAN AS
25   BEGIN	-- admp_val_scft_uniq
26   	-- This module checks the combination of optional components of
27   	-- IGS_AD_SBM_PS_FNTRGT is unique within submission, course and funding source.
28   DECLARE
29   	v_scft_count			NUMBER;
30   	CURSOR	c_scft IS
31   		SELECT	count(*)
32   		FROM	IGS_AD_SBM_PS_FNTRGT
33   		WHERE	submission_yr			= p_submission_yr AND
34   			submission_number		= p_submission_number AND
35   			course_cd 			= p_course_cd AND
36   			crv_version_number 		= p_crv_version_number AND
37   			funding_source 			= p_funding_source AND
38   			NVL(location_cd, 'NULL') 	= NVL(p_location_cd, 'NULL') AND
39   			NVL(attendance_mode, 'NULL')	= NVL(p_attendance_mode, 'NULL') AND
40   			NVL(attendance_type, 'NULL')	= NVL(p_attendance_type, 'NULL') AND
41   			NVL(unit_set_cd, 'NULL')	= NVL(p_unit_set_cd, 'NULL') AND
42   			NVL(us_version_number, 0)	= NVL(p_us_version_number, 0);
43   BEGIN
44   	p_message_name := null;
45   	OPEN c_scft;
46   	FETCH c_scft INTO v_scft_count;
47   	IF (c_scft%FOUND) AND
48   	    v_scft_count > 1 THEN
49   		CLOSE c_scft;
50 		p_message_name := 'IGS_AD_COMBINATION_UNIQUE';
51   		RETURN FALSE;
52   	END IF;
53   	CLOSE c_scft;
54   	RETURN TRUE;
55   EXCEPTION
56   	WHEN OTHERS THEN
57   		IF c_scft%ISOPEN THEN
58   			CLOSE c_scft;
59   		END IF;
60 		App_Exception.Raise_Exception;
61   END;
62   EXCEPTION
63   	WHEN OTHERS THEN
64 	    Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
65 	    FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SCFT.admp_val_scft_uniq');
66 	    IGS_GE_MSG_STACK.ADD;
67 		App_Exception.Raise_Exception;
68   END admp_val_scft_uniq;
69 
70 
71   -- Validate crs fund target course version in a valid course off pattern
72   FUNCTION admp_val_scft_cop(
73   p_submission_yr IN NUMBER ,
74   p_submission_number IN NUMBER ,
75   p_course_cd IN VARCHAR2 ,
76   p_crv_version_number IN NUMBER ,
77   p_message_name OUT NOCOPY VARCHAR2 )
78   RETURN BOOLEAN AS
79   BEGIN	-- admp_val_scft_cop
80   	-- This module validates the IGS_PS_VER component of IGS_AD_SBM_PS_FNTRGT
81   	-- exists and is offered within a IGS_PS_OFR_PAT that is in the
82   	-- academic period of the submission period.
83   DECLARE
84   	v_cop		VARCHAR2(1);
85   	CURSOR	c_cop IS
86   		SELECT	'x'
87   		FROM 	IGS_PS_OFR_PAT cop,
88     			IGS_ST_GVTSEMLOAD_CA gslc,
89      			IGS_CA_INST_REL cir
90   		WHERE  	gslc.submission_yr	= p_submission_yr AND
91      			gslc.submission_number	= p_submission_number AND
92      			cop.course_cd 		= p_course_cd AND
93      			cop.version_number	= p_crv_version_number AND
94      			(cop.offered_ind 	= 'Y'  OR
95      			cop.enrollable_ind 	= 'Y') AND
96      			cop.cal_type 		= cir.sup_cal_type AND
97      			cop.ci_sequence_number	= cir.sup_ci_sequence_number AND
98      			gslc.cal_type		= cir.sub_cal_type AND
99      			gslc.ci_sequence_number	= cir.sub_ci_sequence_number;
100   BEGIN
101   	p_message_name := null;
102   	OPEN c_cop;
103   	FETCH c_cop INTO v_cop;
104   	IF (c_cop%NOTFOUND) THEN
105   		CLOSE c_cop;
106 		p_message_name := 'IGS_AD_PRG_VERSION_DETAILS';
107   		RETURN FALSE;
108   	END IF;
109   	CLOSE c_cop;
110   	RETURN TRUE;
111   EXCEPTION
112   	WHEN OTHERS THEN
113   		IF c_cop%ISOPEN THEN
114   			CLOSE c_cop;
115   		END IF;
116 		App_Exception.Raise_Exception;
117   END;
118   EXCEPTION
119   	WHEN OTHERS THEN
120 	    Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
121 	    FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SCFT.admp_val_scft_cop');
122 	    IGS_GE_MSG_STACK.ADD;
123 		App_Exception.Raise_Exception;
124   END admp_val_scft_cop;
125 
126   --
127   -- Validate crs fund target funding source is within restriction
128   FUNCTION admp_val_scft_fs(
129   p_course_cd IN VARCHAR2 ,
130   p_crv_version_number IN NUMBER ,
131   p_funding_source IN VARCHAR2 ,
132   p_message_name OUT NOCOPY VARCHAR2 )
133   RETURN BOOLEAN AS
134   BEGIN	-- admp_val_scft_fs
135   	-- This module validates that the funding_source for the IGS_AD_SBM_PS_FNTRGT
136   	-- complies with any IGS_FI_FND_SRC_RSTN.
137   DECLARE
138   	v_fsr			VARCHAR2(1);
139   	CURSOR	c_fsr (
140   		cp_funding_source	IGS_AD_SBM_PS_FNTRGT.funding_source%TYPE) IS
141   		SELECT	'x'
142   		FROM	IGS_FI_FND_SRC_RSTN
143   		WHERE	course_cd		= p_course_cd AND
144   			version_number		= p_crv_version_number AND
145   			restricted_ind		= 'Y' AND
146   			(cp_funding_source 	IS NULL OR
147   			funding_source		= cp_funding_source);
148   BEGIN
149   	p_message_name := null;
150   	OPEN c_fsr(
151   		NULL);
152   	FETCH c_fsr INTO v_fsr;
153   	IF (c_fsr%FOUND) THEN
154   		CLOSE c_fsr;
155   		OPEN c_fsr(
156   			p_funding_source);
157   		FETCH c_fsr INTO v_fsr;
158   		IF (c_fsr%NOTFOUND) THEN
159   			CLOSE c_fsr;
160 			p_message_name := 'IGS_AD_FUNDING_SRC_RESTRICTIO';
161   			RETURN FALSE;
162   		ELSE
163   			CLOSE c_fsr;
164   		END IF;
165   	ELSE
166   		CLOSE c_fsr;
167   	END IF;
168   	RETURN TRUE;
169   EXCEPTION
170   	WHEN OTHERS THEN
171   		IF c_fsr%ISOPEN THEN
172   			CLOSE c_fsr;
173   		END IF;
174 		App_Exception.Raise_Exception;
175   END;
176   EXCEPTION
177   	WHEN OTHERS THEN
178 	   Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
179 	    FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SCFT.admp_val_scft_fs');
180 	    IGS_GE_MSG_STACK.ADD;
181 		App_Exception.Raise_Exception;
182   END admp_val_scft_fs;
183 
184   --
185   -- Validate crs fund target IGS_PS_UNIT set in a valid course offering IGS_PS_UNIT set
186   FUNCTION admp_val_scft_cous(
187   p_course_cd IN VARCHAR2 ,
188   p_crv_version_number IN NUMBER ,
189   p_unit_set_cd IN VARCHAR2 ,
190   p_us_version_number IN NUMBER ,
191   p_location_cd IN VARCHAR2 ,
192   p_attendance_mode IN VARCHAR2 ,
193   p_attendance_type IN VARCHAR2 ,
194   p_message_name OUT NOCOPY VARCHAR2 )
195   RETURN BOOLEAN AS
196   BEGIN	-- admp_val_scft_cous
197   	-- This module validates the IGS_EN_UNIT_SET component of IGS_AD_SBM_PS_FNTRGT
198   	-- does not have a system status of 'INACTIVE' and maps to at least one
199   	-- course_offering_unot_set or IGS_PS_OF_OPT_UNT_ST.
200   DECLARE
201   	v_coousv		VARCHAR2(1);
202   	cst_inactive		CONSTANT IGS_EN_UNIT_SET_STAT.s_unit_set_status%TYPE := 'INACTIVE';
203   	CURSOR	c_coousv IS
204   		SELECT 	'x'
205   		FROM	IGS_PS_OFR_OPT_UNIT_SET_V coousv,
206   			IGS_EN_UNIT_SET us,
207   			IGS_EN_UNIT_SET_STAT uss
208   		WHERE  	coousv.unit_set_cd 		= p_unit_set_cd AND
209      			coousv.us_version_number	= p_us_version_number AND
210      			coousv.course_cd 		= p_course_cd AND
211      			coousv.crv_version_number 	= p_crv_version_number AND
212      			coousv.location_cd 		LIKE NVL(p_location_cd, '%') AND
213      			coousv.attendance_mode 		LIKE NVL(p_attendance_mode, '%') AND
214      			coousv.attendance_type 		LIKE NVL(p_attendance_type, '%') AND
215   			us.unit_set_cd 			= coousv.unit_set_cd AND
216   			us.version_number 		= coousv.us_version_number AND
217   			uss.unit_set_status 		= us.unit_set_status AND
218   			uss.s_unit_set_status 		<> cst_inactive;
219   BEGIN
220   	p_message_name := null;
221   	IF p_unit_set_cd IS NULL AND
222   	    p_us_version_number IS NULL THEN
223   		RETURN TRUE;
224   	END IF;
225   	OPEN c_coousv;
226   	FETCH c_coousv INTO v_coousv;
227   	IF (c_coousv%NOTFOUND) THEN
228   		CLOSE c_coousv;
229 		p_message_name := 'IGS_AD_UNIT_SET_DOESNOT_EXIST';
230   		RETURN FALSE;
231   	END IF;
232   	CLOSE c_coousv;
233   	RETURN TRUE;
234   EXCEPTION
235   	WHEN OTHERS THEN
236   		IF c_coousv%ISOPEN THEN
237   			CLOSE c_coousv;
238   		END IF;
239 		App_Exception.Raise_Exception;
240   END;
241   EXCEPTION
242   	WHEN OTHERS THEN
243 	    Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
244 	    FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SCFT.admp_val_scft_cous');
245 	    IGS_GE_MSG_STACK.ADD;
246 		App_Exception.Raise_Exception;
247   END admp_val_scft_cous;
248 
249   --
250   -- Validate crs fund target detail in a valid course offering pattern
251   FUNCTION admp_val_scft_dtl(
252   p_submission_yr IN NUMBER ,
253   p_submission_number IN NUMBER ,
254   p_course_cd IN VARCHAR2 ,
255   p_crv_version_number IN NUMBER ,
256   p_location_cd IN VARCHAR2 ,
257   p_attendance_mode IN VARCHAR2 ,
258   p_attendance_type IN VARCHAR2 ,
259   p_message_name OUT NOCOPY VARCHAR2 )
260   RETURN BOOLEAN AS
261   BEGIN	-- admp_val_scft_dtl
262   	-- This module validates the location_cd/attendance_mode/attendance_type are in
263   	-- at least one enrollable or offered IGS_PS_OFR_PAT for the academic
264   	-- period of the submission period.
265   DECLARE
266   	v_cop			VARCHAR2(1);
267   	CURSOR	c_cop IS
268   		SELECT 	'x'
269   		FROM 	IGS_PS_OFR_PAT cop,
270   			IGS_ST_GVTSEMLOAD_CA gslc,
271   			IGS_CA_INST_REL cir
272   		WHERE  	gslc.submission_yr 	= p_submission_yr AND
273      			gslc.submission_number	= p_submission_number AND
274      			cop.course_cd 		= p_course_cd AND
275      			cop.version_number 	= p_crv_version_number AND
276   			(cop.offered_ind 	= 'Y'  OR
277      			cop.enrollable_ind 	= 'Y') AND
278      			cop.cal_type 		= cir.sup_cal_type AND
279      			cop.ci_sequence_number 	= cir.sup_ci_sequence_number AND
280      			gslc.cal_type 		= cir.sub_cal_type AND
281      			gslc.ci_sequence_number = cir.sub_ci_sequence_number AND
282   			cop.location_cd 	LIKE NVL(p_location_cd, '%') AND
283     			cop.attendance_mode 	LIKE NVL(p_attendance_mode, '%') AND
284      			cop.attendance_type 	LIKE NVL(p_attendance_type, '%');
285   BEGIN
286   	p_message_name := null;
287   	OPEN c_cop;
288   	FETCH c_cop INTO v_cop;
289   	IF (c_cop%NOTFOUND) THEN
290   		CLOSE c_cop;
291 		p_message_name := 'IGS_AD_COMBINATION_DOESNOT_EX';
292   		RETURN FALSE;
293   	END IF;
294   	CLOSE c_cop;
295   	RETURN TRUE;
296   EXCEPTION
297   	WHEN OTHERS THEN
298   		IF c_cop%ISOPEN THEN
299   			CLOSE c_cop;
300   		END IF;
301 		App_Exception.Raise_Exception;
302   END;
303   EXCEPTION
304   	WHEN OTHERS THEN
305 	    Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
306 	    FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SCFT.admp_val_scft_dtl');
307 	    IGS_GE_MSG_STACK.ADD;
308 		App_Exception.Raise_Exception;
309   END admp_val_scft_dtl;
310 END IGS_AD_VAL_SCFT;