DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_VAL_ERR

Source


1 PACKAGE BODY IGS_FI_VAL_ERR AS
2 /* $Header: IGSFI21B.pls 115.3 2002/11/29 00:19:01 nsidana ship $ */
3   --
4   -- Ensure elements range rate can be created.
5   FUNCTION finp_val_err_create(
6   p_fee_type IN VARCHAR2 ,
7   p_fee_cal_type IN VARCHAR2 ,
8   p_fee_ci_sequence_number IN NUMBER ,
9   p_s_relation_type IN VARCHAR2 ,
10   p_fee_cat IN VARCHAR2 ,
11   p_range_number IN NUMBER ,
12   p_rate_number IN NUMBER ,
13   p_message_name OUT NOCOPY VARCHAR2 )
14   RETURN BOOLEAN AS
15   	gv_other_detail		VARCHAR2(255);
16   BEGIN	-- finp_val_err_create
17   	-- Validate that the IGS_FI_ELM_RANGE_RT record can be created.
18   	-- Unable to be created if the IGS_FI_ELM_RANGE or IGS_FI_FEE_AS_RATE
19   	-- records it is based on, are logically deleted.
20   DECLARE
21   	CURSOR c_er IS
22   		SELECT	'x'
23    		FROM	IGS_FI_ELM_RANGE er
24   		WHERE 	er.fee_type 			= p_fee_type 	AND
25   		 	er.fee_cal_type 		= p_fee_cal_type 		AND
26    			er.fee_ci_sequence_number 	= p_fee_ci_sequence_number AND
27   		 	er.s_relation_type 		= p_s_relation_type 	AND
28   		 	NVL(er.fee_cat, 'NULL') 	= NVL(p_fee_cat, 'NULL') 	AND
29   		 	er.range_number 		= p_range_number 		AND
30    			er.logical_delete_dt 		IS NOT NULL;
31   	CURSOR c_far IS
32   		SELECT	'x'
33   		FROM	IGS_FI_FEE_AS_RATE far
34   		WHERE	far.fee_type 			= p_fee_type 			AND
35   			far.fee_cal_type 		= p_fee_cal_type 		AND
36   			far.fee_ci_sequence_number 	= p_fee_ci_sequence_number 	AND
37   			far.s_relation_type 		= p_s_relation_type 		AND
38   			NVL(far.fee_cat, 'NULL') 	= NVL(p_fee_cat, 'NULL') 	AND
39   			far.rate_number 		= p_rate_number 		AND
40   			far.logical_delete_dt 		IS NOT NULL;
41   	v_far_exists		VARCHAR2(1);
42   	v_er_exists		VARCHAR2(1);
43   BEGIN
44   	-- Set the default message number
45   	p_message_name := Null;
46   	-- 1. Check parameters :
47   	IF p_fee_type IS NULL OR
48   			p_fee_cal_type IS NULL OR
49   			p_fee_ci_sequence_number IS NULL OR
50   			p_s_relation_type IS NULL OR
51   			p_range_number IS NULL OR
52   			p_rate_number IS NULL THEN
53   		RETURN TRUE;
54   	END IF;
55   	-- 2. Check that the parent IGS_FI_ELM_RANGE record is not logically deleted
56   	OPEN c_er;
57   	FETCH c_er INTO v_er_exists;
58   	IF c_er%FOUND THEN
59   		CLOSE c_er;
60   		p_message_name := 'IGS_FI_ELERNG_RATE_NOTCREATED';
61   		RETURN FALSE;
62   	END IF;
63   	CLOSE c_er;
64   	-- 3. Check that the parent IGS_FI_FEE_AS_RATE record is not logically deleted
65   	OPEN c_far;
66   	FETCH c_far INTO v_far_exists;
67   	IF c_far%FOUND THEN
68   		CLOSE c_far;
69   		p_message_name := 'IGS_FI_ELERNG_RATE_FEEASS_RAT';
70   		RETURN FALSE;
71   	END IF;
72   	CLOSE c_far;
73   	-- 4. Return no error
74   	RETURN TRUE;
75   EXCEPTION
76   	WHEN OTHERS THEN
77   		IF c_er%ISOPEN THEN
78   			CLOSE c_er;
79   		END IF;
80   		IF c_far%ISOPEN THEN
81   			CLOSE c_far;
82   		END IF;
83   		RAISE;
84   END;
85   END finp_val_err_create;
86   --
87   -- Ensure only one elements range rate is active.
88   FUNCTION finp_val_err_active(
89   p_fee_type IN VARCHAR2 ,
90   p_fee_cal_type IN VARCHAR2 ,
91   p_fee_ci_sequence_number IN NUMBER ,
92   p_fee_cat IN VARCHAR2 ,
93   p_range_number IN NUMBER ,
94   p_rate_number IN NUMBER ,
95   p_s_relation_type IN VARCHAR2 ,
96   p_create_dt IN DATE ,
97   p_message_name OUT NOCOPY VARCHAR2 )
98   RETURN BOOLEAN AS
99   	gv_other_detail		VARCHAR2(255);
100   BEGIN	-- finp_val_err_active
101   	-- Validate that there are no other "open-ended" element_range_rate records
102   	-- for the nominated IGS_FI_ELM_RANGE record
103   DECLARE
104   	v_err_exists	CHAR;
105   	v_ret_val	BOOLEAN	DEFAULT TRUE;
106   	CURSOR	c_err IS
107   		SELECT	'x'
108   		FROM	IGS_FI_ELM_RANGE_RT	err
109   		WHERE	err.fee_type		= p_fee_type		AND
110   			err.fee_cal_type	= p_fee_cal_type	AND
111   			err.fee_ci_sequence_number = p_fee_ci_sequence_number AND
112   			err.s_relation_type	= p_s_relation_type	AND
113   			NVL(err.fee_cat, 'NULL')= NVL(p_fee_cat, 'NULL')AND
114   			err.range_number	= p_range_number	AND
115   			err.rate_number = p_rate_number AND
116   			err.create_dt 		<> p_create_dt		AND
117   			err.logical_delete_dt	IS NULL;
118   BEGIN
119   	p_message_name := Null;
120   	-- Check parameters.
121   	IF (	p_fee_type			IS NULL	OR
122   		p_fee_cal_type			IS NULL	OR
123   		p_fee_ci_sequence_number	IS NULL	OR
124   		p_range_number			IS NULL	OR
125   		p_rate_number			IS NULL    OR
126   		p_s_relation_type			IS NULL	OR
127   		p_create_dt			IS NULL)	THEN
128   		RETURN TRUE;
129   	END IF;
130   	OPEN c_err;
131   	FETCH c_err INTO v_err_exists;
132   	IF (c_err%FOUND) THEN
133   		p_message_name := 'IGS_FI_ELERNG_RATE_ACTIVE';
134   		v_ret_val := FALSE;
135   	END IF;
136   	CLOSE c_err;
137   	RETURN v_ret_val;
138   END;
139   END finp_val_err_active;
140   --
141   -- Ensure elements range rate can be created.
142   FUNCTION finp_val_err_ins(
143   p_fee_type IN VARCHAR2 ,
144   p_fee_cal_type IN VARCHAR2 ,
145   p_fee_ci_sequence_number IN NUMBER ,
146   p_s_relation_type IN VARCHAR2 ,
147   p_rate_number IN NUMBER ,
148   p_message_name OUT NOCOPY VARCHAR2 )
149   RETURN BOOLEAN AS
150   	gv_other_detail		VARCHAR2(255);
151   BEGIN	-- finp_val_err_ins
152   	-- validate IGS_FI_ELM_RANGE_RT records can only be matched to a IGS_FI_FEE_AS_RATE
153   	-- defined at
154   	-- the same level as the IGS_FI_ELM_RANGE on which it is based
155   DECLARE
156   	CURSOR c_far IS
157   		SELECT	far.rate_number
158   		FROM	IGS_FI_FEE_AS_RATE far
159   		WHERE	far.fee_type 	 	= p_fee_type AND
160   			far.fee_cal_type 	= p_fee_cal_type AND
161   			far.fee_ci_sequence_number = p_fee_ci_sequence_number AND
162   			far.s_relation_type 	= p_s_relation_type AND
163   			far.rate_number 	= p_rate_number AND
164   			far.logical_delete_dt 	IS NULL;
165   	v_rate_number	IGS_FI_ELM_RANGE_RT.rate_number%TYPE;
166   BEGIN
167   	--- Set the default message number
168   	p_message_name := Null;
169   	IF 	p_fee_type 		IS NULL OR
170   		p_fee_cal_type 		IS NULL OR
171   		p_fee_ci_sequence_number 	IS NULL OR
172   		p_s_relation_type 		IS NULL OR
173   		p_rate_number 		IS NULL 		THEN
174   		RETURN TRUE;
175   	END IF;
176   	OPEN c_far;
177   	FETCH c_far INTO v_rate_number;
178   	IF (c_far%NOTFOUND) THEN
179   		p_message_name := 'IGS_FI_FEEASSRATE_NOT_DENF';
180   		CLOSE c_far;
181   		RETURN FALSE;
182   	END IF;
183   	CLOSE c_far;
184   	RETURN TRUE;
185   END;
186   END finp_val_err_ins;
187 END IGS_FI_VAL_ERR;