DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_NO_ABSENCE_USER

Source


1 PACKAGE BODY PAY_NO_ABSENCE_USER AS
2 /*$Header: pynoabsusr.pkb 120.1.12020000.2 2013/03/22 06:35:25 smeduri ship $*/
3 Function Element_populate(p_assignment_id   in number,
4                 p_person_id 	            in number,
5                 p_absence_attendance_id     in number,
6 		p_element_type_id 	    in number,
7                 p_absence_category 	    in varchar2,
8                 p_original_entry_id     OUT nocopy NUMBER, --pgopal
9                 p_input_value_name1 	OUT NOCOPY VARCHAR2,
10 		p_input_value1	    	OUT NOCOPY VARCHAR2,
11                 p_input_value_name2 	OUT NOCOPY VARCHAR2,
12 		p_input_value2	    	OUT NOCOPY VARCHAR2,
13                 p_input_value_name3 	OUT NOCOPY VARCHAR2,
14 		p_input_value3	    	OUT NOCOPY VARCHAR2,
15                 p_input_value_name4 	OUT NOCOPY VARCHAR2,
16 		p_input_value4	    	OUT NOCOPY VARCHAR2,
17                 p_input_value_name5 	OUT NOCOPY VARCHAR2,
18 		p_input_value5	    	OUT NOCOPY VARCHAR2,
19                 p_input_value_name6 	OUT NOCOPY VARCHAR2,
20 		p_input_value6	    	OUT NOCOPY VARCHAR2,
21                 p_input_value_name7 	OUT NOCOPY VARCHAR2,
22 		p_input_value7	    	OUT NOCOPY VARCHAR2,
23                 p_input_value_name8 	OUT NOCOPY VARCHAR2,
24 		p_input_value8	    	OUT NOCOPY VARCHAR2,
25                 p_input_value_name9 	OUT NOCOPY VARCHAR2,
26 		p_input_value9	    	OUT NOCOPY VARCHAR2,
27                 p_input_value_name10 	OUT NOCOPY VARCHAR2,
28 		p_input_value10	    	OUT NOCOPY VARCHAR2,
29                 p_input_value_name11 	OUT NOCOPY VARCHAR2,
30 		p_input_value11	    	OUT NOCOPY VARCHAR2,
31                 p_input_value_name12 	OUT NOCOPY VARCHAR2,
32 		p_input_value12	    	OUT NOCOPY VARCHAR2,
33                 p_input_value_name13 	OUT NOCOPY VARCHAR2,
34 		p_input_value13	    	OUT NOCOPY VARCHAR2,
35                 p_input_value_name14 	OUT NOCOPY VARCHAR2,
36 		p_input_value14	    	OUT NOCOPY VARCHAR2,
37                 p_input_value_name15 	OUT NOCOPY VARCHAR2,
38 		p_input_value15	    	OUT NOCOPY VARCHAR2) RETURN VARCHAR2 IS
39 
40 
41 /*Cursor to get the intial entry id*/
42 CURSOR csr_get_intial_entry_id(p_creator_id IN VARCHAR2 ,p_assignment_id IN NUMBER ) IS
43 SELECT
44 	peef.element_entry_id
45 FROM
46 	pay_element_entry_values_f peevf
47 	,pay_input_values_f pivf
48 	,pay_element_entries_f peef
49 WHERE
50 	peevf.screen_entry_value = p_creator_id
51 	AND pivf.input_value_id = peevf.input_value_id
52 	AND pivf.NAME = 'CREATOR_ID'
53 	AND pivf.legislation_code = 'NO'
54 	AND peef.element_entry_id  = peevf.element_entry_id
55 	AND peef.assignment_id = p_assignment_id
56 	and peef.creator_type <> 'EE'; -- bug 16527593
57 
58 -- Cursor to fetch previous sickness and part-time sickness absences for
59 -- find out the starting linking absence.
60 CURSOR CSR_CONT_LINK (l_person_id IN number,l_abs_st_date IN date) IS
61 SELECT paa.absence_attendance_id
62        ,paa.date_start
63        ,paa.date_end
64   FROM per_absence_attendances paa, per_absence_attendance_types pat
65  WHERE paa.person_id = l_person_id
66    AND paa.date_start < l_abs_st_date
67    AND paa.date_end < l_abs_st_date
68    AND paa.date_start IS NOT NULL AND paa.date_end IS NOT NULL
69    AND paa.absence_attendance_type_id = pat.absence_attendance_type_id
70    AND pat.absence_category IN ('S','PTS')
71  ORDER BY paa.date_end desc ;
72 
73 -- Cursor to fetch global values
74 CURSOR csr_get_glb_value(p_global_name IN VARCHAR2, p_effective_date IN DATE) IS
75 SELECT to_number(global_value)
76 FROM  ff_globals_f
77 WHERE global_name = p_global_name
78 AND   legislation_code = 'NO'
79 AND   p_effective_date BETWEEN effective_start_date AND effective_end_date;
80 
81 l_start_date            date;
82 l_end_date              date;
83 l_absent_reason         number;
84 l_start_time            varchar2(20);
85 l_end_time              varchar2(20);
86 l_abs_cat_meaning       varchar2(100);
87 --l_initial_abs_creator_id NUMBER ;
88 l_initial_abs_creator_id varchar2(60) ;
89 l_intial_absence      CHAR;
90 l_loop_start_date       date;
91 prev_link_abs_exist     varchar2(10);
92 l_abs_attn_id           number;
93 l_abs_link_period       number;
94 
95 BEGIN
96 
97        -- Fetch absence attendance details
98        BEGIN
99           SELECT abs.date_start
100                  ,abs.date_end
101                  ,abs.ABS_ATTENDANCE_REASON_ID
102                  ,abs.TIME_START
103                  ,abs.TIME_END
104                  ,abs.abs_information15
105                  ,abs.abs_information16
106           INTO   l_start_date
107                  ,l_end_date
108                  ,l_absent_reason
109                  ,l_start_time
110                  ,l_end_time
111                  ,l_intial_absence
112                  ,l_initial_abs_creator_id
113           FROM   per_absence_attendances      abs
114           WHERE  abs.absence_attendance_id      = p_absence_attendance_id;
115        EXCEPTION
116           WHEN OTHERS THEN
117                NULL;
118        END;
119 
120     IF p_absence_category in ('S', 'PTS') AND
121        nvl(l_intial_absence,'Y') = 'Y' THEN
122        OPEN csr_get_glb_value('NO_ABS_LINK_PERIOD',l_start_date);
123        FETCH csr_get_glb_value INTO l_abs_link_period;
124        CLOSE csr_get_glb_value;
125 
126        l_loop_start_date := l_start_date ; /* assign the current absence start date */
127        prev_link_abs_exist := 'N';
128        FOR i in CSR_CONT_LINK (p_person_id, l_start_date) LOOP
129            IF ( l_loop_start_date - i.date_end ) <= l_abs_link_period then
130              prev_link_abs_exist := 'Y';
131              l_abs_attn_id := i.absence_attendance_id;
132            ELSE -- No linking absence exists.
133                  EXIT;
134            END IF;
135            l_loop_start_date := i.date_start;
136        END LOOP;
137 
138        IF prev_link_abs_exist = 'Y' THEN
139 	   OPEN csr_get_intial_entry_id(to_char(l_abs_attn_id),p_assignment_id);
140           FETCH csr_get_intial_entry_id INTO p_original_entry_id;
141           CLOSE csr_get_intial_entry_id;
142 	END IF;
143     ELSE -- Other than S and PTS Categories
144        IF l_intial_absence = 'N' THEN
145        OPEN csr_get_intial_entry_id(l_initial_abs_creator_id,p_assignment_id);
146        FETCH csr_get_intial_entry_id INTO p_original_entry_id;
147        CLOSE csr_get_intial_entry_id;
148        /*  Commented Setting original entry id for initial absences*/
149        /*ELSE
150         If initial absence = 'Y' then set the element entry id as original entry id
151        OPEN csr_get_intial_entry_id(p_absence_attendance_id);
152        FETCH csr_get_intial_entry_id INTO p_original_entry_id;
153        CLOSE csr_get_intial_entry_id;*/
154        END IF ;
155     END IF;
156     -- Check if absence category is S ( Sickness )
157     IF p_absence_category in ('S', 'PTS', 'CMS', 'PA', 'PTP', 'M', 'PTM', 'IE_AL', 'VAC','PTA') THEN
158                 p_input_value_name1 := 'Start Date';
159 		p_input_value1	    := 	fnd_date.date_to_displaydate(l_start_date);  -- date conversion for 6850183
160                 p_input_value_name2 := 'End Date';
161 		p_input_value2	    := 	fnd_date.date_to_displaydate(l_end_date);   -- date conversion for 6850183
162                 p_input_value_name5 := 'Absence Category';
163 
164 		     -- To select absence category meaning by passing code
165 		     BEGIN
166 		        SELECT MEANING
167 			INTO   l_abs_cat_meaning
168 			--FROM   FND_LOOKUP_VALUES
169 			-- Version 115.1 , Changed query to get value from hr_lookups
170 			FROM   HR_LOOKUPS
171 			WHERE  LOOKUP_TYPE = 'ABSENCE_CATEGORY'
172 			  AND  ENABLED_FLAG = 'Y'
173 			  AND  LOOKUP_CODE = p_absence_category;
174 		     EXCEPTION
175 		        WHEN OTHERS THEN
176 			       l_abs_cat_meaning := null;
177 		     END;
178 
179 		p_input_value5	    := 	l_abs_cat_meaning;
180 		p_input_value_name6 := 'CREATOR_ID';
181 		p_input_value6	    := 	p_absence_attendance_id;
182 
183     END IF;
184 
185 -- Return Y indicating to process the element for the input assignment id.
186 RETURN 'Y';
187 END Element_populate;
188 
189 END PAY_NO_ABSENCE_USER;