1 PACKAGE BODY IGS_EN_VAL_PDI AS
2 /* $Header: IGSEN52B.pls 115.3 2002/11/29 00:02:47 nsidana ship $ */
3 --
4 -- To validate disability type of IGS_PE_PERSON disability record
5 FUNCTION ENRP_VAL_PDI_DIT(
6 p_person_id IN NUMBER ,
7 p_message_name OUT NOCOPY VARCHAR2)
8 RETURN BOOLEAN AS
9
10 BEGIN -- enrp_val_pdi_dit
11 DECLARE
12 cst_none CONSTANT VARCHAR2(10) := 'NONE';
13 CURSOR c_pdi IS
14 SELECT 'x'
15 FROM IGS_PE_PERS_DISABLTY pdi,
16 IGS_AD_DISBL_TYPE dit
17 WHERE pdi.person_id = p_person_id AND
18 dit.disability_type = pdi.disability_type AND
19 dit.govt_disability_type = cst_NONE AND
20 EXISTS (
21 SELECT 'x'
22 FROM IGS_PE_PERS_DISABLTY pdi1,
23 IGS_AD_DISBL_TYPE dit1
24 WHERE pdi1.person_id = p_person_id AND
25 dit1.disability_type = pdi1.disability_type AND
26 dit1.govt_disability_type <> cst_NONE
27 );
28 v_flag VARCHAR2(1);
29 BEGIN
30 p_message_name := NULL;
31 OPEN c_pdi;
32 FETCH c_pdi INTO v_flag;
33 IF c_pdi%FOUND THEN
34 CLOSE c_pdi;
35 p_message_name := 'IGS_EN_PRSN_NOTHAVE_DIABREC';
36 RETURN FALSE;
37 END IF;
38 CLOSE c_pdi;
39 RETURN TRUE;
40 EXCEPTION
41 WHEN OTHERS THEN
42 IF (c_pdi%ISOPEN) THEN
43 CLOSE c_pdi;
44 END IF;
45 RAISE;
46 END;
47 EXCEPTION
48 WHEN OTHERS THEN
49 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXP');
50 FND_MESSAGE.SET_TOKEN('NAME', 'IGS_EN_VAL_PDI.enrp_val_pdi_dit');
51 IGS_GE_MSG_STACK.ADD;
52 App_Exception.Raise_Exception;
53
54
55 END enrp_val_pdi_dit;
56 --
57 -- To validate the IGS_PE_PERSON disability contact indicator
58 FUNCTION ENRP_VAL_PD_CONTACT(
59 p_disability_type IN VARCHAR2 ,
60 p_contact_ind IN VARCHAR2 ,
61 p_message_name OUT NOCOPY VARCHAR2)
62 RETURN BOOLEAN AS
63
64 BEGIN -- enrp_val_pd_contact
65 -- Validate the IGS_PE_PERSON disability contact indicator
66 -- against the disability type being recorded.
67 -- It is not possible for the contact indicator to be
68 -- set against disability types which have a government disability type of
69 -- 'NONE'
70 DECLARE
71 cst_none CONSTANT VARCHAR2(10) := 'NONE';
72 v_govt_disability_type VARCHAR2(30);
73 CURSOR c_dit IS
74 SELECT govt_disability_type
75 FROM IGS_AD_DISBL_TYPE dit
76 WHERE dit.disability_type = p_disability_type;
77 BEGIN
78 p_message_name := NULL;
79 IF (p_contact_ind = 'N') THEN
80 RETURN TRUE;
81 END IF;
82 OPEN c_dit;
83 FETCH c_dit INTO v_govt_disability_type;
84 IF (c_dit%FOUND) THEN
85 IF (v_govt_disability_type = cst_none) THEN
86 CLOSE c_dit;
87 p_message_name := 'IGS_EN_CONIND_NOTSET_NONE';
88 RETURN FALSE;
89 END IF;
90 END IF;
91 CLOSE c_dit;
92 RETURN TRUE;
93 EXCEPTION
94 WHEN OTHERS THEN
95 IF (c_dit%ISOPEN) THEN
96 CLOSE c_dit;
97 END IF;
98 RAISE;
99 END;
100 EXCEPTION
101 WHEN OTHERS THEN
102 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXP');
103 FND_MESSAGE.SET_TOKEN('NAME', 'IGS_EN_VAL_PDI.enrp_val_pd_contact');
104 IGS_GE_MSG_STACK.ADD;
105 App_Exception.Raise_Exception;
106
107
108 END enrp_val_pd_contact;
109 --
110 -- Validate the disability type closed indicator
111 FUNCTION enrp_val_dit_closed(
112 p_disability_type IN VARCHAR2 ,
113 p_message_name OUT NOCOPY VARCHAR2)
114 RETURN BOOLEAN AS
115 BEGIN
116 DECLARE
117
118 v_closed_ind VARCHAR2(1);
119 CURSOR c_disability_type IS
120 SELECT closed_ind
121 FROM IGS_AD_DISBL_TYPE
122 WHERE disability_type = p_disability_type;
123 BEGIN
124 -- Check if the disability_type is closed
125 p_message_name := NULL;
126 OPEN c_disability_type;
127 FETCH c_disability_type INTO v_closed_ind;
128 IF (c_disability_type%NOTFOUND) THEN
129 CLOSE c_disability_type;
130 RETURN TRUE;
131 END IF;
132 IF (v_closed_ind = 'Y') THEN
133 p_message_name := 'IGS_EN_DISABILITY_TYPE_CLOSED';
134 CLOSE c_disability_type;
135 RETURN FALSE;
136 END IF;
137 -- record is not closed
138 CLOSE c_disability_type;
139 RETURN TRUE;
140 EXCEPTION
141 WHEN OTHERS THEN
142 FND_MESSAGE.SET_NAME('IGS', 'IGS_GE_UNHANDLED_EXP');
143 FND_MESSAGE.SET_TOKEN('NAME', 'IGS_EN_VAL_PDI.enrp_val_dit_closed');
144 IGS_GE_MSG_STACK.ADD;
145 App_Exception.Raise_Exception;
146
147
148 END;
149 END enrp_val_dit_closed;
150 END IGS_EN_VAL_PDI;