DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_VAL_UFT

Source


1 PACKAGE BODY igs_fi_val_uft AS
2 /* $Header: IGSFI42B.pls 115.8 2003/10/28 05:57:53 uudayapr ship $ */
3 
4    -- uudayapr 14-oct-2003
5   -- AS part of the Enh#3117341 added cst_audit in function finp_val_uft_ins
6   -- and also modified the If Condition to allow the Audit as a valid
7   -- unit fee category.
8   -- As part of the bug# 2690024 removed the function crsp_val_uv_sys_sts
9   -- As part of the bug# 2690024 removed the function crsp_val_ucl_closed
10   -- As part of the bug# 2690024 removed the function crsp_val_uv_active
11   -- Ensure unit fee triggers can be created.
12   FUNCTION finp_val_uft_ins(
13   p_fee_type IN VARCHAR2 ,
14  p_message_name OUT NOCOPY VARCHAR2)
15   RETURN BOOLEAN AS
16   	gv_other_detail		VARCHAR2(255);
17   BEGIN	-- finp_val_uft_ins
18   	-- Validate IGS_FI_UNIT_FEE_TRG.IGS_FI_FEE_TYPE.s_fee_trigger_cat = IGS_PS_UNIT or COMPOSITE
19   	-- otherwise IGS_PS_UNIT fee triggers cannot be defined.
20   DECLARE
21   	CURSOR c_ft(
22   			cp_fee_type		IGS_FI_FEE_TYPE.fee_type%TYPE) IS
23   		SELECT	s_fee_trigger_cat
24   		FROM	IGS_FI_FEE_TYPE
25   		WHERE	fee_type = cp_fee_type;
26   	v_ft_rec		c_ft%ROWTYPE;
27   	cst_unit		CONSTANT VARCHAR2(10) := 'UNIT';
28   	cst_composite		CONSTANT VARCHAR2(10) := 'COMPOSITE';
29 	--Enh#3117341 added this for checking for AUDIT System fee trigger category.
30 	cst_audit               CONSTANT VARCHAR2(10) := 'AUDIT';
31   BEGIN
32   	-- Set the default message number
33   	p_message_name := null;
34   	-- Check parameters
35   	IF p_fee_type IS NULL THEN
36   		RETURN TRUE;
37   	END IF;
38   	-- Get the system fee trigger category of the fee_type.
39   	OPEN c_ft (p_fee_type);
40   	FETCH c_ft INTO v_ft_rec;
41   	IF c_ft%NOTFOUND THEN
42   		CLOSE c_ft;
43   		RETURN TRUE;
44   	END IF;
45   	CLOSE c_ft;
46 	--Enh# 3117341 Added 'AUDIT' also as a valid system fee trigger category for
47 	--creating the unit fee trigger category.
48   	IF v_ft_rec.s_fee_trigger_cat <> cst_unit      AND
49   	   v_ft_rec.s_fee_trigger_cat <> cst_composite AND
50            v_ft_rec.s_fee_trigger_cat <> cst_audit
51 		THEN
52   		p_message_name:= 'IGS_FI_UNIT_FEETRG_UNIT_COMPO';
53   		RETURN FALSE;
54   	END IF;
55   	-- Return the default value
56   	RETURN TRUE;
57   END;
58   END finp_val_uft_ins;
59   --
60   -- Validate IGS_PS_UNIT fee trigger can belong to a fee trigger group.
61   FUNCTION finp_val_uft_ftg(
62   p_fee_type IN IGS_FI_FEE_TYPE_ALL.fee_type%TYPE ,
63   p_fee_trigger_group_num IN NUMBER ,
64  p_message_name OUT NOCOPY VARCHAR2)
65   RETURN BOOLEAN AS
66   	gv_other_detail			VARCHAR2(255);
67   BEGIN 	-- finp_val_uft_ftg
68   	-- Validate IGS_FI_UNIT_FEE_TRG can belong to a IGS_FI_FEE_TRG_GRP
69   DECLARE
70   	CURSOR c_ft(
71   			cp_fee_type		IGS_FI_FEE_TYPE.fee_type%TYPE) IS
72   		SELECT	s_fee_trigger_cat
73   		FROM	IGS_FI_FEE_TYPE
74   		WHERE	fee_type = cp_fee_type;
75   	v_ft_rec		c_ft%ROWTYPE;
76   	cst_composite		CONSTANT VARCHAR2(10) := 'COMPOSITE';
77   BEGIN
78   	p_message_name := null;
79   	IF(p_fee_type IS NULL OR
80   		p_fee_trigger_group_num IS NULL) THEN
81   		RETURN TRUE;
82   	END IF;
83   	-- Get the system fee trigger category of the fee_type.
84   	OPEN c_ft (p_fee_type);
85   	FETCH c_ft INTO v_ft_rec;
86   	IF c_ft%NOTFOUND THEN
87   		CLOSE c_ft;
88   		RETURN TRUE;
89   	END IF;
90   	CLOSE c_ft;
91   	IF v_ft_rec.s_fee_trigger_cat <> cst_composite THEN
92   		p_message_name:= 'IGS_FI_UNIT_FEE_TRG_COMPOSITE';
93   		RETURN FALSE;
94   	END IF;
95   	RETURN TRUE;
96   END;
97   END finp_val_uft_ftg;
98   --
99   -- Ensure only one open IGS_FI_UNIT_FEE_TRG record exists.
100   FUNCTION finp_val_uft_open(
101   p_fee_cat IN IGS_FI_UNIT_FEE_TRG.fee_cat%TYPE ,
102   p_fee_cal_type IN IGS_FI_UNIT_FEE_TRG.fee_cal_type%TYPE ,
103   p_fee_ci_sequence_number IN NUMBER ,
104   p_fee_type IN IGS_FI_UNIT_FEE_TRG.fee_type%TYPE ,
105   p_unit_cd IN IGS_FI_UNIT_FEE_TRG.unit_cd%TYPE ,
106   p_sequence_number IN NUMBER ,
107   p_version_number IN IGS_FI_UNIT_FEE_TRG.version_number%TYPE ,
108   p_cal_type IN IGS_FI_UNIT_FEE_TRG.cal_type%TYPE ,
109   p_ci_sequence_number IN NUMBER ,
110   p_unit_class IN IGS_FI_UNIT_FEE_TRG.unit_class%TYPE ,
111   p_location_cd IN IGS_FI_UNIT_FEE_TRG.location_cd%TYPE ,
112   p_create_dt IN IGS_FI_UNIT_FEE_TRG.create_dt%TYPE ,
113   p_fee_trigger_group_number IN NUMBER ,
114  p_message_name OUT NOCOPY VARCHAR2)
115   RETURN BOOLEAN AS
116   	gv_other_detail		VARCHAR2(255);
117   BEGIN	-- finp_val_uft_open
118   	-- Validate that there are no other "open" IGS_FI_UNIT_FEE_TRG records for
119   	-- the nominated unit_cd details and the same parent IGS_FI_F_CAT_FEE_LBL.
120   DECLARE
121   	CURSOR c_uft IS
122   		SELECT	'x'
123   		FROM	IGS_FI_UNIT_FEE_TRG uft
124   		WHERE	uft.fee_cat			= p_fee_cat AND
125   			uft.fee_cal_type 		= p_fee_cal_type AND
126   			uft.fee_ci_sequence_number 	= p_fee_ci_sequence_number AND
127   			uft.fee_type			= p_fee_type AND
128   			uft.unit_cd			= p_unit_cd AND
129   			uft.sequence_number		<> NVL(p_sequence_number,0) AND
130   			NVL(uft.version_number,0)	= NVL(p_version_number,0) AND
131   			NVL(uft.cal_type,'NULL')	= NVL(p_cal_type,'NULL') AND
132   			NVL(uft.ci_sequence_number,0)	= NVL(p_ci_sequence_number,0) AND
133   			NVL(uft.location_cd,'NULL')	= NVL(p_location_cd,'NULL') AND
134   			NVL(uft.unit_class,'NULL') 	= NVL(p_unit_class,'NULL') AND
135   			uft.create_dt			<> p_create_dt AND
136   			NVL(uft.fee_trigger_group_number,0) = NVL(p_fee_trigger_group_number,0) AND
137   			uft.logical_delete_dt IS NULL;
138   	v_check 	CHAR;
139   BEGIN
140   	--- Set the default message number
141   	p_message_name := null;
142   	IF p_fee_cat IS NULL OR
143   			p_fee_cal_type 		 IS NULL OR
144   			p_fee_ci_sequence_number IS NULL OR
145   			p_fee_type 		 IS NULL OR
146   			p_unit_cd 		 IS NULL OR
147   			p_create_dt 		 IS NULL 	THEN
148   		RETURN TRUE;
149   	END IF;
150   	OPEN c_uft;
151   	FETCH c_uft INTO v_check;
152   	IF (c_uft%FOUND) THEN
153   		CLOSE c_uft;
154   		p_message_name:= 'IGS_GE_DUPLICATE_VALUE';
155   		RETURN FALSE;
156   	END IF;
157   	CLOSE c_uft;
158   	RETURN TRUE;
159   END;
160   END finp_val_uft_open;
161   --
162   -- Warn if no IGS_PS_UNIT offering option exists for the specified options.
163   FUNCTION finp_val_uft_uoo(
164   p_unit_cd IN VARCHAR2 ,
165   p_cal_type IN VARCHAR2 ,
166   p_ci_sequence_number IN NUMBER ,
167   p_location_cd IN VARCHAR2 ,
168   p_unit_class IN VARCHAR2 ,
169   p_message_name OUT NOCOPY VARCHAR2)
170   RETURN BOOLEAN AS
171   	gv_other_detail		VARCHAR2(255);
172   BEGIN
173   DECLARE
174   	v_dummy		VARCHAR2(1);
175   	CURSOR c_uoo IS
176   		SELECT	'X'
177   		FROM	IGS_PS_UNIT_OFR_OPT	uoo
178   		WHERE	uoo.unit_cd			= p_unit_cd AND
179   			(p_cal_type  IS NULL OR
180   			uoo.cal_type			= p_cal_type) AND
181   			(p_ci_sequence_number IS NULL OR
182   			(uoo.cal_type			= p_cal_type AND
183   			uoo.ci_sequence_number		= p_ci_sequence_number)) AND
184   			(p_location_cd  IS NULL OR
185   			uoo.location_cd			= p_location_cd) AND
186   			(p_unit_class  IS NULL OR
187   			uoo.unit_class			= p_unit_class);
188   BEGIN
189   	-- 1. Check parameters
190   	IF (p_unit_cd IS NULL) THEN
191   		p_message_name := null;
192   		RETURN TRUE;
193   	END IF;
194   	-- 2. Check for IGS_PS_UNIT_OFR_OPT records for the unit_cd,
195   	-- location_cd, unit_class and cal_type
196   	OPEN c_uoo;
197   	FETCH c_uoo INTO v_dummy;
198   	IF (c_uoo%NOTFOUND) THEN
199   		CLOSE c_uoo;
200   		p_message_name:= 'IGS_FI_UOO_NOT_EXISTS';
201   		RETURN FALSE;
202   	END IF;
203   	CLOSE c_uoo;
204   	p_message_name := null;
205   	RETURN TRUE;
206   EXCEPTION
207   	WHEN OTHERS THEN
208   		IF (c_uoo%ISOPEN) THEN
209   			CLOSE c_uoo;
210   		END IF;
211   		RAISE;
212   END;
213   END finp_val_uft_uoo;
214 
215 END igs_fi_val_uft;