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.0.12010000.2 2008/08/06 08:03:53 ubhat 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 
57 -- Cursor to fetch previous sickness and part-time sickness absences for
58 -- find out the starting linking absence.
59 CURSOR CSR_CONT_LINK (l_person_id IN number,l_abs_st_date IN date) IS
60 SELECT paa.absence_attendance_id
61        ,paa.date_start
62        ,paa.date_end
63   FROM per_absence_attendances paa, per_absence_attendance_types pat
64  WHERE paa.person_id = l_person_id
65    AND paa.date_start < l_abs_st_date
66    AND paa.date_end < l_abs_st_date
67    AND paa.date_start IS NOT NULL AND paa.date_end IS NOT NULL
68    AND paa.absence_attendance_type_id = pat.absence_attendance_type_id
69    AND pat.absence_category IN ('S','PTS')
70  ORDER BY paa.date_end desc ;
71 
72 -- Cursor to fetch global values
73 CURSOR csr_get_glb_value(p_global_name IN VARCHAR2, p_effective_date IN DATE) IS
74 SELECT to_number(global_value)
75 FROM  ff_globals_f
76 WHERE global_name = p_global_name
77 AND   legislation_code = 'NO'
78 AND   p_effective_date BETWEEN effective_start_date AND effective_end_date;
79 
80 l_start_date            date;
81 l_end_date              date;
82 l_absent_reason         number;
83 l_start_time            varchar2(20);
84 l_end_time              varchar2(20);
85 l_abs_cat_meaning       varchar2(100);
86 --l_initial_abs_creator_id NUMBER ;
87 l_initial_abs_creator_id varchar2(60) ;
88 l_intial_absence      CHAR;
89 l_loop_start_date       date;
90 prev_link_abs_exist     varchar2(10);
91 l_abs_attn_id           number;
92 l_abs_link_period       number;
93 
94 BEGIN
95 
96        -- Fetch absence attendance details
97        BEGIN
98           SELECT abs.date_start
99                  ,abs.date_end
100                  ,abs.ABS_ATTENDANCE_REASON_ID
101                  ,abs.TIME_START
102                  ,abs.TIME_END
103                  ,abs.abs_information15
104                  ,abs.abs_information16
105           INTO   l_start_date
106                  ,l_end_date
107                  ,l_absent_reason
108                  ,l_start_time
109                  ,l_end_time
110                  ,l_intial_absence
111                  ,l_initial_abs_creator_id
112           FROM   per_absence_attendances      abs
113           WHERE  abs.absence_attendance_id      = p_absence_attendance_id;
114        EXCEPTION
115           WHEN OTHERS THEN
116                NULL;
117        END;
118 
119     IF p_absence_category in ('S', 'PTS') AND
120        nvl(l_intial_absence,'Y') = 'Y' THEN
121        OPEN csr_get_glb_value('NO_ABS_LINK_PERIOD',l_start_date);
122        FETCH csr_get_glb_value INTO l_abs_link_period;
123        CLOSE csr_get_glb_value;
124 
125        l_loop_start_date := l_start_date ; /* assign the current absence start date */
126        prev_link_abs_exist := 'N';
127        FOR i in CSR_CONT_LINK (p_person_id, l_start_date) LOOP
128            IF ( l_loop_start_date - i.date_end ) <= l_abs_link_period then
129              prev_link_abs_exist := 'Y';
130              l_abs_attn_id := i.absence_attendance_id;
131            ELSE -- No linking absence exists.
132                  EXIT;
133            END IF;
134            l_loop_start_date := i.date_start;
135        END LOOP;
136 
137        IF prev_link_abs_exist = 'Y' THEN
138 	   OPEN csr_get_intial_entry_id(to_char(l_abs_attn_id),p_assignment_id);
139           FETCH csr_get_intial_entry_id INTO p_original_entry_id;
140           CLOSE csr_get_intial_entry_id;
141 	END IF;
142     ELSE -- Other than S and PTS Categories
143        IF l_intial_absence = 'N' THEN
144        OPEN csr_get_intial_entry_id(l_initial_abs_creator_id,p_assignment_id);
145        FETCH csr_get_intial_entry_id INTO p_original_entry_id;
146        CLOSE csr_get_intial_entry_id;
147        /*  Commented Setting original entry id for initial absences*/
148        /*ELSE
149         If initial absence = 'Y' then set the element entry id as original entry id
150        OPEN csr_get_intial_entry_id(p_absence_attendance_id);
151        FETCH csr_get_intial_entry_id INTO p_original_entry_id;
152        CLOSE csr_get_intial_entry_id;*/
153        END IF ;
154     END IF;
155     -- Check if absence category is S ( Sickness )
156     IF p_absence_category in ('S', 'PTS', 'CMS', 'PA', 'PTP', 'M', 'PTM', 'IE_AL', 'VAC','PTA') THEN
157                 p_input_value_name1 := 'Start Date';
158 		p_input_value1	    := 	fnd_date.date_to_displaydate(l_start_date);  -- date conversion for 6850183
159                 p_input_value_name2 := 'End Date';
160 		p_input_value2	    := 	fnd_date.date_to_displaydate(l_end_date);   -- date conversion for 6850183
161                 p_input_value_name5 := 'Absence Category';
162 
163 		     -- To select absence category meaning by passing code
164 		     BEGIN
165 		        SELECT MEANING
166 			INTO   l_abs_cat_meaning
167 			--FROM   FND_LOOKUP_VALUES
168 			-- Version 115.1 , Changed query to get value from hr_lookups
169 			FROM   HR_LOOKUPS
170 			WHERE  LOOKUP_TYPE = 'ABSENCE_CATEGORY'
171 			  AND  ENABLED_FLAG = 'Y'
172 			  AND  LOOKUP_CODE = p_absence_category;
173 		     EXCEPTION
174 		        WHEN OTHERS THEN
175 			       l_abs_cat_meaning := null;
176 		     END;
177 
178 		p_input_value5	    := 	l_abs_cat_meaning;
179 		p_input_value_name6 := 'CREATOR_ID';
180 		p_input_value6	    := 	p_absence_attendance_id;
181 
182     END IF;
183 
184 -- Return Y indicating to process the element for the input assignment id.
185 RETURN 'Y';
186 END Element_populate;
187 
188 END PAY_NO_ABSENCE_USER;