[Home] [Help]
PACKAGE BODY: APPS.PAY_SA_CHEQUE_REPORT
Source
1 PACKAGE BODY pay_sa_cheque_report AS
2 /* $Header: pysachqr.pkb 120.7.12000000.1 2007/02/22 08:43:46 vbattu noship $ */
3
4 lg_format_mask varchar2(50);
5 PROCEDURE set_currency_mask
6 (p_business_group_id IN NUMBER) IS
7 /* Cursor to retrieve Currency */
8 CURSOR csr_currency IS
9 SELECT org_information10
10 FROM hr_organization_information
11 WHERE organization_id = p_business_group_id
12 AND org_information_context = 'Business Group Information';
13 l_currency VARCHAR2(40);
14 BEGIN
15 OPEN csr_currency;
16 FETCH csr_currency into l_currency;
17 CLOSE csr_currency;
18 lg_format_mask := FND_CURRENCY.GET_FORMAT_MASK(l_currency,40);
19 END set_currency_mask;
20 -------------------------------------------------------------------------------------------
21 FUNCTION get_lookup_meaning
22 (p_lookup_type varchar2
23 ,p_lookup_code varchar2)
24 RETURN VARCHAR2 IS
25 CURSOR csr_lookup IS
26 select meaning
27 from hr_lookups
28 where lookup_type = p_lookup_type
29 and lookup_code = p_lookup_code;
30 l_meaning hr_lookups.meaning%type;
31 BEGIN
32 OPEN csr_lookup;
33 FETCH csr_lookup INTO l_Meaning;
34 CLOSE csr_lookup;
35 RETURN l_meaning;
36 END get_lookup_meaning;
37 ------------------------------------------------------------------------------------------
38 PROCEDURE CHEQUE_LISTING
39 (p_request_id NUMBER
40 ,p_report VARCHAR2
41 ,p_business_group_id NUMBER
42 ,p_pact_id NUMBER
43 ,p_sort VARCHAR2
44 ,l_xfdf_blob OUT NOCOPY BLOB
45 )
46 AS
47
48
49 /* Cursor to fetch date_earned for the payroll action */
50 CURSOR csr_get_DE (l_pact_id number) IS
51 SELECT effective_date
52 FROM pay_payroll_actions
53 WHERE payroll_action_id = l_pact_id;
54
55 /* Cursor to fetch payroll_name for the payroll action */
56 CURSOR csr_get_PY (l_pact_id number) IS
57 SELECT payroll_name
58 FROM pay_all_payrolls_f pap, pay_payroll_actions ppa
59 WHERE ppa.payroll_action_id = l_pact_id
60 AND ppa.payroll_id = pap.payroll_id;
61
62 /* Cursor for fetching assignment action id and assignment id for current payroll action id */
63
64 /******** Commented for Order by clause *********/
65 /*
66
67 CURSOR csr_get_assact_det (l_pact_id number) IS
68 select paa.assignment_action_id , paa.assignment_id
69 from pay_assignment_actions paa
70 where paa.payroll_action_id = p_pact_id
71 and paa.action_status = 'C'
72 and not exists ( select 1
73 from pay_assignment_actions paa1, pay_payroll_actions ppa1, pay_action_interlocks lck
74 where lck.locked_action_id = paa.assignment_action_id
75 and lck.locking_action_id = paa1.assignment_action_id
76 and ppa1.payroll_action_id = paa1.payroll_action_id
77 and ppa1.action_type = 'D'
78 and ppa1.action_status = 'C'
79 and paa1.action_status = 'C') ;
80 */
81
82
83 /*** ORDER BY ORG ***/
84 /* Cursor for fetching assignment action id and assignment id for current payroll action id order by org name */
85 CURSOR csr_get_assact_det_ORG (l_pact_id number , l_date date) IS
86 select paa.assignment_action_id , paa.assignment_id
87 from pay_assignment_actions paa , per_all_assignments_f paf, hr_all_organization_units hou, per_all_people_f ppf
88 where paa.payroll_action_id = p_pact_id
89 and paa.action_status = 'C'
90 and not exists ( select 1
91 from pay_assignment_actions paa1, pay_payroll_actions ppa1, pay_action_interlocks lck
92 where lck.locked_action_id = paa.assignment_action_id
93 and lck.locking_action_id = paa1.assignment_action_id
94 and ppa1.payroll_action_id = paa1.payroll_action_id
95 and ppa1.action_type = 'D'
96 and ppa1.action_status = 'C'
97 and paa1.action_status = 'C')
98 and paa.assignment_id = paf.assignment_id
99 and trunc(l_date,'MM') between trunc(paf.effective_start_date,'MM') and paf.effective_end_date
100 and paf.person_id = ppf.person_id
101 and trunc(l_date,'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
102 and paf.organization_id = hou.organization_id
103 and trunc(l_date,'MM') between trunc(hou.date_from,'MM') and nvl(hou.date_to, to_date('31/12/4712','DD/MM/YYYY'))
104 order by hou.name, ppf.full_name;
105
106 /*** ORDER BY EMPNO ***/
107 /* Cursor for fetching assignment action id and assignment id for current payroll action id order by emp no*/
108 CURSOR csr_get_assact_det_EMPNO (l_pact_id number , l_date date) IS
109 select paa.assignment_action_id , paa.assignment_id
110 from pay_assignment_actions paa , per_all_assignments_f paf, per_all_people_f ppf
111 where paa.payroll_action_id = p_pact_id
112 and paa.action_status = 'C'
113 and not exists ( select 1
114 from pay_assignment_actions paa1, pay_payroll_actions ppa1, pay_action_interlocks lck
115 where lck.locked_action_id = paa.assignment_action_id
116 and lck.locking_action_id = paa1.assignment_action_id
117 and ppa1.payroll_action_id = paa1.payroll_action_id
118 and ppa1.action_type = 'D'
119 and ppa1.action_status = 'C'
120 and paa1.action_status = 'C')
121 and paa.assignment_id = paf.assignment_id
122 and trunc(l_date,'MM') between trunc(paf.effective_start_date,'MM') and paf.effective_end_date
123 and paf.person_id = ppf.person_id
124 and trunc(l_date,'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
125 order by ppf.employee_number;
126
127 /*** ORDER BY PAYDATE ***/
128 /* Cursor for fetching assignment action id and assignment id for current payroll action id order by payment date*/
129 CURSOR csr_get_assact_det_PD (l_pact_id number,l_date date) IS
130 select paa.assignment_action_id , paa.assignment_id
131 from pay_assignment_actions paa , pay_payroll_actions ppa , pay_pre_payments ppp , pay_assignment_actions paa1,
132 per_all_people_f ppf, per_all_assignments_f paf
133 where paa.payroll_action_id = p_pact_id
134 and paa.action_status = 'C'
135 and not exists ( select 1
136 from pay_assignment_actions paa1, pay_payroll_actions ppa1, pay_action_interlocks lck
137 where lck.locked_action_id = paa.assignment_action_id
138 and lck.locking_action_id = paa1.assignment_action_id
139 and ppa1.payroll_action_id = paa1.payroll_action_id
140 and ppa1.action_type = 'D'
141 and ppa1.action_status = 'C'
142 and paa1.action_status = 'C')
143 and paa.pre_payment_id = ppp.pre_payment_id
144 and ppp.assignment_action_id = paa1.assignment_action_id
145 and paa1.action_status = 'C'
146 and ppa.payroll_action_id = paa1.payroll_action_id
147 and ppa.action_status = 'C'
148 and ppa.action_type in ('P','U')
149 and paa.assignment_id = paf.assignment_id
150 and trunc(l_date,'MM') between trunc(paf.effective_start_date,'MM') and paf.effective_end_date
151 and paf.person_id = ppf.person_id
152 and trunc(l_date,'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
153 order by nvl(ppa.date_earned,ppa.effective_date),ppf.full_name;
154
155
156 /* Cursor for fetching the details for the assignments */
157 CURSOR csr_get_per_det (l_assignment_id number , l_date date) IS
158 SELECT ppf.full_name , ppf.employee_number , paf.job_id , paf.organization_id
159 FROM per_all_people_f ppf, per_all_assignments_f paf
160 WHERE paf.assignment_id = l_assignment_id
161 AND paf.person_id = ppf.person_id
162 AND trunc(l_date,'MM') between trunc(paf.effective_start_date,'MM') and paf.effective_end_date
163 AND trunc(l_date,'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date;
164
165 /* Cursor for fetching the Cheque details */
166 CURSOR csr_chq_det (l_assact_id number,l_date date) IS
167 SELECT serial_number, value
168 FROM pay_pre_payments_v2 pv2
169 WHERE pv2.business_group_id+0 = p_business_group_id
170 AND pv2.assignment_action_id = l_assact_id
171 AND pv2.pre_payment_id in (select ppp.pre_payment_id
172 from pay_pre_payments ppp,pay_action_interlocks lck , pay_org_payment_methods_f org ,
173 pay_payment_types pt,pay_assignment_actions paa1
174 where lck.locking_action_id = l_assact_id
175 and lck.locked_action_id = ppp.assignment_action_id
176 and paa1.assignment_action_id = lck.locking_action_id
177 and paa1.pre_payment_id = ppp.pre_payment_id
178 and paa1.action_status = 'C'
179 and ppp.org_payment_method_id = org.org_payment_method_id
180 and org.payment_type_id = pt.payment_type_id
181 and pt.category = 'CH')
182 AND trunc(l_date ,'MM') between trunc(opm_effective_start_date,'MM') and opm_effective_end_date;
183
184 /* Cursor for fetching the job name */
185 CURSOR csr_job (l_job number, l_date date) IS
186 SELECT name
187 FROM per_jobs
188 WHERE job_id = l_job
189 AND trunc(l_date,'MM') between date_from and nvl(date_to, to_date('31/12/4712','DD/MM/YYYY'));
190
191 /* Cursor for fetching the Organization name */
192 CURSOR csr_org (l_org_id number,l_date date) IS
193 SELECT name
194 FROM hr_all_organization_units
195 WHERE organization_id = l_org_id
196 AND trunc(l_date,'MM') between date_from and nvl(date_to, to_date('31/12/4712','DD/MM/YYYY'));
197
198 /* Cursor for fetching the payment date of the pre payment for cheques */
199 CURSOR csr_pay_date (l_assact_id number) IS
200 select nvl(ppa.date_earned,ppa.effective_date)
201 from pay_payroll_actions ppa, pay_assignment_actions paa, pay_pre_payments ppp, pay_assignment_actions paa1
202 where paa.assignment_action_id = l_assact_id
203 and paa.action_status = 'C'
204 and paa.pre_payment_id = ppp.pre_payment_id
205 and ppp.assignment_action_id = paa1.assignment_action_id
206 and paa1.action_status = 'C'
207 and paa1.payroll_action_id = ppa.payroll_action_id
208 and ppa.action_type in ('P','U')
209 and ppa.action_status = 'C';
210
211
212 TYPE assact_rec IS RECORD
213 (assignment_action_id NUMBER
214 ,assignment_id NUMBER);
215
216 TYPE t_assact_table IS TABLE OF assact_rec INDEX BY BINARY_INTEGER;
217
218 t_store_assact t_assact_table;
219
220 rec_get_assact csr_get_assact_det_ORG%ROWTYPE;
221
222 l_input_date date;
223 l_effective_date date;
224
225 i number;
226 j number;
227
228 l_assact_id number;
229 l_assignment_id number;
230
231 l_date_earned date;
232
233 l_full_name varchar2(240);
234 l_employee_number varchar2(30);
235 l_organization_id number(15);
236 l_organization varchar2(240);
237 l_job varchar2(240);
238 l_job_id number(15);
239 l_amount number(15,2);
240 l_amount_fm varchar2(40);
241 l_chq_number number;
242 l_chq_date date;
243 l_pay_date date;
244 l_py_name varchar2(240);
245
246 seq number;
247
248
249 l_str_py_name varchar2(400);
250 l_str_seq varchar2(400);
251 l_str_er_name1 varchar2(400);
252 l_str_er_name2 varchar2(400);
253 l_str_er_name3 varchar2(400);
254 l_str_er_name4 varchar2(400);
255 l_str_er_name5 varchar2(400);
256 l_str_er_name6 varchar2(400);
257 l_str_er_name7 varchar2(400);
258
259 l_str_rep_label varchar2(100);
260 l_str_py_label varchar2(100);
261 l_str_n varchar2(100);
262 l_str_name_l varchar2(100);
263 l_str_amt_l varchar2(100);
264 l_str_job_l varchar2(100);
265 l_str_org_l varchar2(100);
266 l_str_eno_l varchar2(100);
267 l_str_chq_l varchar2(100);
268 l_str_pd_l varchar2(100);
269
270 l_xfdf_string CLOB;
271
272
276
273 BEGIN
274
275 set_currency_mask(p_business_group_id);
277 OPEN csr_get_DE (p_pact_id);
278 FETCH csr_get_DE into l_input_date;
279 CLOSE csr_get_DE;
280
281 OPEN csr_get_PY(p_pact_id);
282 FETCH csr_get_PY into l_py_name;
283 CLOSE csr_get_PY;
284
285 l_effective_date := last_day(l_input_date);
286
287 INSERT INTO fnd_sessions (session_id, effective_date)
288 VALUES (userenv('sessionid'), l_effective_date);
289
290 -- To clear the PL/SQL Table values.
291
292 vXMLTable.DELETE;
293 vCtr := 1;
294
295 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
296 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
297 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
298 clob_to_blob(l_xfdf_string,l_xfdf_blob);
299 dbms_lob.writeAppend( l_xfdf_string, length('<START>'),'<START>');
300
301
302 l_str_rep_label := '<REP_LABEL>' || get_lookup_meaning('SA_FORM_LABELS','SA_CHQR') || '</REP_LABEL>';
303 dbms_lob.writeAppend( l_xfdf_string, length(l_str_rep_label),l_str_rep_label);
304
305 l_str_py_label := '<PY_LABEL>' || get_lookup_meaning('SA_FORM_LABELS','PY_LABEL') || '</PY_LABEL>';
306 dbms_lob.writeAppend( l_xfdf_string, length(l_str_py_label),l_str_py_label);
307
308 l_str_py_name := '<PY_NAME>' || l_py_name || '</PY_NAME>';
309 dbms_lob.writeAppend( l_xfdf_string, length(l_str_py_name),l_str_py_name);
310
311 l_str_n := '<N>' || get_lookup_meaning('SA_FORM_LABELS','S_NO') || '</N>';
312 dbms_lob.writeAppend( l_xfdf_string, length(l_str_n),l_str_n);
313
314 l_str_name_l := '<NAME_L>' || get_lookup_meaning('SA_FORM_LABELS','NAME') || '</NAME_L>';
315 dbms_lob.writeAppend( l_xfdf_string, length(l_str_name_l),l_str_name_l);
316
317 l_str_eno_l := '<ENO_L>' || get_lookup_meaning('SA_FORM_LABELS','EMP_NO') || '</ENO_L>';
318 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eno_l),l_str_eno_l);
319
320 l_str_org_l := '<ORG_L>' || get_lookup_meaning('SA_FORM_LABELS','ORG_L') || '</ORG_L>';
321 dbms_lob.writeAppend( l_xfdf_string, length(l_str_org_l),l_str_org_l);
322
323 l_str_job_l := '<JOB_L>' || get_lookup_meaning('SA_FORM_LABELS','JOB_L') || '</JOB_L>';
324 dbms_lob.writeAppend( l_xfdf_string, length(l_str_job_l),l_str_job_l);
325
326 l_str_amt_l := '<AMT_L>' || get_lookup_meaning('SA_FORM_LABELS','AMOUNT') || '</AMT_L>';
327 dbms_lob.writeAppend( l_xfdf_string, length(l_str_amt_l),l_str_amt_l);
328
329 l_str_chq_l := '<CHQ_L>' || get_lookup_meaning('SA_FORM_LABELS','CHQ_L') || '</CHQ_L>';
330 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chq_l),l_str_chq_l);
331
332 l_str_pd_l := '<PD_L>' || get_lookup_meaning('SA_FORM_LABELS','PD_L') || '</PD_L>';
333 dbms_lob.writeAppend( l_xfdf_string, length(l_str_pd_l),l_str_pd_l);
334
335
336
337 hr_utility.set_location('Entering CHQR ',10);
338
339 i := 0;
340
341 If p_sort = 'ORG' then
342
343 open csr_get_assact_det_ORG (p_pact_id,l_effective_date);
344
345 LOOP
346 FETCH csr_get_assact_det_ORG INTO rec_get_assact;
347 EXIT WHEN csr_get_assact_det_ORG%NOTFOUND ;
348
349 i := i + 1;
350
351 t_store_assact(i).assignment_action_id := rec_get_assact.assignment_action_id;
352 t_store_assact(i).assignment_id := rec_get_assact.assignment_id;
353 END LOOP;
354
355 CLOSE csr_get_assact_det_ORG;
356
357 Elsif p_sort = 'EMPNO' then
358 open csr_get_assact_det_EMPNO (p_pact_id,l_effective_date);
359
360 LOOP
361 FETCH csr_get_assact_det_EMPNO INTO rec_get_assact;
362 EXIT WHEN csr_get_assact_det_EMPNO%NOTFOUND ;
363
364 i := i + 1;
365
366 t_store_assact(i).assignment_action_id := rec_get_assact.assignment_action_id;
367 t_store_assact(i).assignment_id := rec_get_assact.assignment_id;
368 END LOOP;
369
370 CLOSE csr_get_assact_det_EMPNO;
371
372 Elsif p_sort = 'DATE' then
373 open csr_get_assact_det_PD (p_pact_id,l_effective_date);
374
375 LOOP
376 FETCH csr_get_assact_det_PD INTO rec_get_assact;
377 EXIT WHEN csr_get_assact_det_PD%NOTFOUND ;
378
379 i := i + 1;
380
381 t_store_assact(i).assignment_action_id := rec_get_assact.assignment_action_id;
382 t_store_assact(i).assignment_id := rec_get_assact.assignment_id;
383 END LOOP;
384
385 CLOSE csr_get_assact_det_PD;
386 End If;
387
388 j := 1;
389
390 seq := 1;
391
392 If i > 0 then
393
394 WHILE j <= i LOOP
395
396 l_full_name := null;
397 l_employee_number := null;
398 l_organization_id := null;
399 l_organization := null;
400 l_job := null;
401 l_job_id := null;
402 l_amount := null;
403 l_chq_number := null;
404 l_chq_date := null;
405
406 OPEN csr_get_DE (p_pact_id);
407 FETCH csr_get_DE into l_chq_date;
408 CLOSE csr_get_DE;
409
410 OPEN csr_pay_date (t_store_assact(j).assignment_action_id);
411 FETCH csr_pay_date into l_pay_date;
412 CLOSE csr_pay_date;
413
414 OPEN csr_get_per_det(t_store_assact(j).assignment_id , l_chq_date);
415 FETCH csr_get_per_det into l_full_name,l_employee_number,l_job_id,l_organization_id;
416 CLOSE csr_get_per_det;
417
418 If l_job_id is not null then
419 OPEN csr_job(l_job_id,l_chq_date);
420 FETCH csr_job into l_job;
421 CLOSE csr_job;
422 End If;
423
424 OPEN csr_org (l_organization_id,l_chq_date);
425 FETCH csr_org INTO l_organization;
426 close csr_org;
427
431 Exit when csr_chq_det%NOTFOUND;
428 OPEN csr_chq_det (t_store_assact(j).assignment_action_id,l_chq_date);
429 LOOP
430 FETCH csr_chq_det into l_chq_number,l_amount;
432
433 l_amount_fm := to_char(l_amount,lg_format_mask);
434
435 dbms_lob.writeAppend( l_xfdf_string, length('<RECORD>'),'<RECORD>');
436
437 l_str_seq := '<SNO>'||seq||'</SNO>';
438 l_str_er_name1 := '<EENAME>'||substr(l_full_name,1,60)||'</EENAME>';
439 l_str_er_name2 := '<EENO>'||l_employee_number||'</EENO>';
440 l_str_er_name3 := '<EEORG>'||substr(l_organization,1,40)||'</EEORG>';
441 l_str_er_name4 := '<EEJOB>'||substr(l_job,1,40)||'</EEJOB>';
442 l_str_er_name5 := '<EEAMOUNT>'||l_amount_fm||'</EEAMOUNT>';
443 l_str_er_name6 := '<EECHQ>'||l_chq_number||'</EECHQ>';
444 l_str_er_name7 := '<EEDATE>'||l_pay_date||'</EEDATE>';
445
446 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq), l_str_seq);
447 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name1), l_str_er_name1);
448 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name2), l_str_er_name2);
449 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name3), l_str_er_name3);
450 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name4), l_str_er_name4);
451 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name5), l_str_er_name5);
452 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name6), l_str_er_name6);
453 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name7), l_str_er_name7);
454
455 dbms_lob.writeAppend( l_xfdf_string, length('</RECORD>'),'</RECORD>');
456 seq := seq + 1;
457 END LOOP;
458 CLOSE csr_chq_det;
459 j := j + 1;
460
461 END LOOP;
462 End If;
463
464 dbms_lob.writeAppend( l_xfdf_string, length('</START>'),'</START>');
465
466 hr_utility.set_location('Finished creating xml data for Procedure CHQR ',20);
467
468 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
469 clob_to_blob(l_xfdf_string,l_xfdf_blob);
470
471
472 /*EXCEPTION
473 WHEN utl_file.invalid_path then
474 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
475 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
476 hr_utility.raise_error;
477 --
478 WHEN utl_file.invalid_mode then
479 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
480 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
481 hr_utility.raise_error;
482 --
483 WHEN utl_file.invalid_filehandle then
484 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
485 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
486 hr_utility.raise_error;
487 --
488 WHEN utl_file.invalid_operation then
489 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
490 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
491 hr_utility.raise_error;
492 --
493 WHEN utl_file.read_error then
494 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
495 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
496 hr_utility.raise_error;
497 --
498 WHEN others THEN
499 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
500 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
501 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
502 hr_utility.raise_error;*/
503 END CHEQUE_LISTING;
504 -------------------------------------------------------------------------------------------
505
506 PROCEDURE WritetoCLOB
507 (p_xfdf_blob out nocopy blob)
508 IS
509 l_xfdf_string clob;
510 l_str1 varchar2(1000);
511 l_str2 varchar2(20);
512 l_str3 varchar2(20);
513 l_str4 varchar2(20);
514 l_str5 varchar2(20);
515 l_str6 varchar2(30);
516 l_str7 varchar2(1000);
517 l_str8 varchar2(240);
518 l_str9 varchar2(240);
519 BEGIN
520 hr_utility.set_location('Entered Procedure Write to clob ',100);
521 l_str1 := '<?xml version="1.0" encoding="UTF-8"?>
522 <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
523 <fields> ' ;
524 l_str2 := '<field name="';
525 l_str3 := '">';
526 l_str4 := '<value>' ;
527 l_str5 := '</value> </field>' ;
528 l_str6 := '</fields> </xfdf>';
529 l_str7 := '<?xml version="1.0" encoding="UTF-8"?>
530 <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
531 <fields>
532 </fields> </xfdf>';
533 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
534 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
535 if vXMLTable.COUNT > 0 then
536 dbms_lob.writeAppend( l_xfdf_string, length(l_str1), l_str1 );
537 FOR ctr_table IN vXMLTable.FIRST .. vXMLTable.LAST LOOP
538 l_str8 := vXMLTable(ctr_table).TagName;
539 l_str9 := vXMLTable(ctr_table).TagValue;
540 if (l_str9 is not null) then
541 dbms_lob.writeAppend( l_xfdf_string, length(l_str2), l_str2 );
542 dbms_lob.writeAppend( l_xfdf_string, length(l_str8),l_str8);
543 dbms_lob.writeAppend( l_xfdf_string, length(l_str3), l_str3 );
544 dbms_lob.writeAppend( l_xfdf_string, length(l_str4), l_str4 );
545 dbms_lob.writeAppend( l_xfdf_string, length(l_str9), l_str9);
546 dbms_lob.writeAppend( l_xfdf_string, length(l_str5), l_str5 );
547 elsif (l_str9 is null and l_str8 is not null) then
548 dbms_lob.writeAppend(l_xfdf_string,length(l_str2),l_str2);
549 dbms_lob.writeAppend(l_xfdf_string,length(l_str8),l_str8);
550 dbms_lob.writeAppend(l_xfdf_string,length(l_str3),l_str3);
551 dbms_lob.writeAppend(l_xfdf_string,length(l_str4),l_str4);
552 dbms_lob.writeAppend(l_xfdf_string,length(l_str5),l_str5);
553 else
554 null;
555 end if;
556 END LOOP;
557 dbms_lob.writeAppend( l_xfdf_string, length(l_str6), l_str6 );
558 else
559 dbms_lob.writeAppend( l_xfdf_string, length(l_str7), l_str7 );
560 end if;
561 DBMS_LOB.CREATETEMPORARY(p_xfdf_blob,TRUE);
562 clob_to_blob(l_xfdf_string,p_xfdf_blob);
563 hr_utility.set_location('Finished Procedure Write to CLOB ,Before clob to blob ',110);
564 --return p_xfdf_blob;
565 EXCEPTION
566 WHEN OTHERS then
567 HR_UTILITY.TRACE('sqleerm ' || SQLERRM);
568 HR_UTILITY.RAISE_ERROR;
569 END WritetoCLOB;
570 ----------------------------------------------------------------
571 Procedure clob_to_blob
572 (p_clob clob,
573 p_blob IN OUT NOCOPY Blob)
574 is
575 l_length_clob number;
576 l_offset pls_integer;
577 l_varchar_buffer varchar2(32767);
578 l_raw_buffer raw(32767);
579 l_buffer_len number;
580 l_chunk_len number;
581 l_blob blob;
582 g_nls_db_char varchar2(60);
583 l_raw_buffer_len pls_integer;
584 l_blob_offset pls_integer := 1;
585 begin
586 l_buffer_len := 20000;
587 hr_utility.set_location('Entered Procedure clob to blob',120);
588 select userenv('LANGUAGE') into g_nls_db_char from dual;
589 l_length_clob := dbms_lob.getlength(p_clob);
590 l_offset := 1;
591 while l_length_clob > 0 loop
592 hr_utility.trace('l_length_clob '|| l_length_clob);
593 if l_length_clob < l_buffer_len then
594 l_chunk_len := l_length_clob;
595 else
596 l_chunk_len := l_buffer_len;
597 end if;
598 DBMS_LOB.READ(p_clob,l_chunk_len,l_offset,l_varchar_buffer);
599 fnd_file.put_line(fnd_file.log,l_varchar_buffer);
600 --l_raw_buffer := utl_raw.cast_to_raw(l_varchar_buffer);
601 l_raw_buffer := utl_raw.convert(utl_raw.cast_to_raw(l_varchar_buffer),'American_America.UTF8',g_nls_db_char);
602 l_raw_buffer_len := utl_raw.length(utl_raw.convert(utl_raw.cast_to_raw(l_varchar_buffer),'American_America.UTF8',g_nls_db_char));
603 hr_utility.trace('l_varchar_buffer '|| l_varchar_buffer);
604 --dbms_lob.write(p_blob,l_chunk_len, l_offset, l_raw_buffer);
605 dbms_lob.write(p_blob,l_raw_buffer_len, l_blob_offset, l_raw_buffer);
606 l_blob_offset := l_blob_offset + l_raw_buffer_len;
607 l_offset := l_offset + l_chunk_len;
608 l_length_clob := l_length_clob - l_chunk_len;
609 hr_utility.trace('l_length_blob '|| dbms_lob.getlength(p_blob));
610 end loop;
611 hr_utility.set_location('Finished Procedure clob to blob ',130);
612 end clob_to_blob;
613 ------------------------------------------------------------------
614 Procedure fetch_pdf_blob
615 (p_report in varchar2,
616 p_pdf_blob OUT NOCOPY blob)
617 IS
618 BEGIN
619 IF (p_report='CHQR') THEN
620 Select file_data
621 Into p_pdf_blob
622 From fnd_lobs
623 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_CHQ_ar_SA.rtf');
624 END IF;
625
626 EXCEPTION
627 when no_data_found then
628 null;
629 END fetch_pdf_blob;
630 -------------------------------------------------------------------
631 END pay_sa_cheque_report;