DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_VAL_UAPI

Source


1 PACKAGE BODY IGS_AS_VAL_UAPI AS
2 /* $Header: IGSAS36B.pls 115.5 2002/11/28 22:48:17 nsidana ship $ */
3   -- Val IGS_PS_UNIT offering option restrictions match at pattern and item level.
4   FUNCTION ASSP_VAL_UAPI_UOO(
5   p_unit_cd IN VARCHAR2 ,
6   p_version_number IN NUMBER ,
7   p_cal_type IN VARCHAR2 ,
8   p_ci_sequence_number IN NUMBER ,
9   p_ass_pattern_id IN NUMBER ,
10   p_ass_id IN NUMBER ,
11   p_uai_sequence_number IN NUMBER ,
12   p_message_name OUT NOCOPY VARCHAR2)
13   RETURN BOOLEAN IS
14   	gv_other_detail		VARCHAR2(255);
15   BEGIN	-- assp_val_uapi_uoo
16   	-- This module validate that the IGS_AS_ASSESSMNT_ITM being assigned to the
17   	-- IGS_AS_UNT_PATRN_ITM is valid for the IGS_PS_UNIT offering options that the
18   	-- IGS_AS_UNTAS_PATTERN applies too. That is, the IGS_AD_LOCATION, mode and
19   	-- class must be identical.
20   DECLARE
21   	cst_null	CONSTANT	VARCHAR2(4) := 'NULL';
22   	v_uap_location_cd		IGS_AS_UNTAS_PATTERN.location_cd%TYPE;
23   	v_uap_unit_class		IGS_AS_UNTAS_PATTERN.unit_class%TYPE;
24   	v_uap_unit_mode			IGS_AS_UNTAS_PATTERN.unit_mode%TYPE;
25   	v_uai_location_cd		IGS_AS_UNITASS_ITEM.location_cd%TYPE;
26   	v_uai_unit_class		IGS_AS_UNITASS_ITEM.unit_class%TYPE;
27   	v_uai_unit_mode			IGS_AS_UNITASS_ITEM.unit_mode%TYPE;
28   	CURSOR	c_uap IS
29   		SELECT 	uap.location_cd,
30   			uap.unit_class,
31   		      uap.unit_mode
32   		FROM	IGS_AS_UNTAS_PATTERN uap
33   		WHERE	uap.ass_pattern_id = p_ass_pattern_id;
34   	CURSOR	c_uai IS
35   		SELECT 	uai.location_cd,
36   			uai.unit_class,
37   		      uai.unit_mode
38   		FROM	IGS_AS_UNITASS_ITEM uai
39   		WHERE	uai.unit_cd 		= p_unit_cd 		AND
40   			uai.version_number 	= p_version_number 	AND
41   			uai.cal_type 		= p_cal_type 		AND
42   			uai.ci_sequence_number 	= p_ci_sequence_number 	AND
43   			uai.ass_id 		= p_ass_id 		AND
44   			uai.sequence_number 	= p_uai_sequence_number;
45   BEGIN
46   	OPEN c_uap;
47   	FETCH c_uap INTO 	v_uap_location_cd,
48   				v_uap_unit_class,
49   				v_uap_unit_mode;
50   	IF (c_uap%NOTFOUND) THEN
51   		CLOSE c_uap;
52   		RAISE NO_DATA_FOUND;
53   	END IF;
54   	CLOSE c_uap;
55   	OPEN c_uai;
56   	FETCH c_uai INTO 	v_uai_location_cd,
57   				v_uai_unit_class,
58   				v_uai_unit_mode;
59   	IF (c_uai%NOTFOUND) THEN
60   		CLOSE c_uai;
61   		RAISE NO_DATA_FOUND;
62   	END IF;
63   	CLOSE c_uai;
64   	IF (NVL(v_uai_location_cd, cst_null) <> NVL(v_uap_location_cd, cst_null)) OR
65   			(NVL(v_uai_unit_class, cst_null) <> NVL(v_uap_unit_class, cst_null)) OR
66    			(NVL(v_uai_unit_mode, cst_null) <> NVL(v_uap_unit_mode, cst_null)) THEN
67   		p_message_name := 'IGS_AS_LOCCD_UNITCLASS_UNITMO';
68   		RETURN FALSE;
69   	END IF;
70   	 p_message_name := null;
71   	RETURN TRUE;
72   EXCEPTION
73   	WHEN OTHERS THEN
74   		IF (c_uai%ISOPEN) THEN
75   			CLOSE c_uai;
76   		END IF;
77   		IF (c_uap%ISOPEN) THEN
78   			CLOSE c_uap;
79   		END IF;
80   		RAISE;
81   END;
82   EXCEPTION
83   	WHEN OTHERS THEN
84   	 Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
85          Fnd_Message.Set_Token('NAME','IGS_AS_VAL_UAPI.ASSP_VAL_UAPI_UOO');
86          Igs_Ge_Msg_Stack.Add;
87        App_Exception.Raise_Exception;
88   END assp_val_uapi_uoo;
89   --
90   -- Validate the to apportionment percentage does not exceed 100 for uap.
91   FUNCTION ASSP_VAL_UAPI_AP(
92   p_unit_cd IN VARCHAR2 ,
93   p_version_number IN NUMBER ,
94   p_cal_type IN VARCHAR2 ,
95   p_ci_sequence_number IN NUMBER ,
96   p_ass_pattern_id IN NUMBER ,
97   p_message_name OUT NOCOPY VARCHAR2)
98   RETURN BOOLEAN IS
99   	gv_other_detail		VARCHAR2(255);
100   BEGIN	-- assp_val_uapi_ap
101   DECLARE
102   	v_total_apportionment_percent	NUMBER;
103   	CURSOR c_uapi IS
104   	SELECT	NVL(SUM(uapi.apportionment_percentage), 0)
105   	FROM	IGS_AS_UNT_PATRN_ITM uapi
106   	WHERE	uapi.unit_cd		= p_unit_cd 		AND
107   		uapi.version_number	= p_version_number	AND
108   		uapi.cal_type		= p_cal_type		AND
109   		uapi.ci_sequence_number	= p_ci_sequence_number	AND
110   		uapi.ass_pattern_id	= p_ass_pattern_id;
111   BEGIN
112   	-- Set the default message number
113   	 p_message_name := null;
114   	-- Cursor handling
115   	OPEN c_uapi;
116   	FETCH c_uapi INTO v_total_apportionment_percent;
117   	IF c_uapi %NOTFOUND THEN
118   		CLOSE c_uapi;
119   		RETURN TRUE;
120   	END IF;
121   	CLOSE c_uapi;
122   	IF v_total_apportionment_percent > 100.00 THEN
123   		--p_message_name := 'IGS_GR_SPECIFY_PRXY_AWD_PERS';
124   		p_message_name := 'IGS_AS_PERC_APPORTION_EX_100';
125   		RETURN FALSE;
126   	END IF;
127   	-- Return the default value
128   	RETURN TRUE;
129   EXCEPTION
130   	WHEN OTHERS THEN
131   		IF c_uapi %ISOPEN THEN
132   			CLOSE c_uapi;
133   		END IF;
134   		RAISE;
135   END;
136   EXCEPTION
137   	WHEN OTHERS THEN
138   	 Fnd_Message.Set_Name('IGS', 'IGS_GE_UNHANDLED_EXP');
139          Fnd_Message.Set_Token('NAME','IGS_AS_VAL_UAPI.IGS_AS_VAL_UAPI');
140          Igs_Ge_Msg_Stack.Add;
141        App_Exception.Raise_Exception;
142   END assp_val_uapi_ap;
143 END IGS_AS_VAL_UAPI;