[Home] [Help]
PACKAGE BODY: APPS.PAY_ES_COURT_ORDER_DEDUCTION
Source
1 PACKAGE BODY pay_es_court_order_deduction as
2 /* $Header: pyescodc.pkb 120.0.12010000.2 2008/08/06 07:11:18 ubhat ship $ */
3 --------------------------------------------------------------------------------
4 -- CALC_COURT_ORDER_DEDUCTION
5 --------------------------------------------------------------------------------
6 FUNCTION calc_court_order_deduction(p_business_gr_id NUMBER
7 ,p_effective_date DATE
8 ,p_minimum_wage NUMBER
9 ,p_annual_salary NUMBER
10 ,p_age NUMBER) RETURN NUMBER
11 IS
12 CURSOR csr_get_table_range(c_salary NUMBER
13 ,c_wage NUMBER
14 ,c_effective_date DATE) IS
15 SELECT /*+ ORDERED*/ to_number(pur.row_low_range_or_name) Low_value
16 ,to_number(pur.row_high_range) High_value
17 FROM pay_user_tables put
18 ,pay_user_rows_f pur
19 WHERE put.user_table_name = 'ES_COURT_ORDER_DEDUCTION_SCALE'
20 AND put.user_table_id = pur.user_table_id
21 AND put.legislation_code = 'ES'
22 AND pur.legislation_code = 'ES'
23 AND (c_salary > to_number(pur.row_low_range_or_name) * c_wage
24 OR c_salary BETWEEN to_number(pur.row_low_range_or_name) * c_wage
25 AND to_number(pur.row_high_range * c_wage))
26 AND c_effective_date between pur.effective_start_date AND pur.effective_end_date
27 ORDER BY 1;
28 --
29 l_perc NUMBER;
30 l_co_deduction NUMBER;
31 l_salary NUMBER;
32 --
33 BEGIN
34 --
35 l_co_deduction := 0;
36 l_salary := p_annual_salary;
37 FOR l_rec in csr_get_table_range(p_annual_salary
38 ,p_minimum_wage
39 ,p_effective_date) LOOP
40 hr_utility.trace('High Val :'||l_rec.high_value||' Low Val :'||l_rec.low_value);
41 BEGIN
42 l_perc := hruserdt.get_table_value(p_bus_group_id => p_business_gr_id
43 ,p_table_name => 'ES_COURT_ORDER_DEDUCTION_SCALE'
44 ,p_col_name => 'DEDUCTION_SCALE'
45 ,p_row_value => l_rec.low_value
46 ,p_effective_date => p_effective_date);
47 EXCEPTION
48 WHEN NO_DATA_FOUND THEN
49 l_perc := 0;
50 END;
51 hr_utility.trace('High Val :'||l_rec.high_value||' Low Val :'||l_rec.low_value||' perc :'||l_perc);
52 l_co_deduction := l_co_deduction + (LEAST(p_minimum_wage, l_salary)* l_perc/100);
53 l_salary := l_salary - p_minimum_wage;
54 END LOOP;
55
56 RETURN l_co_deduction;
57 END calc_court_order_deduction;
58 --
59 END pay_es_court_order_deduction;