1 PACKAGE BODY pay_in_exc AS
2 /* $Header: pyinexc.pkb 120.4 2008/06/03 14:14:10 lnagaraj noship $ */
3 g_package CONSTANT VARCHAR2(100) := 'pay_in_exc.';
4 g_debug BOOLEAN;
5
6 --------------------------------------------------------------------------
7 -- --
8 -- Name : NEXT_PERIOD --
9 -- Type : FUNCTION --
10 -- Access : Private --
11 -- Description : Given a date and a payroll action id, returns the --
12 -- date of the day after the end of the --
13 -- containing pay period. --
14 -- --
15 -- Parameters : --
16 -- IN : p_pactid NUMBER --
17 -- p_date DATE --
18 -- RETURN : date --
19 -- --
20 -- Change History : --
21 --------------------------------------------------------------------------
22 -- Rev# Date Userid Description --
23 --------------------------------------------------------------------------
24 -- 1.0 16-JUL-04 lnagaraj Created this function --
25 --------------------------------------------------------------------------
26 FUNCTION next_period ( p_pactid IN NUMBER
27 , p_date IN DATE
28 )
29 RETURN DATE
30 IS
31
32 l_return_val DATE := NULL;
33
34 CURSOR cur_end_date ( p_pactid NUMBER
35 , p_date DATE
36 ) IS
37 SELECT TP.end_date + 1
38 FROM per_time_periods TP
39 , pay_payroll_actions PACT
40 WHERE PACT.payroll_action_id = p_pactid
41 AND PACT.payroll_id = TP.payroll_id
42 AND p_date BETWEEN TP.start_date AND TP.end_date;
43
44 BEGIN
45
46
47 OPEN cur_end_date ( p_pactid
48 , p_date
49 );
50 FETCH cur_end_date INTO l_return_val;
51 CLOSE cur_end_date;
52
53 RETURN l_return_val;
54
55 EXCEPTION
56 WHEN OTHERS THEN
57 IF cur_end_date%ISOPEN THEN
58 CLOSE cur_end_date;
59 END IF;
60
61 RAISE;
62 END next_period;
63
64 --------------------------------------------------------------------------
65 -- --
66 -- Name : NEXT_MONTH --
67 -- Type : FUNCTION --
68 -- Access : Private --
69 -- Description : Given a date, returns the date of the first day of --
70 -- the next month. --
71 -- --
72 -- Parameters : --
73 -- IN : p_date DATE --
74 -- RETURN : date --
75 -- --
76 -- Change History : --
77 --------------------------------------------------------------------------
78 -- Rev# Date Userid Description --
79 --------------------------------------------------------------------------
80 -- 1.0 16-JUL-2004 lnagaraj Created this function --
81 --------------------------------------------------------------------------
82 FUNCTION next_month ( p_date IN DATE
83 )
84 RETURN DATE
85 IS
86 l_procedure VARCHAR2(100);
87 BEGIN
88
89 RETURN TRUNC(add_months(p_date,1),'MM');
90
91 END next_month;
92
93 --------------------------------------------------------------------------
94 -- --
95 -- Name : NEXT_QUARTER --
96 -- Type : FUNCTION --
97 -- Access : Private --
98 -- Description : Given a date returns the first day of the next --
99 -- quarter. --
100 -- Parameters : --
101 -- IN : p_date DATE --
102 -- RETURN : date --
103 -- --
104 -- Change History : --
105 --------------------------------------------------------------------------
106 -- Rev# Date Userid Description --
107 --------------------------------------------------------------------------
108 -- 1.0 16-JUL-2004 lnagaraj Created this function --
109 --------------------------------------------------------------------------
110 FUNCTION next_quarter ( p_date IN DATE
111 )
112 RETURN DATE
113 IS
114
115 BEGIN
116
117 RETURN TRUNC(ADD_MONTHS(p_date,3),'Q');
118
119 END next_quarter;
120
121
122 --------------------------------------------------------------------------
123 -- --
124 -- Name : NEXT_TAX_YEAR --
125 -- Type : FUNCTION --
126 -- Access : Private --
127 -- Description : Given a date, returns the date of the first day of --
128 -- the next tax year. --
129 -- --
130 -- Parameters : --
131 -- IN : p_date DATE --
132 -- OUT : date --
133 -- --
134 -- Change History : --
135 --------------------------------------------------------------------------
136 -- Rev# Date Userid Description --
137 --------------------------------------------------------------------------
138 -- 1.0 16-JUL-2004 lnagaraj Created this function --
139 --------------------------------------------------------------------------
140 FUNCTION next_tax_year ( p_date IN DATE
141 )
142 RETURN DATE
143 IS
144 l_year number(4);
145 l_start DATE;
146 l_start_dd_mm VARCHAR2(6);
147 BEGIN
148 l_year := TO_NUMBER(TO_CHAR(p_date,'yyyy'));
149 l_start_dd_mm := '01-04-';
150
151 IF p_date >= TO_DATE(l_start_dd_mm||TO_CHAR(l_year),'dd-mm-yyyy') THEN
152 l_start := TO_DATE(l_start_dd_mm||TO_CHAR(l_year+1),'dd-mm-yyyy');
153 ELSE
154 l_start := TO_DATE(l_start_dd_mm||TO_CHAR(l_year),'dd-mm-yyyy');
155 END IF;
156 RETURN l_start;
157 END next_tax_year;
158
159 --------------------------------------------------------------------------
160 -- --
161 -- Name : NEXT_CAL_YEAR --
162 -- Type : FUNCTION --
163 -- Access : Private --
164 -- Description : Given a date, returns the date of the first day of --
165 -- the next calendar year. --
166 -- --
167 -- Parameters : --
168 -- IN : p_date DATE --
169 -- OUT : date --
170 -- --
171 -- Change History : --
172 --------------------------------------------------------------------------
173 -- Rev# Date Userid Description --
174 --------------------------------------------------------------------------
175 -- 1.0 16-JUL-2004 lnagaraj Created this function --
176 --------------------------------------------------------------------------
177 FUNCTION next_cal_year ( p_date IN DATE
178 )
179 RETURN DATE
180 IS
181 BEGIN
182 RETURN TRUNC(ADD_MONTHS(p_date,12),'Y');
183 END next_cal_year;
184
185 --------------------------------------------------------------------------
186 -- --
187 -- Name : NEXT_MAR_FEB_YEAR --
188 -- Type : FUNCTION --
189 -- Access : Private --
190 -- Description : Given a date, returns the date of the first day of --
191 -- the next Mar-Feb year. --
192 -- --
193 -- Parameters : --
194 -- IN : p_date DATE --
195 -- OUT : date --
196 -- --
197 -- Change History : --
198 --------------------------------------------------------------------------
199 -- Rev# Date Userid Description --
200 --------------------------------------------------------------------------
201 -- 1.0 16-JUL-2004 lnagaraj Created this function --
202 --------------------------------------------------------------------------
203 FUNCTION next_mar_feb_year ( p_date IN DATE
204 )
205 RETURN DATE
206 IS
207 l_year number(4);
208 l_start DATE;
209 l_start_dd_mm VARCHAR2(6);
210 BEGIN
211 l_year := TO_NUMBER(TO_CHAR(p_date,'yyyy'));
212 l_start_dd_mm := '01-03-';
213
214 IF p_date >= TO_DATE(l_start_dd_mm||TO_CHAR(l_year),'dd-mm-yyyy') THEN
215 l_start := TO_DATE(l_start_dd_mm||TO_CHAR(l_year+1),'dd-mm-yyyy');
216 ELSE
217 l_start := TO_DATE(l_start_dd_mm||TO_CHAR(l_year ),'dd-mm-yyyy');
218 END IF;
219 RETURN l_start;
220 END next_mar_feb_year;
221
222 --------------------------------------------------------------------------
223 -- --
224 -- Name : NEXT_HALF_YEAR --
225 -- Type : FUNCTION --
226 -- Access : Private --
227 -- Description : Given a date, returns the date of the first day of --
228 -- the NEXT Half Tax year. --
229 -- --
230 -- Parameters : --
231 -- IN : p_date DATE --
232 -- OUT : date --
233 -- --
234 -- Change History : --
235 --------------------------------------------------------------------------
236 -- Rev# Date Userid Description --
237 --------------------------------------------------------------------------
238 -- 1.0 16-JUL-2004 lnagaraj Created this function --
239 --------------------------------------------------------------------------
240 FUNCTION next_half_year ( p_date IN DATE
241 )
242 RETURN DATE
243 IS
244 l_year number(4);
245 l_month number(2);
246 l_start DATE;
247 l_half_start1 constant VARCHAR2(6) := '01-04-';
248 l_half_start2 constant VARCHAR2(6) := '01-10-';
249 BEGIN
250 l_year := TO_NUMBER(TO_CHAR(p_date,'yyyy'));
251 l_month:= TO_NUMBER(TO_CHAR(p_date,'mm'));
252
253 IF l_month BETWEEN 4 AND 9 THEN
254 l_start := TO_DATE(l_half_start2||TO_CHAR(l_year),'dd-mm-yyyy');
255 ELSIF l_month BETWEEN 10 and 12 THEN
256 l_start := TO_DATE(l_half_start1||TO_CHAR(l_year+1),'dd-mm-yyyy');
257 ELSE
258 l_start := TO_DATE(l_half_start1||TO_CHAR(l_year),'dd-mm-yyyy');
259 END IF;
260
261
262 RETURN l_start;
263 END next_half_year;
264
265 --------------------------------------------------------------------------
266 -- --
267 -- Name : NEXT_CAL_HALF_YEAR --
268 -- Type : FUNCTION --
269 -- Access : Private --
270 -- Description : Given a date, returns the date of the first day of --
271 -- the NEXT Half Tax year. --
272 -- --
273 -- Parameters : --
274 -- IN : p_date DATE --
275 -- OUT : date --
276 -- --
277 -- Change History : --
278 --------------------------------------------------------------------------
279 -- Rev# Date Userid Description --
280 --------------------------------------------------------------------------
281 -- 1.0 02-JUN-2008 rsaharay Created this function --
282 --------------------------------------------------------------------------
283 FUNCTION next_cal_half_year ( p_date IN DATE
284 )
285 RETURN DATE
286 IS
287 l_year number(4);
288 l_month number(2);
289 l_start DATE;
290 l_half_start1 constant VARCHAR2(6) := '01-01-';
291 l_half_start2 constant VARCHAR2(6) := '01-07-';
292 BEGIN
293 l_year := TO_NUMBER(TO_CHAR(p_date,'yyyy'));
294 l_month:= TO_NUMBER(TO_CHAR(p_date,'mm'));
295
296 IF l_month BETWEEN 1 AND 6 THEN
297 l_start := TO_DATE(l_half_start2||TO_CHAR(l_year),'dd-mm-yyyy');
298 ELSE
299 l_start := TO_DATE(l_half_start1||TO_CHAR(l_year+1),'dd-mm-yyyy');
300 END IF;
301
302
303 RETURN l_start;
304 END next_cal_half_year;
305
306 --------------------------------------------------------------------------
307
308 -- --
309 -- Name : DATE_EC --
310 -- Type : PROCEDURE --
311 -- Access : Public --
312 -- Description : This procedure assumes the date portion of the --
313 -- dimension name is always at the end to allow --
314 -- accurate identification since this is used for many --
315 -- dimensions. --
316 -- --
317 -- Parameters : --
318 -- IN : p_owner_payroll_action_id NUMBER --
319 -- p_user_payroll_action_id NUMBER --
320 -- p_owner_assignment_action_id NUMBER --
321 -- p_user_assignment_action_id NUMBER --
322 -- p_owner_effective_date DATE --
323 -- p_user_effective_date DATE --
324 -- p_dimension_name VARCHAR2 --
325 -- OUT : p_expiry_information NUMBER --
326 -- --
327 -- Change History : --
328 --------------------------------------------------------------------------
329 -- Rev# Date Userid Description --
330 --------------------------------------------------------------------------
331 -- 1.0 16-JUL-04 lnagaraj Created this procedure --
332 -- 1.1 07-OCT-04 lnagaraj Added Code for LTD dimensions --
333 --------------------------------------------------------------------------
334 PROCEDURE date_ec ( p_owner_payroll_action_id IN NUMBER
335 , p_user_payroll_action_id IN NUMBER
336 , p_owner_assignment_action_id IN NUMBER
337 , p_user_assignment_action_id IN NUMBER
338 , p_owner_effective_date IN DATE
339 , p_user_effective_date IN DATE
340 , p_dimension_name IN VARCHAR2
341 , p_expiry_information OUT NOCOPY NUMBER
342 )
343 IS
344
345 l_message VARCHAR2(255);
346 l_expiry_date DATE := NULL;
347 l_procedure VARCHAR2(100);
348
349
350 BEGIN
351
352 g_debug := hr_utility.debug_enabled;
353 l_procedure := g_package ||'date_ec1';
354 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
355
356 IF g_debug THEN
357 pay_in_utils.trace('**************************************************','********************');
358 pay_in_utils.trace('Owner Payroll Action id ',p_owner_payroll_action_id);
359 pay_in_utils.trace('User Payroll Action id ',p_user_payroll_action_id);
360 pay_in_utils.trace('Owner Assignment Action id ',p_owner_assignment_action_id);
361 pay_in_utils.trace('User Assignment Action id ',p_user_assignment_action_id);
362 pay_in_utils.trace('Owner Effective Date ',p_owner_effective_date);
363 pay_in_utils.trace('User Effective Date ',p_user_effective_date);
364 pay_in_utils.trace('Dimension Name ',p_dimension_name);
365 pay_in_utils.trace('**************************************************','********************');
366 END IF;
367
368 IF p_dimension_name LIKE '%RUN' THEN
369 -- must check for special case: if payroll action id's are the same,
370 -- then don't expire. This facilitates meaningful access of these
371 -- balances outside of runs.
372
373 IF p_owner_payroll_action_id <> p_user_payroll_action_id THEN
374 l_expiry_date := p_user_effective_date; -- always must expire.
375 ELSE
376 p_expiry_information := 0;
377 RETURN;
378 END IF;
379
380 ELSIF p_dimension_name LIKE '%PAYMENTS' THEN
381 -- must check for special case: if payroll action id's are the same,
382 -- then don't expire. This facilitates meaningful access of these
383 -- balances outside of runs.
384
385 IF p_owner_payroll_action_id <> p_user_payroll_action_id THEN
386 l_expiry_date := p_user_effective_date; -- always must expire.
387 ELSE
388 p_expiry_information := 0;
389 RETURN;
390 END IF;
391
392 ELSIF p_dimension_name LIKE '%PTD' THEN
393 l_expiry_date := next_period ( p_owner_payroll_action_id
394 , p_owner_effective_date
395 );
396
397 ELSIF p_dimension_name LIKE '%MTD' THEN
398 l_expiry_date := next_month ( p_owner_effective_date);
399
400 ELSIF p_dimension_name LIKE '%QTD' THEN
401 l_expiry_date := next_quarter ( p_owner_effective_date);
402
403 ELSIF p_dimension_name LIKE '%CYTD' THEN
404
405 l_expiry_date := next_cal_year ( p_owner_effective_date);
406
407 ELSIF p_dimension_name LIKE '%MAR_FEB_YTD' THEN
408
409 l_expiry_date := next_mar_feb_year ( p_owner_effective_date);
410 ELSIF p_dimension_name LIKE '%CHYTD' THEN
411
412 l_expiry_date := next_cal_half_year ( p_owner_effective_date);
413
414 ELSIF p_dimension_name LIKE '%HYTD' THEN
415
416 l_expiry_date := next_half_year ( p_owner_effective_date);
417
418 ELSIF p_dimension_name LIKE '%YTD' THEN
419 l_expiry_date := next_tax_year ( p_owner_effective_date);
420 /* Changes for 3839878 Start */
421 ELSIF p_dimension_name LIKE '%LTD' THEN
422 p_expiry_information := 0;
423 RETURN;
424 /* Changes for 3839878 End */
425
426 ELSE
427 hr_utility.set_message(801,'NO_EXP_CHECK_FOR_DIMENSION');
428 hr_utility.raise_error;
429
430 END IF;
431
432 IF p_user_effective_date >= l_expiry_date THEN
433 p_expiry_information := 1;
434 ELSE
435 p_expiry_information := 0;
436 END IF;
437
438 IF g_debug THEN
439 pay_in_utils.trace('**************************************************','********************');
440 pay_in_utils.trace('Expiry Date ',l_expiry_date);
441 pay_in_utils.trace('Expiry Information ',p_expiry_information);
442 pay_in_utils.trace('**************************************************','********************');
443 END IF;
444 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
445
446 END date_ec;
447
448 --------------------------------------------------------------------------
449 -- --
450 -- Name : DATE_EC --
451 -- Type : PROCEDURE --
452 -- Access : Public --
453 -- Description : This procedure assumes the date portion of the --
454 -- dimension name is always at the end to allow --
455 -- accurate identification since this is used for many --
456 -- dimensions. --
457 -- --
458 -- Parameters : --
459 -- IN : p_owner_payroll_action_id NUMBER --
460 -- p_user_payroll_action_id NUMBER --
461 -- p_owner_assignment_action_id NUMBER --
462 -- p_user_assignment_action_id NUMBER --
463 -- p_owner_effective_date DATE --
464 -- p_user_effective_date DATE --
465 -- p_dimension_name VARCHAR2 --
469 --------------------------------------------------------------------------
466 -- OUT : p_expiry_information DATE --
467 -- --
468 -- Change History : --
470 -- Rev# Date Userid Description --
471 --------------------------------------------------------------------------
472 -- 1.0 16-JUL-04 lnagaraj Created this procedure --
473 -- 1.1 07-OCT-04 lnagaraj Added Code for LTD dimension --
474 --------------------------------------------------------------------------
475
476 PROCEDURE date_ec ( p_owner_payroll_action_id IN NUMBER
477 , p_user_payroll_action_id IN NUMBER
478 , p_owner_assignment_action_id IN NUMBER
479 , p_user_assignment_action_id IN NUMBER
480 , p_owner_effective_date IN DATE
481 , p_user_effective_date IN DATE
482 , p_dimension_name IN VARCHAR2
483 , p_expiry_information OUT NOCOPY DATE
484 )
485 IS
486
487
488 l_expiry_date DATE := NULL;
489 l_procedure VARCHAR2(100);
490 l_message VARCHAR2(255);
491
492
493 BEGIN
494
495 g_debug := hr_utility.debug_enabled;
496 l_procedure := g_package ||'date_ec2';
497 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
498
499 IF g_debug THEN
500 pay_in_utils.trace('**************************************************','********************');
501 pay_in_utils.trace('Owner Payroll Action id ',p_owner_payroll_action_id);
502 pay_in_utils.trace('User Payroll Action id ',p_user_payroll_action_id);
503 pay_in_utils.trace('Owner Assignment Action id ',p_owner_assignment_action_id);
504 pay_in_utils.trace('User Assignment Action id ',p_user_assignment_action_id);
505 pay_in_utils.trace('Owner Effective Date ',p_owner_effective_date);
506 pay_in_utils.trace('User Effective Date ',p_user_effective_date);
507 pay_in_utils.trace('Dimension Name ',p_dimension_name);
508 pay_in_utils.trace('**************************************************','********************');
509 END IF;
510
511
512 IF p_dimension_name LIKE '%RUN' THEN
513 -- must check for special case: if payroll action id's are the same,
514 -- then don't expire. This facilitates meaningful access of these
515 -- balances outside of runs.
516
517 p_expiry_information := p_owner_effective_date;
518
519 ELSIF p_dimension_name LIKE '%PAYMENTS' THEN
520
521 p_expiry_information := p_owner_effective_date;
522
523 ELSIF p_dimension_name LIKE '%PTD' THEN
524 p_expiry_information := next_period ( p_owner_payroll_action_id
525 , p_owner_effective_date
526 ) - 1 ;
527
528 ELSIF p_dimension_name LIKE '%MTD' THEN
529 p_expiry_information := next_month ( p_owner_effective_date) - 1 ;
530
531 ELSIF p_dimension_name LIKE '%QTD' THEN
532 p_expiry_information := next_quarter ( p_owner_effective_date) - 1 ;
533
534 ELSIF p_dimension_name LIKE '%CYTD' THEN
535
536 p_expiry_information := next_cal_year ( p_owner_effective_date)-1;
537
538 ELSIF p_dimension_name LIKE '%CHYTD' THEN
539
540 p_expiry_information := next_cal_half_year ( p_owner_effective_date)-1;
541
542
543 ELSIF p_dimension_name LIKE '%MAR_FEB_YTD' THEN
544
545 p_expiry_information := next_mar_feb_year ( p_owner_effective_date)-1;
546 ELSIF p_dimension_name LIKE '%HYTD' THEN
547
548 p_expiry_information := next_half_year ( p_owner_effective_date)-1;
549
550 ELSIF p_dimension_name LIKE '%YTD' THEN
551 p_expiry_information := next_tax_year ( p_owner_effective_date) - 1 ;
552 /* Changes for 3839878 Start */
553 ELSIF p_dimension_name LIKE '%LTD' THEN
554 p_expiry_information := fnd_date.canonical_to_date('4712/12/31');
555 /* Changes for 3839878 End */
556 ELSE
557 hr_utility.set_message(801,'NO_EXP_CHECK_FOR_DIMENSION');
558 hr_utility.raise_error;
559
560 END IF;
561
562 IF g_debug THEN
563 pay_in_utils.trace('**************************************************','********************');
564 pay_in_utils.trace('Expiry Information ',p_expiry_information);
565 pay_in_utils.trace('**************************************************','********************');
566 END IF;
567
568 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
569
570 END date_ec;
571
572 PROCEDURE cal_hy_start(p_effective_date IN DATE ,
573 p_start_date OUT NOCOPY DATE,
574 p_start_date_code IN VARCHAR2 DEFAULT NULL,
575 p_payroll_id IN NUMBER DEFAULT NULL,
576 p_bus_grp IN NUMBER DEFAULT NULL,
577 p_action_type IN VARCHAR2 DEFAULT NULL,
578 p_asg_action IN NUMBER DEFAULT NULL)
579 AS
580
581 l_year NUMBER(4);
582 l_month NUMBER(2);
583 l_half_start1 CONSTANT VARCHAR2(6):='01-01-';
584 l_half_start2 CONSTANT VARCHAR2(6):= '01-07-';
585 l_procedure VARCHAR2(100);
586 l_message VARCHAR2(255);
590 l_procedure := g_package ||'cal_hy_start';
587
588 BEGIN
589 g_debug := hr_utility.debug_enabled;
591 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
592
593 p_start_date :=NULL;
594 l_year := TO_NUMBER (TO_CHAR(p_effective_date,'yyyy'));
595 l_month := TO_NUMBER (TO_CHAR(p_effective_date,'mm'));
596
597 IF l_month BETWEEN 1 and 6 THEN
598 p_start_date:=TO_DATE(l_half_start1||TO_CHAR(l_year),'DD-MM-YYYY');
599 ELSE
600 p_start_date:=TO_DATE(l_half_start2||TO_CHAR(l_year),'DD-MM-YYYY');
601 END IF;
602
603 IF g_debug THEN
604 pay_in_utils.trace('**************************************************','********************');
605 pay_in_utils.trace('Effective Date ',p_effective_date);
606 pay_in_utils.trace('Start Date ',p_start_date);
607 pay_in_utils.trace('**************************************************','********************');
608 END IF;
609
610 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
611
612 END;
613
614
615
616
617 PROCEDURE prov_ytd_start(p_effective_date IN DATE ,
618 p_start_date OUT NOCOPY DATE,
619 p_start_date_code IN VARCHAR2 DEFAULT NULL,
620 p_payroll_id IN NUMBER DEFAULT NULL,
621 p_bus_grp IN NUMBER DEFAULT NULL,
622 p_action_type IN VARCHAR2 DEFAULT NULL,
623 p_asg_action IN NUMBER DEFAULT NULL)
624 AS
625
626 l_year NUMBER(4);
627 l_message VARCHAR2(255);
628 l_procedure VARCHAR2(100);
629
630 BEGIN
631 g_debug := hr_utility.debug_enabled;
632 l_procedure := g_package ||'prov_ytd_start';
633 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
634
635 p_start_date :=NULL;
636 l_year := TO_NUMBER (TO_CHAR(p_effective_date,'yyyy'));
637
638 IF p_effective_date>=TO_DATE('01-03-'||TO_CHAR(l_year),'DD-MM-YYYY') THEN
639 p_start_date := TO_DATE('01-03-'||TO_CHAR(l_year),'DD-MM-YYYY');
640 ELSE
641 p_start_date := TO_DATE('01-03-'||TO_CHAR(l_year-1),'DD-MM-YYYY');
642 END IF;
643
644 IF g_debug THEN
645 pay_in_utils.trace('**************************************************','********************');
646 pay_in_utils.trace('Effective Date ',p_effective_date);
647 pay_in_utils.trace('Start Date ',p_start_date);
648 END IF;
649
650 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
651
652 END;
653
654 PROCEDURE hytd_start(p_effective_date IN DATE ,
655 p_start_date OUT NOCOPY DATE,
656 p_start_date_code IN VARCHAR2 DEFAULT NULL,
657 p_payroll_id IN NUMBER DEFAULT NULL,
658 p_bus_grp IN NUMBER DEFAULT NULL,
659 p_action_type IN VARCHAR2 DEFAULT NULL,
660 p_asg_action IN NUMBER DEFAULT NULL)
661 AS
662
663 l_year NUMBER(4);
664 l_month NUMBER(2);
665 l_half_start1 CONSTANT VARCHAR2(6):='01-04-';
666 l_half_start2 CONSTANT VARCHAR2(6):= '01-10-';
667 l_procedure VARCHAR2(100);
668 l_message VARCHAR2(255);
669
670 BEGIN
671 g_debug := hr_utility.debug_enabled;
672 l_procedure := g_package ||'hytd_start';
673 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
674
675 p_start_date :=NULL;
676 l_year := TO_NUMBER (TO_CHAR(p_effective_date,'yyyy'));
677 l_month := TO_NUMBER (TO_CHAR(p_effective_date,'mm'));
678
679 IF l_month BETWEEN 4 and 9 THEN
680 p_start_date:=TO_DATE(l_half_start1||TO_CHAR(l_year),'DD-MM-YYYY');
681 ELSIF l_month BETWEEN 10 and 12 THEN
682 p_start_date:=TO_DATE(l_half_start2||TO_CHAR(l_year),'DD-MM-YYYY');
683 ELSE
684 p_start_date:=TO_DATE(l_half_start2||TO_CHAR(l_year-1),'DD-MM-YYYY');
685 END IF;
686
687 IF g_debug THEN
688 pay_in_utils.trace('**************************************************','********************');
689 pay_in_utils.trace('Effective Date ',p_effective_date);
690 pay_in_utils.trace('Start Date ',p_start_date);
691 pay_in_utils.trace('**************************************************','********************');
692 END IF;
693
694 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
695
696 END;
697
698
699
700 --------------------------------------------------------------------------
701 -- --
702 -- Name : START_CODE_PMTH --
703 -- Type : PROCEDURE --
704 -- Access : Public --
705 -- Description : This procedure finds the start date based on the --
706 -- effective date for the dimension name _ASG_PMTH --
707 -- --
708 -- Parameters : --
709 -- IN : p_effective_date DATE --
710 -- p_payroll_id NUMBER --
711 -- p_bus_grp NUMBER --
712 -- p_asg_action NUMBER --
716 -- Change History : --
713 -- OUT : p_start_date DATE --
714 -- RETURN : N/A --
715 -- --
717 --------------------------------------------------------------------------
718 -- Rev# Date Userid Description --
719 --------------------------------------------------------------------------
720 -- 1.0 15-Sep-2004 abhjain Created the procedure --
721 --------------------------------------------------------------------------
722 PROCEDURE start_code_pmth ( p_effective_date IN DATE
723 , p_start_date OUT NOCOPY DATE
724 , p_payroll_id IN NUMBER
725 , p_bus_grp IN NUMBER
726 , p_asg_action IN NUMBER
727 )
728 IS
729 l_procedure VARCHAR2(100);
730 l_message VARCHAR2(255);
731 BEGIN
732 g_debug := hr_utility.debug_enabled;
733 l_procedure := g_package ||'start_code_pmth';
734 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
735
736 p_start_date := last_day(add_months(p_effective_date, -2))+1;
737
738 IF g_debug THEN
739 pay_in_utils.trace('**************************************************','********************');
740 pay_in_utils.trace('Effective Date ',p_effective_date);
741 pay_in_utils.trace('Start Date ',p_start_date);
742 pay_in_utils.trace('**************************************************','********************');
743 END IF;
744
745 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
746
747
748 END start_code_pmth;
749
750 --------------------------------------------------------------------------
751 -- --
752 -- Name : START_CODE_P10MTH --
753 -- Type : PROCEDURE --
754 -- Access : Public --
755 -- Description : This procedure finds the start date based on the --
756 -- effective date for the dimension name _ASG_P10MTH --
757 -- --
758 -- Parameters : --
759 -- IN : p_effective_date DATE --
760 -- p_payroll_id NUMBER --
761 -- p_bus_grp NUMBER --
762 -- p_asg_action NUMBER --
763 -- OUT : p_start_date DATE --
764 -- RETURN : N/A --
765 -- --
766 -- Change History : --
767 --------------------------------------------------------------------------
768 -- Rev# Date Userid Description --
769 --------------------------------------------------------------------------
770 -- 1.0 14-Oct-2004 lnagaraj Created the procedure --
771 --------------------------------------------------------------------------
772 PROCEDURE start_code_p10mth ( p_effective_date IN DATE
773 , p_start_date OUT NOCOPY DATE
774 , p_payroll_id IN NUMBER
775 , p_bus_grp IN NUMBER
776 , p_asg_action IN NUMBER
777 )
778 IS
779 l_procedure VARCHAR2(100);
780 l_message VARCHAR2(255);
781 BEGIN
782 g_debug := hr_utility.debug_enabled;
783 l_procedure := g_package ||'start_code_p10mth';
784 pay_in_utils.set_location(g_debug,'Entering: '||l_procedure,10);
785
786 p_start_date := last_day(add_months(p_effective_date, -11))+1;
787
788 IF g_debug THEN
789 pay_in_utils.trace('**************************************************','********************');
790 pay_in_utils.trace('Effective Date ',p_effective_date);
791 pay_in_utils.trace('Start Date ',p_start_date);
792 pay_in_utils.trace('**************************************************','********************');
793 END IF;
794 pay_in_utils.set_location(g_debug,'Leaving : '||l_procedure, 20);
795
796 END start_code_p10mth;
797
798
799 END pay_in_exc;