1 PACKAGE BODY IGS_AD_VAL_SIT AS
2 /* $Header: IGSAD70B.pls 115.3 2002/11/28 21:39:46 nsidana ship $ */
3
4 --
5 -- Validate override amount type <> amount type
6 FUNCTION admp_val_trgt_amttyp(
7 p_s_amount_type IN VARCHAR2 ,
8 p_overrride_s_amount_type IN VARCHAR2 ,
9 p_message_name OUT NOCOPY VARCHAR2 )
10 RETURN BOOLEAN AS
11 BEGIN -- admp_val_trgt_amttyp
12 -- Description: This module validates that an intake target override
13 -- amount type is not equal to the intake target type
14 DECLARE
15 BEGIN
16 p_message_name := null;
17 IF p_overrride_s_amount_type IS NOT NULL THEN
18 IF p_s_amount_type = p_overrride_s_amount_type THEN
19 p_message_name := 'IGS_AD_AMT_CANNOTBE_EQUAL';
20 RETURN FALSE;
21 END IF;
22 END IF;
23 RETURN TRUE;
24 END;
25 EXCEPTION
26 WHEN OTHERS THEN
27 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
28 FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SIT.admp_val_trgt_amttyp');
29 IGS_GE_MSG_STACK.ADD;
30 App_Exception.Raise_Exception;
31 END admp_val_trgt_amttyp;
32 --
33 -- Validate if intake target type is closed.
34 FUNCTION admp_val_itt_closed(
35 p_intake_target_type IN VARCHAR2 ,
36 p_message_name OUT NOCOPY VARCHAR2 )
37 RETURN BOOLEAN AS
38 BEGIN -- admp_val_itt_closed
39 -- Description: This module checks if an IGS_AD_INTAK_TRG_TYP is closed.
40 DECLARE
41 v_itt_rec IGS_AD_INTAK_TRG_TYP.intake_target_type%TYPE;
42 CURSOR c_itt IS
43 SELECT itt.closed_ind
44 FROM IGS_AD_INTAK_TRG_TYP itt
45 WHERE itt.intake_target_type = p_intake_target_type;
46 BEGIN
47 p_message_name := null;
48 OPEN c_itt;
49 FETCH c_itt INTO v_itt_rec;
50 IF (c_itt%FOUND) THEN
51 IF (v_itt_rec = 'Y') THEN
52 CLOSE c_itt;
53 p_message_name := 'IGS_AD_INTAKE_TRGTTYPE_CLOSED';
54 RETURN FALSE;
55 END IF;
56 END IF;
57 CLOSE c_itt;
58 RETURN TRUE;
59 END;
60 EXCEPTION
61 WHEN OTHERS THEN
62 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
63 FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SIT.admp_val_itt_closed');
64 IGS_GE_MSG_STACK.ADD;
65 App_Exception.Raise_Exception;
66 END admp_val_itt_closed;
67 --
68 -- Validate target type amounts are in correct ranges.
69 FUNCTION admp_val_trgt_amt(
70 p_s_amount_type IN VARCHAR2 ,
71 p_target IN NUMBER ,
72 p_max_target IN NUMBER ,
73 p_message_name OUT NOCOPY VARCHAR2 )
74 RETURN BOOLEAN AS
75 BEGIN -- admp_val_trgt_amt
76 -- Description: This module performs several validations between
77 -- the amount type and the values of the target and max target fields.
78 DECLARE
79 BEGIN
80 p_message_name := null;
81 IF p_max_target IS NOT NULL THEN
82 IF p_s_amount_type = 'PERSON' AND
83 ((MOD (p_target, 0.5) <> 0) OR
84 (MOD (p_max_target, 0.5) <> 0)) THEN
85 p_message_name := 'IGS_AD_AMTTYPE_PRSN_INCR_0.5';
86 RETURN FALSE;
87 END IF;
88 IF p_s_amount_type = 'PERCENTAGE' AND
89 (p_target > 100 OR p_max_target > 100) THEN
90 p_message_name := 'IGS_AD_AMTTYPE_PRC_TRGT_LE100';
91 RETURN FALSE;
92 END IF;
93 IF p_max_target <= p_target THEN
94 p_message_name := 'IGS_AD_MAXIMUM_GT_TARGET';
95 RETURN FALSE;
96 END IF;
97 ELSE
98 IF p_s_amount_type = 'PERSON' AND
99 MOD (p_target, 0.5) <> 0 THEN
100 p_message_name := 'IGS_AD_AMTTYPE_PRSN_INCR_0.5';
101 RETURN FALSE;
102 END IF;
103 IF p_s_amount_type = 'PERCENTAGE' AND
104 p_target > 100 THEN
105 p_message_name := 'IGS_AD_AMTTYPE_PRC_TRGT_LE100';
106 RETURN FALSE;
107 END IF;
108 END IF;
109 RETURN TRUE;
110 END;
111 EXCEPTION
112 WHEN OTHERS THEN
113 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXP');
114 FND_MESSAGE.SET_TOKEN('NAME','IGS_AD_VAL_SIT.admp_val_trgt_amt');
115 IGS_GE_MSG_STACK.ADD;
116 App_Exception.Raise_Exception;
117 END admp_val_trgt_amt;
118 END IGS_AD_VAL_SIT;