[Home] [Help]
PACKAGE BODY: APPS.PAY_NO_EOY_ARCHIVE
Source
1 PACKAGE BODY pay_no_eoy_archive AS
2 /* $Header: pynoeoya.pkb 120.2.12010000.10 2008/09/29 08:45:40 rsengupt ship $ */
3 --
4 l_package_name CONSTANT VARCHAR2(30) := 'pay_no_eoy_archive';
5 --
6 --
7 -- -----------------------------------------------------------------------------
8 -- Data types.
9 -- -----------------------------------------------------------------------------
10 --
11 TYPE t_xml_element_rec IS RECORD
12 (tagname VARCHAR2(100)
13 ,tagvalue VARCHAR2(500)
14 ,tagtype VARCHAR2(1)
15 ,tagattrb VARCHAR2(500));
16 --
17 TYPE t_xml_element_table IS TABLE OF t_xml_element_rec INDEX BY BINARY_INTEGER;
18 --
19 TYPE t_number_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
20 --
21 TYPE t_ni_zones_rec IS RECORD
22 (ni_zone t_number_table
23 ,total NUMBER);
24 --
25 TYPE t_le_si_bal_rec IS RECORD
26 (si_status VARCHAR2(10)
27 ,tax NUMBER
28 ,emp_contr_reimb_spcl_base NUMBER
29 ,emp_contr_spcl_pct_base NUMBER
30 ,emp_contr_spcl_pct NUMBER
31 ,emp_contr_spcl NUMBER
32 ,pension t_ni_zones_rec
33 ,emp_contr t_ni_zones_rec
34 ,emp_contr_over62 t_ni_zones_rec);
35 --
36 TYPE t_le_si_bal_table IS TABLE OF t_le_si_bal_rec INDEX BY BINARY_INTEGER;
37 --
38 TYPE fixed_code_rec IS RECORD (fixed_code VARCHAR2(20)
39 ,status NUMBER
40 ,Amount_Value VARCHAR2(50)
41 ,Addl_Value VARCHAR2(50)
42 ,displayed NUMBER);
43 --
44 TYPE fixed_code IS TABLE OF fixed_code_rec INDEX BY BINARY_INTEGER;
45 --
46 TYPE code_616_rec IS RECORD (TRN VARCHAR2(60)
47 ,Country VARCHAR2(60)
48 ,Pay_Value NUMBER
49 ,Days NUMBER
50 ,Per_Diem NUMBER);
51 --
52 TYPE code_616 IS TABLE OF code_616_rec INDEX BY BINARY_INTEGER;
53 --
54 TYPE summary_code_orid_rec IS RECORD (orid_value VARCHAR2(50)
55 ,info_data VARCHAR2(100)
56 ,info_prompt VARCHAR2(100)
57 ,info_datatype VARCHAR2(50));
58 --
59 TYPE summary_code_orid IS TABLE OF summary_code_orid_rec INDEX BY BINARY_INTEGER;
60 --
61 --
62 -- -----------------------------------------------------------------------------
63 -- Global variables.
64 -- -----------------------------------------------------------------------------
65 --
66 g_xml_element_table t_xml_element_table;
67 g_empty_rep_code_rec t_rep_code_rec;
68 g_empty_rep_code_table t_rep_code_table;
69 g_empty_le_si_bal_table t_le_si_bal_table;
70 g_fixed_code fixed_code;
71 g_summary_code_orid summary_code_orid;
72 g_payroll_action_id NUMBER;
73 g_business_group_id NUMBER;
74 g_legal_employer_id NUMBER;
75 g_report_date DATE;
76 --
77 --
78 -- -----------------------------------------------------------------------------
79 -- Localisation delivered support for extracting specific reporting codes.
80 --
81 -- Needs to call the procedure with following parameter:-
82 --
83 -- Procedure XYZ
84 -- (p_assignment_action_id IN NUMBER
85 -- ,p_reporting_code IN VARCHAR2
86 -- ,p_report_date IN DATE);
87 --
88 -- Needs to populate the archive as follows:-
89 --
90 -- pay_action_information_api.create_action_information
91 -- (p_action_context_type => 'AAP'
92 -- ,p_action_context_id => p_assignment_action_id
93 -- ,p_action_information_id => l_act_inf_id
94 -- ,p_object_version_number => l_ovn
95 -- ,p_effective_date => p_report_date
96 -- ,p_action_information_category => 'EMEA REPORT INFORMATION'
97 -- ,p_action_information1 => 'ASG_REP_CODE_INFO'
98 -- ,p_action_information2 => p_reporting_code
99 -- ,p_action_information3 => <amount>
100 -- ,p_action_information4 => <info1>
101 -- ,p_action_information5 => <info2>
102 -- ,p_action_information6 => <info3>
103 -- ,p_action_information7 => <info4>
104 -- ,p_action_information8 => <info5>
105 -- ,p_action_information9 => <info6>
106 -- ,p_action_information10 => <Seaman Component status>);
107 -- -----------------------------------------------------------------------------
108 --
109 PROCEDURE extract_reporting_code
110 (p_assignment_action_id IN NUMBER
111 ,p_reporting_code IN VARCHAR2
112 ,p_report_date IN DATE) IS
113 --
114 l_act_inf_id NUMBER;
115 l_ovn NUMBER;
116 --
117 BEGIN
118 NULL;
119 END extract_reporting_code;
120 --
121 --
122 -- -----------------------------------------------------------------------------
123 -- Localisation delivered support for collating specific reporting codes.
124 --
125 -- Needs to call the procedure with following parameter:-
126 --
127 -- PROCEDURE collate_reporting_code
128 -- (p_payroll_action_id IN NUMBER
129 -- ,p_legal_employer_id IN VARCHAR2
130 -- ,p_reporting_code IN VARCHAR2) IS
131 --
132 --
133 -- Cursor to retrieve reporting code informastion to be collated:-
134 --
135 -- CURSOR csr_REPORTING_CODES
136 -- (p_payroll_action_id IN NUMBER
137 -- ,p_legal_employer_id IN VARCHAR2
138 -- ,p_reporting_code IN VARCHAR2) IS
139 -- SELECT asg_act.action_information5 person_id
140 -- ,asg_act.action_information6 tax_municipality
141 -- ,TO_NUMBER(rep_cde.action_information3) amount
142 -- FROM pay_assignment_actions paa
143 -- ,pay_action_information asg_act
144 -- ,pay_action_information rep_cde
145 -- WHERE paa.payroll_action_id = p_payroll_action_id
146 -- AND asg_act.action_context_type = 'AAP'
147 -- AND asg_act.action_context_id = paa.assignment_action_id
148 -- AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
149 -- AND asg_act.action_information1 = 'ASG_ACT_INFO'
150 -- AND asg_act.action_information2 = p_legal_employer_id
151 -- AND rep_cde.action_context_type = 'AAP'
152 -- AND rep_cde.action_context_id = asg_act.action_context_id
153 -- AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
154 -- AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
155 -- AND rep_cde.action_information2 = p_reporting_code;
156 --
157 -- Needs to populate the archive as follows:-
158 --
159 -- pay_action_information_api.create_action_information
160 -- (p_action_context_type => 'PA'
161 -- ,p_action_context_id => p_payroll_action_id
162 -- ,p_action_information_id => l_act_inf_id
163 -- ,p_object_version_number => l_ovn
164 -- ,p_effective_date => p_report_date
165 -- ,p_action_information_category => 'EMEA REPORT INFORMATION'
166 -- ,p_action_information1 => 'AUDIT_REP_SUMMARY'
167 -- ,p_action_information2 => p_legal_employer_id
168 -- ,p_action_information3 => <person ID>
169 -- ,p_action_information4 => p_reporting_code
170 -- ,p_action_information5 => <amount>
171 -- ,p_action_information6 => <info1>
172 -- ,p_action_information7 => <info2>
173 -- ,p_action_information8 => <info3>
174 -- ,p_action_information9 => <info4>
175 -- ,p_action_information10 => <info5>
176 -- ,p_action_information11 => <info6>
177 -- ,p_action_information12 => <tax_municipality>
178 -- ,p_action_information13 => <Seaman Component status>);
179 -- -----------------------------------------------------------------------------
180 --
181
182 PROCEDURE collate_reporting_code
183 (p_payroll_action_id IN NUMBER
184 ,p_legal_employer_id IN VARCHAR2
185 ,p_reporting_code IN VARCHAR2) IS
186 --
187 l_act_inf_id NUMBER;
188 l_ovn NUMBER;
189 --
190 BEGIN
191 NULL;
192 END collate_reporting_code;
193 --
194 --
195 -- -----------------------------------------------------------------------------
196 -- Get the correct characterset for XML generation
197 -- -----------------------------------------------------------------------------
198 --
199 PROCEDURE set_currency_mask(p_business_group_id IN NUMBER
200 ,lg_format_mask OUT NOCOPY VARCHAR2) IS
201 -- Cursor to retrieve Currency
202 CURSOR csr_currency IS
203 SELECT org_information10
204 FROM hr_organization_information
205 WHERE organization_id = p_business_group_id
206 AND org_information_context = 'Business Group Information';
207 --
208 l_currency VARCHAR2(40);
209 --
210 BEGIN
211 --
212 OPEN csr_currency;
213 FETCH csr_currency into l_currency;
214 CLOSE csr_currency;
215 --
216 lg_format_mask := FND_CURRENCY.GET_FORMAT_MASK(l_currency,40);
217 lg_format_mask := nvl (lg_format_mask,'FM9G999G999G999G990D00');
218 --
219 EXCEPTION WHEN OTHERS THEN
220 lg_format_mask := nvl (lg_format_mask,'FM9G999G999G999G990D00');
221 --
222 END set_currency_mask;
223 --
224 --
225 -- -----------------------------------------------------------------------------
226 -- Get the correct characterset for XML generation
227 -- -----------------------------------------------------------------------------
228 --
229 FUNCTION get_IANA_charset RETURN VARCHAR2 IS
230 CURSOR csr_get_iana_charset IS
231 SELECT tag
232 FROM fnd_lookup_values
233 WHERE lookup_type = 'FND_ISO_CHARACTER_SET_MAP'
234 AND lookup_code = SUBSTR(USERENV('LANGUAGE'),
235 INSTR(USERENV('LANGUAGE'), '.') + 1)
236 AND language = 'US';
237 --
238 lv_iana_charset fnd_lookup_values.tag%type;
239 BEGIN
240 OPEN csr_get_iana_charset;
241 FETCH csr_get_iana_charset INTO lv_iana_charset;
242 CLOSE csr_get_iana_charset;
243 RETURN (lv_iana_charset);
244 END get_IANA_charset;
245 --
246 --
247 -- -----------------------------------------------------------------------------
248 -- Takes XML element from a table and puts them into a CLOB.
249 -- -----------------------------------------------------------------------------
250 --
251 PROCEDURE write_to_clob
252 (p_clob OUT NOCOPY CLOB) IS
253 --
254 -- l_xml_element_template0 VARCHAR2(20) := '<TAG>VALUE</TAG>';
255 -- l_xml_element_template1 VARCHAR2(30) := '<TAG><![CDATA[VALUE]]></TAG>';
256 -- l_xml_element_template2 VARCHAR2(10) := '<TAG>';
257 -- l_xml_element_template3 VARCHAR2(10) := '</TAG>';
258 l_str1 VARCHAR2(80) ;
259 l_str2 VARCHAR2(20) := '</EOY> </ROOT>';
260 l_xml_element VARCHAR2(800);
261 l_clob CLOB;
262 --
263 BEGIN
264 --
265 -- l_str1 := '<?xml version="1.0" encoding="UTF-8"?> <ROOT> <EOY>';
266 -- l_str1 := '<?xml version="1.0" encoding="' || get_IANA_charset || '"?> <ROOT> <EOY>';
267 l_str1 := '<?xml version="1.0" encoding="' || get_IANA_charset || '"?>' ;
268
269 dbms_lob.createtemporary(l_clob, FALSE, DBMS_LOB.CALL);
270 dbms_lob.open(l_clob, DBMS_LOB.LOB_READWRITE);
271 --
272 dbms_lob.writeappend(l_clob, LENGTH(l_str1), l_str1);
273 --
274 IF g_xml_element_table.COUNT > 0 THEN
275 --
276 FOR table_counter IN g_xml_element_table.FIRST .. g_xml_element_table.LAST LOOP
277 --
278 IF g_xml_element_table(table_counter).tagvalue = '_START_' THEN
279 IF g_xml_element_table(table_counter).tagattrb IS NOT NULL THEN
280 l_xml_element := '<' || g_xml_element_table(table_counter).tagname || ' '
281 || g_xml_element_table(table_counter).tagattrb ||'>';
282 ELSE
283 l_xml_element := '<' || g_xml_element_table(table_counter).tagname || '>';
284 END IF;
285
286 ELSIF g_xml_element_table(table_counter).tagvalue = '_END_' THEN
287 l_xml_element := '</' || g_xml_element_table(table_counter).tagname || '>';
288
289 ELSIF g_xml_element_table(table_counter).tagattrb IS NOT NULL THEN
290 IF g_xml_element_table(table_counter).tagtype IS NULL THEN
291 l_xml_element := '<' || g_xml_element_table(table_counter).tagname || ' '
292 || g_xml_element_table(table_counter).tagattrb ||
293 '><![CDATA[' || g_xml_element_table(table_counter).tagvalue ||
294 ']]></' || g_xml_element_table(table_counter).tagname || '>';
295
296 ELSIF g_xml_element_table(table_counter).tagtype = 'A' THEN
297 l_xml_element := '<' || g_xml_element_table(table_counter).tagname || ' '
298 || g_xml_element_table(table_counter).tagattrb ||
299 '>' || g_xml_element_table(table_counter).tagvalue ||
300 '</'|| g_xml_element_table(table_counter).tagname || '>';
301 END IF;
302
303 ELSIF g_xml_element_table(table_counter).tagattrb IS NULL THEN
304 l_xml_element := '<' || g_xml_element_table(table_counter).tagname ||
305 '><![CDATA[' || g_xml_element_table(table_counter).tagvalue ||
306 ']]></' || g_xml_element_table(table_counter).tagname || '>';
307
308
309 END IF;
310 --
311 dbms_lob.writeappend(l_clob, LENGTH(l_xml_element), l_xml_element);
312 --
313 END LOOP;
314 --
315 END IF;
316 --
317 -- dbms_lob.writeappend(l_clob, LENGTH(l_str2), l_str2);
318 --
319 p_clob := l_clob;
320 --
321 EXCEPTION
322 WHEN OTHERS THEN
323 --Fnd_file.put_line(FND_FILE.LOG,'## SQLERR ' || sqlerrm(sqlcode));
324 hr_utility.set_location(sqlerrm(sqlcode),110);
325 --
326 END write_to_clob;
327 --
328 --
329 -- -----------------------------------------------------------------------------
330 -- Parse out parameters from string.
331 -- -----------------------------------------------------------------------------
332 --
333 FUNCTION get_parameter
334 (p_parameter_string IN VARCHAR2
335 ,p_token IN VARCHAR) RETURN VARCHAR2 IS
336 --
337 l_parameter pay_payroll_actions.legislative_parameters%TYPE := NULL;
338 l_start_pos NUMBER;
339 l_delimiter VARCHAR2(1) := ' ';
340 --
341 BEGIN
342 l_start_pos := INSTR(' ' || p_parameter_string, l_delimiter || p_token || '=');
343 --
344 IF l_start_pos = 0 THEN
345 l_delimiter := '|';
346 l_start_pos := INSTR(' ' || p_parameter_string, l_delimiter || p_token || '=');
347 END IF;
348 --
349 IF l_start_pos <> 0 THEN
350 l_start_pos := l_start_pos + LENGTH(p_token || '=');
351 l_parameter := SUBSTR(p_parameter_string, l_start_pos, INSTR(p_parameter_string || ' ', l_delimiter, l_start_pos) - l_start_pos);
352 END IF;
353 --
354 RETURN l_parameter;
355 END;
356 --
357 --
358 -- -----------------------------------------------------------------------------
359 -- Returns the prompt for a given information item.
360 -- -----------------------------------------------------------------------------
361 --
362 FUNCTION get_info_prompt
363 (p_payroll_action_id IN NUMBER
364 ,p_legal_employer_id IN VARCHAR2
365 ,p_reporting_code IN VARCHAR2
366 ,p_info_id IN VARCHAR2) RETURN VARCHAR2 IS
367 --
368 CURSOR csr_INFO_DTLS
369 (p_payroll_action_id IN NUMBER
370 ,p_legal_employer_id IN VARCHAR2
371 ,p_reporting_code IN VARCHAR2
372 ,p_info_id IN VARCHAR2) IS
373 SELECT inf_dtl.action_information5 prompt
374 FROM pay_action_information inf_dtl
375 WHERE inf_dtl.action_context_type = 'PA'
376 AND inf_dtl.action_context_id = p_payroll_action_id
377 AND inf_dtl.action_information_category = 'EMEA REPORT INFORMATION'
378 AND inf_dtl.action_information1 = 'REP_CODE_INFO_DTLS'
379 AND inf_dtl.action_information2 = p_legal_employer_id
380 AND inf_dtl.action_information3 = p_reporting_code
381 AND inf_dtl.action_information4 = p_info_id;
382 --
383 l_inf_dtl_rec csr_INFO_DTLS%ROWTYPE;
384 --
385 BEGIN
386 OPEN csr_INFO_DTLS
387 (p_payroll_action_id
388 ,p_legal_employer_id
389 ,p_reporting_code
390 ,p_info_id);
391 FETCH csr_INFO_DTLS INTO l_inf_dtl_rec;
392 CLOSE csr_INFO_DTLS;
393 --
394 RETURN l_inf_dtl_rec.prompt;
395 END get_info_prompt;
396 --
397 --
398 -- -----------------------------------------------------------------------------
399 -- Returns the datatype for a given information item.
400 -- -----------------------------------------------------------------------------
401 --
402 FUNCTION get_info_dtype
403 (p_payroll_action_id IN NUMBER
404 ,p_legal_employer_id IN VARCHAR2
405 ,p_reporting_code IN VARCHAR
406 ,p_info_id IN VARCHAR2) RETURN VARCHAR2 IS
407 --
408 CURSOR csr_INFO_DTLS
409 (p_payroll_action_id IN NUMBER
410 ,p_legal_employer_id IN VARCHAR2
411 ,p_reporting_code IN VARCHAR
412 ,p_info_id IN VARCHAR2) IS
413 SELECT inf_dtl.action_information6 datatype
414 FROM pay_action_information inf_dtl
415 WHERE inf_dtl.action_context_type = 'PA'
416 AND inf_dtl.action_context_id = p_payroll_action_id
417 AND inf_dtl.action_information_category = 'EMEA REPORT INFORMATION'
418 AND inf_dtl.action_information1 = 'REP_CODE_INFO_DTLS'
419 AND inf_dtl.action_information2 = p_legal_employer_id
420 AND inf_dtl.action_information3 = p_reporting_code
421 AND inf_dtl.action_information4 = p_info_id;
422 --
423 l_inf_dtl_rec csr_INFO_DTLS%ROWTYPE;
424 --
425 BEGIN
426 OPEN csr_INFO_DTLS
427 (p_payroll_action_id
428 ,p_legal_employer_id
429 ,p_reporting_code
430 ,p_info_id);
431 FETCH csr_INFO_DTLS INTO l_inf_dtl_rec;
432 CLOSE csr_INFO_DTLS;
433 --
434 RETURN l_inf_dtl_rec.datatype;
435 END get_info_dtype;
436 --
437 --
438 -- -- -----------------------------------------------------------------------------
439 -- Returns the XML-ORID for a given information item. Changes 2007-08
440 -- -----------------------------------------------------------------------------
441 --
442 FUNCTION get_xml_orid
443 (p_payroll_action_id IN NUMBER
444 ,p_legal_employer_id IN VARCHAR2
445 ,p_reporting_code IN VARCHAR
446 ,p_info_id IN VARCHAR2) RETURN VARCHAR2 IS
447 --
448 CURSOR csr_XML_DTLS
449 (p_payroll_action_id IN NUMBER
450 ,p_legal_employer_id IN VARCHAR2
451 ,p_reporting_code IN VARCHAR
452 ,p_info_id IN VARCHAR2) IS
453 SELECT inf_dtl.action_information8 xml_orid
454 FROM pay_action_information inf_dtl
455 WHERE inf_dtl.action_context_type = 'PA'
456 AND inf_dtl.action_context_id = p_payroll_action_id
457 AND inf_dtl.action_information_category = 'EMEA REPORT INFORMATION'
458 AND inf_dtl.action_information1 = 'REP_CODE_INFO_DTLS'
459 AND inf_dtl.action_information2 = p_legal_employer_id
460 AND inf_dtl.action_information3 = p_reporting_code
461 AND inf_dtl.action_information4 = p_info_id;
462 --
463 l_xml_dtl_rec csr_XML_DTLS%ROWTYPE;
464 --
465 BEGIN
466 OPEN csr_XML_DTLS
467 (p_payroll_action_id
468 ,p_legal_employer_id
469 ,p_reporting_code
470 ,p_info_id);
471 FETCH csr_XML_DTLS INTO l_xml_dtl_rec;
472 CLOSE csr_XML_DTLS;
473 --
474 RETURN l_xml_dtl_rec.xml_orid;
475 END get_xml_orid;
476 --
477 --
478 -- -----------------------------------------------------------------------------
479 -- Returns the description for a given reporting code.
480 -- -----------------------------------------------------------------------------
481 --
482 FUNCTION get_code_desc
483 (p_payroll_action_id IN NUMBER
484 ,p_legal_employer_id IN VARCHAR2
485 ,p_reporting_code IN VARCHAR) RETURN VARCHAR2 IS
486 --
487 CURSOR csr_CODE_DTLS
488 (p_payroll_action_id IN NUMBER
489 ,p_legal_employer_id IN VARCHAR2
490 ,p_reporting_code IN VARCHAR) IS
491 SELECT inf_dtl.action_information11 description
492 FROM pay_action_information inf_dtl
493 WHERE inf_dtl.action_context_type = 'PA'
494 AND inf_dtl.action_context_id = p_payroll_action_id
495 AND inf_dtl.action_information_category = 'EMEA REPORT INFORMATION'
496 AND inf_dtl.action_information1 = 'REP_CODE_DTLS'
497 AND inf_dtl.action_information2 = p_legal_employer_id
498 AND inf_dtl.action_information3 = p_reporting_code;
499 --
500 l_cde_dtl_rec csr_CODE_DTLS%ROWTYPE;
501 --
502 BEGIN
503 OPEN csr_CODE_DTLS
504 (p_payroll_action_id
505 ,p_legal_employer_id
506 ,p_reporting_code);
507 FETCH csr_CODE_DTLS INTO l_cde_dtl_rec;
508 CLOSE csr_CODE_DTLS;
509 --
510 RETURN l_cde_dtl_rec.description;
511 END get_code_desc;
512 --
513 --
514 -- -----------------------------------------------------------------------------
515 -- Returns TRUE If the primary classification of the element is Earnings Adjustment
516 -- -----------------------------------------------------------------------------
517 --
518 --
519 FUNCTION is_EA_classification (l_element_type_id IN NUMBER
520 ,l_report_date IN DATE)
521 RETURN BOOLEAN AS
522 --
523 l_classification pay_element_classifications.classification_name%TYPE;
524 --
525 BEGIN
526 --
527 SELECT pec.classification_name
528 INTO l_classification
529 FROM pay_element_classifications pec
530 ,pay_element_types_f pet
531 WHERE pet.element_type_id = l_element_type_id
532 AND pec.classification_id = pet.classification_id
533 AND l_report_date BETWEEN pet.effective_start_date
534 AND pet.effective_end_date;
535 --
536 IF l_classification = 'Earnings Adjustment' THEN RETURN TRUE;
537 ELSE RETURN FALSE;
538 END IF;
539 END is_EA_classification;
540 --
541 --
542 -- -----------------------------------------------------------------------------
543 -- Returns Y if Person is employed throughout the year in same Tax Unit
544 -- -----------------------------------------------------------------------------
545 --
546 --
547 FUNCTION employed_throughout_year ( p_person_id IN NUMBER
548 ,p_legal_empoyer_id IN NUMBER
549 ,p_effective_date IN DATE )
550 RETURN VARCHAR2 AS
551 --
552 CURSOR csr_asg_contribution is
553 SELECT paf.assignment_id
554 ,greatest( trunc(p_effective_date,'Y'), paf.effective_start_date) start_date
555 ,least( p_effective_date, paf.effective_end_date) end_date
556 FROM per_all_assignments_f paf
557 ,hr_soft_coding_keyflex sck
558 ,hr_organization_information hoi
559 ,per_assignment_status_types pas
560 WHERE paf.person_id = p_person_id
561 AND sck.soft_coding_keyflex_id = paf.soft_coding_keyflex_id
562 AND pas.assignment_status_type_id = paf.assignment_status_type_id
563 AND pas.user_status = 'Active Assignment'
564 AND hoi.org_information_context = 'NO_LOCAL_UNITS'
565 AND hoi.org_information1 = sck.segment2
566 AND hoi.organization_id = p_legal_empoyer_id
567 AND ((paf.effective_start_date BETWEEN trunc(p_effective_date,'Y') and p_effective_date
568 OR paf.effective_end_date BETWEEN trunc(p_effective_date,'Y') and p_effective_date)
569 OR (trunc(p_effective_date,'Y') > paf.effective_start_date
570 AND p_effective_date < paf.effective_end_date))
571 ORDER BY paf.effective_start_date;
572 --
573 l_asg_end_date per_all_assignments_f.effective_end_date%TYPE;
574 l_first_flag NUMBER;
575 --
576 rec_asg_contribution csr_asg_contribution%ROWTYPE;
577 --
578 BEGIN
579 --
580 l_first_flag := 0;
581
582 fnd_file.put_line(fnd_file.log, 'p_person_id'||p_person_id);
583 --
584 OPEN csr_asg_contribution;
585 LOOP
586 --
587 FETCH csr_asg_contribution INTO rec_asg_contribution;
588 IF csr_asg_contribution%NOTFOUND THEN
589 --
590 CLOSE csr_asg_contribution;
591
592 --
593 IF l_first_flag <> 0 AND l_asg_end_date >= p_effective_date THEN
594
595 RETURN ('Y');
596 --
597 ELSE
598
599 RETURN ('N');
600 --
601 END IF;
602 --
603 END IF;
604 --
605 IF l_first_flag = 0 THEN
606 --
607 l_first_flag := 1;
608 l_asg_end_date := rec_asg_contribution.end_date;
609 --
610 IF trunc(p_effective_date,'Y') < rec_asg_contribution.start_date THEN
611 --
612 CLOSE csr_asg_contribution;
613
614 RETURN ('N');
615 --
616 END IF;
617 --
618 END IF;
619 --
620 IF rec_asg_contribution.start_date > (l_asg_end_date + 1) THEN
621 --
622 CLOSE csr_asg_contribution;
623 fnd_file.put_line(fnd_file.log,'Pos 4');
624 RETURN ('N');
625 --
626 END IF;
627 --
628 l_asg_end_date := greatest(l_asg_end_date, rec_asg_contribution.end_date);
629 --
630 IF l_asg_end_date >= p_effective_date THEN
631 --
632 CLOSE csr_asg_contribution;
633 fnd_file.put_line(fnd_file.log,'Pos 5');
634 RETURN ('Y');
635 --
636 END IF;
637 --
638 END LOOP;
639 --
640 END employed_throughout_year;
641 --
642 --
643 -- -----------------------------------------------------------------------------
644 -- Returns Dates / Days for Non-Continuous Employment
645 -- -----------------------------------------------------------------------------
646 --
647 --
648 FUNCTION employed_period(p_person_id IN NUMBER
649 ,p_legal_empoyer_id IN NUMBER
650 ,p_effective_date IN DATE)
651 RETURN VARCHAR2 AS
652 --
653 CURSOR csr_asg_contribution is
654 SELECT greatest( trunc(p_effective_date,'Y'), paf.effective_start_date) start_date
655 ,least( p_effective_date, paf.effective_end_date) end_date
656 FROM per_all_assignments_f paf
657 ,hr_soft_coding_keyflex sck
658 ,hr_organization_information hoi
659 ,per_assignment_status_types pas
660 WHERE paf.person_id = p_person_id
661 AND sck.soft_coding_keyflex_id = paf.soft_coding_keyflex_id
662 AND pas.assignment_status_type_id = paf.assignment_status_type_id
663 AND pas.user_status = 'Active Assignment'
664 AND hoi.org_information_context = 'NO_LOCAL_UNITS'
665 AND hoi.org_information1 = sck.segment2
666 AND hoi.organization_id = p_legal_empoyer_id
667 AND ((paf.effective_start_date BETWEEN trunc(p_effective_date,'Y') and p_effective_date
668 OR paf.effective_end_date BETWEEN trunc(p_effective_date,'Y') and p_effective_date)
669 OR (trunc(p_effective_date,'Y') > paf.effective_start_date
670 AND p_effective_date < paf.effective_end_date))
671 ORDER BY paf.effective_start_date;
672 --
673 l_asg_start_date per_all_assignments_f.effective_start_date%TYPE;
674 l_asg_end_date per_all_assignments_f.effective_end_date%TYPE;
675 l_first_flag NUMBER;
676 l_days NUMBER;
677 --
678 rec_asg_contribution csr_asg_contribution%ROWTYPE;
679 --
680 BEGIN
681 --
682 l_first_flag := 0;
683 l_days := 0;
684 --
685 OPEN csr_asg_contribution;
686 LOOP
687 --
688 FETCH csr_asg_contribution INTO rec_asg_contribution;
689 --
690 IF csr_asg_contribution%NOTFOUND THEN
691 --
692 CLOSE csr_asg_contribution;
693 --
694 IF l_days = 0 THEN
695 Return to_char(l_asg_start_date,'DD/MON') || '-' || to_char(l_asg_end_date,'DD/MON');
696 ELSE
697 Return to_char(l_days + (l_asg_end_date - l_asg_start_date) + 1);
698 END IF;
699 --
700 END IF;
701 --
702 IF l_first_flag = 0 THEN
703 --
704 l_first_flag :=1;
705 l_asg_start_date := rec_asg_contribution.start_date;
706 l_asg_end_date := rec_asg_contribution.end_date;
707 --
708 END IF;
709 --
710 -- Only dates have to be reported
711 IF l_asg_end_date >= rec_asg_contribution.start_date THEN
712 l_asg_end_date := greatest(rec_asg_contribution.end_date, l_asg_end_date);
713 ELSE
714 -- Only days have to be reported
715 l_days := l_days + (l_asg_end_date - l_asg_start_date) + 1;
716 l_asg_start_date := rec_asg_contribution.start_date;
717 l_asg_end_date := rec_asg_contribution.end_date;
718 END IF;
719 --
720 END LOOP;
721 --
722 END employed_period;
723 --
724 -- -----------------------------------------------------------------------------
725 -- Returns the defined balance ID for a given balance / balance dimension
726 -- combination.
727 -- -----------------------------------------------------------------------------
728 --
729 FUNCTION get_defined_balance
730 (p_business_group_id IN NUMBER
731 ,p_balance_name IN VARCHAR2
732 ,p_database_item_suffix IN VARCHAR) RETURN NUMBER IS
733 --
734 CURSOR csr_DEF_BAL
735 (p_business_group_id IN NUMBER
736 ,p_balance_name IN VARCHAR2
737 ,p_database_item_suffix IN VARCHAR) IS
738 SELECT db.defined_balance_id
739 FROM pay_defined_balances db
740 ,pay_balance_dimensions bd
741 ,pay_balance_types bt
742 WHERE bt.balance_name = p_balance_name
743 AND ((bt.business_group_id IS NULL AND bt.legislation_code = 'NO') OR (bt.legislation_code IS NULL AND bt.business_group_id = p_business_group_id))
744 AND bd.database_item_suffix = p_database_item_suffix
745 AND ((bd.business_group_id IS NULL AND bd.legislation_code = 'NO') OR (bd.legislation_code IS NULL AND bd.business_group_id = p_business_group_id))
746 AND db.balance_type_id = bt.balance_type_id
747 AND db.balance_dimension_id = bd.balance_dimension_id;
748 --
749 l_def_bal_rec csr_DEF_BAL%ROWTYPE;
750 --
751 BEGIN
752 OPEN csr_DEF_BAL
753 (p_business_group_id
754 ,p_balance_name
755 ,p_database_item_suffix);
756 FETCH csr_DEF_BAL INTO l_def_bal_rec;
757 CLOSE csr_DEF_BAL;
758 --
759 RETURN l_def_bal_rec.defined_balance_id;
760 END get_defined_balance;
761 --
762 --
763 -- -----------------------------------------------------------------------------
764 -- Returns the element type ID for a given element.
765 -- -----------------------------------------------------------------------------
766 --
767 FUNCTION get_element
768 (p_business_group_id IN NUMBER
769 ,p_element_name IN VARCHAR2) RETURN NUMBER IS
770 --
771 CURSOR csr_ELEMENT
772 (p_business_group_id IN NUMBER
773 ,p_element_name IN VARCHAR2) IS
774 SELECT et.element_type_id
775 FROM pay_element_types_f et
776 WHERE et.element_name = p_element_name
777 AND ((et.business_group_id IS NULL AND et.legislation_code = 'NO') OR (et.legislation_code IS NULL AND et.business_group_id = p_business_group_id));
778 --
779 l_element_rec csr_ELEMENT%ROWTYPE;
780 --
781 BEGIN
782 OPEN csr_ELEMENT
783 (p_business_group_id
784 ,p_element_name);
785 FETCH csr_ELEMENT INTO l_element_rec;
786 CLOSE csr_ELEMENT;
787 --
788 RETURN l_element_rec.element_type_id;
789 END get_element;
790 --
791 --
792 -- -----------------------------------------------------------------------------
793 -- Returns the global value for a given global.
794 -- -----------------------------------------------------------------------------
795 --
796 FUNCTION get_global
797 (p_effective_date IN DATE
798 ,p_global_name IN VARCHAR2) RETURN VARCHAR2 IS
799 --
800 CURSOR csr_GLOBAL
801 (p_effective_date IN DATE
802 ,p_global_name IN VARCHAR2) IS
803 SELECT glb.global_value
804 FROM ff_globals_f glb
805 WHERE glb.global_name = p_global_name
806 AND glb.legislation_code = 'NO'
807 AND p_effective_date BETWEEN glb.effective_start_date
808 AND glb.effective_end_date;
809 --
810 l_global_rec csr_GLOBAL%ROWTYPE;
811 --
812 BEGIN
813 OPEN csr_GLOBAL
814 (p_effective_date
815 ,p_global_name);
816 FETCH csr_GLOBAL INTO l_global_rec;
817 CLOSE csr_GLOBAL;
818 --
819 RETURN l_global_rec.global_value;
820 END get_global;
821 --
822 --
823 -- -----------------------------------------------------------------------------
824 -- Returns organization details for a given organization.
825 -- -----------------------------------------------------------------------------
826 --
827 PROCEDURE get_org_details
828 (p_organization_id IN NUMBER
829 ,p_name OUT NOCOPY VARCHAR2
830 ,p_address_line1 OUT NOCOPY VARCHAR2
831 ,p_address_line2 OUT NOCOPY VARCHAR2
832 ,p_address_line3 OUT NOCOPY VARCHAR2
833 ,p_postcode OUT NOCOPY VARCHAR2
834 ,p_postoffice OUT NOCOPY VARCHAR2) IS
835 --
836 CURSOR csr_ORG_DETAILS
837 (p_organization_id IN NUMBER) IS
838 SELECT org.name
839 ,loc.address_line_1
840 ,loc.address_line_2
841 ,loc.address_line_3
842 ,loc.postal_code postcode
843 ,UPPER(SUBSTR(hr_general.decode_lookup('NO_POSTAL_CODE', loc.postal_code)
844 ,INSTR(hr_general.decode_lookup('NO_POSTAL_CODE', loc.postal_code), ' ') + 1)) postoffice
845 FROM hr_all_organization_units org
846 ,hr_locations_all loc
847 WHERE org.organization_id = p_organization_id
848 AND loc.location_id (+) = org.location_id;
849 --
850 l_org_dtl_rec csr_ORG_DETAILS%ROWTYPE;
851 BEGIN
852 OPEN csr_ORG_DETAILS
853 (p_organization_id);
854 FETCH csr_ORG_DETAILS INTO l_org_dtl_rec;
855 CLOSE csr_ORG_DETAILS;
856 --
857 p_name := l_org_dtl_rec.name;
858 p_address_line1 := l_org_dtl_rec.address_line_1;
859 p_address_line2 := l_org_dtl_rec.address_line_2;
860 p_address_line3 := l_org_dtl_rec.address_line_3;
861 p_postcode := l_org_dtl_rec.postcode;
862 p_postoffice := l_org_dtl_rec.postoffice;
863 END get_org_details;
864 --
865 --
866 -- -----------------------------------------------------------------------------
867 -- Returns person address for a given person ID.
868 -- -----------------------------------------------------------------------------
869 --
870 PROCEDURE get_per_addr
871 (p_person_id IN NUMBER
872 ,p_report_date IN DATE
873 ,p_address_line1 OUT NOCOPY VARCHAR2
874 ,p_address_line2 OUT NOCOPY VARCHAR2
875 ,p_address_line3 OUT NOCOPY VARCHAR2
876 ,p_postcode OUT NOCOPY VARCHAR2
877 ,p_postoffice OUT NOCOPY VARCHAR2) IS
878 --
879 CURSOR csr_PER_DETAILS
880 (p_person_id IN NUMBER
881 ,p_report_date IN DATE) IS
882 SELECT pa.address_line1 address_line_1
883 ,pa.address_line2 address_line_2
884 ,pa.address_line3 address_line_3
885 ,pa.postal_code postcode
886 ,decode(pa.style,'NO',substr(hr_general.decode_lookup('NO_POSTAL_CODE',pa.postal_code),
887 instr(hr_general.decode_lookup('NO_POSTAL_CODE',pa.postal_code),' ')+1),'NO_GLB',pa.town_or_city) postoffice
888 FROM per_addresses pa
889 WHERE pa.person_id = p_person_id
890 AND pa.primary_flag = 'Y'
891 AND pa.style IN ('NO', 'NO_GLB')
892 AND p_report_date BETWEEN pa.date_from
893 AND nvl(pa.date_to,to_date('31-12-4712','DD-MM-YYYY'));
894 --
895 l_per_dtl_rec csr_PER_DETAILS%ROWTYPE;
896 BEGIN
897 OPEN csr_PER_DETAILS
898 (p_person_id
899 ,p_report_date);
900 FETCH csr_PER_DETAILS INTO l_per_dtl_rec;
901 CLOSE csr_PER_DETAILS;
902 --
903 p_address_line1 := l_per_dtl_rec.address_line_1;
904 p_address_line2 := l_per_dtl_rec.address_line_2;
905 p_address_line3 := l_per_dtl_rec.address_line_3;
906 p_postcode := l_per_dtl_rec.postcode;
907 p_postoffice := l_per_dtl_rec.postoffice;
908 END get_per_addr;
909 --
910 --
911 -- -----------------------------------------------------------------------------
912 -- Sets all legislative parameters as global variables for future use.
913 -- -----------------------------------------------------------------------------
914 --
915 PROCEDURE set_parameters
916 (p_payroll_action_id IN NUMBER) IS
917 --
918 CURSOR csr_PARAMS
919 (p_payroll_action_id IN NUMBER) IS
920 SELECT business_group_id
921 ,legislative_parameters
922 ,pay_no_eoy_archive.get_parameter(legislative_parameters, 'LEGAL_EMPLOYER_ID') legal_employer_id
923 ,fnd_date.canonical_to_date(pay_no_eoy_archive.get_parameter(legislative_parameters, 'DATE')) report_date
924 FROM pay_payroll_actions
925 WHERE payroll_action_id = p_payroll_action_id;
926 --
927 l_parameter_rec csr_PARAMS%ROWTYPE;
928 --
929 BEGIN
930 OPEN csr_PARAMS(p_payroll_action_id);
931 FETCH csr_PARAMS INTO l_parameter_rec;
932 CLOSE csr_PARAMS;
933 --
934 g_payroll_action_id := p_payroll_action_id;
935 g_business_group_id := l_parameter_rec.business_group_id;
936 g_legal_employer_id := l_parameter_rec.legal_employer_id;
937 g_report_date := l_parameter_rec.report_date;
938 END set_parameters;
939 --
940 --
941 -- -----------------------------------------------------------------------------
942 -- Part of archive logic.
943 -- -----------------------------------------------------------------------------
944 --
945 PROCEDURE range_code
946 (p_payroll_action_id IN NUMBER
947 ,p_sql OUT NOCOPY VARCHAR2) IS
948 --
949 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.range_code';
950 --
951 CURSOR csr_LEGEMP
952 (p_business_group_id IN NUMBER
953 ,p_legal_employer_id IN NUMBER) IS
954 SELECT org.organization_id legal_employer_id
955 ,org.name
956 ,hoi2.org_information1 organization_number
957 ,TO_NUMBER(hoi2.org_information5) tax_office_id
958 ,hoi2.org_information2 tax_municipality
959 FROM hr_all_organization_units org
960 ,hr_organization_information hoi1
961 ,hr_organization_information hoi2
962 WHERE p_legal_employer_id IS NULL
963 AND org.business_group_id = p_business_group_id
964 AND hoi1.organization_id = org.organization_id
965 AND hoi1.org_information_context = 'CLASS'
966 AND hoi1.org_information1 = 'HR_LEGAL_EMPLOYER'
967 AND hoi2.organization_id (+) = hoi1.organization_id
968 AND hoi2.org_information_context (+) = 'NO_LEGAL_EMPLOYER_DETAILS'
969 UNION ALL
970 SELECT org.organization_id legal_employer_id
971 ,org.name
972 ,hoi1.org_information1 organization_number
973 ,TO_NUMBER(hoi1.org_information5) tax_office_id
974 ,hoi1.org_information2 tax_municipality
975 FROM hr_all_organization_units org
976 ,hr_organization_information hoi1
977 WHERE p_legal_employer_id IS NOT NULL
978 AND org.organization_id = p_legal_employer_id
979 AND hoi1.organization_id (+) = org.organization_id
980 AND hoi1.org_information_context (+) = 'NO_LEGAL_EMPLOYER_DETAILS';
981 --
982 -- Cursor to Extract Other subsidis received (to reduce excemption limit),
983 -- same as in bi-monthly recording sheet, but total for the year (2007/08 changes)
984 --
985
986 CURSOR csr_Legal_Emp_EA(csr_v_legal_emp_id hr_organization_information.organization_id%TYPE
987 ,csr_v_business_group_id hr_organization_units.business_group_id%TYPE
988 ,p_report_date DATE) IS
989 SELECT to_number(hoi2.org_information4) economic_aid
990 FROM hr_organization_units o1
991 ,hr_organization_information hoi1
992 ,hr_organization_information hoi2
993 WHERE o1.business_group_id = csr_v_business_group_id
994 AND hoi1.organization_id = o1.organization_id
995 AND hoi1.organization_id = csr_v_legal_emp_id
996 AND hoi1.org_information1 = 'HR_LEGAL_EMPLOYER'
997 AND hoi1.org_information_context = 'CLASS'
998 AND o1.organization_id = hoi2.organization_id
999 AND hoi2.org_information_context ='NO_NI_EXEMPTION_LIMIT'
1000 AND p_report_date BETWEEN fnd_date.canonical_to_date(hoi2.org_information2)
1001 AND fnd_date.canonical_to_date(hoi2.org_information3);
1002 --
1003 --
1004
1005 CURSOR csr_REPCODE
1006 (p_report_date IN DATE
1007 ,p_legal_employer_id IN NUMBER) IS
1008 SELECT r.row_low_range_or_name reporting_code
1009 ,hr_general.decode_lookup('NO_EOY_REPORTING_CODE',
1010 hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'MAPPING_ID')) description
1011 ,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'FIXED_CODE') fixed_code
1012 ,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'XML_CODE_MAP') XML_CODE -- Added w.r.t phase2 Legislative changes for NORWAY for 2008
1013 ,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'MULT_REC') mult_rec
1014 ,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'REP_EARNINGS') reportable_earnings
1015 ,nvl(hoi.org_information4, hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'ASG_INFO_METH')) asg_info_meth
1016 ,nvl(DECODE(hoi.org_information4,'BAL', hoi.org_information5,'BAL_CODE_CTX', hoi.org_information5,'RRV_ELEMENT', hoi.org_information6,'PROCEDURE', hoi.org_information7),
1017 decode(hoi.org_information4,'RRV',NULL,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'ASG_INFO_DFN'))) asg_info_dfn
1018 ,nvl(hoi.org_information14, hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'REP_SUMM_METH')) rep_summ_meth
1019 ,nvl(DECODE(hoi.org_information14,'PROCEDURE' , hoi.org_information15),
1020 decode(hoi.org_information14, 'PROCEDURE', hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'REP_SUMM_DFN'))) rep_summ_dfn
1021 FROM pay_user_tables t
1022 ,pay_user_rows_f r
1023 ,hr_organization_information hoi
1024 WHERE t.user_table_name = 'NO_EOY_CODE_REPORTING_RULES'
1025 AND t.legislation_code = 'NO'
1026 AND r.user_table_id = t.user_table_id
1027 AND r.row_low_range_or_name = hoi.org_information3(+)
1028 AND hoi.organization_id(+) = p_legal_employer_id
1029 AND hoi.org_information_context(+) = 'NO_EOY_REPORTING_RULE_OVERRIDE'
1030 AND to_number(to_char(p_report_date,'YYYY')) between to_number(hoi.org_information1(+))
1031 AND to_number(nvl(hoi.org_information2,'4712'))
1032 AND p_report_date BETWEEN r.effective_start_date
1033 AND r.effective_end_date;
1034 --
1035 CURSOR csr_REPCODE_INFO
1036 (p_report_date IN DATE
1037 ,p_reporting_code IN VARCHAR2
1038 ,p_legal_employer_id IN NUMBER) IS
1039 SELECT SUBSTR(c.user_column_name, 1, INSTR(c.user_column_name, '_') - 1) info_id
1040 ,hr_general.decode_lookup('NO_EOY_INFO_PROMPTS', ci.value) prompt
1041 ,nvl(DECODE(SUBSTR(c.user_column_name, 1, INSTR(c.user_column_name, '_') - 1)
1042 ,'INFO1',hoi.org_information8
1043 ,'INFO2',hoi.org_information9
1044 ,'INFO3',hoi.org_information10
1045 ,'INFO4',hoi.org_information11
1046 ,'INFO5',hoi.org_information12
1047 ,'INFO6',hoi.org_information13)
1048 ,hr_de_general.get_uci
1049 (p_report_date
1050 ,t.user_table_id
1051 ,r.user_row_id
1052 ,SUBSTR(c.user_column_name, 1, INSTR(c.user_column_name, '_') - 1) || '_ASG_INFO_DFN')) asg_info_dfn
1053 ,hr_de_general.get_uci
1054 (p_report_date
1055 ,t.user_table_id
1056 ,r.user_row_id
1057 ,SUBSTR(c.user_column_name, 1, INSTR(c.user_column_name, '_') - 1) || '_DATATYPE') datatype
1058 ,hr_de_general.get_uci
1059 (p_report_date
1060 ,t.user_table_id
1061 ,r.user_row_id
1062 ,SUBSTR(c.user_column_name, 1, INSTR(c.user_column_name, '_') - 1) || '_XML_CODE_MAP') XML_VALUE_MAP --2007/08 changes
1063 FROM pay_user_rows_f r
1064 ,pay_user_tables t
1065 ,pay_user_columns c
1066 ,pay_user_column_instances_f ci
1067 ,hr_organization_information hoi
1068 WHERE t.user_table_name = 'NO_EOY_CODE_REPORTING_RULES'
1069 AND c.user_table_id = t.user_table_id
1070 AND r.user_table_id = t.user_table_id
1071 AND ci.user_row_id = r.user_row_id
1072 AND ci.user_column_id = c.user_column_id
1073 AND c.user_column_name LIKE '%PROMPT'
1074 AND r.row_low_range_or_name = p_reporting_code
1075 AND r.row_low_range_or_name = hoi.org_information3(+)
1076 AND hoi.organization_id(+) = p_legal_employer_id
1077 AND hoi.org_information_context(+) = 'NO_EOY_REPORTING_RULE_OVERRIDE'
1078 AND to_number(to_char(p_report_date,'YYYY')) BETWEEN to_number(hoi.org_information1(+))
1079 AND to_number(nvl(hoi.org_information2,'4712'))
1080 AND p_report_date BETWEEN r.effective_start_date AND r.effective_end_date
1081 AND p_report_date BETWEEN ci.effective_start_date AND ci.effective_end_date;
1082 --
1083 CURSOR csr_LE_SI_LU_TM_INFO
1084 (p_report_date IN DATE
1085 ,p_business_group_id IN NUMBER
1086 ,p_legal_employer_id IN NUMBER) IS
1087 SELECT DISTINCT
1088 DECODE(orginf2.org_information5
1089 ,'Y', orginf2.org_information4
1090 ,orginf1.org_information3) si_status
1091 ,org2.organization_id local_unit_id
1092 ,org2.name local_unit
1093 ,pac2.context_value tax_municipality_id
1094 ,lu.meaning tax_municipality
1095 ,TO_NUMBER(decode(hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'ZONE'),'1a','6','4a','7',
1096 hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'ZONE'))) ni_zone
1097 -- ,TO_NUMBER(SUBSTR(lu.meaning, 1,1)) ni_zone
1098 ,DECODE(orginf2.org_information5,'Y', orginf2.org_information2,orginf1.org_information4) nace_code -- 2007/08 changes
1099 ,paa.assignment_id assg_id -- 2007/2008 Changes
1100 FROM pay_assignment_actions paa
1101 ,pay_payroll_actions ppa
1102 ,pay_action_contexts pac1
1103 ,pay_action_contexts pac2
1104 ,ff_contexts ctx1
1105 ,ff_contexts ctx2
1106 ,hr_lookups lu
1107 ,hr_organization_information orginf1
1108 ,hr_all_organization_units org2
1109 ,hr_organization_information orginf2
1110 ,pay_user_tables t
1111 ,pay_user_rows_f r
1112 WHERE ppa.business_group_id = p_business_group_id
1113 AND paa.payroll_action_id = ppa.payroll_action_id
1114 AND pac1.assignment_action_id = paa.assignment_action_id
1115 AND pac1.context_id = ctx1.context_id
1116 AND ctx1.context_name = 'LOCAL_UNIT_ID'
1117 AND pac2.assignment_action_id = paa.assignment_action_id
1118 AND pac2.context_id = ctx2.context_id
1119 AND ctx2.context_name = 'JURISDICTION_CODE'
1120 AND r.row_low_range_or_name = pac2.context_value
1121 AND t.user_table_name = 'NO_TAX_MUNICIPALITY'
1122 AND t.legislation_code = 'NO'
1123 AND r.user_table_id = t.user_table_id
1124 AND lu.lookup_type = 'NO_TAX_MUNICIPALITY'
1125 AND lu.lookup_code = hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'MAPPING_ID')
1126 AND paa.tax_unit_id = p_legal_employer_id
1127 AND org2.organization_id = pac1.context_value
1128 AND orginf1.organization_id = paa.tax_unit_id
1129 AND orginf1.org_information_context = 'NO_LEGAL_EMPLOYER_DETAILS'
1130 AND orginf2.organization_id = org2.organization_id
1131 AND orginf2.org_information_context = 'NO_LOCAL_UNIT_DETAILS'
1132 AND ppa.effective_date BETWEEN TRUNC(p_report_date, 'Y') AND p_report_date
1133 AND p_report_date BETWEEN r.effective_start_date AND r.effective_end_date
1134 ORDER BY DECODE(orginf2.org_information5, 'Y', orginf2.org_information4, orginf1.org_information3)
1135 ,org2.organization_id;
1136 --
1137 CURSOR csr_GET_ASG_ACT_ID
1138 (p_report_date IN DATE
1139 ,p_business_group_id IN NUMBER
1140 ,p_legal_employer_id IN NUMBER
1141 ,p_assg_id IN NUMBER) IS
1142 SELECT max(paa.assignment_action_id)
1143 FROM pay_payroll_actions ppa
1144 ,pay_assignment_actions paa
1145 WHERE ppa.business_group_id = p_business_group_id
1146 AND ppa.action_type IN ('R','Q','I','B')
1147 AND ppa.action_status = 'C'
1148 AND paa.payroll_action_id = ppa.payroll_action_id
1149 AND paa.assignment_id = p_assg_id -- changes 2007/2008
1150 AND paa.tax_unit_id = p_legal_employer_id
1151 AND ppa.date_earned BETWEEN TRUNC(p_report_date, 'Y') AND p_report_date;
1152 --
1153 l_act_inf_id NUMBER;
1154 l_ovn NUMBER;
1155 l_asg_act_id NUMBER;
1156 l_si_status VARCHAR2(30);
1157 l_local_unit_id VARCHAR2(30);
1158 l_asg_info_dfn VARCHAR2(61);
1159 l_le_si_count NUMBER := 0;
1160 l_le_si_bal_table t_le_si_bal_table;
1161 l_bal_value NUMBER := 0;
1162 l_le_name hr_all_organization_units.name%TYPE;
1163 l_le_addr1 hr_locations_all.address_line_1%TYPE;
1164 l_le_addr2 hr_locations_all.address_line_2%TYPE;
1165 l_le_addr3 hr_locations_all.address_line_3%TYPE;
1166 l_le_postcode hr_locations_all.postal_code%TYPE;
1167 l_le_postoffice VARCHAR2(100);
1168 l_to_name hr_all_organization_units.name%TYPE;
1169 l_to_addr1 hr_locations_all.address_line_1%TYPE;
1170 l_to_addr2 hr_locations_all.address_line_2%TYPE;
1171 l_to_addr3 hr_locations_all.address_line_3%TYPE;
1172 l_to_postcode hr_locations_all.postal_code%TYPE;
1173 l_to_postoffice VARCHAR2(100);
1174 l_ni_zone_arc VARCHAR2(10);
1175 l_tax_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Tax', '_TU_LU_YTD');
1176 l_ec_spcl_pct_bse_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employer Contribution Special Percentage Base', '_TU_LU_YTD');
1177 l_ec_spcl_pct_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employer Contribution Special Percentage', '_TU_LU_YTD');
1178 l_ec_spcl_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employer Contribution Special', '_TU_LU_YTD');
1179 l_ec_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employer Contribution Base', '_TU_MU_LU_YTD');
1180 l_eco62_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employer Contribution Over 62 Base', '_TU_MU_LU_YTD');
1181 -- Start Changes 2007/2008
1182
1183 -- The Balance below are used to display for the new XML Requirements
1184
1185 l_ec_spcl_reimb_bse_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employer Contribution Special Perc Benefit Reimbursed Base','_TU_LU_YTD');
1186 l_emp_pension_bse_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Employers Pension Premium', '_TU_MU_LU_YTD');
1187
1188 -- The six balance below will add up to give the Reimburse Base
1189 l_reimb_bse NUMBER := 0;
1190 l_emp_contr_bse NUMBER := 0;
1191 l_pension_bse NUMBER := 0;
1192 l_tot_emp_contr_bse NUMBER := 0;
1193 l_tot_reimb_bse NUMBER := 0;
1194 l_tot_pension_bse NUMBER := 0;
1195 l_sick_reimb_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Sickness Benefit Reimbursed', '_TU_MU_LU_YTD');
1196 l_child_mind_reimb_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Child Minder Sickness Benefit Reimbursed', '_TU_MU_LU_YTD');
1197 l_parent_reimb_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Parental Benefit Reimbursed', '_TU_MU_LU_YTD');
1198 l_sick_hdy_reimb_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Sickness Benefit Holiday Pay Reimbursed', '_TU_MU_LU_YTD');
1199 l_cld_sck_hdy_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Child Minder Sickness Benefit Holiday Pay Reimbursed', '_TU_MU_LU_YTD');
1200 l_prnt_hdy_reimb_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Parental Benefit Holiday Pay Reimbursed', '_TU_MU_LU_YTD');
1201
1202 l_Legal_Emp_EA csr_Legal_Emp_EA%ROWTYPE;
1203 -- End Changes 2007/2008
1204 --
1205 BEGIN
1206 hr_utility.set_location('Entering ' || l_proc_name, 10);
1207 --
1208 --
1209 -- Setup legislative parameters as global values for future use.
1210 --
1211 set_parameters(p_payroll_action_id);
1212 --
1213 Fnd_file.put_line(FND_FILE.LOG,'Inside Archive');
1214
1215 -- Archive: EMEA REPORT DETAILS -> PYNOEOYA
1216 --
1217 pay_action_information_api.create_action_information
1218 (p_action_context_type => 'PA'
1219 ,p_action_context_id => p_payroll_action_id
1220 ,p_action_information_id => l_act_inf_id
1221 ,p_object_version_number => l_ovn
1222 ,p_effective_date => g_report_date
1223 ,p_action_information_category => 'EMEA REPORT DETAILS'
1224 ,p_action_information1 => 'PYNOEOYA');
1225 --
1226 --
1227 -- Loop through all legal employers.
1228 --
1229 --
1230 FOR l_rec1 IN csr_LEGEMP(g_business_group_id, g_legal_employer_id) LOOP
1231 --
1232 --
1233 -- Get details for legal employer.
1234 --
1235 get_org_details
1236 (p_organization_id => l_rec1.legal_employer_id
1237 ,p_name => l_le_name
1238 ,p_address_line1 => l_le_addr1
1239 ,p_address_line2 => l_le_addr2
1240 ,p_address_line3 => l_le_addr3
1241 ,p_postcode => l_le_postcode
1242 ,p_postoffice => l_le_postoffice);
1243 --
1244 --
1245 -- Get details for tax office.
1246 --
1247 get_org_details
1248 (p_organization_id => l_rec1.tax_office_id
1249 ,p_name => l_to_name
1250 ,p_address_line1 => l_to_addr1
1251 ,p_address_line2 => l_to_addr2
1252 ,p_address_line3 => l_to_addr3
1253 ,p_postcode => l_to_postcode
1254 ,p_postoffice => l_to_postoffice);
1255 --
1256 --
1257 OPEN csr_Legal_Emp_EA( l_rec1.legal_employer_id,g_business_group_id,g_report_date) ;
1258 FETCH csr_Legal_Emp_EA INTO l_Legal_Emp_EA;
1259 CLOSE csr_Legal_Emp_EA;
1260
1261 --
1262 -- Archive: EMEA REPORT INFORMATION | LEG_EMP_INFO
1263 --
1264 pay_action_information_api.create_action_information
1265 (p_action_context_type => 'PA'
1266 ,p_action_context_id => p_payroll_action_id
1267 ,p_action_information_id => l_act_inf_id
1268 ,p_object_version_number => l_ovn
1269 ,p_effective_date => g_report_date
1270 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1271 ,p_action_information1 => 'LEG_EMP_INFO'
1272 ,p_action_information2 => TO_CHAR(l_rec1.legal_employer_id)
1273 ,p_action_information3 => l_rec1.name
1274 ,p_action_information4 => l_rec1.organization_number
1275 ,p_action_information5 => l_le_addr1
1276 ,p_action_information6 => l_le_addr2
1277 ,p_action_information7 => l_le_addr3
1278 ,p_action_information8 => l_le_postcode
1279 ,p_action_information9 => l_le_postoffice
1280 ,p_action_information10 => l_to_name
1281 ,p_action_information11 => l_to_addr1
1282 ,p_action_information12 => l_to_addr2
1283 ,p_action_information13 => l_to_addr3
1284 ,p_action_information14 => l_to_postcode
1285 ,p_action_information15 => l_to_postoffice
1286 ,p_action_information16 => l_rec1.tax_municipality
1287 ,p_action_information17 => l_Legal_Emp_EA.economic_aid); -- 2007/2008 Changes
1288 --
1289 l_le_si_bal_table := g_empty_le_si_bal_table;
1290 l_le_si_count := 0;
1291 l_si_status := '~';
1292 l_local_unit_id := '~';
1293 --
1294
1295 -- Loop through all SI status, local unit, and tax municipality combinations for the legal employer.
1296 --
1297 FOR l_rec2 IN csr_LE_SI_LU_TM_INFO(g_report_date, g_business_group_id, l_rec1.legal_employer_id) LOOP
1298 --
1299 --
1300 -- Set balance contexts.
1301 --
1302 pay_balance_pkg.set_context('TAX_UNIT_ID', l_rec1.legal_employer_id);
1303 pay_balance_pkg.set_context('DATE_EARNED', fnd_date.date_to_canonical(g_report_date));
1304 pay_balance_pkg.set_context('LOCAL_UNIT_ID', l_rec2.local_unit_id);
1305 pay_balance_pkg.set_context('JURISDICTION_CODE', l_rec2.tax_municipality_id);
1306 --
1307 --
1308 -- Reset the values to Zero: changes 2007/2008
1309 l_reimb_bse := 0;
1310 l_emp_contr_bse := 0;
1311 l_pension_bse := 0 ;
1312
1313 -- Moved on to a new SI status so initialise data structure.
1314 --
1315 IF NOT(l_si_status = l_rec2.si_status) THEN
1316 l_le_si_count := l_le_si_count + 1;
1317 l_le_si_bal_table(l_le_si_count).si_status := l_rec2.si_status;
1318 l_le_si_bal_table(l_le_si_count).tax := 0;
1319 l_le_si_bal_table(l_le_si_count).emp_contr_reimb_spcl_base := 0;
1320 l_le_si_bal_table(l_le_si_count).emp_contr_spcl_pct_base := 0;
1321 l_le_si_bal_table(l_le_si_count).emp_contr_spcl_pct := 0;
1322 l_le_si_bal_table(l_le_si_count).emp_contr_spcl := 0;
1323 FOR l_count IN 1..7 LOOP
1324 l_le_si_bal_table(l_le_si_count).pension.ni_zone(l_count) := 0;
1325 l_le_si_bal_table(l_le_si_count).emp_contr.ni_zone(l_count) := 0;
1326 l_le_si_bal_table(l_le_si_count).emp_contr_over62.ni_zone(l_count) := 0;
1327 END LOOP;
1328 l_le_si_bal_table(l_le_si_count).pension.total := 0;
1329 l_le_si_bal_table(l_le_si_count).emp_contr.total := 0;
1330 l_le_si_bal_table(l_le_si_count).emp_contr_over62.total := 0;
1331 END IF;
1332 --
1333 --
1334 -- Moved the call of the cursor outside the IF condition
1335 --
1336 OPEN csr_GET_ASG_ACT_ID(g_report_date, g_business_group_id, l_rec1.legal_employer_id, l_rec2.assg_id) ; -- Changes 2007/2008
1337 FETCH csr_GET_ASG_ACT_ID INTO l_asg_act_id;
1338 CLOSE csr_GET_ASG_ACT_ID;
1339 --
1340 -- Find distinct SI status / local unit combinations as these will be used later to combine the totals for various reporting codes.
1341 --
1342 IF NOT(l_si_status = l_rec2.si_status AND l_local_unit_id = l_rec2.local_unit_id) THEN
1343 --
1344 --
1345 -- Archive: EMEA REPORT INFORMATION | LE_SI_LU_INFO
1346 --
1347 pay_action_information_api.create_action_information
1348 (p_action_context_type => 'PA'
1349 ,p_action_context_id => p_payroll_action_id
1350 ,p_action_information_id => l_act_inf_id
1351 ,p_object_version_number => l_ovn
1352 ,p_effective_date => g_report_date
1353 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1354 ,p_action_information1 => 'LE_SI_LU_INFO'
1355 ,p_action_information2 => TO_CHAR(l_rec1.legal_employer_id)
1356 ,p_action_information3 => l_rec2.si_status
1357 ,p_action_information4 => l_rec2.local_unit_id
1358 ,p_action_information5 => l_rec2.nace_code ); -- 2007-08 changes
1359 --
1360 -- Retrieve balances for:-
1361 --
1362 -- Tax_TU_LU_YTD
1363 -- Employer Contribution Special Percentage Base_TU_LU_YTD
1364 -- Employer Contribution Special Percentage_TU_LU_YTD
1365 -- Employer Contribution Special_TU_LU_YTD
1366 --
1367 --
1368 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_tax_defbal_id, p_assignment_action_id => l_asg_act_id);
1369 l_le_si_bal_table(l_le_si_count).tax := l_le_si_bal_table(l_le_si_count).tax + l_bal_value;
1370 --
1371 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_ec_spcl_pct_bse_defbal_id, p_assignment_action_id => l_asg_act_id);
1372 l_le_si_bal_table(l_le_si_count).emp_contr_spcl_pct_base := l_le_si_bal_table(l_le_si_count).emp_contr_spcl_pct_base + l_bal_value;
1373 --
1374 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_ec_spcl_pct_defbal_id, p_assignment_action_id => l_asg_act_id);
1375 l_le_si_bal_table(l_le_si_count).emp_contr_spcl_pct := l_le_si_bal_table(l_le_si_count).emp_contr_spcl_pct + l_bal_value;
1376 --
1377 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_ec_spcl_defbal_id, p_assignment_action_id => l_asg_act_id);
1378 l_le_si_bal_table(l_le_si_count).emp_contr_spcl := l_le_si_bal_table(l_le_si_count).emp_contr_spcl + l_bal_value;
1379 --
1380
1381 END IF;
1382 --
1383 -- Start changes 2007/2008
1384 -- Special Reimburesd Base for US/Canada
1385 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_ec_spcl_reimb_bse_defbal_id, p_assignment_action_id => l_asg_act_id);
1386 l_le_si_bal_table(l_le_si_count).emp_contr_reimb_spcl_base := l_le_si_bal_table(l_le_si_count).emp_contr_reimb_spcl_base + l_bal_value;
1387 --
1388 -- Employer Contribution Base
1389 --
1390 l_emp_contr_bse := pay_balance_pkg.get_value(p_defined_balance_id => l_ec_defbal_id, p_assignment_action_id => l_asg_act_id);
1391 l_tot_emp_contr_bse := nvl(l_tot_emp_contr_bse,0) + nvl(l_emp_contr_bse,0);
1392 --
1393 -- Reimbursed Base
1394 --
1395 l_reimb_bse := pay_balance_pkg.get_value(p_defined_balance_id => l_sick_reimb_defbal_id
1396 ,p_assignment_action_id => l_asg_act_id);
1397 l_reimb_bse := nvl(l_reimb_bse,0) + nvl(pay_balance_pkg.get_value(p_defined_balance_id => l_child_mind_reimb_defbal_id
1398 ,p_assignment_action_id => l_asg_act_id),0);
1399 l_reimb_bse := nvl(l_reimb_bse,0) + nvl(pay_balance_pkg.get_value(p_defined_balance_id => l_parent_reimb_defbal_id
1400 ,p_assignment_action_id => l_asg_act_id),0);
1401 l_reimb_bse := nvl(l_reimb_bse,0) + nvl(pay_balance_pkg.get_value(p_defined_balance_id => l_sick_hdy_reimb_defbal_id
1402 ,p_assignment_action_id => l_asg_act_id),0);
1403 l_reimb_bse := nvl(l_reimb_bse,0) + nvl(pay_balance_pkg.get_value(p_defined_balance_id => l_cld_sck_hdy_defbal_id
1404 ,p_assignment_action_id => l_asg_act_id),0);
1405 l_reimb_bse := nvl(l_reimb_bse,0) + nvl(pay_balance_pkg.get_value(p_defined_balance_id => l_prnt_hdy_reimb_defbal_id
1406 ,p_assignment_action_id => l_asg_act_id),0);
1407 -- Total of the Reimbursed bases for all the zones
1408 l_tot_reimb_bse := nvl(l_tot_reimb_bse,0) + nvl(l_reimb_bse,0);
1409 --
1410 -- Pension Base
1411 --
1412 l_pension_bse := pay_balance_pkg.get_value(p_defined_balance_id => l_emp_pension_bse_defbal_id , p_assignment_action_id => l_asg_act_id);
1413
1414 l_tot_pension_bse := nvl(l_tot_pension_bse,0) + nvl(l_pension_bse,0);
1415 --
1416 -- End 2007/2008 changes
1417 --
1418 l_ni_zone_arc := NULL;
1419 --
1420 SELECT DECODE(l_rec2.ni_zone,6,'1a',7,'1a',l_rec2.ni_zone)
1421 INTO l_ni_zone_arc
1422 FROM DUAL;
1423 --
1424 --
1425 -- Archive: EMEA REPORT INFORMATION | LE_SI_LU_TM_INFO
1426 --
1427 pay_action_information_api.create_action_information
1428 (p_action_context_type => 'PA'
1429 ,p_action_context_id => p_payroll_action_id
1430 ,p_action_information_id => l_act_inf_id
1431 ,p_object_version_number => l_ovn
1432 ,p_effective_date => g_report_date
1433 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1434 ,p_action_information1 => 'LE_SI_LU_TM_INFO'
1435 ,p_action_information2 => TO_CHAR(l_rec1.legal_employer_id)
1436 ,p_action_information3 => l_rec2.si_status
1437 ,p_action_information4 => l_rec2.local_unit_id
1438 ,p_action_information5 => l_rec2.local_unit
1439 ,p_action_information6 => l_rec2.tax_municipality_id
1440 ,p_action_information7 => l_rec2.tax_municipality
1441 ,p_action_information8 => l_ni_zone_arc
1442 ,p_action_information9 => fnd_number.number_to_canonical(l_emp_contr_bse) -- 2007/2008 changes
1443 ,p_action_information10 => fnd_number.number_to_canonical(l_reimb_bse) -- 2007/2008 changes
1444 ,p_action_information11 => fnd_number.number_to_canonical(l_pension_bse)); -- 2007/2008 Changes
1445 --
1446
1447 -- Retrieve balances for:-
1448 --
1449 -- Employer Contribution Base_TU_MU_LU_YTD
1450 -- Employer Contribution Over 62 Base_TU_MU_LU_YTD
1451 --
1452 -- and add them into correct NI Zone.
1453 --
1454 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_ec_defbal_id, p_assignment_action_id => l_asg_act_id);
1455 l_le_si_bal_table(l_le_si_count).emp_contr.ni_zone(l_rec2.ni_zone) :=
1456 l_le_si_bal_table(l_le_si_count).emp_contr.ni_zone(l_rec2.ni_zone) + l_bal_value;
1457 l_le_si_bal_table(l_le_si_count).emp_contr.total :=
1458 l_le_si_bal_table(l_le_si_count).emp_contr.total + l_bal_value;
1459 --
1460 l_bal_value := pay_balance_pkg.get_value(p_defined_balance_id => l_eco62_defbal_id, p_assignment_action_id => l_asg_act_id);
1461 l_le_si_bal_table(l_le_si_count).emp_contr_over62.ni_zone(l_rec2.ni_zone) :=
1462 l_le_si_bal_table(l_le_si_count).emp_contr_over62.ni_zone(l_rec2.ni_zone) + l_bal_value;
1463 l_le_si_bal_table(l_le_si_count).emp_contr_over62.total :=
1464 l_le_si_bal_table(l_le_si_count).emp_contr_over62.total + l_bal_value;
1465 --
1466 l_si_status := l_rec2.si_status;
1467 l_local_unit_id := l_rec2.local_unit_id;
1468 END LOOP;
1469 --
1470 -- Loop through all legal employer / SI status records and write them out to archive.
1471 --
1472 IF l_le_si_bal_table.count > 0 THEN
1473 FOR l_count2 IN l_le_si_bal_table.FIRST .. l_le_si_bal_table.LAST LOOP
1474 --
1475 --
1476 -- Archive: EMEA REPORT INFORMATION | LE_SI_BALS
1477 --
1478 pay_action_information_api.create_action_information
1479 (p_action_context_type => 'PA'
1480 ,p_action_context_id => p_payroll_action_id
1481 ,p_action_information_id => l_act_inf_id
1482 ,p_object_version_number => l_ovn
1483 ,p_effective_date => g_report_date
1484 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1485 ,p_action_information1 => 'LE_SI_BALS'
1486 ,p_action_information2 => TO_CHAR(l_rec1.legal_employer_id)
1487 ,p_action_information3 => l_le_si_bal_table(l_count2).si_status
1488 ,p_action_information4 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr.ni_zone(1))
1489 ,p_action_information5 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr.ni_zone(2))
1490 ,p_action_information6 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr.ni_zone(3))
1491 ,p_action_information7 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr.ni_zone(4))
1492 ,p_action_information8 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr.ni_zone(5))
1493 ,p_action_information9 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr.total)
1494 ,p_action_information10 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_over62.ni_zone(1))
1495 ,p_action_information11 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_over62.ni_zone(2))
1496 ,p_action_information12 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_over62.ni_zone(3))
1497 ,p_action_information13 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_over62.ni_zone(4))
1498 ,p_action_information14 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_over62.ni_zone(5))
1499 ,p_action_information15 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_over62.total)
1500 ,p_action_information16 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).tax)
1501 ,p_action_information17 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_spcl_pct_base)
1502 ,p_action_information18 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_spcl_pct)
1503 ,p_action_information19 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_spcl)
1504 ,p_action_information20 => fnd_number.number_to_canonical(get_global(g_report_date, 'NO_NI_FOREIGN_SPECIAL_RATE'))
1505 ,p_action_information21 => fnd_number.number_to_canonical(get_global(g_report_date, 'NO_NI_FOREIGN_MARINER_AMOUNT'))
1506 ,p_action_information22 => fnd_number.number_to_canonical(l_le_si_bal_table(l_count2).emp_contr_reimb_spcl_base) -- 2007/2008 changes
1507 ,p_action_information23 => fnd_number.number_to_canonical(l_tot_reimb_bse) -- 2007/2008 changes
1508 ,p_action_information24 => fnd_number.number_to_canonical(l_tot_pension_bse)); -- 2007/2008 changes
1509
1510 END LOOP;
1511 END IF;
1512 --
1513 --
1514 -- Loop through all reporting code rules NB. The rules may vary between legal employers.
1515 --
1516 FOR l_rec3 IN csr_REPCODE(g_report_date, l_rec1.legal_employer_id) LOOP
1517 --
1518 --
1519 -- Extract IDs where appropriate i.e. element type ID or defined balance ID.
1520 --
1521 IF l_rec3.asg_info_meth = 'BAL' THEN
1522 l_asg_info_dfn := TO_CHAR(get_defined_balance(g_business_group_id, l_rec3.asg_info_dfn, '_ASG_TU_MC_LU_YTD'));
1523 ELSIF l_rec3.asg_info_meth = 'BAL_CODE_CTX' THEN
1524 l_asg_info_dfn := TO_CHAR(get_defined_balance(g_business_group_id, l_rec3.asg_info_dfn, '_ASG_ELE_CODE_TU_MC_LU_YTD'));
1525 ELSIF l_rec3.asg_info_meth = 'RRV_ELEMENT' THEN
1526 l_asg_info_dfn := TO_CHAR(get_element(g_business_group_id, l_rec3.asg_info_dfn));
1527 ELSE
1528 l_asg_info_dfn := l_rec3.asg_info_dfn;
1529 END IF;
1530 --
1531 -- Archive: EMEA REPORT INFORMATION | REP_CODE_DTLS
1532 --
1533 pay_action_information_api.create_action_information
1534 (p_action_context_type => 'PA'
1535 ,p_action_context_id => p_payroll_action_id
1536 ,p_action_information_id => l_act_inf_id
1537 ,p_object_version_number => l_ovn
1538 ,p_effective_date => g_report_date
1539 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1540 ,p_action_information1 => 'REP_CODE_DTLS'
1541 ,p_action_information2 => TO_CHAR(l_rec1.legal_employer_id)
1542 ,p_action_information3 => l_rec3.reporting_code
1543 ,p_action_information4 => l_rec3.fixed_code
1544 ,p_action_information5 => l_rec3.mult_rec
1545 ,p_action_information6 => l_rec3.reportable_earnings
1546 ,p_action_information7 => l_rec3.asg_info_meth
1547 ,p_action_information8 => l_asg_info_dfn
1548 ,p_action_information9 => l_rec3.rep_summ_meth
1549 ,p_action_information10 => l_rec3.rep_summ_dfn
1550 ,p_action_information11 => l_rec3.description
1551 ,p_action_information12 => l_rec3.XML_CODE); -- 2007/2008 Changes
1552 --
1553 --
1554 -- Loop through all information columns for the reporting code.
1555 --
1556 FOR l_rec4 IN csr_REPCODE_INFO(g_report_date, l_rec3.reporting_code, l_rec1.legal_employer_id) LOOP
1557 --
1558 --
1559 -- Extract IDs where appropriate i.e. element type ID or defined balance ID.
1560 --
1561 IF l_rec3.asg_info_meth = 'BAL' AND l_rec4.asg_info_dfn IS NOT NULL THEN
1562 l_asg_info_dfn := TO_CHAR(get_defined_balance(g_business_group_id, l_rec4.asg_info_dfn, '_ASG_TU_MC_LU_YTD'));
1563 ELSIF l_rec3.asg_info_meth = 'BAL_CODE_CTX' AND l_rec4.asg_info_dfn IS NOT NULL THEN
1564 l_asg_info_dfn := TO_CHAR(get_defined_balance(g_business_group_id, l_rec4.asg_info_dfn, '_ASG_ELE_CODE_TU_MC_LU_YTD'));
1565 ELSE
1566 l_asg_info_dfn := NULL;
1567 END IF;
1568 --
1569 --
1570 -- Archive: EMEA REPORT INFORMATION | REP_CODE_INFO_DTLS
1571 --
1572 pay_action_information_api.create_action_information
1573 (p_action_context_type => 'PA'
1574 ,p_action_context_id => p_payroll_action_id
1575 ,p_action_information_id => l_act_inf_id
1576 ,p_object_version_number => l_ovn
1577 ,p_effective_date => g_report_date
1578 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1579 ,p_action_information1 => 'REP_CODE_INFO_DTLS'
1580 ,p_action_information2 => TO_CHAR(l_rec1.legal_employer_id)
1581 ,p_action_information3 => l_rec3.reporting_code
1582 ,p_action_information4 => l_rec4.info_id
1583 ,p_action_information5 => l_rec4.prompt
1584 ,p_action_information6 => l_rec4.datatype
1585 ,p_action_information7 => l_asg_info_dfn
1586 ,p_action_information8 => l_rec4.XML_VALUE_MAP); --2007/2008 changes
1587 END LOOP;
1588 END LOOP;
1589 END LOOP;
1590 --
1591 -- Set SQL to identify potential candidate people to process.
1592 --
1593 p_sql :=
1594 'SELECT DISTINCT per.person_id
1595 FROM per_people_f per
1596 ,pay_payroll_actions ppa
1597 WHERE ppa.payroll_action_id = :payroll_action_id
1598 AND per.business_group_id = ppa.business_group_id
1599 ORDER BY per.person_id';
1600 --
1601 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
1602 END range_code;
1603 --
1604 --
1605 -- -----------------------------------------------------------------------------
1606 -- Part of archive logic.
1607 -- -----------------------------------------------------------------------------
1608 --
1609 PROCEDURE assignment_action_code
1610 (p_payroll_action_id IN NUMBER
1611 ,p_start_person IN NUMBER
1612 ,p_end_person IN NUMBER
1613 ,p_chunk IN NUMBER) IS
1614 --
1615 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.assignment_action_code';
1616 --
1617 CURSOR csr_ASG
1618 (p_payroll_action_id IN NUMBER
1619 ,p_start_person IN NUMBER
1620 ,p_end_person IN NUMBER
1621 ,p_report_date IN DATE) IS
1622 SELECT asg.person_id
1623 ,paa.assignment_id
1624 ,paa.tax_unit_id legal_employer_id
1625 ,TO_NUMBER(ac1.context_value) local_unit_id
1626 ,ac2.context_value tax_municipality
1627 ,ac3.context_value municipality_code
1628 ,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'ZONE') ni_zone
1629 ,MAX(ppa.effective_date) effective_date
1630 ,MAX(asg.effective_end_date) effective_end_date
1631 ,MAX(asg.effective_start_date) effective_start_date --Changes 2007/2008
1632 FROM per_all_assignments_f asg
1633 ,pay_assignment_actions paa
1634 ,pay_payroll_actions ppa
1635 ,pay_action_information ai
1636 ,pay_action_contexts ac1
1637 ,ff_contexts ctx1
1638 ,pay_action_contexts ac2
1639 ,ff_contexts ctx2
1640 ,pay_action_contexts ac3
1641 ,ff_contexts ctx3
1642 ,pay_user_tables t
1643 ,pay_user_rows_f r
1644 WHERE asg.person_id BETWEEN p_start_person AND p_end_person
1645 AND paa.assignment_id = asg.assignment_id
1646 AND ppa.payroll_action_id = paa.payroll_action_id
1647 AND ac1.assignment_action_id = paa.assignment_action_id
1648 AND ctx1.context_id = ac1.context_id
1649 AND ctx1.context_name = 'LOCAL_UNIT_ID'
1650 AND ac3.assignment_action_id = paa.assignment_action_id
1651 AND ctx3.context_id = ac3.context_id
1652 AND ctx3.context_name = 'SOURCE_TEXT2'
1653 AND ac2.assignment_action_id = paa.assignment_action_id
1654 AND ctx2.context_id = ac2.context_id
1655 AND ctx2.context_name = 'JURISDICTION_CODE'
1656 AND t.user_table_name = 'NO_TAX_MUNICIPALITY'
1657 AND t.legislation_code = 'NO'
1658 AND r.user_table_id = t.user_table_id
1659 AND r.row_low_range_or_name = ac2.context_value
1660 AND paa.tax_unit_id = TO_NUMBER(ai.action_information2)
1661 AND ai.action_context_type = 'PA'
1662 AND ai.action_context_id = p_payroll_action_id
1663 AND ai.action_information_category = 'EMEA REPORT INFORMATION'
1664 AND ai.action_information1 = 'LEG_EMP_INFO'
1665 AND ppa.effective_date BETWEEN TRUNC(p_report_date,'Y') AND p_report_date
1666 AND p_report_date BETWEEN r.effective_start_date AND r.effective_end_date
1667 GROUP BY asg.person_id
1668 ,paa.assignment_id
1669 ,paa.tax_unit_id
1670 ,TO_NUMBER(ac1.context_value)
1671 ,ac2.context_value
1672 ,ac3.context_value
1673 ,hr_de_general.get_uci(p_report_date,t.user_table_id,r.user_row_id,'ZONE')
1674 ORDER BY asg.person_id
1675 ,MAX(ppa.effective_date) DESC;
1676 --
1677 CURSOR csr_PER
1678 (p_person_id IN NUMBER
1679 ,p_effective_date IN DATE) IS
1680 SELECT per.full_name
1681 ,per.national_identifier
1682 ,per.employee_number
1683 FROM per_all_people_f per
1684 WHERE per.person_id = p_person_id
1685 AND p_effective_date BETWEEN per.effective_start_date
1686 AND per.effective_end_date;
1687 --
1688 l_assact_id NUMBER;
1689 l_person_id NUMBER := -1;
1690 l_act_inf_id NUMBER;
1691 l_ovn NUMBER;
1692 l_bal_value NUMBER;
1693 l_seaman_status VARCHAR2(1) := 'N';
1694 l_per_addr1 per_addresses.address_line1%TYPE;
1695 l_per_addr2 per_addresses.address_line2%TYPE;
1696 l_per_addr3 per_addresses.address_line3%TYPE;
1697 l_per_postcode per_addresses.postal_code%TYPE;
1698 l_per_postoffice VARCHAR2(100);
1699 l_non_cont_dates_days VARCHAR2(20);
1700 l_employed_throughout_year VARCHAR2(9);
1701 l_person_rec csr_PER%ROWTYPE;
1702 l_seaman_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Seaman', '_PER_TU_YTD');
1703 l_employment_start_date DATE;
1704 l_employment_end_date DATE;
1705 --
1706 BEGIN
1707 hr_utility.set_location('Entering ' || l_proc_name, 10);
1708 --
1709 --
1710 -- Setup legislative parameters as global values for future use.
1711 --
1712 set_parameters(p_payroll_action_id);
1713 --
1714 --
1715 -- Loop through all assignment, legal employer, local unit, tax municipality (ni zone) combinations for
1716 -- the legal employer.
1717 --
1718 FOR l_asg_rec IN csr_ASG(p_payroll_action_id, p_start_person, p_end_person, g_report_date) LOOP
1719 IF l_asg_rec.person_id <> l_person_id THEN
1720 --
1721 OPEN csr_PER(l_asg_rec.person_id, l_asg_rec.effective_date);
1722 FETCH csr_PER INTO l_person_rec;
1723 CLOSE csr_PER;
1724 --
1725 pay_balance_pkg.set_context('TAX_UNIT_ID', l_asg_rec.legal_employer_id);
1726 pay_balance_pkg.set_context('DATE_EARNED', fnd_date.date_to_canonical(g_report_date));
1727 --
1728 -- Seaman_PER_TU_YTD
1729 --
1730 l_bal_value := pay_balance_pkg.get_value
1731 (p_defined_balance_id => l_seaman_defbal_id
1732 ,p_assignment_id => l_asg_rec.assignment_id
1733 ,p_virtual_date => least(g_report_date,l_asg_rec.effective_end_date));
1734 --
1735 --
1736 l_seaman_status := 'N';
1737 --
1738 IF l_bal_value > 0 THEN
1739 l_seaman_status := 'Y';
1740 END IF;
1741 --
1742 -- Get the Person address
1743 --
1744 get_per_addr
1745 (p_person_id => l_asg_rec.person_id
1746 ,p_report_date => least(g_report_date, l_asg_rec.effective_end_date)
1747 ,p_address_line1 => l_per_addr1
1748 ,p_address_line2 => l_per_addr2
1749 ,p_address_line3 => l_per_addr3
1750 ,p_postcode => l_per_postcode
1751 ,p_postoffice => l_per_postoffice);
1752 --
1753 --
1754 --
1755 l_employed_throughout_year := employed_throughout_year(l_asg_rec.person_id
1756 , l_asg_rec.legal_employer_id, g_report_date);
1757 fnd_file.put_line(fnd_file.log,'l_employed_throughout_year:'||l_employed_throughout_year);
1758 l_non_cont_dates_days := NULL;
1759 --
1760 IF l_employed_throughout_year = 'N' THEN
1761 --
1762 l_non_cont_dates_days := employed_period (l_asg_rec.person_id
1763 ,l_asg_rec.legal_employer_id
1764 ,g_report_date);
1765 --
1766 END IF;
1767 --
1768 --Start Changes 2007/2008
1769 IF (to_char (l_asg_rec.effective_end_date, 'DD-MM-YYYY') ='31-12-4712') THEN
1770 --
1771 l_employment_end_date := NULL;
1772 ELSE
1773 --
1774 l_employment_end_date := l_asg_rec.effective_end_date;
1775
1776 END IF;
1777 --
1778 l_employment_start_date := l_asg_rec.effective_start_date;
1779 --End Changes 2007/2008
1780
1781 -- Archive: EMEA REPORT INFORMATION | PER_INFO
1782 --
1783 pay_action_information_api.create_action_information
1784 (p_action_context_type => 'PA'
1785 ,p_action_context_id => p_payroll_action_id
1786 ,p_action_information_id => l_act_inf_id
1787 ,p_object_version_number => l_ovn
1788 ,p_effective_date => g_report_date
1789 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1790 ,p_action_information1 => 'PER_INFO'
1791 ,p_action_information2 => TO_CHAR(l_asg_rec.person_id)
1792 ,p_action_information3 => l_person_rec.full_name
1793 ,p_action_information4 => l_person_rec.employee_number
1794 ,p_action_information5 => l_person_rec.national_identifier
1795 ,p_action_information6 => hr_general.decode_lookup('YES_NO',l_employed_throughout_year)
1796 ,p_action_information7 => hr_general.decode_lookup('YES_NO',l_seaman_status)
1797 ,p_action_information8 => l_non_cont_dates_days
1798 ,p_action_information9 => l_per_addr1
1799 ,p_action_information10 => l_per_addr2
1800 ,p_action_information11 => l_per_addr3
1801 ,p_action_information12 => l_per_postcode
1802 ,p_action_information13 => l_per_postoffice
1803 ,p_action_information14 => l_employment_start_date --Changes 2007/2008
1804 ,p_action_information15 => l_employment_end_date --Changes 2007/2008
1805 );
1806 END IF;
1807 l_person_id := l_asg_rec.person_id;
1808 --
1809 --
1810 -- Create assignment action for archive process.
1811 --
1812 SELECT pay_assignment_actions_s.nextval INTO l_assact_id FROM dual;
1813 hr_nonrun_asact.insact
1814 (l_assact_id
1815 ,l_asg_rec.assignment_id
1816 ,p_payroll_action_id
1817 ,p_chunk
1818 ,NULL);
1819 --
1820 --
1821 -- Archive: EMEA REPORT INFORMATION | ASG_ACT_INFO
1822 --
1823 pay_action_information_api.create_action_information
1824 (p_action_context_type => 'AAP'
1825 ,p_action_context_id => l_assact_id
1826 ,p_action_information_id => l_act_inf_id
1827 ,p_object_version_number => l_ovn
1828 ,p_effective_date => g_report_date
1829 ,p_action_information_category => 'EMEA REPORT INFORMATION'
1830 ,p_action_information1 => 'ASG_ACT_INFO'
1831 ,p_action_information2 => TO_CHAR(l_asg_rec.legal_employer_id)
1832 ,p_action_information3 => TO_CHAR(l_asg_rec.local_unit_id)
1833 ,p_action_information4 => l_asg_rec.ni_zone
1834 ,p_action_information5 => TO_CHAR(l_asg_rec.person_id)
1835 ,p_action_information6 => l_asg_rec.tax_municipality
1836 ,p_action_information7 => 'N'
1837 ,p_action_information8 => l_asg_rec.municipality_code
1838 );
1839 END LOOP;
1840 --
1841 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
1842 END assignment_action_code;
1843 --
1844 --
1845 -- -----------------------------------------------------------------------------
1846 -- Part of archive logic.
1847 -- -----------------------------------------------------------------------------
1848 --
1849 PROCEDURE initialization_code
1850 (p_payroll_action_id IN NUMBER) IS
1851 BEGIN
1852 NULL;
1853 END initialization_code;
1854 --
1855 --
1856 -- -----------------------------------------------------------------------------
1857 -- Part of archive logic.
1858 -- -----------------------------------------------------------------------------
1859 --
1860 PROCEDURE archive_code
1861 (p_assignment_action_id IN NUMBER
1862 ,p_effective_date IN DATE) IS
1863 --
1864 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.archive_code';
1865 --
1866 CURSOR csr_ASGACT
1867 (p_assignment_action_id IN NUMBER) IS
1868 SELECT paa.assignment_id
1869 ,asg_act.action_information2 legal_employer_id
1870 ,asg_act.action_information3 local_unit_id
1871 ,asg_act.action_information4 ni_zone
1872 ,asg_act.action_information6 tax_municipality_id
1873 ,asg_act.action_information8 municipality_code
1874 FROM pay_action_information asg_act
1875 ,pay_assignment_actions paa
1876 WHERE asg_act.action_information_category = 'EMEA REPORT INFORMATION'
1877 AND asg_act.action_information1 = 'ASG_ACT_INFO'
1878 AND asg_act.action_context_type = 'AAP'
1879 AND asg_act.action_context_id = paa.assignment_action_id
1880 AND paa.assignment_action_id = p_assignment_action_id;
1881 --
1882 CURSOR csr_BAL
1883 (p_payroll_action_id IN NUMBER
1884 ,p_legal_employer_id IN VARCHAR2) IS
1885 SELECT cde_dtl.action_information3 reporting_code
1886 ,TO_NUMBER(cde_dtl.action_information8) defined_balance_id
1887 FROM pay_action_information cde_dtl
1888 WHERE cde_dtl.action_context_type = 'PA'
1889 AND cde_dtl.action_context_id = p_payroll_action_id
1890 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
1891 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
1892 AND cde_dtl.action_information2 = p_legal_employer_id
1893 AND cde_dtl.action_information7 IN ('BAL','BAL_CODE_CTX');
1894 --
1895 CURSOR csr_BAL_ADDITIONAL_INFO
1896 (p_payroll_action_id IN NUMBER
1897 ,p_legal_employer_id IN VARCHAR2
1898 ,p_reporting_code IN VARCHAR2) IS
1899 SELECT inf_dtl.action_information4 info_id
1900 ,TO_NUMBER(inf_dtl.action_information7) defined_balance_id
1901 FROM pay_action_information inf_dtl
1902 WHERE inf_dtl.action_context_type = 'PA'
1903 AND inf_dtl.action_context_id = p_payroll_action_id
1904 AND inf_dtl.action_information_category = 'EMEA REPORT INFORMATION'
1905 AND inf_dtl.action_information1 = 'REP_CODE_INFO_DTLS'
1906 AND inf_dtl.action_information2 = p_legal_employer_id
1907 AND inf_dtl.action_information3 = p_reporting_code
1908 AND inf_dtl.action_information7 IS NOT NULL;
1909 --
1910 CURSOR csr_RRV
1911 (p_payroll_action_id IN NUMBER
1912 ,p_business_group_id IN NUMBER
1913 ,p_assignment_id IN NUMBER
1914 ,p_legal_employer_id IN VARCHAR2
1915 ,p_local_unit_id IN VARCHAR2
1916 ,p_tax_municipality IN VARCHAR2
1917 ,p_report_date IN DATE) IS
1918 SELECT rr.run_result_id
1919 ,rr.element_type_id element_type
1920 ,cde_dtl.action_information3 reporting_code
1921 ,cde_info_dtl.action_information4 info_id
1922 ,rrv.result_value
1923 ,cde_info_dtl.action_information6 dtype
1924 -- ,pivf.uom dtype
1925 FROM pay_action_information cde_dtl
1926 ,pay_action_information cde_info_dtl
1927 ,pay_element_type_extra_info eei
1928 ,pay_assignment_actions paa
1929 ,pay_action_contexts ac1
1930 ,ff_contexts ctx1
1931 ,pay_action_contexts ac2
1932 ,ff_contexts ctx2
1933 ,pay_payroll_actions ppa
1934 ,pay_run_results rr
1935 ,pay_run_result_values rrv
1936 ,pay_input_values_f pivf
1937 ,pay_user_tables t
1938 ,pay_user_rows_f r
1939 WHERE cde_dtl.action_context_type = 'PA'
1940 AND cde_dtl.action_context_id = p_payroll_action_id
1941 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
1942 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
1943 AND cde_dtl.action_information2 = p_legal_employer_id
1944 AND cde_dtl.action_information7 IN ('RRV', 'RRV_ELEMENT')
1945 AND cde_info_dtl.action_context_type = cde_dtl.action_context_type
1946 AND cde_info_dtl.action_context_id = cde_dtl.action_context_id
1947 AND cde_info_dtl.action_information_category = cde_dtl.action_information_category
1948 AND cde_info_dtl.action_information1 = 'REP_CODE_INFO_DTLS'
1949 AND cde_info_dtl.action_information2 = cde_dtl.action_information2
1950 AND cde_info_dtl.action_information3 = cde_dtl.action_information3
1951 AND eei.eei_information3 = cde_info_dtl.action_information3 --Reporting_Code
1952 AND eei.information_type = 'NO_EOY_REPORTING_CODE_MAPPING'
1953 AND to_number(to_char(p_report_date,'YYYY')) BETWEEN to_number(eei.eei_information1)
1954 AND to_number(nvl(eei.eei_information2,'4712'))
1955 AND ppa.business_group_id = p_business_group_id
1956 AND ppa.action_type IN ('R','Q','I','B')
1957 AND ppa.action_status = 'C'
1958 AND ppa.payroll_action_id = paa.payroll_action_id
1959 AND paa.action_status = 'C'
1960 AND ac1.assignment_action_id = paa.assignment_action_id
1961 AND ctx1.context_id = ac1.context_id
1962 AND ctx1.context_name = 'LOCAL_UNIT_ID'
1963 AND ac1.context_value = p_local_unit_id
1964 AND ac2.assignment_action_id = paa.assignment_action_id
1965 AND ctx2.context_id = ac2.context_id
1966 AND ctx2.context_name = 'JURISDICTION_CODE'
1967 AND t.user_table_name = 'NO_TAX_MUNICIPALITY'
1968 AND t.legislation_code = 'NO'
1969 AND r.user_table_id = t.user_table_id
1970 AND r.row_low_range_or_name = ac2.context_value
1971 AND ac2.context_value = p_tax_municipality
1972 AND paa.tax_unit_id = TO_NUMBER(p_legal_employer_id)
1973 AND paa.assignment_id = p_assignment_id
1974 AND ppa.effective_date BETWEEN TRUNC(p_report_date, 'Y') AND p_report_date
1975 AND rr.assignment_action_id = paa.assignment_action_id
1976 AND eei.element_type_id = DECODE(cde_dtl.action_information7
1977 ,'RRV', eei.element_type_id
1978 ,TO_NUMBER(cde_dtl.action_information8))
1979 AND rr.element_type_id = eei.element_type_id
1980 AND rrv.run_result_id = rr.run_result_id
1981 AND rrv.input_value_id = TO_NUMBER(DECODE(cde_info_dtl.action_information4
1982 ,'INFO1' , eei.eei_information6
1983 ,'INFO2' , eei.eei_information8
1984 ,'INFO3' , eei.eei_information10
1985 ,'INFO4' , eei.eei_information12
1986 ,'INFO5' , eei.eei_information14
1987 ,'INFO6' , eei.eei_information16
1988 ,'AMOUNT', eei.eei_information4))
1989 AND pivf.input_value_id = rrv.input_value_id
1990 AND p_report_date BETWEEN pivf.effective_start_date
1991 AND pivf.effective_end_date
1992 AND p_report_date BETWEEN r.effective_start_date
1993 AND r.effective_end_date
1994 ORDER BY cde_dtl.action_information3, rr.run_result_id;
1995 --
1996 CURSOR csr_PROC
1997 (p_payroll_action_id IN NUMBER
1998 ,p_legal_employer_id IN VARCHAR2) IS
1999 SELECT cde_dtl.action_information3 reporting_code
2000 ,cde_dtl.action_information8 procedure_name
2001 FROM pay_action_information cde_dtl
2002 WHERE cde_dtl.action_context_type = 'PA'
2003 AND cde_dtl.action_context_id = p_payroll_action_id
2004 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
2005 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
2006 AND cde_dtl.action_information2 = p_legal_employer_id
2007 AND cde_dtl.action_information7 = 'PROCEDURE';
2008 --
2009 CURSOR csr_Seaman IS
2010 SELECT classification_id
2011 FROM pay_element_classifications
2012 WHERE classification_name = 'Seaman _ Earnings';
2013 --
2014 CURSOR csr_Seaman_Status
2015 (l_element_type IN NUMBER
2016 ,l_classification_id IN NUMBER
2017 ,l_report_date IN DATE) IS
2018 SELECT 'Y'
2019 FROM pay_sub_classification_rules_f
2020 WHERE element_type_id = l_element_type
2021 AND classification_id = l_classification_id
2022 AND l_report_date BETWEEN effective_start_date AND effective_end_date;
2023 --
2024 CURSOR csr_seaman_bal_status
2025 (l_classification_id IN NUMBER
2026 ,l_defined_balance_id IN NUMBER) IS
2027 SELECT 'Y'
2028 FROM pay_defined_balances pdb
2029 ,pay_balance_classifications pbc
2030 WHERE pbc.classification_id = l_classification_id
2031 AND pdb.balance_type_id = pbc.balance_type_id
2032 AND pdb.defined_balance_id = l_defined_balance_id;
2033 --
2034 CURSOR csr_549_118A
2035 (p_business_group_id IN NUMBER
2036 ,p_assignment_id IN NUMBER
2037 ,p_legal_employer_id IN VARCHAR2
2038 ,p_local_unit_id IN VARCHAR2
2039 ,p_tax_municipality IN VARCHAR2
2040 ,p_report_date IN DATE
2041 ,l_element_name IN VARCHAR2 ) IS
2042 SELECT rrv.result_value value
2043 ,pivf.uom dtype
2044 FROM pay_assignment_actions paa
2045 ,pay_action_contexts ac1
2046 ,ff_contexts ctx1
2047 ,pay_action_contexts ac2
2048 ,ff_contexts ctx2
2049 ,pay_payroll_actions ppa
2050 ,pay_run_results rr
2051 ,pay_run_result_values rrv
2052 ,pay_input_values_f pivf
2053 ,pay_element_types_f petf
2054 ,pay_user_tables t
2055 ,pay_user_rows_f r
2056 WHERE ppa.business_group_id = p_business_group_id
2057 AND ppa.action_type IN ('R','Q','I','B')
2058 AND ppa.action_status = 'C'
2059 AND paa.payroll_action_id = ppa.payroll_action_id
2060 AND paa.action_status = 'C'
2061 AND ac1.assignment_action_id = paa.assignment_action_id
2062 AND ctx1.context_id = ac1.context_id
2063 AND ctx1.context_name = 'LOCAL_UNIT_ID'
2064 AND ac1.context_value = p_local_unit_id
2065 AND ac2.assignment_action_id = paa.assignment_action_id
2066 AND ctx2.context_id = ac2.context_id
2067 AND ctx2.context_name = 'JURISDICTION_CODE'
2068 AND t.user_table_name = 'NO_TAX_MUNICIPALITY'
2069 AND t.legislation_code = 'NO'
2070 AND r.user_table_id = t.user_table_id
2071 AND r.row_low_range_or_name = ac2.context_value
2072 AND ac2.context_value = p_tax_municipality
2073 AND paa.tax_unit_id = TO_NUMBER(p_legal_employer_id)
2074 AND paa.assignment_id = p_assignment_id
2075 AND rr.assignment_action_id = paa.assignment_action_id
2076 AND rr.element_type_id = petf.element_type_id
2077 AND petf.element_name = l_element_name
2078 AND petf.legislation_code = 'NO'
2079 AND rrv.run_result_id = rr.run_result_id
2080 AND pivf.name = 'Pay Value'
2081 AND pivf.legislation_code = 'NO'
2082 AND pivf.input_value_id = rrv.input_value_id
2083 AND pivf.element_type_id = petf.element_type_id
2084 AND ppa.effective_date BETWEEN TRUNC(p_report_date, 'Y') AND p_report_date
2085 AND p_report_date BETWEEN petf.effective_start_date
2086 AND petf.effective_end_date
2087 AND p_report_date BETWEEN pivf.effective_start_date
2088 AND pivf.effective_end_date
2089 AND p_report_date BETWEEN r.effective_start_date
2090 AND r.effective_end_date;
2091 --
2092 CURSOR csr_613_616
2093 (p_business_group_id IN NUMBER
2094 ,p_assignment_id IN NUMBER
2095 ,p_legal_employer_id IN VARCHAR2
2096 ,p_local_unit_id IN VARCHAR2
2097 ,p_tax_municipality IN VARCHAR2
2098 ,p_report_date IN DATE
2099 ,l_element_name IN VARCHAR2 ) IS
2100 SELECT rrv.result_value value
2101 ,petf.element_type_id element_type_id
2102 ,rr.run_result_id rr_id
2103 ,petf.element_name element_name
2104 ,ppa.action_type action_type
2105 FROM pay_assignment_actions paa
2106 ,pay_action_contexts ac1
2107 ,ff_contexts ctx1
2108 ,pay_action_contexts ac2
2109 ,ff_contexts ctx2
2110 ,pay_payroll_actions ppa
2111 ,pay_run_results rr
2112 ,pay_run_result_values rrv
2113 ,pay_input_values_f pivf
2114 ,pay_element_types_f petf
2115 ,pay_user_tables t
2116 ,pay_user_rows_f r
2117 WHERE ppa.business_group_id = p_business_group_id
2118 AND ppa.action_type IN ('R','Q','I','B')
2119 AND ppa.action_status = 'C'
2120 AND paa.payroll_action_id = ppa.payroll_action_id
2121 AND paa.action_status = 'C'
2122 AND ac1.assignment_action_id = paa.assignment_action_id
2123 AND ctx1.context_id = ac1.context_id
2124 AND ctx1.context_name = 'LOCAL_UNIT_ID'
2125 AND ac1.context_value = p_local_unit_id
2126 AND ac2.assignment_action_id = paa.assignment_action_id
2127 AND ctx2.context_id = ac2.context_id
2128 AND ctx2.context_name = 'JURISDICTION_CODE'
2129 AND t.user_table_name = 'NO_TAX_MUNICIPALITY'
2130 AND t.legislation_code = 'NO'
2131 AND r.user_table_id = t.user_table_id
2132 AND r.row_low_range_or_name = ac2.context_value
2133 AND ac2.context_value = p_tax_municipality
2134 AND paa.tax_unit_id = TO_NUMBER(p_legal_employer_id)
2135 AND paa.assignment_id = p_assignment_id
2136 AND rr.assignment_action_id = paa.assignment_action_id
2137 AND rr.element_type_id = petf.element_type_id
2138 AND petf.element_name IN ( l_element_name, 'Adjustment ' || l_element_name )
2139 AND petf.legislation_code = 'NO'
2140 AND rrv.run_result_id = rr.run_result_id
2141 AND pivf.name = 'Travel Reference Number'
2142 AND pivf.legislation_code = 'NO'
2143 AND pivf.input_value_id = rrv.input_value_id
2144 AND pivf.element_type_id = petf.element_type_id
2145 AND ppa.effective_date BETWEEN TRUNC(p_report_date, 'Y') AND p_report_date
2146 AND p_report_date BETWEEN petf.effective_start_date
2147 AND petf.effective_end_date
2148 AND p_report_date BETWEEN pivf.effective_start_date
2149 AND pivf.effective_end_date
2150 AND p_report_date BETWEEN r.effective_start_date
2151 AND r.effective_end_date
2152 order by rrv.result_value;
2153 --
2154 CURSOR csr_613_616_details
2155 (l_rr_id IN NUMBER
2156 ,l_element_type_id IN NUMBER
2157 ,p_report_date IN DATE) IS
2158 SELECT sum(decode (piv.name,'Pay Value', fnd_number.canonical_to_number(rrv.result_value) ,0)) Pay_Value
2159 ,sum(decode (piv.name,'Per Diem', fnd_number.canonical_to_number(rrv.result_value) ,0)) Per_Diem
2160 ,sum(decode (piv.name,'Number of Days to be reported', fnd_number.canonical_to_number(rrv.result_value) ,0)) Reporting_Days
2161 ,sum(decode (piv.name,'Number of Days', fnd_number.canonical_to_number(rrv.result_value) ,0)) Days
2162 ,max(decode (piv.name,'Country', rrv.result_value)) Country
2163 FROM pay_run_result_values rrv
2164 ,pay_input_values_f piv
2165 WHERE rrv.run_result_id = l_rr_id
2166 AND piv.element_type_id = l_element_type_id
2167 AND piv.name IN ('Pay Value','Number of Days','Per Diem','Number of Days to be reported','Country')
2168 AND piv.input_value_id = rrv.input_value_id
2169 AND p_report_date BETWEEN piv.effective_start_date
2170 AND piv.effective_end_date;
2171 --
2172 l_asg_act_rec csr_ASGACT%ROWTYPE;
2173 l_plsql_block VARCHAR2(2000) := 'BEGIN <PROC>(:1, :2, :3); END;';
2174 l_rep_code_rec t_rep_code_rec;
2175 l_act_inf_id NUMBER;
2176 l_ovn NUMBER;
2177 l_amount NUMBER;
2178 l_rr_id NUMBER := -1;
2179 l_classification_id pay_element_classifications.classification_id%TYPE;
2180 l_element_type_id pay_element_Types_f.element_type_id%TYPE;
2181 l_element_name pay_element_types_f.element_name%TYPE;
2182 rec_613_616_details csr_613_616_details%ROWTYPE;
2183 l_seaman_status VARCHAR2(2);
2184 l_Travel_Ref VARCHAR2(60);
2185 l_Pay_Value NUMBER;
2186 l_Days NUMBER;
2187 status_616 NUMBER;
2188 l_index_616 NUMBER;
2189 l_code_616 code_616;
2190 --
2191 BEGIN
2192 hr_utility.set_location('Entering ' || l_proc_name, 10);
2193 --
2194 OPEN csr_Seaman;
2195 FETCH csr_Seaman INTO l_classification_id;
2196 CLOSE csr_Seaman;
2197 --
2198 --
2199 -- Get information for the assignment action being processed.
2200 --
2201 OPEN csr_ASGACT(p_assignment_action_id);
2202 FETCH csr_ASGACT INTO l_asg_act_rec;
2203 CLOSE csr_ASGACT;
2204 --
2205 --
2206 -- Setup balance contexts.
2207 --
2208 pay_balance_pkg.set_context('TAX_UNIT_ID' , l_asg_act_rec.legal_employer_id);
2209 pay_balance_pkg.set_context('DATE_EARNED' , fnd_date.date_to_canonical(g_report_date));
2210 pay_balance_pkg.set_context('LOCAL_UNIT_ID' , l_asg_act_rec.local_unit_id);
2211 -- pay_balance_pkg.set_context('JURISDICTION_CODE', l_asg_act_rec.tax_municipality_id);
2212 pay_balance_pkg.set_context('SOURCE_TEXT2' , l_asg_act_rec.municipality_code);
2213 --
2214 --
2215 -- Loop through all balance based reporting codes.
2216 --
2217 FOR l_bal_rec IN csr_BAL
2218 (g_payroll_action_id
2219 ,l_asg_act_rec.legal_employer_id)
2220 LOOP
2221 l_rep_code_rec := g_empty_rep_code_rec;
2222 --
2223 --
2224 -- Setup balance contexts NB. This is used for reporting codes using BAL_CODE_CTX.
2225 --
2226 pay_balance_pkg.set_context('SOURCE_TEXT', l_bal_rec.reporting_code);
2227 --
2228 --
2229 -- Get balance value.
2230 --
2231 IF l_bal_rec.defined_balance_id IS NOT NULL THEN
2232 l_amount := pay_balance_pkg.get_value
2233 (p_defined_balance_id => l_bal_rec.defined_balance_id
2234 ,p_assignment_id => l_asg_act_rec.assignment_id
2235 ,p_virtual_date => g_report_date);
2236 ELSE
2237 l_amount := 0;
2238 END IF;
2239 --
2240 IF l_amount <> 0 THEN
2241 l_rep_code_rec.reporting_code := l_bal_rec.reporting_code;
2242 l_rep_code_rec.amount := fnd_number.number_to_canonical(l_amount);
2243 --
2244 l_seaman_status := 'N';
2245 --
2246 OPEN csr_seaman_bal_status(l_classification_id, l_bal_rec.defined_balance_id);
2247 FETCH csr_seaman_bal_status INTO l_seaman_status;
2248 CLOSE csr_seaman_bal_status;
2249 --
2250 -- Check if the code 549 is processed through the payroll, then it should be
2251 -- archived individually. i.e. should appear once for each concerned element is processed.
2252 --
2253 IF l_bal_rec.reporting_code = '549' THEN --IN ('118-A', '549') THEN
2254 --
2255 -- IF l_bal_rec.reporting_code = '118-A' THEN
2256 -- l_element_name := 'BIK Company Cars';
2257 -- ELSIF l_bal_rec.reporting_code = '549' THEN
2258 l_element_name := 'BIK Employer Assets';
2259 -- END IF;
2260 --
2261 FOR rec_549_118A IN csr_549_118A (g_business_group_id
2262 ,l_asg_act_rec.assignment_id
2263 ,l_asg_act_rec.legal_employer_id
2264 ,l_asg_act_rec.local_unit_id
2265 ,l_asg_act_rec.tax_municipality_id
2266 ,g_report_date
2267 ,l_element_name )
2268 LOOP
2269 --
2270 IF rec_549_118A.dtype = 'M' THEN
2271 l_rep_code_rec.amount := fnd_number.number_to_canonical(rec_549_118A.value);
2272 ELSE
2273 l_rep_code_rec.amount := rec_549_118A.value;
2274 END IF;
2275 --
2276 --
2277 -- Archive: EMEA REPORT INFORMATION | ASG_REP_CODE_INFO
2278 --
2279 pay_action_information_api.create_action_information
2280 (p_action_context_type => 'AAP'
2281 ,p_action_context_id => p_assignment_action_id
2282 ,p_action_information_id => l_act_inf_id
2283 ,p_object_version_number => l_ovn
2284 ,p_effective_date => g_report_date
2285 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2286 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2287 ,p_action_information2 => l_rep_code_rec.reporting_code
2288 ,p_action_information3 => l_rep_code_rec.amount
2289 ,p_action_information10 => l_seaman_status);
2290 --
2291 END LOOP;
2292 --
2293 ELSIF l_bal_rec.reporting_code = '613' THEN
2294 --
2295 l_Travel_Ref := NULL;
2296 l_Pay_Value := 0;
2297 l_Days := 0;
2298 --
2299 -- Get the RR ID, Element Type Id, Travel Ref Num
2300 --
2301 FOR rec_613_616 IN csr_613_616 (g_business_group_id
2302 ,l_asg_act_rec.assignment_id
2303 ,l_asg_act_rec.legal_employer_id
2304 ,l_asg_act_rec.local_unit_id
2305 ,l_asg_act_rec.tax_municipality_id
2306 ,g_report_date
2307 ,'Total Domestic Overnight Travel over 28 days Hotel' )
2308 LOOP
2309 --
2310 IF rec_613_616.rr_id IS NOT NULL AND rec_613_616.element_type_id IS NOT NULL THEN
2311 --
2312 -- From the RR ID and Element Type ID, get additional info as 'Pay Value','Number of Days'
2313 -- for code 613
2314 --
2315 OPEN csr_613_616_details
2316 (rec_613_616.rr_id
2317 ,rec_613_616.element_type_id
2318 ,g_report_date);
2319 FETCH csr_613_616_details INTO rec_613_616_details;
2320 CLOSE csr_613_616_details;
2321 --
2322 IF NVL(l_Travel_Ref,rec_613_616.value) = rec_613_616.value THEN
2323 l_Pay_Value := l_Pay_Value + rec_613_616_details.Pay_Value;
2324 l_Days := l_Days + rec_613_616_details.Days;
2325 --
2326 ELSE
2327 --
2328 -- For the code 613, additional information order is Days
2329 -- Archive: EMEA REPORT INFORMATION | ASG_REP_CODE_INFO | Code 613
2330 --
2331 pay_action_information_api.create_action_information
2332 (p_action_context_type => 'AAP'
2333 ,p_action_context_id => p_assignment_action_id
2334 ,p_action_information_id => l_act_inf_id
2335 ,p_object_version_number => l_ovn
2336 ,p_effective_date => g_report_date
2337 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2338 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2339 ,p_action_information2 => l_bal_rec.reporting_code
2340 ,p_action_information3 => fnd_number.number_to_canonical(l_Pay_Value)
2341 ,p_action_information4 => fnd_number.number_to_canonical(l_Days)
2342 ,p_action_information10 => l_seaman_status);
2343 --
2344 l_Pay_Value := rec_613_616_details.Pay_Value;
2345 l_Days := rec_613_616_details.Days;
2346 --
2347 END IF;
2348 l_Travel_Ref := rec_613_616.value;
2349 --
2350 END IF; -- rr_id, ele_typ_id
2351 --
2352 END LOOP;
2353 --
2354 -- Archive last RR Values for Pav Value, Number of Days based on the RR ID
2355 --
2356 IF l_Travel_Ref IS NOT NULL THEN
2357 --
2358 --
2359 -- Archive: EMEA REPORT INFORMATION | ASG_REP_CODE_INFO | Code 613, 616
2360 --
2361 pay_action_information_api.create_action_information
2362 (p_action_context_type => 'AAP'
2363 ,p_action_context_id => p_assignment_action_id
2364 ,p_action_information_id => l_act_inf_id
2365 ,p_object_version_number => l_ovn
2366 ,p_effective_date => g_report_date
2367 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2368 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2369 ,p_action_information2 => l_bal_rec.reporting_code
2370 ,p_action_information3 => fnd_number.number_to_canonical(l_Pay_Value)
2371 ,p_action_information4 => fnd_number.number_to_canonical(l_Days)
2372 ,p_action_information10 => l_seaman_status);
2373 --
2374 END IF;
2375 --
2376 ELSIF l_bal_rec.reporting_code = '616' THEN -- to modify from here
2377 --
2378 l_Days := 0;
2379 l_index_616 := 0;
2380 l_code_616.DELETE;
2381 --
2382 -- Get the RR ID, Element Type Id, Travel Ref Num
2383 --
2384 FOR rec_613_616 IN csr_613_616 (g_business_group_id
2385 ,l_asg_act_rec.assignment_id
2386 ,l_asg_act_rec.legal_employer_id
2387 ,l_asg_act_rec.local_unit_id
2388 ,l_asg_act_rec.tax_municipality_id
2389 ,g_report_date
2390 ,'Total Abroad Overnight Travel over 28 days Hotel')
2391 LOOP
2392 --
2393 IF rec_613_616.rr_id IS NOT NULL AND rec_613_616.element_type_id IS NOT NULL THEN
2394 --
2395 -- From the RR ID and Element Type ID, get additional info as 'Pay Value','Number of Days'
2396 -- ,'Per Diem','Number of Days to be reported','Country') for code 616
2397 --
2398 OPEN csr_613_616_details
2399 (rec_613_616.rr_id
2400 ,rec_613_616.element_type_id
2401 ,g_report_date);
2402 FETCH csr_613_616_details INTO rec_613_616_details;
2403 CLOSE csr_613_616_details;
2404 --
2405 l_Days := NULL;
2406 --
2407 IF rec_613_616.element_name = 'Total Abroad Overnight Travel over 28 days Hotel' THEN
2408 l_Days := rec_613_616_details.Reporting_Days;
2409 ELSE
2410 l_Days := rec_613_616_details.Days;
2411 END IF;
2412 --
2413 IF rec_613_616.action_type IN ('I','B') OR l_index_616 = 0 THEN
2414 -- if this is balance adjustment / initialization or the very first trnsaction
2415 -- load it in plsql table
2416 l_index_616 := l_index_616 + 1;
2417 l_code_616(l_index_616).TRN := rec_613_616.value;
2418 l_code_616(l_index_616).Country := rec_613_616_details.Country;
2419 l_code_616(l_index_616).Per_Diem := rec_613_616_details.Per_Diem;
2420 l_code_616(l_index_616).Pay_Value := rec_613_616_details.Pay_Value;
2421 l_code_616(l_index_616).Days := l_Days;
2422 --
2423 ELSE -- If code generated is through Payroll run result
2424 -- find its accurate position corresponding to TRN, Per Diem and Country
2425 -- and add the values for Days and Pay Value
2426 status_616 := 0;
2427 --
2428 FOR i IN 1 .. l_index_616
2429 LOOP
2430 --
2431 IF l_code_616(i).TRN = rec_613_616.value
2432 AND l_code_616(i).Country = rec_613_616_details.Country
2433 AND l_code_616(i).Per_Diem = rec_613_616_details.Per_Diem THEN
2434 --
2435 l_code_616(i).Pay_Value := l_code_616(i).Pay_Value + rec_613_616_details.Pay_Value;
2436 l_code_616(i).Days := l_code_616(i).Days + l_Days;
2437 status_616 := 1;
2438 EXIT;
2439 --
2440 ELSIF l_code_616(i).TRN > rec_613_616.value THEN
2441 --
2442 l_index_616 := l_index_616 + 1;
2443 l_code_616(l_index_616).TRN := rec_613_616.value;
2444 l_code_616(l_index_616).Country := rec_613_616_details.Country;
2445 l_code_616(l_index_616).Per_Diem := rec_613_616_details.Per_Diem;
2446 l_code_616(l_index_616).Pay_Value := rec_613_616_details.Pay_Value;
2447 l_code_616(l_index_616).Days := l_Days;
2448 status_616 := 1;
2449 EXIT;
2450 --
2451 END IF;
2452 --
2453 END LOOP;
2454 -- if new trn no from payroll run result then insert new record in plsql table
2455 IF status_616 = 0 THEN
2456 --
2457 l_index_616 := l_index_616 + 1;
2458 l_code_616(l_index_616).TRN := rec_613_616.value;
2459 l_code_616(l_index_616).Country := rec_613_616_details.Country;
2460 l_code_616(l_index_616).Per_Diem := rec_613_616_details.Per_Diem;
2461 l_code_616(l_index_616).Pay_Value := rec_613_616_details.Pay_Value;
2462 l_code_616(l_index_616).Days := l_Days;
2463 --
2464 END IF;
2465 --
2466 END IF; --'I','B'
2467 --
2468 END IF; -- rr_id and ele_type_id
2469 --
2470 END LOOP; -- trn num fetch
2471 --
2472 -- Archive all the records from plsql table against the code 616
2473 IF l_index_616 > 0 THEN
2474 --
2475 FOR i IN 1 .. l_index_616
2476 LOOP
2477 --
2478 pay_action_information_api.create_action_information
2479 (p_action_context_type => 'AAP'
2480 ,p_action_context_id => p_assignment_action_id
2481 ,p_action_information_id => l_act_inf_id
2482 ,p_object_version_number => l_ovn
2483 ,p_effective_date => g_report_date
2484 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2485 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2486 ,p_action_information2 => l_bal_rec.reporting_code
2487 ,p_action_information3 => fnd_number.number_to_canonical(l_code_616(i).Pay_Value)
2488 ,p_action_information4 => fnd_number.number_to_canonical(l_code_616(i).Per_Diem)
2489 ,p_action_information5 => fnd_number.number_to_canonical(l_code_616(i).Days)
2490 ,p_action_information6 => l_code_616(i).Country
2491 ,p_action_information10 => l_seaman_status);
2492 --
2493 END LOOP;
2494 --
2495 END IF;
2496 --
2497 -- For the codes except 613, 616 and 549 only -- and 111-A
2498 ELSE
2499 --
2500 -- Loop through any additional information for the rest of the codes.
2501 --
2502 FOR l_bal_info_rec IN csr_BAL_ADDITIONAL_INFO
2503 (g_payroll_action_id
2504 ,l_asg_act_rec.legal_employer_id
2505 ,l_bal_rec.reporting_code)
2506 LOOP
2507 --
2508 --
2509 -- Get balance value.
2510 --
2511 IF l_bal_info_rec.defined_balance_id IS NOT NULL THEN
2512 l_amount := pay_balance_pkg.get_value
2513 (p_defined_balance_id => l_bal_info_rec.defined_balance_id
2514 ,p_assignment_id => l_asg_act_rec.assignment_id
2515 ,p_virtual_date => g_report_date);
2516 ELSE
2517 l_amount := 0;
2518 END IF;
2519 --
2520 --
2521 IF l_bal_info_rec.info_id = 'INFO1' THEN
2522 l_rep_code_rec.info1 := fnd_number.number_to_canonical(l_amount);
2523 ELSIF l_bal_info_rec.info_id = 'INFO2' THEN
2524 l_rep_code_rec.info2 := fnd_number.number_to_canonical(l_amount);
2525 ELSIF l_bal_info_rec.info_id = 'INFO3' THEN
2526 l_rep_code_rec.info3 := fnd_number.number_to_canonical(l_amount);
2527 ELSIF l_bal_info_rec.info_id = 'INFO4' THEN
2528 l_rep_code_rec.info4 := fnd_number.number_to_canonical(l_amount);
2529 ELSIF l_bal_info_rec.info_id = 'INFO5' THEN
2530 l_rep_code_rec.info5 := fnd_number.number_to_canonical(l_amount);
2531 ELSIF l_bal_info_rec.info_id = 'INFO6' THEN
2532 l_rep_code_rec.info6 := fnd_number.number_to_canonical(l_amount);
2533 END IF;
2534 END LOOP;
2535 --
2536 --
2537 -- Archive: EMEA REPORT INFORMATION | ASG_REP_CODE_INFO
2538 --
2539 pay_action_information_api.create_action_information
2540 (p_action_context_type => 'AAP'
2541 ,p_action_context_id => p_assignment_action_id
2542 ,p_action_information_id => l_act_inf_id
2543 ,p_object_version_number => l_ovn
2544 ,p_effective_date => g_report_date
2545 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2546 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2547 ,p_action_information2 => l_rep_code_rec.reporting_code
2548 ,p_action_information3 => l_rep_code_rec.amount
2549 ,p_action_information4 => l_rep_code_rec.info1
2550 ,p_action_information5 => l_rep_code_rec.info2
2551 ,p_action_information6 => l_rep_code_rec.info3
2552 ,p_action_information7 => l_rep_code_rec.info4
2553 ,p_action_information8 => l_rep_code_rec.info5
2554 ,p_action_information9 => l_rep_code_rec.info6
2555 ,p_action_information10 => l_seaman_status);
2556 END IF;
2557 --
2558 END IF;
2559 --
2560 END LOOP;
2561 --
2562 l_rep_code_rec := g_empty_rep_code_rec;
2563 --
2564 --
2565 -- Loop through all RRV based reporting codes NB. this is done result value by result value.
2566 --
2567 FOR l_rrv_rec IN csr_RRV
2568 (g_payroll_action_id
2569 ,g_business_group_id
2570 ,l_asg_act_rec.assignment_id
2571 ,l_asg_act_rec.legal_employer_id
2572 ,l_asg_act_rec.local_unit_id
2573 ,l_asg_act_rec.tax_municipality_id
2574 ,g_report_date)
2575 LOOP
2576 --
2577 --
2578 -- Moved onto new run result so write out to archive.
2579 --
2580 IF l_rr_id <> l_rrv_rec.run_result_id THEN
2581 IF l_rep_code_rec.reporting_code IS NOT NULL THEN
2582 --
2583 l_seaman_status := 'N';
2584 OPEN csr_Seaman_Status(l_element_type_id, l_classification_id, g_report_date);
2585 FETCH csr_Seaman_Status INTO l_seaman_status;
2586 CLOSE csr_Seaman_Status;
2587 --
2588 --
2589 -- Archive: EMEA REPORT INFORMATION | ASG_REP_CODE_INFO
2590 --
2591 pay_action_information_api.create_action_information
2592 (p_action_context_type => 'AAP'
2593 ,p_action_context_id => p_assignment_action_id
2594 ,p_action_information_id => l_act_inf_id
2595 ,p_object_version_number => l_ovn
2596 ,p_effective_date => g_report_date
2597 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2598 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2599 ,p_action_information2 => l_rep_code_rec.reporting_code
2600 ,p_action_information3 => l_rep_code_rec.amount
2601 ,p_action_information4 => l_rep_code_rec.info1
2602 ,p_action_information5 => l_rep_code_rec.info2
2603 ,p_action_information6 => l_rep_code_rec.info3
2604 ,p_action_information7 => l_rep_code_rec.info4
2605 ,p_action_information8 => l_rep_code_rec.info5
2606 ,p_action_information9 => l_rep_code_rec.info6
2607 ,p_action_information10 => l_seaman_status
2608 ,p_action_information11 => l_rep_code_rec.info7
2609 ,p_action_information12 => l_rep_code_rec.info8
2610 ,p_action_information13 => l_rep_code_rec.info9
2611 ,p_action_information14 => l_rep_code_rec.info10
2612 ,p_action_information15 => l_rep_code_rec.info11
2613 ,p_action_information16 => l_rep_code_rec.info12
2614 );
2615 --
2616 l_rep_code_rec := g_empty_rep_code_rec;
2617 END IF;
2618 --
2619 l_rep_code_rec.reporting_code := l_rrv_rec.reporting_code;
2620 END IF;
2621 --
2622 -- IF l_rrv_rec.dtype IN ('M','N') THEN
2623 --
2624 -- l_rrv_rec.result_value := fnd_number.number_to_canonical(l_rrv_rec.result_value);
2625 -- END IF;
2626 --
2627 --
2628 -- Store value against correct information column.
2629 --
2630 IF l_rrv_rec.dtype IN ('C','T','D','MC') THEN -- All Non numeric data types (char, text, data)
2631 --
2632 IF l_rrv_rec.info_id = 'INFO1' THEN
2633 l_rep_code_rec.info7 := l_rrv_rec.result_value;
2634 ELSIF l_rrv_rec.info_id = 'INFO2' THEN
2635 l_rep_code_rec.info8 := l_rrv_rec.result_value;
2636 ELSIF l_rrv_rec.info_id = 'INFO3' THEN
2637 l_rep_code_rec.info9 := l_rrv_rec.result_value;
2638 ELSIF l_rrv_rec.info_id = 'INFO4' THEN
2639 l_rep_code_rec.info10 := l_rrv_rec.result_value;
2640 ELSIF l_rrv_rec.info_id = 'INFO5' THEN
2641 l_rep_code_rec.info11 := l_rrv_rec.result_value;
2642 ELSIF l_rrv_rec.info_id = 'INFO6' THEN
2643 l_rep_code_rec.info12 := l_rrv_rec.result_value;
2644 END IF;
2645 --
2646 ELSE -- Data type is numeric
2647 --
2648 IF l_rrv_rec.info_id = 'INFO1' THEN
2649 l_rep_code_rec.info1 := l_rrv_rec.result_value;
2650 ELSIF l_rrv_rec.info_id = 'INFO2' THEN
2651 l_rep_code_rec.info2 := l_rrv_rec.result_value;
2652 ELSIF l_rrv_rec.info_id = 'INFO3' THEN
2653 l_rep_code_rec.info3 := l_rrv_rec.result_value;
2654 ELSIF l_rrv_rec.info_id = 'INFO4' THEN
2655 l_rep_code_rec.info4 := l_rrv_rec.result_value;
2656 ELSIF l_rrv_rec.info_id = 'INFO5' THEN
2657 l_rep_code_rec.info5 := l_rrv_rec.result_value;
2658 ELSIF l_rrv_rec.info_id = 'INFO6' THEN
2659 l_rep_code_rec.info6 := l_rrv_rec.result_value;
2660 ELSIF l_rrv_rec.info_id = 'AMOUNT' THEN
2661 IF is_EA_classification(l_rrv_rec.element_type, g_report_date) THEN
2662 l_rep_code_rec.amount := fnd_number.number_to_canonical(-1 * fnd_number.canonical_to_number(l_rrv_rec.result_value));
2663 ELSE
2664 l_rep_code_rec.amount := l_rrv_rec.result_value;
2665 END IF;
2666 END IF;
2667 --
2668 END IF;
2669 --
2670 l_rr_id := l_rrv_rec.run_result_id;
2671 l_element_type_id := l_rrv_rec.element_type;
2672 END LOOP;
2673 --
2674 --
2675 -- Write out to archive.
2676 --
2677 IF l_rep_code_rec.reporting_code IS NOT NULL THEN
2678 --
2679 l_seaman_status := 'N';
2680 OPEN csr_Seaman_Status(l_element_type_id, l_classification_id, g_report_date);
2681 FETCH csr_Seaman_Status INTO l_seaman_status;
2682 CLOSE csr_Seaman_Status;
2683 --
2684 --
2685 -- Archive: EMEA REPORT INFORMATION | ASG_REP_CODE_INFO
2686 --
2687 pay_action_information_api.create_action_information
2688 (p_action_context_type => 'AAP'
2689 ,p_action_context_id => p_assignment_action_id
2690 ,p_action_information_id => l_act_inf_id
2691 ,p_object_version_number => l_ovn
2692 ,p_effective_date => g_report_date
2693 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2694 ,p_action_information1 => 'ASG_REP_CODE_INFO'
2695 ,p_action_information2 => l_rep_code_rec.reporting_code
2696 ,p_action_information3 => l_rep_code_rec.amount
2697 ,p_action_information4 => l_rep_code_rec.info1
2698 ,p_action_information5 => l_rep_code_rec.info2
2699 ,p_action_information6 => l_rep_code_rec.info3
2700 ,p_action_information7 => l_rep_code_rec.info4
2701 ,p_action_information8 => l_rep_code_rec.info5
2702 ,p_action_information9 => l_rep_code_rec.info6
2703 ,p_action_information10 => l_seaman_status
2704 ,p_action_information11 => l_rep_code_rec.info7
2705 ,p_action_information12 => l_rep_code_rec.info8
2706 ,p_action_information13 => l_rep_code_rec.info9
2707 ,p_action_information14 => l_rep_code_rec.info10
2708 ,p_action_information15 => l_rep_code_rec.info11
2709 ,p_action_information16 => l_rep_code_rec.info12
2710 );
2711 --
2712 l_rep_code_rec := g_empty_rep_code_rec;
2713 END IF;
2714 --
2715 --
2716 -- Loop through all PROCEDURE based reporting codes NB. this is done result value by result value.
2717 --
2718 FOR l_proc_name_rec IN csr_PROC
2719 (g_payroll_action_id
2720 ,l_asg_act_rec.legal_employer_id)
2721 LOOP
2722 l_plsql_block := REPLACE(l_plsql_block, '<PROC>', l_proc_name_rec.procedure_name);
2723 --
2724 --
2725 -- Dynamically call the stored procedure.
2726 --
2727 EXECUTE IMMEDIATE l_plsql_block
2728 USING p_assignment_action_id
2729 ,l_proc_name_rec.reporting_code
2730 ,g_report_date;
2731 END LOOP;
2732 --
2733 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
2734 END archive_code;
2735 --
2736 --
2737 -- -----------------------------------------------------------------------------
2738 -- Part of archive logic.
2739 -- -----------------------------------------------------------------------------
2740 --
2741 PROCEDURE deinitialization_code
2742 (p_payroll_action_id IN NUMBER) IS
2743 --
2744 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.deinitialization_code';
2745 --
2746 CURSOR csr_LE_PER_BELOW_REP_LIMIT
2747 (p_payroll_action_id IN NUMBER) IS
2748 SELECT le_lu.action_information2 legal_employer_id
2749 ,asg_act.action_information5 person_id
2750 FROM pay_assignment_actions paa
2751 ,pay_action_information le_lu
2752 ,pay_action_information asg_act
2753 ,pay_action_information rep_cde
2754 ,pay_action_information cde_dtl
2755 WHERE paa.payroll_action_id = le_lu.action_context_id
2756 AND asg_act.action_context_type = 'AAP'
2757 AND asg_act.action_context_id = paa.assignment_action_id
2758 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
2759 AND asg_act.action_information1 = 'ASG_ACT_INFO'
2760 AND asg_act.action_information2 = le_lu.action_information2
2761 AND asg_act.action_information3 = le_lu.action_information4
2762 AND le_lu.action_context_type = 'PA'
2763 AND le_lu.action_context_id = p_payroll_action_id
2764 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
2765 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
2766 AND cde_dtl.action_context_type = 'PA'
2767 AND cde_dtl.action_context_id = le_lu.action_context_id
2768 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
2769 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
2770 AND cde_dtl.action_information2 = le_lu.action_information2
2771 AND cde_dtl.action_information3 = rep_cde.action_information2
2772 AND cde_dtl.action_information6 = 'Y'
2773 AND rep_cde.action_context_type = 'AAP'
2774 AND rep_cde.action_context_id = asg_act.action_context_id
2775 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
2776 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
2777 GROUP BY le_lu.action_information2
2778 ,asg_act.action_information5
2779 HAVING SUM(fnd_number.canonical_to_number(rep_cde.action_information3)) < 1000;
2780 --
2781 CURSOR csr_ASGACT
2782 (p_payroll_action_id IN NUMBER
2783 ,p_legal_employer_id IN VARCHAR2
2784 ,p_person_id IN VARCHAR2) IS
2785 SELECT asg_act.action_information_id
2786 ,asg_act.object_version_number
2787 ,paa.assignment_id
2788 FROM pay_action_information asg_act
2789 ,pay_assignment_actions paa
2790 WHERE asg_act.action_information_category = 'EMEA REPORT INFORMATION'
2791 AND asg_act.action_information1 = 'ASG_ACT_INFO'
2792 AND asg_act.action_information2 = p_legal_employer_id
2793 AND asg_act.action_information5 = p_person_id
2794 AND asg_act.action_context_type = 'AAP'
2795 AND asg_act.action_context_id = paa.assignment_action_id
2796 AND paa.payroll_action_id = p_payroll_action_id;
2797 --
2798 CURSOR csr_INDIVIDUAL_CODES
2799 (p_payroll_action_id IN NUMBER) IS
2800 SELECT asg_act.action_information2 legal_employer_id
2801 ,asg_act.action_information5 person_id
2802 ,asg_act.action_information6 tax_municipality
2803 ,rep_cde.action_information2 code
2804 ,rep_cde.action_information3 amount
2805 ,rep_cde.action_information4 info1
2806 ,rep_cde.action_information5 info2
2807 ,rep_cde.action_information6 info3
2808 ,rep_cde.action_information7 info4
2809 ,rep_cde.action_information8 info5
2810 ,rep_cde.action_information9 info6
2811 ,rep_cde.action_information10 seaman_component
2812 ,rep_cde.action_information11 cinfo1
2813 ,rep_cde.action_information12 cinfo2
2814 ,rep_cde.action_information13 cinfo3
2815 ,rep_cde.action_information14 cinfo4
2816 ,rep_cde.action_information15 cinfo5
2817 ,rep_cde.action_information16 cinfo6
2818 FROM pay_assignment_actions paa
2819 ,pay_action_information asg_act
2820 ,pay_action_information rep_cde
2821 ,pay_action_information cde_dtl
2822 WHERE paa.payroll_action_id = p_payroll_action_id
2823 AND asg_act.action_context_type = 'AAP'
2824 AND asg_act.action_context_id = paa.assignment_action_id
2825 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
2826 AND asg_act.action_information1 = 'ASG_ACT_INFO'
2827 AND rep_cde.action_context_type = 'AAP'
2828 AND rep_cde.action_context_id = asg_act.action_context_id
2829 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
2830 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
2831 AND cde_dtl.action_context_type = 'PA'
2832 AND cde_dtl.action_context_id = paa.payroll_action_id
2833 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
2834 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
2835 AND cde_dtl.action_information2 = asg_act.action_information2
2836 AND cde_dtl.action_information3 = rep_cde.action_information2
2837 AND cde_dtl.action_information9 = 'INDIVIDUAL';
2838 --
2839 CURSOR csr_SUM_CODES
2840 (p_payroll_action_id IN NUMBER) IS
2841 SELECT asg_act.action_information2 legal_employer_id
2842 ,asg_act.action_information5 person_id
2843 ,asg_act.action_information6 tax_municipality
2844 ,rep_cde.action_information2 code
2845 ,SUM(fnd_number.canonical_to_number(rep_cde.action_information3)) amount
2846 ,SUM(fnd_number.canonical_to_number(nvl(rep_cde.action_information4,0))) info1
2847 ,SUM(fnd_number.canonical_to_number(nvl(rep_cde.action_information5,0))) info2
2848 ,SUM(fnd_number.canonical_to_number(nvl(rep_cde.action_information6,0))) info3
2849 ,SUM(fnd_number.canonical_to_number(nvl(rep_cde.action_information7,0))) info4
2850 ,SUM(fnd_number.canonical_to_number(nvl(rep_cde.action_information8,0))) info5
2851 ,SUM(fnd_number.canonical_to_number(nvl(rep_cde.action_information9,0))) info6
2852 ,rep_cde.action_information10 seaman_component
2853 ,rep_cde.action_information11 cinfo1
2854 ,rep_cde.action_information12 cinfo2
2855 ,rep_cde.action_information13 cinfo3
2856 ,rep_cde.action_information14 cinfo4
2857 ,rep_cde.action_information15 cinfo5
2858 ,rep_cde.action_information16 cinfo6
2859 FROM pay_assignment_actions paa
2860 ,pay_action_information asg_act
2861 ,pay_action_information rep_cde
2862 ,pay_action_information cde_dtl
2863 WHERE paa.payroll_action_id = p_payroll_action_id
2864 AND asg_act.action_context_type = 'AAP'
2865 AND asg_act.action_context_id = paa.assignment_action_id
2866 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
2867 AND asg_act.action_information1 = 'ASG_ACT_INFO'
2868 AND rep_cde.action_context_type = 'AAP'
2869 AND rep_cde.action_context_id = asg_act.action_context_id
2870 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
2871 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
2872 AND cde_dtl.action_context_type = 'PA'
2873 AND cde_dtl.action_context_id = paa.payroll_action_id
2874 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
2875 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
2876 AND cde_dtl.action_information2 = asg_act.action_information2
2877 AND cde_dtl.action_information3 = rep_cde.action_information2
2878 AND cde_dtl.action_information9 = 'SUM'
2879 GROUP BY asg_act.action_information2
2880 ,asg_act.action_information5
2881 ,asg_act.action_information6
2882 ,rep_cde.action_information2
2883 ,rep_cde.action_information10
2884 ,rep_cde.action_information11
2885 ,rep_cde.action_information12
2886 ,rep_cde.action_information13
2887 ,rep_cde.action_information14
2888 ,rep_cde.action_information15
2889 ,rep_cde.action_information16 ;
2890 --
2891 CURSOR csr_PROCEDURE_CODES
2892 (p_payroll_action_id IN NUMBER) IS
2893 SELECT cde_dtl.action_information2 legal_employer_id
2894 ,cde_dtl.action_information3 reporting_code
2895 ,cde_dtl.action_information10 procedure_name
2896 FROM pay_action_information cde_dtl
2897 WHERE cde_dtl.action_context_id = p_payroll_action_id
2898 AND cde_dtl.action_context_type = 'PA'
2899 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
2900 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
2901 AND cde_dtl.action_information9 = 'PROCEDURE';
2902 --
2903 l_plsql_block VARCHAR2(2000) := 'BEGIN <PROC>(:1, :2, :3); END;';
2904 l_act_inf_id NUMBER;
2905 l_ovn NUMBER;
2906 l_amount NUMBER;
2907 l_balance_tested BOOLEAN := FALSE;
2908 l_tax_defbal_id NUMBER := get_defined_balance(g_business_group_id, 'Tax', '_PER_TU_YTD');
2909 --
2910 BEGIN
2911 hr_utility.set_location('Entering ' || l_proc_name, 10);
2912 --
2913 set_parameters(p_payroll_action_id);
2914 --
2915 --
2916 -- Find people who have reportable earnings below 1000 NOK for the legal employer.
2917 --
2918 FOR l_per_blw_rep_limit_rec IN csr_LE_PER_BELOW_REP_LIMIT
2919 (p_payroll_action_id)
2920 LOOP
2921 l_amount := 0;
2922 l_balance_tested := FALSE;
2923 --
2924 --
2925 -- Find all ASG_ACT_INFO archive records for the given person / legal employer combination.
2926 --
2927 FOR l_asg_act_rec IN csr_ASGACT
2928 (p_payroll_action_id
2929 ,l_per_blw_rep_limit_rec.legal_employer_id
2930 ,l_per_blw_rep_limit_rec.person_id)
2931 LOOP
2932 --
2933 --
2934 -- See how much tax they have paid while working for legal employer NB. Only need to test balance ONCE
2935 -- as it is at person level.
2936 --
2937 IF NOT l_balance_tested THEN
2938 --
2939 --
2940 -- Setup balance contexts.
2941 --
2942 pay_balance_pkg.set_context('TAX_UNIT_ID', l_per_blw_rep_limit_rec.legal_employer_id);
2943 pay_balance_pkg.set_context('DATE_EARNED', fnd_date.date_to_canonical(g_report_date));
2944 --
2945 --
2946 -- Retrieve balance for:-
2947 --
2948 -- Tax_PER_TU_YTD
2949 --
2950 l_amount := pay_balance_pkg.get_value
2951 (p_defined_balance_id => l_tax_defbal_id
2952 ,p_assignment_id => l_asg_act_rec.assignment_id
2953 ,p_virtual_date => g_report_date);
2954 --
2955 l_balance_tested := TRUE;
2956 END IF;
2957 --
2958 --
2959 -- Person is below 1000 NOK reportable earnings AND they haven't paid any tax so update the
2960 -- ASG_ACT_INFO archive records to identify that. This will put their reporting code details into the
2961 -- earnings below reporting limit category on the Employer Contribution Summary report.
2962 --
2963 IF l_amount = 0 THEN
2964 pay_action_information_api.update_action_information
2965 (p_action_information_id => l_asg_act_rec.action_information_id
2966 ,p_object_version_number => l_asg_act_rec.object_version_number
2967 ,p_action_information7 => 'Y');
2968 END IF;
2969 END LOOP;
2970 END LOOP;
2971 --
2972 --
2973 -- Loop for all reporting codes that are kept as INDIVIDUAL records.
2974 --
2975 FOR l_cde_rec IN csr_INDIVIDUAL_CODES
2976 (p_payroll_action_id)
2977 LOOP
2978 --
2979 --
2980 -- Archive: EMEA REPORT INFORMATION | AUDIT_REP_SUMMARY
2981 --
2982 pay_action_information_api.create_action_information
2983 (p_action_context_type => 'PA'
2984 ,p_action_context_id => p_payroll_action_id
2985 ,p_action_information_id => l_act_inf_id
2986 ,p_object_version_number => l_ovn
2987 ,p_effective_date => g_report_date
2988 ,p_action_information_category => 'EMEA REPORT INFORMATION'
2989 ,p_action_information1 => 'AUDIT_REP_SUMMARY'
2990 ,p_action_information2 => l_cde_rec.legal_employer_id
2991 ,p_action_information3 => l_cde_rec.person_id
2992 ,p_action_information4 => l_cde_rec.code
2993 ,p_action_information5 => l_cde_rec.amount
2994 ,p_action_information6 => nvl(l_cde_rec.cinfo1, l_cde_rec.info1)
2995 ,p_action_information7 => nvl(l_cde_rec.cinfo2, l_cde_rec.info2)
2996 ,p_action_information8 => nvl(l_cde_rec.cinfo3, l_cde_rec.info3)
2997 ,p_action_information9 => nvl(l_cde_rec.cinfo4, l_cde_rec.info4)
2998 ,p_action_information10 => nvl(l_cde_rec.cinfo5, l_cde_rec.info5)
2999 ,p_action_information11 => nvl(l_cde_rec.cinfo6, l_cde_rec.info6)
3000 ,p_action_information12 => l_cde_rec.tax_municipality
3001 ,p_action_information13 => l_cde_rec.seaman_component);
3002 END LOOP;
3003 --
3004 --
3005 -- Loop for all reporting codes that are SUMMED.
3006 --
3007 FOR l_cde_rec IN csr_SUM_CODES
3008 (p_payroll_action_id)
3009 LOOP
3010 --
3011 --
3012 -- Archive: EMEA REPORT INFORMATION | AUDIT_REP_SUMMARY
3013 --
3014 pay_action_information_api.create_action_information
3015 (p_action_context_type => 'PA'
3016 ,p_action_context_id => p_payroll_action_id
3017 ,p_action_information_id => l_act_inf_id
3018 ,p_object_version_number => l_ovn
3019 ,p_effective_date => g_report_date
3020 ,p_action_information_category => 'EMEA REPORT INFORMATION'
3021 ,p_action_information1 => 'AUDIT_REP_SUMMARY'
3022 ,p_action_information2 => l_cde_rec.legal_employer_id
3023 ,p_action_information3 => l_cde_rec.person_id
3024 ,p_action_information4 => l_cde_rec.code
3025 ,p_action_information5 => fnd_number.number_to_canonical(l_cde_rec.amount)
3026 ,p_action_information6 => nvl(l_cde_rec.cinfo1, fnd_number.number_to_canonical(l_cde_rec.info1))
3027 ,p_action_information7 => nvl(l_cde_rec.cinfo2, fnd_number.number_to_canonical(l_cde_rec.info2))
3028 ,p_action_information8 => nvl(l_cde_rec.cinfo3, fnd_number.number_to_canonical(l_cde_rec.info3))
3029 ,p_action_information9 => nvl(l_cde_rec.cinfo4, fnd_number.number_to_canonical(l_cde_rec.info4))
3030 ,p_action_information10 => nvl(l_cde_rec.cinfo5, fnd_number.number_to_canonical(l_cde_rec.info5))
3031 ,p_action_information11 => nvl(l_cde_rec.cinfo6, fnd_number.number_to_canonical(l_cde_rec.info6))
3032 ,p_action_information12 => l_cde_rec.tax_municipality
3033 ,p_action_information13 => l_cde_rec.seaman_component);
3034 END LOOP;
3035 --
3036 --
3037 -- Loop for all reporting codes that are processed by an external PROCEDURE.
3038 --
3039 FOR l_proc_name_rec IN csr_PROCEDURE_CODES
3040 (p_payroll_action_id)
3041 LOOP
3042 l_plsql_block := REPLACE(l_plsql_block, '<PROC>', l_proc_name_rec.procedure_name);
3043 --
3044 --
3045 -- Dynamically call the stored procedure.
3046 --
3047 EXECUTE IMMEDIATE l_plsql_block
3048 USING p_payroll_action_id
3049 ,l_proc_name_rec.legal_employer_id
3050 ,l_proc_name_rec.reporting_code;
3051 END LOOP;
3052 --
3053 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
3054 --
3055 EXCEPTION
3056 WHEN OTHERS THEN
3057 --Fnd_file.put_line(FND_FILE.LOG,'## SQLERR ' || sqlerrm(sqlcode));
3058 hr_utility.set_location(sqlerrm(sqlcode),120);
3059 --
3060 END deinitialization_code;
3061 --
3062 --
3063 -- -----------------------------------------------------------------------------
3064 -- Generates XML for the Norwegian End of Year Audit report.
3065 -- -----------------------------------------------------------------------------
3066 --
3067 PROCEDURE get_audit_data
3068 (p_payroll_action_id IN VARCHAR2
3069 ,p_template_name IN VARCHAR2
3070 ,p_xml OUT NOCOPY CLOB) IS
3071 --
3072 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.get_audit_data';
3073 --
3074 CURSOR csr_LEGEMP
3075 (l_payroll_action_id IN NUMBER) IS
3076 SELECT leg_emp.action_information2 legal_employer_id
3077 ,leg_emp.action_information3 legal_employer_name
3078 ,leg_emp.action_information4 organization_number
3079 ,leg_emp.effective_date effective_date
3080 FROM pay_action_information leg_emp
3081 WHERE leg_emp.action_context_type = 'PA'
3082 AND leg_emp.action_context_id = l_payroll_action_id
3083 AND leg_emp.action_information_category = 'EMEA REPORT INFORMATION'
3084 AND leg_emp.action_information1 = 'LEG_EMP_INFO'
3085 ORDER BY leg_emp.action_information3;
3086 --
3087 CURSOR csr_PERSON
3088 (l_payroll_action_id IN NUMBER
3089 ,p_legal_employer_id IN VARCHAR2
3090 ,l_seaman_emp IN VARCHAR2) IS
3091 SELECT DISTINCT
3092 summ_cde.action_information3 person_id
3093 ,summ_cde.action_information12 tax_municipality
3094 ,per.action_information3 full_name
3095 ,per.action_information4 employee_number
3096 ,per.action_information5 national_identifier
3097 ,per.action_information6 employed_throughout
3098 ,per.action_information7 seamen
3099 ,per.action_information8 employment_date_days
3100 FROM pay_action_information summ_cde
3101 ,pay_action_information per
3102 WHERE summ_cde.action_context_type = 'PA'
3103 AND summ_cde.action_context_id = l_payroll_action_id
3104 AND summ_cde.action_information_category = 'EMEA REPORT INFORMATION'
3105 AND summ_cde.action_information1 = 'AUDIT_REP_SUMMARY'
3106 AND summ_cde.action_information2 = p_legal_employer_id
3107 AND per.action_context_type = summ_cde.action_context_type
3108 AND per.action_context_id = summ_cde.action_context_id
3109 AND per.action_information_category = summ_cde.action_information_category
3110 AND per.action_information1 = 'PER_INFO'
3111 AND per.action_information2 = summ_cde.action_information3
3112 AND per.action_information7 = DECODE(l_seaman_emp,'N',per.action_information7,hr_general.decode_lookup('YES_NO','Y'))
3113 ORDER BY per.action_information3;
3114 --
3115 CURSOR csr_SUMMARY_CODES
3116 (l_payroll_action_id IN NUMBER
3117 ,p_legal_employer_id IN VARCHAR2
3118 ,p_person_id IN VARCHAR2
3119 ,p_tax_municipality IN VARCHAR2
3120 ,l_seaman_status IN VARCHAR2 ) IS
3121 SELECT summ_cde.action_information4 code
3122 ,fnd_number.canonical_to_number(summ_cde.action_information5) amount
3123 ,summ_cde.action_information6 info1
3124 ,summ_cde.action_information7 info2
3125 ,summ_cde.action_information8 info3
3126 ,summ_cde.action_information9 info4
3127 ,summ_cde.action_information10 info5
3128 ,summ_cde.action_information11 info6
3129 ,pay_no_eoy_archive.get_code_desc(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4) description
3130 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_prompt
3131 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_prompt
3132 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_prompt
3133 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_prompt
3134 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_prompt
3135 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_prompt
3136 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_dtype
3137 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_dtype
3138 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_dtype
3139 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_dtype
3140 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_dtype
3141 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_dtype
3142 FROM pay_action_information summ_cde
3143 WHERE summ_cde.action_context_type = 'PA'
3144 AND summ_cde.action_context_id = l_payroll_action_id
3145 AND summ_cde.action_information_category = 'EMEA REPORT INFORMATION'
3146 AND summ_cde.action_information1 = 'AUDIT_REP_SUMMARY'
3147 AND summ_cde.action_information2 = p_legal_employer_id
3148 AND summ_cde.action_information3 = p_person_id
3149 AND summ_cde.action_information12 = p_tax_municipality
3150 AND summ_cde.action_information13 = l_seaman_status
3151 ORDER BY summ_cde.action_information2,
3152 summ_cde.action_information4;
3153 --
3154 l_xml_element_count NUMBER := 1;
3155 l_payroll_action_id NUMBER;
3156 l_bg_id NUMBER;
3157 lg_format_mask VARCHAR2(40);
3158 l_desc_count NUMBER := 0;
3159 l_seaman_status VARCHAR2(1);
3160 --
3161 BEGIN
3162 hr_utility.set_location('Entering ' || l_proc_name, 10);
3163 g_xml_element_table.DELETE;
3164 g_fixed_code.DELETE;
3165 --
3166 IF p_payroll_action_id is null then
3167 BEGIN
3168 SELECT payroll_action_id
3169 into l_payroll_action_id
3170 from pay_payroll_actions ppa,
3171 fnd_conc_req_summary_v fcrs,
3172 fnd_conc_req_summary_v fcrs1
3173 WHERE fcrs.request_id = fnd_global.conc_request_id
3174 and fcrs.priority_request_id = fcrs1.priority_request_id
3175 and ppa.request_id between fcrs1.request_id and fcrs.request_id
3176 and ppa.request_id = fcrs1.request_id;
3177 EXCEPTION
3178 WHEN others then
3179 null;
3180 END;
3181 ELSE
3182 l_payroll_action_id := p_payroll_action_id;
3183 END IF;
3184 --
3185 -- get the currecnt BG's currency and mask to format the amount fields
3186 --
3187 fnd_profile.get('PER_BUSINESS_GROUP_ID', l_bg_id);
3188 set_currency_mask(l_bg_id, lg_format_mask);
3189 --
3190 -- Loop for each legal employer.
3191 --
3192 FOR l_legemp_rec IN csr_LEGEMP
3193 (l_payroll_action_id)
3194 LOOP
3195 --
3196 --
3197 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
3198 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3199 l_xml_element_count := l_xml_element_count + 1;
3200 --
3201 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_NAME';
3202 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.legal_employer_name;
3203 l_xml_element_count := l_xml_element_count + 1;
3204 --
3205 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ORG_NUMBER';
3206 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.organization_number;
3207 l_xml_element_count := l_xml_element_count + 1;
3208 --
3209 g_xml_element_table(l_xml_element_count).tagname := 'REP_PERIOD';
3210 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_legemp_rec.effective_date,'DD-MON-YYYY');
3211 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(l_legemp_rec.effective_date);
3212 l_xml_element_count := l_xml_element_count + 1;
3213 --
3214 --
3215 -- Loop for each person within legal employer.
3216 --
3217 l_seaman_status := 'N';
3218 --
3219 -- Following loop executes csr_PERSON with l_seaman_status = 'N' (for all employees)
3220 -- and for the second time l_seaman_status = 'Y' (Seaman Workers)
3221 --
3222 FOR i IN 1..2 LOOP
3223 --
3224 FOR l_person_rec IN csr_PERSON
3225 (l_payroll_action_id
3226 ,l_legemp_rec.legal_employer_id
3227 ,l_seaman_status)
3228 LOOP
3229 --
3230 g_xml_element_table(l_xml_element_count).tagname := 'PERSON';
3231 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3232 l_xml_element_count := l_xml_element_count + 1;
3233 --
3234 l_desc_count := 0;
3235 --
3236 --
3237 -- Loop for all reporting codes within person, legal employer, and tax municipality.
3238 --
3239 FOR l_summ_code_rec IN csr_SUMMARY_CODES
3240 (l_payroll_action_id
3241 ,l_legemp_rec.legal_employer_id
3242 ,l_person_rec.person_id
3243 ,l_person_rec.tax_municipality
3244 ,l_seaman_status)
3245 LOOP
3246 --
3247 l_desc_count := 1;
3248 --
3249 g_xml_element_table(l_xml_element_count).tagname := 'REP_CODE';
3250 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3251 l_xml_element_count := l_xml_element_count + 1;
3252 --
3253 g_xml_element_table(l_xml_element_count).tagname := 'CODE';
3254 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.code;
3255 l_xml_element_count := l_xml_element_count + 1;
3256 --
3257 g_xml_element_table(l_xml_element_count).tagname := 'AMOUNT';
3258 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_summ_code_rec.amount,lg_format_mask);
3259 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3260 l_xml_element_count := l_xml_element_count + 1;
3261 --
3262 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3263 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.description;
3264 l_xml_element_count := l_xml_element_count + 1;
3265 --
3266 IF l_summ_code_rec.info1_prompt IS NOT NULL AND l_summ_code_rec.info1 IS NOT NULL THEN
3267 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3268 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3269 l_xml_element_count := l_xml_element_count + 1;
3270 --
3271 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3272 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info1_prompt;
3273 l_xml_element_count := l_xml_element_count + 1;
3274 --
3275 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
3276 IF l_summ_code_rec.info1_dtype IN ('M','A','N','MC') THEN
3277 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info1), lg_format_mask);
3278 ELSIF l_summ_code_rec.info1_dtype = 'D' AND l_summ_code_rec.info1 <> '0' THEN
3279 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info1));
3280
3281 ELSE
3282 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info1;
3283 END IF;
3284 l_xml_element_count := l_xml_element_count + 1;
3285 --
3286 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3287 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3288 l_xml_element_count := l_xml_element_count + 1;
3289 END IF;
3290 --
3291 IF l_summ_code_rec.info2_prompt IS NOT NULL AND l_summ_code_rec.info2 IS NOT NULL THEN
3292 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3293 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3294 l_xml_element_count := l_xml_element_count + 1;
3295 --
3296 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3297 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info2_prompt;
3298 l_xml_element_count := l_xml_element_count + 1;
3299 --
3300 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
3301 IF l_summ_code_rec.info2_dtype IN ('M','A','N') THEN
3302 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info2),lg_format_mask);
3303 ELSIF l_summ_code_rec.info2_dtype = 'D' AND l_summ_code_rec.info2 <> '0' THEN
3304 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info2));
3305 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_date.canonical_to_date(l_summ_code_rec.info2),'DD-MM-YYYY');
3306 ELSE
3307 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info2;
3308 END IF;
3309 l_xml_element_count := l_xml_element_count + 1;
3310 --
3311 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3312 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3313 l_xml_element_count := l_xml_element_count + 1;
3314 END IF;
3315 --
3316 IF l_summ_code_rec.info3_prompt IS NOT NULL AND l_summ_code_rec.info3 IS NOT NULL THEN
3317 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3318 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3319 l_xml_element_count := l_xml_element_count + 1;
3320 --
3321 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3322 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info3_prompt;
3323 l_xml_element_count := l_xml_element_count + 1;
3324 --
3325 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
3326 IF l_summ_code_rec.info3_dtype IN ('M','A','N') THEN
3327 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info3), lg_format_mask);
3328 ELSIF l_summ_code_rec.info3_dtype = 'D' AND l_summ_code_rec.info3 <> '0' THEN
3329 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info3));
3330 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_date.canonical_to_date(l_summ_code_rec.info3),'DD-MM-YYYY');
3331 ELSE
3332 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info3;
3333 END IF;
3334 l_xml_element_count := l_xml_element_count + 1;
3335 --
3336 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3337 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3338 l_xml_element_count := l_xml_element_count + 1;
3339 END IF;
3340 --
3341 IF l_summ_code_rec.info4_prompt IS NOT NULL AND l_summ_code_rec.info4 IS NOT NULL THEN
3342 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3343 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3344 l_xml_element_count := l_xml_element_count + 1;
3345 --
3346 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3347 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info4_prompt;
3348 l_xml_element_count := l_xml_element_count + 1;
3349 --
3350 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
3351 IF l_summ_code_rec.info4_dtype IN ('M','A','N') THEN
3352 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info4),lg_format_mask);
3353 ELSIF l_summ_code_rec.info4_dtype = 'D' AND l_summ_code_rec.info4 <> '0' THEN
3354 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info4));
3355 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_date.canonical_to_date(l_summ_code_rec.info4),'DD-MM-YYYY');
3356 ELSE
3357 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info4;
3358 END IF;
3359 l_xml_element_count := l_xml_element_count + 1;
3360 --
3361 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3362 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3363 l_xml_element_count := l_xml_element_count + 1;
3364 END IF;
3365 --
3366 IF l_summ_code_rec.info5_prompt IS NOT NULL AND l_summ_code_rec.info5 IS NOT NULL THEN
3367 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3368 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3369 l_xml_element_count := l_xml_element_count + 1;
3370 --
3371 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3372 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info5_prompt;
3373 l_xml_element_count := l_xml_element_count + 1;
3374 --
3375 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
3376 IF l_summ_code_rec.info5_dtype IN ('M','A','N') THEN
3377 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info5), lg_format_mask);
3378 ELSIF l_summ_code_rec.info5_dtype = 'D' AND l_summ_code_rec.info5 <> '0' THEN
3379 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info5));
3380 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_date.canonical_to_date(l_summ_code_rec.info5),'DD-MM-YYYY');
3381 ELSE
3382 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info5;
3383 END IF;
3384 l_xml_element_count := l_xml_element_count + 1;
3385 --
3386 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3387 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3388 l_xml_element_count := l_xml_element_count + 1;
3389 END IF;
3390 --
3391 IF l_summ_code_rec.info6_prompt IS NOT NULL AND l_summ_code_rec.info6 IS NOT NULL THEN
3392 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3393 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3394 l_xml_element_count := l_xml_element_count + 1;
3395 --
3396 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
3397 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info6_prompt;
3398 l_xml_element_count := l_xml_element_count + 1;
3399 --
3400 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
3401 IF l_summ_code_rec.info6_dtype IN ('M','A','N') THEN
3402 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info6),lg_format_mask);
3403 ELSIF l_summ_code_rec.info6_dtype = 'D' AND l_summ_code_rec.info6 <> '0' THEN
3404 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info6));
3405 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_date.canonical_to_date(l_summ_code_rec.info6),'DD-MM-YYYY');
3406 ELSE
3407 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info6;
3408 END IF;
3409 l_xml_element_count := l_xml_element_count + 1;
3410 --
3411 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
3412 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3413 l_xml_element_count := l_xml_element_count + 1;
3414 END IF;
3415 --
3416 g_xml_element_table(l_xml_element_count).tagname := 'REP_CODE';
3417 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3418 l_xml_element_count := l_xml_element_count + 1;
3419 END LOOP;
3420 --
3421 IF l_desc_count = 1 THEN
3422 --
3423 g_xml_element_table(l_xml_element_count).tagname := 'NAME';
3424 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.full_name;
3425 l_xml_element_count := l_xml_element_count + 1;
3426 --
3427 g_xml_element_table(l_xml_element_count).tagname := 'NI_NUMBER';
3428 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.national_identifier;
3429 l_xml_element_count := l_xml_element_count + 1;
3430 --
3431 g_xml_element_table(l_xml_element_count).tagname := 'EMP_NO';
3432 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employee_number;
3433 l_xml_element_count := l_xml_element_count + 1;
3434 --
3435 g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_THROUGHOUT';
3436 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employed_throughout;
3437 l_xml_element_count := l_xml_element_count + 1;
3438 --
3439 g_xml_element_table(l_xml_element_count).tagname := 'SEAMEN';
3440 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.seamen; -- Fix For Seamen Display 2007/2008
3441 --g_xml_element_table(l_xml_element_count).tagvalue := hr_general.decode_lookup('YES_NO',l_seaman_status);
3442 l_xml_element_count := l_xml_element_count + 1;
3443 --
3444 g_xml_element_table(l_xml_element_count).tagname := 'TAX_MUNICIPALITY';
3445 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.tax_municipality;
3446 l_xml_element_count := l_xml_element_count + 1;
3447 --
3448 g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYMENT_DATES';
3449 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employment_date_days;
3450 l_xml_element_count := l_xml_element_count + 1;
3451 --
3452 g_xml_element_table(l_xml_element_count).tagname := 'PERSON';
3453 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3454 l_xml_element_count := l_xml_element_count + 1;
3455 --
3456 ELSE
3457 --
3458 l_xml_element_count := l_xml_element_count - 1;
3459 g_xml_element_table(l_xml_element_count).tagname := NULL;
3460 g_xml_element_table(l_xml_element_count).tagvalue := NULL;
3461 --
3462 END IF;
3463 --
3464 END LOOP;
3465 --
3466 l_seaman_status := 'Y';
3467 --
3468 END LOOP;
3469 --
3470 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
3471 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
3472 l_xml_element_count := l_xml_element_count + 1;
3473 END LOOP;
3474 --
3475 write_to_clob(p_xml);
3476 --
3477 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
3478 END get_audit_data;
3479 --
3480 --
3481 ------------------------------------------------------------------------------------
3482 -- Generates Norwegian End of Year Employer Contribution Summary Report
3483 --
3484 -----------------------------------------------------------------------------------
3485 --
3486 PROCEDURE get_employer_contribution_data
3487 (p_payroll_action_id IN VARCHAR2
3488 ,p_template_name IN VARCHAR2
3489 ,p_xml OUT NOCOPY CLOB) IS
3490 --
3491 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.get_employer_contribution_data';
3492 --
3493 --
3494 -- Cursor to get the Values for the NI Zones and the Tax Municipal Details 2007/08 changes
3495 --
3496 CURSOR csr_LE_SI_LU_TM_INFO
3497 (l_payroll_action_id IN NUMBER) IS
3498 SELECT DISTINCT
3499 le_lu_tm.action_information3 si_status
3500 ,le_lu_tm.action_information4 local_unit_id
3501 ,le_lu_tm.action_information5 local_unit
3502 ,le_lu_tm.action_information6 tax_municipality_id
3503 ,le_lu_tm.action_information7 tax_municipality
3504 ,le_lu_tm.action_information8 ni_zone_arc
3505 ,fnd_number.canonical_to_number(le_lu_tm.action_information9) emp_contr_bse
3506 ,fnd_number.canonical_to_number(le_lu_tm.action_information10) reimb_bse
3507 ,fnd_number.canonical_to_number(le_lu_tm.action_information11) pension_bse
3508 FROM pay_action_information le_lu_tm
3509 WHERE le_lu_tm.action_context_type = 'PA'
3510 AND le_lu_tm.action_context_id = l_payroll_action_id
3511 AND le_lu_tm.action_information_category = 'EMEA REPORT INFORMATION'
3512 AND le_lu_tm.action_information1 = 'LE_SI_LU_TM_INFO';
3513 --
3514 CURSOR csr_LE_SI
3515 (l_payroll_action_id IN NUMBER) IS
3516 SELECT DISTINCT
3517 le_lu.action_information2 legal_employer_id
3518 ,le_lu.action_information3 si_status
3519 ,le_lu.action_information5 nace_code -- changes 2007/08
3520 ,leg_emp.action_information3 legal_employer_name
3521 ,leg_emp.action_information4 organization_number
3522 ,leg_emp.action_information5 le_addr1
3523 ,leg_emp.action_information6 le_addr2
3524 ,leg_emp.action_information7 le_addr3
3525 ,leg_emp.action_information8 le_postcode
3526 ,leg_emp.action_information9 le_postoffice
3527 ,leg_emp.action_information10 tax_office_name
3528 ,leg_emp.action_information11 to_addr1
3529 ,leg_emp.action_information12 to_addr2
3530 ,leg_emp.action_information13 to_addr3
3531 ,leg_emp.action_information14 to_postcode
3532 ,leg_emp.action_information15 to_postoffice
3533 ,leg_emp.action_information16 le_tax_muncipality --2007/2008 Changes
3534 ,leg_emp.action_information17 le_economic_aid -- 2007/2008 Changes
3535 ,leg_emp.effective_date effective_date
3536 FROM pay_action_information le_lu
3537 ,pay_action_information leg_emp
3538 WHERE le_lu.action_context_type = 'PA'
3539 AND le_lu.action_context_id = l_payroll_action_id
3540 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
3541 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
3542 AND leg_emp.action_context_type = 'PA'
3543 AND leg_emp.action_context_id = le_lu.action_context_id
3544 AND leg_emp.action_information_category = 'EMEA REPORT INFORMATION'
3545 AND leg_emp.action_information1 = 'LEG_EMP_INFO'
3546 AND leg_emp.action_information2 = le_lu.action_information2;
3547 --
3548 CURSOR csr_LE_SI_BAL_SUMMARY
3549 (l_payroll_action_id IN NUMBER
3550 ,p_legal_employer_id IN VARCHAR2
3551 ,p_si_status IN VARCHAR2) IS
3552 SELECT fnd_number.canonical_to_number(le_si_bals.action_information4) emp_contr_ni_zone1
3553 ,fnd_number.canonical_to_number(le_si_bals.action_information5) emp_contr_ni_zone2
3554 ,fnd_number.canonical_to_number(le_si_bals.action_information6) emp_contr_ni_zone3
3555 ,fnd_number.canonical_to_number(le_si_bals.action_information7) emp_contr_ni_zone4
3556 ,fnd_number.canonical_to_number(le_si_bals.action_information8) emp_contr_ni_zone5
3557 ,fnd_number.canonical_to_number(le_si_bals.action_information9) emp_contr_ni_total
3558 ,fnd_number.canonical_to_number(le_si_bals.action_information10) emp_contr_o62_ni_zone1
3559 ,fnd_number.canonical_to_number(le_si_bals.action_information11) emp_contr_o62_ni_zone2
3560 ,fnd_number.canonical_to_number(le_si_bals.action_information12) emp_contr_o62_ni_zone3
3561 ,fnd_number.canonical_to_number(le_si_bals.action_information13) emp_contr_o62_ni_zone4
3562 ,fnd_number.canonical_to_number(le_si_bals.action_information14) emp_contr_o62_ni_zone5
3563 ,fnd_number.canonical_to_number(le_si_bals.action_information15) emp_contr_o62_ni_total
3564 ,fnd_number.canonical_to_number(le_si_bals.action_information16) tax
3565 ,fnd_number.canonical_to_number(le_si_bals.action_information17) emp_contr_spcl_pct_base
3566 ,fnd_number.canonical_to_number(le_si_bals.action_information18) emp_contr_spcl_pct
3567 ,fnd_number.canonical_to_number(le_si_bals.action_information19) emp_contr_spcl
3568 ,fnd_number.canonical_to_number(le_si_bals.action_information20) foreign_special_percentage
3569 ,fnd_number.canonical_to_number(le_si_bals.action_information21) foreign_special_amount
3570 ,fnd_number.canonical_to_number(le_si_bals.action_information22) emp_contr_reimb_spcl_base --2007/2008 changes
3571 ,fnd_number.canonical_to_number(le_si_bals.action_information23) tot_reimb_bse --2007/2008 changes
3572 ,fnd_number.canonical_to_number(le_si_bals.action_information24) tot_pension_bse -- 2007/2008 Changes
3573 FROM pay_action_information le_si_bals
3574 WHERE le_si_bals.action_context_type = 'PA'
3575 AND le_si_bals.action_context_id = l_payroll_action_id
3576 AND le_si_bals.action_information_category = 'EMEA REPORT INFORMATION'
3577 AND le_si_bals.action_information1 = 'LE_SI_BALS'
3578 AND le_si_bals.action_information2 = p_legal_employer_id
3579 AND le_si_bals.action_information3 = p_si_status;
3580 --
3581 CURSOR csr_LE_SI_CODE_SUMMARY
3582 (l_payroll_action_id IN NUMBER
3583 ,p_legal_employer_id IN VARCHAR2
3584 ,p_si_status IN VARCHAR2) IS
3585 SELECT COUNT (DISTINCT asg_act.action_information5) certificates
3586 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3587 ,'1N1', fnd_number.canonical_to_number(rep_cde.action_information3)
3588 ,0)) a_zone1
3589 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3590 ,'2N1', fnd_number.canonical_to_number(rep_cde.action_information3)
3591 ,0)) a_zone2
3592 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3593 ,'3N1', fnd_number.canonical_to_number(rep_cde.action_information3)
3594 ,0)) a_zone3
3595 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3596 ,'4N1', fnd_number.canonical_to_number(rep_cde.action_information3)
3597 ,0)) a_zone4
3598 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3599 ,'5N1', fnd_number.canonical_to_number(rep_cde.action_information3)
3600 ,0)) a_zone5
3601 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3602 ,'1Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
3603 ,0)) bl_zone1
3604 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3605 ,'2Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
3606 ,0)) bl_zone2
3607 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3608 ,'3Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
3609 ,0)) bl_zone3
3610 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3611 ,'4Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
3612 ,0)) bl_zone4
3613 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3614 ,'5Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
3615 ,0)) bl_zone5
3616 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3617 ,'11', fnd_number.canonical_to_number(rep_cde.action_information3)
3618 ,0)) sum_zone1
3619 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3620 ,'21', fnd_number.canonical_to_number(rep_cde.action_information3)
3621 ,0)) sum_zone2
3622 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3623 ,'31', fnd_number.canonical_to_number(rep_cde.action_information3)
3624 ,0)) sum_zone3
3625 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3626 ,'41', fnd_number.canonical_to_number(rep_cde.action_information3)
3627 ,0)) sum_zone4
3628 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3629 ,'51', fnd_number.canonical_to_number(rep_cde.action_information3)
3630 ,0)) sum_zone5
3631 ,SUM(DECODE(TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
3632 ,'1', fnd_number.canonical_to_number(rep_cde.action_information3)
3633 ,0)) sum_totals
3634 FROM pay_assignment_actions paa
3635 ,pay_action_information le_lu
3636 ,pay_action_information asg_act
3637 ,pay_action_information rep_cde
3638 ,pay_action_information cde_dtl
3639 WHERE paa.payroll_action_id = le_lu.action_context_id
3640 AND asg_act.action_context_type = 'AAP'
3641 AND asg_act.action_context_id = paa.assignment_action_id
3642 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
3643 AND asg_act.action_information1 = 'ASG_ACT_INFO'
3644 AND asg_act.action_information2 = le_lu.action_information2
3645 AND asg_act.action_information3 = le_lu.action_information4
3646 AND le_lu.action_context_type = 'PA'
3647 AND le_lu.action_context_id = l_payroll_action_id
3648 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
3649 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
3650 AND le_lu.action_information2 = p_legal_employer_id
3651 AND le_lu.action_information3 = p_si_status
3652 AND cde_dtl.action_context_type = 'PA'
3653 AND cde_dtl.action_context_id = le_lu.action_context_id
3654 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
3655 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
3656 AND cde_dtl.action_information2 = le_lu.action_information2
3657 AND cde_dtl.action_information3 = rep_cde.action_information2
3658 AND cde_dtl.action_information6 = 'Y'
3659 AND rep_cde.action_context_type = 'AAP'
3660 AND rep_cde.action_context_id = asg_act.action_context_id
3661 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
3662 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
3663 GROUP BY asg_act.action_information2
3664 ,le_lu.action_information3;
3665 --
3666 CURSOR csr_LE_SI_CODE_TOTAL_SUMMARY
3667 (l_payroll_action_id IN NUMBER
3668 ,p_legal_employer_id IN VARCHAR2
3669 ,p_si_status IN VARCHAR2) IS
3670 SELECT SUM(DECODE(asg_act.action_information7
3671 ,'N', fnd_number.canonical_to_number(rep_cde.action_information3)
3672 , 0)) a_earnings
3673 ,SUM(DECODE(asg_act.action_information7
3674 ,'Y', fnd_number.canonical_to_number(rep_cde.action_information3)
3675 , 0)) bl_earnings
3676 ,SUM(fnd_number.canonical_to_number(rep_cde.action_information3)) sum_earnings
3677 FROM pay_assignment_actions paa
3678 ,pay_action_information le_lu
3679 ,pay_action_information asg_act
3680 ,pay_action_information rep_cde
3681 ,pay_action_information cde_dtl
3682 WHERE paa.payroll_action_id = le_lu.action_context_id
3683 AND asg_act.action_context_type = 'AAP'
3684 AND asg_act.action_context_id = paa.assignment_action_id
3685 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
3686 AND asg_act.action_information1 = 'ASG_ACT_INFO'
3687 AND asg_act.action_information2 = le_lu.action_information2
3688 AND asg_act.action_information3 = le_lu.action_information4
3689 AND le_lu.action_context_type = 'PA'
3690 AND le_lu.action_context_id = l_payroll_action_id
3691 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
3692 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
3693 AND le_lu.action_information2 = p_legal_employer_id
3694 AND le_lu.action_information3 = p_si_status
3695 AND cde_dtl.action_context_type = 'PA'
3696 AND cde_dtl.action_context_id = le_lu.action_context_id
3697 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
3698 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
3699 AND cde_dtl.action_information2 = le_lu.action_information2
3700 AND cde_dtl.action_information3 = rep_cde.action_information2
3701 AND cde_dtl.action_information6 = 'Y'
3702 AND rep_cde.action_context_type = 'AAP'
3703 AND rep_cde.action_context_id = asg_act.action_context_id
3704 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
3705 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
3706 AND rep_cde.action_information2 NOT IN ('000','250','311','312','313','314','315','316','950') -- Changes 2007/2008
3707 GROUP BY asg_act.action_information2
3708 ,le_lu.action_information3;
3709 --
3710 CURSOR csr_LE_SI_CODE_TOTALS
3711 (l_payroll_action_id IN NUMBER
3712 ,p_legal_employer_id IN VARCHAR2
3713 ,p_si_status IN VARCHAR2) IS
3714 SELECT asg_act.action_information2 legal_employer_id
3715 ,le_lu.action_information3 si_status
3716 ,DECODE(cde_dtl.action_information4, 'Y', rep_cde.action_information2, 'TOTAL_OTHER_CODES') code
3717 ,SUM(fnd_number.canonical_to_number(rep_cde.action_information3)) amount
3718 FROM pay_assignment_actions paa
3719 ,pay_action_information le_lu
3720 ,pay_action_information asg_act
3721 ,pay_action_information rep_cde
3722 ,pay_action_information cde_dtl
3723 WHERE paa.payroll_action_id = le_lu.action_context_id
3724 AND asg_act.action_context_type = 'AAP'
3725 AND asg_act.action_context_id = paa.assignment_action_id
3726 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
3727 AND asg_act.action_information1 = 'ASG_ACT_INFO'
3728 AND asg_act.action_information2 = le_lu.action_information2
3729 AND asg_act.action_information3 = le_lu.action_information4
3730 AND le_lu.action_context_type = 'PA'
3731 AND le_lu.action_context_id = l_payroll_action_id
3732 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
3733 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
3734 AND le_lu.action_information2 = p_legal_employer_id
3735 AND le_lu.action_information3 = p_si_status
3736 AND cde_dtl.action_context_type = 'PA'
3737 AND cde_dtl.action_context_id = le_lu.action_context_id
3738 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
3739 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
3740 AND cde_dtl.action_information2 = le_lu.action_information2
3741 AND cde_dtl.action_information3 = rep_cde.action_information2
3742 AND rep_cde.action_context_type = 'AAP'
3743 AND rep_cde.action_context_id = asg_act.action_context_id
3744 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
3745 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
3746 GROUP BY asg_act.action_information2
3747 ,le_lu.action_information3
3748 ,DECODE(cde_dtl.action_information4, 'Y',rep_cde.action_information2, 'TOTAL_OTHER_CODES');
3749 --
3750 CURSOR csr_SI_STATUS IS
3751 SELECT lu.lookup_code si_status
3752 FROM hr_lookups lu
3753 WHERE lu.lookup_type = 'NO_LEGAL_EMP_SI_STATUS';
3754 --
3755 l_total_below_rep_limit NUMBER;
3756 l_xml_element_count NUMBER := 1;
3757 l_total_codes NUMBER;
3758 l_bg_id NUMBER;
3759 lg_format_mask VARCHAR2(40);
3760 l_payroll_action_id NUMBER;
3761 l_si_sts_rec csr_SI_STATUS%ROWTYPE;
3762 l_le_si_rec csr_LE_SI%ROWTYPE;
3763 l_le_si_code_rec csr_LE_SI_CODE_SUMMARY%ROWTYPE;
3764 l_le_si_code_total_rec csr_LE_SI_CODE_TOTAL_SUMMARY%ROWTYPE;
3765 l_le_si_bal_rec csr_LE_SI_BAL_SUMMARY%ROWTYPE;
3766 l_le_si_total_rec csr_LE_SI_CODE_TOTALS%ROWTYPE;
3767 l_net_emp_contr_bse NUMBER := 0;
3768 l_gross_emp_contr_bse NUMBER := 0;
3769 l_spcl_net_base NUMBER := 0;
3770 --
3771 BEGIN
3772 hr_utility.set_location('Entering ' || l_proc_name, 10);
3773 g_xml_element_table.DELETE;
3774 --
3775 IF p_payroll_action_id is null then
3776 BEGIN
3777 SELECT payroll_action_id
3778 into l_payroll_action_id
3779 from pay_payroll_actions ppa,
3780 fnd_conc_req_summary_v fcrs,
3781 fnd_conc_req_summary_v fcrs1
3782 WHERE fcrs.request_id = fnd_global.conc_request_id
3783 and fcrs.priority_request_id = fcrs1.priority_request_id
3784 and ppa.request_id between fcrs1.request_id and fcrs.request_id
3785 and ppa.request_id = fcrs1.request_id;
3786 EXCEPTION
3787 WHEN others then
3788 null;
3789 END;
3790 ELSE
3791 l_payroll_action_id := p_payroll_action_id;
3792 END IF;
3793 --
3794 -- get the currecnt BG's currency and mask to format the amount fields
3795 --
3796 fnd_profile.get('PER_BUSINESS_GROUP_ID', l_bg_id);
3797 set_currency_mask(l_bg_id, lg_format_mask);
3798 --
3799 --
3800 --
3801 g_xml_element_table(l_xml_element_count).tagname := 'EMPR_CONTR';
3802 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3803 l_xml_element_count := l_xml_element_count + 1;
3804 --
3805 -- Loop for each unique legal employer / SI status combination.
3806 --
3807 --
3808 OPEN csr_LE_SI
3809 (l_payroll_action_id);
3810 LOOP
3811 FETCH csr_LE_SI INTO l_le_si_rec;
3812 EXIT WHEN csr_LE_SI%NOTFOUND;
3813 --
3814 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
3815 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
3816 l_xml_element_count := l_xml_element_count + 1;
3817 --
3818 g_xml_element_table(l_xml_element_count).tagname := 'EFFECTIVE_DATE';
3819 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(l_le_si_rec.effective_date);
3820 l_xml_element_count := l_xml_element_count + 1;
3821 -- ORID-16513 - 2007/2008 Changes
3822 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE';
3823 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_tax_muncipality;
3824 l_xml_element_count := l_xml_element_count + 1;
3825 -- ORID -25795
3826 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_NAME';
3827 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.legal_employer_name;
3828 l_xml_element_count := l_xml_element_count + 1;
3829 -- ORID -21772
3830 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ORG_NUMBER';
3831 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.organization_number;
3832 l_xml_element_count := l_xml_element_count + 1;
3833 -- ORID-27602 - 2007/2008 Changes
3834 g_xml_element_table(l_xml_element_count).tagname := 'INDUSTRY_CODE';
3835 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.nace_code;
3836 l_xml_element_count := l_xml_element_count + 1;
3837 -- ORID 27603 Calculation Method - 2007/2008 Changes
3838 g_xml_element_table(l_xml_element_count).tagname := 'CALCULATION_METHOD';
3839 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.si_status;
3840 l_xml_element_count := l_xml_element_count + 1;
3841 -- ORID 27604 Economic Aid Received - 2007/2008 Changes
3842 g_xml_element_table(l_xml_element_count).tagname := 'ECONOMIC_AID';
3843 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_rec.le_economic_aid),lg_format_mask);
3844 l_xml_element_count := l_xml_element_count + 1;
3845 --
3846 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS1';
3847 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_addr1;
3848 l_xml_element_count := l_xml_element_count + 1;
3849 --
3850 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS2';
3851 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_addr2;
3852 l_xml_element_count := l_xml_element_count + 1;
3853 --
3854 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS3';
3855 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_addr3;
3856 l_xml_element_count := l_xml_element_count + 1;
3857 --
3858 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_POSTCODE1';
3859 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_postcode;
3860 l_xml_element_count := l_xml_element_count + 1;
3861 --
3862 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_POSTCODE2';
3863 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_postoffice;
3864 l_xml_element_count := l_xml_element_count + 1;
3865 --
3866 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE_NAME';
3867 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.tax_office_name;
3868 l_xml_element_count := l_xml_element_count + 1;
3869 --
3870 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE_ADDRESS1';
3871 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.to_addr1;
3872 l_xml_element_count := l_xml_element_count + 1;
3873 --
3874 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE_ADDRESS2';
3875 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.to_addr2;
3876 l_xml_element_count := l_xml_element_count + 1;
3877 --
3878 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE_ADDRESS3';
3879 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.to_addr3;
3880 l_xml_element_count := l_xml_element_count + 1;
3881 --
3882 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE_POSTCODE1';
3883 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.to_postcode;
3884 l_xml_element_count := l_xml_element_count + 1;
3885 --
3886 g_xml_element_table(l_xml_element_count).tagname := 'TAX_OFFICE_POSTCODE2';
3887 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.to_postoffice;
3888 l_xml_element_count := l_xml_element_count + 1;
3889 --
3890 --
3891 -- Loop through all 7 SI statuses.
3892 --
3893 OPEN csr_SI_STATUS;
3894 LOOP
3895 FETCH csr_SI_STATUS INTO l_si_sts_rec;
3896 EXIT WHEN csr_SI_STATUS%NOTFOUND;
3897 --
3898 g_xml_element_table(l_xml_element_count).tagname := l_si_sts_rec.si_status;
3899 --
3900 --
3901 -- Set to X for the SI status being reported on.
3902 --
3903 IF l_si_sts_rec.si_status = l_le_si_rec.si_status THEN
3904 g_xml_element_table(l_xml_element_count).tagvalue := 'X';
3905 ELSE
3906 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
3907 END IF;
3908 --
3909 l_xml_element_count := l_xml_element_count + 1;
3910 END LOOP;
3911 CLOSE csr_SI_STATUS;
3912 --
3913 --
3914 -- Fetch all balances for the legal employer / SI status combination.
3915 --
3916 OPEN csr_LE_SI_BAL_SUMMARY
3917 (l_payroll_action_id
3918 ,l_le_si_rec.legal_employer_id
3919 ,l_le_si_rec.si_status);
3920 FETCH csr_LE_SI_BAL_SUMMARY INTO l_le_si_bal_rec;
3921 CLOSE csr_LE_SI_BAL_SUMMARY;
3922 --
3923 g_xml_element_table(l_xml_element_count).tagname := 'EC_ZONE1';
3924 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_zone1),lg_format_mask);
3925 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3926 l_xml_element_count := l_xml_element_count + 1;
3927 --
3928 g_xml_element_table(l_xml_element_count).tagname := 'EC_ZONE2';
3929 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_zone2),lg_format_mask);
3930 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3931 l_xml_element_count := l_xml_element_count + 1;
3932 --
3933 g_xml_element_table(l_xml_element_count).tagname := 'EC_ZONE3';
3934 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_zone3),lg_format_mask);
3935 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3936 l_xml_element_count := l_xml_element_count + 1;
3937 --
3938 g_xml_element_table(l_xml_element_count).tagname := 'EC_ZONE4';
3939 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_zone4),lg_format_mask);
3940 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3941 l_xml_element_count := l_xml_element_count + 1;
3942 --
3943 g_xml_element_table(l_xml_element_count).tagname := 'EC_ZONE5';
3944 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_zone5),lg_format_mask);
3945 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3946 l_xml_element_count := l_xml_element_count + 1;
3947 --
3948 g_xml_element_table(l_xml_element_count).tagname := 'EC_TOTAL';
3949 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_total),lg_format_mask);
3950 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3951 l_xml_element_count := l_xml_element_count + 1;
3952 --
3953 g_xml_element_table(l_xml_element_count).tagname := 'EC_O62_ZONE1';
3954 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_o62_ni_zone1),lg_format_mask);
3955 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3956 l_xml_element_count := l_xml_element_count + 1;
3957 --
3958 g_xml_element_table(l_xml_element_count).tagname := 'EC_O62_ZONE2';
3959 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_o62_ni_zone2),lg_format_mask);
3960 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3961 l_xml_element_count := l_xml_element_count + 1;
3962 --
3963 g_xml_element_table(l_xml_element_count).tagname := 'EC_O62_ZONE3';
3964 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_o62_ni_zone3),lg_format_mask);
3965 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3966 l_xml_element_count := l_xml_element_count + 1;
3967 --
3968 g_xml_element_table(l_xml_element_count).tagname := 'EC_O62_ZONE4';
3969 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_o62_ni_zone4),lg_format_mask);
3970 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3971 l_xml_element_count := l_xml_element_count + 1;
3972 --
3973 g_xml_element_table(l_xml_element_count).tagname := 'EC_O62_ZONE5';
3974 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_o62_ni_zone5),lg_format_mask);
3975 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3976 l_xml_element_count := l_xml_element_count + 1;
3977 --
3978 g_xml_element_table(l_xml_element_count).tagname := 'EC_O62_TOTAL';
3979 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_o62_ni_total),lg_format_mask);
3980 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3981 l_xml_element_count := l_xml_element_count + 1;
3982 --
3983 -- Total witholding Tax
3984 --
3985 g_xml_element_table(l_xml_element_count).tagname := 'A_TAX';
3986 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.tax),lg_format_mask);
3987 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3988 l_xml_element_count := l_xml_element_count + 1;
3989 --
3990 -- ORID 22225 - Gross Base for Employees from USA/Canada
3991 --
3992 g_xml_element_table(l_xml_element_count).tagname := 'FE_PCT_BASE';
3993 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_spcl_pct_base),lg_format_mask);
3994 g_xml_element_table(l_xml_element_count).tagtype := 'A';
3995 l_xml_element_count := l_xml_element_count + 1;
3996 --
3997 g_xml_element_table(l_xml_element_count).tagname := 'FE_PCT';
3998 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.foreign_special_percentage),lg_format_mask);
3999 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4000 l_xml_element_count := l_xml_element_count + 1;
4001 --
4002 g_xml_element_table(l_xml_element_count).tagname := 'FE_PCT_AMOUNT';
4003 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_spcl_pct),lg_format_mask);
4004 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4005 l_xml_element_count := l_xml_element_count + 1;
4006 -- ORID 25415 Total number of months Foreign Employees on Monthly Rate
4007 g_xml_element_table(l_xml_element_count).tagname := 'FE_MONTHS';
4008 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_bal_rec.emp_contr_spcl / l_le_si_bal_rec.foreign_special_amount;
4009 l_xml_element_count := l_xml_element_count + 1;
4010 --
4011 g_xml_element_table(l_xml_element_count).tagname := 'FE_MONTHS_RATE';
4012 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.foreign_special_amount,lg_format_mask);
4013 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4014 l_xml_element_count := l_xml_element_count + 1;
4015 --
4016 g_xml_element_table(l_xml_element_count).tagname := 'FE_MONTHS_AMOUNT';
4017 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.emp_contr_spcl,lg_format_mask);
4018 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4019 l_xml_element_count := l_xml_element_count + 1;
4020 --
4021 --Reimbursement Base Employees From USA/Canada ORID-27612 - 2007/2008 Changes
4022 --
4023 g_xml_element_table(l_xml_element_count).tagname := 'FE_REIMBURSEMENT_BASE';
4024 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_reimb_spcl_base),lg_format_mask);
4025 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4026 l_xml_element_count := l_xml_element_count + 1;
4027
4028 -- Net Base for Employees from USA/Canada - 2007/2008 Changes
4029 l_spcl_net_base := nvl(l_le_si_bal_rec.emp_contr_spcl_pct_base,0) - nvl(l_le_si_bal_rec.emp_contr_reimb_spcl_base,0);
4030 g_xml_element_table(l_xml_element_count).tagname := 'FE_NET_BASE';
4031 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_spcl_net_base,lg_format_mask);
4032 l_xml_element_count := l_xml_element_count + 1;
4033 --ORID 28103 Total EC Base - 2007/2008 Changes
4034 g_xml_element_table(l_xml_element_count).tagname := 'TOT_EC_BASE';
4035 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.emp_contr_ni_total),lg_format_mask);
4036 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4037 l_xml_element_count := l_xml_element_count + 1;
4038 -- ORID 28104 Total Pension Base
4039 g_xml_element_table(l_xml_element_count).tagname := 'TOT_PEN_BASE';
4040 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_bal_rec.tot_pension_bse),lg_format_mask);
4041 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4042 l_xml_element_count := l_xml_element_count + 1;
4043 --
4044 --Gross Employer Contribution Base - 2007/2008 Changes
4045 --
4046 l_gross_emp_contr_bse := nvl(l_le_si_bal_rec.emp_contr_ni_total,0) + nvl(l_le_si_bal_rec.tot_pension_bse,0);
4047 g_xml_element_table(l_xml_element_count).tagname := 'GROSS_EMP_BASE';
4048 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_gross_emp_contr_bse,lg_format_mask);
4049 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4050 l_xml_element_count := l_xml_element_count + 1;
4051 --
4052 --
4053 -- Total Reimbursement base ORID 28105 - 2007/2008 Changes
4054 --
4055 g_xml_element_table(l_xml_element_count).tagname := 'TOT_REIMB_BASE';
4056 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.tot_reimb_bse,lg_format_mask);
4057 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4058 l_xml_element_count := l_xml_element_count + 1;
4059 --
4060 -- Net Employer Contribution Base - 2007/2008 Changes
4061 --
4062 l_net_emp_contr_bse := l_gross_emp_contr_bse - nvl(l_le_si_bal_rec.tot_reimb_bse,0) ;
4063 --
4064 g_xml_element_table(l_xml_element_count).tagname := 'TOT_NET_BASE';
4065 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_net_emp_contr_bse,lg_format_mask);
4066 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4067 l_xml_element_count := l_xml_element_count + 1;
4068 --
4069 -- Loop through the reporting code information.
4070 --
4071 OPEN csr_LE_SI_CODE_SUMMARY
4072 (l_payroll_action_id
4073 ,l_le_si_rec.legal_employer_id
4074 ,l_le_si_rec.si_status);
4075 FETCH csr_LE_SI_CODE_SUMMARY INTO l_le_si_code_rec;
4076 CLOSE csr_LE_SI_CODE_SUMMARY;
4077 --
4078 OPEN csr_LE_SI_CODE_TOTAL_SUMMARY
4079 (l_payroll_action_id
4080 ,l_le_si_rec.legal_employer_id
4081 ,l_le_si_rec.si_status);
4082 FETCH csr_LE_SI_CODE_TOTAL_SUMMARY INTO l_le_si_code_total_rec;
4083 CLOSE csr_LE_SI_CODE_TOTAL_SUMMARY;
4084 --
4085 g_xml_element_table(l_xml_element_count).tagname := 'A_ROW';
4086 g_xml_element_table(l_xml_element_count).tagvalue := 'A';
4087 l_xml_element_count := l_xml_element_count + 1;
4088 --
4089 -- Number of Certificates
4090 --
4091 g_xml_element_table(l_xml_element_count).tagname := 'A_CERTIFICATES';
4092 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_code_rec.certificates;
4093 l_xml_element_count := l_xml_element_count + 1;
4094 --
4095 g_xml_element_table(l_xml_element_count).tagname := 'A_EARNINGS';
4096 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_total_rec.a_earnings,lg_format_mask);
4097 l_xml_element_count := l_xml_element_count + 1;
4098 --
4099 g_xml_element_table(l_xml_element_count).tagname := 'A_ZONE1';
4100 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.a_zone1,lg_format_mask);
4101 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4102 l_xml_element_count := l_xml_element_count + 1;
4103 --
4104 g_xml_element_table(l_xml_element_count).tagname := 'A_ZONE2';
4105 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.a_zone2,lg_format_mask);
4106 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4107 l_xml_element_count := l_xml_element_count + 1;
4108 --
4109 g_xml_element_table(l_xml_element_count).tagname := 'A_ZONE3';
4110 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.a_zone3,lg_format_mask);
4111 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4112 l_xml_element_count := l_xml_element_count + 1;
4113 --
4114 g_xml_element_table(l_xml_element_count).tagname := 'A_ZONE4';
4115 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.a_zone4,lg_format_mask);
4116 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4117 l_xml_element_count := l_xml_element_count + 1;
4118 --
4119 g_xml_element_table(l_xml_element_count).tagname := 'A_ZONE5';
4120 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.a_zone5,lg_format_mask);
4121 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4122 l_xml_element_count := l_xml_element_count + 1;
4123 --
4124 g_xml_element_table(l_xml_element_count).tagname := 'B_ROW';
4125 g_xml_element_table(l_xml_element_count).tagvalue := 'B';
4126 l_xml_element_count := l_xml_element_count + 1;
4127
4128 --
4129 g_xml_element_table(l_xml_element_count).tagname := 'BL_EARNINGS';
4130 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_total_rec.bl_earnings,lg_format_mask);
4131 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4132 l_xml_element_count := l_xml_element_count + 1;
4133 --
4134 g_xml_element_table(l_xml_element_count).tagname := 'BL_ZONE1';
4135 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.bl_zone1,lg_format_mask);
4136 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4137 l_xml_element_count := l_xml_element_count + 1;
4138 --
4139 g_xml_element_table(l_xml_element_count).tagname := 'BL_ZONE2';
4140 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.bl_zone2,lg_format_mask);
4141 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4142 l_xml_element_count := l_xml_element_count + 1;
4143 --
4144 g_xml_element_table(l_xml_element_count).tagname := 'BL_ZONE3';
4145 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.bl_zone3,lg_format_mask);
4146 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4147 l_xml_element_count := l_xml_element_count + 1;
4148 --
4149 g_xml_element_table(l_xml_element_count).tagname := 'BL_ZONE4';
4150 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.bl_zone4,lg_format_mask);
4151 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4152 l_xml_element_count := l_xml_element_count + 1;
4153 --
4154 g_xml_element_table(l_xml_element_count).tagname := 'BL_ZONE5';
4155 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.bl_zone5,lg_format_mask);
4156 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4157 l_xml_element_count := l_xml_element_count + 1;
4158 --
4159 -- Total Earnings Below Reporting Limit 2007/2008 changes
4160 l_total_below_rep_limit := nvl(l_le_si_code_rec.bl_zone1,0)+ nvl(l_le_si_code_rec.bl_zone2,0)+ nvl(l_le_si_code_rec.bl_zone3,0)
4161 + nvl(l_le_si_code_rec.bl_zone4,0)+ nvl(l_le_si_code_rec.bl_zone2,0);
4162 --
4163 g_xml_element_table(l_xml_element_count).tagname := 'TOT_EAR_BELOW_REP_LIMIT';
4164 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_total_below_rep_limit,lg_format_mask);
4165 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4166 l_xml_element_count := l_xml_element_count + 1;
4167 --
4168 -- Total Reportable Earnings according to Certificates
4169 --
4170 g_xml_element_table(l_xml_element_count).tagname := 'SUM_EARNINGS';
4171 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_total_rec.sum_earnings,lg_format_mask);
4172 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4173 l_xml_element_count := l_xml_element_count + 1;
4174 --
4175 g_xml_element_table(l_xml_element_count).tagname := 'SUM_ZONE1';
4176 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.sum_zone1,lg_format_mask);
4177 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4178 l_xml_element_count := l_xml_element_count + 1;
4179 --
4180 g_xml_element_table(l_xml_element_count).tagname := 'SUM_ZONE2';
4181 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.sum_zone2,lg_format_mask);
4182 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4183 l_xml_element_count := l_xml_element_count + 1;
4184 --
4185 g_xml_element_table(l_xml_element_count).tagname := 'SUM_ZONE3';
4186 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.sum_zone3,lg_format_mask);
4187 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4188 l_xml_element_count := l_xml_element_count + 1;
4189 --
4190 g_xml_element_table(l_xml_element_count).tagname := 'SUM_ZONE4';
4191 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.sum_zone4,lg_format_mask);
4192 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4193 l_xml_element_count := l_xml_element_count + 1;
4194 --
4195 g_xml_element_table(l_xml_element_count).tagname := 'SUM_ZONE5';
4196 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.sum_zone5,lg_format_mask);
4197 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4198 l_xml_element_count := l_xml_element_count + 1;
4199 --
4200 g_xml_element_table(l_xml_element_count).tagname := 'SUM_TOTALS';
4201 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_code_rec.sum_totals,lg_format_mask);
4202 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4203 l_xml_element_count := l_xml_element_count + 1;
4204 --
4205 g_fixed_code(1).fixed_code := '111-A';
4206 g_fixed_code(1).status := 0;
4207 g_fixed_code(2).fixed_code := '112-A';
4208 g_fixed_code(2).status := 0;
4209 g_fixed_code(3).fixed_code := '116-A';
4210 g_fixed_code(3).status := 0;
4211 g_fixed_code(4).fixed_code := '211';
4212 g_fixed_code(4).status := 0;
4213 g_fixed_code(5).fixed_code := '311';
4214 g_fixed_code(5).status := 0;
4215 g_fixed_code(6).fixed_code := '312';
4216 g_fixed_code(6).status := 0;
4217 g_fixed_code(7).fixed_code := '313';
4218 g_fixed_code(7).status := 0;
4219 g_fixed_code(8).fixed_code := '314';
4220 g_fixed_code(8).status := 0;
4221 g_fixed_code(9).fixed_code := '316';
4222 g_fixed_code(9).status := 0;
4223 g_fixed_code(10).fixed_code := '401';
4224 g_fixed_code(10).status := 0;
4225 g_fixed_code(11).fixed_code := '711';
4226 g_fixed_code(11).status := 0;
4227 g_fixed_code(12).fixed_code := '950';
4228 g_fixed_code(12).status := 0;
4229 g_fixed_code(13).fixed_code :='TOTAL_OTHER_CODES';
4230 g_fixed_code(13).status := 0;
4231 --
4232 --
4233 -- Loop through all fixed codes.
4234 --
4235 l_total_codes := 0;
4236 OPEN csr_LE_SI_CODE_TOTALS
4237 (l_payroll_action_id
4238 ,l_le_si_rec.legal_employer_id
4239 ,l_le_si_rec.si_status);
4240 LOOP
4241 FETCH csr_LE_SI_CODE_TOTALS INTO l_le_si_total_rec;
4242 EXIT WHEN csr_LE_SI_CODE_TOTALS%NOTFOUND;
4243 --
4244 --
4245 -- XML TAG name is based on reporting code.
4246 --
4247 g_xml_element_table(l_xml_element_count).tagname := '_' || REPLACE(l_le_si_total_rec.code,'-');
4248 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_total_rec.amount,lg_format_mask);
4249 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4250 l_xml_element_count := l_xml_element_count + 1;
4251 --
4252 FOR rec_fixed_code in 1..13 LOOP
4253 --
4254 IF g_fixed_code(rec_fixed_code).fixed_code = l_le_si_total_rec.code THEN
4255 g_fixed_code(rec_fixed_code).status := 1;
4256 EXIT;
4257 END IF;
4258 --
4259 END LOOP;
4260 --
4261 l_total_codes := l_total_codes + nvl(l_le_si_total_rec.amount,0);
4262 END LOOP;
4263 CLOSE csr_LE_SI_CODE_TOTALS;
4264 --
4265 FOR rec_fixed_code in 1..13 LOOP
4266 --
4267 IF g_fixed_code(rec_fixed_code).status = 0 THEN
4268 --
4269 g_fixed_code(rec_fixed_code).status := 1;
4270 g_xml_element_table(l_xml_element_count).tagname := '_' || REPLACE(g_fixed_code(rec_fixed_code).fixed_code,'-');
4271 g_xml_element_table(l_xml_element_count).tagvalue := to_char(0,lg_format_mask);
4272 g_xml_element_table(l_xml_element_count).tagtype := 'A';
4273 l_xml_element_count := l_xml_element_count + 1;
4274 --
4275 END IF;
4276 --
4277 END LOOP;
4278 --
4279 g_xml_element_table(l_xml_element_count).tagname := 'PROMPT_111A';
4280 g_xml_element_table(l_xml_element_count).tagvalue := '111A';
4281 l_xml_element_count := l_xml_element_count + 1;
4282 --
4283 g_xml_element_table(l_xml_element_count).tagname := 'PROMPT_112A';
4284 g_xml_element_table(l_xml_element_count).tagvalue := '112A';
4285 l_xml_element_count := l_xml_element_count + 1;
4286 --
4287 g_xml_element_table(l_xml_element_count).tagname := 'PROMPT_116A';
4288 g_xml_element_table(l_xml_element_count).tagvalue := '116A';
4289 l_xml_element_count := l_xml_element_count + 1;
4290 --
4291 g_xml_element_table(l_xml_element_count).tagname := 'TOTAL_ALL_CODES';
4292 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_total_codes,lg_format_mask);
4293 l_xml_element_count := l_xml_element_count + 1;
4294 --
4295 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
4296 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4297 l_xml_element_count := l_xml_element_count + 1;
4298 END LOOP;
4299 CLOSE csr_LE_SI;
4300 --
4301 g_xml_element_table(l_xml_element_count).tagname := 'EMPR_CONTR';
4302 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4303 l_xml_element_count := l_xml_element_count + 1;
4304 --
4305 write_to_clob(p_xml);
4306 --
4307 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
4308 END get_employer_contribution_data;
4309 --
4310 --
4311 --
4312 -- -----------------------------------------------------------------------------
4313 -- Generates XML for the Norwegian End of Year Employer Contribution Summary
4314 -- report. Changes -2007/2008
4315 -- -----------------------------------------------------------------------------
4316 --
4317 PROCEDURE get_employer_contribution_xml
4318 (p_business_group_id IN NUMBER
4319 ,p_payroll_action_id IN VARCHAR2
4320 ,p_template_name IN VARCHAR2
4321 ,p_xml OUT NOCOPY CLOB) IS
4322 --
4323 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.get_employer_contribution_xml';
4324 --
4325 -- Cursor to get the Values for the NI Zones and the Tax Municipal Details 2007/08 changes
4326 --
4327 CURSOR csr_LE_SI_LU_TM_INFO
4328 (l_payroll_action_id IN NUMBER) IS
4329 SELECT DISTINCT
4330 le_lu_tm.action_information3 si_status
4331 ,le_lu_tm.action_information4 local_unit_id
4332 ,le_lu_tm.action_information5 local_unit
4333 ,le_lu_tm.action_information6 tax_municipality_id
4334 ,le_lu_tm.action_information7 tax_municipality
4335 ,le_lu_tm.action_information8 ni_zone_arc
4336 ,fnd_number.canonical_to_number(le_lu_tm.action_information9) emp_contr_bse
4337 ,fnd_number.canonical_to_number(le_lu_tm.action_information10) reimb_bse
4338 ,fnd_number.canonical_to_number(le_lu_tm.action_information11) pension_bse
4339 FROM pay_action_information le_lu_tm
4340 WHERE le_lu_tm.action_context_type = 'PA'
4341 AND le_lu_tm.action_context_id = l_payroll_action_id
4342 AND le_lu_tm.action_information_category = 'EMEA REPORT INFORMATION'
4343 AND le_lu_tm.action_information1 = 'LE_SI_LU_TM_INFO';
4344 --
4345 CURSOR csr_LE_SI
4346 (l_payroll_action_id IN NUMBER) IS
4347 SELECT DISTINCT
4348 le_lu.action_information2 legal_employer_id
4349 ,le_lu.action_information3 si_status
4350 ,le_lu.action_information5 nace_code -- changes 2007/08
4351 ,leg_emp.action_information3 legal_employer_name
4352 ,leg_emp.action_information4 organization_number
4353 ,leg_emp.action_information5 le_addr1
4354 ,leg_emp.action_information6 le_addr2
4355 ,leg_emp.action_information7 le_addr3
4356 ,leg_emp.action_information8 le_postcode
4357 ,leg_emp.action_information9 le_postoffice
4358 ,leg_emp.action_information10 tax_office_name
4359 ,leg_emp.action_information11 to_addr1
4360 ,leg_emp.action_information12 to_addr2
4361 ,leg_emp.action_information13 to_addr3
4362 ,leg_emp.action_information14 to_postcode
4363 ,leg_emp.action_information15 to_postoffice
4364 ,leg_emp.action_information16 le_tax_muncipality -- 2007/2008 Changes
4365 ,leg_emp.action_information17 le_economic_aid -- 2007/2008 Changes
4366 ,leg_emp.effective_date effective_date
4367 FROM pay_action_information le_lu
4368 ,pay_action_information leg_emp
4369 WHERE le_lu.action_context_type = 'PA'
4370 AND le_lu.action_context_id = l_payroll_action_id
4371 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
4372 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
4373 AND leg_emp.action_context_type = 'PA'
4374 AND leg_emp.action_context_id = le_lu.action_context_id
4375 AND leg_emp.action_information_category = 'EMEA REPORT INFORMATION'
4376 AND leg_emp.action_information1 = 'LEG_EMP_INFO'
4377 AND leg_emp.action_information2 = le_lu.action_information2;
4378 --
4379 CURSOR csr_LE_SI_BAL_SUMMARY
4380 (l_payroll_action_id IN NUMBER
4381 ,p_legal_employer_id IN VARCHAR2
4382 ,p_si_status IN VARCHAR2) IS
4383 SELECT fnd_number.canonical_to_number(le_si_bals.action_information4) emp_contr_ni_zone1
4384 ,fnd_number.canonical_to_number(le_si_bals.action_information5) emp_contr_ni_zone2
4385 ,fnd_number.canonical_to_number(le_si_bals.action_information6) emp_contr_ni_zone3
4386 ,fnd_number.canonical_to_number(le_si_bals.action_information7) emp_contr_ni_zone4
4387 ,fnd_number.canonical_to_number(le_si_bals.action_information8) emp_contr_ni_zone5
4388 ,fnd_number.canonical_to_number(le_si_bals.action_information9) emp_contr_ni_total
4389 ,fnd_number.canonical_to_number(le_si_bals.action_information10) emp_contr_o62_ni_zone1
4390 ,fnd_number.canonical_to_number(le_si_bals.action_information11) emp_contr_o62_ni_zone2
4391 ,fnd_number.canonical_to_number(le_si_bals.action_information12) emp_contr_o62_ni_zone3
4392 ,fnd_number.canonical_to_number(le_si_bals.action_information13) emp_contr_o62_ni_zone4
4393 ,fnd_number.canonical_to_number(le_si_bals.action_information14) emp_contr_o62_ni_zone5
4394 ,fnd_number.canonical_to_number(le_si_bals.action_information15) emp_contr_o62_ni_total
4395 ,fnd_number.canonical_to_number(le_si_bals.action_information16) tax
4396 ,fnd_number.canonical_to_number(le_si_bals.action_information17) emp_contr_spcl_pct_base
4397 ,fnd_number.canonical_to_number(le_si_bals.action_information18) emp_contr_spcl_pct
4398 ,fnd_number.canonical_to_number(le_si_bals.action_information19) emp_contr_spcl
4399 ,fnd_number.canonical_to_number(le_si_bals.action_information20) foreign_special_percentage
4400 ,fnd_number.canonical_to_number(le_si_bals.action_information21) foreign_special_amount
4401 ,fnd_number.canonical_to_number(le_si_bals.action_information22) emp_contr_reimb_spcl_base --2007/2008 changes
4402 ,fnd_number.canonical_to_number(le_si_bals.action_information23) tot_reimb_bse --2007/2008 changes
4403 ,fnd_number.canonical_to_number(le_si_bals.action_information24) tot_pension_bse -- 2007/2008 Changes
4404 FROM pay_action_information le_si_bals
4405 WHERE le_si_bals.action_context_type = 'PA'
4406 AND le_si_bals.action_context_id = l_payroll_action_id
4407 AND le_si_bals.action_information_category = 'EMEA REPORT INFORMATION'
4408 AND le_si_bals.action_information1 = 'LE_SI_BALS'
4409 AND le_si_bals.action_information2 = p_legal_employer_id
4410 AND le_si_bals.action_information3 = p_si_status;
4411 --
4412 CURSOR csr_LE_SI_CODE_SUMMARY
4413 (l_payroll_action_id IN NUMBER
4414 ,p_legal_employer_id IN VARCHAR2
4415 ,p_si_status IN VARCHAR2) IS
4416 SELECT COUNT (DISTINCT asg_act.action_information5) certificates
4417 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4418 ,'1N1', fnd_number.canonical_to_number(rep_cde.action_information3)
4419 ,0)) a_zone1
4420 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4421 ,'2N1', fnd_number.canonical_to_number(rep_cde.action_information3)
4422 ,0)) a_zone2
4423 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4424 ,'3N1', fnd_number.canonical_to_number(rep_cde.action_information3)
4425 ,0)) a_zone3
4426 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4427 ,'4N1', fnd_number.canonical_to_number(rep_cde.action_information3)
4428 ,0)) a_zone4
4429 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4430 ,'5N1', fnd_number.canonical_to_number(rep_cde.action_information3)
4431 ,0)) a_zone5
4432 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4433 ,'1Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
4434 ,0)) bl_zone1
4435 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4436 ,'2Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
4437 ,0)) bl_zone2
4438 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4439 ,'3Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
4440 ,0)) bl_zone3
4441 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4442 ,'4Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
4443 ,0)) bl_zone4
4444 ,SUM(DECODE(asg_act.action_information4 || asg_act.action_information7 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4445 ,'5Y1', fnd_number.canonical_to_number(rep_cde.action_information3)
4446 ,0)) bl_zone5
4447 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4448 ,'11', fnd_number.canonical_to_number(rep_cde.action_information3)
4449 ,0)) sum_zone1
4450 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4451 ,'21', fnd_number.canonical_to_number(rep_cde.action_information3)
4452 ,0)) sum_zone2
4453 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4454 ,'31', fnd_number.canonical_to_number(rep_cde.action_information3)
4455 ,0)) sum_zone3
4456 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4457 ,'41', fnd_number.canonical_to_number(rep_cde.action_information3)
4458 ,0)) sum_zone4
4459 ,SUM(DECODE(asg_act.action_information4 || TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4460 ,'51', fnd_number.canonical_to_number(rep_cde.action_information3)
4461 ,0)) sum_zone5
4462 ,SUM(DECODE(TO_CHAR(SIGN(INSTR(rep_cde.action_information2, 'A')))
4463 ,'1', fnd_number.canonical_to_number(rep_cde.action_information3)
4464 ,0)) sum_totals
4465 FROM pay_assignment_actions paa
4466 ,pay_action_information le_lu
4467 ,pay_action_information asg_act
4468 ,pay_action_information rep_cde
4469 ,pay_action_information cde_dtl
4470 WHERE paa.payroll_action_id = le_lu.action_context_id
4471 AND asg_act.action_context_type = 'AAP'
4472 AND asg_act.action_context_id = paa.assignment_action_id
4473 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
4474 AND asg_act.action_information1 = 'ASG_ACT_INFO'
4475 AND asg_act.action_information2 = le_lu.action_information2
4476 AND asg_act.action_information3 = le_lu.action_information4
4477 AND le_lu.action_context_type = 'PA'
4478 AND le_lu.action_context_id = l_payroll_action_id
4479 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
4480 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
4481 AND le_lu.action_information2 = p_legal_employer_id
4482 AND le_lu.action_information3 = p_si_status
4483 AND cde_dtl.action_context_type = 'PA'
4484 AND cde_dtl.action_context_id = le_lu.action_context_id
4485 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
4486 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
4487 AND cde_dtl.action_information2 = le_lu.action_information2
4488 AND cde_dtl.action_information3 = rep_cde.action_information2
4489 AND cde_dtl.action_information6 = 'Y'
4490 AND rep_cde.action_context_type = 'AAP'
4491 AND rep_cde.action_context_id = asg_act.action_context_id
4492 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
4493 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
4494 GROUP BY asg_act.action_information2
4495 ,le_lu.action_information3;
4496 --
4497 CURSOR csr_LE_SI_CODE_TOTAL_SUMMARY
4498 (l_payroll_action_id IN NUMBER
4499 ,p_legal_employer_id IN VARCHAR2
4500 ,p_si_status IN VARCHAR2) IS
4501 SELECT SUM(DECODE(asg_act.action_information7
4502 ,'N', fnd_number.canonical_to_number(rep_cde.action_information3)
4503 , 0)) a_earnings
4504 ,SUM(DECODE(asg_act.action_information7
4505 ,'Y', fnd_number.canonical_to_number(rep_cde.action_information3)
4506 , 0)) bl_earnings
4507 ,SUM(fnd_number.canonical_to_number(rep_cde.action_information3)) sum_earnings
4508 FROM pay_assignment_actions paa
4509 ,pay_action_information le_lu
4510 ,pay_action_information asg_act
4511 ,pay_action_information rep_cde
4512 ,pay_action_information cde_dtl
4513 WHERE paa.payroll_action_id = le_lu.action_context_id
4514 AND asg_act.action_context_type = 'AAP'
4515 AND asg_act.action_context_id = paa.assignment_action_id
4516 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
4517 AND asg_act.action_information1 = 'ASG_ACT_INFO'
4518 AND asg_act.action_information2 = le_lu.action_information2
4519 AND asg_act.action_information3 = le_lu.action_information4
4520 AND le_lu.action_context_type = 'PA'
4521 AND le_lu.action_context_id = l_payroll_action_id
4522 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
4523 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
4524 AND le_lu.action_information2 = p_legal_employer_id
4525 AND le_lu.action_information3 = p_si_status
4526 AND cde_dtl.action_context_type = 'PA'
4527 AND cde_dtl.action_context_id = le_lu.action_context_id
4528 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
4529 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
4530 AND cde_dtl.action_information2 = le_lu.action_information2
4531 AND cde_dtl.action_information3 = rep_cde.action_information2
4532 AND cde_dtl.action_information6 = 'Y'
4533 AND rep_cde.action_context_type = 'AAP'
4534 AND rep_cde.action_context_id = asg_act.action_context_id
4535 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
4536 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
4537 AND rep_cde.action_information2 NOT IN ('000','250','311','316','950')
4538 GROUP BY asg_act.action_information2
4539 ,le_lu.action_information3;
4540 --
4541 CURSOR csr_LE_SI_CODE_TOTALS
4542 (l_payroll_action_id IN NUMBER
4543 ,p_legal_employer_id IN VARCHAR2
4544 ,p_si_status IN VARCHAR2) IS
4545 SELECT asg_act.action_information2 legal_employer_id
4546 ,le_lu.action_information3 si_status
4547 ,DECODE(cde_dtl.action_information4, 'Y', rep_cde.action_information2, 'TOTAL_OTHER_CODES') code
4548 ,SUM(fnd_number.canonical_to_number(rep_cde.action_information3)) amount
4549 FROM pay_assignment_actions paa
4550 ,pay_action_information le_lu
4551 ,pay_action_information asg_act
4552 ,pay_action_information rep_cde
4553 ,pay_action_information cde_dtl
4554 WHERE paa.payroll_action_id = le_lu.action_context_id
4555 AND asg_act.action_context_type = 'AAP'
4556 AND asg_act.action_context_id = paa.assignment_action_id
4557 AND asg_act.action_information_category = 'EMEA REPORT INFORMATION'
4558 AND asg_act.action_information1 = 'ASG_ACT_INFO'
4559 AND asg_act.action_information2 = le_lu.action_information2
4560 AND asg_act.action_information3 = le_lu.action_information4
4561 AND le_lu.action_context_type = 'PA'
4562 AND le_lu.action_context_id = l_payroll_action_id
4563 AND le_lu.action_information_category = 'EMEA REPORT INFORMATION'
4564 AND le_lu.action_information1 = 'LE_SI_LU_INFO'
4565 AND le_lu.action_information2 = p_legal_employer_id
4566 AND le_lu.action_information3 = p_si_status
4567 AND cde_dtl.action_context_type = 'PA'
4568 AND cde_dtl.action_context_id = le_lu.action_context_id
4569 AND cde_dtl.action_information_category = 'EMEA REPORT INFORMATION'
4570 AND cde_dtl.action_information1 = 'REP_CODE_DTLS'
4571 AND cde_dtl.action_information2 = le_lu.action_information2
4572 AND cde_dtl.action_information3 = rep_cde.action_information2
4573 AND rep_cde.action_context_type = 'AAP'
4574 AND rep_cde.action_context_id = asg_act.action_context_id
4575 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
4576 AND rep_cde.action_information1 = 'ASG_REP_CODE_INFO'
4577 GROUP BY asg_act.action_information2
4578 ,le_lu.action_information3
4579 ,DECODE(cde_dtl.action_information4, 'Y',rep_cde.action_information2, 'TOTAL_OTHER_CODES');
4580 --
4581 CURSOR csr_SI_STATUS IS
4582 SELECT lu.lookup_code si_status
4583 FROM hr_lookups lu
4584 WHERE lu.lookup_type = 'NO_LEGAL_EMP_SI_STATUS';
4585 --
4586 l_total_below_rep_limit NUMBER;
4587 l_xml_element_count NUMBER := 1;
4588 l_total_codes NUMBER;
4589 l_bg_id NUMBER;
4590 lg_format_mask VARCHAR2(40);
4591 l_payroll_action_id NUMBER;
4592 l_si_sts_rec csr_SI_STATUS%ROWTYPE;
4593 l_le_si_rec csr_LE_SI%ROWTYPE;
4594 l_le_si_code_rec csr_LE_SI_CODE_SUMMARY%ROWTYPE;
4595 l_le_si_code_total_rec csr_LE_SI_CODE_TOTAL_SUMMARY%ROWTYPE;
4596 l_le_si_bal_rec csr_LE_SI_BAL_SUMMARY%ROWTYPE;
4597 l_le_si_total_rec csr_LE_SI_CODE_TOTALS%ROWTYPE;
4598 l_net_emp_contr_bse NUMBER := 0;
4599 l_gross_emp_contr_bse NUMBER := 0;
4600 --
4601 BEGIN
4602 hr_utility.set_location('Entering ' || l_proc_name, 10);
4603 g_xml_element_table.DELETE;
4604 --
4605 IF p_payroll_action_id is null then
4606 BEGIN
4607 SELECT payroll_action_id
4608 into l_payroll_action_id
4609 from pay_payroll_actions ppa,
4610 fnd_conc_req_summary_v fcrs,
4611 fnd_conc_req_summary_v fcrs1
4612 WHERE fcrs.request_id = fnd_global.conc_request_id
4613 and fcrs.priority_request_id = fcrs1.priority_request_id
4614 and ppa.request_id between fcrs1.request_id and fcrs.request_id
4615 and ppa.request_id = fcrs1.request_id;
4616 EXCEPTION
4617 WHEN others then
4618 null;
4619 END;
4620 ELSE
4621 l_payroll_action_id := p_payroll_action_id;
4622 END IF;
4623 --
4624 -- get the currecnt BG's currency and mask to format the amount fields
4625 --
4626 fnd_profile.get('PER_BUSINESS_GROUP_ID', l_bg_id);
4627 set_currency_mask(l_bg_id, lg_format_mask);
4628 --
4629 -- Loop for each unique legal employer / SI status combination.
4630 --
4631 ---------------------------------------------------------------------------------------------------------
4632 -- Code for XML generation for Employee Summary w.r.t 2007-2008
4633 -----------------------------------------------------------------------------------------------------------
4634 --
4635 g_xml_element_table(l_xml_element_count).tagname := 'Skjema';
4636 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4637 g_xml_element_table(l_xml_element_count).tagattrb := 'tittel= "Lnns- og trekkoppgave" gruppeid="93" spesifikasjonsnummer="7008" skjemanummer="210" etatid="974761076" blankettnummer="RF-1015"';
4638 l_xml_element_count := l_xml_element_count + 1;
4639 --
4640 OPEN csr_LE_SI
4641 (l_payroll_action_id);
4642 LOOP
4643 FETCH csr_LE_SI INTO l_le_si_rec;
4644 EXIT WHEN csr_LE_SI%NOTFOUND;
4645 --
4646 --
4647 --
4648 g_xml_element_table(l_xml_element_count).tagname := 'Innledning-grp-5749';
4649 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4650 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5749"';
4651 l_xml_element_count := l_xml_element_count + 1;
4652 --
4653 --
4654 --
4655 g_xml_element_table(l_xml_element_count).tagname := 'TypeOppgave-grp-5747';
4656 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4657 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5747"';
4658 l_xml_element_count := l_xml_element_count + 1;
4659 --
4660 g_xml_element_table(l_xml_element_count).tagname := 'OppgaveEndringsoppgave-datadef-21819';
4661 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
4662 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="21819"';
4663 l_xml_element_count := l_xml_element_count + 1;
4664 --
4665 g_xml_element_table(l_xml_element_count).tagname := 'TypeOppgave-grp-5747';
4666 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4667 l_xml_element_count := l_xml_element_count + 1;
4668 --
4669 --
4670 --
4671 g_xml_element_table(l_xml_element_count).tagname := 'Skatteoppkrever-grp-5748';
4672 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4673 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5748"';
4674 l_xml_element_count := l_xml_element_count + 1;
4675 --
4676 g_xml_element_table(l_xml_element_count).tagname := 'SkatteoppkreverKommuneNummer-datadef-16513';
4677 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_tax_muncipality;
4678 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="16513"';
4679 l_xml_element_count := l_xml_element_count + 1;
4680 --
4681 g_xml_element_table(l_xml_element_count).tagname := 'Skatteoppkrever-grp-5748';
4682 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4683 l_xml_element_count := l_xml_element_count + 1;
4684 --
4685 --
4686 --Legal Employer Details
4687 --
4688 g_xml_element_table(l_xml_element_count).tagname := 'Arbeidsgiver-grp-5750';
4689 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4690 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5750"';
4691 l_xml_element_count := l_xml_element_count + 1;
4692 --
4693 -- Organization Number
4694 --
4695 g_xml_element_table(l_xml_element_count).tagname := 'RapporteringsenhetOrganisasjonsnummer-datadef-21772';
4696 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.organization_number;
4697 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="21772"';
4698 l_xml_element_count := l_xml_element_count + 1;
4699 --
4700 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverFodselsnummer-datadef-26';
4701 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
4702 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="26"';
4703 l_xml_element_count := l_xml_element_count + 1;
4704 --
4705 -- Legal Employer Name
4706 --
4707 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverNavnPreutfylt-datadef-25795';
4708 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.legal_employer_name;
4709 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25795"';
4710 l_xml_element_count := l_xml_element_count + 1;
4711 --
4712 -- Address
4713 --
4714 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverAdressePreutfylt-datadef-25796';
4715 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_addr1||' '||l_le_si_rec.le_addr2||' '||l_le_si_rec.le_addr3;
4716 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25796"';
4717 l_xml_element_count := l_xml_element_count + 1;
4718 --
4719 -- Post Code
4720 --
4721 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverPostnummerPreutfylt-datadef-25797';
4722 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_postcode;
4723 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25797"';
4724 l_xml_element_count := l_xml_element_count + 1;
4725 --
4726 -- Post Office
4727 --
4728 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverPoststedPreutfylt-datadef-25798';
4729 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.le_postoffice;
4730 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25798"';
4731 l_xml_element_count := l_xml_element_count + 1;
4732 --
4733 -- Industry Code
4734 --
4735 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverNACEKode-datadef-27602';
4736 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.nace_code;
4737 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="27602"';
4738 l_xml_element_count := l_xml_element_count + 1;
4739 --
4740 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverMobiltelefonnummer-datadef-28654';
4741 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
4742 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28654"';
4743 l_xml_element_count := l_xml_element_count + 1;
4744 --
4745 g_xml_element_table(l_xml_element_count).tagname := 'Arbeidsgiver-grp-5750';
4746 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4747 l_xml_element_count := l_xml_element_count + 1;
4748 --
4749 --
4750 --
4751 g_xml_element_table(l_xml_element_count).tagname := 'Innledning-grp-5749';
4752 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4753 l_xml_element_count := l_xml_element_count + 1;
4754 --
4755 --
4756 --
4757 -- Fetch all balances for the legal employer / SI status combination.
4758 --
4759 OPEN csr_LE_SI_BAL_SUMMARY
4760 (l_payroll_action_id
4761 ,l_le_si_rec.legal_employer_id
4762 ,l_le_si_rec.si_status);
4763 FETCH csr_LE_SI_BAL_SUMMARY INTO l_le_si_bal_rec;
4764 CLOSE csr_LE_SI_BAL_SUMMARY;
4765 --
4766 --
4767 -- Loop through the reporting code information.
4768 --
4769 OPEN csr_LE_SI_CODE_SUMMARY
4770 (l_payroll_action_id
4771 ,l_le_si_rec.legal_employer_id
4772 ,l_le_si_rec.si_status);
4773 FETCH csr_LE_SI_CODE_SUMMARY INTO l_le_si_code_rec;
4774 CLOSE csr_LE_SI_CODE_SUMMARY;
4775 --
4776 --
4777 OPEN csr_LE_SI_CODE_TOTAL_SUMMARY
4778 (l_payroll_action_id
4779 ,l_le_si_rec.legal_employer_id
4780 ,l_le_si_rec.si_status);
4781 FETCH csr_LE_SI_CODE_TOTAL_SUMMARY INTO l_le_si_code_total_rec;
4782 CLOSE csr_LE_SI_CODE_TOTAL_SUMMARY;
4783 g_xml_element_table(l_xml_element_count).tagname := 'AndreOpplysninger-grp-5751';
4784 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4785 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5751"';
4786 l_xml_element_count := l_xml_element_count + 1;
4787 --
4788 --
4789 --
4790 g_xml_element_table(l_xml_element_count).tagname := 'Beregningsmate-grp-6844';
4791 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4792 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="6844"';
4793 l_xml_element_count := l_xml_element_count + 1;
4794 --
4795 --Calculation Method for Employer's Contribution (AA, BB etc) from Legal Employer/Local Unit
4796 --
4797 g_xml_element_table(l_xml_element_count).tagname := 'TerminoppgaveBeregningsmate-datadef-27603';
4798 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_rec.si_status;
4799 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="27603"';
4800 l_xml_element_count := l_xml_element_count + 1;
4801 --
4802 g_xml_element_table(l_xml_element_count).tagname := 'Beregningsmate-grp-6844';
4803 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4804 l_xml_element_count := l_xml_element_count + 1;
4805 --
4806 --
4807 --
4808 g_xml_element_table(l_xml_element_count).tagname := 'Annet-grp-6845';
4809 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4810 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="6845"';
4811 l_xml_element_count := l_xml_element_count + 1;
4812 --
4813 -- Other subsidis received (to reduce excemption limit),
4814 -- same as in bi-monthly recording sheet, but total for the year
4815 --
4816 g_xml_element_table(l_xml_element_count).tagname := 'TilskuddAndreTerminoppgave-datadef-27604';
4817 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_le_si_rec.le_economic_aid),lg_format_mask);
4818 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="27604"';
4819 l_xml_element_count := l_xml_element_count + 1;
4820 --
4821 --
4822 -- Total Earnings Below Reporting Limit
4823 l_total_below_rep_limit := nvl(l_le_si_code_rec.bl_zone1,0)+ nvl(l_le_si_code_rec.bl_zone2,0)+ nvl(l_le_si_code_rec.bl_zone3,0)
4824 + nvl(l_le_si_code_rec.bl_zone4,0)+ nvl(l_le_si_code_rec.bl_zone2,0);
4825 --
4826 g_xml_element_table(l_xml_element_count).tagname := 'TilskuddAndreIkkeOppgavepliktige-datadef-28102';
4827 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_total_below_rep_limit ,lg_format_mask);
4828 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28102"';
4829 l_xml_element_count := l_xml_element_count + 1;
4830 --
4831 g_xml_element_table(l_xml_element_count).tagname := 'Annet-grp-6845';
4832 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4833 l_xml_element_count := l_xml_element_count + 1;
4834 --
4835 --
4836 --
4837 g_xml_element_table(l_xml_element_count).tagname := 'AndreOpplysninger-grp-5751';
4838 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4839 l_xml_element_count := l_xml_element_count + 1;
4840 --
4841 --
4842 --
4843 g_xml_element_table(l_xml_element_count).tagname := 'SpesielleGrupper-grp-5755';
4844 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4845 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5755"';
4846 l_xml_element_count := l_xml_element_count + 1;
4847 --
4848 --
4849 --
4850 g_xml_element_table(l_xml_element_count).tagname := 'SpesielleGrupper-grp-6846';
4851 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4852 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="6846"';
4853 l_xml_element_count := l_xml_element_count + 1;
4854 --
4855 -- Special Employers Contribution Basis for employees from USA/Canada
4856 --
4857 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftUtenlandskArbeidstakerUSACanadaGrunnlag-datadef-22225';
4858 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.emp_contr_spcl_pct_base,lg_format_mask);
4859 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="22225"';
4860 l_xml_element_count := l_xml_element_count + 1;
4861 --
4862 -- Reimbursable basis for Employees from US/Canada
4863 --
4864 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftUtenlandskRefusjonsgrunnlagSpesifisert-datadef-27612';
4865 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.emp_contr_reimb_spcl_base,lg_format_mask);
4866 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="27612"';
4867 l_xml_element_count := l_xml_element_count + 1;
4868 --
4869 g_xml_element_table(l_xml_element_count).tagname := 'SpesielleGrupper-grp-6846';
4870 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4871 l_xml_element_count := l_xml_element_count + 1;
4872 --
4873 --
4874 --
4875 g_xml_element_table(l_xml_element_count).tagname := 'VisseSjomenn-grp-5756';
4876 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4877 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5756"';
4878 l_xml_element_count := l_xml_element_count + 1;
4879 --
4880 -- Special Employers Contribution for Seaman with special monthly rate - number of months
4881 --
4882 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftUtenlandskArbeidstakerAntallManeder-datadef-25415';
4883 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_bal_rec.emp_contr_spcl / l_le_si_bal_rec.foreign_special_amount;
4884 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25415"';
4885 l_xml_element_count := l_xml_element_count + 1;
4886 --
4887 g_xml_element_table(l_xml_element_count).tagname := 'VisseSjomenn-grp-5756';
4888 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4889 l_xml_element_count := l_xml_element_count + 1;
4890 --
4891 --
4892 --
4893 g_xml_element_table(l_xml_element_count).tagname := 'SpesielleGrupper-grp-5755';
4894 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4895 l_xml_element_count := l_xml_element_count + 1;
4896 --
4897 --
4898 --
4899 g_xml_element_table(l_xml_element_count).tagname := 'Avgiftsgrunnlag-grp-6847';
4900 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4901 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="6847"';
4902 l_xml_element_count := l_xml_element_count + 1;
4903 --
4904 --
4905 FOR l_le_si_lu_tm_rec IN csr_LE_SI_LU_TM_INFO
4906 (l_payroll_action_id)
4907 LOOP
4908 --
4909 g_xml_element_table(l_xml_element_count).tagname := 'AvgiftsgrunnlagTabell-grp-6848';
4910 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
4911 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="6848"';
4912 l_xml_element_count := l_xml_element_count + 1;
4913 --
4914 --Organization Number (Local Unit)
4915 --
4916 g_xml_element_table(l_xml_element_count).tagname := 'AvgiftsbetalerOrganisasjonsnummer-datadef-27605';
4917 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_lu_tm_rec.local_unit_id;
4918 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="27605"';
4919 l_xml_element_count := l_xml_element_count + 1;
4920 --
4921 -- Local Unit Municipal Number
4922 --
4923 g_xml_element_table(l_xml_element_count).tagname := 'AvgiftsbetalerKommunenummer-datadef-27610';
4924 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_lu_tm_rec.tax_municipality_id;
4925 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="27610"';
4926 l_xml_element_count := l_xml_element_count + 1;
4927 --
4928 -- Local Unit Municipal Name
4929 --
4930 g_xml_element_table(l_xml_element_count).tagname := 'AvgiftsbetalerKommunenavn-datadef-28111';
4931 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_lu_tm_rec.tax_municipality;
4932 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28111"';
4933 l_xml_element_count := l_xml_element_count + 1;
4934 --
4935 -- Employer Contribution Zone
4936 --
4937 g_xml_element_table(l_xml_element_count).tagname := 'AvgiftsbetalerArbeidsgiveravgiftSone-datadef-28112';
4938 g_xml_element_table(l_xml_element_count).tagvalue := l_le_si_lu_tm_rec.ni_zone_arc;
4939 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28112"';
4940 l_xml_element_count := l_xml_element_count + 1;
4941 --
4942 -- Employer Contribution Base
4943 --
4944 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonGrunnlagSpesifisert-datadef-28106';
4945 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_lu_tm_rec.emp_contr_bse ,lg_format_mask);
4946 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28106"';
4947 l_xml_element_count := l_xml_element_count + 1;
4948 --
4949 -- Pension Base
4950 --
4951 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonTilskuddPensjonSpesifisert-datadef-28107';
4952 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_lu_tm_rec.pension_bse,lg_format_mask);
4953 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28107"';
4954 l_xml_element_count := l_xml_element_count + 1;
4955 --
4956 --Gross Employer Contribution Base
4957 --
4958 l_gross_emp_contr_bse := l_le_si_lu_tm_rec.emp_contr_bse + l_le_si_lu_tm_rec.pension_bse;
4959 --
4960 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonBruttoSpesifisert-datadef-28108';
4961 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_gross_emp_contr_bse,lg_format_mask);
4962 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28108"';
4963 l_xml_element_count := l_xml_element_count + 1;
4964 --
4965 -- Reimbursement Base
4966 --
4967 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonRefusjonsgrunnlagSpesifisert-datadef-28109';
4968 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_lu_tm_rec.reimb_bse,lg_format_mask);
4969 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28109"';
4970 l_xml_element_count := l_xml_element_count + 1;
4971 --
4972 -- Net Employer Contribution Base
4973 l_net_emp_contr_bse := l_gross_emp_contr_bse - l_le_si_lu_tm_rec.reimb_bse ;
4974 --
4975 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonNettoSpesifisert-datadef-28110';
4976 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_net_emp_contr_bse,lg_format_mask);
4977 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28110"';
4978 l_xml_element_count := l_xml_element_count + 1;
4979 --
4980 g_xml_element_table(l_xml_element_count).tagname := 'AvgiftsgrunnlagTabell-grp-6848';
4981 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
4982 l_xml_element_count := l_xml_element_count + 1;
4983 --
4984 END LOOP;
4985 --
4986 --
4987 -- Total Employer Contribution Base
4988 --
4989 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonGrunnlagSummert-datadef-28103';
4990 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.emp_contr_ni_total,lg_format_mask);
4991 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28103"';
4992 l_xml_element_count := l_xml_element_count + 1;
4993 --
4994 -- Total Pension Base
4995 --
4996 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonTilskuddPensjonSummert-datadef-28104';
4997 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.tot_pension_bse,lg_format_mask);
4998 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28104"';
4999 l_xml_element_count := l_xml_element_count + 1;
5000 --
5001 -- Total Reimbursement Base
5002 --
5003 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsgiveravgiftRefusjonRefusjonsgrunnlagSummert-datadef-28105';
5004 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_le_si_bal_rec.tot_reimb_bse,lg_format_mask);
5005 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="28105"';
5006 l_xml_element_count := l_xml_element_count + 1;
5007 --
5008 g_xml_element_table(l_xml_element_count).tagname := 'Avgiftsgrunnlag-grp-6847';
5009 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5010 l_xml_element_count := l_xml_element_count + 1;
5011 --
5012 --
5013 --
5014
5015 END LOOP ;
5016
5017 CLOSE csr_LE_SI;
5018 --
5019 g_xml_element_table(l_xml_element_count).tagname := 'Skjema';
5020 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5021 l_xml_element_count := l_xml_element_count + 1;
5022 --
5023 write_to_clob(p_xml);
5024 --
5025 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
5026 END get_employer_contribution_xml;
5027 --
5028 --
5029 -- -----------------------------------------------------------------------------
5030 -- Generates Report for the Norwegian End of Year Report called Certificate of Pay
5031 -- and Tax Deducted for each employee.
5032 -- -----------------------------------------------------------------------------
5033 --
5034 PROCEDURE get_employee_cerificate_data
5035 (p_payroll_action_id IN VARCHAR2
5036 ,p_template_name IN VARCHAR2
5037 ,p_xml OUT NOCOPY CLOB) IS
5038 --
5039 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.employee_certificate_data';
5040 --
5041 CURSOR csr_LEGEMP
5042 (l_payroll_action_id IN NUMBER) IS
5043 SELECT leg_emp.action_information2 legal_employer_id
5044 ,leg_emp.action_information3 legal_employer_name
5045 ,leg_emp.action_information4 organization_number
5046 ,leg_emp.action_information5 add_line_1
5047 ,leg_emp.action_information6 add_line_2
5048 ,leg_emp.action_information7 add_line_3
5049 ,leg_emp.action_information8 add_post_code
5050 ,leg_emp.action_information9 add_post_office
5051 ,leg_emp.action_information16 le_tax_municipality
5052 ,leg_emp.effective_date effective_date
5053 FROM pay_action_information leg_emp
5054 WHERE leg_emp.action_context_type = 'PA'
5055 AND leg_emp.action_context_id = l_payroll_action_id
5056 AND leg_emp.action_information_category = 'EMEA REPORT INFORMATION'
5057 AND leg_emp.action_information1 = 'LEG_EMP_INFO'
5058 ORDER BY leg_emp.action_information3;
5059 --
5060 CURSOR csr_PERSON
5061 (l_payroll_action_id IN NUMBER
5062 ,p_legal_employer_id IN VARCHAR2) IS
5063 SELECT DISTINCT
5064 summ_cde.action_information12 tax_municipality
5065 ,per.action_information2 person_id
5066 ,per.action_information3 full_name
5067 ,per.action_information4 employee_number
5068 ,per.action_information5 national_identifier
5069 ,per.action_information6 employed_throughout
5070 ,per.action_information7 seamen
5071 ,per.action_information8 employed_date_or_days
5072 ,per.action_information9 add_line_1
5073 ,per.action_information10 add_line_2
5074 ,per.action_information11 add_line_3
5075 ,per.action_information12 add_post_code
5076 ,per.action_information13 add_post_office
5077 FROM pay_action_information summ_cde
5078 ,pay_action_information per
5079 WHERE summ_cde.action_context_type = 'PA'
5080 AND summ_cde.action_context_id = l_payroll_action_id
5081 AND summ_cde.action_information_category = 'EMEA REPORT INFORMATION'
5082 AND summ_cde.action_information1 = 'AUDIT_REP_SUMMARY'
5083 AND summ_cde.action_information2 = p_legal_employer_id
5084 AND per.action_context_type = summ_cde.action_context_type
5085 AND per.action_context_id = summ_cde.action_context_id
5086 AND per.action_information_category = summ_cde.action_information_category
5087 AND per.action_information1 = 'PER_INFO'
5088 AND per.action_information2 = summ_cde.action_information3
5089 ORDER BY per.action_information3;
5090 --
5091 CURSOR csr_PER_FIX_CODE
5092 (l_payroll_action_id IN NUMBER
5093 ,p_legal_employer_id IN VARCHAR2
5094 ,l_person_id IN NUMBER) IS
5095 SELECT rep_cde.action_information3 code
5096 ,SUM(fnd_number.canonical_to_number(aud_smr.action_information5)) amount
5097 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, p_legal_employer_id, rep_cde.action_information3, 'INFO1') info1_dtype
5098 FROM pay_action_information rep_cde
5099 ,pay_action_information aud_smr
5100 WHERE rep_cde.action_context_type = 'PA'
5101 AND rep_cde.action_context_id = l_payroll_action_id
5102 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5103 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5104 AND rep_cde.action_information2 = p_legal_employer_id
5105 AND rep_cde.action_information3 = aud_smr.action_information4
5106 AND rep_cde.action_information4 = 'Y'
5107 AND aud_smr.action_context_type = 'PA'
5108 AND aud_smr.action_context_id = l_payroll_action_id
5109 AND aud_smr.action_information_category = 'EMEA REPORT INFORMATION'
5110 AND aud_smr.action_information1 = 'AUDIT_REP_SUMMARY'
5111 AND aud_smr.action_information2 = p_legal_employer_id
5112 AND aud_smr.action_information3 = l_person_id
5113 group by rep_cde.action_information3 ;
5114 --
5115 CURSOR csr_PER_FIX_CODE_ADDL_INFO_CUM
5116 (l_payroll_action_id IN NUMBER
5117 ,p_legal_employer_id IN VARCHAR2
5118 ,l_person_id IN NUMBER
5119 ,l_eoy_code IN VARCHAR2) IS
5120 SELECT SUM(fnd_number.canonical_to_number(aud_smr.action_information6)) info1
5121 FROM pay_action_information rep_cde
5122 ,pay_action_information aud_smr
5123 WHERE rep_cde.action_context_type = 'PA'
5124 AND rep_cde.action_context_id = l_payroll_action_id
5125 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5126 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5127 AND rep_cde.action_information2 = p_legal_employer_id
5128 AND rep_cde.action_information3 = aud_smr.action_information4
5129 AND rep_cde.action_information4 = 'Y'
5130 AND aud_smr.action_context_type = 'PA'
5131 AND aud_smr.action_context_id = l_payroll_action_id
5132 AND aud_smr.action_information_category = 'EMEA REPORT INFORMATION'
5133 AND aud_smr.action_information1 = 'AUDIT_REP_SUMMARY'
5134 AND aud_smr.action_information2 = p_legal_employer_id
5135 AND aud_smr.action_information3 = l_person_id
5136 AND aud_smr.action_information4 = l_eoy_code;
5137 --
5138 CURSOR csr_PER_FIX_CODE_ADDL_INFO_IND
5139 (l_payroll_action_id IN NUMBER
5140 ,p_legal_employer_id IN VARCHAR2
5141 ,l_person_id IN NUMBER
5142 ,l_eoy_code IN VARCHAR2) IS
5143 SELECT decode(count(distinct(aud_smr.action_information6)),1,max(aud_smr.action_information6),'') info1
5144 FROM pay_action_information rep_cde
5145 ,pay_action_information aud_smr
5146 WHERE rep_cde.action_context_type = 'PA'
5147 AND rep_cde.action_context_id = l_payroll_action_id
5148 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5149 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5150 AND rep_cde.action_information2 = p_legal_employer_id
5151 AND rep_cde.action_information3 = aud_smr.action_information4
5152 AND rep_cde.action_information4 = 'Y'
5153 AND aud_smr.action_context_type = 'PA'
5154 AND aud_smr.action_context_id = l_payroll_action_id
5155 AND aud_smr.action_information_category = 'EMEA REPORT INFORMATION'
5156 AND aud_smr.action_information1 = 'AUDIT_REP_SUMMARY'
5157 AND aud_smr.action_information2 = p_legal_employer_id
5158 AND aud_smr.action_information3 = l_person_id
5159 AND aud_smr.action_information4 = l_eoy_code;
5160 --
5161 CURSOR csr_SUMMARY_CODES
5162 (l_payroll_action_id IN NUMBER
5163 ,p_legal_employer_id IN VARCHAR2
5164 ,p_person_id IN VARCHAR2 ) IS
5165 SELECT summ_cde.action_information4 code
5166 ,fnd_number.canonical_to_number(summ_cde.action_information5) amount
5167 ,summ_cde.action_information6 info1
5168 ,summ_cde.action_information7 info2
5169 ,summ_cde.action_information8 info3
5170 ,summ_cde.action_information9 info4
5171 ,summ_cde.action_information10 info5
5172 ,summ_cde.action_information11 info6
5173 ,pay_no_eoy_archive.get_code_desc(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4) description
5174 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_prompt
5175 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_prompt
5176 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_prompt
5177 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_prompt
5178 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_prompt
5179 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_prompt
5180 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_dtype
5181 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_dtype
5182 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_dtype
5183 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_dtype
5184 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_dtype
5185 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_dtype
5186 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_orid -- changes 2007-08
5187 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_orid -- changes 2007-08
5188 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_orid -- changes 2007-08
5189 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_orid -- changes 2007-08
5190 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_orid -- changes 2007-08
5191 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_orid -- changes 2007-08
5192 FROM pay_action_information summ_cde
5193 ,pay_action_information rep_cde
5194 WHERE rep_cde.action_context_type = 'PA'
5195 AND rep_cde.action_context_id = l_payroll_action_id
5196 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5197 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5198 AND rep_cde.action_information2 = p_legal_employer_id
5199 AND rep_cde.action_information3 = summ_cde.action_information4
5200 AND rep_cde.action_information4 <> 'Y'
5201 AND summ_cde.action_context_type = 'PA'
5202 AND summ_cde.action_context_id = l_payroll_action_id
5203 AND summ_cde.action_information_category = 'EMEA REPORT INFORMATION'
5204 AND summ_cde.action_information1 = 'AUDIT_REP_SUMMARY'
5205 AND summ_cde.action_information2 = p_legal_employer_id
5206 AND summ_cde.action_information3 = p_person_id
5207 ORDER BY summ_cde.action_information2,
5208 summ_cde.action_information4;
5209 --
5210 CURSOR csr_FIX_CODE_DESC
5211 (l_payroll_action_id IN NUMBER) IS
5212 SELECT DISTINCT rep_cde.action_information3 code
5213 ,rep_cde.action_information11 description
5214 FROM pay_action_information rep_cde
5215 WHERE rep_cde.action_context_type = 'PA'
5216 AND rep_cde.action_context_id = l_payroll_action_id
5217 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5218 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5219 AND rep_cde.action_information4 = 'Y';
5220 --
5221 --
5222 l_xml_element_count NUMBER := 1;
5223 l_payroll_action_id NUMBER;
5224 l_bg_id NUMBER;
5225 lg_format_mask VARCHAR2(40);
5226 rec_per_fix_code csr_PER_FIX_CODE%ROWTYPE;
5227 addl_info VARCHAR2(30);
5228 --
5229 BEGIN
5230 hr_utility.set_location('Entering ' || l_proc_name, 10);
5231 g_xml_element_table.DELETE;
5232 --
5233 IF p_payroll_action_id is null then
5234 BEGIN
5235 SELECT payroll_action_id
5236 into l_payroll_action_id
5237 from pay_payroll_actions ppa,
5238 fnd_conc_req_summary_v fcrs,
5239 fnd_conc_req_summary_v fcrs1
5240 WHERE fcrs.request_id = fnd_global.conc_request_id
5241 and fcrs.priority_request_id = fcrs1.priority_request_id
5242 and ppa.request_id between fcrs1.request_id and fcrs.request_id
5243 and ppa.request_id = fcrs1.request_id;
5244 EXCEPTION
5245 WHEN others then
5246 null;
5247 END;
5248 ELSE
5249 l_payroll_action_id := p_payroll_action_id;
5250 END IF;
5251 --
5252 -- get the currecnt BG's currency and mask to format the amount fields
5253 --
5254 fnd_profile.get('PER_BUSINESS_GROUP_ID', l_bg_id);
5255 set_currency_mask(l_bg_id, lg_format_mask);
5256 --
5257 g_xml_element_table(l_xml_element_count).tagname := 'EOY';
5258 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5259 l_xml_element_count := l_xml_element_count + 1;
5260 --
5261 FOR rec_FIX_CODE_DESC IN csr_FIX_CODE_DESC(l_payroll_action_id)
5262 LOOP
5263 --
5264 g_xml_element_table(l_xml_element_count).tagname := 'PROMPT_'|| replace(rec_FIX_CODE_DESC.code,'-');
5265 g_xml_element_table(l_xml_element_count).tagvalue := rec_FIX_CODE_DESC.code;
5266 l_xml_element_count := l_xml_element_count + 1;
5267 --
5268 g_xml_element_table(l_xml_element_count).tagname := 'DESC_'|| replace(rec_FIX_CODE_DESC.code,'-');
5269 g_xml_element_table(l_xml_element_count).tagvalue := rec_FIX_CODE_DESC.description;
5270 l_xml_element_count := l_xml_element_count + 1;
5271 --
5272 END LOOP;
5273 --
5274 -- Loop for each legal employer.
5275 --
5276 FOR l_legemp_rec IN csr_LEGEMP
5277 (l_payroll_action_id)
5278 LOOP
5279 --
5280 --
5281 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
5282 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5283 l_xml_element_count := l_xml_element_count + 1;
5284 --
5285 g_xml_element_table(l_xml_element_count).tagname := 'REPORT_YEAR';
5286 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_legemp_rec.effective_date,'YYYY');
5287 l_xml_element_count := l_xml_element_count + 1;
5288 --
5289 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_NAME';
5290 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.legal_employer_name;
5291 l_xml_element_count := l_xml_element_count + 1;
5292 --
5293 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS1';
5294 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_line_1;
5295 l_xml_element_count := l_xml_element_count + 1;
5296 --
5297 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS2';
5298 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_line_2;
5299 l_xml_element_count := l_xml_element_count + 1;
5300 --
5301 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS3';
5302 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_line_3;
5303 l_xml_element_count := l_xml_element_count + 1;
5304 --
5305 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_POSTCODE1';
5306 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_post_code;
5307 l_xml_element_count := l_xml_element_count + 1;
5308 --
5309 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_POSTCODE2';
5310 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_post_office;
5311 l_xml_element_count := l_xml_element_count + 1;
5312 --
5313 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ORG_NUMBER';
5314 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.organization_number;
5315 l_xml_element_count := l_xml_element_count + 1;
5316 --
5317 g_xml_element_table(l_xml_element_count).tagname := 'TAX_MUNICIPALITY';
5318 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.le_tax_municipality;
5319 l_xml_element_count := l_xml_element_count + 1;
5320 --
5321 -- Loop for each person within legal employer.
5322 --
5323 FOR l_person_rec IN csr_PERSON
5324 (l_payroll_action_id
5325 ,l_legemp_rec.legal_employer_id)
5326 LOOP
5327 --
5328 g_xml_element_table(l_xml_element_count).tagname := 'PERSON';
5329 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5330 l_xml_element_count := l_xml_element_count + 1;
5331 --
5332 g_xml_element_table(l_xml_element_count).tagname := 'NAME';
5333 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.full_name;
5334 l_xml_element_count := l_xml_element_count + 1;
5335 --
5336 g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYEE_NUMBER';
5337 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employee_number;
5338 l_xml_element_count := l_xml_element_count + 1;
5339 --
5340 g_xml_element_table(l_xml_element_count).tagname := 'ADD_LINE_1';
5341 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_line_1;
5342 l_xml_element_count := l_xml_element_count + 1;
5343 --
5344 g_xml_element_table(l_xml_element_count).tagname := 'ADD_LINE_2';
5345 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_line_2;
5346 l_xml_element_count := l_xml_element_count + 1;
5347 --
5348 g_xml_element_table(l_xml_element_count).tagname := 'ADD_LINE_3';
5349 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_line_3;
5350 l_xml_element_count := l_xml_element_count + 1;
5351 --
5352 g_xml_element_table(l_xml_element_count).tagname := 'ADD_POST_CODE';
5353 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_post_code;
5354 l_xml_element_count := l_xml_element_count + 1;
5355 --
5356 g_xml_element_table(l_xml_element_count).tagname := 'ADD_POST_OFFICE';
5357 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_post_office;
5358 l_xml_element_count := l_xml_element_count + 1;
5359 --
5360 g_xml_element_table(l_xml_element_count).tagname := 'NI_NUMBER';
5361 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.national_identifier;
5362 l_xml_element_count := l_xml_element_count + 1;
5363 --
5364 g_xml_element_table(l_xml_element_count).tagname := 'TAX_MUNICIPALITY';
5365 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.tax_municipality;
5366 l_xml_element_count := l_xml_element_count + 1;
5367 --
5368 g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_THROUGHOUT';
5369 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employed_throughout;
5370 l_xml_element_count := l_xml_element_count + 1;
5371 --
5372 g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_DATE_OR_DAYS';
5373 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employed_date_or_days;
5374 l_xml_element_count := l_xml_element_count + 1;
5375 --
5376 g_xml_element_table(l_xml_element_count).tagname := 'SEAMEN';
5377 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.seamen;
5378 l_xml_element_count := l_xml_element_count + 1;
5379 --
5380 g_fixed_code.DELETE;
5381 g_fixed_code(1).fixed_code := '111-A';
5382 g_fixed_code(1).status := 0;
5383 g_fixed_code(2).fixed_code := '112-A';
5384 g_fixed_code(2).status := 0;
5385 g_fixed_code(3).fixed_code := '116-A';
5386 g_fixed_code(3).status := 0;
5387 g_fixed_code(4).fixed_code := '211';
5388 g_fixed_code(4).status := 0;
5389 g_fixed_code(5).fixed_code := '311';
5390 g_fixed_code(5).status := 0;
5391 g_fixed_code(6).fixed_code := '312';
5392 g_fixed_code(6).status := 0;
5393 g_fixed_code(7).fixed_code := '313';
5394 g_fixed_code(7).status := 0;
5395 g_fixed_code(8).fixed_code := '314';
5396 g_fixed_code(8).status := 0;
5397 g_fixed_code(9).fixed_code := '316';
5398 g_fixed_code(9).status := 0;
5399 g_fixed_code(10).fixed_code := '401';
5400 g_fixed_code(10).status := 0;
5401 g_fixed_code(11).fixed_code := '711';
5402 g_fixed_code(11).status := 0;
5403 g_fixed_code(12).fixed_code := '950';
5404 g_fixed_code(12).status := 0;
5405 g_fixed_code(13).fixed_code :='000';
5406 g_fixed_code(13).status := 0;
5407 --
5408 --
5409 -- Loop through all fixed codes.
5410 --
5411 OPEN csr_PER_FIX_CODE
5412 (l_payroll_action_id
5413 ,l_legemp_rec.legal_employer_id
5414 ,l_person_rec.person_id);
5415 LOOP
5416 FETCH csr_PER_FIX_CODE INTO rec_per_fix_code;
5417 EXIT WHEN csr_PER_FIX_CODE%NOTFOUND;
5418 --
5419 --
5420 -- XML TAG name is based on reporting code.
5421 --
5422 g_xml_element_table(l_xml_element_count).tagname := 'AMOUNT_' || REPLACE(rec_per_fix_code.code,'-');
5423 g_xml_element_table(l_xml_element_count).tagvalue := to_char(rec_per_fix_code.amount,lg_format_mask);
5424 g_xml_element_table(l_xml_element_count).tagtype := 'A';
5425 l_xml_element_count := l_xml_element_count + 1;
5426 --
5427 FOR rec_fixed_code in 1..13 LOOP
5428 --
5429 IF g_fixed_code(rec_fixed_code).fixed_code = rec_per_fix_code.code THEN
5430 g_fixed_code(rec_fixed_code).status := 1;
5431 --
5432 IF rec_per_fix_code.code IN ('211','711') THEN
5433 IF rec_per_fix_code.info1_dtype IN ('M','N','A') THEN
5434 OPEN csr_PER_FIX_CODE_ADDL_INFO_CUM(l_payroll_action_id
5435 ,l_legemp_rec.legal_employer_id
5436 ,l_person_rec.person_id
5437 ,rec_per_fix_code.code);
5438 FETCH csr_PER_FIX_CODE_ADDL_INFO_CUM INTO addl_info;
5439 CLOSE csr_PER_FIX_CODE_ADDL_INFO_CUM;
5440 --
5441 addl_info := to_char(to_number(addl_info),lg_format_mask);
5442 --
5443 ELSE
5444 OPEN csr_PER_FIX_CODE_ADDL_INFO_IND(l_payroll_action_id
5445 ,l_legemp_rec.legal_employer_id
5446 ,l_person_rec.person_id
5447 ,rec_per_fix_code.code);
5448 FETCH csr_PER_FIX_CODE_ADDL_INFO_IND INTO addl_info;
5449 CLOSE csr_PER_FIX_CODE_ADDL_INFO_IND;
5450 --
5451 IF rec_per_fix_code.info1_dtype IN ('D') AND addl_info <> 0 THEN
5452 addl_info := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(addl_info));
5453 END IF;
5454 --
5455 END IF;
5456 --
5457 g_xml_element_table(l_xml_element_count).tagname := 'DETAIL_' || REPLACE(rec_per_fix_code.code,'-');
5458 g_xml_element_table(l_xml_element_count).tagvalue := addl_info;
5459 l_xml_element_count := l_xml_element_count + 1;
5460 --
5461 END IF;
5462 --
5463 EXIT;
5464 END IF;
5465 --
5466 END LOOP;
5467 --
5468 END LOOP;
5469 CLOSE csr_PER_FIX_CODE;
5470 --
5471 -- fixed codes which are not processed for this employee are shown as 0.
5472 FOR rec_fixed_code in 1..13 LOOP
5473 --
5474 IF g_fixed_code(rec_fixed_code).status = 0 THEN
5475 --
5476 g_fixed_code(rec_fixed_code).status := 1;
5477 g_xml_element_table(l_xml_element_count).tagname := 'AMOUNT_' ||
5478 REPLACE(g_fixed_code(rec_fixed_code).fixed_code,'-');
5479 g_xml_element_table(l_xml_element_count).tagvalue := to_char(0,lg_format_mask);
5480 g_xml_element_table(l_xml_element_count).tagtype := 'A';
5481 l_xml_element_count := l_xml_element_count + 1;
5482 --
5483 END IF;
5484 --
5485 END LOOP;
5486 --
5487 -- Loop for all reporting codes within person, legal employer.
5488 --
5489 FOR l_summ_code_rec IN csr_SUMMARY_CODES
5490 (l_payroll_action_id
5491 ,l_legemp_rec.legal_employer_id
5492 ,l_person_rec.person_id)
5493 LOOP
5494 --
5495 g_xml_element_table(l_xml_element_count).tagname := 'REP_CODE';
5496 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5497 l_xml_element_count := l_xml_element_count + 1;
5498 --
5499 g_xml_element_table(l_xml_element_count).tagname := 'CODE';
5500 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.code;
5501 l_xml_element_count := l_xml_element_count + 1;
5502 --
5503 g_xml_element_table(l_xml_element_count).tagname := 'AMOUNT';
5504 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_summ_code_rec.amount,lg_format_mask);
5505 g_xml_element_table(l_xml_element_count).tagtype := 'A';
5506 l_xml_element_count := l_xml_element_count + 1;
5507 --
5508 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5509 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.description;
5510 l_xml_element_count := l_xml_element_count + 1;
5511 --
5512 IF l_summ_code_rec.info1_prompt IS NOT NULL AND l_summ_code_rec.info1 IS NOT NULL THEN
5513 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5514 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5515 l_xml_element_count := l_xml_element_count + 1;
5516 --
5517 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5518 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info1_prompt;
5519 l_xml_element_count := l_xml_element_count + 1;
5520 --
5521 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
5522 IF l_summ_code_rec.info1_dtype IN ('M','A','N','MC') THEN
5523 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info1), lg_format_mask);
5524 ELSIF l_summ_code_rec.info1_dtype = 'D' AND l_summ_code_rec.info1 <> '0' THEN
5525 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info1));
5526 ELSE
5527 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info1;
5528 END IF;
5529 l_xml_element_count := l_xml_element_count + 1;
5530 --
5531 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5532 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5533 l_xml_element_count := l_xml_element_count + 1;
5534 END IF;
5535 --
5536 IF l_summ_code_rec.info2_prompt IS NOT NULL AND l_summ_code_rec.info2 IS NOT NULL THEN
5537 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5538 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5539 l_xml_element_count := l_xml_element_count + 1;
5540 --
5541 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5542 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info2_prompt;
5543 l_xml_element_count := l_xml_element_count + 1;
5544 --
5545 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
5546 IF l_summ_code_rec.info2_dtype IN ('M','A','N') THEN
5547 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info2),lg_format_mask);
5548 ELSIF l_summ_code_rec.info2_dtype = 'D' AND l_summ_code_rec.info2 <> '0' THEN
5549 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info2));
5550 ELSE
5551 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info2;
5552 END IF;
5553 l_xml_element_count := l_xml_element_count + 1;
5554 --
5555 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5556 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5557 l_xml_element_count := l_xml_element_count + 1;
5558 END IF;
5559 --
5560 IF l_summ_code_rec.info3_prompt IS NOT NULL AND l_summ_code_rec.info3 IS NOT NULL THEN
5561 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5562 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5563 l_xml_element_count := l_xml_element_count + 1;
5564 --
5565 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5566 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info3_prompt;
5567 l_xml_element_count := l_xml_element_count + 1;
5568 --
5569 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
5570 IF l_summ_code_rec.info3_dtype IN ('M','A','N') THEN
5571 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info3), lg_format_mask);
5572 ELSIF l_summ_code_rec.info3_dtype = 'D' AND l_summ_code_rec.info3 <> '0' THEN
5573 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info3));
5574 ELSE
5575 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info3;
5576 END IF;
5577 l_xml_element_count := l_xml_element_count + 1;
5578 --
5579 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5580 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5581 l_xml_element_count := l_xml_element_count + 1;
5582 END IF;
5583 --
5584 IF l_summ_code_rec.info4_prompt IS NOT NULL AND l_summ_code_rec.info4 IS NOT NULL THEN
5585 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5586 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5587 l_xml_element_count := l_xml_element_count + 1;
5588 --
5589 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5590 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info4_prompt;
5591 l_xml_element_count := l_xml_element_count + 1;
5592 --
5593 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
5594 IF l_summ_code_rec.info4_dtype IN ('M','A','N') THEN
5595 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info4),lg_format_mask);
5596 ELSIF l_summ_code_rec.info4_dtype = 'D' AND l_summ_code_rec.info4 <> '0' THEN
5597 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info4));
5598 ELSE
5599 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info4;
5600 END IF;
5601 l_xml_element_count := l_xml_element_count + 1;
5602 --
5603 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5604 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5605 l_xml_element_count := l_xml_element_count + 1;
5606 END IF;
5607 --
5608 IF l_summ_code_rec.info5_prompt IS NOT NULL AND l_summ_code_rec.info5 IS NOT NULL THEN
5609 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5610 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5611 l_xml_element_count := l_xml_element_count + 1;
5612 --
5613 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5614 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info5_prompt;
5615 l_xml_element_count := l_xml_element_count + 1;
5616 --
5617 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
5618 IF l_summ_code_rec.info5_dtype IN ('M','A','N') THEN
5619 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info5), lg_format_mask);
5620 ELSIF l_summ_code_rec.info5_dtype = 'D' AND l_summ_code_rec.info5 <> '0' THEN
5621 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info5));
5622 ELSE
5623 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info5;
5624 END IF;
5625 l_xml_element_count := l_xml_element_count + 1;
5626 --
5627 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5628 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5629 l_xml_element_count := l_xml_element_count + 1;
5630 END IF;
5631 --
5632 IF l_summ_code_rec.info6_prompt IS NOT NULL AND l_summ_code_rec.info6 IS NOT NULL THEN
5633 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5634 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5635 l_xml_element_count := l_xml_element_count + 1;
5636 --
5637 g_xml_element_table(l_xml_element_count).tagname := 'DESC';
5638 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info6_prompt;
5639 l_xml_element_count := l_xml_element_count + 1;
5640 --
5641 g_xml_element_table(l_xml_element_count).tagname := 'INFO_DTLS';
5642 IF l_summ_code_rec.info6_dtype IN ('M','A','N') THEN
5643 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(l_summ_code_rec.info6),lg_format_mask);
5644 ELSIF l_summ_code_rec.info6_dtype = 'D' AND l_summ_code_rec.info6 <> '0' THEN
5645 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_summ_code_rec.info6));
5646 ELSE
5647 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.info6;
5648 END IF;
5649 l_xml_element_count := l_xml_element_count + 1;
5650 --
5651 g_xml_element_table(l_xml_element_count).tagname := 'INFO';
5652 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5653 l_xml_element_count := l_xml_element_count + 1;
5654 END IF;
5655 --
5656 g_xml_element_table(l_xml_element_count).tagname := 'REP_CODE';
5657 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5658 l_xml_element_count := l_xml_element_count + 1;
5659 END LOOP;
5660 --
5661 g_xml_element_table(l_xml_element_count).tagname := 'PERSON';
5662 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5663 l_xml_element_count := l_xml_element_count + 1;
5664 --
5665 END LOOP;
5666 --
5667 g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
5668 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5669 l_xml_element_count := l_xml_element_count + 1;
5670 END LOOP;
5671 --
5672 g_xml_element_table(l_xml_element_count).tagname := 'EOY';
5673 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5674 l_xml_element_count := l_xml_element_count + 1;
5675 --
5676 write_to_clob(p_xml);
5677 --
5678 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
5679 END get_employee_cerificate_data;
5680 --
5681 -------------------------------------------------------------------------------------
5682 -- Generates XML for the Norwegian End of Year Report called Certificate of Pay
5683 -- and Tax Deducted for each employee. 2007/08 changes
5684 -------------------------------------------------------------------------------------
5685 --
5686 --
5687 --
5688 PROCEDURE get_employee_certificate_xml
5689 (p_business_group_id IN NUMBER
5690 ,p_payroll_action_id IN VARCHAR2
5691 ,p_template_name IN VARCHAR2
5692 ,p_xml OUT NOCOPY CLOB) IS
5693 --
5694 l_proc_name CONSTANT VARCHAR2(61) := l_package_name || '.get_employee_certificate_xml';
5695 --
5696 CURSOR csr_LEGEMP
5697 (l_payroll_action_id IN NUMBER) IS
5698 SELECT leg_emp.action_information2 legal_employer_id
5699 ,leg_emp.action_information3 legal_employer_name
5700 ,leg_emp.action_information4 organization_number
5701 ,leg_emp.action_information5 add_line_1
5702 ,leg_emp.action_information6 add_line_2
5703 ,leg_emp.action_information7 add_line_3
5704 ,leg_emp.action_information8 add_post_code
5705 ,leg_emp.action_information9 add_post_office
5706 ,leg_emp.action_information16 le_tax_municipality
5707 ,leg_emp.effective_date effective_date
5708 FROM pay_action_information leg_emp
5709 WHERE leg_emp.action_context_type = 'PA'
5710 AND leg_emp.action_context_id = l_payroll_action_id
5711 AND leg_emp.action_information_category = 'EMEA REPORT INFORMATION'
5712 AND leg_emp.action_information1 = 'LEG_EMP_INFO'
5713 ORDER BY leg_emp.action_information3;
5714 --
5715 CURSOR csr_PERSON
5716 (l_payroll_action_id IN NUMBER
5717 ,p_legal_employer_id IN VARCHAR2) IS
5718 SELECT DISTINCT
5719 summ_cde.action_information12 tax_municipality
5720 ,per.action_information2 person_id
5721 ,per.action_information3 full_name
5722 ,per.action_information4 employee_number
5723 ,per.action_information5 national_identifier
5724 ,per.action_information6 employed_throughout
5725 ,per.action_information7 seamen
5726 ,per.action_information8 employed_date_or_days
5727 ,per.action_information9 add_line_1
5728 ,per.action_information10 add_line_2
5729 ,per.action_information11 add_line_3
5730 ,per.action_information12 add_post_code
5731 ,per.action_information13 add_post_office
5732 ,per.action_information14 employment_start_date --Changes 2007/2008
5733 ,per.action_information15 employment_end_date --Changes 2007/2008
5734 FROM pay_action_information summ_cde
5735 ,pay_action_information per
5736 WHERE summ_cde.action_context_type = 'PA'
5737 AND summ_cde.action_context_id = l_payroll_action_id
5738 AND summ_cde.action_information_category = 'EMEA REPORT INFORMATION'
5739 AND summ_cde.action_information1 = 'AUDIT_REP_SUMMARY'
5740 AND summ_cde.action_information2 = p_legal_employer_id
5741 AND per.action_context_type = summ_cde.action_context_type
5742 AND per.action_context_id = summ_cde.action_context_id
5743 AND per.action_information_category = summ_cde.action_information_category
5744 AND per.action_information1 = 'PER_INFO'
5745 AND per.action_information2 = summ_cde.action_information3
5746 ORDER BY per.action_information3;
5747 --
5748 CURSOR csr_PER_FIX_CODE
5749 (l_payroll_action_id IN NUMBER
5750 ,p_legal_employer_id IN VARCHAR2
5751 ,l_person_id IN NUMBER) IS
5752 SELECT rep_cde.action_information3 code
5753 ,SUM(fnd_number.canonical_to_number(aud_smr.action_information5)) amount
5754 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, p_legal_employer_id, rep_cde.action_information3, 'INFO1') info1_dtype
5755 FROM pay_action_information rep_cde
5756 ,pay_action_information aud_smr
5757 WHERE rep_cde.action_context_type = 'PA'
5758 AND rep_cde.action_context_id = l_payroll_action_id
5759 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5760 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5761 AND rep_cde.action_information2 = p_legal_employer_id
5762 AND rep_cde.action_information3 = aud_smr.action_information4
5763 AND rep_cde.action_information4 = 'Y'
5764 AND aud_smr.action_context_type = 'PA'
5765 AND aud_smr.action_context_id = l_payroll_action_id
5766 AND aud_smr.action_information_category = 'EMEA REPORT INFORMATION'
5767 AND aud_smr.action_information1 = 'AUDIT_REP_SUMMARY'
5768 AND aud_smr.action_information2 = p_legal_employer_id
5769 AND aud_smr.action_information3 = l_person_id
5770 group by rep_cde.action_information3 ;
5771 --
5772 CURSOR csr_PER_FIX_CODE_ADDL_INFO_CUM
5773 (l_payroll_action_id IN NUMBER
5774 ,p_legal_employer_id IN VARCHAR2
5775 ,l_person_id IN NUMBER
5776 ,l_eoy_code IN VARCHAR2) IS
5777 SELECT SUM(fnd_number.canonical_to_number(aud_smr.action_information6)) info1
5778 FROM pay_action_information rep_cde
5779 ,pay_action_information aud_smr
5780 WHERE rep_cde.action_context_type = 'PA'
5781 AND rep_cde.action_context_id = l_payroll_action_id
5782 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5783 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5784 AND rep_cde.action_information2 = p_legal_employer_id
5785 AND rep_cde.action_information3 = aud_smr.action_information4
5786 AND rep_cde.action_information4 = 'Y'
5787 AND aud_smr.action_context_type = 'PA'
5788 AND aud_smr.action_context_id = l_payroll_action_id
5789 AND aud_smr.action_information_category = 'EMEA REPORT INFORMATION'
5790 AND aud_smr.action_information1 = 'AUDIT_REP_SUMMARY'
5791 AND aud_smr.action_information2 = p_legal_employer_id
5792 AND aud_smr.action_information3 = l_person_id
5793 AND aud_smr.action_information4 = l_eoy_code;
5794 --
5795 CURSOR csr_PER_FIX_CODE_ADDL_INFO_IND
5796 (l_payroll_action_id IN NUMBER
5797 ,p_legal_employer_id IN VARCHAR2
5798 ,l_person_id IN NUMBER
5799 ,l_eoy_code IN VARCHAR2) IS
5800 SELECT decode(count(distinct(aud_smr.action_information6)),1,max(aud_smr.action_information6),'') info1
5801 FROM pay_action_information rep_cde
5802 ,pay_action_information aud_smr
5803 WHERE rep_cde.action_context_type = 'PA'
5804 AND rep_cde.action_context_id = l_payroll_action_id
5805 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5806 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5807 AND rep_cde.action_information2 = p_legal_employer_id
5808 AND rep_cde.action_information3 = aud_smr.action_information4
5809 AND rep_cde.action_information4 = 'Y'
5810 AND aud_smr.action_context_type = 'PA'
5811 AND aud_smr.action_context_id = l_payroll_action_id
5812 AND aud_smr.action_information_category = 'EMEA REPORT INFORMATION'
5813 AND aud_smr.action_information1 = 'AUDIT_REP_SUMMARY'
5814 AND aud_smr.action_information2 = p_legal_employer_id
5815 AND aud_smr.action_information3 = l_person_id
5816 AND aud_smr.action_information4 = l_eoy_code;
5817 --
5818 CURSOR csr_SUMMARY_CODES
5819 (l_payroll_action_id IN NUMBER
5820 ,p_legal_employer_id IN VARCHAR2
5821 ,p_person_id IN VARCHAR2 ) IS
5822 SELECT summ_cde.action_information4 code
5823 ,fnd_number.canonical_to_number(summ_cde.action_information5) amount
5824 ,summ_cde.action_information6 info1
5825 ,summ_cde.action_information7 info2
5826 ,summ_cde.action_information8 info3
5827 ,summ_cde.action_information9 info4
5828 ,summ_cde.action_information10 info5
5829 ,summ_cde.action_information11 info6
5830 ,pay_no_eoy_archive.get_code_desc(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4) description
5831 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_prompt
5832 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_prompt
5833 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_prompt
5834 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_prompt
5835 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_prompt
5836 ,pay_no_eoy_archive.get_info_prompt(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_prompt
5837 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_dtype
5838 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_dtype
5839 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_dtype
5840 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_dtype
5841 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_dtype
5842 ,pay_no_eoy_archive.get_info_dtype(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_dtype
5843 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO1') info1_orid -- changes 2007-08
5844 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO2') info2_orid -- changes 2007-08
5845 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO3') info3_orid -- changes 2007-08
5846 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO4') info4_orid -- changes 2007-08
5847 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO5') info5_orid -- changes 2007-08
5848 ,pay_no_eoy_archive.get_xml_orid(l_payroll_action_id, summ_cde.action_information2, summ_cde.action_information4, 'INFO6') info6_orid -- changes 2007-08
5849 FROM pay_action_information summ_cde
5850 ,pay_action_information rep_cde
5851 WHERE rep_cde.action_context_type = 'PA'
5852 AND rep_cde.action_context_id = l_payroll_action_id
5853 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5854 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5855 AND rep_cde.action_information2 = p_legal_employer_id
5856 AND rep_cde.action_information3 = summ_cde.action_information4
5857 AND rep_cde.action_information4 <> 'Y'
5858 AND summ_cde.action_context_type = 'PA'
5859 AND summ_cde.action_context_id = l_payroll_action_id
5860 AND summ_cde.action_information_category = 'EMEA REPORT INFORMATION'
5861 AND summ_cde.action_information1 = 'AUDIT_REP_SUMMARY'
5862 AND summ_cde.action_information2 = p_legal_employer_id
5863 AND summ_cde.action_information3 = p_person_id
5864 ORDER BY summ_cde.action_information2,
5865 summ_cde.action_information4;
5866 --
5867 CURSOR csr_FIX_CODE_DESC
5868 (l_payroll_action_id IN NUMBER) IS
5869 SELECT DISTINCT rep_cde.action_information3 code
5870 ,rep_cde.action_information11 description
5871 FROM pay_action_information rep_cde
5872 WHERE rep_cde.action_context_type = 'PA'
5873 AND rep_cde.action_context_id = l_payroll_action_id
5874 AND rep_cde.action_information_category = 'EMEA REPORT INFORMATION'
5875 AND rep_cde.action_information1 = 'REP_CODE_DTLS'
5876 AND rep_cde.action_information4 = 'Y';
5877 --
5878 --
5879 l_xml_element_count NUMBER := 1;
5880 l_payroll_action_id NUMBER;
5881 l_bg_id NUMBER;
5882 lg_format_mask VARCHAR2(40);
5883 rec_per_fix_code csr_PER_FIX_CODE%ROWTYPE;
5884 addl_info VARCHAR2(30);
5885 --
5886 BEGIN
5887 hr_utility.set_location('Entering ' || l_proc_name, 10);
5888 g_xml_element_table.DELETE;
5889 --
5890 IF p_payroll_action_id is null then
5891 BEGIN
5892 SELECT payroll_action_id
5893 into l_payroll_action_id
5894 from pay_payroll_actions ppa,
5895 fnd_conc_req_summary_v fcrs,
5896 fnd_conc_req_summary_v fcrs1
5897 WHERE fcrs.request_id = fnd_global.conc_request_id
5898 and fcrs.priority_request_id = fcrs1.priority_request_id
5899 and ppa.request_id between fcrs1.request_id and fcrs.request_id
5900 and ppa.request_id = fcrs1.request_id;
5901 EXCEPTION
5902 WHEN others then
5903 null;
5904 END;
5905 ELSE
5906 l_payroll_action_id := p_payroll_action_id;
5907 END IF;
5908 --
5909 -- get the currecnt BG's currency and mask to format the amount fields
5910 --
5911 fnd_profile.get('PER_BUSINESS_GROUP_ID', l_bg_id);
5912 set_currency_mask(l_bg_id, lg_format_mask);
5913 --
5914 --/*Applying the changes for the 2007-2008*/
5915
5916 g_xml_element_table(l_xml_element_count).tagname := 'Skjema';
5917 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5918 g_xml_element_table(l_xml_element_count).tagattrb := 'tittel= "Lnns- og trekkoppgave" gruppeid="5541" spesifikasjonsnummer="7010" skjemanummer="1083" etatid="974761076" blankettnummer="RF-1015-U"';
5919 l_xml_element_count := l_xml_element_count + 1;
5920 --
5921 g_xml_element_table(l_xml_element_count).tagname := 'Innledning-grp-5549';
5922 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5923 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5549"';
5924 l_xml_element_count := l_xml_element_count + 1;
5925 --
5926
5927 FOR l_legemp_rec IN csr_LEGEMP
5928 (l_payroll_action_id)
5929 LOOP
5930
5931 -- g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
5932 g_xml_element_table(l_xml_element_count).tagname := 'Arbeidsgiver-grp-5770';
5933 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5934 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5770"';
5935 l_xml_element_count := l_xml_element_count + 1;
5936 --
5937 -- g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ORG_NUMBER';
5938 g_xml_element_table(l_xml_element_count).tagname :='RapporteringsenhetOrganisasjonsnummer-datadef-21772';
5939 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.organization_number;
5940 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="21772"';
5941 l_xml_element_count := l_xml_element_count + 1;
5942 --
5943 g_xml_element_table(l_xml_element_count).tagname :='OppgavegiverFodselsnummer-datadef-26';
5944 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
5945 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="26"';
5946 l_xml_element_count := l_xml_element_count + 1;
5947 --
5948 -- g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_NAME';
5949 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverNavnPreutfylt-datadef-25795';
5950 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.legal_employer_name;
5951 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25795"';
5952 l_xml_element_count := l_xml_element_count + 1;
5953
5954 --
5955 -- g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_ADDRESS1';
5956 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverAdressePreutfylt-datadef-25796';
5957 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_line_1||' '||l_legemp_rec.add_line_2||' '||l_legemp_rec.add_line_3;
5958 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25796"';
5959 l_xml_element_count := l_xml_element_count + 1;
5960 --
5961 -- g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_POSTCODE1';
5962 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverPostnummerPreutfylt-datadef-25797';
5963 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_post_code;
5964 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25797"';
5965 l_xml_element_count := l_xml_element_count + 1;
5966 --
5967 -- g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER_POSTCODE2';
5968 g_xml_element_table(l_xml_element_count).tagname := 'OppgavegiverPoststedPreutfylt-datadef-25798';
5969 g_xml_element_table(l_xml_element_count).tagvalue := l_legemp_rec.add_post_office;
5970 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25798"';
5971 l_xml_element_count := l_xml_element_count + 1;
5972 --
5973 --g_xml_element_table(l_xml_element_count).tagname := 'LEGAL_EMPLOYER';
5974 g_xml_element_table(l_xml_element_count).tagname := 'Arbeidsgiver-grp-5770';
5975 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
5976 l_xml_element_count := l_xml_element_count + 1;
5977 --
5978 -- Loop for each person within legal employer.
5979 FOR l_person_rec IN csr_PERSON
5980 (l_payroll_action_id
5981 ,l_legemp_rec.legal_employer_id)
5982 LOOP
5983 -- 4334
5984
5985 --g_xml_element_table(l_xml_element_count).tagname := 'PERSON';
5986 g_xml_element_table(l_xml_element_count).tagname := 'Arbeidstaker-grp-5771';
5987 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
5988 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5771"';
5989 l_xml_element_count := l_xml_element_count + 1;
5990 --
5991 -- g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYEE_NUMBER';
5992 g_xml_element_table(l_xml_element_count).tagname := 'AnsattFodselsnummer-datadef-1224';
5993 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employee_number;
5994 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="1224"';
5995 l_xml_element_count := l_xml_element_count + 1;
5996 --
5997 g_xml_element_table(l_xml_element_count).tagname := 'NaringsdrivendeLonnsmottakerOrganisasjonsnummer-datadef-24396';
5998 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
5999 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="24396"';
6000 l_xml_element_count := l_xml_element_count + 1;
6001 --
6002 g_xml_element_table(l_xml_element_count).tagname := 'AnsattFodselsdato-datadef-22734';
6003 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
6004 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="22734"';
6005 l_xml_element_count := l_xml_element_count + 1;
6006 --
6007 -- g_xml_element_table(l_xml_element_count).tagname := 'NAME';
6008 g_xml_element_table(l_xml_element_count).tagname := 'AnsattNavn-datadef-25426';
6009 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.full_name;
6010 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25426"';
6011 l_xml_element_count := l_xml_element_count + 1;
6012 --
6013 -- g_xml_element_table(l_xml_element_count).tagname := 'ADD_LINE_1';
6014 g_xml_element_table(l_xml_element_count).tagname := 'AnsattAdresse-datadef-23161';
6015 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_line_1||' '||l_person_rec.add_line_2||' '||l_person_rec.add_line_3;
6016 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="23161"';
6017 l_xml_element_count := l_xml_element_count + 1;
6018 --
6019 --g_xml_element_table(l_xml_element_count).tagname := 'ADD_POST_CODE';
6020 g_xml_element_table(l_xml_element_count).tagname := 'AnsattPostnummer-datadef-8466';
6021 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_post_code;
6022 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="8466"';
6023 l_xml_element_count := l_xml_element_count + 1;
6024 --
6025 --g_xml_element_table(l_xml_element_count).tagname := 'ADD_POST_OFFICE';
6026 g_xml_element_table(l_xml_element_count).tagname := 'AnsattPostnummer-datadef-8467';
6027 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.add_post_office;
6028 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="8467"';
6029 l_xml_element_count := l_xml_element_count + 1;
6030 --
6031 --g_xml_element_table(l_xml_element_count).tagname := 'TAX_MUNICIPALITY';
6032 g_xml_element_table(l_xml_element_count).tagname := 'AnsattSkattekortkommunenummer-datadef-23289';
6033 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.tax_municipality;
6034 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="23289"';
6035 l_xml_element_count := l_xml_element_count + 1;
6036 --
6037 --
6038 --
6039 -- Start of Employee Work Details
6040 g_xml_element_table(l_xml_element_count).tagname := 'Ansettelsesforhold-grp-6849';
6041 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6042 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="6849"';
6043 l_xml_element_count := l_xml_element_count + 1;
6044 --
6045 --
6046 --
6047 g_xml_element_table(l_xml_element_count).tagname := 'Sjofolk-grp-5773';
6048 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6049 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5773"';
6050 l_xml_element_count := l_xml_element_count + 1;
6051 --
6052 --g_xml_element_table(l_xml_element_count).tagname := 'SEAMEN';
6053 g_xml_element_table(l_xml_element_count).tagname := 'OppgaveSjofolk-datadef-24335';
6054 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.seamen;
6055 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="24335"';
6056 l_xml_element_count := l_xml_element_count + 1;
6057 --
6058 g_xml_element_table(l_xml_element_count).tagname := 'Sjofolk-grp-5773';
6059 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6060 l_xml_element_count := l_xml_element_count + 1;
6061 --
6062 --
6063 --
6064 g_xml_element_table(l_xml_element_count).tagname := 'Ansettelsesperiode-grp-5772';
6065 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6066 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5772"';
6067 l_xml_element_count := l_xml_element_count + 1;
6068 --
6069 --g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_THROUGHOUT';
6070 g_xml_element_table(l_xml_element_count).tagname := 'AnsattAnsettelseHeleAret-datadef-24333';
6071 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employed_throughout;
6072 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="24333"';
6073 l_xml_element_count := l_xml_element_count + 1;
6074 --
6075 --g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_START_DATE';
6076 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsforholdStartdato-datadef-23170';
6077 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employment_start_date;
6078 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="23170"';
6079 l_xml_element_count := l_xml_element_count + 1;
6080 --
6081 --g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_END_DATE';
6082 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsforholdSluttdato-datadef-23171';
6083 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employment_end_date;
6084 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="23171"';
6085 l_xml_element_count := l_xml_element_count + 1;
6086 --
6087 -- g_xml_element_table(l_xml_element_count).tagname := 'EMPLOYED_DATE_OR_DAYS';
6088 g_xml_element_table(l_xml_element_count).tagname := 'ArbeidsforholdAntallDager-datadef-24364';
6089 g_xml_element_table(l_xml_element_count).tagvalue := l_person_rec.employed_date_or_days;
6090 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="24364"';
6091 l_xml_element_count := l_xml_element_count + 1;
6092 --
6093 g_xml_element_table(l_xml_element_count).tagname := 'Ansettelsesperiode-grp-5772';
6094 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6095 l_xml_element_count := l_xml_element_count + 1;
6096 --
6097 --
6098 --
6099 g_xml_element_table(l_xml_element_count).tagname := 'Ansettelsesforhold-grp-6849';
6100 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6101 l_xml_element_count := l_xml_element_count + 1;
6102 -- End of Employee Work Details
6103 --
6104 --
6105 --Extraction of Values of the Fixed Codes
6106 g_fixed_code.DELETE;
6107 g_fixed_code(1).fixed_code := '111-A';
6108 g_fixed_code(1).status := 0;
6109 g_fixed_code(1).displayed := 0;
6110 g_fixed_code(2).fixed_code := '112-A';
6111 g_fixed_code(2).status := 0;
6112 g_fixed_code(2).displayed := 0;
6113 g_fixed_code(3).fixed_code := '116-A';
6114 g_fixed_code(3).status := 0;
6115 g_fixed_code(3).displayed := 0;
6116 g_fixed_code(4).fixed_code := '211';
6117 g_fixed_code(4).status := 0;
6118 g_fixed_code(4).displayed := 0;
6119 g_fixed_code(5).fixed_code := '311';
6120 g_fixed_code(5).status := 0;
6121 g_fixed_code(5).displayed := 0;
6122 g_fixed_code(6).fixed_code := '312';
6123 g_fixed_code(6).status := 0;
6124 g_fixed_code(6).displayed := 0;
6125 g_fixed_code(7).fixed_code := '313';
6126 g_fixed_code(7).status := 0;
6127 g_fixed_code(7).displayed := 0;
6128 g_fixed_code(8).fixed_code := '314';
6129 g_fixed_code(8).status := 0;
6130 g_fixed_code(8).displayed := 0;
6131 g_fixed_code(9).fixed_code := '316';
6132 g_fixed_code(9).status := 0;
6133 g_fixed_code(9).displayed := 0;
6134 g_fixed_code(10).fixed_code := '401';
6135 g_fixed_code(10).status := 0;
6136 g_fixed_code(10).displayed := 0;
6137 g_fixed_code(11).fixed_code := '711';
6138 g_fixed_code(11).status := 0;
6139 g_fixed_code(11).displayed := 0;
6140 g_fixed_code(12).fixed_code := '950';
6141 g_fixed_code(12).status := 0;
6142 g_fixed_code(12).displayed := 0;
6143 g_fixed_code(13).fixed_code :='000';
6144 g_fixed_code(13).status := 0;
6145 g_fixed_code(13).displayed := 0;
6146 --
6147 --
6148 -- Loop through all fixed codes.
6149 --
6150 OPEN csr_PER_FIX_CODE
6151 (l_payroll_action_id
6152 ,l_legemp_rec.legal_employer_id
6153 ,l_person_rec.person_id);
6154 LOOP
6155 FETCH csr_PER_FIX_CODE INTO rec_per_fix_code;
6156 EXIT WHEN csr_PER_FIX_CODE%NOTFOUND;
6157 --
6158 --
6159 -- XML TAG name is based on reporting code.
6160 --
6161 --g_xml_element_table(l_xml_element_count).tagname := 'AMOUNT_' || REPLACE(rec_per_fix_code.code,'-');
6162 --g_xml_element_table(l_xml_element_count).tagvalue := to_char(rec_per_fix_code.amount,lg_format_mask);
6163 --g_xml_element_table(l_xml_element_count).tagtype := 'A';
6164 --l_xml_element_count := l_xml_element_count + 1;
6165 --
6166 FOR rec_fixed_code in 1..13 LOOP
6167 --
6168 IF g_fixed_code(rec_fixed_code).fixed_code = rec_per_fix_code.code THEN
6169 g_fixed_code(rec_fixed_code).status := 1;
6170 g_fixed_code(rec_fixed_code).Amount_value := to_char(rec_per_fix_code.amount,lg_format_mask); --4528
6171 --
6172 IF rec_per_fix_code.code IN ('211','711') THEN
6173 IF rec_per_fix_code.info1_dtype IN ('M','N','A') THEN
6174 OPEN csr_PER_FIX_CODE_ADDL_INFO_CUM(l_payroll_action_id
6175 ,l_legemp_rec.legal_employer_id
6176 ,l_person_rec.person_id
6177 ,rec_per_fix_code.code);
6178 FETCH csr_PER_FIX_CODE_ADDL_INFO_CUM INTO addl_info;
6179 CLOSE csr_PER_FIX_CODE_ADDL_INFO_CUM;
6180 --
6181 g_fixed_code(rec_fixed_code).Addl_Value := to_char(to_number(addl_info),lg_format_mask);
6182 --
6183 ELSE
6184 OPEN csr_PER_FIX_CODE_ADDL_INFO_IND(l_payroll_action_id
6185 ,l_legemp_rec.legal_employer_id
6186 ,l_person_rec.person_id
6187 ,rec_per_fix_code.code);
6188 FETCH csr_PER_FIX_CODE_ADDL_INFO_IND INTO addl_info;
6189 CLOSE csr_PER_FIX_CODE_ADDL_INFO_IND;
6190 --
6191 IF rec_per_fix_code.info1_dtype IN ('D') AND addl_info <> '0' THEN
6192 g_fixed_code(rec_fixed_code).Addl_Value := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(addl_info));
6193 END IF;
6194 --
6195 END IF;
6196 --
6197 --g_xml_element_table(l_xml_element_count).tagname := 'DETAIL_' || REPLACE(rec_per_fix_code.code,'-');
6198 --g_xml_element_table(l_xml_element_count).tagvalue := addl_info;
6199 --l_xml_element_count := l_xml_element_count + 1;
6200 --
6201 END IF;
6202 --
6203 EXIT;
6204 --
6205 END IF;
6206 --
6207 END LOOP;
6208 --
6209 END LOOP;
6210 CLOSE csr_PER_FIX_CODE;
6211 --
6212 -- fixed codes which are not processed for this employee are shown as 0.
6213 --
6214 FOR rec_fixed_code in 1..13 LOOP
6215 --
6216 IF g_fixed_code(rec_fixed_code).status = 0 THEN
6217 --
6218 g_fixed_code(rec_fixed_code).status := 1;
6219 g_fixed_code(rec_fixed_code).Amount_value := to_char(0,lg_format_mask);
6220 g_fixed_code(rec_fixed_code).Addl_Value := to_char(0,lg_format_mask);
6221
6222 --
6223 END IF;
6224 --
6225 END LOOP;
6226 --
6227 --
6228 --
6229 --
6230 -- Start of Tax Code Fixed Code details
6231 g_xml_element_table(l_xml_element_count).tagname := 'MestBrukteKoder-grp-5774 ';
6232 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6233 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5774"';
6234 l_xml_element_count := l_xml_element_count + 1;
6235 --
6236 --
6237 --
6238 g_xml_element_table(l_xml_element_count).tagname := 'LonnOgForskuddstrekk-grp-5775';
6239 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6240 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5775"';
6241 l_xml_element_count := l_xml_element_count + 1;
6242 --
6243 -- Code Details for 111-A -Amount Value
6244 --
6245 g_xml_element_table(l_xml_element_count).tagname := 'AnsattLonn-datadef-25427';
6246 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(1).Amount_Value;
6247 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25427"';
6248 l_xml_element_count := l_xml_element_count + 1;
6249 g_fixed_code(1).displayed := 1;
6250 --
6251 --Code Details for 950 - Amount Value
6252 --
6253 g_xml_element_table(l_xml_element_count).tagname := 'AnsattForskuddstrekk-datadef-25428';
6254 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(12).Amount_Value;
6255 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25428"';
6256 l_xml_element_count := l_xml_element_count + 1;
6257 g_fixed_code(12).displayed := 1;
6258 --
6259 g_xml_element_table(l_xml_element_count).tagname := 'LonnOgForskuddstrekk-grp-5775';
6260 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6261 l_xml_element_count := l_xml_element_count + 1;
6262 --
6263 --
6264 --
6265 g_xml_element_table(l_xml_element_count).tagname := 'TrekkfriBilgodtgjorelse-grp-5776';
6266 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6267 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5776"';
6268 l_xml_element_count := l_xml_element_count + 1;
6269 --
6270 -- Details of Code 711 - Amount Value
6271 --
6272 g_xml_element_table(l_xml_element_count).tagname := 'AnsattBilgodtgjorelseTrekkfri-datadef-25429';
6273 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(11).Amount_Value;
6274 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25429"';
6275 l_xml_element_count := l_xml_element_count + 1;
6276 g_fixed_code(11).displayed := 1;
6277 --
6278 -- Details of Code 711 - Number of Kilometers
6279 --
6280 g_xml_element_table(l_xml_element_count).tagname := 'AnsattBilgodtgjorelseTrekkfriAntallKilometer-datadef-25430';
6281 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(11).Addl_Value;
6282 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25430"';
6283 l_xml_element_count := l_xml_element_count + 1;
6284 --
6285 g_xml_element_table(l_xml_element_count).tagname := 'TrekkfriBilgodtgjorelse-grp-5776';
6286 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6287 l_xml_element_count := l_xml_element_count + 1;
6288 --
6289 --
6290 --
6291 g_xml_element_table(l_xml_element_count).tagname := 'Naringsdrivende-grp-5777';
6292 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6293 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5777"';
6294 l_xml_element_count := l_xml_element_count + 1;
6295 --
6296 -- Details of Code 401 - Amount value
6297 --
6298 g_xml_element_table(l_xml_element_count).tagname := 'NaringsdrivendeUtbetaling-datadef-25434';
6299 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(10).Amount_Value;
6300 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25434"';
6301 l_xml_element_count := l_xml_element_count + 1;
6302 g_fixed_code(10).displayed := 1;
6303 --
6304 g_xml_element_table(l_xml_element_count).tagname := 'Naringsdrivende-grp-5777';
6305 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6306 l_xml_element_count := l_xml_element_count + 1;
6307 --
6308 --
6309 --
6310 g_xml_element_table(l_xml_element_count).tagname := 'KoderSomIkkeForesISelvangivelsen-grp-5778';
6311 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6312 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5778"';
6313 l_xml_element_count := l_xml_element_count + 1;
6314 --
6315 --Details of Code 000 - Amount Value
6316 --
6317 g_xml_element_table(l_xml_element_count).tagname := 'AnsattFeriepenger-datadef-25431';
6318 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(13).Amount_Value;
6319 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25431"';
6320 l_xml_element_count := l_xml_element_count + 1;
6321 g_fixed_code(13).displayed := 1;
6322 --
6323 -- Details of Code 313 - Amount Value
6324 --
6325 g_xml_element_table(l_xml_element_count).tagname := 'AnsattUnderholdsbidrag-datadef-25432';
6326 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(7).Amount_Value;
6327 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25432"';
6328 l_xml_element_count := l_xml_element_count + 1;
6329 g_fixed_code(7).displayed := 1;
6330 --
6331 -- Details of Code 316 - Amount value
6332 --
6333 g_xml_element_table(l_xml_element_count).tagname := 'AnsattUnderholdsbidragIkkeFradragsberegnet-datadef-25433';
6334 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(9).Amount_Value;
6335 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25433"';
6336 l_xml_element_count := l_xml_element_count + 1;
6337 g_fixed_code(9).displayed := 1;
6338 --
6339 g_xml_element_table(l_xml_element_count).tagname := 'KoderSomIkkeForesISelvangivelsen-grp-5778';
6340 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6341 l_xml_element_count := l_xml_element_count + 1;
6342 --
6343 --
6344 --
6345 g_xml_element_table(l_xml_element_count).tagname := 'MestBrukteKoder-grp-5774 ';
6346 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6347 l_xml_element_count := l_xml_element_count + 1;
6348 --
6349 --
6350 --
6351 g_xml_element_table(l_xml_element_count).tagname := 'OvrigeKoder-grp-5779';
6352 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6353 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5779"';
6354 l_xml_element_count := l_xml_element_count + 1;
6355 --
6356 --
6357 --112-A(2),116-A(3),211(4),311(5),312(6),314(8)
6358 -- Fixed Codes
6359 FOR rec_fixed_code in 1..13 LOOP
6360 --
6361 IF g_fixed_code(rec_fixed_code).displayed = 0 THEN
6362 --
6363 g_xml_element_table(l_xml_element_count).tagname := 'OvrigeLTOKoder-grp-5806';
6364 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6365 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5806"';
6366 l_xml_element_count := l_xml_element_count + 1;
6367 --
6368 IF g_fixed_code(rec_fixed_code).fixed_code = '211' THEN
6369 --
6370 g_xml_element_table(l_xml_element_count).tagname := 'LonnoppgavekodeKodenummer-datadef-25435';
6371 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(rec_fixed_code).fixed_code;
6372 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25435"';
6373 l_xml_element_count := l_xml_element_count + 1;
6374 --
6375 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop1-datadef-25437';
6376 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(rec_fixed_code).Amount_Value;
6377 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25437"';
6378 l_xml_element_count := l_xml_element_count + 1;
6379 --
6380 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettFraDato-datadef-25444';
6381 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(rec_fixed_code).Addl_Value;
6382 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25444"';
6383 l_xml_element_count := l_xml_element_count + 1;
6384 --
6385 ELSE
6386 --
6387 g_xml_element_table(l_xml_element_count).tagname := 'LonnoppgavekodeKodenummer-datadef-25435';
6388 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(rec_fixed_code).fixed_code;
6389 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25435"';
6390 l_xml_element_count := l_xml_element_count + 1;
6391 --
6392 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop1-datadef-25437';
6393 g_xml_element_table(l_xml_element_count).tagvalue := g_fixed_code(rec_fixed_code).Amount_Value;
6394 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25437"';
6395 l_xml_element_count := l_xml_element_count + 1;
6396 --
6397 END IF;
6398 --
6399 g_xml_element_table(l_xml_element_count).tagname := 'OvrigeLTOKoder-grp-5806';
6400 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6401 l_xml_element_count := l_xml_element_count + 1;
6402
6403 g_fixed_code(rec_fixed_code).displayed := 1; --4775
6404 --
6405 END IF;
6406 --
6407 END LOOP;
6408
6409 --Start of Summary Codes
6410 FOR l_summ_code_rec IN csr_SUMMARY_CODES
6411 (l_payroll_action_id
6412 ,l_legemp_rec.legal_employer_id
6413 ,l_person_rec.person_id)
6414 LOOP
6415
6416 g_summary_code_orid.DELETE;
6417 g_summary_code_orid(1).orid_value := l_summ_code_rec.info1_orid;
6418 g_summary_code_orid(1).info_data := l_summ_code_rec.info1;
6419 g_summary_code_orid(1).info_prompt := l_summ_code_rec.info1_prompt;
6420 g_summary_code_orid(1).info_datatype := l_summ_code_rec.info1_dtype;
6421 --
6422 g_summary_code_orid(2).orid_value := l_summ_code_rec.info2_orid;
6423 g_summary_code_orid(2).info_data := l_summ_code_rec.info2;
6424 g_summary_code_orid(2).info_prompt := l_summ_code_rec.info2_prompt;
6425 g_summary_code_orid(2).info_datatype := l_summ_code_rec.info2_dtype;
6426 --
6427 g_summary_code_orid(3).orid_value := l_summ_code_rec.info3_orid;
6428 g_summary_code_orid(3).info_data := l_summ_code_rec.info3;
6429 g_summary_code_orid(3).info_prompt := l_summ_code_rec.info3_prompt;
6430 g_summary_code_orid(3).info_datatype := l_summ_code_rec.info3_dtype;
6431 --
6432 g_summary_code_orid(4).orid_value := l_summ_code_rec.info4_orid;
6433 g_summary_code_orid(4).info_data := l_summ_code_rec.info4;
6434 g_summary_code_orid(4).info_prompt := l_summ_code_rec.info4_prompt;
6435 g_summary_code_orid(4).info_datatype := l_summ_code_rec.info4_dtype;
6436 --
6437 g_summary_code_orid(5).orid_value := l_summ_code_rec.info5_orid;
6438 g_summary_code_orid(5).info_data := l_summ_code_rec.info5;
6439 g_summary_code_orid(5).info_prompt := l_summ_code_rec.info5_prompt;
6440 g_summary_code_orid(5).info_datatype := l_summ_code_rec.info5_dtype;
6441 --
6442 g_summary_code_orid(6).orid_value := l_summ_code_rec.info6_orid;
6443 g_summary_code_orid(6).info_data := l_summ_code_rec.info6;
6444 g_summary_code_orid(6).info_prompt := l_summ_code_rec.info6_prompt;
6445 g_summary_code_orid(6).info_datatype := l_summ_code_rec.info6_dtype;
6446
6447
6448
6449 --
6450 g_xml_element_table(l_xml_element_count).tagname := 'OvrigeLTOKoder-grp-5806';
6451 g_xml_element_table(l_xml_element_count).tagvalue := '_START_';
6452 g_xml_element_table(l_xml_element_count).tagattrb := 'gruppeid="5806"';
6453 l_xml_element_count := l_xml_element_count + 1;
6454 --
6455 g_xml_element_table(l_xml_element_count).tagname := 'LonnoppgavekodeKodenummer-datadef-25435';
6456 g_xml_element_table(l_xml_element_count).tagvalue := l_summ_code_rec.code;
6457 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25435"';
6458 l_xml_element_count := l_xml_element_count + 1;
6459 --
6460 g_xml_element_table(l_xml_element_count).tagname := 'LonnsytelserAvgiftsplikt-datadef-25436';
6461 g_xml_element_table(l_xml_element_count).tagvalue := ' ';
6462 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25436"';
6463 l_xml_element_count := l_xml_element_count + 1;
6464 --
6465 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop1-datadef-25437';
6466 g_xml_element_table(l_xml_element_count).tagvalue := to_char(l_summ_code_rec.amount,lg_format_mask);
6467 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25437"';
6468 l_xml_element_count := l_xml_element_count + 1;
6469 --
6470 --
6471
6472 FOR l_summ_var IN 1..6 LOOP
6473 IF g_summary_code_orid(l_summ_var).orid_value = '25438' THEN
6474 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop2-datadef-25438';
6475 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6476 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6477 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6478 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6479 ELSE
6480 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6481 END IF;
6482 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25438"';
6483 l_xml_element_count := l_xml_element_count + 1;
6484 EXIT;
6485 END IF;
6486 END LOOP;
6487 --
6488 --
6489 FOR l_summ_var IN 1..6 LOOP
6490 IF g_summary_code_orid(l_summ_var).orid_value = '25439' THEN
6491 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettAntall-datadef-25439';
6492 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6493 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6494 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6495 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6496 ELSE
6497 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6498 END IF;
6499 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25439"';
6500 l_xml_element_count := l_xml_element_count + 1;
6501 EXIT;
6502 END IF;
6503 END LOOP;
6504 --
6505 --
6506
6507 FOR l_summ_var IN 1..6 LOOP
6508 IF g_summary_code_orid(l_summ_var).orid_value = '25440' THEN
6509 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettLandkode1-datadef-25440';
6510 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6511 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6512 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6513 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6514 ELSE
6515 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6516 END IF;
6517 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25440"';
6518 l_xml_element_count := l_xml_element_count + 1;
6519 EXIT;
6520 END IF;
6521 END LOOP;
6522 --
6523 --
6524
6525 FOR l_summ_var IN 1..6 LOOP
6526 IF g_summary_code_orid(l_summ_var).orid_value = '25441' THEN
6527 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettLandkode2-datadef-25441';
6528 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6529 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6530 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6531 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6532 ELSE
6533 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6534 END IF;
6535 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25441"';
6536 l_xml_element_count := l_xml_element_count + 1;
6537 EXIT;
6538 END IF;
6539 END LOOP;
6540 --
6541 --
6542
6543 FOR l_summ_var IN 1..6 LOOP
6544 IF g_summary_code_orid(l_summ_var).orid_value = '25442' THEN
6545 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettAr-datadef-25442';
6546 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6547 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6548 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6549 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6550 ELSE
6551 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6552 END IF;
6553 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25442"';
6554 l_xml_element_count := l_xml_element_count + 1;
6555 EXIT;
6556 END IF;
6557 END LOOP;
6558 --
6559 --
6560
6561 FOR l_summ_var IN 1..6 LOOP
6562 IF g_summary_code_orid(l_summ_var).orid_value = '25443' THEN
6563 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop3-datadef-25443 ';
6564 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6565 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6566 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6567 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6568 ELSE
6569 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6570 END IF;
6571 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25443"';
6572 l_xml_element_count := l_xml_element_count + 1;
6573 EXIT;
6574 END IF;
6575 END LOOP;
6576 --
6577 --
6578
6579 FOR l_summ_var IN 1..6 LOOP
6580 IF g_summary_code_orid(l_summ_var).orid_value = '25444' THEN
6581 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettFraDato-datadef-25444';
6582 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6583 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6584 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6585 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6586 ELSE
6587 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6588 END IF;
6589 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25444"';
6590 l_xml_element_count := l_xml_element_count + 1;
6591 EXIT;
6592 END IF;
6593 END LOOP;
6594 --
6595 --
6596
6597 FOR l_summ_var IN 1..6 LOOP
6598 IF g_summary_code_orid(l_summ_var).orid_value = '25445' THEN
6599 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettTilDato-datadef-25445';
6600 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6601 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6602 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6603 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6604 ELSE
6605 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6606 END IF;
6607 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25445"';
6608 l_xml_element_count := l_xml_element_count + 1;
6609 EXIT;
6610 END IF;
6611 END LOOP;
6612 --
6613 --
6614
6615 FOR l_summ_var IN 1..6 LOOP
6616 IF g_summary_code_orid(l_summ_var).orid_value = '25446' THEN
6617 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop4-datadef-25446';
6618 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6619 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6620 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6621 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6622 ELSE
6623 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6624 END IF;
6625 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25446"';
6626 l_xml_element_count := l_xml_element_count + 1;
6627 EXIT;
6628 END IF;
6629 END LOOP;
6630 --
6631 --
6632
6633 FOR l_summ_var IN 1..6 LOOP
6634 IF g_summary_code_orid(l_summ_var).orid_value = '25447' THEN
6635 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettBelop5-datadef-25447';
6636 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6637 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6638 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6639 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6640 ELSE
6641 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6642 END IF;
6643 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25447"';
6644 l_xml_element_count := l_xml_element_count + 1;
6645 EXIT;
6646 END IF;
6647 END LOOP;
6648 --
6649 --
6650
6651 FOR l_summ_var IN 1..6 LOOP
6652 IF g_summary_code_orid(l_summ_var).orid_value = '25448' THEN
6653 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettAnnenOpplysning1-datadef-25448';
6654 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6655 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6656 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6657 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6658 ELSE
6659 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6660 END IF;
6661 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25448"';
6662 l_xml_element_count := l_xml_element_count + 1;
6663 EXIT;
6664 END IF;
6665 END LOOP;
6666 --
6667 --
6668
6669 FOR l_summ_var IN 1..6 LOOP
6670 IF g_summary_code_orid(l_summ_var).orid_value = '25449' THEN
6671 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettAnnenOpplysning2-datadef-25449';
6672 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6673 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6674 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6675 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6676 ELSE
6677 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6678 END IF;
6679 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25449"';
6680 l_xml_element_count := l_xml_element_count + 1;
6681 EXIT;
6682 END IF;
6683 END LOOP;
6684 --
6685 --
6686
6687 FOR l_summ_var IN 1..6 LOOP
6688 IF g_summary_code_orid(l_summ_var).orid_value = '25450' THEN
6689 g_xml_element_table(l_xml_element_count).tagname := 'LonnsoppgaveTabelloppsettAnnenOpplysning3-datadef-25450';
6690 IF g_summary_code_orid(l_summ_var).info_datatype IN ('M','A','N','MC') THEN
6691 g_xml_element_table(l_xml_element_count).tagvalue := to_char(fnd_number.canonical_to_number(g_summary_code_orid(l_summ_var).info_data), lg_format_mask);
6692 ELSIF g_summary_code_orid(l_summ_var).info_datatype = 'D' AND g_summary_code_orid(l_summ_var).info_data <> '0' THEN
6693 g_xml_element_table(l_xml_element_count).tagvalue := fnd_date.date_to_displaydate(fnd_date.canonical_to_date(g_summary_code_orid(l_summ_var).info_data));
6694 ELSE
6695 g_xml_element_table(l_xml_element_count).tagvalue := g_summary_code_orid(l_summ_var).info_data;
6696 END IF;
6697 g_xml_element_table(l_xml_element_count).tagattrb := 'orid="25450"';
6698 l_xml_element_count := l_xml_element_count + 1;
6699 EXIT;
6700 END IF;
6701 END LOOP;
6702 --
6703 --
6704 g_xml_element_table(l_xml_element_count).tagname := 'OvrigeLTOKoder-grp-5806';
6705 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6706 l_xml_element_count := l_xml_element_count + 1;
6707 --
6708 --
6709 END LOOP;
6710 --
6711 --
6712 g_xml_element_table(l_xml_element_count).tagname := 'OvrigeKoder-grp-5779';
6713 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6714 l_xml_element_count := l_xml_element_count + 1;
6715 --
6716 --
6717 --
6718 --g_xml_element_table(l_xml_element_count).tagname := 'PERSON';
6719 g_xml_element_table(l_xml_element_count).tagname := 'Arbeidstaker-grp-5771';
6720 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6721 l_xml_element_count := l_xml_element_count + 1;
6722 --
6723
6724 END LOOP;
6725 --
6726 END LOOP;
6727
6728 g_xml_element_table(l_xml_element_count).tagname := 'Innledning-grp-5549';
6729 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6730 l_xml_element_count := l_xml_element_count + 1;
6731 --
6732 g_xml_element_table(l_xml_element_count).tagname := 'Skjema';
6733 g_xml_element_table(l_xml_element_count).tagvalue := '_END_';
6734 l_xml_element_count := l_xml_element_count + 1;
6735
6736 --
6737 write_to_clob(p_xml);
6738 --
6739 hr_utility.set_location('Leaving ' || l_proc_name, 1000);
6740 END get_employee_certificate_xml;
6741 --
6742 --
6743 --
6744 END pay_no_eoy_archive;