[Home] [Help]
PACKAGE BODY: APPS.PAY_IE_P35_XML_PKG
Source
1 PACKAGE BODY PAY_IE_P35_XML_PKG AS
2 /* $Header: pyiep35p.pkb 120.11.12010000.1 2008/07/27 22:50:15 appldev ship $ */
3
4 -------------------------------------------------------------------------------
5 -- get_IANA_charset
6 -------------------------------------------------------------------------------
7 FUNCTION get_IANA_charset RETURN VARCHAR2 IS
8 CURSOR csr_get_iana_charset IS
9 SELECT tag
10 FROM fnd_lookup_values
11 WHERE lookup_type = 'FND_ISO_CHARACTER_SET_MAP'
12 AND lookup_code = SUBSTR(USERENV('LANGUAGE'),
13 INSTR(USERENV('LANGUAGE'), '.') + 1)
14 AND language = 'US';
15
16 lv_iana_charset fnd_lookup_values.tag%type;
17 BEGIN
18 OPEN csr_get_iana_charset;
19 FETCH csr_get_iana_charset INTO lv_iana_charset;
20 CLOSE csr_get_iana_charset;
21
22 hr_utility.trace('IANA Charset = '||lv_iana_charset);
23 RETURN (lv_iana_charset);
24 END get_IANA_charset;
25 --
26 -------------------------------------------------------------------------------
27 -- WRITETOCLOB
28 --------------------------------------------------------------------------------
29 PROCEDURE WritetoCLOB (p_xfdf_string out nocopy clob)
30 IS
31 l_str varchar2(240);
32 l_str1 varchar2(6000);
33 BEGIN
34 -- bug 5852148
35 --l_str := '<?xml version="1.0" encoding="UTF-8"?> <P35LFile></P35LFile>';
36 l_str := '<?xml version="1.0" encoding="' || get_IANA_charset ||'"?> <P35LFile></P35LFile>';
37 dbms_lob.createtemporary(p_xfdf_string,FALSE,DBMS_LOB.CALL);
38 dbms_lob.open(p_xfdf_string,dbms_lob.lob_readwrite);
39 hr_utility.set_location('TableCnt' || to_char(vXMLTable.count),13);
40 IF vXMLTable.count > 0 THEN
41 FOR ctr_table IN vXMLTable.FIRST .. vXMLTable.LAST LOOP
42 -- Bug 4705094
43 l_str1 := vXMLTable(ctr_table).xmlString;
44 dbms_lob.writeAppend( p_xfdf_string, length(l_str1), l_str1);
45 hr_utility.set_location(to_char(ctr_table),15);
46 END LOOP;
47 ELSE
48 l_str1 := l_str;
49 dbms_lob.writeAppend( p_xfdf_string, length(l_str1), l_str1 );
50 END IF;
51 END WritetoCLOB;
52 --------------------------------------------------------------------------------
53 -- POPULATE_P35_REPORT
54 --------------------------------------------------------------------------------
55 PROCEDURE populate_p35_rep
56 (p_bg_id IN NUMBER
57 ,p_emp_no IN VARCHAR2
58 ,p_payroll IN NUMBER
59 ,p_assignment_set IN NUMBER
60 ,p_end_date IN VARCHAR2
61 ,p_weeks IN VARCHAR2
62 ,p_template_name IN VARCHAR2
63 ,p_xml OUT NOCOPY CLOB
64 )IS
65 BEGIN
66 --hr_utility.TRACE_ON( null, 'IEP35XML' );
67 populate_plsql_table(p_bg_id
68 ,p_emp_no
69 ,p_payroll
70 ,p_assignment_set
71 ,p_end_date
72 ,p_weeks);
73 WritetoCLOB (p_xml);
74 END populate_p35_rep;
75 --------------------------------------------------------------------------------
76 -- POPULATE_PLSQL_TABLE
77 --------------------------------------------------------------------------------
78 PROCEDURE populate_plsql_table
79 (p_bg_id IN NUMBER
80 ,p_emp_no IN VARCHAR2
81 ,p_payroll IN NUMBER
82 ,p_assignment_set IN NUMBER
83 ,p_end_date IN VARCHAR2
84 ,p_weeks IN VARCHAR2) IS
85
86 l_start_date DATE;
87 l_end_date DATE;
88 l_p_payroll number;
89 l_assignment_set number;
90 l_set_flag hr_assignment_set_amendments.include_or_exclude%TYPE;
91
92 CURSOR csr_get_flag_from_set
93 is
94 select distinct hasa.include_or_exclude from hr_assignment_set_amendments hasa, hr_assignment_sets has
95 where hasa.assignment_set_id = has.assignment_set_id
96 and has.business_group_id = p_bg_id
97 and has.assignment_set_id = l_assignment_set;
98
99 CURSOR getPayrollAction IS
100 SELECT distinct paa.payroll_action_id, paa.assignment_action_id,
101 nvl(SUBSTR(pactd.action_information1,1,9),' ') PPSN,
102 -- for bug 5301598
103 nvl(SUBSTR(pactd.action_information2,1,12),' ') Works,
104 pactd.action_information3 TotIWeeks,
105 pactd.action_information4 IClass,
106 pactd.action_information5 SClass,
107 pactd.action_information6 SWeeks,
108 pactd.action_information7 TClass,
109 pactd.action_information8 TWeeks,
110 pactd.action_information9 FClass,
111 pactd.action_information10 FWeeks,
112 substr(pactd.action_information11,1,instr(pactd.action_information11,'-',1)-1) FifthClass,
113 substr(pactd.action_information11,instr(pactd.action_information11,'-',1)+1,length(pactd.action_information11)) FifthWeek,
114 pactd.action_information12 NetTax,
115 pactd.action_information13 TaxPaid,
116 pactd.action_information14 EmpPRSI,
117 pactd.action_information15 TotPRSI,
118 pactd.action_information16 Pay,
119 pactd.action_information17 TaxBasis,
120 pactd.action_information18 SurName,
121 pactd.action_information19 FirstName,
122 to_char(to_date(trim(pactd.action_information20),'DD-MM-YYYY'),'DD/MM/YYYY') DOB,
123 pactd.action_information21 Address1,
124 pactd.action_information22 Address2,
125 pactd.action_information23 Address3,
126 to_char(to_date(trim(pactd.action_information24),'DD-MM-YYYY'),'DD/MM/YYYY') StartDate,
127 decode(to_char(to_date(trim(pactd.action_information25),'DD-MM-YYYY'),'DD/MM/YYYY'),'31/12/4712',null,to_char(to_date(trim(pactd.action_information25),'DD-MM-YYYY'),'DD/MM/YYYY')) EndDate,
128 pactd.action_information26 Credit,
129 pactd.action_information27
130 FROM pay_assignment_actions paa,
131 pay_payroll_actions ppa,
132 pay_assignment_actions paad,
133 pay_action_information pactd,
134 pay_action_information pai,
135 per_assignments_f paaf,
136 pay_all_payrolls_f ppf,
137 hr_soft_coding_keyflex flex
138 WHERE paa.payroll_action_id = ppa.payroll_action_id
139 AND paa.action_status = 'C'
140 AND ppa.action_type ='X'
141 AND ppa.business_group_id = p_bg_id
142 AND paa.source_action_id is null
143 AND pai.action_context_id = paa.assignment_action_id
144 AND pai.action_information_category = 'IE P35 DETAIL'
145 AND ppa.report_type = 'IEP35'
146 AND paa.assignment_id = pai.assignment_id
147 AND paaf.assignment_id = paa.assignment_id
148 AND paaf.business_group_id = ppa.business_group_id
149 --For Detail Record
150 AND paad.payroll_action_id = paa.payroll_action_id
151 AND pactd.action_information_category = 'IE P35 DETAIL'
152 AND pactd.action_context_type = 'AAP'
153 AND paad.assignment_action_id = pactd.action_context_id
154 AND paad.assignment_action_id = paa.assignment_action_id
155 --End of Detail Record
156 AND paaf.payroll_id = ppf.payroll_id
157 AND ppf.effective_start_date <= l_end_date
158 AND ppf.effective_end_date >= l_start_date
159 AND flex.soft_coding_keyflex_id = ppf.soft_coding_keyflex_id
160 AND flex.segment4 = p_emp_no
161 AND paaf.effective_start_date <= l_end_date
162 AND paaf.effective_end_date >= l_start_date
163 AND TO_DATE (
164 pay_ie_p35.get_parameter (
165 ppa.payroll_action_id,
166 'END_DATE'
167 ),
168 'YYYY/MM/DD'
169 ) BETWEEN l_start_date AND l_end_date
170 AND (ppf.payroll_id in (select b.payroll_id from per_assignments_f a,per_assignments_f b
171 where a.payroll_id = l_p_payroll
172 and a.person_id = b.person_id
173 and a.person_id = paaf.person_id
174 --bug 6642916
175 and a.effective_start_date<= l_end_date
176 and a.effective_end_date >= l_start_date) or l_p_payroll is null)
177 AND ((l_assignment_set is not null
178 AND (l_set_flag ='I' AND EXISTS(SELECT 1
179 FROM hr_assignment_set_amendments hasa
180 , hr_assignment_sets has
181 , per_assignments_f paf
182 WHERE has.assignment_set_id = hasa.assignment_set_id
183 AND has.business_group_id = p_bg_id
184 AND has.assignment_set_id = l_assignment_set
185 AND hasa.assignment_id = paf.assignment_id
186 AND paf.person_id = paaf.person_id)
187
188 OR l_set_flag = 'E' AND NOT EXISTS(SELECT 1
189 FROM hr_assignment_set_amendments hasa
190 , hr_assignment_sets has
191 , per_assignments_f paf
192 WHERE has.assignment_set_id = hasa.assignment_set_id
193 AND has.business_group_id = p_bg_id
194 AND has.assignment_set_id = l_assignment_set
195 AND hasa.assignment_id = paf.assignment_id
196 AND paf.person_id = paaf.person_id)))
197 OR l_assignment_set IS NULL)
198 ORDER BY SurName, FirstName;
199
200 CURSOR csr_get_pension_details (p_payroll_action_id NUMBER, p_assignment_action_id NUMBER) IS
201 SELECT count(decode(pact.action_information2,0,null,null,null,1)) EMP_RBS,
202 sum(to_number(pact.action_information2)) EMP_RBS_BAL,
203 count(decode(pact.action_information3,0,null,null,null,1)) EMPR_RBS,
204 sum(to_number(pact.action_information3)) EMPR_RBS_BAL,
205 count(decode(pact.action_information4,0,null,null,null,1)) EMP_PRSA,
206 sum(to_number(pact.action_information4)) EMP_PRSA_BAL,
207 count(decode(pact.action_information5,0,null,null,null,1)) EMPR_PRSA,
208 sum(to_number(pact.action_information5)) EMPR_PRSA_BAL,
209 count(decode(pact.action_information6,0,null,null,null,1)) EMP_RAC,
210 sum(to_number(pact.action_information6)) EMP_RAC_BAL,
211 sum(to_number(pact.action_information1)) TAXABLEBENEFITS
212 FROM pay_assignment_actions paa
213 ,pay_action_information pact
214 WHERE paa.payroll_action_id = p_payroll_action_id
215 and paa.assignment_action_id = pact.action_context_id
216 and paa.assignment_action_id = p_assignment_action_id
217 and paa.source_action_id is null
218 and pact.action_information_category = 'IE P35 ADDITIONAL DETAILS'
219 and pact.action_context_type = 'AAP';
220
221 CURSOR csr_header_footer_info(p_payroll_action_id NUMBER) IS
222 SELECT
223 to_char(ppa.request_id),
224 p_end_date,
225 to_char(ppa.effective_date,'dd-mm-yyyy'),
226 pact.action_information1,
227 pact.action_information26 ,
228 pact.action_information27 ,
229 pact.action_information28 ,
230 pact.action_information5 ,
231 pact.action_information6 ,
232 pact.action_information7 ,
233 decode(trim(p_weeks),'Y','1','0'),
234 'Oracle HRMS',
235 'E'
236 FROM pay_payroll_actions ppa
237 ,pay_action_information pact
238 WHERE ppa.payroll_action_id = p_payroll_action_id
239 AND pact.action_context_id = ppa.payroll_action_id
240 AND pact.action_information_category = 'ADDRESS DETAILS'
241 AND pact.action_context_type = 'PA';
242
243 r_payroll_action_id NUMBER;
244 r_assgt_action_id NUMBER;
245 l_request_id NUMBER;
246 l_tax_year VARCHAR2(30);
247 l_date VARCHAR2(30);
248 l_empr_no VARCHAR2(50);
249 l_empr_name VARCHAR2(150);
250 l_contact_name VARCHAR2 (150);
251 l_phone VARCHAR2 (30);
252 l_addr1 VARCHAR2 (240);
253 l_addr2 VARCHAR2 (240);
254 l_addr3 VARCHAR2 (240);
255 l_week53 VARCHAR2 (15);
256 l_payroll VARCHAR2 (50);
257 l_currency VARCHAR2 (30);
258 l_tot_pay NUMBER := 0;
259 l_tot_pay_rnd NUMBER := 0;
260 l_tot_tax NUMBER := 0;
261 l_tot_prsi NUMBER := 0;
262 l_tot_emp_prsi NUMBER := 0;
263 l_emp_rbs NUMBER := 0;
264 l_emp_rbs_bal NUMBER := 0;
265 l_empr_rbs NUMBER := 0;
266 l_empr_rbs_bal NUMBER := 0;
267 l_emp_prsa NUMBER := 0;
268 l_emp_prsa_bal NUMBER := 0;
269 l_empr_prsa NUMBER := 0;
270 l_empr_prsa_bal NUMBER := 0;
271 l_emp_rac NUMBER := 0;
272 l_emp_rac_bal NUMBER := 0;
273 l_taxable_benefits NUMBER := 0;
274 flag NUMBER := 0;
275 c_pension csr_get_pension_details%ROWTYPE;
276 l_cess_date VARCHAR2(30);
277 l_initial_class pay_action_information.action_information4%TYPE;
278
279 BEGIN
280
281
282 -- hr_utility.trace_on(null,'vikp35');
283 hr_utility.set_location('Start of Generation...', 1);
284
285 vXMLTable.DELETE;
286 vCtr := 1;
287 --vXMLTable(vCtr).xmlString := '<?xml version="1.0" encoding="UTF-8"?> <P35LFile>'; -- get_IANA_charset
288 vXMLTable(vCtr).xmlString := '<?xml version="1.0" encoding="'|| get_IANA_charset ||'"?> <P35LFile>';
289 vCtr := vCtr + 1;
290 l_start_date := PAY_IE_P35_XML_PKG.get_start_date();
291 -- l_end_date := PAY_IE_P35_XML_PKG.get_end_date();
292 l_end_date := fnd_date.canonical_to_date(p_end_date); --4641756
293 hr_utility.set_location('End Date : '||p_end_date,100);
294
295 IF p_payroll = 0 then
296 l_p_payroll := NULL;
297 ELSE
298 l_p_payroll := p_payroll;
299 END IF;
300 IF p_assignment_set = 0 then
301 l_assignment_set := NULL;
302 ELSE
303 l_assignment_set := p_assignment_set;
304 END IF;
305 OPEN csr_get_flag_from_set;
306 FETCH csr_get_flag_from_set into l_set_flag;
307 CLOSE csr_get_flag_from_set;
308
309 FOR c_action IN getPayrollAction LOOP
310 flag := flag + 1;
311 hr_utility.set_location('Loop Count ' || to_char(flag), 1);
312 hr_utility.set_location('pactid' || to_char(r_payroll_action_id),13);
313 IF flag = 1 THEN
314 OPEN csr_header_footer_info(c_action.payroll_action_id);
315 FETCH csr_header_footer_info into l_request_id, l_tax_year,l_date,l_empr_no,l_empr_name,
316 l_contact_name,l_phone,l_addr1,l_addr2,l_addr3,l_week53,l_payroll,l_currency;
317 CLOSE csr_header_footer_info;
318 hr_utility.set_location('emprno' || to_char(l_empr_no),13);
319
320 vXMLTable(vCtr).xmlString := '<TaxYear>' || to_char(fnd_date.canonical_to_date(l_tax_year),'YYYY') || '</TaxYear>';
321 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RequestID>' || l_request_id || '</RequestID>';
322 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Date>' || l_date || '</Date>';
323 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<EmployerNumber>' || l_empr_no || '</EmployerNumber>';
324 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<EmployerName>' || l_empr_name || '</EmployerName>';
325 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<ContactName>' || l_contact_name || '</ContactName>';
326 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Phone>' || l_phone || '</Phone>';
327 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Address1><![CDATA[' || l_addr1 || ']]></Address1>';
328 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Address2><![CDATA[' || l_addr2 || ']]></Address2>';
329 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Address3><![CDATA[' || l_addr3 || ']]></Address3>';
330 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Week53>' || l_week53 || '</Week53>';
331 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Payroll>' || l_payroll || '</Payroll>';
332 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Currency>' || l_currency || '</Currency>';
333 vCtr := vCtr + 1;
334 END IF;
335 hr_utility.set_location('Fetching detail...', 3);
336 hr_utility.set_location('Fetching Pension...', 3);
337 OPEN csr_get_pension_details (c_action.payroll_action_id, c_action.assignment_action_id);
338 FETCH csr_get_pension_details into c_pension;
339 CLOSE csr_get_pension_details;
340 l_emp_rbs := l_emp_rbs + c_pension.EMP_RBS;
341 l_emp_rbs_bal := l_emp_rbs_bal + c_pension.EMP_RBS_BAL;
342 l_empr_rbs := l_empr_rbs + c_pension.EMPR_RBS;
343 l_empr_rbs_bal := l_empr_rbs_bal + c_pension.EMPR_RBS_BAL;
344 l_emp_prsa := l_emp_prsa + c_pension.EMP_PRSA;
345 l_emp_prsa_bal := l_emp_prsa_bal + c_pension.EMP_PRSA_BAL;
346 l_empr_prsa := l_empr_prsa + c_pension.EMPR_PRSA;
347 l_empr_prsa_bal := l_empr_prsa_bal + c_pension.EMPR_PRSA_BAL;
348 l_emp_rac := l_emp_rac + c_pension.EMP_RAC;
349 l_emp_rac_bal := l_emp_rac_bal + c_pension.EMP_RAC_BAL;
350 l_taxable_benefits := l_taxable_benefits + c_pension.TAXABLEBENEFITS;
351 hr_utility.set_location('Generating...', 5);
352 hr_utility.set_location('TableCnt' || to_char(vXMLTable.count),13);
353
354 l_cess_date:=c_action.EndDate;
355 IF trim(l_cess_date) = '31-12-4712' THEN
356 l_cess_date := ' ';
357 END IF;
358 hr_utility.set_location('P1..'||c_action.Works,100);
359 vXMLTable(vCtr).xmlString := '<G_P35L>';
360 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<PPSN>' || (c_action.PPSN) || '</PPSN>';
361 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Works>' || (c_action.Works) || '</Works>';
362 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotIWeeks>' || (c_action.TotIWeeks) || '</TotIWeeks>';
363 hr_utility.set_location('P2..'||c_action.Works,100);
364 if instr(c_action.IClass,'-') > 0 then
365 l_initial_class := substr(c_action.IClass,1,instr(c_action.IClass,'-',1)-1);
366 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<IClass>' || (l_initial_class) || '</IClass>';
367 else
368 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<IClass>' || (c_action.IClass) || '</IClass>';
369 end if;
370 hr_utility.set_location('P3..'||c_action.Works,100);
371 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<SClass>' || (c_action.SClass) || '</SClass>';
372 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<SWeeks>' || (c_action.SWeeks) || '</SWeeks>';
373 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TClass>' || (c_action.TClass) || '</TClass>';
374 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TWeeks>' || (c_action.TWeeks) || '</TWeeks>';
375 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<FClass>' || (c_action.FClass) || '</FClass>';
376 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<FWeeks>' || (c_action.FWeeks) || '</FWeeks>';
377 hr_utility.set_location('P4..'||c_action.Works,100);
378 IF c_action.FifthClass is not null then
379 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<FifthClass> Note-: PRSI Fifth Class ' || (c_action.FifthClass) || ' with Insurable Weeks </FifthClass>';
380 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Fmessage>' || (c_action.FifthWeek) || ' exists </Fmessage>';
381 ELSE
382 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<FifthClass>' || (c_action.FifthClass) || '</FifthClass>';
383 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Fmessage>' || (c_action.FifthClass) || '</Fmessage>';
384 END IF;
385 hr_utility.set_location('P5..'||c_action.Works,100);
386 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<NetTax>' || to_char(to_number(c_action.NetTax),'FM99999999990D00') || '</NetTax>';
387 l_tot_tax := l_tot_tax + to_number(c_action.NetTax);
388 vCtr := vCtr + 1;
389 vXMLTable(vCtr).xmlString := '<TaxPaid>' || (c_action.TaxPaid) || '</TaxPaid>';
390 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<EmpPRSI>' || to_char(to_number(c_action.EmpPRSI),'FM99999999990D00') || '</EmpPRSI>';
391 l_tot_emp_prsi := l_tot_emp_prsi + to_number(c_action.EmpPRSI);
392 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotPRSI>' || to_char(to_number(c_action.TotPRSI),'FM99999999990D00') || '</TotPRSI>';
393 l_tot_prsi := l_tot_prsi + to_number(c_action.TotPRSI);
394 hr_utility.set_location('After Adding....TotPRSI=' || l_tot_prsi, 10);
395 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Pay>' || to_char(to_number(c_action.Pay),'FM99999999990D00') || '</Pay>';
396 l_tot_pay := l_tot_pay + to_number(c_action.Pay);
397 l_tot_pay_rnd := l_tot_pay_rnd + round(to_number(c_action.Pay),0);
398 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TaxBasis>' || (c_action.TaxBasis) || '</TaxBasis>';
399 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<SurName><![CDATA[' || (c_action.SurName) || ']]></SurName>';
400 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<FirstName><![CDATA[' || (c_action.FirstName) || ']]></FirstName>';
401 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<DOB>' || (c_action.DOB) || '</DOB>';
402 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Address><![CDATA[' || (c_action.Address1) || ']]></Address>';
403 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<StartDate>' || (c_action.StartDate) || '</StartDate>';
404 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<EndDate>' || l_cess_date || '</EndDate>';
405 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<Credit>' || to_char(to_number(c_action.Credit),'FM99999999990D00') || '</Credit>';
406 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '</G_P35L>';
407 vCtr := vCtr + 1;
408 hr_utility.set_location('TableCnt' || to_char(vXMLTable.count),18);
409 END LOOP;
410 hr_utility.set_location('Generated...', 6);
411 IF flag = 0 THEN
412 vXMLTable(vCtr).xmlString := '<Exception>No Data Found</Exception>';
413 vCtr := vCtr + 1;
414 END IF;
415 vXMLTable(vCtr).xmlString := '<TotPay>' || to_char(to_number(l_tot_pay),'FM99999999990D00') || '</TotPay>';
416 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotPayRnd>' || l_tot_pay_rnd || '</TotPayRnd>';
417 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotTax>' || to_char(to_number(l_tot_tax),'FM99999999990D00') || '</TotTax>';
418 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotalPRSI>' || to_char(to_number(l_tot_prsi),'FM99999999990D00') || '</TotalPRSI>';
419 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotEmpPRSI>' || to_char(to_number(l_tot_emp_prsi),'FM99999999990D00') || '</TotEmpPRSI>';
420 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RBSEENum>' || l_emp_rbs || '</RBSEENum>';
421 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RBSEEAmt>' || l_emp_rbs_bal || '</RBSEEAmt>';
422 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RBSERNum>' || l_empr_rbs || '</RBSERNum>';
423 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RBSERAmt>' || l_empr_rbs_bal || '</RBSERAmt>';
424 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<PRSAEENum>' || l_emp_prsa || '</PRSAEENum>';
425 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<PRSAEEAmt>' || l_emp_prsa_bal || '</PRSAEEAmt>';
426 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<PRSAERNum>' || l_empr_prsa || '</PRSAERNum>';
427 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<PRSAERAmt>' || l_empr_prsa_bal || '</PRSAERAmt>';
428 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RACEENum>' || l_emp_rac || '</RACEENum>';
429 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<RACEEAmt>' || l_emp_rac_bal || '</RACEEAmt>';
430 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '<TotNotPay>' || l_taxable_benefits || '</TotNotPay>';
431 vXMLTable(vCtr).xmlString := vXMLTable(vCtr).xmlString || '</P35LFile>';
432 vCtr := vCtr + 1;
433
434 hr_utility.set_location('TableCnt' || to_char(vXMLTable.count),13);
435 EXCEPTION
436 WHEN OTHERS THEN
437 null;
438 END populate_plsql_table;
439 --
440 FUNCTION get_start_date
441 RETURN DATE
442 AS
443 l_start_date DATE;
444 BEGIN
445 SELECT fnd_date.canonical_to_date (
446 SUBSTR (fpov.profile_option_value, 1, 4)
447 || '01/01 00:00:00'
448 )
449 INTO l_start_date
450 FROM fnd_profile_option_values fpov, fnd_profile_options fpo
451 WHERE fpo.profile_option_id = fpov.profile_option_id
452 AND fpo.application_id = fpov.application_id
453 AND fpo.profile_option_name = 'PAY_IE_P35_REPORTING_YEAR'
454 AND fpov.level_id = 10001
455 AND fpov.level_value = 0;
456
457 RETURN l_start_date;
458 END get_start_date;
459
460
461 --
462 FUNCTION get_end_date
463 RETURN DATE
464 AS
465 l_end_date DATE;
466 BEGIN
467 SELECT fnd_date.canonical_to_date (
468 SUBSTR (fpov.profile_option_value, 1, 4)
469 || '12/31 23:59:59'
470 )
471 INTO l_end_date
472 FROM fnd_profile_option_values fpov, fnd_profile_options fpo
473 WHERE fpo.profile_option_id = fpov.profile_option_id
474 AND fpo.application_id = fpov.application_id
475 AND fpo.profile_option_name = 'PAY_IE_P35_REPORTING_YEAR'
476 AND fpov.level_id = 10001
477 AND fpov.level_value = 0;
478
479 RETURN l_end_date;
480 END get_end_date;
481 --
482 END PAY_IE_P35_XML_PKG;