DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_VAL_GS

Source


1 PACKAGE BODY IGS_AS_VAL_GS AS
2 /* $Header: IGSAS23B.pls 115.4 2002/11/28 22:45:11 nsidana ship $ */
3   -------------------------------------------------------------------------------------------
4   --Change History:
5   --Who         When            What
6   --smadathi    27-AUG-2001     Bug No. 1956374 .The function genp_val_strt_end_dt removed
7   -------------------------------------------------------------------------------------------
8   --
9   -- Validate for one open version of grading schema
10   FUNCTION assp_val_gs_one_open(
11   p_grading_schema_cd IN IGS_AS_GRD_SCHEMA.grading_schema_cd%TYPE ,
12   p_version_number IN IGS_AS_GRD_SCHEMA.version_number%TYPE ,
13   p_message_name OUT NOCOPY varchar2 )
14   RETURN BOOLEAN IS
15   	gv_other_detail		VARCHAR2(255);
16   BEGIN
17   DECLARE
18   	CURSOR c_gs_count(
19   			cp_grading_schema_cd		IGS_AS_GRD_SCHEMA.grading_schema_cd%TYPE,
20   			cp_version_number		IGS_AS_GRD_SCHEMA.version_number%TYPE) IS
21   		SELECT 	COUNT(*)
22   		FROM 	IGS_AS_GRD_SCHEMA
23   		WHERE 	grading_schema_cd = cp_grading_schema_cd AND
24   			version_number <> cp_version_number AND
25   			end_dt IS NULL;
26   	v_gs_count		   	NUMBER;
27   BEGIN
28   	-- Validate for one open version of a grading schema.
29   	-- Ensure that only one version of a grading schema is open, otherwise
30   	-- generate an error message.
31   	p_message_name := null;
32   	v_gs_count := 0;
33   	OPEN c_gs_count(
34   			p_grading_schema_cd,
35   			p_version_number);
36   	FETCH c_gs_count INTO v_gs_count;
37   	IF c_gs_count%NOTFOUND THEN
38   		CLOSE c_gs_count;
39   		RETURN TRUE;
40   	END IF;
41   	CLOSE c_gs_count;
42   	IF v_gs_count > 0 THEN
43   		p_message_name := 'IGS_AS_MULTIPLE_VER_GRDSCHEMA';
44   		RETURN FALSE;
45   	END IF;
46   	-- Successful completion
47   	RETURN TRUE;
48   END;
49   EXCEPTION
50   	WHEN OTHERS THEN
51 	       Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
52 	       FND_MESSAGE.SET_TOKEN('NAME','IGS_AS_VAL_GS.assp_val_gs_one_open');
53 	       IGS_GE_MSG_STACK.ADD;
54        	       App_Exception.Raise_Exception;
55   END assp_val_gs_one_open;
56   --
57   -- Validate for overlapping dates for grading schemas
58   FUNCTION assp_val_gs_ovrlp(
59   p_grading_schema_cd IN IGS_AS_GRD_SCHEMA.grading_schema_cd%TYPE ,
60   p_version_number IN IGS_AS_GRD_SCHEMA.version_number%TYPE ,
61   p_start_dt IN IGS_AS_GRD_SCHEMA.start_dt%TYPE ,
62   p_end_dt IN IGS_AS_GRD_SCHEMA.end_dt%TYPE ,
63   p_message_name OUT NOCOPY varchar2 )
64   RETURN BOOLEAN IS
65     	gv_other_detail		VARCHAR2(255);
66     BEGIN
67     DECLARE
68     	CURSOR c_gs IS
69     		SELECT	start_dt,
70     			NVL(end_dt, IGS_GE_DATE.IGSDATE('9999/01/01'))
71     		FROM	IGS_AS_GRD_SCHEMA
72     		WHERE	grading_schema_cd = p_grading_schema_cd AND
73     			version_number <> p_version_number;
74     	v_gs_rec			c_gs%ROWTYPE;
75     	v_error_flag		BOOLEAN;
76   	v_start_dt	IGS_AS_GRD_SCHEMA.start_dt%TYPE;
77   	v_end_dt	IGS_AS_GRD_SCHEMA.end_dt%TYPE;
78   	v_p_end_dt	IGS_AS_GRD_SCHEMA.end_dt%TYPE;
79   BEGIN
80   	p_message_name := null;
81   	-- set p_end_dt to a high date if null
82   	v_p_end_dt := NVL(p_end_dt, IGS_GE_DATE.IGSDATE('9999/01/01'));
83   	OPEN c_gs;
84   	-- Validation will fail if any of the following are true
85   	LOOP
86   		EXIT WHEN (c_gs%NOTFOUND);
87   		FETCH c_gs INTO v_start_dt,
88   				v_end_dt;
89   		-- (a)  The current start date is between an existing date range.
90   		IF (p_start_dt >= v_start_dt AND
91   				p_start_dt <= v_end_dt) THEN
92   			CLOSE c_gs;
93   			p_message_name := 'IGS_AS_DO_STDT_EXIST_DT_RANGE';
94   			RETURN FALSE;
95   		END IF;
96   		-- (b)  The current end date is between an existing date range.
97   		IF (v_p_end_dt >= v_start_dt AND
98   				v_p_end_dt <= v_end_dt) THEN
99   			CLOSE c_gs;
100   			p_message_name := 'IGS_AS_DO_ENDT_EXIST_DT_RANGE';
101   			RETURN FALSE;
102   		END IF;
103   		-- (c)  The current dates overlap an entire existing date range.
104   		IF (p_start_dt <= v_start_dt AND
105   				v_p_end_dt >= v_end_dt) THEN
106   			CLOSE c_gs;
107   			p_message_name := 'IGS_AS_DO_DATE_OVERLAP_DTRANG';
108   			Return FALSE;
109   		END IF;
110   	END LOOP;
111   	CLOSE c_gs;
112   	RETURN TRUE;
113   END;
114   EXCEPTION
115   	WHEN OTHERS THEN
116 	       Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
117        	       FND_MESSAGE.SET_TOKEN('NAME','IGS_AS_VAL_GS.assp_val_gs_ovrlp');
118 	       IGS_GE_MSG_STACK.ADD;
119 	       App_Exception.Raise_Exception;
120   END assp_val_gs_ovrlp;
121   --
122 
123 END IGS_AS_VAL_GS;