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