DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_US_UPDATE_TAX_REC_PKG

Source


1 PACKAGE BODY pay_us_update_tax_rec_pkg AS
2 /* $Header: pyusutxr.pkb 120.0 2005/05/29 10:07:53 appldev noship $ */
3 
4      PROCEDURE terminate_emp_tax_records ( p_assignment_id NUMBER
5 					  ,p_process_date  DATE
6 					  ,p_actual_termination_date DATE default NULL)
7      IS
8 
9 	l_new_end_date	DATE;
10 	l_ef_date	DATE;
11 	l_default_date 	DATE;
12 	l_dt_mode	VARCHAR2(30);
13 	l_proc		VARCHAR2(100) := 'pay_us_update_tax_rec_pkg.terminate_emp_tax_records';
14 
15 	CURSOR csr_tax_defaulting(p_asg_id NUMBER) is
16 	select	min(ftr.effective_start_date)
17 	from	pay_us_emp_fed_tax_rules_f ftr
18 	where	ftr.assignment_id = p_asg_id;
19 
20 
21 	CURSOR csr_tax_entries(p_asg_id NUMBER,p_ef_date DATE) is
22 	select	pee.element_entry_id
23 	from	pay_element_entries_f pee,
24 		pay_element_links_f pel,
25 		pay_element_types_f pet
26 	where	pee.element_link_id = pel.element_link_id
27 	  and	pel.element_type_id = pet.element_type_id
28 	  and	p_ef_date between pet.effective_start_date and pet.effective_end_date
29 	  and	p_ef_date between pel.effective_start_date and pel.effective_end_date
30 	  and	p_ef_date between pee.effective_start_date and pee.effective_end_date
31 	  and	(pet.element_name like '%VERTEX%'
32 	         or upper(pet.element_name) = 'WORKERS COMPENSATION')
33 	  and	pee.assignment_id = p_asg_id;
34 
35      BEGIN
36 
37 	 hr_utility.trace('Entering: ' || l_proc);
38 	 open csr_tax_defaulting(p_assignment_id);
39 	 fetch csr_tax_defaulting into l_default_date;
40 
41 	 if csr_tax_defaulting%NOTFOUND then
42 		-- no defaulting, then nothing to do!
43 		close csr_tax_defaulting;
44 		return;
45 	 end if;
46 
47 	 close csr_tax_defaulting;
48 
49 	 if (p_process_date is null) then
50 		if (p_actual_termination_date is null) then
51          		hr_utility.set_message(801,'HR_6153_ALL_PROCEDURE_FAIL');
52          		hr_utility.set_message_token('PROCEDURE','PROCESS_US_TAX_RULES');
53          		hr_utility.set_message_token('STEP',1);
54          		hr_utility.raise_error;
55 
56 		else
57 			l_new_end_date := hr_api.g_eot;
58 			l_ef_date := p_actual_termination_date;
59 		end if;
60 	 else
61 		l_new_end_date := p_process_date;
62 		l_ef_date := p_process_date;
63 
64 	 end if;
65 
66          if hr_general.chk_maintain_tax_records = 'Y' then
67 
68              hr_utility.set_location(l_proc,6);
69              UPDATE  pay_us_emp_fed_tax_rules_f peft
70              SET     peft.effective_end_date    = l_new_end_date
71              WHERE   peft.assignment_id         = p_assignment_id
72              AND     l_ef_date
73              BETWEEN peft.effective_start_date AND peft.effective_end_date;
74              --
75 	     DELETE pay_us_emp_fed_tax_rules_f peft
76 	     WHERE  peft.assignment_id 		= p_assignment_id
77 	     AND    peft.effective_start_date 	> l_ef_date;
78 	     --
79              hr_utility.set_location(l_proc,7);
80              UPDATE  pay_us_emp_state_tax_rules_f pest
81              SET     pest.effective_end_date    =  l_new_end_date
82              WHERE   pest.assignment_id         =  p_assignment_id
83              AND     l_ef_date
84              BETWEEN pest.effective_start_date AND pest.effective_end_date;
85              --
86 	     DELETE pay_us_emp_state_tax_rules_f pest
87 	     WHERE  pest.assignment_id 		= p_assignment_id
88 	     AND    pest.effective_start_date 	> l_ef_date;
89 	     --
90              hr_utility.set_location(l_proc,8);
91              UPDATE  pay_us_emp_county_tax_rules_f pect
92              SET     pect.effective_end_date    =  l_new_end_date
93              WHERE   pect.assignment_id         = p_assignment_id
94              AND     l_ef_date
95              BETWEEN pect.effective_start_date  AND pect.effective_end_date;
96              --
97 	     DELETE pay_us_emp_county_tax_rules_f pect
98 	     WHERE  pect.assignment_id 		= p_assignment_id
99 	     AND    pect.effective_start_date 	> l_ef_date;
100              --
101              hr_utility.set_location(l_proc,9);
102              UPDATE  pay_us_emp_city_tax_rules_f pecit
103              SET     pecit.effective_end_date   =  l_new_end_date
104              WHERE   pecit.assignment_id        =  p_assignment_id
105              AND     l_ef_date
106              BETWEEN pecit.effective_start_date AND pecit.effective_end_date;
107              --
108 	     DELETE pay_us_emp_city_tax_rules_f pecit
109 	     WHERE  pecit.assignment_id 	= p_assignment_id
110 	     AND    pecit.effective_start_date 	> l_ef_date;
111              --
112 	end if; -- maintaining tax records
113 
114 	if hr_utility.chk_product_install(p_product =>'Oracle Payroll',
115                                           p_legislation => 'US')
116 	   and p_process_date is null  then
117 
118 	     -- We need to clean out the Vertex Element Entries.
119 	     -- We don't want to end date them, just erase any future changes.
120 	     -- We don't do anything if final_process date is set, since
121 	     -- the element ending code will handle that case.
122 
123 	   -- if defaulting has happened in the future, we want to zap the ee's
124 	   -- else we want to delete any changes after the ATD
125 
126 	   if l_default_date > l_ef_date then
127 		l_ef_date := l_default_date;
128 		l_dt_mode := hr_api.g_zap;
129 	   else
130 		l_dt_mode := hr_api.g_future_change;
131 	   end if;
132 
133 	   hr_utility.set_location(l_proc,10);
134 	   for c_ele_rec in csr_tax_entries(p_assignment_id,l_ef_date)
135 	   loop
136 
137 		hr_entry_api.delete_element_entry(
138  		 p_dt_delete_mode  	=> l_dt_mode,
139   		 p_session_date		=> l_ef_date,
140   		 p_element_entry_id    	=> c_ele_rec.element_entry_id
141  		);
142 
143 
144 	   end loop;
145 
146 	end if; -- payroll installed
147 
148 	hr_utility.trace(' Leaving: ' || l_proc);
149 
150 
151      EXCEPTION
152           when NO_DATA_FOUND then
153                NULL;
154 
155      END terminate_emp_tax_records;
156 
157 
158      PROCEDURE reverse_term_emp_tax_records ( p_assignment_id  NUMBER
159                                              ,p_process_date   DATE)
160      IS
161      BEGIN
162      --
163         hr_utility.trace('Entered reverse_term_emp_tax_records for assign ' ||
164                          p_assignment_id );
165         --
166 	hr_utility.set_location
167 	('pay_us_update_tax_rec_pkg.reverse_term_emp_tax_records',5);
168         UPDATE  pay_us_emp_fed_tax_rules_f peft
169         SET     peft.effective_end_date    =
170                 to_date('31/12/4712','DD/MM/YYYY')
171         WHERE   peft.assignment_id         = p_assignment_id
172         AND     peft.effective_end_date    = p_process_date;
173         --
174 	hr_utility.set_location
175 	('pay_us_update_tax_rec_pkg.reverse_term_emp_tax_records',6);
176         UPDATE  pay_us_emp_state_tax_rules_f pest
177         SET     pest.effective_end_date    =
178                 to_date('31/12/4712','DD/MM/YYYY')
179         WHERE   pest.assignment_id         = p_assignment_id
180         AND     pest.effective_end_date    = p_process_date;
181         --
182 	hr_utility.set_location
183 	('pay_us_update_tax_rec_pkg.reverse_term_emp_tax_records',7);
184         UPDATE  pay_us_emp_county_tax_rules_f pect
185         SET     pect.effective_end_date    =
186                 to_date('31/12/4712','DD/MM/YYYY')
187         WHERE   pect.assignment_id         = p_assignment_id
188         AND     pect.effective_end_date    = p_process_date;
189        --
190 	hr_utility.set_location
191 	('pay_us_update_tax_rec_pkg.reverse_term_emp_tax_records',8);
192         UPDATE  pay_us_emp_city_tax_rules_f pecit
193         SET     pecit.effective_end_date   =
194                 to_date('31/12/4712','DD/MM/YYYY')
195         WHERE   pecit.assignment_id        = p_assignment_id
196         AND     pecit.effective_end_date   = p_process_date;
197         --
198         EXCEPTION
199            when NO_DATA_FOUND then
200                 NULL;
201 
202      END reverse_term_emp_tax_records;
203 
204 end pay_us_update_tax_rec_pkg;