DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_NO_ARC_HOLIDAY_ENTITLEMENT

Source


1 PACKAGE BODY PAY_NO_ARC_HOLIDAY_ENTITLEMENT as
2 /* $Header: pynohlea.pkb 120.0.12000000.1 2007/05/22 07:29:44 rajesrin noship $ */
3 	 TYPE lock_rec IS RECORD (
4 	      archive_assact_id    NUMBER);
5 	 TYPE lock_table      IS TABLE OF  lock_rec      INDEX BY BINARY_INTEGER;
6 	 g_debug   boolean   :=  hr_utility.debug_enabled;
7 	 g_lock_table   		          lock_table;
8 	 g_package           VARCHAR2(33) := ' PAY_NO_ARC_HOLIDAY_ENTITLEMENT.';
9 	 g_business_group_id NUMBER;
10 	 g_legal_employer_id NUMBER;
11 	 g_effective_date DATE;
12 	 g_employee_id NUMBER;
13 	 g_assignment_set_id NUMBER;
14 	 g_archive  VARCHAR2(50);
15 	 g_err_num NUMBER;
16 	 g_errm VARCHAR2(150);
17 	 /* GET PARAMETER */
18 	 FUNCTION GET_PARAMETER(
19 		 p_parameter_string IN VARCHAR2
20 		,p_token            IN VARCHAR2
21 		,p_segment_number   IN NUMBER default NULL ) RETURN VARCHAR2
22 	 IS
23 		   l_parameter  pay_payroll_actions.legislative_parameters%TYPE:=NULL;
24 		   l_start_pos  NUMBER;
25 		   l_delimiter  VARCHAR2(1):=' ';
26 		   l_proc VARCHAR2(240):= g_package||' get parameter ';
27 	BEGIN
28 
29 		 IF g_debug THEN
30 			hr_utility.set_location(' Entering Function GET_PARAMETER',10);
31 		 END IF;
32 		 l_start_pos := instr(' '||p_parameter_string,l_delimiter||p_token||'=');
33 		 --
34 		 IF l_start_pos = 0 THEN
35 			l_delimiter := '|';
36 			l_start_pos := instr(' '||p_parameter_string,l_delimiter||p_token||'=');
37 		 END IF;
38 		 IF l_start_pos <> 0 THEN
39 			l_start_pos := l_start_pos + length(p_token||'=');
40 			l_parameter := substr(p_parameter_string,
41 			l_start_pos,
42 			instr(p_parameter_string||' ',
43 			l_delimiter,l_start_pos)
44 			- l_start_pos);
45 			 IF p_segment_number IS NOT NULL THEN
46 				l_parameter := ':'||l_parameter||':';
47 				l_parameter := substr(l_parameter,
48 				instr(l_parameter,':',1,p_segment_number)+1,
49 				instr(l_parameter,':',1,p_segment_number+1) -1
50 				- instr(l_parameter,':',1,p_segment_number));
51 			END IF;
52 		END IF;
53 		--
54 		IF g_debug THEN
55 			hr_utility.set_location(' Leaving Function GET_PARAMETER',20);
56 		END IF;
57 		RETURN l_parameter;
58 	 END;
59 	/* GET ALL PARAMETERS */
60 	PROCEDURE GET_ALL_PARAMETERS(
61         p_payroll_action_id         IN   NUMBER
62        ,p_business_group_id         OUT  NOCOPY NUMBER
63        ,p_legal_employer_id	    OUT  NOCOPY NUMBER
64        ,p_assignment_set_id	    OUT  NOCOPY NUMBER
65        ,p_employee		    OUT  NOCOPY NUMBER
66        ,p_archive		    OUT  NOCOPY VARCHAR2
67        ,p_effective_date            OUT  NOCOPY DATE
68        	) IS
69 		CURSOR csr_parameter_info(p_payroll_action_id NUMBER) IS
70 		SELECT PAY_NO_ARC_HOLIDAY_ENTITLEMENT.GET_PARAMETER(legislative_parameters,
71 		'LEGAL_EMPLOYER')
72 		,PAY_NO_ARC_HOLIDAY_ENTITLEMENT.GET_PARAMETER(legislative_parameters,'ARCHIVE')
73 		,PAY_NO_ARC_HOLIDAY_ENTITLEMENT.GET_PARAMETER(legislative_parameters,'EMPLOYEEID')
74 		,PAY_NO_ARC_HOLIDAY_ENTITLEMENT.GET_PARAMETER(legislative_parameters,'ASSIGNMENTSETID')
75 		,effective_date
76 		,business_group_id
77 		FROM  pay_payroll_actions
78 		WHERE payroll_action_id = p_payroll_action_id;
79 		l_proc VARCHAR2(240):= g_package||' GET_ALL_PARAMETERS ';
80 		--
81 	BEGIN
82 	fnd_file.put_line (fnd_file.LOG, 'Entering Get all Parameters' );
83 		 OPEN csr_parameter_info (p_payroll_action_id);
84 		 FETCH csr_parameter_info
85 		 INTO	 p_legal_employer_id
86 			,p_archive
87 			,p_employee
88 			,p_assignment_set_id
89 			,p_effective_date
90 			,p_business_group_id;
91 		 CLOSE csr_parameter_info;
92 		 --
93 		 IF g_debug THEN
94 		      hr_utility.set_location(' Leaving Procedure GET_ALL_PARAMETERS',30);
95 		 END IF;
96 	 END GET_ALL_PARAMETERS;
97 
98 	/* RANGE CODE */
99 	PROCEDURE RANGE_CODE (p_payroll_action_id    IN    NUMBER
100 			     ,p_sql    OUT   NOCOPY VARCHAR2)
101 	IS
102 
103 	 l_ovn	NUMBER;
104 	 l_action_info_id NUMBER;
105 
106         BEGIN
107 
108 
109 
110 			 IF g_debug THEN
111 				hr_utility.set_location(' Entering Procedure RANGE_CODE',10);
112 		         END IF;
113 
114 
115 
116 			     PAY_NO_ARC_HOLIDAY_ENTITLEMENT.GET_ALL_PARAMETERS( p_payroll_action_id
117 			     							,g_business_group_id
118 			     							,g_legal_employer_id
119 			     							,g_assignment_set_id
120 			     							,g_employee_id
121 			     							,g_archive
122 			     							,g_effective_date
123 					 					);
124 
125 
126 
127 		   /** Insert report parameters                  **/
128 			    pay_action_information_api.create_action_information (
129 					p_action_information_id	=> l_action_info_id,
130 					p_action_context_id	=> p_payroll_action_id,
131 					p_action_context_type	=> 'PA',
132 					p_object_version_number	=> l_ovn,
133 					p_effective_date	=> g_effective_date,
134 					p_source_id		=> NULL,
135 					p_source_text		=> NULL,
136 					p_action_information_category=> 'EMEA REPORT DETAILS',
137 					p_action_information1	=> 'PYNOHLEA',
138 					p_action_information2	=> g_legal_employer_id,
139 					p_action_information3	=> g_employee_id,
140 					p_action_information4	=> fnd_date.date_to_canonical(g_effective_date),
141 					p_action_information5	=> g_assignment_set_id);
142 
143 				hr_utility.set_location('Report Parameters ***********',30);
144 
145 				 p_sql := 'SELECT DISTINCT person_id
146 					     FROM  per_people_f ppf
147 					     ,pay_payroll_actions ppa
148 					     WHERE ppa.payroll_action_id = :payroll_action_id
149 					     AND   ppa.business_group_id = ppf.business_group_id
150 					     ORDER BY ppf.person_id';
151 
152 				--IF g_debug THEN
153 					hr_utility.set_location(' Leaving Procedure RANGE_CODE',50);
154 			--	END IF;
155 
156 			EXCEPTION
157 				WHEN OTHERS THEN
158 				hr_utility.set_location('Exception****',70);
159 				-- Return cursor that selects no rows
160 				p_sql := 'select 1 from dual where to_char(:payroll_action_id) = dummy';
161 	END RANGE_CODE;
162 
163 	 /* ASSIGNMENT ACTION CODE   PAY_NO_ARC_HOLIDAY_ENTITLEMENT.ASSIGNMENT_ACTION_CODE	 */
164 
165 	 PROCEDURE ASSIGNMENT_ACTION_CODE
166 	 (p_payroll_action_id     IN NUMBER
167 	 ,p_start_person          IN NUMBER
168 	 ,p_end_person            IN NUMBER
169 	 ,p_chunk                 IN NUMBER)
170 	 IS
171 
172 	 l_actid number;
173 	   /****** Start Of Cursor ******/
174 
175 	   CURSOR csr_action_creation(csr_v_business_group_id NUMBER,
176 	   				csr_v_legal_employer_id NUMBER,
177 	   				csr_v_effective_date DATE,
178 	   				csr_v_person_id NUMBER,
179 	   				csr_v_assignment_set_id NUMBER)
180 	   IS
181 	   SELECT paaf.assignment_id
182 	   FROM per_all_people_f papf,
183 	     per_all_assignments_f paaf,
184 	     per_assignment_status_types past,
185 	     hr_soft_coding_keyflex hsc,
186 	     hr_organization_information hoi
187 	   WHERE paaf.person_id = papf.person_id
188 	    AND papf.person_id = nvl(csr_v_person_id,papf.person_id)
189 	    AND paaf.assignment_status_type_id = past.assignment_status_type_id
190 	    AND papf.business_group_id = csr_v_business_group_id
191 	    AND hsc.soft_coding_keyflex_id = paaf.soft_coding_keyflex_id
192 	    AND hoi.org_information1 = hsc.segment2
193 	    AND hoi.organization_id = csr_v_legal_employer_id
194 	    AND hoi.org_information_context = 'NO_LOCAL_UNITS'
195 	    AND past.per_system_status in ('ACTIVE_ASSIGN','SUSP_ASSIGN')
196 	    AND papf.person_id BETWEEN p_start_person and p_end_person
197 	    AND csr_v_effective_date BETWEEN papf.effective_start_date
198 	    AND papf.effective_end_date
199 	    AND csr_v_effective_date BETWEEN paaf.effective_start_date
200  	    AND paaf.effective_end_date
201  	    AND (csr_v_assignment_set_id is null
202  	    	or exists(select hasav.assignment_id
203 				from
204 				  HR_ASSIGNMENT_SET_AMENDMENTS_V hasav,
205 				  HR_ASSIGNMENT_SETS_V hasv
206 				where
207 				hasav.assignment_set_id = hasv.assignment_set_id
208 				and hasv.assignment_set_id = csr_v_assignment_set_id
209 				and hasav.assignment_id = paaf.assignment_id));
210 
211 
212 
213 	   /**** End Of Cursor  ****/
214 
215 	 BEGIN
216 
217 
218 			hr_utility.trace('Entering Assignment Action Code  '||p_payroll_action_id);
219 
220 			PAY_NO_ARC_HOLIDAY_ENTITLEMENT.GET_ALL_PARAMETERS( p_payroll_action_id
221 										  ,g_business_group_id
222 										  ,g_legal_employer_id
223 										  ,g_assignment_set_id
224 										  ,g_employee_id
225 										  ,g_archive
226 										  ,g_effective_date
227 						 			 );
228 
229 
230 				FOR csr_act IN csr_action_creation(
231 								  g_business_group_id,
232 								  g_legal_employer_id,
233 								  g_effective_date,
234 								  g_employee_id,
235 								  g_assignment_set_id)
236 				LOOP
237 
238 					SELECT pay_assignment_actions_s.NEXTVAL
239 					INTO l_actid
240 					FROM DUAL;
241 
242 					hr_nonrun_asact.insact (l_actid,
243 								csr_act.assignment_id,
244 								p_payroll_action_id,
245 								p_chunk,
246 								g_business_group_id
247 								);
248 				END LOOP;
249 
250 		IF g_debug THEN
251 			hr_utility.set_location(' Entering Procedure ASSIGNMENT_ACTION_CODE',60);
252 		END IF;
253 		 IF g_debug THEN
254 		      hr_utility.set_location(' Leaving Procedure ASSIGNMENT_ACTION_CODE',70);
255 		 END IF;
256 --		 	 fnd_file.put_line (fnd_file.LOG, 'Exiting Assignment Action Code' );
257 
258 
259 	END ASSIGNMENT_ACTION_CODE;
260 	 /* INITIALIZATION CODE */
261 	 PROCEDURE INITIALIZATION_CODE(p_payroll_action_id IN NUMBER)
262 	 IS
263 	 BEGIN
264 	-- fnd_file.put_line (fnd_file.LOG, 'Entering Initialization Code' );
265 	 hr_utility.set_location(' Entering Procedure INITIALIZATION_CODE',80);
266 
267 
268 
269 	  hr_utility.set_location(' Leaving Procedure INITIALIZATION_CODE',90);
270 
271 		--  fnd_file.put_line (fnd_file.LOG, 'Existing Initialization Code' );
272 		 EXCEPTION WHEN OTHERS THEN
273 		 g_err_num := SQLCODE;
274 		 IF g_debug THEN
275 		      hr_utility.set_location(' Err Procedure INITIALIZATION_CODE',110);
276 		      hr_utility.set_location('ORA_ERR: ' || g_err_num ||
277 		      'In INITIALIZATION_CODE',180);
278 		 END IF;
279 	 fnd_file.put_line (fnd_file.LOG, 'Error in Initialization Code' );
280 	 END INITIALIZATION_CODE;
281  	 /* ARCHIVE CODE */
282 	PROCEDURE ARCHIVE_CODE(p_assignment_action_id IN NUMBER
283 			      ,p_effective_date    IN DATE)
284 	IS
285 
286 		l_arch_ovn number;
287 		l_arch_action_info_id number;
288 		l_holiday_ent NUMBER;
289 		l_holiday_ent_60 NUMBER;
290 		l_holiday_carried_fwd NUMBER;
291 		l_holiday_carried_od NUMBER;
292 		l_holiday_days_taken NUMBER;
293 		l_holiday_days_taken_60 NUMBER :=0;
294 		l_holiday_day_remaining NUMBER;
295 		l_holiday_day_remaining60 NUMBER;
296 
297 
298 		l_holiday_ent_days NUMBER;
299 		l_holiday_ent_60_days NUMBER;
300 		l_holiday_carried_fwd_days NUMBER;
301 		l_holiday_carried_od_days NUMBER;
302 		l_holiday_taken_days NUMBER;
303 		l_holiday_taken_60_days NUMBER :=0;
304 		l_holiday_remaining_days NUMBER;
305 		l_holiday_remaining60_days NUMBER;
306 
307 
308 
309 	/*** Start of  Cursor ***/
310 		 Cursor csr_holiday_entitlement(csr_v_business_group_id NUMBER,
311 		 				csr_v_legal_employer_id NUMBER,
312 		 				csr_v_effective_date DATE,
313 		 				csr_v_person_id NUMBER,
314 		 				csr_v_assignment_set_id NUMBER
315 		 				) is
316 
317 		 	   	SELECT papf.person_id,
318 		 	   	  papf.full_name,
319 				  paaf.assignment_id,
320 				  paaf.assignment_number,
321 				  past.per_system_status
322 				FROM per_all_people_f papf,
323 				  per_all_assignments_f paaf,
324 				  per_assignment_status_types past,
325 				  pay_assignment_actions paas,
326 				  hr_soft_coding_keyflex hsc,
327 				  hr_organization_information hoi
328 				WHERE paas.assignment_action_id = p_assignment_action_id
329 				 AND papf.person_id = nvl(csr_v_person_id,papf.person_id)
330 				 AND paaf.person_id = papf.person_id
331 				 AND paaf.assignment_status_type_id = past.assignment_status_type_id
332 				 AND paaf.assignment_id = paas.assignment_id
333 				 AND papf.business_group_id = csr_v_business_group_id
334 				 AND hsc.soft_coding_keyflex_id = paaf.soft_coding_keyflex_id
335 				 AND hoi.org_information1 = hsc.segment2
336 				 AND hoi.organization_id = csr_v_legal_employer_id
337 				 AND hoi.org_information_context = 'NO_LOCAL_UNITS'
338 				 AND past.per_system_status in ('ACTIVE_ASSIGN','SUSP_ASSIGN')
339 				 AND csr_v_effective_date BETWEEN papf.effective_start_date AND papf.effective_end_date
340 				 AND csr_v_effective_date BETWEEN paaf.effective_start_date AND paaf.effective_end_date
341 				 AND (csr_v_assignment_set_id is null
342 				  	    	or exists(select hasav.assignment_id
343 				 				from
344 				 				  HR_ASSIGNMENT_SET_AMENDMENTS_V hasav,
345 				 				  HR_ASSIGNMENT_SETS_V hasv
346 				 				where
347 				 				hasav.assignment_set_id = hasv.assignment_set_id
348 				 				and hasv.assignment_set_id = csr_v_assignment_set_id
349 								and hasav.assignment_id = paaf.assignment_id));
350 
351 				 Cursor csr_defined_balance(csr_balance_name VARCHAR2) is
352 				 		SELECT pdb.defined_balance_id
353 						FROM pay_defined_balances pdb,
354 						     pay_balance_dimensions pbd,
355 						     pay_balance_types pbt
356 						WHERE pdb.balance_dimension_id = pbd.balance_dimension_id
357 						 AND pdb.balance_type_id = pbt.balance_type_id
358 						 AND pbt.legislation_code = 'NO'
359 						 AND pbd.database_item_suffix = '_ASG_YTD'
360 						 AND pbt.balance_name = csr_balance_name;
361 
362 	 		/**** End of Cursor ***/
363 
364 	BEGIN
365 	fnd_file.put_line (fnd_file.LOG, 'entering archive code' );
366 
367 
368 		open csr_defined_balance('Holiday Days Entitlement');
369 		 fetch csr_defined_balance into l_holiday_ent;
370 		close csr_defined_balance;
371 
372 		open csr_defined_balance('Holiday Days Entitlement Over 60');
373 		 fetch csr_defined_balance into l_holiday_ent_60;
374 		close csr_defined_balance;
375 
376 		open csr_defined_balance('Holiday Days Carried Forward');
377 		 fetch csr_defined_balance into l_holiday_carried_fwd;
378 		close csr_defined_balance;
379 
380 		open csr_defined_balance('Holiday Carry Over Days');
381 		  fetch csr_defined_balance into l_holiday_carried_od;
382 		close csr_defined_balance;
383 
384 		open csr_defined_balance('Holiday Days Taken');
385 		 fetch csr_defined_balance into l_holiday_days_taken;
386 		close csr_defined_balance;
387 
388 		open csr_defined_balance('Holiday Days Taken Over 60');
389 		 fetch csr_defined_balance into l_holiday_days_taken_60;
390 		close csr_defined_balance;
391 
392 		open csr_defined_balance('Holiday Days Remaining');
393 		 fetch csr_defined_balance into l_holiday_day_remaining;
394 		close csr_defined_balance;
395 
396 		open csr_defined_balance('Holiday Days Over 60 Remaining');
397 		 fetch csr_defined_balance into l_holiday_day_remaining60;
398 		close csr_defined_balance;
399 
400 
401 		FOR csr_he IN csr_holiday_entitlement(g_business_group_id,
402 							g_legal_employer_id,
403 							p_effective_date,
404 							g_employee_id,
405 							g_assignment_set_id)
406 		LOOP
407 
408 
409 			Begin
410 			    l_holiday_ent_days := pay_balance_pkg.get_value(l_holiday_ent,csr_he.assignment_id,g_effective_date);
411 			Exception
412 			    When others then
413 			    l_holiday_ent_days := 0;
414 			END;
415 
416 			Begin
417 			    l_holiday_ent_60_days := pay_balance_pkg.get_value(l_holiday_ent_60,csr_he.assignment_id,g_effective_date);
418 			Exception
419 			    When others then
420 			    l_holiday_ent_60_days := 0;
421 			END;
422 
423 			Begin
424 			    l_holiday_carried_fwd_days := pay_balance_pkg.get_value(l_holiday_carried_fwd,csr_he.assignment_id,g_effective_date);
425 			Exception
426 			    When others then
427 			    l_holiday_carried_fwd_days := 0;
428 			END;
429 
430 			Begin
431 			    l_holiday_carried_od_days := pay_balance_pkg.get_value(l_holiday_carried_od,csr_he.assignment_id,g_effective_date);
432 			Exception
433 			    When others then
434 			    l_holiday_carried_od_days := 0;
435 			END;
436 
437 			Begin
438 			    l_holiday_taken_days := pay_balance_pkg.get_value(l_holiday_days_taken,csr_he.assignment_id,g_effective_date);
439 			Exception
440 			    When others then
441 			    l_holiday_taken_days := 0;
442 			END;
443 
444 			Begin
445 			    l_holiday_taken_60_days := pay_balance_pkg.get_value(l_holiday_days_taken_60,csr_he.assignment_id,g_effective_date);
446 			Exception
447 			    When others then
448 			    l_holiday_taken_60_days := 0;
449 			END;
450 
451 			Begin
452 			    l_holiday_remaining_days := pay_balance_pkg.get_value(l_holiday_day_remaining,csr_he.assignment_id,g_effective_date);
453 			Exception
454 			    When others then
455 			    l_holiday_remaining_days := 0;
456 			END;
457 			/* Added for Bug 5391237*/
458 			l_holiday_remaining_days := nvl(l_holiday_remaining_days,0) +  nvl(l_holiday_carried_od_days,0);
459 
460 			Begin
461 			    l_holiday_remaining60_days := pay_balance_pkg.get_value(l_holiday_day_remaining60,csr_he.assignment_id,g_effective_date);
462 			Exception
463 			    When others then
464 			    l_holiday_remaining60_days := 0;
465 			END;
466 
467 			pay_action_information_api.create_action_information (
468 			    p_action_context_id=> p_assignment_action_id,
469 			    p_action_context_type=> 'AAP',
470 			    p_action_information_category=> 'EMEA REPORT INFORMATION',
471 			    p_assignment_id	   => csr_he.assignment_id,
472 			    p_action_information1  => 'PYNOHLEA',
473 			    p_action_information2  => csr_he.assignment_number,
474 			    p_action_information3  => csr_he.full_name,
475 			    p_action_information4  => l_holiday_ent_days,
476 			    p_action_information5  => l_holiday_ent_60_days,
477 			    p_action_information6  => l_holiday_carried_fwd_days,
478 			    p_action_information7  => l_holiday_taken_days,
479 			    p_action_information8  => l_holiday_taken_60_days,
480 			    p_action_information9  => l_holiday_remaining_days,
481 			    p_action_information10 => l_holiday_remaining60_days,
482 			    p_action_information_id=> l_arch_action_info_id,
483 			    p_object_version_number=> l_arch_ovn);
484 		END LOOP;
485 
486 		 IF g_debug THEN
487 				hr_utility.set_location(' Entering Procedure ARCHIVE_CODE',80);
488 		 END IF;
489 		 IF g_debug THEN
490 				hr_utility.set_location(' Leaving Procedure ARCHIVE_CODE',90);
491 		 END IF;
492     fnd_file.put_line (fnd_file.LOG, 'Exiting archive code' );
493 	END ARCHIVE_CODE;
494  END PAY_NO_ARC_HOLIDAY_ENTITLEMENT;