DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_VAL_CRS_ADMPERD

Source


1 PACKAGE BODY IGS_AD_VAL_CRS_ADMPERD AS
2 /* $Header: IGSAD51B.pls 115.4 2003/01/03 06:57:13 rghosh ship $ */
3   -- Validate the admission application course version.
4   FUNCTION admp_val_coo_crv(
5     p_course_cd IN VARCHAR2 ,
6     p_version_number IN NUMBER ,
7     p_s_admission_process_type IN VARCHAR2 ,
8     p_offer_ind IN VARCHAR2 DEFAULT 'N',
9     p_message_name OUT NOCOPY VARCHAR2)
10   RETURN BOOLEAN IS
11   BEGIN	-- admp_val_coo_crv
12   	-- Validate the admission application course version.
13   	-- Validations are -
14   	-- * If the course version is nominated then the course status must be
15   	-- Active,
16   	--  however, if the course version is offered the course status must be Active
17   	-- * For all admission process types, with the exception of Re-Admission,
18   	--  the expiry date  of the course version must not be set.
19   	-- * If the admission process type is Non-Award then the course version must be
20   	--  a non-award course.
21   	-- * If the admission process type is Transfer then the course version must not
22   	--  be a generic course.
23   DECLARE
24   	CURSOR c_cvcsct (
25   		cp_course_cd		IGS_PS_VER.course_cd%TYPE,
26   		cp_version_number	IGS_PS_VER.version_number%TYPE) IS
27   		SELECT	cs.s_course_status,
28   			cv.expiry_dt,
29   			cv.generic_course_ind,
30   			ct.govt_course_type
31   		FROM	IGS_PS_VER	cv,
32   			IGS_PS_STAT	cs,
33   			IGS_PS_TYPE	ct
34   		WHERE	course_cd 	= cp_course_cd AND
35   			version_number 	= cp_version_number AND
36   			cv.course_status 	= cs.course_status AND
37   			cv.course_type 	= ct.course_type;
38   	v_cvcsct_rec		c_cvcsct%ROWTYPE;
39   	cst_active		CONSTANT VARCHAR2(10) := 'ACTIVE';
40 
41   BEGIN
42   	-- Set the default message number
43   	p_message_name := null;
44   	-- Retrieve the course version data
45   	OPEN c_cvcsct(
46   		p_course_cd,
47   		p_version_number);
48   	FETCH c_cvcsct INTO v_cvcsct_rec;
49   	IF c_cvcsct%NOTFOUND THEN
50   		CLOSE c_cvcsct;
51   		RETURN TRUE;
52   	END IF;
53   	CLOSE c_cvcsct;
54   	-- Validate the course status
55   	IF p_offer_ind = 'Y' THEN
56   		IF v_cvcsct_rec.s_course_status <> cst_active THEN
57 			p_message_name := 'IGS_AD_OFFER_PRG_MUSTBEACTIVE';
58   			RETURN FALSE;
59   		END IF;
60   	ELSE
61   		IF v_cvcsct_rec.s_course_status <> cst_active THEN
62 			p_message_name := 'IGS_AD_NOMINATED_PRG_ACTVPLAN';   --removed the planned status as per bug#2722785 --rghosh
63   			RETURN FALSE;
64   		END IF;
65   	END IF;
66   	-- Validate the course version against the admission process type
67   	IF p_s_admission_process_type <> 'RE-ADMIT' AND
68   			v_cvcsct_rec.expiry_dt IS NOT NULL THEN
69 		p_message_name := 'IGS_AD_PRCTYPE_PRG_EXPDT_SET';
70   		RETURN FALSE;
71   	END IF;
72   	IF p_s_admission_process_type = 'TRANSFER' AND
73   			v_cvcsct_rec.generic_course_ind = 'Y' THEN
74 		p_message_name := 'IGS_AD_PRG_TRANSFERED_CANNOT';
75   		RETURN FALSE;
76   	END IF;
77   	IF p_s_admission_process_type = 'NON-AWARD' AND
78   			v_cvcsct_rec.govt_course_type <> 50 THEN
79 		p_message_name := 'IGS_AD_PRCTYPE_NONAWARD';
80   		RETURN FALSE;
81   	END IF;
82   	-- Return the default value
83   	RETURN TRUE;
84   END;
85   END admp_val_coo_crv;
86   --
87   -- Validate the course offering option against the admission cat.
88   FUNCTION admp_val_coo_adm_cat(
89     p_course_cd IN VARCHAR2 ,
90     p_version_number IN NUMBER ,
91     p_cal_type IN VARCHAR2 ,
92     p_location_cd IN VARCHAR2 ,
93     p_attendance_mode IN VARCHAR2 ,
94     p_attendance_type IN VARCHAR2 ,
95     p_admission_cat IN VARCHAR2 ,
96     p_message_name OUT NOCOPY VARCHAR2)
97   RETURN BOOLEAN IS
98   BEGIN	-- admp_val_coo_adm_cat
99   	-- Validate that the course offering option of the admission application
100   	-- against the admission category.
101   DECLARE
102   	CURSOR c_cooac IS
103   		SELECT	location_cd,
104   			attendance_mode,
105   			attendance_type
106   		FROM	IGS_PS_OF_OPT_AD_CAT
107   		WHERE	course_cd 	= p_course_cd AND
108   			version_number 	= p_version_number AND
109   			cal_type 	= p_cal_type AND
110   			admission_cat 	= p_admission_cat;
111   	v_adm_cat_match		BOOLEAN DEFAULT FALSE;
112   BEGIN
113   	-- Set the default message number
114   	p_message_name := null;
115   	-- Course offering component of course offering option and admission
116   	-- category must be set.
117   	IF p_course_cd IS NULL OR
118   			p_version_number IS NULL OR
119   			p_cal_type IS NULL OR
120   			p_admission_cat IS NULL THEN
121 		p_message_name := 'IGS_AD_DETERMINE_VALID_PRG';
122   		RETURN FALSE;
123   	END IF;
124   	-- Validate the course offering option is mapped to the admission category
125   	FOR v_cooac_rec IN c_cooac LOOP
126   		-- Restrict the course offering option admission category records
127   		-- to match on optional input parameters.
128   		IF (p_location_cd IS NULL OR
129   				v_cooac_rec.location_cd = p_location_cd) AND
130   				(p_attendance_mode IS NULL OR
131   				v_cooac_rec.attendance_mode = p_attendance_mode) AND
132   				(p_attendance_type IS NULL OR
133   				v_cooac_rec.attendance_type = p_attendance_type) THEN
134   			-- There is an admission category match for the course offering option.
135   			v_adm_cat_match := TRUE;
136   		END IF;
137   	END LOOP;
138   	IF v_adm_cat_match THEN
139   		RETURN TRUE;
140   	END IF;
141   	-- If this point is reached, there must have been no admission
142   	-- category match for the course offering option.
143 	p_message_name := 'IGS_AD_PRGOFR_OPTION_NOTVALID';
144   	RETURN FALSE;
145   END;
146   END admp_val_coo_adm_cat;
147   --
148   -- Validate course application to an admission period.
149   FUNCTION admp_val_coo_admperd(
150     p_adm_cal_type IN VARCHAR2 ,
151     p_adm_ci_sequence_number IN NUMBER ,
152     p_admission_cat IN VARCHAR2 ,
153     p_s_admission_process_type IN VARCHAR2 ,
154     p_course_cd IN VARCHAR2 ,
155     p_version_number IN NUMBER ,
156     p_acad_cal_type IN VARCHAR2 ,
157     p_location_cd IN VARCHAR2 ,
158     p_attendance_mode IN VARCHAR2 ,
159     p_attendance_type IN VARCHAR2 ,
160     p_message_name OUT NOCOPY VARCHAR2)
161   RETURN BOOLEAN IS
162   BEGIN 	-- admp_val_coo_admperd
163   	-- Validate that the course offering option is available for entry in
164   	-- the admission period
165   DECLARE
166   	v_record_found		BOOLEAN DEFAULT FALSE;
167   	CURSOR c_apcoo_adm (
168   			cp_adm_cal_type			IGS_AD_PRD_PS_OF_OPT.adm_cal_type%TYPE,
169   			cp_adm_ci_sequence_number
170   							IGS_AD_PRD_PS_OF_OPT.adm_ci_sequence_number%TYPE,
171   			cp_admission_cat			IGS_AD_PRD_PS_OF_OPT.admission_cat%TYPE,
172   			cp_s_admission_process_type
173   							IGS_AD_PRD_PS_OF_OPT.s_admission_process_type%TYPE) IS
174   		SELECT	'x'
175   		FROM	IGS_AD_PRD_PS_OF_OPT apcoo
176   		WHERE	apcoo.adm_cal_type		= cp_adm_cal_type AND
177   			apcoo.adm_ci_sequence_number	= cp_adm_ci_sequence_number AND
178   			apcoo.admission_cat		= cp_admission_cat AND
179   			apcoo.s_admission_process_type	= cp_s_admission_process_type;
180   	CURSOR c_adm_perd_course_off_opt (
181   			cp_adm_cal_type			IGS_AD_PRD_PS_OF_OPT.adm_cal_type%TYPE,
182   			cp_adm_ci_sequence_number
183   							IGS_AD_PRD_PS_OF_OPT.adm_ci_sequence_number%TYPE,
184   			cp_admission_cat			IGS_AD_PRD_PS_OF_OPT.admission_cat%TYPE,
185   			cp_s_admission_process_type
186   							IGS_AD_PRD_PS_OF_OPT.s_admission_process_type%TYPE,
187   			cp_course_cd			IGS_PS_OFR_OPT.course_cd%TYPE,
188   			cp_version_number		IGS_PS_OFR_OPT.version_number%TYPE,
189   			cp_acad_cal_type		IGS_PS_OFR_OPT.cal_type%TYPE) IS
190   		SELECT	apcoo.location_cd,
191   			apcoo.attendance_mode,
192   			apcoo.attendance_type
193   		FROM	IGS_AD_PRD_PS_OF_OPT apcoo
194   		WHERE	apcoo.adm_cal_type		= cp_adm_cal_type AND
195   			apcoo.adm_ci_sequence_number	= cp_adm_ci_sequence_number AND
196   			apcoo.admission_cat		= cp_admission_cat AND
197   			apcoo.s_admission_process_type	= cp_s_admission_process_type AND
198   			apcoo.course_cd			= cp_course_cd AND
199   			apcoo.version_number		= cp_version_number AND
200   			apcoo.acad_cal_type		= cp_acad_cal_type;
201   BEGIN
202   	p_message_name := null;
203   	-- If there are no adm_perd_course_off_option for the admission period
204   	-- then return TRUE
205   	FOR v_apcoo_adm_rec IN c_apcoo_adm(
206   					p_adm_cal_type,
207   					p_adm_ci_sequence_number,
208   					p_admission_cat,
209   					p_s_admission_process_type) LOOP
210   		v_record_found := TRUE;
211   	END LOOP;
212   	IF(v_record_found = FALSE) THEN
213   		p_message_name := null;
214   		RETURN TRUE;
215   	ELSE
216   		v_record_found := FALSE;
217   	END IF;
218   	-- Get course offering options for the admission period and course
219   	FOR v_adm_perd_course_off_opt_rec IN c_adm_perd_course_off_opt(
220   								p_adm_cal_type,
221   								p_adm_ci_sequence_number,
222   								p_admission_cat,
223   								p_s_admission_process_type,
224   								p_course_cd,
225   								p_version_number,
226   								p_acad_cal_type) LOOP
227   		v_record_found := TRUE;
228   		IF(v_adm_perd_course_off_opt_rec.location_cd IS NULL) THEN
229   			IF(v_adm_perd_course_off_opt_rec.attendance_mode IS NULL) THEN
230   				IF(v_adm_perd_course_off_opt_rec.attendance_type IS NULL OR
231   						(v_adm_perd_course_off_opt_rec.attendance_type = p_attendance_type)) THEN
232   					-- Valid match
233   					RETURN TRUE;
234   				END IF;
235   			ELSE
236   				IF(v_adm_perd_course_off_opt_rec.attendance_mode = p_attendance_mode AND
237   						(v_adm_perd_course_off_opt_rec.attendance_type IS NULL OR
238   						 v_adm_perd_course_off_opt_rec.attendance_type = p_attendance_type)) THEN
239   					-- Valid match
240   					RETURN TRUE;
241   				END IF;
242   			END IF;
243   		ELSE
244   			IF((v_adm_perd_course_off_opt_rec.location_cd = p_location_cd) AND
245   					(v_adm_perd_course_off_opt_rec.attendance_mode IS NULL OR
246   					 v_adm_perd_course_off_opt_rec.attendance_mode = p_attendance_mode) AND
247   					(v_adm_perd_course_off_opt_rec.attendance_type IS NULL OR
248   					 v_adm_perd_course_off_opt_rec.attendance_type = p_attendance_type)) THEN
249   				-- Valid match
250   				RETURN TRUE;
251   			END IF;
252   		END IF;
253   	END LOOP;
254   	IF(v_record_found = FALSE) THEN
255   		-- This course must not be valid
256 		p_message_name := 'IGS_AD_PRGOFR_NO_ENTRY_POINT';
257   		RETURN FALSE;
258   	END IF;
259   	-- No match
260 	p_message_name := 'IGS_AD_PRGOFR_NO_ENTRY_POINT';
261   	RETURN FALSE;
262   END;
263   END admp_val_coo_admperd;
264 END IGS_AD_VAL_CRS_ADMPERD;