DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_ST_VAL_GDHC

Source


1 PACKAGE BODY IGS_ST_VAL_GDHC AS
2  /* $Header: IGSST07B.pls 115.4 2002/11/29 04:11:45 nsidana ship $ */
3  --
4   -- Ensure the start and end dates don't overlap with other records.
5   FUNCTION stap_val_gdhc_ovrlp(
6   p_govt_discipline_group_cd IN VARCHAR2 ,
7   p_start_dt IN DATE ,
8   p_end_dt IN DATE ,
9   p_message_name OUT NOCOPY VARCHAR2 )
10   RETURN BOOLEAN AS
11   BEGIN
12   DECLARE
13   	CURSOR  c_gdhc_rec IS
14   	SELECT	gdhc.start_dt,
15   		gdhc.end_dt
16   	FROM	IGS_FI_GV_DSP_HEC_CN gdhc
17   	WHERE	gdhc.govt_discipline_group_cd = p_govt_discipline_group_cd AND
18   		gdhc.start_dt <> p_start_dt;
19   BEGIN
20   	-- this module validates the IGS_FI_GV_DSP_HEC_CN table
21   	-- to ensure that for records with the same
22   	-- govt_discipline_group_cd and govt_hecs_cntrbtn_band that
23   	-- the data ranges don't overlap
24   	--- Set the default message number
25   	p_message_name := NULL;
26   	-- looping through the records validating for data overlaps
27   	-- do not validate against the record passed in
28   	FOR v_gdhc_rec IN c_gdhc_rec LOOP
29   		IF (v_gdhc_rec.end_dt IS NOT NULL) THEN
30   			IF (p_start_dt BETWEEN v_gdhc_rec.start_dt AND v_gdhc_rec.end_dt) THEN
31   				p_message_name := 'IGS_ST_ST_DT_BETW_ST_END_DATE';
32   				RETURN FALSE;
33   			END IF;
34   			IF (p_end_dt IS NOT NULL) THEN
35   				IF (p_end_dt BETWEEN v_gdhc_rec.start_dt AND v_gdhc_rec.end_dt) THEN
36   					p_message_name := 'IGS_ST_END_DT_BETW_ST_END_DT';
37   					RETURN FALSE;
38   				END IF;
39   				IF (p_start_dt <= v_gdhc_rec.start_dt AND
40   						p_end_dt >= v_gdhc_rec.end_dt) THEN
41   					p_message_name := 'IGS_ST_DT_OVERLAP_GROUP_CODE';
42   					RETURN FALSE;
43   				END IF;
44   			ELSE -- p_end_dt IS NULL
45   				IF (p_start_dt <= v_gdhc_rec.start_dt OR
46   						p_start_dt <= v_gdhc_rec.end_dt) THEN
47   					p_message_name := 'IGS_ST_OPEN_DT_RANGE_OVERLAPS';
48   					RETURN FALSE;
49   				END IF;
50   			END IF;
51   		ELSE
52   			IF (p_start_dt >= v_gdhc_rec.start_dt OR
53   					p_end_dt >= v_gdhc_rec.start_dt) THEN
54   				p_message_name := 'IGS_ST_DT_OVERLAP_WITH_ST_DT';
55   				RETURN FALSE;
56   			END IF;
57   		END IF;
58   	END LOOP;
59   	RETURN TRUE;
60   EXCEPTION
61   	WHEN OTHERS THEN
62 		FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
63 		FND_MESSAGE.SET_TOKEN('NAME','IGS_ST_VAL_GDHC.stap_val_gdhc_ovrlp');
64 		IGS_GE_MSG_STACK.ADD;
65                      App_Exception.Raise_Exception;
66   END;
67   END stap_val_gdhc_ovrlp;
68   --
69   --
70   -- Validate that only one record has an open end date.
71   FUNCTION stap_val_gdhc_open(
72   p_govt_discipline_group_cd IN VARCHAR2 ,
73   p_start_dt IN DATE ,
74   p_message_name OUT NOCOPY VARCHAR2 )
75   RETURN BOOLEAN AS
76   BEGIN
77   	-- this module validates the IGS_FI_GV_DSP_HEC_CN table
78   	-- to ensure that for records with the same
79   	-- govt_discipline_group_cd and govt_hecs_cntrbtn_band that
80   	-- only one record has a NULL end_dt
81   DECLARE
82   	v_start_dt		DATE;
83   	CURSOR 	c_gdhc_rec IS
84   	SELECT	gdhc.start_dt
85   	FROM	IGS_FI_GV_DSP_HEC_CN gdhc
86   	WHERE	gdhc.govt_discipline_group_cd = p_govt_discipline_group_cd AND
87   		gdhc.start_dt <> p_start_dt AND
88   		gdhc.end_dt IS NULL;
89   BEGIN
90   	-- set the default message number
91   	p_message_name := NULL;
92   	-- select all organisational units
93   	OPEN  c_gdhc_rec;
94   	FETCH c_gdhc_rec INTO v_start_dt;
95   	IF (c_gdhc_rec%NOTFOUND) THEN
96   		CLOSE c_gdhc_rec;
97   		RETURN TRUE;
98   	ELSE
99   		CLOSE c_gdhc_rec;
100   		p_message_name := 'IGS_ST_ENTER_END_DATE';
101   		RETURN FALSE;
102   	END IF;
103   	-- set the default return type
104   	RETURN TRUE;
105   EXCEPTION
106   	WHEN OTHERS THEN
107 		FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
108 		FND_MESSAGE.SET_TOKEN('NAME','IGS_ST_VAL_GDHC.stap_val_gdhc_open');
109 		IGS_GE_MSG_STACK.ADD;
110                      App_Exception.Raise_Exception;
111      END;
112   END stap_val_gdhc_open;
113   --
114   -- Ensure the govt discipline group id not closed.
115   FUNCTION stap_val_gdhc_gd(
116   p_govt_discipline_group_cd IN VARCHAR2 ,
117   p_message_name OUT NOCOPY VARCHAR2 )
118   RETURN BOOLEAN AS
119   BEGIN
120   DECLARE
121   	CURSOR c_gd IS
122   		SELECT	gd.closed_ind
123   		FROM	IGS_PS_GOVT_DSCP gd
124   		WHERE	gd.govt_discipline_group_cd = p_govt_discipline_group_cd;
125   	v_closed_ind		IGS_PS_GOVT_DSCP.closed_ind%TYPE;
126   BEGIN
127   	--- Validate the govt_discipline_group_cd in the IGS_FI_GV_DSP_HEC_CN is
128   	--- not closed.
129   	--- Set the message number and return false to indicate that the government
130   	--- discipline group is closed.
131   	--- Set the default message number
132   	p_message_name := NULL;
133   	OPEN c_gd;
134   	FETCH c_gd INTO v_closed_ind;
135   	IF c_gd%NOTFOUND THEN
136   		CLOSE c_gd;
137   		RETURN TRUE;
138   	END IF;
139   	CLOSE c_gd;
140   	IF v_closed_ind = 'Y' THEN
141   		p_message_name := 'IGS_FI_GOVTDISC_GRPCD_CLOSED' ;
142   		RETURN FALSE;
143   	END IF;
144   	--- Return the default value
145   	RETURN TRUE;
146   END;
147   EXCEPTION
148   	WHEN OTHERS THEN
149 		FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
150 		FND_MESSAGE.SET_TOKEN('NAME','IGS_ST_VAL_GDHC.stap_val_gdhc_gd');
151 		IGS_GE_MSG_STACK.ADD;
152                      App_Exception.Raise_Exception;
153       END stap_val_gdhc_gd;
154   --
155   -- Validate that end date is null or >= start date.
156   FUNCTION stap_val_gdhc_end_dt(
157   p_start_dt IN DATE ,
158   p_end_dt IN DATE ,
159   p_message_name OUT NOCOPY VARCHAR2 )
160   RETURN BOOLEAN AS
161   BEGIN
162   	-- this module validates the IGS_FI_GV_DSP_HEC_CN table
163   	-- to ensure that if the end_dt is not null, it is greater
164   	-- than or equal to the start_dt
165   DECLARE
166   BEGIN
167   	-- set the default message number
168   	p_message_name := NULL;
169   	IF (p_end_dt IS NOT NULL) THEN
170   		-- checking if the end_dt is less
171   		-- than the start_dt, and if it is,
172   		-- set the message number
173   		IF (p_end_dt < p_start_dt) THEN
174   			p_message_name := 'IGS_GE_END_DT_GE_ST_DATE';
175   			RETURN FALSE;
176   		END IF;
177   	END IF;
178   	-- set the default return type
179   	RETURN TRUE;
180   EXCEPTION
181   	WHEN OTHERS THEN
182 		FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
183 		FND_MESSAGE.SET_TOKEN('NAME','IGS_ST_VAL_GDHC.stap_val_gdhc_end_dt');
184 		IGS_GE_MSG_STACK.ADD;
185                      App_Exception.Raise_Exception;
186   END;
187   END stap_val_gdhc_end_dt;
188 END IGS_ST_VAL_GDHC;