DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_VAL_POSP

Source


1 PACKAGE BODY IGS_PS_VAL_POSp AS
2 /* $Header: IGSPS51B.pls 115.4 2002/11/29 03:06:23 nsidana ship $ */
3 
4    -- Validate the calendar type is categorised teaching and is not closed.
5   FUNCTION crsp_val_posp_cat(
6   p_cal_type IN IGS_CA_TYPE.cal_type%TYPE ,
7   p_message_name OUT NOCOPY VARCHAR2)
8   RETURN BOOLEAN AS
9   	gv_other_detail		VARCHAR2(255);
10   BEGIN	-- crsp_val_posp_cat
11   	-- Validate the cal_type is not closed and the s_cal_cat is set to
12   	-- 'TEACHING'.
13   DECLARE
14   	v_cat_closed_ind	IGS_CA_TYPE.closed_ind%TYPE;
15   	v_cat_s_cal_cat		IGS_CA_TYPE.s_cal_cat%TYPE;
16   	CURSOR c_cat IS
17   		SELECT		cat.closed_ind,
18   				cat.s_cal_cat
19   		FROM		IGS_CA_TYPE		cat
20   		WHERE		cat.cal_type 		= p_cal_type;
21   BEGIN
22   	IF p_cal_type IS NULL THEN
23   		p_message_name := null;
24   		RETURN TRUE;
25   	ELSE
26   		OPEN c_cat;
27   		FETCH c_cat INTO 	v_cat_closed_ind,
28   				 	v_cat_s_cal_cat;
29   		IF (c_cat%FOUND) THEN
30   			-- Check if the calendar type is closed
31   			IF v_cat_closed_ind = 'Y' THEN
32   				CLOSE c_cat;
33   				p_message_name:= 'IGS_CA_CALTYPE_CLOSED';
34   				RETURN FALSE;
35   			END IF;
36   			-- Check if the calendar type is of category 'TEACHING'
37   			IF v_cat_s_cal_cat <> 'TEACHING' THEN
38   				CLOSE c_cat;
39   				p_message_name:= 'IGS_PS_CALTYPE_TEACHING_CAL';
40   				RETURN FALSE;
41   			END IF;
42   		END IF;
43   		CLOSE c_cat;
44   	END IF;
45   	p_message_name := null;
46   	RETURN TRUE;
47   EXCEPTION
48   	WHEN OTHERS THEN
49   		IF (c_cat%ISOPEN) THEN
50   			CLOSE c_cat;
51   		END IF;
52   		RAISE;
53   END;
54   END crsp_val_posp_cat;
55   --
56   -- Validate future relationship between IGS_CA_TYPE and teach_cal_type.
57   FUNCTION crsp_val_posp_cir(
58   p_cal_type IN IGS_CA_TYPE.cal_type%TYPE ,
59   p_teach_cal_type IN IGS_CA_TYPE.cal_type%TYPE ,
60   p_message_name OUT NOCOPY VARCHAR2)
61   RETURN BOOLEAN AS
62   BEGIN 	-- crsp_val_posp_cir
63   	-- Warn the user if there isn't a relationship between future instances
64   	-- of the IGS_CA_TYPE and teach_cal_type, with the teaching calendar as the
65   	-- subordinate to the academic calendar.
66   DECLARE
67   	v_dummy			VARCHAR(1);
68   	CURSOR c_cir_ci IS
69   		SELECT	'X'
70   		FROM	IGS_CA_INST_REL	cir,
71   			IGS_CA_INST			ci_sub,
72   			IGS_CA_INST			ci_sup
73   		WHERE	cir.sub_cal_type		= p_teach_cal_type AND
74   			cir.sub_cal_type		= ci_sub.cal_type AND
75   			cir.sub_ci_sequence_number	= ci_sub.sequence_number AND
76   			ci_sub.end_dt			> SYSDATE AND
77   			cir.sup_cal_type		= p_cal_type AND
78   			cir.sup_cal_type		= ci_sup.cal_type AND
79   			cir.sup_ci_sequence_number	= ci_sup.sequence_number AND
80   			ci_sup.end_dt 			> SYSDATE;
81   BEGIN
82   	IF p_cal_type IS NULL OR
83   			p_teach_cal_type IS NULL THEN
84   		p_message_name := NULL;
85   		RETURN TRUE;
86   	ELSE
87   		-- Check for IGS_CA_INST_REL records where the p_teach_cal_type
88   		-- is the sub_cal_type and the p_cal_type is the sup_cal_type and the
89   		-- related calendar_instance records have an end date greater than todays
90   		-- date
91   		OPEN c_cir_ci;
92   		FETCH c_cir_ci INTO v_dummy;
93   		IF (c_cir_ci%NOTFOUND) THEN
94   			CLOSE c_cir_ci;
95   			p_message_name := 'IGS_PS_NO_FUTURE_CAL_INST_REL';
96   			RETURN FALSE;
97   		END IF;
98   		CLOSE c_cir_ci;
99   	END IF;
100   	p_message_name := NULL;
101   	RETURN TRUE;
102   EXCEPTION
103   	WHEN OTHERS THEN
104   		IF (c_cir_ci%ISOPEN) THEN
105   			CLOSE c_cir_ci;
106   		END IF;
107   		App_Exception.Raise_Exception;
108   END;
109   EXCEPTION
110   	WHEN OTHERS THEN
111 		Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
112                 Fnd_Message.Set_Token('NAME','IGS_PS_VAL_POSp.crsp_val_posp_cir');
113                 IGS_GE_MSG_STACK.ADD;
114 		App_Exception.Raise_Exception;
115   END crsp_val_posp_cir;
116   --
117   -- Validate pattern of study period record is unique.
118   FUNCTION crsp_val_posp_iu(
119   p_course_cd IN VARCHAR2 ,
120   p_version_number IN NUMBER ,
121   p_cal_type IN VARCHAR2 ,
122   p_pos_sequence_number IN NUMBER ,
123   p_sequence_number IN NUMBER ,
124   p_acad_period_num IN NUMBER ,
125   p_teach_cal_type IN VARCHAR2 ,
126   p_message_name OUT NOCOPY VARCHAR2)
127   RETURN BOOLEAN AS
128   BEGIN 	-- crsp_val_posp_iu
129   	-- Validate IGS_PS_PAT_STUDY_PRD records. More than one record cannot
130   	-- exist with the same academic period number and teaching calendar type
131   	-- for a parent IGS_PS_PAT_OF_STUDY.
132   DECLARE
133   	v_dummy			VARCHAR(1);
134   	CURSOR c_posp IS
135   		SELECT	'X'
136   		FROM	IGS_PS_PAT_STUDY_PRD		posp
137   		WHERE	posp.course_cd 			= p_course_cd AND
138   			posp.version_number		= p_version_number AND
139   			posp.cal_type			= p_cal_type AND
140   			posp.pos_sequence_number	= p_pos_sequence_number AND
141   			(p_sequence_number  IS NULL OR
142   			posp.sequence_number		<> p_sequence_number) AND
143   			posp.acad_period_num		= p_acad_period_num AND
144   			posp.teach_cal_type		= p_teach_cal_type;
145   BEGIN
146   	IF p_course_cd 				IS NULL OR
147   			p_version_number 	IS NULL OR
148   			p_cal_type 		IS NULL OR
149   			p_pos_sequence_number 	IS NULL OR
150   			p_acad_period_num 	IS NULL OR
151   			p_teach_cal_type 	IS NULL THEN
152   		p_message_name := NULL;
153   		RETURN TRUE;
154   	ELSE
155   		OPEN c_posp;
156   		FETCH c_posp INTO v_dummy;
157   		IF (c_posp%FOUND) THEN
158   			CLOSE c_posp;
159   			p_message_name := 'IGS_GE_RECORD_ALREADY_EXISTS';
160   			RETURN FALSE;
161   		END IF;
162   		CLOSE c_posp;
163   	END IF;
164   	p_message_name := NULL;
165   	RETURN TRUE;
166   EXCEPTION
167   	WHEN OTHERS THEN
168   		IF (c_posp%ISOPEN) THEN
169   			CLOSE c_posp;
170   		END IF;
171   		App_Exception.Raise_Exception;
172   END;
173   EXCEPTION
174   	WHEN OTHERS THEN
175 		Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXCEPTION');
176                 Fnd_Message.Set_Token('NAME','IGS_PS_VAL_POSp.crsp_val_posp_iu');
177                 IGS_GE_MSG_STACK.ADD;
178 		App_Exception.Raise_Exception;
179   END crsp_val_posp_iu;
180   --
181 END IGS_PS_VAL_POSp;