DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_EN_VAL_PIG

Source


1 PACKAGE BODY igs_en_val_pig AS
2 /* $Header: IGSEN98B.pls 115.5 2003/07/08 10:42:19 ptandon noship $ */
3 
4   FUNCTION enrf_get_pig_cp (p_person_id IN  NUMBER,
5                             p_which_cp  IN  VARCHAR2,
6                             p_message   OUT NOCOPY VARCHAR2)
7   RETURN NUMBER IS
8   ------------------------------------------------------------------
9   --Created by  : Kiran Killamsetty, Oracle IDC
10   --Date created: 01-NOV-2002
11   --
12   --Purpose: Gets the min/max cp for a person at person id group level
13   --
14   --
15   --Known limitations/enhancements and/or remarks:
16   --
17   --Change History:
18   --Who         When            What
19   --amuthu      02-JAN-2003     There was a check to see if the step
20   --                            was setup at PIG level and only then
21   --                            the value would be returned. Changed
22   --                            this to return the value irrespective
23   --                            of the step being setup at PIG level
24   --ptandon     07-JUL-2003     Modified the cursor cur_pig to select
25   --                            only those Person ID Groups for which
26   --                            the person has not been end-dated.
27   --                            Bug# 3038825
28   -------------------------------------------------------------------
29   CURSOR cur_pig IS SELECT DISTINCT group_id
30                     FROM igs_pe_prsid_grp_mem
31                     WHERE person_id = p_person_id AND
32 		          TRUNC(SYSDATE) BETWEEN start_date AND NVL(end_date,TRUNC(SYSDATE));
33   CURSOR cur_cp  (cp_group_id       igs_pe_prsid_grp_mem.group_id%TYPE)
34                   IS SELECT prsid_max_cp,prsid_min_cp FROM igs_en_pig_cp_setup
35                                                       WHERE group_id = cp_group_id;
36   rec_cp            cur_cp%ROWTYPE;
37   l_count           NUMBER;
38   l_ret_value       NUMBER DEFAULT NULL;
39   l_cp_defined    BOOLEAN;
40   BEGIN
41       p_message := NULL;
42       --Validating the input parameters.
43       IF p_person_id IS NULL  OR
44          p_which_cp  NOT IN ('MAX_CP','MIN_CP') THEN
45          RETURN NULL;
46       END IF;
47 
48 	  l_count := 0;
49       --Getting the group id's for the given persons
50       FOR rec_pig IN cur_pig
51       LOOP
52 
53         l_cp_defined := FALSE;
54         --Checking whether step defined for given person group.
55         OPEN cur_cp(rec_pig.group_id);
56         FETCH cur_cp INTO rec_cp;
57         IF cur_cp%FOUND THEN
58            l_cp_defined := TRUE;
59            IF p_which_cp = 'MAX_CP'  THEN
60               l_ret_value := rec_cp.prsid_max_cp;
61            ELSE
62               l_ret_value := rec_cp.prsid_min_cp;
63            END IF;
64         END IF;
65         CLOSE cur_cp;
66 
67         --if step is defined more than one group id;
68         IF l_cp_defined THEN
69            l_count := l_count +1;
70            IF l_count >1 THEN
71               p_message := 'IGS_EN_MORE_PIG_SETUP';
72               RETURN NULL;
73            END IF;
74         END IF;
75 
76       END LOOP;
77       RETURN l_ret_value;
78   EXCEPTION
79   	WHEN OTHERS THEN
80 		FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
81 		FND_MESSAGE.SET_TOKEN('NAME', 'igs_en_val_pig.enrf_get_pig_cp');
82 		IGS_GE_MSG_STACK.ADD;
83 		App_Exception.Raise_Exception;
84   END enrf_get_pig_cp;
85 
86   FUNCTION get_pig_notify_flag (p_step_type  IN VARCHAR2,
87                                 p_person_id  IN NUMBER,
88                                 p_message   OUT NOCOPY VARCHAR2)
89   RETURN VARCHAR2 IS
90   ------------------------------------------------------------------
91   --Created by  : Kiran Killamsetty, Oracle IDC
92   --Date created: 01-NOV-2002
93   --
94   --Purpose: Returns the step notification flag for a person  at
95   -- person id group level.
96   --
97   --Known limitations/enhancements and/or remarks:
98   --
99   --Change History:
100   --Who         When            What
101   --ptandon     07-JUL-2003     Modified the cursor cur_pig to select
102   --                            only those Person ID Groups for which
103   --                            the person has not been end-dated.
104   --                            Bug# 3038825
105   -------------------------------------------------------------------
106   CURSOR cur_pig IS SELECT DISTINCT group_id
107                     FROM igs_pe_prsid_grp_mem
108                     WHERE person_id = p_person_id AND
109 		          TRUNC(SYSDATE) BETWEEN start_date AND NVL(end_date,TRUNC(SYSDATE));
110   CURSOR cur_step(p_group_id       igs_pe_prsid_grp_mem.group_id%TYPE)
111                   IS SELECT s_enrolment_step_type,notification_flag FROM igs_en_pig_s_setup
112                                      WHERE group_id = p_group_id;
113   l_count                   NUMBER:= 0;
114   l_ret_value               NUMBER DEFAULT NULL;
115   l_notification_flag       igs_en_pig_s_setup.notification_flag%TYPE;
116   l_defined_step            BOOLEAN;
117   BEGIN
118       p_message := NULL;
119       --Validating the input parameters.
120       IF p_person_id IS NULL  OR
121          p_step_type  IS NULL THEN
122          RETURN NULL;
123       END IF;
124 
125       --Getting the group id's for the given persons
126       FOR rec_pig IN cur_pig
127       LOOP
128           --Checking whether step defined for given person group.
129           l_defined_step := FALSE;
130           FOR rec_step IN cur_step(rec_pig.group_id)
131           LOOP
132                  l_defined_step := TRUE;
133                  IF rec_step.s_enrolment_step_type = p_step_type THEN
134                      l_notification_flag:=rec_step.notification_flag;
135                     EXIT; --cur_step
136                  END IF;
137           END LOOP;
138 
139           --if step is defined more than one group id;
140           IF l_defined_step THEN
141              l_count := l_count +1;
142              IF l_count >1 THEN
143                 p_message := 'IGS_EN_MORE_PIG_SETUP';
144                 RETURN NULL;
145              END IF;
146           END IF;
147 
148       END LOOP;
149       RETURN l_notification_flag;
150   EXCEPTION
151   	WHEN OTHERS THEN
152 		FND_MESSAGE.SET_NAME('IGS','IGS_GE_UNHANDLED_EXP');
153 		FND_MESSAGE.SET_TOKEN('NAME', 'igs_en_val_pig.get_pig_notify_flag');
154 		IGS_GE_MSG_STACK.ADD;
155 		App_Exception.Raise_Exception;
156   END get_pig_notify_flag;
157 
158 
159 END igs_en_val_pig;