DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_ZA_TAX_REG_AR

Source


1 PACKAGE BODY PAY_ZA_TAX_REG_AR as
2 /* $Header: pyzatxreg.pkb 120.1.12020000.3 2013/02/07 10:42:56 abdash noship $ */
3 /* Copyright (c) 2001 Oracle Corporation Redwood Shores, California, USA */
4 /*                       All rights reserved.
5 
6 Change List:
7 ------------
8 
9 Name           Date          Version   Bug       Text
10 -------------- -----------   -------   -------   -----------------------
11 NCHINNAM      29-NOv-2011    120.0.12010000.1               Initial Version
12 ABDASH        01-Feb-2013    120.0.12010000.3 16174886 ADDING OF LEGAL ENTITY PARAMETER TO TAX REGISTER REPORT(XML)
13 ABDASH        05-Feb-2013    120.0.12010000.4 16174886 ADDING OF LEGAL ENTITY PARAMETER TO TAX REGISTER REPORT(XML)
14 ABDASH        07-Feb-2013    120.0.12010000.5 16174886 ADDING OF LEGAL ENTITY PARAMETER TO TAX REGISTER REPORT(XML)
15 */
16 
17 -------------------------------------------------------------------------------
18 --                               PACKAGE BODY                                --
19 -------------------------------------------------------------------------------
20 
21 ------------------
22 -- Package Globals
23 ------------------
24   g_package    constant varchar2(30):= 'pay_za_tax_reg_rep.';
25 
26   -- Legislative Parameters
27   g_payroll_id       pay_payrolls_f.payroll_id%type   ;
28   g_st_period_id     per_time_periods.time_period_id%type;
29   g_end_period_id    per_time_periods.time_period_id%type;
30   g_payroll_name     pay_payrolls_f.payroll_name%type := null;
31   g_end_period_date  per_time_periods.end_date%type;
32   g_inc_all_asg      VARCHAR2(1);
33   g_spc_asg_id       per_all_assignments_f.assignment_id%TYPE;
34   g_ret_ptd          VARCHAR2(1);
35   g_ret_mtd          VARCHAR2(1);
36   g_ret_ytd          VARCHAR2(1);
37   g_sort1            VARCHAR2(100);
38   g_sort2            VARCHAR2(100);
39   g_sort3            VARCHAR2(100);
40   g_print_det        VARCHAR2(1);
41   g_debug            VARCHAR2(1);
42   g_legal_entity_id  NUMBER;
43 
44   g_tax_year per_time_periods.prd_information1%type;
45 
46 
47 FUNCTION get_parameter(p_parameter_string IN VARCHAR2,
48                        p_token            IN VARCHAR2) RETURN VARCHAR2
49 IS
50   l_parameter  pay_payroll_actions.legislative_parameters%TYPE:=NULL;
51   l_start_pos  NUMBER;
52   l_delimiter  varchar2(1):=' ';
53 BEGIN
54   l_start_pos := instr(' '||p_parameter_string,l_delimiter||p_token||'=');
55   IF l_start_pos = 0 THEN
56     l_delimiter := '|';
57     l_start_pos := instr(' '||p_parameter_string,l_delimiter||p_token||'=');
58   end if;
59   IF l_start_pos <> 0 THEN
60     l_start_pos := l_start_pos + length(p_token||'=');
61     l_parameter := substr(p_parameter_string,
62                           l_start_pos,
63                           instr(p_parameter_string||' ',
64                           l_delimiter,l_start_pos)
65                           - l_start_pos);
66   END IF;
67   RETURN l_parameter;
68 END get_parameter;
69 
70 procedure range_cursor(pactid in number,
71                        sqlstr out nocopy varchar2)
72 is
73   l_proc      constant varchar2(80) := g_package ||'range_cursor';
74 
75   leg_param            pay_payroll_actions.legislative_parameters%type;
76 
77 begin
78   -- hr_utility.trace_on(null,'ZATAXREGAR');
79   hr_utility.set_location('Entering: '||l_proc,10);
80   hr_utility.set_location('pactid: '||pactid,10);
81 
82    -- Retrieve legislative parameters from the archiver payroll action
83    select legislative_parameters
84    into   leg_param
85    from   pay_payroll_actions
86    where  payroll_action_id = pactid;
87 
88   hr_utility.set_location('leg_param:'||leg_param,20);
89 
90   -- Get Parameters
91   g_legal_entity_id := get_parameter(leg_param,'LEGAL_ENTITY');
92   g_end_period_date := fnd_date.canonical_to_date(get_parameter(leg_param,'END_PERIOD_DATE'));
93   g_spc_asg_id      := get_parameter(leg_param,'SPC_ASG');
94 
95   hr_utility.set_location('g_legal_entity_id:'||g_legal_entity_id,20);
96   hr_utility.set_location('g_end_period_date:'||g_end_period_date,20);
97 
98 -- commenting this out as this range cursor is no longer valid
99 /*
100   sqlstr :=
101 	   'SELECT distinct PAF.person_id
102 	    FROM   per_assignments_f   PAF,
103 	           pay_payrolls_f      PPY,
104 	           pay_payroll_actions PPA
105 	    WHERE  PPA.payroll_action_id     = :payroll_action_id
106 	      AND  PAF.business_group_id     = PPA.business_group_id
107 	      AND  PPY.payroll_id            = PAF.payroll_id
108 	      AND  PPY.payroll_id            = '||g_payroll_id||'
109 	    ORDER  BY PAF.person_id';
110 */
111 
112 -- new range cursor
113 sqlstr :=
114           'SELECT distinct PAF.person_id
115            FROM per_assignments_f   PAF,
116                 pay_payrolls_f      PPY,
117                 pay_payroll_actions PPA,
118                 per_assignment_extra_info AEI
119            WHERE PPA.payroll_action_id = :payroll_action_id
120              AND PAF.business_group_id = PPA.business_group_id
121              AND PPY.payroll_id        = PAF.payroll_id
122              AND AEI.assignment_id     = PAF.assignment_id
123              AND AEI.aei_information_category = ''ZA_SPECIFIC_INFO''
124              AND AEI.aei_information7 = to_char('||g_legal_entity_id||')';
125 
126    if (g_spc_asg_id is not null) then
127       sqlstr := sqlstr ||' AND  PAF.assignment_id = '||g_spc_asg_id;
128    end if;
129 
130 sqlstr := sqlstr|| ' ORDER  BY PAF.person_id';
131 
132   hr_utility.set_location(' Leaving: '||l_proc,100);
133 end range_cursor;
134 
135 procedure action_creation(pactid    in number,
136                           stperson  in number,
137                           endperson in number,
138                           chunk     in number)
139 is
140 
141    -----------------------------------------------------------------
142    -- Cursor csr_processed_assignments
143    -- Selects processed assignments and corresponding person details
144    -- for a specific legal entity within two time periods
145    -- returning the maximum assignment action
146 
147    -----------------------------------------------------------------
148    -- TODO Tune this cursor so as to retrive only required onfo
149    CURSOR csr_processed_assignments (
150        p_payroll_id      IN pay_all_payrolls_f.payroll_id%TYPE      DEFAULT NULL
151      , p_period_end_date IN per_time_periods.end_date%TYPE
152      , p_asg_id          IN per_all_assignments_f.assignment_id%TYPE DEFAULT NULL
153      , p_legal_entity_id NUMBER
154      )
155    IS
156       SELECT   PAF.assignment_id
157         FROM  per_assignments_f  PAF
158             , per_assignment_extra_info aei
159             , per_time_periods ptp
160         WHERE PAF.payroll_id        = nvl(p_payroll_id, PAF.payroll_id)
161          AND PAF.assignment_id      = nvl(p_asg_id, PAF.assignment_id)
162          AND aei.assignment_id      = PAF.assignment_id
163          AND aei.aei_information_category = 'ZA_SPECIFIC_INFO'
164          AND aei.aei_information7 = to_char(p_legal_entity_id)
165          AND PAF.effective_end_date =  (select max(PAF2.effective_end_date)
166                                         from   per_assignments_f PAF2
167                                         where  PAF2.assignment_id = PAF.assignment_id
168                                         and    PAF2.payroll_id = PAF.payroll_id)
169          AND PAF.person_id BETWEEN stperson and endperson
170          AND ptp.payroll_id =  PAF.payroll_id
171          and p_period_end_date between ptp.start_date and ptp.end_date
172          AND exists
173             ( select 1 from
174                       pay_assignment_actions paa3,
175                       pay_payroll_actions ppa2
176               where paa3.assignment_id = PAF.assignment_id
177               and   paa3.payroll_action_id = ppa2.payroll_action_id
178               and  ppa2.action_type       IN ('R', 'Q', 'I', 'B', 'V')
179               and  ppa2.time_period_id    >= (select MIN(ptp1.time_period_id) min_time_period
180                                               from   per_time_periods ptp1
181                                               where  ptp1.payroll_id = PAF.payroll_id
182                                               and    ptp1.prd_information1 = ptp.prd_information1
183                                               )
184               and  ppa2.time_period_id    <= ptp.time_period_id
185               and  ppa2.payroll_id = PAF.payroll_id
186               and  paa3.ACTION_STATUS in ( 'C', 'S')
190 
187             );
188 
189   l_proc      constant varchar2(80) := g_package ||'action_creation';
191   l_ass_act_id         pay_assignment_actions.assignment_action_id%type;
192 
193   leg_param            pay_payroll_actions.legislative_parameters%type;
194 
195 begin
196   hr_utility.set_location('Entering: '||l_proc,10);
197   hr_utility.set_location('chunk: '||chunk,10);
198 
199      -- Retrieve legislative parameters from the archiver payroll action
200    select legislative_parameters
201    into   leg_param
202    from   pay_payroll_actions
203    where  payroll_action_id = pactid;
204 
205   hr_utility.set_location('leg_param:'||leg_param,20);
206 
207   -- Get Parameters
208   g_legal_entity_id := get_parameter(leg_param,'LEGAL_ENTITY');
209   g_payroll_id      := get_parameter(leg_param,'PAYROLL_ID');
210   g_end_period_date := fnd_date.canonical_to_date(get_parameter(leg_param,'END_PERIOD_DATE'));
211   g_inc_all_asg     := get_parameter(leg_param,'INC_ALL_ASG');
212   g_spc_asg_id      := get_parameter(leg_param,'SPC_ASG');
213 
214   hr_utility.set_location('g_legal_entity_id:'||g_legal_entity_id,20);
215   hr_utility.set_location('g_end_period_date:'||g_end_period_date,20);
216   hr_utility.set_location('g_payroll_id :'||g_payroll_id ,20);
217   hr_utility.set_location('g_spc_asg_id:'||g_spc_asg_id,20);
218   hr_utility.set_location('g_inc_all_asg:'||g_inc_all_asg,20);
219 
220    FOR v_assignments IN csr_processed_assignments
221       ( p_payroll_id      => g_payroll_id
222       , p_period_end_date => g_end_period_date
223       , p_asg_id          => g_spc_asg_id
224       , p_legal_entity_id => g_legal_entity_id
225       )
226    LOOP
227       hr_utility.set_location('Assignment ID:'||v_assignments.assignment_id,20);
228 
229       IF (py_za_tax_reg.include_assignment(v_assignments.assignment_id,
230                                           g_end_period_date,
231                                           g_inc_all_asg) = 'Y') THEN
232          hr_utility.set_location('Incl Assignment ID:'||v_assignments.assignment_id,30);
233 
234 	        select pay_assignment_actions_s.nextval
235 	        into   l_ass_act_id
236 	        from   dual;
237 
238 	        -- insert into pay_assignment_actions.
239 	        hr_nonrun_asact.insact(l_ass_act_id,
240 	                               v_assignments.assignment_id,
241 	                               pactid,
242 	                               chunk,
243 	                               null);
244       END IF;
245 
246 
247    END LOOP; -- End of Loop csr_processed_assignments
248 
249    hr_utility.set_location(' Leaving: '||l_proc,100);
250 end action_creation;
251 
252 procedure archinit(p_payroll_action_id in number)
253 is
254   l_proc      constant varchar2(80) := g_package ||'archinit';
255 
256   leg_param            pay_payroll_actions.legislative_parameters%type;
257 
258 
259 begin
260   hr_utility.set_location('Entering: '||l_proc,10);
261 
262 
263 -- Commenting out below portion as it is not required to set
264 -- the globals from archinit when they are getting set in
265 -- archive_code
266 /*
267 
268   -- Retrieve legislative parameters from the archiver payroll action
269   select legislative_parameters
270    into   leg_param
271    from   pay_payroll_actions
272    where  payroll_action_id = p_payroll_action_id;
273 
274   hr_utility.set_location('leg_param:'||leg_param,20);
275 
276   -- Get Parameters
277   g_legal_entity_id := get_parameter(leg_param,'LEGAL_ENTITY');
278   g_payroll_id      := get_parameter(leg_param,'PAYROLL_ID');
279   -- g_st_period_id    := get_parameter(leg_param,'ST_PERIOD_ID');
280   -- g_end_period_id   := get_parameter(leg_param,'END_PERIOD_ID');
281   -- g_payroll_name    := get_parameter(leg_param,'PAYROLL_NAME');
282   g_end_period_date := fnd_date.canonical_to_date(get_parameter(leg_param,'END_PERIOD_DATE'));
283   -- g_inc_all_asg     := get_parameter(leg_param,'INC_ALL_ASG');
284   -- g_spc_asg_id      := get_parameter(leg_param,'SPC_ASG');
285   -- g_ret_ptd         := get_parameter(leg_param,'RET_PTD');
286   -- g_ret_mtd         := get_parameter(leg_param,'RET_MTD');
287   -- g_ret_ytd         := get_parameter(leg_param,'RET_YTD');
288   -- g_sort1           := get_parameter(leg_param,'SORT1');
289   -- g_sort2           := get_parameter(leg_param,'SORT2');
290   -- g_sort3           := get_parameter(leg_param,'SORT3');
291   -- g_print_det       := get_parameter(leg_param,'PRINT_DET');
292   -- g_debug           := get_parameter(leg_param,'DEBUG');
293 
294 
295   py_za_tax_reg.archive_set_globals(
296 				     p_payroll_id        => g_payroll_id
297 				   , p_start_period_id   => g_st_period_id
298 				   , p_end_period_id     => g_end_period_id
299 				   , p_include           => g_inc_all_asg
300 				   , p_retrieve_ptd      => g_ret_ptd
301 				   , p_retrieve_mtd      => g_ret_mtd
302 				   , p_retrieve_ytd      => g_ret_ytd
303            , p_tax_year          => g_tax_year
304 				  );
305 */
306 
307   hr_utility.set_location('Leaving: '||l_proc,100);
308 end archinit;
309 
310 procedure archive_code(p_assactid       in number,
311                        p_effective_date in date)
312 is
313   l_proc      constant varchar2(80) := g_package ||'archive_code';
314 
315   l_asg_id           pay_assignment_actions.assignment_id%type;
316 
317   l_tax_register_id      pay_za_tax_registers.tax_register_id%TYPE;
318   l_payroll_name         pay_all_payrolls_f.payroll_name%TYPE;
322   l_tot_employees        NUMBER;
319   l_period_num           per_time_periods.period_num%TYPE;
320   l_period_start_date    per_time_periods.start_date%TYPE;
321   l_period_end_date      per_time_periods.end_date%TYPE;
323   l_tot_assignments      NUMBER;
324 
325   leg_param            pay_payroll_actions.legislative_parameters%type;
326 
327   l_payroll_action_id  pay_payroll_actions.payroll_action_id%type;
328   l_action_info_id number;
329   l_ovn            number;
330   l_qtr_num        number;
331   l_pay_advice_date     per_time_periods.end_date%type;
332 
333 begin
334   hr_utility.set_location('Entering: '||l_proc,10);
335   hr_utility.set_location('Processing Action ID:'||p_assactid,10);
336 
337   -- Retrieve legislative parameters from the archiver payroll action
338    select ppa.legislative_parameters, ppa.payroll_action_id
339    into   leg_param, l_payroll_action_id
340    from   pay_payroll_actions ppa,
341           pay_assignment_actions paa
342    where  paa.payroll_action_id = ppa.payroll_action_id
343       and paa.assignment_action_id = p_assactid;
344 
345   hr_utility.set_location('leg_param:'||leg_param,20);
346 
347   -- Get Parameters
348   g_payroll_name    := get_parameter(leg_param,'PAYROLL_NAME');
349   g_end_period_date := fnd_date.canonical_to_date(get_parameter(leg_param,'END_PERIOD_DATE'));
350   g_inc_all_asg     := get_parameter(leg_param,'INC_ALL_ASG');
351   g_spc_asg_id      := get_parameter(leg_param,'SPC_ASG');
352   g_ret_ptd         := get_parameter(leg_param,'RET_PTD');
353   g_ret_mtd         := get_parameter(leg_param,'RET_MTD');
354   g_ret_ytd         := get_parameter(leg_param,'RET_YTD');
355   g_sort1           := get_parameter(leg_param,'SORT1');
356   g_sort2           := get_parameter(leg_param,'SORT2');
357   g_sort3           := get_parameter(leg_param,'SORT3');
358   g_print_det       := get_parameter(leg_param,'PRINT_DET');
359   g_debug           := get_parameter(leg_param,'DEBUG');
360   g_legal_entity_id := get_parameter(leg_param,'LEGAL_ENTITY');
361 
362 
363    select assignment_id
364    into   l_asg_id
365    from   pay_assignment_actions
366    where  assignment_action_id = p_assactid;
367 
368 
369   select ptp.prd_information1,PAF.payroll_id, ptp.time_period_id, ptp.prd_information2, ptp.pay_advice_date
370   into   g_tax_year, g_payroll_id, g_end_period_id, l_qtr_num, l_pay_advice_date
371   from   per_time_periods ptp
372         ,pay_assignment_actions paa
373         ,per_assignments_f  PAF
374   where  paa.assignment_action_id = p_assactid
375   and    PAF.assignment_id = paa.assignment_id
376   and    ptp.payroll_id    = PAF.payroll_id
377   -- and    g_end_period_date between PAF.effective_start_date and PAF.effective_end_date
378   and   PAF.effective_start_date = (select max(effective_start_date) from per_all_assignments_f paf2
379                                                         where paf2.assignment_id = paa.assignment_id
380                                                         and   effective_start_date <= g_end_period_date)
381   and    g_end_period_date between ptp.start_date and ptp.end_date;
382 
383   hr_utility.set_location('g_tax_year:'||g_tax_year,20);
384   hr_utility.set_location('g_end_period_id:'||g_end_period_id,20);
385   hr_utility.set_location('l_qtr_num:'||l_qtr_num,20);
386   hr_utility.set_location('l_pay_advice_date:'||l_pay_advice_date,20);
387 
388 
389    if to_char(g_end_period_date, 'Mon') = 'Aug' then
390         if l_qtr_num <> 2 then
391           g_end_period_id := g_end_period_id-1;
392         end if;
393    elsif to_char(g_end_period_date, 'Mon') = 'Feb' then
394         if  l_qtr_num <> 4 then
395           g_end_period_id := g_end_period_id-1;
396           g_tax_year := g_tax_year - 1;
397         end if;
398    else
399          if to_char(g_end_period_date, 'Mon') <> to_char(l_pay_advice_date, 'Mon') then
400           g_end_period_id := g_end_period_id-1;
401         end if;
402 
403    end if;
404 
405   hr_utility.set_location('g_tax_year:'||g_tax_year,20);
406   hr_utility.set_location('g_end_period_id:'||g_end_period_id,20);
407 
408 
409 	select MIN(ptp.time_period_id)
410 	into   g_st_period_id
411 	from   per_time_periods ptp
412 	where  ptp.payroll_id = g_payroll_id
413 	and    ptp.prd_information1 = g_tax_year;
414 
415 
416   py_za_tax_reg.archive_set_globals(
417 			       p_payroll_id        => g_payroll_id
418 					 , p_start_period_id   => g_st_period_id
419 					 , p_end_period_id     => g_end_period_id
420 					 , p_include           => g_inc_all_asg
421 					 , p_retrieve_ptd      => g_ret_ptd
422 					 , p_retrieve_mtd      => g_ret_mtd
423 					 , p_retrieve_ytd      => g_ret_ytd
424            , p_tax_year          => g_tax_year
425 				    );
426 
427   hr_utility.set_location('Assignment ID:'||l_asg_id,20);
428 
429   IF ( g_tax_year <= '2009') THEN
430 		  py_za_tax_reg.pre_process(
431 							   p_payroll_id        => g_payroll_id
432 							 , p_start_period_id   => g_st_period_id
433 							 , p_end_period_id     => g_end_period_id
434 							 , p_include           => g_inc_all_asg
435 		           , p_assignment_id     => l_asg_id
436 							 , p_retrieve_ptd      => g_ret_ptd
437 							 , p_retrieve_mtd      => g_ret_mtd
438 							 , p_retrieve_ytd      => g_ret_ytd
439 							 , p_tax_register_id   => l_tax_register_id
440 							 , p_payroll_name      => l_payroll_name
441 							 , p_period_num        => l_period_num
445 							 , p_tot_assignments   => l_tot_assignments
442 							 , p_period_start_date => l_period_start_date
443 							 , p_period_end_date   => l_period_end_date
444 							 , p_tot_employees     => l_tot_employees
446 							 , p_assactid          => p_assactid
447 		                             );
448   ELSE
449 		  py_za_tax_reg.pre_process_01032009(
450 							   p_payroll_id        => g_payroll_id
451 							 , p_start_period_id   => g_st_period_id
452 							 , p_end_period_id     => g_end_period_id
453 							 , p_include           => g_inc_all_asg
454 		           , p_assignment_id     => l_asg_id
455 							 , p_retrieve_ptd      => g_ret_ptd
456 							 , p_retrieve_mtd      => g_ret_mtd
457 							 , p_retrieve_ytd      => g_ret_ytd
458 							 , p_tax_register_id   => l_tax_register_id
459 							 , p_payroll_name      => l_payroll_name
460 							 , p_period_num        => l_period_num
461 							 , p_period_start_date => l_period_start_date
462 							 , p_period_end_date   => l_period_end_date
463 							 , p_tot_employees     => l_tot_employees
464 							 , p_tot_assignments   => l_tot_assignments
465 							 , p_assactid          => p_assactid
466 		                                      );
467 	END IF;
468 
469   hr_utility.set_location('l_tot_assignments '||l_tax_register_id,30);
470   hr_utility.set_location('l_tot_assignments '||l_tot_assignments,30);
471 
472   hr_utility.set_location('Leaving: '||l_proc,100);
473 end archive_code;
474 
475 
476 procedure deinit_code(pactid in number)
477 is
478 
479 	CURSOR get_legal_entity_name(p_organization_id number)IS
480 			select haou.name
481 			from  hr_all_organization_units   haou,
482 			      hr_organization_information hoi,
483 			      hr_organization_information hoi2
484 			where haou.organization_id = p_organization_id
485 			and   hoi.organization_id = haou.organization_id
486 			and   hoi.org_information_context = 'ZA_LEGAL_ENTITY'
487 			and   hoi2.organization_id = haou.organization_id
488 			and   hoi2.org_information_context = 'CLASS'
489 			and   hoi2.org_information1 = 'HR_LEGAL'
490 			and   hoi2.org_information2 = 'Y' ;
491 
492   CURSOR get_payroll_info IS
493        select distinct pai.action_information21 payroll_id,
494               ppa.effective_date       effective_date,
495               ppf.payroll_name         payroll_name,
496               ptp.start_date           start_date,
497               ptp.end_date             end_date
498        from   pay_payroll_actions ppa
499             , pay_assignment_actions paa
500             , pay_action_information pai
501             , pay_all_payrolls_f     ppf
502             , per_time_periods       ptp
503        where ppa.payroll_action_id = pactid
504 	     and   ppa.action_status     = 'C'
505 	     and   paa.payroll_action_id = ppa.payroll_action_id
506 	     and   paa.action_status     = 'C'
507 	     and   pai.action_context_id = paa.assignment_action_id
508 	     and   pai.action_context_type = 'AAP'
509 	     and   pai.action_information_category = 'ZA_TAX_REG_REP'
510 	     and   ppf.payroll_id = pai.action_information21
511        and   ptp.payroll_id = ppf.payroll_id
512        and   ptp.time_period_id = pai.action_information22
513        order by payroll_id;
514 
515 
516   xml_layout             boolean;
517   l_request_id           fnd_concurrent_requests.request_id%TYPE;
518 
519   leg_param            pay_payroll_actions.legislative_parameters%type;
520 
521   l_legal_entity_name varchar2(240);
522   l_action_info_id number;
523   l_ovn            number;
524 
525 begin
526 
527   -- Retrieve legislative parameters from the archiver payroll action
528    select legislative_parameters
529    into   leg_param
530    from   pay_payroll_actions
531    where  payroll_action_id = pactid;
532 
533   hr_utility.set_location('leg_param:'||leg_param,10);
534 
535   -- Get Parameters
536   g_end_period_date := fnd_date.canonical_to_date(get_parameter(leg_param,'END_PERIOD_DATE'));
537   g_inc_all_asg     := get_parameter(leg_param,'INC_ALL_ASG');
538   g_spc_asg_id      := get_parameter(leg_param,'SPC_ASG');
539   g_ret_ptd         := get_parameter(leg_param,'RET_PTD');
540   g_ret_mtd         := get_parameter(leg_param,'RET_MTD');
541   g_ret_ytd         := get_parameter(leg_param,'RET_YTD');
542   g_sort1           := get_parameter(leg_param,'SORT1');
543   g_sort2           := get_parameter(leg_param,'SORT2');
544   g_sort3           := get_parameter(leg_param,'SORT3');
545   g_print_det       := get_parameter(leg_param,'PRINT_DET');
546   g_debug           := get_parameter(leg_param,'DEBUG');
547   g_legal_entity_id := get_parameter(leg_param,'LEGAL_ENTITY');
548 
549 
550    open  get_legal_entity_name(g_legal_entity_id);
551    fetch get_legal_entity_name into l_legal_entity_name ;
552    close get_legal_entity_name ;
553 
554 
555 
556    for pay in get_payroll_info
557    loop
558        hr_utility.set_location('Archiving payroll info',20);
559 		    -- Archive PAYROLL DETAILS
560 		    pay_action_information_api.create_action_information
561 		    (
562 		            p_action_information_id       => l_action_info_id,
563 		            p_action_context_id           => pactid,
564 		            p_action_context_type         => 'PA',
565 		            p_object_version_number       => l_ovn,
566 		            p_effective_date              => pay.effective_date ,
567 		            p_action_information_category => 'ZA_TAX_REG_REP_PAY_DET',
568 		            p_action_information1         => pay.payroll_id,
569 		            p_action_information2         => pay.payroll_name,
570                             p_action_information3         => pay.start_date,
571 		            p_action_information4         => pay.end_date
572 		     );
573 
574          hr_utility.set_location('Archived payroll info',30);
575    end loop;
576 
577 
578   xml_layout := FND_REQUEST.ADD_LAYOUT('PAY','PYZATXREGREP','en','US','PDF');
579 
580   IF xml_layout = true
581   THEN
582 
583       l_request_id := fnd_request.submit_request
584                           (application => 'PAY'
585                           ,program     => 'PYZATXREGREP'
586                           ,argument1   => g_end_period_date
587                           ,argument2   => g_inc_all_asg
588                           ,argument3   => g_spc_asg_id
589                           ,argument4   => g_ret_ptd
590                           ,argument5   => g_ret_mtd
591                           ,argument6  => g_ret_ytd
592                           ,argument7  => g_sort1
593                           ,argument8  => g_sort2
594                           ,argument9  => g_sort3
595                           ,argument10  => g_print_det
596                           ,argument11  => pactid
597                           ,argument12  => l_legal_entity_name
598                           ,argument13  => g_debug
599                           );
600       -- Commit;
601       --check for process submit error
602       IF l_request_id = 0
603       THEN
604           hr_utility.set_location('Error spawning new process',1);
605       END IF;
606   END IF;
607 
608 end deinit_code;
609 
610 FUNCTION BEFOREREPORT RETURN BOOLEAN
611 IS
612 BEGIN
613 		SORT_ORDER := 'order by cmpy_tax_reference_no, ' || P_SORT_1 || ', ' || P_SORT_2 || ', ' || P_SORT_3;
614 
615 
616 -- This information is no longer required.
617 /*
618     SELECT ptp.period_num
619          , fnd_date.date_to_displaydate(ptp.start_date)
620          , fnd_date.date_to_displaydate(ptp.end_date)
621       INTO c_period_num
622           ,c_period_start
623           ,c_period_end
624       FROM per_time_periods ptp
625      WHERE ptp.time_period_id = p_end_period_id;
626 
627 */
628 
629 -- Can be done in the RTF
630 /*
631  SELECT count( DISTINCT pai.action_information3)
632    INTO CP_Total_Employees
633    FROM pay_action_information pai
634        ,pay_assignment_actions paa
635   WHERE pai.action_context_id = paa.assignment_action_id
636     AND paa.payroll_action_id = p_payroll_action_id;
637 
638  SELECT  count( DISTINCT pai.action_information11)
639    INTO CP_Total_Assignments
640    FROM pay_action_information pai
641        ,pay_assignment_actions paa
642   WHERE pai.action_context_id = paa.assignment_action_id
643     AND paa.payroll_action_id = p_payroll_action_id;
644 */
645 
646     RETURN (TRUE);
647 END BEFOREREPORT;
648 
649 FUNCTION AFTERREPORT RETURN BOOLEAN
650 IS
651 BEGIN
652 
653 	-- Purge Data
654 
655 			DELETE
656 			FROM    pay_action_information
657 			WHERE   action_context_id in
658 			        (
659 			        SELECT  assignment_action_id
660 			        FROM    pay_assignment_actions
661 			        WHERE   payroll_action_id = p_payroll_action_id
662 			        )
663 			AND     action_information_category = 'ZA_TAX_REG_REP';
664 
665       DELETE
666 			FROM    pay_action_information
667       WHERE   action_context_id = p_payroll_action_id
668       AND     action_information_category = 'ZA_TAX_REG_REP_PAY_DET';
669 
670       DELETE
671       FROM    pay_assignment_actions
672       WHERE   payroll_action_id = p_payroll_action_id;
673 
674       DELETE
675       FROM    pay_payroll_actions
676       WHERE   payroll_action_id = p_payroll_action_id;
677 
678      COMMIT;
679 
680 
681     RETURN (TRUE);
682 
683 
684 END AFTERREPORT;
685 
686 
687 end pay_za_tax_reg_ar;