[Home] [Help]
PACKAGE BODY: APPS.PAY_AE_SI_REPORTS
Source
1 PACKAGE BODY pay_ae_SI_reports AS
2 /* $Header: pyaesirp.pkb 120.24 2012/01/19 08:37:15 rpahune ship $ */
3 lg_format_mask varchar2(50);
4 PROCEDURE set_currency_mask
5 (p_business_group_id IN NUMBER) IS
6 /* Cursor to retrieve Currency */
7 CURSOR csr_currency IS
8 SELECT org_information10
9 FROM hr_organization_information
10 WHERE organization_id = p_business_group_id
11 AND org_information_context = 'Business Group Information';
12 l_currency VARCHAR2(40);
13 BEGIN
14 OPEN csr_currency;
15 FETCH csr_currency into l_currency;
16 CLOSE csr_currency;
17 lg_format_mask := FND_CURRENCY.GET_FORMAT_MASK(l_currency,40);
18 END set_currency_mask;
19 -------------------------------------------------------------------------------------------
20 FUNCTION get_index (p_index IN NUMBER) return VARCHAR2
21 IS
22 l_label varchar2(40);
23 BEGIN
24 If p_index = 1 THEN
25 l_label := 'Basic Salary';
26 ElsIf p_index = 2 THEN
27 l_label := 'Housing Allowance';
28 ElsIf p_index = 3 THEN
29 l_label := 'Social Allowance';
30 ElsIf p_index = 4 THEN
31 l_label := 'Child Social Allowance';
32 ElsIf p_index = 5 THEN
33 l_label := 'Cost of Living Allowance';
34 ElsIf p_index = 6 THEN
35 l_label := 'Transportation Allowance';
36 ElsIf p_index = 7 THEN
37 l_label := 'Allowance 1';
38 ElsIf p_index = 8 THEN
39 l_label := 'Allowance 2';
40 ElsIf p_index = 9 THEN
41 l_label := 'Allowance 3';
42 ElsIf p_index = 10 THEN
43 l_label := 'Allowance 4';
44 ElsIf p_index = 11 THEN
45 l_label := 'Other Allowance';
46 End If;
47 return l_label;
48 END get_index;
49 -------------------------------------------------------------------------------------------
50 FUNCTION get_lookup_meaning
51 (p_lookup_type varchar2
52 ,p_lookup_code varchar2)
53 RETURN VARCHAR2 IS
54 CURSOR csr_lookup IS
55 select meaning
56 from hr_lookups
57 where lookup_type = p_lookup_type
58 and lookup_code = p_lookup_code;
59 l_meaning hr_lookups.meaning%type;
60 BEGIN
61 OPEN csr_lookup;
62 FETCH csr_lookup INTO l_Meaning;
63 CLOSE csr_lookup;
64 RETURN l_meaning;
65 END get_lookup_meaning;
66 ------------------------------------------------------------------------------------------
67 PROCEDURE FORM1
68 (p_request_id NUMBER
69 ,p_report VARCHAR2
70 ,p_business_group_id NUMBER
71 ,p_employer_id NUMBER
72 ,p_effective_month VARCHAR2
73 ,p_effective_year VARCHAR2
74 ,l_xfdf_blob OUT NOCOPY BLOB
75 )
76 AS
77
78
79
80
81 /*Cursor for fetching Local nationality for the BG */
82 CURSOR csr_get_loc_nat IS
83 SELECT org_information1
84 FROM hr_organization_information
85 WHERE organization_id = p_business_group_id
86 AND org_information_context = 'AE_BG_DETAILS';
87
88 /*Cursor for fetching Employer SSN*/
89 CURSOR csr_employer_ssn IS
90 SELECT org_information1
91 FROM hr_organization_information
92 WHERE organization_id = p_employer_id
93 AND org_information_context = 'AE_LEGAL_EMPLOYER_DETAILS';
94
95 /*Cursor for fetching Employer Name*/
96 CURSOR csr_employer_name IS
97 SELECT name
98 FROM hr_organization_units
99 WHERE organization_id = p_employer_id;
100
101 /* Cursor for fetching current employer type */
102 CURSOR csr_cur_employer_type IS
103 SELECT org_information6
104 FROM hr_organization_information hoi
105 WHERE hoi.organization_id = p_employer_id
106 AND hoi.org_information_context = 'AE_LEGAL_EMPLOYER_DETAILS';
107
108 /*Cursor for fetching Employer's PO Box and Emirate Code */
109 CURSOR csr_employer_address (l_loc_id number) IS
110 SELECT loc.address_line_3, loc.LOC_INFORMATION15
111 FROM hr_locations loc
112 WHERE loc.location_id = l_loc_id;
113
114 /*Cursor for fetching Employer's Emirate */
115 CURSOR csr_employer_emirate (l_emirate varchar2) IS
116 SELECT hl.meaning
117 FROM hr_lookups hl
118 WHERE hl.lookup_code = l_emirate
119 AND hl.lookup_type = 'AE_EMIRATE'
120 AND hl.enabled_flag = 'Y';
121
122 /* Cursor for fetching organization phone types */
123 CURSOR csr_get_org_phone_types (l_bg_id number) IS
124 SELECT hoi.org_information1,hoi.org_information2,hoi.org_information3,hoi.org_information4
125 FROM hr_organization_information hoi
126 WHERE hoi.organization_id = l_bg_id
127 AND hoi.org_information_context = 'AE_HR_BG_INFO';
128
129 /* Cursor for fetching person's phone details */
130 CURSOR csr_p_phone_data (l_person_id number,l_ph_type varchar2,l_effective_date date) IS
131 SELECT pp.phone_number
132 FROM per_phones pp,per_all_people_f ppf
133 WHERE pp.parent_id = ppf.person_id
134 AND pp.phone_type = l_ph_type
135 AND ppf.person_id = l_person_id
136 AND l_effective_date between pp.date_from and nvl(pp.date_to,to_date('31-12-4712','DD-MM-YYYY'));
137
138 /* Cursor for fetching the New Employees coming under legal employer*/
139 CURSOR csr_get_emp (l_employer_id number, l_effective_date date, l_nat_cd varchar2) IS
140 SELECT distinct asg.person_id
141 ,paa.assignment_action_id
142 ,ppa.date_earned
143 ,pos.date_start
144 FROM per_all_assignments_f asg
145 ,pay_assignment_actions paa
146 ,pay_payroll_actions ppa
147 ,hr_soft_coding_keyflex hscl
148 ,per_periods_of_service pos
149 ,per_all_people_f ppf
150 WHERE asg.assignment_id = paa.assignment_id
151 AND paa.payroll_action_id = ppa.payroll_action_id
152 AND pos.period_of_service_id = asg.period_of_service_id
153 AND ppa.action_type in ('R','Q')
154 AND ppa.action_status = 'C'
155 AND paa.action_status IN ('C','S')
156 AND trunc(ppa.date_earned,'MM') = TRUNC(l_effective_date, 'MM')
157 AND trunc(pos.date_start, 'MM') = trunc(l_effective_date, 'MM')
158 AND trunc(l_effective_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
159 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
160 AND hscl.segment1 = to_char(l_employer_id)
161 AND ppf.person_id = asg.person_id
162 AND trunc(l_effective_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
163 AND ppf.per_information18 = l_nat_cd;
164
165 /* Cursor for fetching the person data */
166 CURSOR csr_p_data (l_person_id number,l_effective_date date) IS
167 SELECT ppf.full_name,ppf.employee_number,ppf.date_of_birth,ppf.marital_status,ppf.sex,fnd_date.canonical_to_date(ppf.per_information16),ppf.per_information17
168 FROM per_all_people_f ppf
169 WHERE ppf.person_id = l_person_id
170 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
171
172 /* Cursor for fetching the person's gender meaning */
173 CURSOR csr_p_gender (l_sex varchar2) IS
174 SELECT hl.meaning
175 FROM hr_lookups hl
176 WHERE hl.lookup_type = 'SEX'
177 AND hl.lookup_code = l_sex
178 AND hl.enabled_flag = 'Y';
179
180 /* Cursor for fetching the person's marital status */
181 CURSOR csr_p_mar_status (l_mar_stat varchar2) IS
182 SELECT hl.meaning
183 FROM hr_lookups hl
184 WHERE hl.lookup_type = 'MAR_STATUS'
185 AND hl.lookup_code = l_mar_stat
186 AND hl.enabled_flag = 'Y';
187
188 /* Cursor for fetching the person's assignment data */
189 CURSOR csr_p_asg_data (l_person_id number,l_effective_date date) IS
190 SELECT hsck.segment2,hsck.segment3,fnd_date.canonical_to_date(hsck.segment4),hsck.segment5,paf.location_id
191 FROM per_all_assignments_f paf,hr_soft_coding_keyflex hsck
192 WHERE paf.person_id = l_person_id
193 AND paf.soft_coding_keyflex_id = hsck.soft_coding_keyflex_id
194 AND hsck.segment1 = p_employer_id
195 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
196
197 /* Cursor for fetching the person's job */
198 CURSOR csr_p_job (l_person_id number,l_effective_date date) IS
199 SELECT pjb.name
200 FROM per_all_assignments_f paf,per_jobs pjb
201 WHERE paf.person_id = l_person_id
202 AND pjb.job_id = paf.job_id
203 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
204
205 /* Cursor for fetching the person's qualification data */
206 CURSOR csr_p_qual_data (l_person_id number,l_qual_id number) IS
207 SELECT pq.title , pq.attendance_id , hl.meaning
208 FROM per_qualifications_v pq , per_subjects_taken pst ,hr_lookups hl
209 WHERE pq.person_id = l_person_id
210 AND pq.qualification_id = l_qual_id
211 AND pst.qualification_id = pq.qualification_id
212 AND pst.major = 'Y'
213 AND hl.lookup_type = 'PER_SUBJECTS'
214 AND hl.lookup_code = pst.subject
215 AND rownum < 2;
216
217 /* Cursor to fetch establishment name */
218 CURSOR get_est_name (l_attendance_id number) IS
219 select est.name
220 from per_establishments est, per_establishment_attendances pea, per_qualifications pq
221 where pq.attendance_id = l_attendance_id
222 and pq.attendance_id = pea.attendance_id
223 and est.establishment_id = pea.establishment_id;
224
225 /* Cursor for fetching the person's ex-employer's name */
226 CURSOR csr_p_ex_emp_data (l_person_id number) IS
227 SELECT pr.employer_name ,pr.previous_employer_id,pr.employer_type, pr.PEM_INFORMATION1 , fnd_date.canonical_to_date(pr.PEM_INFORMATION2),pr.PEM_INFORMATION3,pr.PEM_INFORMATION4
228 FROM per_previous_employers pr
229 WHERE pr.person_id = l_person_id
230 AND pr.PEM_INFORMATION_CATEGORY ='AE'
231 AND nvl(pr.end_date,sysdate) in (SELECT nvl(max(end_date),sysdate)
232 FROM per_previous_employers
233 WHERE person_id = l_person_id ) order by nvl(start_date,sysdate) desc,employer_name desc ;
234
235 /* Cursor for fetching the person's spouse's ex-employer's name */
236 CURSOR csr_p_s_ex_emp_data (l_person_id number) IS
237 SELECT pr.employer_name ,pr.previous_employer_id
238 FROM per_previous_employers pr
239 WHERE pr.person_id = l_person_id
240 AND nvl(pr.end_date,sysdate) in (SELECT nvl(max(end_date),sysdate)
241 FROM per_previous_employers
242 WHERE person_id = l_person_id ) order by nvl(start_date,sysdate) desc,employer_name desc ;
243
244 /* Cursor for fetching the person's ex-employer's transfer date */
245 CURSOR csr_p_ex_emp_date_data (l_person_id number,l_ex_emp_id number) IS
246 SELECT pr.end_date
247 FROM per_previous_employers pr
248 WHERE pr.person_id = l_person_id
249 AND pr.previous_employer_id = l_ex_emp_id
250 AND pr.employer_type = 'FG'
251 AND pr.PEM_INFORMATION1 = 'EMP_TRANS';
252
253 /* Cursor for fetching person's Address */
254 CURSOR csr_p_address_data (l_person_id number,l_effective_date date) IS
255 SELECT substr(addr.ADDRESS_LINE1 || ' ' ||addr.address_line2,1,60)
256 FROM per_addresses addr
257 WHERE addr.person_id = l_person_id
258 AND l_effective_date between addr.date_from and nvl(addr.date_to,to_date('31-12-4712','dd-mm-yyyy'))
259 AND addr.primary_flag = 'Y';
260
261 /* Cursor for fetching person's Disability */
262 CURSOR csr_p_disability_data (l_person_id number,l_effective_date date) IS
263 SELECT substr(dis.reason,1,60),dis.degree,dis.effective_start_date
264 FROM per_disabilities_f dis
265 WHERE dis.person_id = l_person_id
266 AND l_effective_date between dis.effective_start_date and dis.effective_end_date
267 -- AND dis.status = 'A'
268 AND dis.dis_information1 = 'Y';
269
270 /* Cursor for fetching meaning of disability reason */
271 CURSOR csr_get_dis_meaning (l_lookup_code varchar2) IS
272 SELECT meaning
273 FROM hr_lookups
274 WHERE lookup_type = 'DISABILITY_REASON'
275 and lookup_code = l_lookup_code
276 and enabled_flag = 'Y';
277
278 /* Cursor for fetching person's spouse's person id */
279 CURSOR csr_p_spouse_id (l_person_id number,l_type varchar2, l_gender varchar2,l_effective_date date) IS
280 SELECT CONTACT_PERSON_ID
281 FROM per_contact_relationships cont
282 WHERE cont.person_id = l_person_id
283 AND cont.contact_type = l_type;
284
285 /* Cursor for fetching person's spouse's qualification details */
286 CURSOR csr_get_spouse_details (l_spouse_person_id number) IS
287 SELECT pq.title , hl.meaning
288 FROM per_qualifications_v pq , per_subjects_taken pst ,hr_lookups hl
289 WHERE pq.person_id = l_spouse_person_id
290 AND pst.qualification_id = pq.qualification_id
291 AND pst.major = 'Y'
292 AND hl.lookup_type = 'PER_SUBJECTS'
293 AND hl.lookup_code = pst.subject
294 AND rownum < 2;
295
296 /* Cursor for fetching person's contact counts */
297 CURSOR csr_p_contact_count_data (l_person_id number,l_type varchar2, l_gender varchar2, l_effective_date date) IS
298 SELECT count(*)
299 FROM per_contact_relationships cont , per_all_people_f ppf
300 WHERE cont.person_id = l_person_id
301 AND cont.contact_type = l_type
302 AND ppf.person_id = cont.CONTACT_PERSON_ID
303 AND ppf.sex = l_gender
304 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
305
306 /* Cursor for fetching Defined balance ids from Org EIT */
307 CURSOR csr_get_def_bal_ids (l_bg_id number) IS
308 SELECT ORG_INFORMATION1,ORG_INFORMATION2,ORG_INFORMATION3,ORG_INFORMATION4,ORG_INFORMATION5,ORG_INFORMATION6,ORG_INFORMATION7,ORG_INFORMATION8,ORG_INFORMATION9,ORG_INFORMATION10
309 FROM HR_ORGANIZATION_INFORMATION
310 WHERE Organization_id = l_bg_id
311 AND org_information_context = 'AE_SI_DETAILS';
312
313 /*Cursor for fetching defined balance id for subject_to_social_asg_run*/
314 CURSOR csr_get_def_id(p_user_name VARCHAR2) IS
315 SELECT u.creator_id
316 FROM ff_user_entities u,
317 ff_database_items d
318 WHERE d.user_name = p_user_name
319 AND u.user_entity_id = d.user_entity_id
320 AND u.legislation_code = 'AE'
321 AND u.business_group_id is null
322 AND u.creator_type = 'B';
323
324
325 TYPE def_bal_rec IS RECORD
326 (def_bal_id NUMBER
327 ,label_index VARCHAR2(40));
328 TYPE t_def_bal_table IS TABLE OF def_bal_rec INDEX BY BINARY_INTEGER;
329 t_store_def_bal t_def_bal_table;
330 TYPE assact_rec IS RECORD
331 (person_id NUMBER
332 ,assignment_action_id NUMBER
333 ,date_earned DATE
334 ,date_start DATE);
335 TYPE t_assact_table IS TABLE OF assact_rec INDEX BY BINARY_INTEGER;
336 t_store_assact t_assact_table;
337 l_employer_name varchar2(240);
338 l_input_date varchar2(30);
339 l_effective_date date;
340 l_employer_ssn number;
341 l_basic_sal_id number;
342 z number;
343 l_accomodation_id number;
344 l_social_id number;
345 l_child_social_id number;
346 l_tp_id number;
347 l_ol1_id number;
348 l_ol2_id number;
349 l_ol3_id number;
350 l_ol4_id number;
351 l_cost_of_living_id number;
352 l_index number;
353 i number;
354 k number;
355 m number;
356 j number;
357 x number;
358 l_new_processed number;
359 l_all_processed number;
360 l_new_count number;
361 l_basic_val number (15,2);
362 l_accomodation_val number(15,2);
363 l_allowance_1_val number(15,2);
364 l_allowance_2_val number(15,2);
365 l_allowance_3_val number(15,2);
366 l_allowance_4_val number(15,2);
367 l_allowance_5_val number(15,2);
368 l number;
369 L_FULL_NAME varchar2(240);
370 l_insured_ssn number;
371 l_employee_number varchar2(180);
372 l_uae_civil_reg_number number;
373 l_asg_location_id number;
374 l_work_emirate varchar2(100);
375 l_work_emirate_code varchar2(100);
376 l_home_phone_number varchar2(100);
377 l_work_phone_number varchar2(100);
378 l_home_fax_number varchar2(100);
379 l_work_fax_number varchar2(100);
380 L_MARITAL_STATUS varchar2(100);
381 l_mar_p_status varchar2(30);
382 l_job varchar2(100);
383 l_latest_qual_id number;
384 l_p_qual_name varchar2(100);
385 l_p_address varchar2(100);
386 l_gender varchar2(100);
387 l_gender_c varchar2(100);
388 l_number_of_sons number;
389 l_number_of_daughters number;
390 l_number_of_wives number;
391 L_NAT_DATE date;
392 L_AWARDING_BODY varchar2(100);
393 L_S_EX_EMPLOYER_NAME varchar2(100);
394 l_s_qual varchar2(100);
395 L_DIS_DETAILS varchar2(100);
396 L_MAJOR varchar2(100);
397 l_dis_date date;
398 l_dis_percent number;
399 l_dis_meaning varchar2(100);
400 l_s_major varchar2(100);
401 L_S_EX_EMPLOYER_ID number;
402 l_nat_reason varchar2(100);
403 L_S_PERSON_ID number;
404 l_home_phone varchar2(100);
405 l_work_phone varchar2(100);
406 l_home_fax varchar2(100);
407 l_work_fax varchar2(100);
408 L_P_EX_EMPLOYER varchar2(100);
409 L_P_EX_EMPLOYER_id number;
410 l_transfer_date date;
411 l_tr_date date;
412 l_sector_name varchar2(60);
413 l_paid_flag varchar2(10);
414 l_dob date;
415 L_CONT_START_DATE date;
416 l_work_po_box varchar2(100);
417 L_TOTAL number(15,2);
418 L_FM_TOTAL_VAL varchar2(100);
419 l_fm_l_basic_val varchar2(100);
420 L_FM_L_ACCOMODATION_VAL varchar2(100);
421 L_FM_L_ALLOWANCE_1_VAL varchar2(100);
422 L_FM_L_ALLOWANCE_2_VAL varchar2(100);
423 L_FM_L_ALLOWANCE_3_VAL varchar2(100);
424 L_FM_L_ALLOWANCE_4_VAL varchar2(100);
425 L_FM_L_ALLOWANCE_5_VAL varchar2(100);
426 l_subject_to_social_id number;
427 l_p_ex_employer_type varchar2(100);
428 l_cur_employer_type varchar2(100);
429 l_p_term_reason varchar2(100);
430 rec_get_emp csr_get_emp%ROWTYPE;
431 l_nat_cd varchar2(30);
432 l_est_name varchar2(240);
433
434 BEGIN
435
436 set_currency_mask(p_business_group_id);
437
438 l_input_date := '01-'||p_effective_month||'-'||p_effective_year;
439 l_effective_date := last_day(to_date(l_input_date,'DD-MM-YYYY'));
440
441 INSERT INTO fnd_sessions (session_id, effective_date)
442 VALUES (userenv('sessionid'), l_effective_date);
443
444 -- To clear the PL/SQL Table values.
445 t_store_def_bal.DELETE;
446 vXMLTable.DELETE;
447 vCtr := 1;
448 hr_utility.set_location('Entering FORM1 ',10);
449
450 /* Fetch local nationality */
451 OPEN csr_get_loc_nat;
452 FETCH csr_get_loc_nat into l_nat_cd;
453 CLOSE csr_get_loc_nat;
454
455 /* Fetch current employer type */
456 OPEN csr_cur_employer_type;
457 FETCH csr_cur_employer_type into l_cur_employer_type;
458 CLOSE csr_cur_employer_type;
459
460
461 /*Fetch Employer SSN*/
462 OPEN csr_employer_ssn;
463 FETCH csr_employer_ssn INTO l_employer_ssn;
464 CLOSE csr_employer_ssn;
465
466 /*Fetch Employer Name*/
467 OPEN csr_employer_name;
468 FETCH csr_employer_name INTO l_employer_name;
469 CLOSE csr_employer_name;
470
471 OPEN csr_get_def_bal_ids (p_employer_id);
472 FETCH csr_get_def_bal_ids into l_basic_sal_id,l_accomodation_id,l_social_id,l_child_social_id,l_cost_of_living_id,l_ol1_id,l_tp_id,l_ol2_id,l_ol3_id,l_ol4_id;
473 CLOSE csr_get_def_bal_ids;
474
475 OPEN csr_get_def_id('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
476 FETCH csr_get_def_id into l_subject_to_social_id;
477 CLOSE csr_get_def_id;
478
479 z := 1;
480 t_store_def_bal(z).def_bal_id := l_basic_sal_id;
481 t_store_def_bal(z).label_index := get_index(1);
482
483 z:= z+1;
484
485 l_index := 2;
486
487 LOOP
488
489 If l_accomodation_id is not null THEN
490 t_store_def_bal(z).def_bal_id := l_accomodation_id;
491 t_store_def_bal(z).label_index := get_index(3);
492 z := z + 1;
493 l_index := l_index + 1;
494 EXIT WHEN z > 7;
495 End if;
496
497 If l_social_id is not null THEN
498 t_store_def_bal(z).def_bal_id := l_social_id;
499 t_store_def_bal(z).label_index := get_index(3);
500 z := z + 1;
501 l_index := l_index + 1;
502 EXIT WHEN z > 7;
503 End if;
504 If l_child_social_id is not null THEN
505 t_store_def_bal(z).def_bal_id := l_child_social_id;
506 t_store_def_bal(z).label_index := get_index(4);
507 z := z + 1;
508 l_index := l_index + 1;
509 EXIT WHEN z > 7;
510 End if;
511 If l_cost_of_living_id is not null THEN
512 t_store_def_bal(z).def_bal_id := l_cost_of_living_id;
513 t_store_def_bal(z).label_index := get_index(5);
514 z := z + 1;
515 l_index := l_index + 1;
516 EXIT WHEN z > 7;
517 End if;
518 If l_tp_id is not null THEN
519 t_store_def_bal(z).def_bal_id := l_tp_id;
520 t_store_def_bal(z).label_index := get_index(6);
521 z := z + 1;
522 l_index := l_index + 1;
523 EXIT WHEN z > 7;
524 End if;
525 If l_ol1_id is not null THEN
526 t_store_def_bal(z).def_bal_id := l_ol1_id;
527 t_store_def_bal(z).label_index := get_index(7);
528 z := z + 1;
529 l_index := l_index + 1;
530 EXIT WHEN z > 7;
531 End if;
532 If l_ol2_id is not null THEN
533 t_store_def_bal(z).def_bal_id := l_ol2_id;
534 t_store_def_bal(z).label_index := get_index(8);
535 z := z + 1;
536 l_index := l_index + 1;
537 EXIT WHEN z > 7;
538 End if;
539 If l_ol3_id is not null THEN
540 t_store_def_bal(z).def_bal_id := l_ol3_id;
541 t_store_def_bal(z).label_index := get_index(9);
542 z := z + 1;
543 l_index := l_index + 1;
544 EXIT WHEN z > 7;
545 End if;
546 If l_ol4_id is not null THEN
547 t_store_def_bal(z).def_bal_id := l_ol4_id;
548 t_store_def_bal(z).label_index := get_index(10);
549 z := z + 1;
550 l_index := l_index + 1;
551 EXIT WHEN z > 7;
552 End if;
553 If z < 8 then
554 WHILE Z <= 8 LOOP
555 t_store_def_bal(z).def_bal_id := NULL;
556 t_store_def_bal(z).label_index := get_index(11);
557 z := z + 1;
558 EXIT WHEN z > 8;
559 END LOOP;
560 End If;
561 EXIT WHEN z >= 8;
562 END LOOP;
563
564 l := 3;
565 i := 0;
566 k := 0;
567 m := 0;
568
569 OPEN csr_get_emp(p_employer_id , l_effective_date , l_nat_cd);
570 LOOP
571 FETCH csr_get_emp INTO rec_get_emp;
572 EXIT WHEN csr_get_emp%NOTFOUND;
573 i := i + 1;
574 t_store_assact(i).person_id := rec_get_emp.person_id;
575 t_store_assact(i).assignment_action_id := rec_get_emp.assignment_action_id;
576 t_store_assact(i).date_earned := rec_get_emp.date_earned;
577 t_store_assact(i).date_start := rec_get_emp.date_earned;
578 END LOOP;
579 CLOSE csr_get_emp;
580
581 IF i > 0 THEN
582 l_new_processed := 0;
583 ELSE
584 l_new_processed := 1;
585 END IF;
586
587 l_all_processed := 0;
588 j := 1;
589
590 WHILE j <= i LOOP
591 vXMLTable(vCtr).TagName := 'Employer_ssn';
592 vXMLTable(vCtr).TagValue := l_employer_ssn;
593 vctr := vctr + 1;
594 vXMLTable(vCtr).TagName := 'Employer_name';
595 vXMLTable(vCtr).TagValue := l_employer_name;
596 vctr := vctr + 1;
597 /********* Reset all the local variables **********/
598 l_full_name := null;
599 l_employee_number := null;
600 l_dob := null;
601 l_marital_status := null;
602 l_mar_p_status := null;
603 l_gender := null;
604 l_nat_date := null;
605 l_nat_reason := null;
606 l_insured_ssn := null;
607 l_uae_civil_reg_number := null;
608 l_cont_start_date := null;
609 l_job := null;
610 l_latest_qual_id := null;
611 l_asg_location_id := null;
612 l_work_emirate := null;
613 l_work_po_box := null;
614 l_home_phone := null;
615 l_work_phone := null;
616 l_home_fax := null;
617 l_work_fax := null;
618 l_home_phone_number := null;
619 l_work_phone_number := null;
620 l_home_fax_number := null;
621 l_work_fax_number := null;
622 l_p_ex_employer := null;
623 l_p_ex_employer_id := null;
624 l_transfer_date := null;
625 l_p_qual_name := null;
626 l_awarding_body := null;
627 l_major := null;
628 l_p_address := null;
629 l_number_of_wives := null;
630 l_number_of_sons := null;
631 l_number_of_daughters := null;
632 l_s_person_id := null;
633 l_s_qual := null;
634 l_s_major := null;
635 l_s_ex_employer_name := null;
636 l_s_ex_employer_id := null;
637 l_dis_details := null;
638 l_dis_percent := null;
639 l_dis_date := null;
640 l_dis_meaning := null;
641 l_est_name := null;
642 l_basic_val := 0;
643 l_accomodation_val := 0;
644 l_allowance_1_val := 0;
645 l_allowance_2_val := 0;
646 l_allowance_3_val := 0;
647 l_allowance_4_val := 0;
648 l_total := 0;
649
650 OPEN csr_p_data(t_store_assact(j).person_id,l_effective_date);
651 FETCH csr_p_data INTO l_full_name,l_employee_number,l_dob,l_marital_status,l_gender_c,l_nat_date,l_nat_reason;
652 CLOSE csr_p_data;
653
654 OPEN csr_p_gender(l_gender_c);
655 FETCH csr_p_gender INTO l_gender;
656 CLOSE csr_p_gender;
657
658 OPEN csr_p_mar_status(l_marital_status);
659 FETCH csr_p_mar_status into l_mar_p_status;
660 CLOSE csr_p_mar_status;
661
662 OPEN csr_p_asg_data(t_store_assact(j).person_id, l_effective_date);
663 FETCH csr_p_asg_data into l_uae_civil_reg_number,l_insured_ssn,l_cont_start_date,l_latest_qual_id,l_asg_location_id;
664 CLOSE csr_p_asg_data;
665
666 OPEN csr_p_job(t_store_assact(j).person_id, l_effective_date);
667 FETCH csr_p_job into l_job;
668 CLOSE csr_p_job;
669
670 OPEN csr_employer_address (l_asg_location_id);
671 FETCH csr_employer_address into l_work_emirate_code, l_work_po_box;
672 CLOSE csr_employer_address;
673
674 OPEN csr_employer_emirate (l_work_emirate_code);
675 FETCH csr_employer_emirate into l_work_emirate;
676 CLOSE csr_employer_emirate;
677
678 OPEN csr_get_org_phone_types (p_business_group_id);
679 FETCH csr_get_org_phone_types into l_home_phone,l_work_phone,l_home_fax,l_work_fax;
680 CLOSE csr_get_org_phone_types;
681
682 OPEN csr_p_phone_data(t_store_assact(j).person_id,'H1',l_effective_date);
683 FETCH csr_p_phone_data into l_home_phone_number;
684 CLOSE csr_p_phone_data;
685
686 OPEN csr_p_phone_data(t_store_assact(j).person_id,'W1',l_effective_date);
687 FETCH csr_p_phone_data into l_work_phone_number;
688 CLOSE csr_p_phone_data;
689
690 OPEN csr_p_phone_data(t_store_assact(j).person_id,'HF',l_effective_date);
691 FETCH csr_p_phone_data into l_home_fax_number;
692 CLOSE csr_p_phone_data;
693
694 OPEN csr_p_phone_data(t_store_assact(j).person_id,'WF',l_effective_date);
695 FETCH csr_p_phone_data into l_work_fax_number;
696 CLOSE csr_p_phone_data;
697
698
699 OPEN csr_p_ex_emp_data (t_store_assact(j).person_id);
700 FETCH csr_p_ex_emp_data into l_p_ex_employer,l_p_ex_employer_id, l_p_ex_employer_type , l_p_term_reason , l_tr_date,l_sector_name,l_paid_flag;
701 CLOSE csr_p_ex_emp_data;
702
703
704 OPEN csr_p_ex_emp_date_data (t_store_assact(j).person_id,l_p_ex_employer_id);
705 FETCH csr_p_ex_emp_date_data into l_transfer_date;
706 CLOSE csr_p_ex_emp_date_data;
707
708 OPEN csr_p_qual_data(t_store_assact(j).person_id,l_latest_qual_id);
709 FETCH csr_p_qual_data into l_p_qual_name,l_awarding_body , l_major;
710 CLOSE csr_p_qual_data;
711
712 If l_awarding_body is not null then
713 OPEN get_est_name(l_awarding_body);
714 FETCH get_est_name into l_est_name;
715 CLOSE get_est_name;
716 End If;
717
718 OPEN csr_p_address_data (t_store_assact(j).person_id,l_effective_date);
719 FETCH csr_p_address_data into l_p_address;
720 CLOSE csr_p_address_data;
721
722 IF l_gender_c = 'M' then
723 OPEN csr_p_contact_count_data(t_store_assact(j).person_id,'S','F',l_effective_date);
724 FETCH csr_p_contact_count_data into l_number_of_wives;
725 CLOSE csr_p_contact_count_data;
726 Else
727 l_number_of_wives := 0;
728 END IF;
729
730 OPEN csr_p_contact_count_data(t_store_assact(j).person_id,'C','M',l_effective_date);
731 FETCH csr_p_contact_count_data into l_number_of_sons;
732 CLOSE csr_p_contact_count_data;
733
734 OPEN csr_p_contact_count_data(t_store_assact(j).person_id,'C','F',l_effective_date);
735 FETCH csr_p_contact_count_data into l_number_of_daughters;
736 CLOSE csr_p_contact_count_data;
737
738 OPEN csr_p_spouse_id (t_store_assact(j).person_id,'S',l_gender,l_effective_date);
739 FETCH csr_p_spouse_id into l_s_person_id;
740 CLOSE csr_p_spouse_id;
741
742 OPEN csr_get_spouse_details (l_s_person_id);
743 FETCH csr_get_spouse_details into l_s_qual,l_s_major;
744 CLOSE csr_get_spouse_details;
745
746 OPEN csr_p_s_ex_emp_data(l_s_person_id);
747 FETCH csr_p_s_ex_emp_data into l_s_ex_employer_name, l_s_ex_employer_id;
748 CLOSE csr_p_s_ex_emp_data;
749
750 OPEN csr_p_disability_data (t_store_assact(j).person_id,l_effective_date);
751 FETCH csr_p_disability_data into l_dis_details,l_dis_percent,l_dis_date;
752 CLOSE csr_p_disability_data;
753
754 OPEN csr_get_dis_meaning(l_dis_details);
755 FETCH csr_get_dis_meaning into l_dis_meaning;
756 CLOSE csr_get_dis_meaning;
757
758 x := 1;
759
760 IF t_store_def_bal(x).def_bal_id is not null THEN
761 l_basic_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
762 x:= x + 1;
763 ELSE
764 l_basic_val := 0;
765 x:= x + 1;
766 END IF;
767
768 IF t_store_def_bal(x).def_bal_id is not null THEN
769 l_accomodation_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
770 x:= x + 1;
771 ELSE
772 l_accomodation_val := 0;
773 x:= x + 1;
774 END IF;
775
776 IF t_store_def_bal(x).def_bal_id is not null THEN
777 l_allowance_1_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
778 x:= x + 1;
779 ELSE
780 l_allowance_1_val := 0;
781 x:= x + 1;
782 END IF;
783
784 IF t_store_def_bal(x).def_bal_id is not null THEN
785 l_allowance_2_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
786 x:= x + 1;
787 ELSE
788 l_allowance_2_val := 0;
789 x:= x + 1;
790 END IF;
791
792 IF t_store_def_bal(x).def_bal_id is not null THEN
793 l_allowance_3_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
794 x:= x + 1;
795 ELSE
796 l_allowance_3_val := 0;
797 x:= x + 1;
798 END IF;
799
800 IF t_store_def_bal(x).def_bal_id is not null THEN
801 l_allowance_4_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
802 x:= x + 1;
803 ELSE
804 l_allowance_4_val := 0;
805 x:= x + 1;
806 END IF;
807
808 IF t_store_def_bal(x).def_bal_id is not null THEN
809 l_allowance_5_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
810 ELSE
811 l_allowance_5_val := 0;
812 END IF;
813
814 l_new_count := l_new_count+1;
815 l_fm_l_basic_val := to_char(abs(l_basic_val),lg_format_mask);
816 l_fm_l_accomodation_val := to_char(abs(l_accomodation_val),lg_format_mask);
817 l_fm_l_allowance_1_val := to_char(abs(l_allowance_1_val),lg_format_mask);
818 l_fm_l_allowance_2_val := to_char(abs(l_allowance_2_val),lg_format_mask);
819 l_fm_l_allowance_3_val := to_char(abs(l_allowance_3_val),lg_format_mask);
820 l_fm_l_allowance_4_val := to_char(abs(l_allowance_4_val),lg_format_mask);
821 l_fm_l_allowance_5_val := to_char(abs(l_allowance_5_val),lg_format_mask);
822
823 /** Populate the XML file **/
824
825 vXMLTable(vCtr).TagName := 'po_box';
826 vXMLTable(vCtr).TagValue := l_work_po_box;
827 vctr := vctr + 1;
828
829 vXMLTable(vCtr).TagName := 'Emirate_name';
830 vXMLTable(vCtr).TagValue := l_work_emirate;
831 vctr := vctr + 1;
832
833 vXMLTable(vCtr).TagName := 'fax';
834 vXMLTable(vCtr).TagValue := l_work_fax_number;
835 vctr := vctr + 1;
836
837 vXMLTable(vCtr).TagName := 'phone';
838 vXMLTable(vCtr).TagValue := l_work_phone_number;
839 vctr := vctr + 1;
840
841 vXMLTable(vCtr).TagName := 'Insured_ssn';
842 vXMLTable(vCtr).TagValue := l_insured_ssn;
843 vctr := vctr + 1;
844
845 vXMLTable(vCtr).TagName := 'Insured_name';
846 vXMLTable(vCtr).TagValue := SUBSTR(l_full_name,1,60);
847 vctr := vctr + 1;
848
849 vXMLTable(vCtr).TagName := 'Employee_number';
850 vXMLTable(vCtr).TagValue := l_employee_number;
851 vctr := vctr + 1;
852
853 vXMLTable(vCtr).TagName := 'job';
854 vXMLTable(vCtr).TagValue := l_job;
855 vctr := vctr + 1;
856
857 vXMLTable(vCtr).TagName := 'contribution_start_day';
858 vXMLTable(vCtr).TagValue := to_char(l_cont_start_date,'DD');
859 vctr := vctr + 1;
860
861 vXMLTable(vCtr).TagName := 'contribution_start_month';
862 vXMLTable(vCtr).TagValue := to_char(l_cont_start_date,'MM');
863 vctr := vctr + 1;
864
865 vXMLTable(vCtr).TagName := 'contribution_start_year';
866 vXMLTable(vCtr).TagValue := to_char(l_cont_start_date,'YYYY');
867 vctr := vctr + 1;
868
869 vXMLTable(vCtr).TagName := 'salary_start_day';
870 vXMLTable(vCtr).TagValue := to_char(t_store_assact(j).date_earned,'DD');
871 vctr := vctr + 1;
872
873 vXMLTable(vCtr).TagName := 'salary_start_month';
874 vXMLTable(vCtr).TagValue := to_char(t_store_assact(j).date_earned,'MM');
875 vctr := vctr + 1;
876
877 vXMLTable(vCtr).TagName := 'salary_start_year';
878 vXMLTable(vCtr).TagValue := to_char(t_store_assact(j).date_earned,'YYYY');
879 vctr := vctr + 1;
880
881 vXMLTable(vCtr).TagName := 'joining_day';
882 vXMLTable(vCtr).TagValue := to_char(t_store_assact(j).date_start,'DD');
883 vctr := vctr + 1;
884
885 vXMLTable(vCtr).TagName := 'joining_month';
886 vXMLTable(vCtr).TagValue := to_char(t_store_assact(j).date_start,'MM');
887 vctr := vctr + 1;
888
889 vXMLTable(vCtr).TagName := 'joining_year';
890 vXMLTable(vCtr).TagValue := to_char(t_store_assact(j).date_start,'YYYY');
891 vctr := vctr + 1;
892
893 If (l_p_ex_employer_type = 'FG' and l_cur_employer_type = 'F') and l_p_term_reason = 'EMP_TRANS' then
894
895 vXMLTable(vCtr).TagName := 'transfer_day';
896 vXMLTable(vCtr).TagValue := nvl(to_char(l_tr_date,'DD'),' ');
897 vctr := vctr + 1;
898
899 vXMLTable(vCtr).TagName := 'transfer_month';
900 vXMLTable(vCtr).TagValue := nvl(to_char(l_tr_date,'MM'),' ');
901 vctr := vctr + 1;
902
903 vXMLTable(vCtr).TagName := 'transfer_year';
904 vXMLTable(vCtr).TagValue := nvl(to_char(l_tr_date,'YYYY'),' ');
905 vctr := vctr + 1;
906
907 vXMLTable(vCtr).TagName := 'sector_name';
908 vXMLTable(vCtr).TagValue := nvl(l_sector_name,' ');
909 vctr := vctr + 1;
910
911 End If;
912
913 If l_paid_flag = 'Y' then
914 vXMLTable(vCtr).TagName := 'other_income_flag_y';
915 vXMLTable(vCtr).TagValue := 'X';
916 vctr := vctr + 1;
917 End If;
918
919 If l_paid_flag = 'N' then
920 vXMLTable(vCtr).TagName := 'other_income_flag_n';
921 vXMLTable(vCtr).TagValue := 'X';
922 vctr := vctr + 1;
923 End If;
924
925 vXMLTable(vCtr).TagName := 'Ex_Employer_name';
926 vXMLTable(vCtr).TagValue := l_p_ex_employer;
927 vctr := vctr + 1;
928
929 vXMLTable(vCtr).TagName := 'Basic_Salary';
930
931 BEGIN
932 SELECT nvl(decode(l_basic_val/(abs(decode(l_basic_val,0,1,l_basic_val))*-1),1,'-'||l_fm_l_basic_val,l_fm_l_basic_val),' ')
933 INTO l_fm_l_basic_val
934 FROM dual;
935
936 EXCEPTION
937 WHEN no_data_found then
938 NULL;
939 END;
940
941 vXMLTable(vCtr).TagValue := nvl(l_fm_l_basic_val,' ');
942 vctr := vctr + 1;
943
944 vXMLTable(vCtr).TagName := 'Allowance_1';
945
946 BEGIN
947 SELECT decode(l_accomodation_val/(abs(decode(l_accomodation_val,0,1,l_accomodation_val))*-1),1,'-'||l_fm_l_accomodation_val,l_fm_l_accomodation_val)
948 INTO l_fm_l_accomodation_val
949 FROM dual;
950
951 EXCEPTION
952 WHEN no_data_found then
953 NULL;
954 END;
955
956
957 vXMLTable(vCtr).TagValue := l_fm_l_accomodation_val;
958 vctr := vctr + 1;
959
960 vXMLTable(vCtr).TagName := 'Allowance_2';
961
962 BEGIN
963 SELECT decode(l_allowance_1_val/(abs(decode(l_allowance_1_val,0,1,l_allowance_1_val))*-1),1,'-'||l_fm_l_allowance_1_val,l_fm_l_allowance_1_val)
964 INTO l_fm_l_allowance_1_val
965 FROM dual;
966
967 EXCEPTION
968 WHEN no_data_found then
969 NULL;
970 END;
971
972
973 vXMLTable(vCtr).TagValue := l_fm_l_allowance_1_val;
974 vctr := vctr + 1;
975
976 vXMLTable(vCtr).TagName := 'Allowance_3';
977
978 BEGIN
979 SELECT decode(l_allowance_2_val/(abs(decode(l_allowance_2_val,0,1,l_allowance_2_val))*-1),1,'-'||l_fm_l_allowance_2_val,l_fm_l_allowance_2_val)
980 INTO l_fm_l_allowance_2_val
981 FROM dual;
982
983 EXCEPTION
984 WHEN no_data_found then
985 NULL;
986 END;
987
988 vXMLTable(vCtr).TagValue := l_fm_l_allowance_2_val;
989 vctr := vctr + 1;
990
991 vXMLTable(vCtr).TagName := 'Allowance_4';
992
993 BEGIN
994 SELECT decode(l_allowance_3_val/(abs(decode(l_allowance_3_val,0,1,l_allowance_3_val))*-1),1,'-'||l_fm_l_allowance_3_val,l_fm_l_allowance_3_val)
995 INTO l_fm_l_allowance_3_val
996 FROM dual;
997
998 EXCEPTION
999 WHEN no_data_found then
1000 NULL;
1001 END;
1002
1003 vXMLTable(vCtr).TagValue := l_fm_l_allowance_3_val;
1004 vctr := vctr + 1;
1005
1006 vXMLTable(vCtr).TagName := 'Allowance_5';
1007
1008 BEGIN
1009 SELECT decode(l_allowance_4_val/(abs(decode(l_allowance_4_val,0,1,l_allowance_4_val))*-1),1,'-'||l_fm_l_allowance_4_val,l_fm_l_allowance_4_val)
1010 INTO l_fm_l_allowance_4_val
1011 FROM dual;
1012
1013 EXCEPTION
1014 WHEN no_data_found then
1015 NULL;
1016 END;
1017
1018 vXMLTable(vCtr).TagValue := l_fm_l_allowance_4_val;
1019 vctr := vctr + 1;
1020
1021 vXMLTable(vCtr).TagName := 'Allowance_6';
1022
1023 BEGIN
1024 SELECT decode(l_allowance_5_val/(abs(decode(l_allowance_5_val,0,1,l_allowance_5_val))*-1),1,'-'||l_fm_l_allowance_5_val,l_fm_l_allowance_5_val)
1025 INTO l_fm_l_allowance_5_val
1026 FROM dual;
1027
1028 EXCEPTION
1029 WHEN no_data_found then
1030 NULL;
1031 END;
1032
1033 vXMLTable(vCtr).TagValue := l_fm_l_allowance_5_val;
1034 vctr := vctr + 1;
1035
1036 l_total := pay_balance_pkg.get_value(l_subject_to_social_id , t_store_assact(j).assignment_action_id);
1037 l_fm_total_val := to_char(abs(l_total),lg_format_mask);
1038
1039 vXMLTable(vCtr).TagName := 'total_cont_salary';
1040
1041 BEGIN
1042 SELECT decode(l_total/(abs(decode(l_total,0,1,l_total))*-1),1,'-'||l_fm_total_val,l_fm_total_val)
1043 INTO l_fm_total_val
1044 FROM dual;
1045
1046 EXCEPTION
1047 WHEN no_data_found then
1048 NULL;
1049 END;
1050
1051 vXMLTable(vCtr).TagValue := l_fm_total_val;
1052 vctr := vctr + 1;
1053
1054 vXMLTable(vCtr).TagName := 'major';
1055 vXMLTable(vCtr).TagValue := l_major;
1056 vctr := vctr + 1;
1057
1058 vXMLTable(vCtr).TagName := 'from';
1059 vXMLTable(vCtr).TagValue := l_est_name;
1060 vctr := vctr + 1;
1061
1062 vXMLTable(vCtr).TagName := 'last_qualification';
1063 vXMLTable(vCtr).TagValue := l_p_qual_name;
1064 vctr := vctr + 1;
1065
1066 vXMLTable(vCtr).TagName := 'per_fax';
1067 vXMLTable(vCtr).TagValue := l_home_fax_number;
1068 vctr := vctr + 1;
1069
1070 vXMLTable(vCtr).TagName := 'residence_phone';
1071 vXMLTable(vCtr).TagValue := l_home_phone_number;
1072 vctr := vctr + 1;
1073
1074 vXMLTable(vCtr).TagName := 'residense_address';
1075 vXMLTable(vCtr).TagValue := l_p_address;
1076 vctr := vctr + 1;
1077
1078 vXMLTable(vCtr).TagName := 'nationality_day';
1079 vXMLTable(vCtr).TagValue := nvl(to_char(l_nat_date,'DD'),' ');
1080 vctr := vctr + 1;
1081
1082 vXMLTable(vCtr).TagName := 'nationality_month';
1083 vXMLTable(vCtr).TagValue := nvl(to_char(l_nat_date,'MM'),' ');
1084 vctr := vctr + 1;
1085
1086 vXMLTable(vCtr).TagName := 'nationality_year';
1087 vXMLTable(vCtr).TagValue := nvl(to_char(l_nat_date,'YYYY'),' ');
1088 vctr := vctr + 1;
1089
1090 vXMLTable(vCtr).TagName := 'how_nationality_obtained';
1091 vXMLTable(vCtr).TagValue := l_nat_reason;
1092 vctr := vctr + 1;
1093
1094 vXMLTable(vCtr).TagName := 'uae_civil_reg_number';
1095 vXMLTable(vCtr).TagValue := l_uae_civil_reg_number;
1096 vctr := vctr + 1;
1097
1098 vXMLTable(vCtr).TagName := 'gender';
1099 vXMLTable(vCtr).TagValue := l_gender;
1100 vctr := vctr + 1;
1101
1102 vXMLTable(vCtr).TagName := 'dob_day';
1103 vXMLTable(vCtr).TagValue := nvl(to_char(l_dob,'DD'),' ');
1104 vctr := vctr + 1;
1105
1106 vXMLTable(vCtr).TagName := 'dob_month';
1107 vXMLTable(vCtr).TagValue := nvl(to_char(l_dob,'MM'),' ');
1108 vctr := vctr + 1;
1109
1110 vXMLTable(vCtr).TagName := 'dob_year';
1111 vXMLTable(vCtr).TagValue := nvl(to_char(l_dob,'YYYY'),' ');
1112 vctr := vctr + 1;
1113
1114 vXMLTable(vCtr).TagName := 'major_spouse';
1115 vXMLTable(vCtr).TagValue := l_s_major;
1116 vctr := vctr + 1;
1117
1118 vXMLTable(vCtr).TagName := 'last_qualification_spouse';
1119 vXMLTable(vCtr).TagValue := l_s_qual;
1120 vctr := vctr + 1;
1121
1122 vXMLTable(vCtr).TagName := 'employer_name_spouse';
1123 vXMLTable(vCtr).TagValue := l_s_ex_employer_name;
1124 vctr := vctr + 1;
1125
1126 vXMLTable(vCtr).TagName := 'number_of_sons';
1127 vXMLTable(vCtr).TagValue := l_number_of_sons;
1128 vctr := vctr + 1;
1129
1130 vXMLTable(vCtr).TagName := 'number_of_daughters';
1131 vXMLTable(vCtr).TagValue := l_number_of_daughters;
1132 vctr := vctr + 1;
1133
1134 vXMLTable(vCtr).TagName := 'number_of_wives';
1135 vXMLTable(vCtr).TagValue := l_number_of_wives;
1136 vctr := vctr + 1;
1137
1138 vXMLTable(vCtr).TagName := 'marital_status';
1139 vXMLTable(vCtr).TagValue := l_mar_p_status;
1140 vctr := vctr + 1;
1141
1142 vXMLTable(vCtr).TagName := 'percent';
1143 vXMLTable(vCtr).TagValue := l_dis_percent;
1144 vctr := vctr + 1;
1145
1146 vXMLTable(vCtr).TagName := 'disablity_day';
1147 vXMLTable(vCtr).TagValue := nvl(to_char(l_dis_date,'DD'),' ');
1148 vctr := vctr + 1;
1149
1150 vXMLTable(vCtr).TagName := 'disablity_month';
1151 vXMLTable(vCtr).TagValue := nvl(to_char(l_dis_date,'MM'),' ');
1152 vctr := vctr + 1;
1153
1154 vXMLTable(vCtr).TagName := 'disablity_year';
1155 vXMLTable(vCtr).TagValue := nvl(to_char(l_dis_date,'YYYY'),' ');
1156 vctr := vctr + 1;
1157
1158 vXMLTable(vCtr).TagName := 'disablity_reason';
1159 vXMLTable(vCtr).TagValue := l_dis_meaning;
1160 vctr := vctr + 1;
1161
1162 j := j + 1;
1163
1164 vXMLTable(vCtr).TagName := 'PAGE-BK';
1165 vXMLTable(vCtr).TagValue := ' ';
1166 vctr := vctr + 1;
1167
1168 IF j > i THEN
1169 l_new_processed := 1;
1170 EXIT;
1171 END IF;
1172 END LOOP;
1173
1174 hr_utility.set_location('Finished creating xml data for Procedure FORM1 ',20);
1175 WritetoCLOB ( l_xfdf_blob );
1176
1177 EXCEPTION
1178 WHEN utl_file.invalid_path then
1179 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
1180 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
1181 hr_utility.raise_error;
1182 --
1183 WHEN utl_file.invalid_mode then
1184 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
1185 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
1186 hr_utility.raise_error;
1187 --
1188 WHEN utl_file.invalid_filehandle then
1189 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
1190 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
1191 hr_utility.raise_error;
1192 --
1193 WHEN utl_file.invalid_operation then
1194 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
1195 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
1196 hr_utility.raise_error;
1197 --
1198 WHEN utl_file.read_error then
1199 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
1200 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
1201 hr_utility.raise_error;
1202 --
1203 WHEN others THEN
1204 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
1205 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
1206 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
1207 hr_utility.raise_error;
1208 END FORM1;
1209 -------------------------------------------------------------------------------------------
1210 PROCEDURE FORM2
1211 (p_request_id NUMBER
1212 ,p_report VARCHAR2
1213 ,p_business_group_id NUMBER
1214 ,p_employer_id NUMBER
1215 ,p_effective_month VARCHAR2
1216 ,p_effective_year VARCHAR2
1217 ,l_xfdf_blob OUT NOCOPY BLOB
1218 )
1219 AS
1220
1221 /*Cursor for fetching Local nationality for the BG */
1222 CURSOR csr_get_loc_nat IS
1223 SELECT org_information1
1224 FROM hr_organization_information
1225 WHERE organization_id = p_business_group_id
1226 AND org_information_context = 'AE_BG_DETAILS';
1227
1228 /*Cursor for fetching Employer SSN*/
1229 CURSOR csr_employer_ssn IS
1230 SELECT org_information1
1231 FROM hr_organization_information
1232 WHERE organization_id = p_employer_id
1233 AND org_information_context = 'AE_LEGAL_EMPLOYER_DETAILS';
1234
1235 /*Cursor for fetching Employer Name*/
1236 CURSOR csr_employer_name IS
1237 SELECT name
1238 FROM hr_organization_units
1239 WHERE organization_id = p_employer_id;
1240
1241 /* Cursor for fetching organization phone types */
1242 CURSOR csr_get_org_phone_types (l_bg_id number) IS
1243 SELECT hoi.org_information1,hoi.org_information2,hoi.org_information3,hoi.org_information4
1244 FROM hr_organization_information hoi
1245 WHERE hoi.organization_id = l_bg_id
1246 AND hoi.org_information_context = 'AE_HR_BG_INFO';
1247
1248 /* Cursor for fetching person's phone details */
1249 CURSOR csr_p_phone_data (l_person_id number,l_ph_type varchar2,l_effective_date date) IS
1250 SELECT pp.phone_number
1251 FROM per_phones pp,per_all_people_f ppf
1252 WHERE pp.parent_id = ppf.person_id
1253 AND pp.phone_type = l_ph_type
1254 AND ppf.person_id = l_person_id
1255 AND l_effective_date between pp.date_from and nvl(pp.date_to,to_date('31-12-4712','DD-MM-YYYY'));
1256
1257 /* Cursor for fetching person's Address */
1258 CURSOR csr_p_address_data (l_person_id number,l_effective_date date) IS
1259 SELECT substr(addr.ADDRESS_LINE1 || ' ' ||addr.address_line2,1,60)
1260 FROM per_addresses addr
1261 WHERE addr.person_id = l_person_id
1262 AND l_effective_date between addr.date_from and nvl(addr.date_to,to_date('31-12-4712','dd-mm-yyyy'))
1263 AND addr.primary_flag = 'Y';
1264
1265 /* Cursor for fetching the Terminated Employees coming under legal employer*/
1266 CURSOR csr_get_emp (l_employer_id number, l_effective_date date , l_nat_cd varchar2) IS
1267 SELECT distinct asg.person_id
1268 ,paa.assignment_action_id
1269 ,pos.actual_termination_date
1270 ,pos.LEAVING_REASON
1271 ,ppa.date_earned
1272 FROM per_all_assignments_f asg
1273 ,pay_assignment_actions paa
1274 ,pay_payroll_actions ppa
1275 ,hr_soft_coding_keyflex hscl
1276 ,per_periods_of_service pos
1277 ,per_all_people_f ppf
1278 WHERE asg.assignment_id = paa.assignment_id
1279 AND paa.payroll_action_id = ppa.payroll_action_id
1280 AND pos.period_of_service_id = asg.period_of_service_id
1281 AND ppa.action_type in ('R','Q')
1282 AND ppa.action_status = 'C'
1283 AND paa.action_status IN ('C','S')
1284 AND trunc(ppa.date_earned,'MM') = TRUNC(l_effective_date, 'MM')
1285 AND trunc(NVL(pos.actual_termination_date, to_date('31-12-4712','DD-MM-YYYY')),'MM') = TRUNC(l_effective_date, 'MM')
1286 AND trunc(l_effective_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
1287 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
1288 AND hscl.segment1 = to_char(l_employer_id)
1289 AND ppf.person_id = asg.person_id
1290 AND trunc(l_effective_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
1291 AND ppf.per_information18 = l_nat_cd;
1292
1293 /* Cursor for fetching the Terminated Employees coming under legal employer*/
1294 CURSOR csr_get_leav_reas (l_code varchar2) IS
1295 SELECT hl.meaning
1296 FROM hr_lookups hl
1297 WHERE hl.lookup_type = 'LEAV_REAS'
1298 AND hl.lookup_code = l_code;
1299
1300 /* Cursor for fetching the person data */
1301 CURSOR csr_p_data (l_person_id number,l_effective_date date) IS
1302 SELECT ppf.full_name,ppf.marital_status,ppf.sex
1303 FROM per_all_people_f ppf
1304 WHERE ppf.person_id = l_person_id
1305 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
1306
1307 /* Cursor for fetching the person's marital status */
1308 CURSOR csr_p_mar_status (l_mar_stat varchar2) IS
1309 SELECT hl.meaning
1310 FROM hr_lookups hl
1311 WHERE hl.lookup_type = 'MAR_STATUS'
1312 AND hl.lookup_code = l_mar_stat
1313 AND hl.enabled_flag = 'Y';
1314
1315 /* Cursor for fetching the person's assignment data */
1316 CURSOR csr_p_asg_data (l_person_id number,l_effective_date date) IS
1317 SELECT paf.assignment_id , hsck.segment3,paf.location_id
1318 FROM per_all_assignments_f paf,hr_soft_coding_keyflex hsck
1319 WHERE paf.person_id = l_person_id
1320 AND paf.soft_coding_keyflex_id = hsck.soft_coding_keyflex_id
1321 AND hsck.segment1 = p_employer_id
1322 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
1323
1324 /* Cursor for fetching person's contact counts */
1325 CURSOR csr_p_contact_count_data (l_person_id number,l_type varchar2, l_gender varchar2, l_effective_date date) IS
1326 SELECT count(*)
1327 FROM per_contact_relationships cont , per_all_people_f ppf
1328 WHERE cont.person_id = l_person_id
1329 AND cont.contact_type = l_type
1330 AND ppf.person_id = cont.CONTACT_PERSON_ID
1331 AND ppf.sex = l_gender
1332 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
1333
1334 /* Cursor for fetching External account id and org payment method id*/
1335 CURSOR csr_get_ext_id_org_paymeth (l_assignment_id number,l_effective_date date) IS
1336 SELECT external_account_id,org_payment_method_id
1337 FROM pay_personal_payment_methods_f
1338 WHERE assignment_id = l_assignment_id
1339 AND l_effective_date between effective_start_date and effective_end_date
1340 AND ppm_information_category = 'AE_AE DIRECT DEPOSIT AED'
1341 AND ppm_information1 = 'Y';
1342
1343 /* Cursor for fetching external account id for org payment method*/
1344 CURSOR csr_get_ext_id (l_org_paymeth_id number,l_effective_date date) IS
1345 SELECT external_account_id
1346 FROM pay_org_payment_methods_f pom
1347 WHERE pom.org_payment_method_id = l_org_paymeth_id
1348 And l_effective_date between effective_start_date and effective_end_date;
1349
1350 /* Cursor for fetching Bank details for external account id*/
1351 CURSOR csr_get_bank_det_ext (l_external_account_id number) IS
1352 SELECT segment1,segment2,segment4
1353 FROM pay_external_accounts
1354 WHERE external_account_id = l_external_account_id;
1355
1356 /* Cursor for fetching the Bank name */
1357 CURSOR csr_get_bank_name (l_code VARCHAR2) IS
1358 SELECT hl.meaning
1359 FROM hr_lookups hl
1360 WHERE hl.lookup_type = 'AE_BANK_NAMES'
1361 AND hl.lookup_code = l_code
1362 AND hl.enabled_flag = 'Y';
1363
1364 /* Cursor for fetching the Branch name */
1365 CURSOR csr_get_branch_name (l_code VARCHAR2) IS
1366 SELECT hl.meaning
1367 FROM hr_lookups hl
1368 WHERE hl.lookup_type = 'AE_BRANCH_NAMES'
1369 AND hl.lookup_code = l_code
1370 AND hl.enabled_flag = 'Y';
1371
1372 /* Cursor for fetching Defined balance ids from Org EIT */
1373 CURSOR csr_get_def_bal_ids (l_bg_id number) IS
1374 SELECT ORG_INFORMATION1,ORG_INFORMATION2,ORG_INFORMATION3,ORG_INFORMATION4,ORG_INFORMATION5,ORG_INFORMATION6,ORG_INFORMATION7,ORG_INFORMATION8,ORG_INFORMATION9,ORG_INFORMATION10 ,ORG_INFORMATION11
1375 FROM HR_ORGANIZATION_INFORMATION
1376 WHERE Organization_id = l_bg_id
1377 AND org_information_context = 'AE_SI_DETAILS';
1378
1379 /*Cursor for fetching defined balance id*/
1380 CURSOR csr_get_def_bal_id(p_user_name VARCHAR2) IS
1381 SELECT u.creator_id
1382 FROM ff_user_entities u,
1383 ff_database_items d
1384 WHERE d.user_name = p_user_name
1385 AND u.user_entity_id = d.user_entity_id
1386 AND u.legislation_code = 'AE'
1387 AND u.business_group_id is null
1388 AND u.creator_type = 'B';
1389
1390 TYPE def_bal_rec IS RECORD
1391 (def_bal_id NUMBER
1392 ,label_index VARCHAR2(40));
1393 TYPE t_def_bal_table IS TABLE OF def_bal_rec INDEX BY BINARY_INTEGER;
1394 t_store_def_bal t_def_bal_table;
1395 TYPE assact_rec IS RECORD
1396 (person_id NUMBER
1397 ,assignment_action_id NUMBER
1398 ,actual_term_date DATE
1399 ,leaving_reason VARCHAR2(100)
1400 ,date_earned DATE);
1401 TYPE t_assact_table IS TABLE OF assact_rec INDEX BY BINARY_INTEGER;
1402 t_store_assact t_assact_table;
1403 l_employer_name varchar2(240);
1404 l_input_date varchar2(30);
1405 l_effective_date date;
1406 l_employer_ssn number;
1407 l_basic_sal_id number;
1408 z number;
1409 l_accomodation_id number;
1410 l_social_id number;
1411 l_child_social_id number;
1412 l_tp_id number;
1413 l_ol1_id number;
1414 l_ol2_id number;
1415 l_ol3_id number;
1416 l_ol4_id number;
1417 l_cost_of_living_id number;
1418 l_index number;
1419 i number;
1420 k number;
1421 m number;
1422 j number;
1423 x number;
1424 l_new_processed number;
1425 l_all_processed number;
1426 l_new_count number;
1427 l_basic_val number(12,2);
1428 l_accomodation_val number(12,2);
1429 l_allowance_1_val number(12,2);
1430 l_allowance_2_val number(12,2);
1431 l_allowance_3_val number(12,2);
1432 l_allowance_4_val number(12,2);
1433 l_allowance_5_val number(12,2);
1434 l number;
1435 L_FULL_NAME varchar2(240);
1436 l_insured_ssn number;
1437 l_uae_civil_reg_number number;
1438 l_asg_location_id number;
1439 l_work_emirate varchar2(100);
1440 l_home_phone_number varchar2(100);
1441 l_home_fax_number varchar2(100);
1442 L_MARITAL_STATUS varchar2(100);
1443 l_mar_p_status varchar2(30);
1444 l_asg_id number;
1445 l_gender varchar2(100);
1446 l_p_address varchar2(240);
1447 l_number_of_sons number;
1448 l_number_of_daughters number;
1449 l_number_of_wives number;
1450 l_home_phone varchar2(100);
1451 l_work_phone varchar2(100);
1452 l_work_fax varchar2(100);
1453 l_home_fax varchar2(100);
1454 L_TOTAL number(12,2);
1455 L_FM_TOTAL_VAL varchar2(100);
1456 l_fm_l_basic_val varchar2(100);
1457 L_FM_L_ACCOMODATION_VAL varchar2(100);
1458 L_FM_L_ALLOWANCE_1_VAL varchar2(100);
1459 L_FM_L_ALLOWANCE_2_VAL varchar2(100);
1460 L_FM_L_ALLOWANCE_3_VAL varchar2(100);
1461 L_FM_L_ALLOWANCE_4_VAL varchar2(100);
1462 L_FM_L_ALLOWANCE_5_VAL varchar2(100);
1463 l_fm_ee_arrears varchar2(100);
1464 l_ee_arrears number(12,2);
1465 l_bank_name varchar2(80);
1466 l_bank_branch_name varchar2(80);
1467 l_seg1 varchar2(30);
1468 l_seg2 varchar2(30);
1469 l_seg4 varchar2(100);
1470 l_org_ext_act_id number;
1471 l_ext_act_id number;
1472 l_org_pm_id number;
1473 l_no_flag varchar2(1);
1474 l_arrears_def_bal_id number;
1475 l_subject_si_id number;
1476 rec_get_emp csr_get_emp%ROWTYPE;
1477 l_leaving_reason varchar2(100);
1478 l_ded_id number;
1479 l_ded_val number(15,2);
1480 l_fm_l_ded_val varchar2(100);
1481 l_nat_cd varchar2(30);
1482
1483 BEGIN
1484
1485 set_currency_mask(p_business_group_id);
1486 l_input_date := '01-'||p_effective_month||'-'||p_effective_year;
1487 l_effective_date := last_day(to_date(l_input_date,'DD-MM-YYYY'));
1488
1489 INSERT INTO fnd_sessions (session_id, effective_date)
1490 VALUES (userenv('sessionid'), l_effective_date);
1491
1492 -- To clear the PL/SQL Table values.
1493 vXMLTable.DELETE;
1494 vCtr := 1;
1495 hr_utility.set_location('Entering FORM1 ',10);
1496
1497 /* Fetch local nationality */
1498 OPEN csr_get_loc_nat;
1499 FETCH csr_get_loc_nat into l_nat_cd;
1500 CLOSE csr_get_loc_nat;
1501
1502
1503 /*Fetch Employer SSN*/
1504 OPEN csr_employer_ssn;
1505 FETCH csr_employer_ssn INTO l_employer_ssn;
1506 CLOSE csr_employer_ssn;
1507
1508 /*Fetch Employer Name*/
1509 OPEN csr_employer_name;
1510 FETCH csr_employer_name INTO l_employer_name;
1511 CLOSE csr_employer_name;
1512
1513 OPEN csr_get_def_bal_ids (p_employer_id);
1514 FETCH csr_get_def_bal_ids into l_basic_sal_id,l_accomodation_id,l_social_id,l_child_social_id,l_cost_of_living_id,l_ol1_id,l_tp_id,l_ol2_id,l_ol3_id,l_ol4_id,l_ded_id;
1515 CLOSE csr_get_def_bal_ids;
1516
1517 z := 1;
1518 t_store_def_bal(z).def_bal_id := l_basic_sal_id;
1519 t_store_def_bal(z).label_index := get_index(1);
1520
1521 z:= z+1;
1522 t_store_def_bal(z).def_bal_id := l_accomodation_id;
1523 t_store_def_bal(z).label_index := get_index(2);
1524
1525 z := z + 1;
1526 l_index := 2;
1527
1528 LOOP
1529 If l_social_id is not null THEN
1530 t_store_def_bal(z).def_bal_id := l_social_id;
1531 t_store_def_bal(z).label_index := get_index(3);
1532 z := z + 1;
1533 l_index := l_index + 1;
1534 EXIT WHEN z > 6;
1535 End if;
1536
1537 If l_child_social_id is not null THEN
1538 t_store_def_bal(z).def_bal_id := l_child_social_id;
1539 t_store_def_bal(z).label_index := get_index(4);
1540 z := z + 1;
1541 l_index := l_index + 1;
1542 EXIT WHEN z > 6;
1543 End if;
1544
1545 If l_cost_of_living_id is not null THEN
1546 t_store_def_bal(z).def_bal_id := l_cost_of_living_id;
1547 t_store_def_bal(z).label_index := get_index(5);
1548 z := z + 1;
1549 l_index := l_index + 1;
1550 EXIT WHEN z > 6;
1551 End if;
1552
1553 If l_tp_id is not null THEN
1554 t_store_def_bal(z).def_bal_id := l_tp_id;
1555 t_store_def_bal(z).label_index := get_index(6);
1556 z := z + 1;
1557 l_index := l_index + 1;
1558 EXIT WHEN z > 6;
1559 End if;
1560
1561 If l_ol1_id is not null THEN
1562 t_store_def_bal(z).def_bal_id := l_ol1_id;
1563 t_store_def_bal(z).label_index := get_index(7);
1564 z := z + 1;
1565 l_index := l_index + 1;
1566 EXIT WHEN z > 6;
1567 End if;
1568
1569 If l_ol2_id is not null THEN
1570 t_store_def_bal(z).def_bal_id := l_ol2_id;
1571 t_store_def_bal(z).label_index := get_index(8);
1572 z := z + 1;
1573 l_index := l_index + 1;
1574 EXIT WHEN z > 6;
1575 End if;
1576
1577 If l_ol3_id is not null THEN
1578 t_store_def_bal(z).def_bal_id := l_ol3_id;
1579 t_store_def_bal(z).label_index := get_index(9);
1580 z := z + 1;
1581 l_index := l_index + 1;
1582 EXIT WHEN z > 6;
1583 End if;
1584
1585 If l_ol4_id is not null THEN
1586 t_store_def_bal(z).def_bal_id := l_ol4_id;
1587 t_store_def_bal(z).label_index := get_index(10);
1588 z := z + 1;
1589 l_index := l_index + 1;
1590 EXIT WHEN z > 6;
1591 End if;
1592
1593 If z <7 then
1594 WHILE Z <= 7 LOOP
1595 t_store_def_bal(z).def_bal_id := NULL;
1596 t_store_def_bal(z).label_index := get_index(11);
1597 z := z + 1;
1598 EXIT WHEN z > 7;
1599 END LOOP;
1600 End If;
1601 EXIT WHEN z >=7;
1602 END LOOP;
1603
1604 l := 3;
1605 i := 0;
1606 k := 0;
1607 m := 0;
1608
1609 OPEN csr_get_emp(p_employer_id , l_effective_date,l_nat_cd);
1610 LOOP
1611 FETCH csr_get_emp INTO rec_get_emp;
1612 EXIT WHEN csr_get_emp%NOTFOUND;
1613 i := i + 1;
1614 t_store_assact(i).person_id := rec_get_emp.person_id;
1615 t_store_assact(i).assignment_action_id := rec_get_emp.assignment_action_id;
1616 t_store_assact(i).actual_term_date := rec_get_emp.actual_termination_date;
1617 t_store_assact(i).leaving_reason := rec_get_emp.LEAVING_REASON;
1618 t_store_assact(i).date_earned := rec_get_emp.date_earned;
1619 END LOOP;
1620 CLOSE csr_get_emp;
1621
1622 IF i > 0 THEN
1623 l_new_processed := 0;
1624 ELSE
1625 l_new_processed := 1;
1626 END IF;
1627
1628 l_all_processed := 0;
1629 j := 1;
1630 WHILE j <= i LOOP
1631 /********* Reset all the local variables **********/
1632 l_full_name := null;
1633 l_marital_status := null;
1634 l_mar_p_status := null;
1635 l_gender := null;
1636 l_insured_ssn := null;
1637 l_asg_location_id := null;
1638 l_asg_id := null;
1639 l_work_emirate := null;
1640 l_home_phone := null;
1641 l_home_fax := null;
1642 l_home_phone_number := null;
1643 l_home_fax_number := null;
1644 l_p_address := null;
1645 l_number_of_wives := null;
1646 l_number_of_sons := null;
1647 l_number_of_daughters := null;
1648 l_bank_name := null;
1649 l_bank_branch_name := null;
1650 l_seg1 := null;
1651 l_seg2 := null;
1652 l_seg4 := null;
1653 l_org_ext_act_id := null;
1654 l_ext_act_id := null;
1655 l_org_pm_id := null;
1656 l_arrears_def_bal_id := null;
1657 l_no_flag := null;
1658
1659 OPEN csr_p_data(t_store_assact(j).person_id,l_effective_date);
1660 FETCH csr_p_data INTO l_full_name,l_marital_status,l_gender;
1661 CLOSE csr_p_data;
1662
1663 OPEN csr_p_mar_status(l_marital_status);
1664 FETCH csr_p_mar_status into l_mar_p_status;
1665 CLOSE csr_p_mar_status;
1666
1667 OPEN csr_p_asg_data(t_store_assact(j).person_id, l_effective_date);
1668 FETCH csr_p_asg_data into l_asg_id , l_insured_ssn,l_asg_location_id;
1669 CLOSE csr_p_asg_data;
1670
1671 OPEN csr_get_org_phone_types (p_business_group_id);
1672 FETCH csr_get_org_phone_types into l_home_phone,l_work_phone,l_home_fax,l_work_fax;
1673 CLOSE csr_get_org_phone_types;
1674
1675 OPEN csr_p_phone_data(t_store_assact(j).person_id,'H1',l_effective_date);
1676 FETCH csr_p_phone_data into l_home_phone_number;
1677 CLOSE csr_p_phone_data;
1678
1679 OPEN csr_p_phone_data(t_store_assact(j).person_id,'HF',l_effective_date);
1680 FETCH csr_p_phone_data into l_home_fax_number;
1681 CLOSE csr_p_phone_data;
1682
1683 OPEN csr_p_address_data (t_store_assact(j).person_id,l_effective_date);
1684 FETCH csr_p_address_data into l_p_address;
1685 CLOSE csr_p_address_data;
1686 IF l_gender = 'M' then
1687 OPEN csr_p_contact_count_data(t_store_assact(j).person_id,'S','F',l_effective_date);
1688 FETCH csr_p_contact_count_data into l_number_of_wives;
1689 CLOSE csr_p_contact_count_data;
1690 Else
1691 l_number_of_wives := 0;
1692 END IF;
1693 OPEN csr_p_contact_count_data(t_store_assact(j).person_id,'C','M',l_effective_date);
1694 FETCH csr_p_contact_count_data into l_number_of_sons;
1695 CLOSE csr_p_contact_count_data;
1696 OPEN csr_p_contact_count_data(t_store_assact(j).person_id,'C','F',l_effective_date);
1697 FETCH csr_p_contact_count_data into l_number_of_daughters;
1698 CLOSE csr_p_contact_count_data;
1699 OPEN csr_get_ext_id_org_paymeth(l_asg_id,l_effective_date);
1700 FETCH csr_get_ext_id_org_paymeth into l_ext_act_id , l_org_pm_id;
1701 CLOSE csr_get_ext_id_org_paymeth;
1702 If l_ext_act_id is null and l_org_pm_id is null then
1703 l_no_flag := 'Y';
1704 Else
1705 l_no_flag := 'N';
1706 End If;
1707 If l_ext_act_id is null then
1708 OPEN csr_get_ext_id(l_org_pm_id,l_effective_date);
1709 FETCH csr_get_ext_id into l_org_ext_act_id;
1710 CLOSE csr_get_ext_id;
1711 OPEN csr_get_bank_det_ext (l_org_ext_act_id);
1712 FETCH csr_get_bank_det_ext into l_seg1,l_seg2,l_seg4;
1713 CLOSE csr_get_bank_det_ext;
1714 Else
1715 OPEN csr_get_bank_det_ext (l_ext_act_id);
1716 FETCH csr_get_bank_det_ext into l_seg1,l_seg2,l_seg4;
1717 CLOSE csr_get_bank_det_ext;
1718 End If;
1719 OPEN csr_get_bank_name (l_seg1);
1720 FETCH csr_get_bank_name into l_bank_name;
1721 CLOSE csr_get_bank_name;
1722 OPEN csr_get_branch_name (l_seg2);
1723 FETCH csr_get_branch_name into l_bank_branch_name;
1724 CLOSE csr_get_branch_name;
1725 OPEN csr_get_def_bal_id ('EMPLOYEE_SOCIAL_INSURANCE_ARREARS_ASG_ITD');
1726 FETCH csr_get_def_bal_id into l_arrears_def_bal_id;
1727 CLOSE csr_get_def_bal_id;
1728 OPEN csr_get_def_bal_id('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
1729 FETCH csr_get_def_bal_id into l_subject_si_id;
1730 CLOSE csr_get_def_bal_id;
1731
1732 l_basic_val := 0;
1733 l_accomodation_val := 0;
1734 l_allowance_1_val := 0;
1735 l_allowance_2_val := 0;
1736 l_allowance_3_val := 0;
1737 l_allowance_4_val := 0;
1738 l_allowance_5_val := 0;
1739
1740 l_ded_val := 0;
1741
1742 If l_ded_id is not null then
1743 l_ded_val := pay_balance_pkg.get_value(l_ded_id,t_store_assact(j).assignment_action_id);
1744 End if;
1745
1746 x := 1;
1747 IF t_store_def_bal(x).def_bal_id is not null THEN
1748 l_basic_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
1749 x:= x + 1;
1750 ELSE
1751 l_basic_val := 0;
1752 x:= x + 1;
1753 END IF;
1754 IF t_store_def_bal(x).def_bal_id is not null THEN
1755 l_accomodation_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
1756 x:= x + 1;
1757 ELSE
1758 l_accomodation_val := 0;
1759 x:= x + 1;
1760 END IF;
1761 IF t_store_def_bal(x).def_bal_id is not null THEN
1762 l_allowance_1_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
1763 x:= x + 1;
1764 ELSE
1765 l_allowance_1_val := 0;
1766 x:= x + 1;
1767 END IF;
1768 IF t_store_def_bal(x).def_bal_id is not null THEN
1769 l_allowance_2_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
1770 x:= x + 1;
1771 ELSE
1772 l_allowance_2_val := 0;
1773 x:= x + 1;
1774 END IF;
1775 IF t_store_def_bal(x).def_bal_id is not null THEN
1776 l_allowance_3_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
1777 x:= x + 1;
1778 ELSE
1779 l_allowance_3_val := 0;
1780 x:= x + 1;
1781 END IF;
1782 IF t_store_def_bal(x).def_bal_id is not null THEN
1783 l_allowance_4_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
1784 ELSE
1785 l_allowance_4_val := 0;
1786 END IF;
1787 l_new_count := l_new_count+1;
1788 l_fm_l_basic_val := to_char(abs(l_basic_val),lg_format_mask);
1789 l_fm_l_accomodation_val := to_char(abs(l_accomodation_val),lg_format_mask);
1790 l_fm_l_allowance_1_val := to_char(abs(l_allowance_1_val),lg_format_mask);
1791 l_fm_l_allowance_2_val := to_char(abs(l_allowance_2_val),lg_format_mask);
1792 l_fm_l_allowance_3_val := to_char(abs(l_allowance_3_val),lg_format_mask);
1793 l_fm_l_allowance_4_val := to_char(abs(l_allowance_4_val),lg_format_mask);
1794
1795 l_fm_l_ded_val := to_char(abs(l_ded_val),lg_format_mask);
1796
1797
1798 If l_arrears_def_bal_id is not null then
1799 l_ee_arrears := pay_balance_pkg.get_value(l_arrears_def_bal_id,t_store_assact(j).assignment_action_id);
1800 Else
1801 l_ee_arrears := 0;
1802 End If;
1803 l_fm_ee_arrears := to_char(abs(l_ee_arrears),lg_format_mask);
1804 /** Populate the XML file **/
1805 vXMLTable(vCtr).TagName := 'Employer_ssn';
1806 vXMLTable(vCtr).TagValue := l_employer_ssn;
1807 vctr := vctr + 1;
1808 vXMLTable(vCtr).TagName := 'Employer_name';
1809 vXMLTable(vCtr).TagValue := l_employer_name;
1810 vctr := vctr + 1;
1811 vXMLTable(vCtr).TagName := 'Employee_ssn';
1812 vXMLTable(vCtr).TagValue := l_insured_ssn;
1813 vctr := vctr + 1;
1814 vXMLTable(vCtr).TagName := 'Employee_name';
1815 vXMLTable(vCtr).TagValue := SUBSTR(l_full_name,1,60);
1816 vctr := vctr + 1;
1817 vXMLTable(vCtr).TagName := 'Employee_fax';
1818 vXMLTable(vCtr).TagValue := l_home_fax_number;
1819 vctr := vctr + 1;
1820 vXMLTable(vCtr).TagName := 'Employee_phone';
1821 vXMLTable(vCtr).TagValue := l_home_phone_number;
1822 vctr := vctr + 1;
1823 vXMLTable(vCtr).TagName := 'Address';
1824 vXMLTable(vCtr).TagValue := nvl(l_p_address,' ');
1825 vctr := vctr + 1;
1826 vXMLTable(vCtr).TagName := 'basic_salary';
1827
1828 BEGIN
1829 SELECT decode(l_basic_val/(abs(decode(l_basic_val,0,1,l_basic_val))*-1),1,'-'||l_fm_l_basic_val,l_fm_l_basic_val)
1830 INTO l_fm_l_basic_val
1831 FROM dual;
1832
1833 EXCEPTION
1834 WHEN no_data_found then
1835 NULL;
1836 END;
1837
1838 vXMLTable(vCtr).TagValue := l_fm_l_basic_val;
1839 vctr := vctr + 1;
1840
1841 vXMLTable(vCtr).TagName := 'housing_allowance';
1842
1843 BEGIN
1844 SELECT decode(l_accomodation_val/(abs(decode(l_accomodation_val,0,1,l_accomodation_val))*-1),1,'-'||l_fm_l_accomodation_val,l_fm_l_accomodation_val)
1845 INTO l_fm_l_accomodation_val
1846 FROM dual;
1847
1848 EXCEPTION
1849 WHEN no_data_found then
1850 NULL;
1851 END;
1852
1853 vXMLTable(vCtr).TagValue := l_fm_l_accomodation_val;
1854 vctr := vctr + 1;
1855
1856 vXMLTable(vCtr).TagName := 'allowance_1';
1857
1858 BEGIN
1859 SELECT decode(l_allowance_1_val/(abs(decode(l_allowance_1_val,0,1,l_allowance_1_val))*-1),1,'-'||l_fm_l_allowance_1_val,l_fm_l_allowance_1_val)
1860 INTO l_fm_l_allowance_1_val
1861 FROM dual;
1862
1863 EXCEPTION
1864 WHEN no_data_found then
1865 NULL;
1866 END;
1867
1868 vXMLTable(vCtr).TagValue := l_fm_l_allowance_1_val;
1869 vctr := vctr + 1;
1870
1871 vXMLTable(vCtr).TagName := 'allowance_2';
1872
1873 BEGIN
1874 SELECT decode(l_allowance_2_val/(abs(decode(l_allowance_2_val,0,1,l_allowance_2_val))*-1),1,'-'||l_fm_l_allowance_2_val,l_fm_l_allowance_2_val)
1875 INTO l_fm_l_allowance_2_val
1876 FROM dual;
1877
1878 EXCEPTION
1879 WHEN no_data_found then
1880 NULL;
1881 END;
1882
1883 vXMLTable(vCtr).TagValue := l_fm_l_allowance_2_val;
1884 vctr := vctr + 1;
1885
1886 vXMLTable(vCtr).TagName := 'allowance_3';
1887
1888 BEGIN
1889 SELECT decode(l_allowance_3_val/(abs(decode(l_allowance_3_val,0,1,l_allowance_3_val))*-1),1,'-'||l_fm_l_allowance_3_val,l_fm_l_allowance_3_val)
1890 INTO l_fm_l_allowance_3_val
1891 FROM dual;
1892
1893 EXCEPTION
1894 WHEN no_data_found then
1895 NULL;
1896 END;
1897
1898 vXMLTable(vCtr).TagValue := l_fm_l_allowance_3_val;
1899 vctr := vctr + 1;
1900
1901 vXMLTable(vCtr).TagName := 'allowance_4';
1902
1903 BEGIN
1904 SELECT decode(l_allowance_4_val/(abs(decode(l_allowance_4_val,0,1,l_allowance_4_val))*-1),1,'-'||l_fm_l_allowance_4_val,l_fm_l_allowance_4_val)
1905 INTO l_fm_l_allowance_4_val
1906 FROM dual;
1907
1908 EXCEPTION
1909 WHEN no_data_found then
1910 NULL;
1911 END;
1912
1913 vXMLTable(vCtr).TagValue := l_fm_l_allowance_4_val;
1914 vctr := vctr + 1;
1915
1916 --l_total := l_basic_val + l_accomodation_val + l_allowance_1_val + l_allowance_2_val + l_allowance_3_val + l_allowance_4_val+l_allowance_5_val;
1917
1918 l_total := pay_balance_pkg.get_value(l_subject_si_id,t_store_assact(j).assignment_action_id);
1919
1920 l_fm_total_val := to_char(abs(l_total),lg_format_mask);
1921
1922 vXMLTable(vCtr).TagName := 'contributory_salary_at_termination';
1923
1924 BEGIN
1925 SELECT decode(l_total/(abs(decode(l_total,0,1,l_total))*-1),1,'-'||l_fm_total_val,l_fm_total_val)
1926 INTO l_fm_total_val
1927 FROM dual;
1928
1929 EXCEPTION
1930 WHEN no_data_found then
1931 NULL;
1932 END;
1933
1934 vXMLTable(vCtr).TagValue := l_fm_total_val;
1935 vctr := vctr + 1;
1936
1937
1938 OPEN csr_get_leav_reas (t_store_assact(j).leaving_reason);
1939 FETCH csr_get_leav_reas into l_leaving_reason;
1940 CLOSE csr_get_leav_reas;
1941
1942 vXMLTable(vCtr).TagName := 'termination_reason';
1943 vXMLTable(vCtr).TagValue := nvl(l_leaving_reason,' ');
1944 vctr := vctr + 1;
1945 vXMLTable(vCtr).TagName := 'termination_day';
1946 vXMLTable(vCtr).TagValue := nvl(to_char(t_store_assact(j).actual_term_date,'DD'),' ');
1947 vctr := vctr + 1;
1948 vXMLTable(vCtr).TagName := 'termination_month';
1949 vXMLTable(vCtr).TagValue := nvl(to_char(t_store_assact(j).actual_term_date,'MM'),' ');
1950 vctr := vctr + 1;
1951 vXMLTable(vCtr).TagName := 'termination_year';
1952 vXMLTable(vCtr).TagValue := nvl(to_char(t_store_assact(j).actual_term_date,'YYYY'),' ');
1953 vctr := vctr + 1;
1954 vXMLTable(vCtr).TagName := 'number_of_sons';
1955 vXMLTable(vCtr).TagValue := l_number_of_sons;
1956 vctr := vctr + 1;
1957 vXMLTable(vCtr).TagName := 'number_of_daughters';
1958 vXMLTable(vCtr).TagValue := l_number_of_daughters;
1959 vctr := vctr + 1;
1960 vXMLTable(vCtr).TagName := 'number_of_wives';
1961 vXMLTable(vCtr).TagValue := l_number_of_wives;
1962 vctr := vctr + 1;
1963 vXMLTable(vCtr).TagName := 'marital_status';
1964 vXMLTable(vCtr).TagValue := l_mar_p_status;
1965 vctr := vctr + 1;
1966 If l_no_flag = 'Y' then
1967 vXMLTable(vCtr).TagName := 'collect_EOS_pension_n';
1968 vXMLTable(vCtr).TagValue := 'X';
1969 vctr := vctr + 1;
1970 Else
1971 vXMLTable(vCtr).TagName := 'collect_EOS_pension_y';
1972 vXMLTable(vCtr).TagValue := 'X';
1973 vctr := vctr + 1;
1974 vXMLTable(vCtr).TagName := 'account_number_pension';
1975 vXMLTable(vCtr).TagValue := l_seg4;
1976 vctr := vctr + 1;
1977 vXMLTable(vCtr).TagName := 'branch_pension';
1978 vXMLTable(vCtr).TagValue := l_bank_branch_name;
1979 vctr := vctr + 1;
1980 vXMLTable(vCtr).TagName := 'bank_pension';
1981 vXMLTable(vCtr).TagValue := l_bank_name;
1982 vctr := vctr + 1;
1983 End If;
1984
1985 If l_ee_arrears <>0 then
1986 vXMLTable(vCtr).TagName := 'deduction_type_1';
1987 vXMLTable(vCtr).TagValue := get_lookup_meaning('AE_FORM_LABELS','ARR_LABEL');
1988 vctr := vctr + 1;
1989
1990 vXMLTable(vCtr).TagName := 'dinars_1';
1991 vXMLTable(vCtr).TagValue := substr(l_fm_ee_arrears,1,length(l_fm_ee_arrears)-3);
1992 vctr := vctr + 1;
1993
1994 vXMLTable(vCtr).TagName := 'fills_1';
1995 vXMLTable(vCtr).TagValue := substr(l_fm_ee_arrears,length(l_fm_ee_arrears)-1);
1996 vctr := vctr + 1;
1997 End If;
1998
1999 If l_ee_arrears <> 0 and l_ded_val <> 0 then
2000 vXMLTable(vCtr).TagName := 'deduction_type_2';
2001 vXMLTable(vCtr).TagValue := get_lookup_meaning('AE_FORM_LABELS','OTH_DED');
2002 vctr := vctr + 1;
2003
2004 vXMLTable(vCtr).TagName := 'dinars_2';
2005 vXMLTable(vCtr).TagValue := substr(l_fm_l_ded_val,1,length(l_fm_l_ded_val)-3);
2006 vctr := vctr + 1;
2007
2008 vXMLTable(vCtr).TagName := 'fills_2';
2009 vXMLTable(vCtr).TagValue := substr(l_fm_l_ded_val,length(l_fm_l_ded_val)-1);
2010 vctr := vctr + 1;
2011 ElsIf l_ee_arrears = 0 and l_ded_val <> 0 then
2012 vXMLTable(vCtr).TagName := 'deduction_type_1';
2013 vXMLTable(vCtr).TagValue := get_lookup_meaning('AE_FORM_LABELS','OTH_DED');
2014 vctr := vctr + 1;
2015
2016 vXMLTable(vCtr).TagName := 'dinars_1';
2017 vXMLTable(vCtr).TagValue := substr(l_fm_l_ded_val,1,length(l_fm_l_ded_val)-3);
2018 vctr := vctr + 1;
2019
2020 vXMLTable(vCtr).TagName := 'fills_1';
2021 vXMLTable(vCtr).TagValue := substr(l_fm_l_ded_val,length(l_fm_l_ded_val)-1);
2022 vctr := vctr + 1;
2023 End If;
2024
2025 j := j + 1;
2026 vXMLTable(vCtr).TagName := 'PAGE-BK';
2027 vXMLTable(vCtr).TagValue := ' ';
2028 vctr := vctr + 1;
2029 IF j > i THEN
2030 l_new_processed := 1;
2031 EXIT;
2032 END IF;
2033 END LOOP;
2034 hr_utility.set_location('Finished creating xml data for Procedure FORM1 ',20);
2035 WritetoCLOB ( l_xfdf_blob );
2036 EXCEPTION
2037 WHEN utl_file.invalid_path then
2038 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
2039 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2040 hr_utility.raise_error;
2041 --
2042 WHEN utl_file.invalid_mode then
2043 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
2044 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2045 hr_utility.raise_error;
2046 --
2047 WHEN utl_file.invalid_filehandle then
2048 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
2049 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2050 hr_utility.raise_error;
2051 --
2052 WHEN utl_file.invalid_operation then
2053 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
2054 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2055 hr_utility.raise_error;
2056 --
2057 WHEN utl_file.read_error then
2058 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
2059 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2060 hr_utility.raise_error;
2061 --
2062 WHEN others THEN
2063 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
2064 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
2065 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2066 hr_utility.raise_error;
2067 END FORM2;
2068 -------------------------------------------------------------------------------------------
2069 PROCEDURE FORM6
2070 (p_request_id NUMBER
2071 ,p_report VARCHAR2
2072 ,p_business_group_id NUMBER
2073 ,p_employer_id NUMBER
2074 ,p_effective_month VARCHAR2
2075 ,p_effective_year VARCHAR2
2076 ,l_xfdf_blob OUT NOCOPY BLOB
2077 )
2078 AS
2079
2080 /*Cursor for fetching Local nationality for the BG */
2081 CURSOR csr_get_loc_nat IS
2082 SELECT org_information1
2083 FROM hr_organization_information
2084 WHERE organization_id = p_business_group_id
2085 AND org_information_context = 'AE_BG_DETAILS';
2086
2087 /*Cursor for fetching Employer SSN*/
2088 CURSOR csr_employer_ssn IS
2089 SELECT org_information1
2090 FROM hr_organization_information
2091 WHERE organization_id = p_employer_id
2092 AND org_information_context = 'AE_LEGAL_EMPLOYER_DETAILS';
2093
2094 /*Cursor for fetching Employer Name*/
2095 CURSOR csr_employer_name IS
2096 SELECT name
2097 FROM hr_organization_units
2098 WHERE organization_id = p_employer_id;
2099
2100 /*Cursor for fetching employees*/
2101 CURSOR csr_get_emp (l_employer number , l_date date , l_nat_cd varchar2) IS
2102 SELECT distinct asg.person_id
2103 ,paa.assignment_action_id
2104 ,ppa.date_earned
2105 FROM per_all_assignments_f asg
2106 ,pay_assignment_actions paa
2107 ,pay_payroll_actions ppa
2108 ,hr_soft_coding_keyflex hscl
2109 ,per_periods_of_service pos
2110 ,per_all_people_f ppf
2111 WHERE asg.assignment_id = paa.assignment_id
2112 AND paa.payroll_action_id = ppa.payroll_action_id
2113 AND pos.period_of_service_id = asg.period_of_service_id
2114 AND ppa.action_type in ('R','Q')
2115 AND ppa.action_status = 'C'
2116 AND paa.action_status IN ('C','S')
2117 AND trunc(ppa.date_earned,'MM') = TRUNC(l_date, 'MM')
2118 AND trunc(l_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
2119 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
2120 AND hscl.segment1 = to_char(l_employer)
2121 AND ppf.person_id = asg.person_id
2122 AND trunc(l_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
2123 AND ppf.per_information18 = l_nat_cd;
2124
2125 /* Cursor for fetching the person data */
2126 CURSOR csr_get_person_data (l_person_id number,l_effective_date date) IS
2127 SELECT ppf.full_name
2128 FROM per_all_people_f ppf
2129 WHERE ppf.person_id = l_person_id
2130 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
2131
2132 /* Cursor for fetching the person's assignment data */
2133 CURSOR csr_get_person_asg_data (l_person_id number,l_effective_date date) IS
2134 SELECT hsck.segment3
2135 FROM per_all_assignments_f paf,hr_soft_coding_keyflex hsck
2136 WHERE paf.person_id = l_person_id
2137 AND paf.soft_coding_keyflex_id = hsck.soft_coding_keyflex_id
2138 AND hsck.segment1 = p_employer_id
2139 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
2140
2141 /* Cursor for fetching Defined balance ids from Org EIT */
2142 CURSOR csr_get_def_bal_ids (l_bg_id number) IS
2143 SELECT ORG_INFORMATION1,ORG_INFORMATION2,ORG_INFORMATION3,ORG_INFORMATION4,ORG_INFORMATION5,ORG_INFORMATION6,ORG_INFORMATION7,ORG_INFORMATION8,ORG_INFORMATION9,ORG_INFORMATION10
2144 FROM HR_ORGANIZATION_INFORMATION
2145 WHERE Organization_id = l_bg_id
2146 AND org_information_context = 'AE_SI_DETAILS';
2147
2148 /* Cursor for fetching Subject to SI defined balance ID */
2149 CURSOR csr_get_si_id(p_user_name VARCHAR2) IS
2150 SELECT u.creator_id
2151 FROM ff_user_entities u,
2152 ff_database_items d
2153 WHERE d.user_name = p_user_name
2154 AND u.user_entity_id = d.user_entity_id
2155 AND u.legislation_code = 'AE'
2156 AND u.business_group_id is null
2157 AND u.creator_type = 'B';
2158
2159 TYPE def_bal_rec IS RECORD
2160 (def_bal_id NUMBER
2161 ,label_index VARCHAR2(40));
2162 TYPE t_def_bal_table IS TABLE OF def_bal_rec INDEX BY BINARY_INTEGER;
2163 t_store_def_bal t_def_bal_table;
2164 TYPE assact_rec IS RECORD
2165 (person_id NUMBER
2166 ,assignment_action_id NUMBER
2167 ,date_start DATE);
2168 TYPE t_assact_table IS TABLE OF assact_rec INDEX BY BINARY_INTEGER;
2169 t_store_assact t_assact_table;
2170 l_employer_name varchar2(240);
2171 l_input_date varchar2(30);
2172 l_effective_date date;
2173 l_employer_ssn number;
2174 l_basic_sal_id number;
2175 z number;
2176 l_accomodation_id number;
2177 l_social_id number;
2178 l_child_social_id number;
2179 l_tp_id number;
2180 l_ol1_id number;
2181 l_ol2_id number;
2182 l_ol3_id number;
2183 l_ol4_id number;
2184 l_cost_of_living_id number;
2185 l_index number;
2186 i number;
2187 k number;
2188 m number;
2189 j number;
2190 x number;
2191 l_new_processed number;
2192 l_all_processed number;
2193 l_new_count number;
2194 l_basic_val number(15,2);
2195 l_accomodation_val number(15,2);
2196 l_allowance_1_val number(15,2);
2197 l_allowance_2_val number(15,2);
2198 l_allowance_3_val number(15,2);
2199 l_allowance_4_val number(15,2);
2200 l number;
2201 l_tot_count number;
2202 L_FULL_NAME varchar2(240);
2203 l_insured_ssn varchar2(30);
2204 L_TOTAL number(15,2);
2205 L_FM_TOTAL_VAL varchar2(100);
2206 l_fm_l_basic_val varchar2(100);
2207 L_FM_L_ACCOMODATION_VAL varchar2(100);
2208 L_FM_L_ALLOWANCE_1_VAL varchar2(100);
2209 L_FM_L_ALLOWANCE_2_VAL varchar2(100);
2210 L_FM_L_ALLOWANCE_3_VAL varchar2(100);
2211 L_FM_L_ALLOWANCE_4_VAL varchar2(100);
2212 rec_get_emp csr_get_emp%ROWTYPE;
2213 l_xfdf_string CLOB;
2214 l_str_er_name varchar2(240);
2215 l_str_er_ssn varchar2(240);
2216 l_str_ee_name varchar2(240);
2217 l_str_ee_ssn varchar2(240);
2218 l_str_year varchar2(240);
2219 l_str_seq_no varchar2(240);
2220 l_str_bsd varchar2(240);
2221 l_str_bsf varchar2(240);
2222 l_str_aad varchar2(240);
2223 l_str_aaf varchar2(240);
2224 l_str_a1d varchar2(240);
2225 l_str_a1f varchar2(240);
2226 l_str_a2d varchar2(240);
2227 l_str_a2f varchar2(240);
2228 l_str_a3d varchar2(240);
2229 l_str_a3f varchar2(240);
2230 l_str_a4d varchar2(240);
2231 l_str_a4f varchar2(240);
2232 l_str_a5d varchar2(240);
2233 l_str_a5f varchar2(240);
2234 l_subject_si_id number;
2235 l_nat_cd varchar2(30);
2236 l_str_pb varchar2(240);
2237 l_str_mon varchar2(240);
2238 l_str_dd varchar2(240);
2239
2240 BEGIN
2241 set_currency_mask(p_business_group_id);
2242 l_input_date := '01-'||p_effective_month||'-'||p_effective_year;
2243 l_effective_date := last_day(to_date(l_input_date,'DD-MM-YYYY'));
2244 INSERT INTO fnd_sessions (session_id, effective_date)
2245 VALUES (userenv('sessionid'), l_effective_date);
2246 hr_utility.set_location('Entering FORM6 ',10);
2247
2248 /* Fetch Local Nationality */
2249 OPEN csr_get_loc_nat;
2250 FETCH csr_get_loc_nat INTO l_nat_cd;
2251 CLOSE csr_get_loc_nat;
2252
2253 /*Fetch Employer SSN*/
2254 OPEN csr_employer_ssn;
2255 FETCH csr_employer_ssn INTO l_employer_ssn;
2256 CLOSE csr_employer_ssn;
2257
2258 /*Fetch Employer Name*/
2259 OPEN csr_employer_name;
2260 FETCH csr_employer_name INTO l_employer_name;
2261 CLOSE csr_employer_name;
2262
2263 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
2264 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
2265 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
2266 clob_to_blob(l_xfdf_string,l_xfdf_blob);
2267
2268 dbms_lob.writeAppend( l_xfdf_string, length('<START>'),'<START>');
2269
2270 OPEN csr_get_def_bal_ids (p_employer_id);
2271 FETCH csr_get_def_bal_ids into l_basic_sal_id,l_accomodation_id,l_social_id,l_child_social_id,l_cost_of_living_id,l_ol1_id,l_tp_id,l_ol2_id,l_ol3_id,l_ol4_id;
2272 CLOSE csr_get_def_bal_ids;
2273
2274 z := 1;
2275 t_store_def_bal(z).def_bal_id := l_basic_sal_id;
2276 t_store_def_bal(z).label_index := get_index(1);
2277 z:= z+1;
2278 t_store_def_bal(z).def_bal_id := l_accomodation_id;
2279 t_store_def_bal(z).label_index := get_index(2);
2280 z := z + 1;
2281 l_index := 2;
2282 LOOP
2283 If l_social_id is not null THEN
2284 t_store_def_bal(z).def_bal_id := l_social_id;
2285 t_store_def_bal(z).label_index := get_index(3);
2286 z := z + 1;
2287 l_index := l_index + 1;
2288 EXIT WHEN z > 6;
2289 End if;
2290 If l_child_social_id is not null THEN
2291 t_store_def_bal(z).def_bal_id := l_child_social_id;
2292 t_store_def_bal(z).label_index := get_index(4);
2293 z := z + 1;
2294 l_index := l_index + 1;
2295 EXIT WHEN z > 6;
2296 End if;
2297 If l_cost_of_living_id is not null THEN
2298 t_store_def_bal(z).def_bal_id := l_cost_of_living_id;
2299 t_store_def_bal(z).label_index := get_index(5);
2300 z := z + 1;
2301 l_index := l_index + 1;
2302 EXIT WHEN z > 6;
2303 End if;
2304 If l_tp_id is not null THEN
2305 t_store_def_bal(z).def_bal_id := l_tp_id;
2306 t_store_def_bal(z).label_index := get_index(6);
2307 z := z + 1;
2308 l_index := l_index + 1;
2309 EXIT WHEN z > 6;
2310 End if;
2311 If l_ol1_id is not null THEN
2312 t_store_def_bal(z).def_bal_id := l_ol1_id;
2313 t_store_def_bal(z).label_index := get_index(7);
2314 z := z + 1;
2315 l_index := l_index + 1;
2316 EXIT WHEN z > 6;
2317 End if;
2318 If l_ol2_id is not null THEN
2319 t_store_def_bal(z).def_bal_id := l_ol2_id;
2320 t_store_def_bal(z).label_index := get_index(8);
2321 z := z + 1;
2322 l_index := l_index + 1;
2323 EXIT WHEN z > 6;
2324 End if;
2325 If l_ol3_id is not null THEN
2326 t_store_def_bal(z).def_bal_id := l_ol3_id;
2327 t_store_def_bal(z).label_index := get_index(9);
2328 z := z + 1;
2329 l_index := l_index + 1;
2330 EXIT WHEN z > 6;
2331 End if;
2332 If l_ol4_id is not null THEN
2333 t_store_def_bal(z).def_bal_id := l_ol4_id;
2334 t_store_def_bal(z).label_index := get_index(10);
2335 z := z + 1;
2336 l_index := l_index + 1;
2337 EXIT WHEN z > 6;
2338 End if;
2339 If z < 7 then
2340 WHILE Z <= 7 LOOP
2341 t_store_def_bal(z).def_bal_id := NULL;
2342 t_store_def_bal(z).label_index := get_index(11);
2343 z := z + 1;
2344 EXIT WHEN z > 7;
2345 END LOOP;
2346 End If;
2347 EXIT WHEN z >= 7;
2348 END LOOP;
2349 i := 0;
2350 k := 0;
2351 m := 0;
2352
2353 OPEN csr_get_emp(p_employer_id , l_effective_date, l_nat_cd);
2354 LOOP
2355 FETCH csr_get_emp INTO rec_get_emp;
2356 EXIT WHEN csr_get_emp%NOTFOUND;
2357 i := i + 1;
2358 t_store_assact(i).person_id := rec_get_emp.person_id;
2359 t_store_assact(i).assignment_action_id := rec_get_emp.assignment_action_id;
2360 t_store_assact(i).date_start := rec_get_emp.date_earned;
2361 END LOOP;
2362 CLOSE csr_get_emp;
2363
2364 /*Fetch Defined Balance Id*/
2365 OPEN csr_get_si_id('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
2366 FETCH csr_get_si_id INTO l_subject_si_id;
2367 CLOSE csr_get_si_id;
2368
2369 IF i > 0 THEN
2370 l_new_processed := 0;
2371 ELSE
2372 l_new_processed := 1;
2373 END IF;
2374 l_all_processed := 0;
2375 j := 1;
2376 l := 1;
2377
2378 l_tot_count := 0;
2379
2380 WHILE l_all_processed <> 1 LOOP
2381 --Writing data for new employees
2382 l_new_count := 0;
2383 dbms_lob.writeAppend( l_xfdf_string, length('<EMP-REC>'),'<EMP-REC>');
2384 WHILE j <= i LOOP
2385 /**** RESET ALL THE VARIABLES *****/
2386 l_basic_val := 0;
2387 l_accomodation_val := 0;
2388 l_allowance_1_val := 0;
2389 l_allowance_2_val := 0;
2390 l_allowance_3_val := 0;
2391 l_allowance_4_val := 0;
2392 l_total := 0;
2393 x := 1;
2394 IF t_store_def_bal(x).def_bal_id is not null THEN
2395 l_basic_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
2396 x:= x + 1;
2397 ELSE
2398 l_basic_val := 0;
2399 x:= x + 1;
2400 END IF;
2401 IF t_store_def_bal(x).def_bal_id is not null THEN
2402 l_accomodation_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
2403 x:= x + 1;
2404 ELSE
2405 l_accomodation_val := 0;
2406 x:= x + 1;
2407 END IF;
2408 IF t_store_def_bal(x).def_bal_id is not null THEN
2409 l_allowance_1_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
2410 x:= x + 1;
2411 ELSE
2412 l_allowance_1_val := 0;
2413 x:= x + 1;
2414 END IF;
2415 IF t_store_def_bal(x).def_bal_id is not null THEN
2416 l_allowance_2_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
2417 x:= x + 1;
2418 ELSE
2419 l_allowance_2_val := 0;
2420 x:= x + 1;
2421 END IF;
2422 IF t_store_def_bal(x).def_bal_id is not null THEN
2423 l_allowance_3_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
2424 x:= x + 1;
2425 ELSE
2426 l_allowance_3_val := 0;
2427 x:= x + 1;
2428 END IF;
2429 IF t_store_def_bal(x).def_bal_id is not null THEN
2430 l_allowance_4_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
2431 ELSE
2432 l_allowance_4_val := 0;
2433 END IF;
2434
2435 l_new_count := l_new_count+1;
2436 l_tot_count := l_tot_count + 1;
2437
2438 l_fm_l_basic_val := to_char(abs(l_basic_val),lg_format_mask);
2439 l_fm_l_accomodation_val := to_char(abs(l_accomodation_val),lg_format_mask);
2440 l_fm_l_allowance_1_val := to_char(abs(l_allowance_1_val),lg_format_mask);
2441 l_fm_l_allowance_2_val := to_char(abs(l_allowance_2_val),lg_format_mask);
2442 l_fm_l_allowance_3_val := to_char(abs(l_allowance_3_val),lg_format_mask);
2443 l_fm_l_allowance_4_val := to_char(abs(l_allowance_4_val),lg_format_mask);
2444 l_total := pay_balance_pkg.get_value(l_subject_si_id,t_store_assact(j).assignment_action_id);
2445 l_fm_total_val := to_char(abs(l_total),lg_format_mask);
2446
2447 BEGIN
2448
2449 SELECT decode(l_basic_val/(abs(decode(l_basic_val,0,1,l_basic_val))*-1),1,'-'||l_fm_l_basic_val,l_fm_l_basic_val)
2450 INTO l_fm_l_basic_val
2451 FROM dual;
2452
2453 SELECT decode(l_accomodation_val/(abs(decode(l_accomodation_val,0,1,l_accomodation_val))*-1),1,'-'||l_fm_l_accomodation_val,l_fm_l_accomodation_val)
2454 INTO l_fm_l_accomodation_val
2455 FROM dual;
2456
2457 SELECT decode(l_allowance_1_val/(abs(decode(l_allowance_1_val,0,1,l_allowance_1_val))*-1),1,'-'||l_fm_l_allowance_1_val,l_fm_l_allowance_1_val)
2458 INTO l_fm_l_allowance_1_val
2459 FROM dual;
2460
2461 SELECT decode(l_allowance_2_val/(abs(decode(l_allowance_2_val,0,1,l_allowance_2_val))*-1),1,'-'||l_fm_l_allowance_2_val,l_fm_l_allowance_2_val)
2462 INTO l_fm_l_allowance_2_val
2463 FROM dual;
2464
2465 SELECT decode(l_allowance_3_val/(abs(decode(l_allowance_3_val,0,1,l_allowance_3_val))*-1),1,'-'||l_fm_l_allowance_3_val,l_fm_l_allowance_3_val)
2466 INTO l_fm_l_allowance_3_val
2467 FROM dual;
2468
2469 SELECT decode(l_allowance_4_val/(abs(decode(l_allowance_4_val,0,1,l_allowance_4_val))*-1),1,'-'||l_fm_l_allowance_4_val,l_fm_l_allowance_4_val)
2470 INTO l_fm_l_allowance_4_val
2471 FROM dual;
2472
2473 SELECT decode(l_total/(abs(decode(l_total,0,1,l_total))*-1),1,'-'||l_fm_total_val,l_fm_total_val)
2474 INTO l_fm_total_val
2475 FROM dual;
2476
2477 EXCEPTION
2478 WHEN no_data_found then
2479 null;
2480 END;
2481
2482 OPEN csr_get_person_data(t_store_assact(j).person_id,l_effective_date);
2483 FETCH csr_get_person_data INTO l_full_name;
2484 CLOSE csr_get_person_data;
2485
2486 OPEN csr_get_person_asg_data(t_store_assact(j).person_id, l_effective_date);
2487 FETCH csr_get_person_asg_data into l_insured_ssn;
2488 CLOSE csr_get_person_asg_data;
2489
2490 l_str_er_name := '<ERNAME>'||l_employer_name||'</ERNAME>';
2491 l_str_er_ssn := '<ERSSN>'||l_employer_ssn||'</ERSSN>';
2492 l_str_year := '<YEAR>'||substr(p_effective_year,4,1)||'</YEAR>';
2493 l_str_mon := '<MM>' || p_effective_month || '</MM>';
2494 l_str_dd := '<DD>' || '01' || '</DD>';
2495 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name), l_str_er_name);
2496 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_ssn), l_str_er_ssn);
2497 dbms_lob.writeAppend( l_xfdf_string, length(l_str_year), l_str_year);
2498 dbms_lob.writeAppend( l_xfdf_string, length(l_str_mon), l_str_mon);
2499 dbms_lob.writeAppend( l_xfdf_string, length(l_str_dd), l_str_dd);
2500 l_str_seq_no := '<SER-' || l ||'>'||l_tot_count||'</SER-'|| l || '>';
2501 l_str_ee_ssn := '<EMPLOYEE-SSN-' || l || '>'||l_insured_ssn ||'</EMPLOYEE-SSN-' || l || '>';
2502 l_str_ee_name := '<EMPLOYEE-NAME-'|| l || '>'|| substr(l_full_name,1,60) ||'</EMPLOYEE-NAME-'|| l || '>';
2503 l_str_bsd := '<BASIC-SALARY-DINARS-' || l ||'>'||substr(l_fm_l_basic_val,1,length(l_fm_l_basic_val)-3)||'</BASIC-SALARY-DINARS-'|| l || '>';
2504 l_str_bsf := '<BASIC-SALARY-FILLS-' || l ||'>'||substr(l_fm_l_basic_val,length(l_fm_l_basic_val)-1)||'</BASIC-SALARY-FILLS-'|| l || '>';
2505 l_str_aad := '<AA-DINARS-' || l ||'>'||substr(l_fm_l_accomodation_val,1,length(l_fm_l_accomodation_val)-3)||'</AA-DINARS-'|| l || '>';
2506 l_str_aaf := '<AA-FILLS-' || l ||'>'||substr(l_fm_l_accomodation_val,length(l_fm_l_accomodation_val)-1)||'</AA-FILLS-'|| l || '>';
2507 l_str_a1d := '<A1-DINARS-' || l ||'>'||substr(l_fm_l_allowance_1_val,1,length(l_fm_l_allowance_1_val)-3)||'</A1-DINARS-'|| l || '>';
2508 l_str_a1f := '<A1-FILLS-' || l ||'>'||substr(l_fm_l_allowance_1_val,length(l_fm_l_allowance_1_val)-1)||'</A1-FILLS-'|| l || '>';
2509 l_str_a2d := '<A2-DINARS-' || l ||'>'||substr(l_fm_l_allowance_2_val,1,length(l_fm_l_allowance_2_val)-3)||'</A2-DINARS-'|| l || '>';
2510 l_str_a2f := '<A2-FILLS-' || l ||'>'||substr(l_fm_l_allowance_2_val,length(l_fm_l_allowance_2_val)-1)||'</A2-FILLS-'|| l || '>';
2511 l_str_a3d := '<A3-DINARS-' || l ||'>'||substr(l_fm_l_allowance_3_val,1,length(l_fm_l_allowance_3_val)-3)||'</A3-DINARS-'|| l || '>';
2512 l_str_a3f := '<A3-FILLS-' || l ||'>'||substr(l_fm_l_allowance_3_val,length(l_fm_l_allowance_3_val)-1)||'</A3-FILLS-'|| l || '>';
2513 l_str_a4d := '<A4-DINARS-' || l ||'>'||substr(l_fm_l_allowance_4_val,1,length(l_fm_l_allowance_4_val)-3)||'</A4-DINARS-'|| l || '>';
2514 l_str_a4f := '<A4-FILLS-' || l ||'>'||substr(l_fm_l_allowance_4_val,length(l_fm_l_allowance_4_val)-1)||'</A4-FILLS-'|| l || '>';
2515 l_str_a5d := '<A5-DINARS-'|| l ||'>'||substr(l_fm_total_val,1,length(l_fm_total_val)-3)||'</A5-DINARS-'|| l || '>';
2516 l_str_a5f := '<A5-FILLS-' || l ||'>'||substr(l_fm_total_val,length(l_fm_total_val)-1)||'</A5-FILLS-'|| l || '>';
2517 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
2518 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_ssn), l_str_ee_ssn);
2519 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_name), l_str_ee_name);
2520 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
2521 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
2522 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
2523 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
2524 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
2525 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
2526 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
2527 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
2528 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
2529 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
2530 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4d), l_str_a4d);
2531 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4f), l_str_a4f);
2532 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5d), l_str_a5d);
2533 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5f), l_str_a5f);
2534 j := j + 1;
2535 l := l + 1;
2536 IF j > i THEN
2537 l_new_processed := 1;
2538 END IF;
2539 IF l_new_count = 12/*8*/ THEN
2540 l_str_pb := '<PB>'||' '||'</PB>';
2541 dbms_lob.writeAppend( l_xfdf_string, length(l_str_pb),l_str_pb);
2542 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
2543 l := 1;
2544 EXIT;
2545 END IF;
2546 END LOOP;
2547 IF l_new_processed = 1 THEN
2548 l_all_processed := 1;
2549 If l_new_count <> 12 then
2550 l_str_pb := '<PB>'||' '||'</PB>';
2551 dbms_lob.writeAppend( l_xfdf_string, length(l_str_pb),l_str_pb);
2552 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
2553 End If;
2554 END IF;
2555 END LOOP;
2556 dbms_lob.writeAppend( l_xfdf_string, length('</START>'),'</START>');
2557 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
2558 clob_to_blob(l_xfdf_string,l_xfdf_blob);
2559 hr_utility.set_location('Finished creating xml data for Procedure FORM6 ',20);
2560 EXCEPTION
2561 WHEN utl_file.invalid_path then
2562 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
2563 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2564 hr_utility.raise_error;
2565 --
2566 WHEN utl_file.invalid_mode then
2567 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
2568 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2569 hr_utility.raise_error;
2570 --
2571 WHEN utl_file.invalid_filehandle then
2572 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
2573 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2574 hr_utility.raise_error;
2575 --
2576 WHEN utl_file.invalid_operation then
2577 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
2578 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2579 hr_utility.raise_error;
2580 --
2581 WHEN utl_file.read_error then
2582 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
2583 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2584 hr_utility.raise_error;
2585 --
2586 WHEN others THEN
2587 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
2588 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
2589 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
2590 hr_utility.raise_error;
2591 END FORM6;
2592 -------------------------------------------------------------------------------------------
2593 -------------------------------------------------------------------------------------------
2594 PROCEDURE FORM7
2595 (p_request_id NUMBER
2596 ,p_report VARCHAR2
2597 ,p_business_group_id NUMBER
2598 ,p_employer_id NUMBER
2599 ,p_effective_month VARCHAR2
2600 ,p_effective_year VARCHAR2
2601 ,l_xfdf_blob OUT NOCOPY BLOB
2602 )
2603 AS
2604
2605 /*Cursor for fetching Local nationality for the BG */
2606 CURSOR csr_get_loc_nat IS
2607 SELECT org_information1
2608 FROM hr_organization_information
2609 WHERE organization_id = p_business_group_id
2610 AND org_information_context = 'AE_BG_DETAILS';
2611
2612 /*Cursor for fetching Employer SSN*/
2613 CURSOR csr_employer_ssn IS
2614 SELECT org_information1
2615 FROM hr_organization_information
2616 WHERE organization_id = p_employer_id
2617 AND org_information_context = 'AE_LEGAL_EMPLOYER_DETAILS';
2618
2619 /*Cursor for fetching Employer Name*/
2620 CURSOR csr_employer_name IS
2621 SELECT name
2622 FROM hr_organization_units
2623 WHERE organization_id = p_employer_id;
2624
2625 /*Cursor for fetching list of new employees*/
2626 CURSOR csr_get_new_emp (l_effective_date date, l_nat_cd varchar2) IS
2627 SELECT distinct asg.person_id
2628 ,paa.assignment_action_id
2629 ,pos.date_start
2630 FROM per_all_assignments_f asg
2631 ,pay_assignment_actions paa
2632 ,pay_payroll_actions ppa
2633 ,hr_soft_coding_keyflex hscl
2634 ,per_periods_of_service pos
2635 ,per_all_people_f ppf
2636 WHERE asg.assignment_id = paa.assignment_id
2637 AND paa.payroll_action_id = ppa.payroll_action_id
2638 AND pos.period_of_service_id = asg.period_of_service_id
2639 AND ppa.action_type in ('R','Q')
2640 AND ppa.action_status = 'C'
2641 AND paa.action_status IN ('C','S')
2642 AND trunc(ppa.date_earned,'MM') = TRUNC(l_effective_date, 'MM')
2643 AND trunc(NVL(pos.actual_termination_date, to_date('31-12-4712','DD-MM-YYYY')),'MM') <> TRUNC(l_effective_date, 'MM')
2644 AND trunc(pos.date_start, 'MM') = trunc(l_effective_date, 'MM')
2645 AND trunc(l_effective_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
2646 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
2647 AND hscl.segment1 = to_char(p_employer_id)
2648 AND ppf.person_id = asg.person_id
2649 AND trunc(l_effective_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
2650 AND ppf.per_information18 = l_nat_cd;
2651
2652 rec_get_new_emp csr_get_new_emp%ROWTYPE;
2653 /*Cursor for fetching list of terminated employees*/
2654 CURSOR csr_get_ter_emp(l_effective_date date , l_nat_cd varchar2) IS
2655 SELECT distinct asg.person_id
2656 ,paa.assignment_action_id
2657 ,pos.actual_termination_date
2658 ,ppa.date_earned
2659 FROM per_all_assignments_f asg
2660 ,pay_assignment_actions paa
2661 ,pay_payroll_actions ppa
2662 ,hr_soft_coding_keyflex hscl
2663 ,per_periods_of_service pos
2664 ,per_all_people_f ppf
2665 WHERE asg.assignment_id = paa.assignment_id
2666 AND paa.payroll_action_id = ppa.payroll_action_id
2667 AND pos.period_of_service_id = asg.period_of_service_id
2668 AND ppa.action_type in ('R','Q')
2669 AND ppa.action_status = 'C'
2670 AND paa.action_status IN ('C','S')
2671 AND trunc(ppa.date_earned,'MM') = TRUNC(l_effective_date, 'MM')
2672 AND trunc(NVL(pos.actual_termination_date, to_date('31-12-4712','DD-MM-YYYY')),'MM') = TRUNC(l_effective_date, 'MM')
2673 AND trunc(l_effective_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
2674 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
2675 AND hscl.segment1 = to_char(p_employer_id)
2676 AND ppf.person_id = asg.person_id
2677 AND trunc(l_effective_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
2678 AND ppf.per_information18 = l_nat_cd;
2679
2680 rec_get_ter_emp csr_get_ter_emp%ROWTYPE;
2681 /*Cursor for fetching effective date of salary change*/
2682 CURSOR csr_get_salary_date (p_person_id NUMBER, l_effective_date date) IS
2683 SELECT date_earned, paa.assignment_action_id
2684 FROM per_all_assignments_f asg
2685 ,pay_assignment_actions paa
2686 ,pay_payroll_actions ppa
2687 ,per_periods_of_service pos
2688 WHERE asg.assignment_id = paa.assignment_id
2689 AND paa.payroll_action_id = ppa.payroll_action_id
2690 AND pos.period_of_service_id = asg.period_of_service_id
2691 AND ppa.action_type in ('R','Q')
2692 AND ppa.action_status = 'C'
2693 AND paa.action_status IN ('C','S')
2694 AND trunc(l_effective_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
2695 AND trunc(ppa.date_earned, 'MM') < TRUNC(l_effective_date, 'MM')
2696 AND asg.person_id = p_person_id
2697 order by date_earned desc;
2698 rec_get_salary_date csr_get_salary_date%ROWTYPE;
2699
2700 /*Cursor for fetching list of employees who are neither new nor terminated*/
2701 CURSOR csr_get_cha_emp(l_effective_date date, l_nat_cd varchar2) IS
2702 SELECT distinct asg.person_id
2703 ,paa.assignment_action_id
2704 ,date_earned
2705 FROM per_all_assignments_f asg
2706 ,pay_assignment_actions paa
2707 ,pay_payroll_actions ppa
2708 ,hr_soft_coding_keyflex hscl
2709 ,per_periods_of_service pos
2710 ,per_all_people_f ppf
2711 WHERE asg.assignment_id = paa.assignment_id
2712 AND paa.payroll_action_id = ppa.payroll_action_id
2713 AND pos.period_of_service_id = asg.period_of_service_id
2714 AND ppa.action_type in ('R','Q')
2715 AND ppa.action_status = 'C'
2716 AND paa.action_status IN ('C','S')
2717 AND trunc(ppa.date_earned,'MM') = TRUNC(l_effective_date, 'MM')
2718 AND trunc(pos.date_start, 'MM') <> trunc(l_effective_date, 'MM')
2719 AND trunc(NVL(pos.actual_termination_date, to_date('31-12-4712','DD-MM-YYYY')),'MM') <> TRUNC(l_effective_date, 'MM')
2720 AND trunc(l_effective_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
2721 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
2722 AND hscl.segment1 = to_char(p_employer_id)
2723 AND ppf.person_id = asg.person_id
2724 AND trunc(l_effective_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
2725 AND ppf.per_information18 = l_nat_cd;
2726
2727 rec_get_cha_emp csr_get_cha_emp%ROWTYPE;
2728
2729 /* Cursor for fetching the person data */
2730 CURSOR csr_get_person_data (l_person_id number,l_effective_date date) IS
2731 SELECT ppf.full_name
2732 FROM per_all_people_f ppf
2733 WHERE ppf.person_id = l_person_id
2734 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
2735
2736 /* Cursor for fetching the person's assignment data */
2737 CURSOR csr_get_person_asg_data (l_person_id number,l_effective_date date) IS
2738 SELECT hsck.segment3
2739 FROM per_all_assignments_f paf,hr_soft_coding_keyflex hsck
2740 WHERE paf.person_id = l_person_id
2741 AND paf.soft_coding_keyflex_id = hsck.soft_coding_keyflex_id
2742 AND hsck.segment1 = p_employer_id
2743 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
2744
2745 /* Cursor for fetching Defined balance ids from Org EIT */
2746 CURSOR csr_get_def_bal_ids (l_bg_id number) IS
2747 SELECT ORG_INFORMATION1,ORG_INFORMATION2,ORG_INFORMATION3,ORG_INFORMATION4,ORG_INFORMATION5,ORG_INFORMATION6,ORG_INFORMATION7,ORG_INFORMATION8,ORG_INFORMATION9,ORG_INFORMATION10
2748 FROM HR_ORGANIZATION_INFORMATION
2749 WHERE Organization_id = l_bg_id
2750 AND org_information_context = 'AE_SI_DETAILS';
2751
2752 /*Cursor for fetching defined balance id*/
2753 CURSOR csr_get_si_id(p_user_name VARCHAR2) IS
2754 SELECT u.creator_id
2755 FROM ff_user_entities u,
2756 ff_database_items d
2757 WHERE d.user_name = p_user_name
2758 AND u.user_entity_id = d.user_entity_id
2759 AND u.legislation_code = 'AE'
2760 AND u.business_group_id is null
2761 AND u.creator_type = 'B';
2762
2763 TYPE def_bal_rec IS RECORD
2764 (def_bal_id NUMBER
2765 ,label_index VARCHAR2(40));
2766 TYPE t_def_bal_table IS TABLE OF def_bal_rec INDEX BY BINARY_INTEGER;
2767 t_store_def_bal t_def_bal_table;
2768 TYPE new_assact_rec IS RECORD
2769 (person_id NUMBER
2770 ,assignment_action_id NUMBER
2771 ,date_start DATE);
2772 TYPE t_new_assact_table IS TABLE OF new_assact_rec INDEX BY BINARY_INTEGER;
2773 t_new_store_assact t_new_assact_table;
2774 TYPE ter_assact_rec IS RECORD
2775 (person_id NUMBER
2776 ,assignment_action_id NUMBER
2777 ,actual_termination_date DATE
2778 ,date_earned DATE);
2779 TYPE t_ter_assact_table IS TABLE OF ter_assact_rec INDEX BY BINARY_INTEGER;
2780 t_ter_store_assact t_ter_assact_table;
2781 TYPE cha_assact_rec IS RECORD
2782 (person_id NUMBER
2783 ,assignment_action_id NUMBER
2784 ,date_earned DATE
2785 ,changed_salary NUMBER);
2786 TYPE t_cha_assact_table IS TABLE OF cha_assact_rec INDEX BY BINARY_INTEGER;
2787 t_cha_store_assact t_cha_assact_table;
2788 l_employer_name varchar2(240);
2789 l_input_date varchar2(30);
2790 l_effective_date date;
2791 l_employer_ssn number;
2792 l_basic_sal_id number;
2793 z number;
2794 l_accomodation_id number;
2795 l_social_id number;
2796 l_child_social_id number;
2797 l_tp_id number;
2798 l_ol1_id number;
2799 l_ol2_id number;
2800 l_ol3_id number;
2801 l_ol4_id number;
2802 l_cost_of_living_id number;
2803 l_index number;
2804 i number;
2805 k number;
2806 m number;
2807 n number;
2808 j number;
2809 x number;
2810 l_tot_new_count number;
2811 l_tot_change_count number;
2812 l_tot_term_count number;
2813 l_new_processed number;
2814 l_ter_processed NUMBER;
2815 l_all_processed number;
2816 l_new_count number;
2817 l_cha_processed NUMBER;
2818 l_basic_val number(15,2);
2819 l_accomodation_val number(15,2);
2820 l_allowance_1_val number(15,2);
2821 l_allowance_2_val number(15,2);
2822 l_allowance_3_val number(15,2);
2823 l_allowance_4_val number(15,2);
2824 l number;
2825 L_FULL_NAME varchar2(240);
2826 l_insured_ssn varchar2(30);
2827 L_TOTAL number(15,2);
2828 l_total_term number(15,2);
2829 l_total_change number(15,2) ;
2830 l_fm_l_total_term varchar2(100);
2831 l_fm_l_total_change varchar2(100);
2832 L_FM_TOTAL_VAL varchar2(100);
2833 l_fm_l_basic_val varchar2(100);
2834 L_FM_L_ACCOMODATION_VAL varchar2(100);
2835 L_FM_L_ALLOWANCE_1_VAL varchar2(100);
2836 L_FM_L_ALLOWANCE_2_VAL varchar2(100);
2837 L_FM_L_ALLOWANCE_3_VAL varchar2(100);
2838 L_FM_L_TOTAL_HA varchar2(100);
2839 L_FM_L_TOTAL_A1 varchar2(100);
2840 L_FM_L_TOTAL_A2 varchar2(100);
2841 L_FM_L_TOTAL_A3 varchar2(100);
2842 L_FM_L_TOTAL_TOTAL varchar2(100);
2843 L_FM_L_TOTAL_A4 varchar2(100);
2844 L_FM_L_TOTAL_BASIC varchar2(100);
2845 L_TOTAL_HA number(15,2);
2846 L_TOTAL_A1 number(15,2);
2847 L_TOTAL_A2 number(15,2);
2848 L_TOTAL_A3 number(15,2);
2849 L_TOTAL_TOTAL number(15,2);
2850 L_TOTAL_A4 number(15,2);
2851 L_TOTAL_BASIC number(15,2);
2852 L_FM_SUBJECT_SI_VAL varchar2(100);
2853 L_FM_L_ALLOWANCE_4_VAL varchar2(100);
2854 L_FM_CHANGED_SALARY varchar2(100);
2855 l_xfdf_string CLOB;
2856 l_diff_exist NUMBER := 0;
2857 l_subject_si_val NUMBER(15,2);
2858 l_subject_si_id NUMBER;
2859 l_salary_effective_date DATE;
2860 l_prev_salary NUMBER(15,2);
2861 l_str_er_name varchar2(240);
2862 l_str_er_ssn varchar2(240);
2863 l_str_ee_name varchar2(240);
2864 l_str_ee_ssn varchar2(240);
2865 l_str_year varchar2(240);
2866 l_str_seq_no varchar2(240);
2867 l_str_bsd varchar2(240);
2868 l_str_bsf varchar2(240);
2869 l_str_aad varchar2(240);
2870 l_str_aaf varchar2(240);
2871 l_str_a1d varchar2(240);
2872 l_str_a1f varchar2(240);
2873 l_str_a2d varchar2(240);
2874 l_str_a2f varchar2(240);
2875 l_str_a3d varchar2(240);
2876 l_str_a3f varchar2(240);
2877 l_str_a4d varchar2(240);
2878 l_str_a4f varchar2(240);
2879 l_str_a5d varchar2(240);
2880 l_str_a5f varchar2(240);
2881 L_SI_ER_MONTH_ID number;
2882 L_SI_ADJ_ER_MONTH_ID number;
2883 L_CUR_SI_ER number (15,2);
2884 L_CUR_SI_ER_ADJ number (15,2);
2885 L_CUR_TOTAL number(15,2);
2886 L_PREV_SI_ER number (15,2);
2887 L_PREV_SI_ER_ADJ number (15,2);
2888 L_PREV_TOTAL number(15,2);
2889 L_DIFF_TOTAL number(15,2);
2890 L_FM_L_CUR_TOTAL varchar2(100);
2891 L_FM_L_PREV_TOTAL varchar2(100);
2892 L_FM_L_DIFF_TOTAL varchar2(100);
2893 L_STR_ER_CUR_TOTAL_D varchar2(240);
2894 L_STR_ER_CUR_TOTAL_F varchar2(240);
2895 L_STR_ER_PREV_TOTAL_D varchar2(240);
2896 L_STR_ER_PREV_TOTAL_F varchar2(240);
2897 L_STR_ER_DIFF_TOTAL_D varchar2(240);
2898 L_STR_ER_DIFF_TOTAL_F varchar2(240);
2899 tp number;
2900 l_subject_to_id number;
2901 l_nat_cd varchar2(30);
2902 l_si_ee_month_id number;
2903 l_si_adj_ee_month_id number;
2904 l_cur_si_ee number(15,2);
2905 l_cur_si_ee_adj number(15,2);
2906 l_prev_si_ee number(15,2);
2907 l_prev_si_ee_adj number(15,2);
2908 l_str_mon varchar2(240);
2909
2910 BEGIN
2911 set_currency_mask(p_business_group_id);
2912 l_input_date := '01-'||p_effective_month||'-'||p_effective_year;
2913 l_effective_date := last_day(to_date(l_input_date,'DD-MM-YYYY'));
2914 INSERT INTO fnd_sessions (session_id, effective_date)
2915 VALUES (userenv('sessionid'), l_effective_date);
2916 hr_utility.set_location('Entering FORM6 ',10);
2917
2918 /* Fetch Local Nationality */
2919 OPEN csr_get_loc_nat;
2920 FETCH csr_get_loc_nat INTO l_nat_cd;
2921 CLOSE csr_get_loc_nat;
2922
2923 /*Fetch Employer SSN*/
2924 OPEN csr_employer_ssn;
2925 FETCH csr_employer_ssn INTO l_employer_ssn;
2926 CLOSE csr_employer_ssn;
2927
2928 /*Fetch Employer Name*/
2929 OPEN csr_employer_name;
2930 FETCH csr_employer_name INTO l_employer_name;
2931 CLOSE csr_employer_name;
2932
2933 /* Fetch defined balance for defined balance EMPLOYER_SOCIAL_INSURANCE_EMPLOYER_MONTH and EMPLOYER_SOCIAL_INSURANCE_ADJUSTMENT_EMPLOYER_MONTH*/
2934 OPEN csr_get_si_id ('EMPLOYER_SOCIAL_INSURANCE_EMPLOYER_MONTH');
2935 FETCH csr_get_si_id into l_si_er_month_id;
2936 CLOSE csr_get_si_id;
2937
2938 OPEN csr_get_si_id ('EMPLOYER_SOCIAL_INSURANCE_ADJUSTMENT_EMPLOYER_MONTH');
2939 FETCH csr_get_si_id into l_si_adj_er_month_id;
2940 CLOSE csr_get_si_id;
2941
2942 OPEN csr_get_si_id ('EMPLOYEE_SOCIAL_INSURANCE_EMPLOYER_MONTH');
2943 FETCH csr_get_si_id into l_si_ee_month_id;
2944 CLOSE csr_get_si_id;
2945
2946 OPEN csr_get_si_id ('EMPLOYEE_SOCIAL_INSURANCE_ADJUSTMENT_EMPLOYER_MONTH');
2947 FETCH csr_get_si_id into l_si_adj_ee_month_id;
2948 CLOSE csr_get_si_id;
2949
2950 OPEN csr_get_si_id ('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
2951 FETCH csr_get_si_id into l_subject_to_id;
2952 CLOSE csr_get_si_id;
2953
2954 /* Fetch values for Social insurance contribution values for Employer */
2955 /* Set the contexts for date earned as effective date*/
2956 pay_balance_pkg.set_context('DATE_EARNED', fnd_date.date_to_canonical(l_effective_date));
2957 pay_balance_pkg.set_context('TAX_UNIT_ID', p_employer_id);
2958 l_cur_si_er := pay_balance_pkg.get_value(l_si_er_month_id,NULL);
2959 l_cur_si_er_adj := pay_balance_pkg.get_value(l_si_adj_er_month_id,NULL);
2960 l_cur_si_ee := pay_balance_pkg.get_value(l_si_ee_month_id,NULL);
2961 l_cur_si_ee_adj := pay_balance_pkg.get_value(l_si_adj_ee_month_id,NULL);
2962 l_cur_total := l_cur_si_er + l_cur_si_er_adj + l_cur_si_ee + l_cur_si_ee_adj;
2963
2964 /* Set the contexts for date earned as previous month*/
2965 pay_balance_pkg.set_context('DATE_EARNED', fnd_date.date_to_canonical(add_months(l_effective_date,-1)));
2966 pay_balance_pkg.set_context('TAX_UNIT_ID', p_employer_id);
2967 l_prev_si_er := pay_balance_pkg.get_value(l_si_er_month_id,NULL);
2968 l_prev_si_er_adj := pay_balance_pkg.get_value(l_si_adj_er_month_id,NULL);
2969 l_prev_si_ee := pay_balance_pkg.get_value(l_si_ee_month_id,NULL);
2970 l_prev_si_ee_adj := pay_balance_pkg.get_value(l_si_adj_ee_month_id,NULL);
2971 l_prev_total := l_prev_si_er + l_prev_si_er_adj + l_prev_si_ee + l_prev_si_ee_adj;
2972
2973 l_diff_total := l_cur_total - l_prev_total;
2974
2975 l_fm_l_cur_total := to_char(abs(l_cur_total),lg_format_mask);
2976 l_fm_l_prev_total := to_char(abs(l_prev_total),lg_format_mask);
2977 l_fm_l_diff_total := to_char(abs(l_diff_total),lg_format_mask);
2978
2979 BEGIN
2980
2981 SELECT decode(l_cur_total/(abs(decode(l_cur_total,0,1,l_cur_total))*-1),1,'-'||l_fm_l_cur_total,l_fm_l_cur_total)
2982 INTO l_fm_l_cur_total
2983 FROM dual;
2984
2985 SELECT decode(l_prev_total/(abs(decode(l_prev_total,0,1,l_prev_total))*-1),1,'-'||l_fm_l_prev_total,l_fm_l_prev_total)
2986 INTO l_fm_l_prev_total
2987 FROM dual;
2988
2989 SELECT decode(l_diff_total/(abs(decode(l_diff_total,0,1,l_diff_total))*-1),1,'-'||l_fm_l_diff_total,l_fm_l_diff_total)
2990 INTO l_fm_l_diff_total
2991 FROM dual;
2992
2993
2994 EXCEPTION
2995 WHEN no_data_found then
2996 null;
2997 END;
2998
2999
3000 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
3001 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
3002 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
3003 clob_to_blob(l_xfdf_string,l_xfdf_blob);
3004 dbms_lob.writeAppend( l_xfdf_string, length('<START>'),'<START>');
3005
3006 OPEN csr_get_def_bal_ids (p_employer_id);
3007 FETCH csr_get_def_bal_ids into l_basic_sal_id,l_accomodation_id,l_social_id,l_child_social_id,l_cost_of_living_id,l_ol1_id,l_tp_id,l_ol2_id,l_ol3_id,l_ol4_id;
3008 CLOSE csr_get_def_bal_ids;
3009
3010 /*Fetch Defined Balance Id*/
3011 OPEN csr_get_si_id('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
3012 FETCH csr_get_si_id INTO l_subject_si_id;
3013 CLOSE csr_get_si_id;
3014 z := 1;
3015 t_store_def_bal(z).def_bal_id := l_basic_sal_id;
3016 t_store_def_bal(z).label_index := get_index(1);
3017 z:= z+1;
3018 t_store_def_bal(z).def_bal_id := l_accomodation_id;
3019 t_store_def_bal(z).label_index := get_index(2);
3020 z := z + 1;
3021 l_index := 2;
3022 LOOP
3023 If l_social_id is not null THEN
3024 t_store_def_bal(z).def_bal_id := l_social_id;
3025 t_store_def_bal(z).label_index := get_index(3);
3026 z := z + 1;
3027 l_index := l_index + 1;
3028 EXIT WHEN z > 6;
3029 End if;
3030 If l_child_social_id is not null THEN
3031 t_store_def_bal(z).def_bal_id := l_child_social_id;
3032 t_store_def_bal(z).label_index := get_index(4);
3033 z := z + 1;
3034 l_index := l_index + 1;
3035 EXIT WHEN z > 6;
3036 End if;
3037 If l_cost_of_living_id is not null THEN
3038 t_store_def_bal(z).def_bal_id := l_cost_of_living_id;
3039 t_store_def_bal(z).label_index := get_index(5);
3040 z := z + 1;
3041 l_index := l_index + 1;
3042 EXIT WHEN z > 6;
3043 End if;
3044 If l_tp_id is not null THEN
3045 t_store_def_bal(z).def_bal_id := l_tp_id;
3046 t_store_def_bal(z).label_index := get_index(6);
3047 z := z + 1;
3048 l_index := l_index + 1;
3049 EXIT WHEN z > 6;
3050 End if;
3051 If l_ol1_id is not null THEN
3052 t_store_def_bal(z).def_bal_id := l_ol1_id;
3053 t_store_def_bal(z).label_index := get_index(7);
3054 z := z + 1;
3055 l_index := l_index + 1;
3056 EXIT WHEN z > 6;
3057 End if;
3058 If l_ol2_id is not null THEN
3059 t_store_def_bal(z).def_bal_id := l_ol2_id;
3060 t_store_def_bal(z).label_index := get_index(8);
3061 z := z + 1;
3062 l_index := l_index + 1;
3063 EXIT WHEN z > 6;
3064 End if;
3065 If l_ol3_id is not null THEN
3066 t_store_def_bal(z).def_bal_id := l_ol3_id;
3067 t_store_def_bal(z).label_index := get_index(9);
3068 z := z + 1;
3069 l_index := l_index + 1;
3070 EXIT WHEN z > 6;
3071 End if;
3072 If l_ol4_id is not null THEN
3073 t_store_def_bal(z).def_bal_id := l_ol4_id;
3074 t_store_def_bal(z).label_index := get_index(10);
3075 z := z + 1;
3076 l_index := l_index + 1;
3077 EXIT WHEN z > 6;
3078 End if;
3079 If z < 7then
3080 WHILE Z <=7LOOP
3081 t_store_def_bal(z).def_bal_id := NULL;
3082 t_store_def_bal(z).label_index := get_index(11);
3083 z := z + 1;
3084 EXIT WHEN z > 7;
3085 END LOOP;
3086 End If;
3087 EXIT WHEN z >= 7;
3088 END LOOP;
3089 i := 0;
3090 k := 0;
3091 m := 0;
3092
3093 OPEN csr_get_new_emp(l_effective_date,l_nat_cd);
3094 LOOP
3095 FETCH csr_get_new_emp INTO rec_get_new_emp;
3096 EXIT WHEN csr_get_new_emp%NOTFOUND;
3097 i := i + 1;
3098 t_new_store_assact(i).person_id := rec_get_new_emp.person_id;
3099 t_new_store_assact(i).assignment_action_id := rec_get_new_emp.assignment_action_id;
3100 t_new_store_assact(i).date_start := rec_get_new_emp.date_start;
3101 END LOOP;
3102 CLOSE csr_get_new_emp;
3103
3104 OPEN csr_get_ter_emp(l_effective_date,l_nat_cd);
3105 LOOP
3106 FETCH csr_get_ter_emp INTO rec_get_ter_emp;
3107 EXIT WHEN csr_get_ter_emp%NOTFOUND;
3108 k := k + 1;
3109 t_ter_store_assact(k).person_id := rec_get_ter_emp.person_id;
3110 t_ter_store_assact(k).assignment_action_id := rec_get_ter_emp.assignment_action_id;
3111 t_ter_store_assact(k).actual_termination_date := rec_get_ter_emp.actual_termination_date;
3112 t_ter_store_assact(k).date_earned := rec_get_ter_emp.date_earned;
3113 END LOOP;
3114 CLOSE csr_get_ter_emp;
3115
3116 OPEN csr_get_cha_emp(l_effective_date,l_nat_cd);
3117 LOOP
3118 FETCH csr_get_cha_emp INTO rec_get_cha_emp;
3119 EXIT WHEN csr_get_cha_emp%NOTFOUND;
3120 l_diff_exist := 0;
3121 l_subject_si_val := 0;
3122 l_subject_si_val := pay_balance_pkg.get_value(l_subject_si_id,rec_get_cha_emp.assignment_action_id);
3123 l_salary_effective_date := rec_get_cha_emp.date_earned;
3124 OPEN csr_get_salary_date (rec_get_cha_emp.person_id,l_effective_date);
3125 LOOP
3126 FETCH csr_get_salary_date INTO rec_get_salary_date;
3127 EXIT WHEN csr_get_salary_date%NOTFOUND;
3128 l_prev_salary := pay_balance_pkg.get_value(l_subject_si_id,rec_get_salary_date.assignment_action_id);
3129 IF l_prev_salary <> l_subject_si_val THEN
3130 l_diff_exist := 1;
3131 EXIT;
3132 END IF;
3133 EXIT;
3134 END LOOP;
3135 CLOSE csr_get_salary_date;
3136
3137 IF l_diff_exist = 1 THEN
3138 m := m + 1;
3139 t_cha_store_assact(m).person_id := rec_get_cha_emp.person_id;
3140 t_cha_store_assact(m).assignment_action_id := rec_get_cha_emp.assignment_action_id;
3141 t_cha_store_assact(m).date_earned := rec_get_cha_emp.date_earned;
3142 t_cha_store_assact(m).changed_salary := l_subject_si_val;
3143 END IF;
3144 END LOOP;
3145 CLOSE csr_get_cha_emp;
3146
3147 j := 1;
3148 l := 1;
3149 n := 1;
3150 IF i > 0 THEN
3151 l_new_processed := 0;
3152 ELSE
3153 l_new_processed := 1;
3154 END IF;
3155 IF k > 0 THEN
3156 l_ter_processed := 0;
3157 ELSE
3158 l_ter_processed := 1;
3159 END IF;
3160 IF m > 0 THEN
3161 l_cha_processed := 0;
3162 ELSE
3163 l_cha_processed := 1;
3164 END IF;
3165 l_all_processed := 0;
3166
3167 l_tot_new_count := 0;
3168 l_tot_change_count := 0;
3169 l_tot_term_count := 0;
3170
3171 WHILE l_all_processed <> 1 LOOP
3172 --Writing data for new employees
3173 l_new_count := 0;
3174 dbms_lob.writeAppend( l_xfdf_string, length('<EMP-REC>'),'<EMP-REC>');
3175 l_str_er_name := '<ERNAME>'||l_employer_name||'</ERNAME>';
3176 l_str_er_ssn := '<ERSSN>'||l_employer_ssn||'</ERSSN>';
3177 l_str_year := '<YEAR>'||substr(p_effective_year,4,1)||'</YEAR>';
3178 l_str_mon := '<MONTH>'||p_effective_month||'</MONTH>';
3179 l_str_er_cur_total_d := '<CURRENT-TOTAL-DINARS>'||substr(l_fm_l_cur_total,1,length(l_fm_l_cur_total)-3)||'</CURRENT-TOTAL-DINARS>';
3180 l_str_er_cur_total_f := '<CURRENT-TOTAL-FILLS>'||substr(l_fm_l_cur_total,length(l_fm_l_cur_total)-1)||'</CURRENT-TOTAL-FILLS>';
3181 l_str_er_prev_total_d := '<PREV-TOTAL-DINARS>'||substr(l_fm_l_prev_total,1,length(l_fm_l_prev_total)-3)||'</PREV-TOTAL-DINARS>';
3182 l_str_er_prev_total_f := '<PREV-TOTAL-FILLS>'||substr(l_fm_l_prev_total,length(l_fm_l_prev_total)-1)||'</PREV-TOTAL-FILLS>';
3183 l_str_er_diff_total_d := '<DIFFERENCE-DINARS>'||substr(l_fm_l_diff_total,1,length(l_fm_l_diff_total)-3)||'</DIFFERENCE-DINARS>';
3184 l_str_er_diff_total_f := '<DIFFERENCE-FILLS>'||substr(l_fm_l_diff_total,length(l_fm_l_diff_total)-1)||'</DIFFERENCE-FILLS>';
3185 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name), l_str_er_name);
3186 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_ssn), l_str_er_ssn);
3187 dbms_lob.writeAppend( l_xfdf_string, length(l_str_year), l_str_year);
3188 dbms_lob.writeAppend( l_xfdf_string, length(l_str_mon), l_str_mon);
3189 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_cur_total_d), l_str_er_cur_total_d);
3190 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_cur_total_f), l_str_er_cur_total_f);
3191 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_prev_total_d), l_str_er_prev_total_d);
3192 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_prev_total_f), l_str_er_prev_total_f);
3193 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_diff_total_d), l_str_er_diff_total_d);
3194 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_diff_total_f), l_str_er_diff_total_f);
3195 l_total_total := 0 ;
3196 l_total_basic := 0;
3197 l_total_ha :=0;
3198 L_TOTAL_A1 :=0;
3199 L_TOTAL_A2 :=0;
3200 L_TOTAL_A3 :=0;
3201 L_TOTAL_A4 :=0;
3202 WHILE j <= i LOOP
3203 /**** RESET ALL THE VARIABLES *****/
3204 l_basic_val := 0;
3205 l_accomodation_val := 0;
3206 l_allowance_1_val := 0;
3207 l_allowance_2_val := 0;
3208 l_allowance_3_val := 0;
3209 l_allowance_4_val := 0;
3210 l_total := 0;
3211 x := 1;
3212 IF t_store_def_bal(x).def_bal_id is not null THEN
3213 l_basic_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_new_store_assact(j).assignment_action_id);
3214 x:= x + 1;
3215 ELSE
3216 l_basic_val := 0;
3217 x:= x + 1;
3218 END IF;
3219 IF t_store_def_bal(x).def_bal_id is not null THEN
3220 l_accomodation_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_new_store_assact(j).assignment_action_id);
3221 x:= x + 1;
3222 ELSE
3223 l_accomodation_val := 0;
3224 x:= x + 1;
3225 END IF;
3226 IF t_store_def_bal(x).def_bal_id is not null THEN
3227 l_allowance_1_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_new_store_assact(j).assignment_action_id);
3228 x:= x + 1;
3229 ELSE
3230 l_allowance_1_val := 0;
3231 x:= x + 1;
3232 END IF;
3233 IF t_store_def_bal(x).def_bal_id is not null THEN
3234 l_allowance_2_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_new_store_assact(j).assignment_action_id);
3235 x:= x + 1;
3236 ELSE
3237 l_allowance_2_val := 0;
3238 x:= x + 1;
3239 END IF;
3240 IF t_store_def_bal(x).def_bal_id is not null THEN
3241 l_allowance_3_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_new_store_assact(j).assignment_action_id);
3242 x:= x + 1;
3243 ELSE
3244 l_allowance_3_val := 0;
3245 x:= x + 1;
3246 END IF;
3247 IF t_store_def_bal(x).def_bal_id is not null THEN
3248 l_allowance_4_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_new_store_assact(j).assignment_action_id);
3249 ELSE
3250 l_allowance_4_val := 0;
3251 END IF;
3252 l_new_count := l_new_count+1;
3253
3254 If l_new_count <> 6 then
3255 l_tot_new_count := l_tot_new_count + 1;
3256 End If;
3257 l_fm_l_basic_val := to_char(abs(l_basic_val),lg_format_mask);
3258 l_fm_l_accomodation_val := to_char(abs(l_accomodation_val),lg_format_mask);
3259 l_fm_l_allowance_1_val := to_char(abs(l_allowance_1_val),lg_format_mask);
3260 l_fm_l_allowance_2_val := to_char(abs(l_allowance_2_val),lg_format_mask);
3261 l_fm_l_allowance_3_val := to_char(abs(l_allowance_3_val),lg_format_mask);
3262 l_fm_l_allowance_4_val := to_char(abs(l_allowance_4_val),lg_format_mask);
3263
3264 /* l_total := l_basic_val + l_accomodation_val + l_allowance_1_val + l_allowance_2_val + l_allowance_3_val + l_allowance_4_val;*/
3265
3266 l_total := pay_balance_pkg.get_value(l_subject_to_id ,t_new_store_assact(j).assignment_action_id);
3267 l_fm_total_val := to_char(abs(l_total),lg_format_mask);
3268 l_subject_si_val := 0;
3269 l_subject_si_val := pay_balance_pkg.get_value(l_subject_si_id,t_new_store_assact(j).assignment_action_id);
3270 l_fm_subject_si_val := to_char(abs(l_subject_si_val),lg_format_mask);
3271
3272
3273 BEGIN
3274
3275 SELECT decode(l_basic_val/(abs(decode(l_basic_val,0,1,l_basic_val))*-1),1,'-'||l_fm_l_basic_val,l_fm_l_basic_val)
3276 INTO l_fm_l_basic_val
3277 FROM dual;
3278
3279 SELECT decode(l_accomodation_val/(abs(decode(l_accomodation_val,0,1,l_accomodation_val))*-1),1,'-'||l_fm_l_accomodation_val,l_fm_l_accomodation_val)
3280 INTO l_fm_l_accomodation_val
3281 FROM dual;
3282
3283 SELECT decode(l_allowance_1_val/(abs(decode(l_allowance_1_val,0,1,l_allowance_1_val))*-1),1,'-'||l_fm_l_allowance_1_val,l_fm_l_allowance_1_val)
3284 INTO l_fm_l_allowance_1_val
3285 FROM dual;
3286
3287 SELECT decode(l_allowance_2_val/(abs(decode(l_allowance_2_val,0,1,l_allowance_2_val))*-1),1,'-'||l_fm_l_allowance_2_val,l_fm_l_allowance_2_val)
3288 INTO l_fm_l_allowance_2_val
3289 FROM dual;
3290
3291 SELECT decode(l_allowance_3_val/(abs(decode(l_allowance_3_val,0,1,l_allowance_3_val))*-1),1,'-'||l_fm_l_allowance_3_val,l_fm_l_allowance_3_val)
3292 INTO l_fm_l_allowance_3_val
3293 FROM dual;
3294
3295 SELECT decode(l_allowance_4_val/(abs(decode(l_allowance_4_val,0,1,l_allowance_4_val))*-1),1,'-'||l_fm_l_allowance_4_val,l_fm_l_allowance_4_val)
3296 INTO l_fm_l_allowance_4_val
3297 FROM dual;
3298
3299 SELECT decode(l_total/(abs(decode(l_total,0,1,l_total))*-1),1,'-'||l_fm_total_val,l_fm_total_val)
3300 INTO l_fm_total_val
3301 FROM dual;
3302
3303 SELECT decode(l_subject_si_val/(abs(decode(l_subject_si_val,0,1,l_subject_si_val))*-1),1,'-'||l_fm_subject_si_val,l_fm_subject_si_val)
3304 INTO l_fm_subject_si_val
3305 FROM dual;
3306
3307 EXCEPTION
3308 WHEN no_data_found then
3309 null;
3310 END;
3311
3312
3313 OPEN csr_get_person_data(t_new_store_assact(j).person_id,l_effective_date);
3314 FETCH csr_get_person_data INTO l_full_name;
3315 CLOSE csr_get_person_data;
3316
3317 OPEN csr_get_person_asg_data(t_new_store_assact(j).person_id, l_effective_date);
3318 FETCH csr_get_person_asg_data into l_insured_ssn;
3319 CLOSE csr_get_person_asg_data;
3320
3321 If l_new_count <> 6 then
3322 l_str_seq_no := '<SER-' || l_new_count ||'>'||l_tot_new_count||'</SER-'|| l_new_count || '>';
3323 l_str_ee_name := '<EMPLOYEE-NAME-'|| l_new_count || '>'|| substr(l_full_name,1,60) ||'</EMPLOYEE-NAME-'|| l_new_count || '>';
3324 l_str_bsd := '<BASIC-SALARY-DINARS-' || l_new_count ||'>'||substr(l_fm_l_basic_val,1,length(l_fm_l_basic_val)-3)||'</BASIC-SALARY-DINARS-'|| l_new_count || '>';
3325 l_str_bsf := '<BASIC-SALARY-FILLS-' || l_new_count ||'>'||substr(l_fm_l_basic_val,length(l_fm_l_basic_val)-1)||'</BASIC-SALARY-FILLS-'|| l_new_count || '>';
3326 l_str_aad := '<HOUSING-ALLOWANCE-DINARS-' || l_new_count ||'>'||substr(l_fm_l_accomodation_val,1,length(l_fm_l_accomodation_val)-3)||'</HOUSING-ALLOWANCE-DINARS-'|| l_new_count || '>';
3327 l_str_aaf := '<HOUSING-ALLOWANCE-FILLS-' || l_new_count ||'>'||substr(l_fm_l_accomodation_val,length(l_fm_l_accomodation_val)-1)||'</HOUSING-ALLOWANCE-FILLS-'|| l_new_count || '>';
3328 l_str_a1d := '<A1-DINARS-' || l_new_count ||'>'||substr(l_fm_l_allowance_1_val,1,length(l_fm_l_allowance_1_val)-3)||'</A1-DINARS-'|| l_new_count || '>';
3329 l_str_a1f := '<A1-FILLS-' || l_new_count ||'>'||substr(l_fm_l_allowance_1_val,length(l_fm_l_allowance_1_val)-1)||'</A1-FILLS-'|| l_new_count || '>';
3330 l_str_a2d := '<A2-DINARS-' || l_new_count ||'>'||substr(l_fm_l_allowance_2_val,1,length(l_fm_l_allowance_2_val)-3)||'</A2-DINARS-'|| l_new_count || '>';
3331 l_str_a2f := '<A2-FILLS-' || l_new_count ||'>'||substr(l_fm_l_allowance_2_val,length(l_fm_l_allowance_2_val)-1)||'</A2-FILLS-'|| l_new_count || '>';
3332 l_str_a3d := '<A3-DINARS-' || l_new_count ||'>'||substr(l_fm_l_allowance_3_val,1,length(l_fm_l_allowance_3_val)-3)||'</A3-DINARS-'|| l_new_count || '>';
3333 l_str_a3f := '<A3-FILLS-' || l_new_count ||'>'||substr(l_fm_l_allowance_3_val,length(l_fm_l_allowance_3_val)-1)||'</A3-FILLS-'|| l_new_count || '>';
3334 l_str_a4d := '<A4-DINARS-' || l_new_count ||'>'||substr(l_fm_l_allowance_4_val,1,length(l_fm_l_allowance_4_val)-3)||'</A4-DINARS-'|| l_new_count || '>';
3335 l_str_a4f := '<A4-FILLS-' || l_new_count ||'>'||substr(l_fm_l_allowance_4_val,length(l_fm_l_allowance_4_val)-1)||'</A4-FILLS-'|| l_new_count || '>';
3336 l_str_a5d := '<TOTAL-DINARS-'|| l_new_count ||'>'||substr(l_fm_total_val,1,length(l_fm_total_val)-3)||'</TOTAL-DINARS-'|| l_new_count || '>';
3337 l_str_a5f := '<TOTAL-FILLS-' || l_new_count ||'>'||substr(l_fm_total_val,length(l_fm_total_val)-1)||'</TOTAL-FILLS-'|| l_new_count || '>';
3338 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
3339 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_name), l_str_ee_name);
3340 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3341 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3342 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
3343 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
3344 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
3345 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
3346 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
3347 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
3348 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
3349 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
3350 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4d), l_str_a4d);
3351 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4f), l_str_a4f);
3352 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5d), l_str_a5d);
3353 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5f), l_str_a5f);
3354 L_TOTAL_HA := L_TOTAL_HA + l_accomodation_val;
3355 L_TOTAL_A1 := L_TOTAL_A1 + l_allowance_1_val;
3356 L_TOTAL_A2 := L_TOTAL_A2 + l_allowance_2_val;
3357 L_TOTAL_A3 := L_TOTAL_A3 + l_allowance_3_val;
3358 L_TOTAL_TOTAL := L_TOTAL_TOTAL + l_total;
3359 L_TOTAL_A4 := L_TOTAL_A4 + l_allowance_4_val;
3360 l_total_basic := l_total_basic + l_basic_val;
3361 END If;
3362 If l_new_count <> 6 then
3363 j := j + 1;
3364 End if;
3365 IF (j > i and l_new_count <> 6) then
3366
3367 tp := l_new_count;
3368 WHILE tp <=6 LOOP
3369 l_str_seq_no := '<SER-' || tp ||'>'||' ' ||'</SER-'|| tp || '>';
3370 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
3371 tp := tp + 1;
3372 END LOOP;
3373
3374
3375 l_fm_l_total_basic := to_char(abs(l_total_basic),lg_format_mask);
3376 l_fm_l_total_ha := to_char(abs(L_TOTAL_HA),lg_format_mask);
3377 l_fm_l_total_a1 := to_char(abs(L_TOTAL_A1),lg_format_mask);
3378 l_fm_l_total_a2 := to_char(abs(L_TOTAL_A2),lg_format_mask);
3379 l_fm_l_total_a3 := to_char(abs(L_TOTAL_A3),lg_format_mask);
3380 l_fm_l_total_a4 := to_char(abs(L_TOTAL_A4),lg_format_mask);
3381 l_fm_l_total_total := to_char(abs(L_TOTAL_TOTAL),lg_format_mask);
3382
3383
3384 BEGIN
3385
3386 SELECT decode(l_total_basic/(abs(decode(l_total_basic,0,1,l_total_basic))*-1),1,'-'||l_fm_l_total_basic,l_fm_l_total_basic)
3387 INTO l_fm_l_total_basic
3388 FROM dual;
3389
3390 SELECT decode(L_TOTAL_HA/(abs(decode(L_TOTAL_HA,0,1,L_TOTAL_HA))*-1),1,'-'||l_fm_l_total_ha,l_fm_l_total_ha)
3391 INTO l_fm_l_total_ha
3392 FROM dual;
3393
3394 SELECT decode(L_TOTAL_A1/(abs(decode(L_TOTAL_A1,0,1,L_TOTAL_A1))*-1),1,'-'||l_fm_l_total_a1,l_fm_l_total_a1)
3395 INTO l_fm_l_total_a1
3396 FROM dual;
3397
3398 SELECT decode(L_TOTAL_A2/(abs(decode(L_TOTAL_A2,0,1,L_TOTAL_A2))*-1),1,'-'||l_fm_l_total_a2,l_fm_l_total_a2)
3399 INTO l_fm_l_total_a2
3400 FROM dual;
3401
3402 SELECT decode(L_TOTAL_A3/(abs(decode(L_TOTAL_A3,0,1,L_TOTAL_A3))*-1),1,'-'||l_fm_l_total_a3,l_fm_l_total_a3)
3403 INTO l_fm_l_total_a3
3404 FROM dual;
3405
3406 SELECT decode(L_TOTAL_A4/(abs(decode(L_TOTAL_A4,0,1,L_TOTAL_A4))*-1),1,'-'||l_fm_l_total_a4,l_fm_l_total_a4)
3407 INTO l_fm_l_total_a4
3408 FROM dual;
3409
3410 SELECT decode(L_TOTAL_TOTAL/(abs(decode(L_TOTAL_TOTAL,0,1,L_TOTAL_TOTAL))*-1),1,'-'||l_fm_l_total_total,l_fm_l_total_total)
3411 INTO l_fm_l_total_total
3412 FROM dual;
3413
3414 EXCEPTION
3415 WHEN no_data_found then
3416 null;
3417 END;
3418
3419
3420 l_str_bsd := '<BASIC-DINARS-TOTAL>'||substr(l_fm_l_total_basic,1,length(l_fm_l_total_basic)-3)||'</BASIC-DINARS-TOTAL>';
3421 l_str_bsf := '<BASIC-FILLS-TOTAL>'||substr(l_fm_l_total_basic,length(l_fm_l_total_basic)-1)||'</BASIC-FILLS-TOTAL>';
3422 l_str_aad := '<HOUSING-DINARS-TOTAL>'||substr(l_fm_l_total_ha,1,length(l_fm_l_total_ha)-3)||'</HOUSING-DINARS-TOTAL>';
3423 l_str_aaf := '<HOUSING-FILLS-TOTAL>'||substr(l_fm_l_total_ha,length(l_fm_l_total_ha)-1)||'</HOUSING-FILLS-TOTAL>';
3424 l_str_a1d := '<A1-DINARS-TOTAL>'||substr(l_fm_l_total_a1,1,length(l_fm_l_total_a1)-3)||'</A1-DINARS-TOTAL>';
3425 l_str_a1f := '<A1-FILLS-TOTAL>'||substr(l_fm_l_total_a1,length(l_fm_l_total_a1)-1)||'</A1-FILLS-TOTAL>';
3426 l_str_a2d := '<A2-DINARS-TOTAL>'||substr(l_fm_l_total_a2,1,length(l_fm_l_total_a2)-3)||'</A2-DINARS-TOTAL>';
3427 l_str_a2f := '<A2-FILLS-TOTAL>'||substr(l_fm_l_total_a2,length(l_fm_l_total_a2)-1)||'</A2-FILLS-TOTAL>';
3428 l_str_a3d := '<A3-DINARS-TOTAL>'||substr(l_fm_l_total_a3,1,length(l_fm_l_total_a3)-3)||'</A3-DINARS-TOTAL>';
3429 l_str_a3f := '<A3-FILLS-TOTAL>'||substr(l_fm_l_total_a3,length(l_fm_l_total_a3)-1)||'</A3-FILLS-TOTAL>';
3430 l_str_a4d := '<A4-DINARS-TOTAL>'||substr(l_fm_l_total_a4,1,length(l_fm_l_total_a4)-3)||'</A4-DINARS-TOTAL>';
3431 l_str_a4f := '<A4-FILLS-TOTAL>'||substr(l_fm_l_total_a4,length(l_fm_l_total_a4)-1)||'</A4-FILLS-TOTAL>';
3432 l_str_a5d := '<TOTAL-DINARS-TOTAL>'||substr(l_fm_l_total_total,1,length(l_fm_l_total_total)-3)||'</TOTAL-DINARS-TOTAL>';
3433 l_str_a5f := '<TOTAL-FILLS-TOTAL>'||substr(l_fm_l_total_total,length(l_fm_l_total_total)-1)||'</TOTAL-FILLS-TOTAL>';
3434 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3435 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3436 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
3437 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
3438 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
3439 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
3440 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
3441 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
3442 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
3443 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
3444 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4d), l_str_a4d);
3445 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4f), l_str_a4f);
3446 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5d), l_str_a5d);
3447 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5f), l_str_a5f);
3448 /************** dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>'); **********/
3449 END IF;
3450 IF j > i THEN
3451 l_new_processed := 1;
3452 EXIT;
3453 END IF;
3454 IF l_new_count = 6 THEN
3455 l_fm_l_total_basic := to_char(abs(l_total_basic),lg_format_mask);
3456 l_fm_l_total_ha := to_char(abs(L_TOTAL_HA),lg_format_mask);
3457 l_fm_l_total_a1 := to_char(abs(L_TOTAL_A1),lg_format_mask);
3458 l_fm_l_total_a2 := to_char(abs(L_TOTAL_A2),lg_format_mask);
3459 l_fm_l_total_a3 := to_char(abs(L_TOTAL_A3),lg_format_mask);
3460 l_fm_l_total_a4 := to_char(abs(L_TOTAL_A4),lg_format_mask);
3461 l_fm_l_total_total := to_char(abs(L_TOTAL_TOTAL),lg_format_mask);
3462
3463 BEGIN
3464
3465 SELECT decode(l_total_basic/(abs(decode(l_total_basic,0,1,l_total_basic))*-1),1,'-'||l_fm_l_total_basic,l_fm_l_total_basic)
3466 INTO l_fm_l_total_basic
3467 FROM dual;
3468
3469 SELECT decode(L_TOTAL_HA/(abs(decode(L_TOTAL_HA,0,1,L_TOTAL_HA))*-1),1,'-'||l_fm_l_total_ha,l_fm_l_total_ha)
3470 INTO l_fm_l_total_ha
3471 FROM dual;
3472
3473 SELECT decode(L_TOTAL_A1/(abs(decode(L_TOTAL_A1,0,1,L_TOTAL_A1))*-1),1,'-'||l_fm_l_total_a1,l_fm_l_total_a1)
3474 INTO l_fm_l_total_a1
3475 FROM dual;
3476
3477 SELECT decode(L_TOTAL_A2/(abs(decode(L_TOTAL_A2,0,1,L_TOTAL_A2))*-1),1,'-'||l_fm_l_total_a2,l_fm_l_total_a2)
3478 INTO l_fm_l_total_a2
3479 FROM dual;
3480
3481 SELECT decode(L_TOTAL_A3/(abs(decode(L_TOTAL_A3,0,1,L_TOTAL_A3))*-1),1,'-'||l_fm_l_total_a3,l_fm_l_total_a3)
3482 INTO l_fm_l_total_a3
3483 FROM dual;
3484
3485 SELECT decode(L_TOTAL_A4/(abs(decode(L_TOTAL_A4,0,1,L_TOTAL_A4))*-1),1,'-'||l_fm_l_total_a4,l_fm_l_total_a4)
3486 INTO l_fm_l_total_a4
3487 FROM dual;
3488
3489 SELECT decode(L_TOTAL_TOTAL/(abs(decode(L_TOTAL_TOTAL,0,1,L_TOTAL_TOTAL))*-1),1,'-'||l_fm_l_total_total,l_fm_l_total_total)
3490 INTO l_fm_l_total_total
3491 FROM dual;
3492
3493 EXCEPTION
3494 WHEN no_data_found then
3495 null;
3496 END;
3497
3498
3499 l_str_bsd := '<BASIC-DINARS-TOTAL>'||substr(l_fm_l_total_basic,1,length(l_fm_l_total_basic)-3)||'</BASIC-DINARS-TOTAL>';
3500 l_str_bsf := '<BASIC-FILLS-TOTAL>'||substr(l_fm_l_total_basic,length(l_fm_l_total_basic)-1)||'</BASIC-FILLS-TOTAL>';
3501 l_str_aad := '<HOUSING-DINARS-TOTAL>'||substr(l_fm_l_total_ha,1,length(l_fm_l_total_ha)-3)||'</HOUSING-DINARS-TOTAL>';
3502 l_str_aaf := '<HOUSING-FILLS-TOTAL>'||substr(l_fm_l_total_ha,length(l_fm_l_total_ha)-1)||'</HOUSING-FILLS-TOTAL>';
3503 l_str_a1d := '<A1-DINARS-TOTAL>'||substr(l_fm_l_total_a1,1,length(l_fm_l_total_a1)-3)||'</A1-DINARS-TOTAL>';
3504 l_str_a1f := '<A1-FILLS-TOTAL>'||substr(l_fm_l_total_a1,length(l_fm_l_total_a1)-1)||'</A1-FILLS-TOTAL>';
3505 l_str_a2d := '<A2-DINARS-TOTAL>'||substr(l_fm_l_total_a2,1,length(l_fm_l_total_a2)-3)||'</A2-DINARS-TOTAL>';
3506 l_str_a2f := '<A2-FILLS-TOTAL>'||substr(l_fm_l_total_a2,length(l_fm_l_total_a2)-1)||'</A2-FILLS-TOTAL>';
3507 l_str_a3d := '<A3-DINARS-TOTAL>'||substr(l_fm_l_total_a3,1,length(l_fm_l_total_a3)-3)||'</A3-DINARS-TOTAL>';
3508 l_str_a3f := '<A3-FILLS-TOTAL>'||substr(l_fm_l_total_a3,length(l_fm_l_total_a3)-1)||'</A3-FILLS-TOTAL>';
3509 l_str_a4d := '<A4-DINARS-TOTAL>'||substr(l_fm_l_total_a4,1,length(l_fm_l_total_a4)-3)||'</A4-DINARS-TOTAL>';
3510 l_str_a4f := '<A4-FILLS-TOTAL>'||substr(l_fm_l_total_a4,length(l_fm_l_total_a4)-1)||'</A4-FILLS-TOTAL>';
3511 l_str_a5d := '<TOTAL-DINARS-TOTAL>'||substr(l_fm_l_total_total,1,length(l_fm_l_total_total)-3)||'</TOTAL-DINARS-TOTAL>';
3512 l_str_a5f := '<TOTAL-FILLS-TOTAL>'||substr(l_fm_l_total_total,length(l_fm_l_total_total)-1)||'</TOTAL-FILLS-TOTAL>';
3513 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3514 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3515 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
3516 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
3517 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
3518 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
3519 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
3520 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
3521 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
3522 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
3523 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4d), l_str_a4d);
3524 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a4f), l_str_a4f);
3525 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5d), l_str_a5d);
3526 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a5f), l_str_a5f);
3527 /************** dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>'); **********/
3528 EXIT;
3529 END IF;
3530 END LOOP;
3531 --Writing data for terminated employees
3532 l_new_count := 0;
3533 l_total_term := 0;
3534
3535 WHILE l <= k LOOP
3536 l_subject_si_val := 0;
3537 l_subject_si_val := pay_balance_pkg.get_value(l_subject_si_id,t_ter_store_assact(l).assignment_action_id);
3538
3539 OPEN csr_get_person_data(t_ter_store_assact(l).person_id,l_effective_date);
3540 FETCH csr_get_person_data INTO l_full_name;
3541 CLOSE csr_get_person_data;
3542
3543 OPEN csr_get_person_asg_data(t_ter_store_assact(l).person_id, l_effective_date);
3544 FETCH csr_get_person_asg_data into l_insured_ssn;
3545 CLOSE csr_get_person_asg_data;
3546
3547 l_new_count := l_new_count+1;
3548 If l_new_count <> 5 then
3549 l_tot_term_count := l_tot_term_count + 1;
3550 End If;
3551
3552 l_fm_subject_si_val := to_char(abs(l_subject_si_val),lg_format_mask);
3553
3554 BEGIN
3555 SELECT decode(l_subject_si_val/(abs(decode(l_subject_si_val,0,1,l_subject_si_val))*-1),1,'-'||l_fm_subject_si_val,l_fm_subject_si_val)
3556 INTO l_fm_subject_si_val
3557 FROM dual;
3558
3559 EXCEPTION
3560 WHEN no_data_found then
3561 null;
3562 END;
3563
3564 IF l_new_count <> 5 then
3565 l_str_seq_no := '<SER-T-' || l_new_count ||'>'||l_tot_term_count||'</SER-T-'|| l_new_count || '>';
3566 l_str_ee_ssn := '<TERM-SSN-'|| l_new_count || '>'|| l_insured_ssn ||'</TERM-SSN-'|| l_new_count || '>';
3567 l_str_ee_name := '<TERM-EMPLOYEE-NAME-'|| l_new_count || '>'|| substr(l_full_name,1,60) ||'</TERM-EMPLOYEE-NAME-'|| l_new_count || '>';
3568 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
3569 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_ssn), l_str_ee_ssn);
3570 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_name), l_str_ee_name);
3571 l_str_a1d := '<TERM-DINARS-' || l_new_count ||'>'||substr(l_fm_subject_si_val,1,length(l_fm_subject_si_val)-3)||'</TERM-DINARS-'|| l_new_count || '>';
3572 l_str_a1f := '<TERM-FILLS-' || l_new_count ||'>'||substr(l_fm_subject_si_val,length(l_fm_subject_si_val)-1)||'</TERM-FILLS-'|| l_new_count || '>';
3573 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
3574 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
3575 l_total_term := l_total_term + l_subject_si_val;
3576 END If;
3577 If l_new_count <> 5 then
3578 l:= l + 1;
3579 End If;
3580 If (l > k and l_new_count <> 5) then
3581
3582 tp := l_new_count;
3583 WHILE tp <= 5 LOOP
3584 l_str_seq_no := '<SER-T-' || tp ||'>'||' '||'</SER-T-'|| tp || '>';
3585 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
3586 tp := tp + 1;
3587 END LOOP;
3588
3589
3590 l_fm_l_total_term := to_char(abs(l_total_term),lg_format_mask);
3591
3592 BEGIN
3593 SELECT decode(l_total_term/(abs(decode(l_total_term,0,1,l_total_term))*-1),1,'-'||l_fm_l_total_term,l_fm_l_total_term)
3594 INTO l_fm_l_total_term
3595 FROM dual;
3596
3597 EXCEPTION
3598 WHEN no_data_found then
3599 null;
3600 END;
3601
3602 l_str_bsd := '<TERM-DINARS-TOTAL>'||substr(l_fm_l_total_term,1,length(l_fm_l_total_term)-3)||'</TERM-DINARS-TOTAL>';
3603 l_str_bsf := '<TERM-FILLS-TOTAL>'||substr(l_fm_l_total_term,length(l_fm_l_total_term)-1)||'</TERM-FILLS-TOTAL>';
3604 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3605 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3606 /************** dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>'); **********/
3607 End If;
3608 IF l > k THEN
3609 l_ter_processed := 1;
3610 EXIT;
3611 END IF;
3612 IF l_new_count = 5 THEN
3613 l_fm_l_total_term := to_char(l_total_term,lg_format_mask);
3614
3615 BEGIN
3616 SELECT decode(l_total_term/(abs(decode(l_total_term,0,1,l_total_term))*-1),1,'-'||l_fm_l_total_term,l_fm_l_total_term)
3617 INTO l_fm_l_total_term
3618 FROM dual;
3619
3620 EXCEPTION
3621 WHEN no_data_found then
3622 null;
3623 END;
3624
3625 l_str_bsd := '<TERM-DINARS-TOTAL>'||substr(l_fm_l_total_term,1,length(l_fm_l_total_term)-3)||'</TERM-DINARS-TOTAL>';
3626 l_str_bsf := '<TERM-FILLS-TOTAL>'||substr(l_fm_l_total_term,length(l_fm_l_total_term)-1)||'</TERM-FILLS-TOTAL>';
3627 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3628 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3629 /*********** dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>'); ************/
3630 EXIT;
3631 END IF;
3632 END LOOP;
3633 --Writing data for employees with changed salary
3634 l_new_count := 0;
3635 l_total_change := 0;
3636
3637 WHILE n <= m LOOP
3638 l_subject_si_val := 0;
3639 l_subject_si_val := pay_balance_pkg.get_value(l_subject_si_id,t_cha_store_assact(n).assignment_action_id);
3640
3641 OPEN csr_get_person_data(t_cha_store_assact(n).person_id,l_effective_date);
3642 FETCH csr_get_person_data INTO l_full_name;
3643 CLOSE csr_get_person_data;
3644
3645 OPEN csr_get_person_asg_data(t_cha_store_assact(n).person_id, l_effective_date);
3646 FETCH csr_get_person_asg_data into l_insured_ssn;
3647 CLOSE csr_get_person_asg_data;
3648
3649 l_new_count := l_new_count+1;
3650 If l_new_count <> 5 then
3651 l_tot_change_count := l_tot_change_count + 1;
3652 End If;
3653 l_fm_changed_salary := to_char(abs(l_subject_si_val),lg_format_mask);
3654
3655 BEGIN
3656 SELECT decode(l_subject_si_val/(abs(decode(l_subject_si_val,0,1,l_subject_si_val))*-1),1,'-'||l_fm_changed_salary,l_fm_changed_salary)
3657 INTO l_fm_changed_salary
3658 FROM dual;
3659
3660 EXCEPTION
3661 WHEN no_data_found then
3662 null;
3663 END;
3664
3665 IF l_new_count <> 5 then
3666 l_str_seq_no := '<SER-C-' || l_new_count ||'>'||l_tot_change_count||'</SER-C-'|| l_new_count || '>';
3667 l_str_ee_ssn := '<CHANGE-SSN-'|| l_new_count || '>'|| l_insured_ssn ||'</CHANGE-SSN-'|| l_new_count || '>';
3668 l_str_ee_name := '<CHANGE-EMPLOYEE-NAME-'|| l_new_count || '>'|| substr(l_full_name,1,60) ||'</CHANGE-EMPLOYEE-NAME-'|| l_new_count || '>';
3669 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
3670 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_ssn), l_str_ee_ssn);
3671 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_name), l_str_ee_name);
3672 l_str_a1d := '<CHANGE-WAGE-DINARS-' || l_new_count ||'>'||substr(l_fm_changed_salary,1,length(l_fm_changed_salary)-3)||'</CHANGE-WAGE-DINARS-'|| l_new_count ||'>';
3673 l_str_a1f := '<CHANGE-FILLS-' || l_new_count ||'>'||substr(l_fm_changed_salary,length(l_fm_changed_salary)-1)||'</CHANGE-FILLS-'|| l_new_count || '>';
3674 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
3675 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
3676 l_total_change := l_total_change + l_subject_si_val;
3677 END If;
3678 If l_new_count <> 5 then
3679 n := n + 1;
3680 End If;
3681 If (n > m and l_new_count <> 5) then
3682
3683 tp := l_new_count;
3684 WHILE tp <= 5 LOOP
3685 l_str_seq_no := '<SER-C-' || tp ||'>'||' '||'</SER-C-'|| tp || '>';
3686 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
3687 tp := tp + 1;
3688 END LOOP;
3689
3690
3691 l_fm_l_total_change := to_char(abs(l_total_change),lg_format_mask);
3692
3693 BEGIN
3694 SELECT decode(l_total_change/(abs(decode(l_total_change,0,1,l_total_change))*-1),1,'-'||l_fm_l_total_change,l_fm_l_total_change)
3695 INTO l_fm_l_total_change
3696 FROM dual;
3697
3698 EXCEPTION
3699 WHEN no_data_found then
3700 null;
3701 END;
3702
3703 l_str_bsd := '<CHANGE-DINARS-TOTAL>'||substr(l_fm_l_total_change,1,length(l_fm_l_total_change)-3)||'</CHANGE-DINARS-TOTAL>';
3704 l_str_bsf := '<CHANGE-FILLS-TOTAL>'||substr(l_fm_l_total_change,length(l_fm_l_total_change)-1)||'</CHANGE-FILLS-TOTAL>';
3705 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3706 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3707 /************* dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>'); ***********/
3708 End If;
3709 IF n > m THEN
3710 l_cha_processed := 1;
3711 EXIT;
3712 END IF;
3713 IF l_new_count = 5 THEN
3714 l_fm_l_total_change := to_char(abs(l_total_change),lg_format_mask);
3715
3716 BEGIN
3717 SELECT decode(l_total_change/(abs(decode(l_total_change,0,1,l_total_change))*-1),1,'-'||l_fm_l_total_change,l_fm_l_total_change)
3718 INTO l_fm_l_total_change
3719 FROM dual;
3720
3721 EXCEPTION
3722 WHEN no_data_found then
3723 null;
3724 END;
3725
3726 l_str_bsd := '<CHANGE-DINARS-TOTAL>'||substr(l_fm_l_total_change,1,length(l_fm_l_total_change)-3)||'</CHANGE-DINARS-TOTAL>';
3727 l_str_bsf := '<CHANGE-FILLS-TOTAL>'||substr(l_fm_l_total_change,1,length(l_fm_l_total_change)-3)||'</CHANGE-FILLS-TOTAL>';
3728 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
3729 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
3730 /*********** dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>'); **********/
3731 EXIT;
3732 END IF;
3733 END LOOP;
3734
3735 IF l_ter_processed = 1 AND l_new_processed = 1 AND l_cha_processed = 1 THEN
3736 l_all_processed := 1;
3737 END IF;
3738 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
3739 END LOOP;
3740
3741 dbms_lob.writeAppend( l_xfdf_string, length('</START>'),'</START>');
3742 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
3743 clob_to_blob(l_xfdf_string,l_xfdf_blob);
3744
3745 hr_utility.set_location('Finished creating xml data for Procedure FORM6 ',20);
3746 EXCEPTION
3747 WHEN utl_file.invalid_path then
3748 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
3749 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
3750 hr_utility.raise_error;
3751 --
3752 WHEN utl_file.invalid_mode then
3753 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
3754 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
3755 hr_utility.raise_error;
3756 --
3757 WHEN utl_file.invalid_filehandle then
3758 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
3759 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
3760 hr_utility.raise_error;
3761 --
3762 WHEN utl_file.invalid_operation then
3763 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
3764 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
3765 hr_utility.raise_error;
3766 --
3767 WHEN utl_file.read_error then
3768 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
3769 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
3770 hr_utility.raise_error;
3771 --
3772 WHEN others THEN
3773 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
3774 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
3775 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
3776 hr_utility.raise_error;
3777 END FORM7;
3778 -------------------------------------------------------------------------------------------
3779 PROCEDURE MCP
3780 (p_request_id NUMBER
3781 ,p_report VARCHAR2
3782 ,p_business_group_id NUMBER
3783 ,p_employer_id NUMBER
3784 ,p_effective_month VARCHAR2
3785 ,p_effective_year VARCHAR2
3786 ,l_xfdf_blob OUT NOCOPY BLOB
3787 )
3788 AS
3789
3790 /*Cursor for fetching Local nationality for the BG */
3791 CURSOR csr_get_loc_nat IS
3792 SELECT org_information1
3793 FROM hr_organization_information
3794 WHERE organization_id = p_business_group_id
3795 AND org_information_context = 'AE_BG_DETAILS';
3796
3797 /*Cursor for fetching Employer Name*/
3798 CURSOR csr_employer_name IS
3799 SELECT name
3800 FROM hr_organization_units
3801 WHERE organization_id = p_employer_id;
3802
3803 /*Cursor for fetching employees*/
3804 CURSOR csr_get_emp (l_employer number , l_date date , l_nat_cd varchar2) IS
3805 SELECT distinct asg.person_id
3806 ,paa.assignment_action_id
3807 ,ppa.date_earned
3808 FROM per_all_assignments_f asg
3809 ,pay_assignment_actions paa
3810 ,pay_payroll_actions ppa
3811 ,hr_soft_coding_keyflex hscl
3812 ,per_periods_of_service pos
3813 ,per_all_people_f ppf
3814 WHERE asg.assignment_id = paa.assignment_id
3815 AND paa.payroll_action_id = ppa.payroll_action_id
3816 AND pos.period_of_service_id = asg.period_of_service_id
3817 AND ppa.action_type in ('R','Q')
3818 AND ppa.action_status = 'C'
3819 AND paa.action_status IN ('C','S')
3820 AND trunc(ppa.date_earned,'MM') = TRUNC(l_date, 'MM')
3821 AND trunc(l_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
3822 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
3823 AND hscl.segment1 = to_char(l_employer)
3824 AND ppf.person_id = asg.person_id
3825 AND trunc(l_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
3826 AND ppf.per_information18 = l_nat_cd;
3827
3828 /* Cursor for fetching the person data */
3829 CURSOR csr_get_person_data (l_person_id number,l_effective_date date) IS
3830 SELECT ppf.full_name, ppf.employee_number
3831 FROM per_all_people_f ppf
3832 WHERE ppf.person_id = l_person_id
3833 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
3834
3835 /* Cursor for fetching the person's assignment data */
3836 CURSOR csr_get_person_asg_data (l_person_id number,l_effective_date date) IS
3837 SELECT hsck.segment3
3838 FROM per_all_assignments_f paf,hr_soft_coding_keyflex hsck
3839 WHERE paf.person_id = l_person_id
3840 AND paf.soft_coding_keyflex_id = hsck.soft_coding_keyflex_id
3841 AND hsck.segment1 = p_employer_id
3842 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
3843
3844 /* Cursor for fetching Defined balance ids from Org EIT */
3845 CURSOR csr_get_def_bal_ids (l_bg_id number) IS
3846 SELECT ORG_INFORMATION1,ORG_INFORMATION2,ORG_INFORMATION3,ORG_INFORMATION4,ORG_INFORMATION5,ORG_INFORMATION6,ORG_INFORMATION7,ORG_INFORMATION8,ORG_INFORMATION9,ORG_INFORMATION10
3847 FROM HR_ORGANIZATION_INFORMATION
3848 WHERE Organization_id = l_bg_id
3849 AND org_information_context = 'AE_SI_DETAILS';
3850
3851 /* Cursor for fetching Defined balance ids for UAE balances */
3852 CURSOR csr_get_seeded_def_bal_ids (l_user_name varchar2) IS
3853 SELECT u.creator_id
3854 FROM ff_user_entities u,ff_database_items d
3855 WHERE d.user_name = l_user_name
3856 AND u.user_entity_id = d.user_entity_id
3857 AND u.legislation_code = 'AE'
3858 AND u.business_group_id is null
3859 AND u.creator_type = 'B';
3860
3861 TYPE def_bal_rec IS RECORD
3862 (def_bal_id NUMBER);
3863 TYPE t_def_bal_table IS TABLE OF def_bal_rec INDEX BY BINARY_INTEGER;
3864 t_store_def_bal t_def_bal_table;
3865 TYPE assact_rec IS RECORD
3866 (person_id NUMBER
3867 ,assignment_action_id NUMBER
3868 ,date_start DATE);
3869 TYPE t_assact_table IS TABLE OF assact_rec INDEX BY BINARY_INTEGER;
3870 t_store_assact t_assact_table;
3871 l_employer_name varchar2(240);
3872 l_input_date varchar2(30);
3873 l_effective_date date;
3874 l_employer_ssn number;
3875 l_basic_sal_id number;
3876 z number;
3877 l_accomodation_id number;
3878 l_social_id number;
3879 l_child_social_id number;
3880 l_tp_id number;
3881 l_ol1_id number;
3882 l_ol2_id number;
3883 l_ol3_id number;
3884 l_ol4_id number;
3885 l_cost_of_living_id number;
3886 l_index number;
3887 i number;
3888 k number;
3889 m number;
3890 j number;
3891 x number;
3892 l_tot_count number;
3893 l_new_processed number;
3894 l_all_processed number;
3895 l_new_count number;
3896 l_basic_val number(15,2);
3897 l_accomodation_val number(15,2);
3898 l_allowance_1_val number(15,2);
3899 l_allowance_2_val number(15,2);
3900 l_allowance_3_val number(15,2);
3901 l_allowance_4_val number(15,2);
3902 l number;
3903 L_FULL_NAME varchar2(240);
3904 l_insured_ssn varchar2(30);
3905 L_TOTAL number(15,2);
3906 L_FM_TOTAL_VAL varchar2(100);
3907 l_fm_l_basic_val varchar2(100);
3908 L_FM_L_ACCOMODATION_VAL varchar2(100);
3909 L_FM_L_ALLOWANCE_1_VAL varchar2(100);
3910 L_FM_L_ALLOWANCE_2_VAL varchar2(100);
3911 L_FM_L_ALLOWANCE_3_VAL varchar2(100);
3912 L_FM_L_ALLOWANCE_4_VAL varchar2(100);
3913 l_total_basic number(15,2);
3914 l_total_aa number(15,2);
3915 l_total_a1 number(15,2);
3916 l_total_a2 number(15,2);
3917 l_total_a3 number(15,2);
3918 l_total_ee number(15,2);
3919 l_total_er number(15,2);
3920 l_total_total number(15,2);
3921 l_fm_total_basic varchar2(100);
3922 l_fm_total_aa varchar2(100);
3923 l_fm_total_a1 varchar2(100);
3924 l_fm_total_a2 varchar2(100);
3925 l_fm_total_a3 varchar2(100);
3926 l_fm_total_ee varchar2(100);
3927 l_fm_total_er varchar2(100);
3928 l_fm_total_total varchar2(100);
3929 rec_get_emp csr_get_emp%ROWTYPE;
3930 l_xfdf_string CLOB;
3931 l_str_er_name varchar2(240);
3932 l_str_er_ssn varchar2(240);
3933 l_str_ee_name varchar2(240);
3934 l_str_ee_ssn varchar2(240);
3935 l_str_year varchar2(240);
3936 l_str_month varchar2(240);
3937 l_str_seq_no varchar2(240);
3938 l_str_bsd varchar2(240);
3939 l_str_bsf varchar2(240);
3940 l_str_aad varchar2(240);
3941 l_str_aaf varchar2(240);
3942 l_str_a1d varchar2(240);
3943 l_str_a1f varchar2(240);
3944 l_str_a2d varchar2(240);
3945 l_str_a2f varchar2(240);
3946 l_str_a3d varchar2(240);
3947 l_str_a3f varchar2(240);
3948 l_str_a4d varchar2(240);
3949 l_str_a4f varchar2(240);
3950 l_str_a5d varchar2(240);
3951 l_str_a5f varchar2(240);
3952 l_ee_soc_ins_id number(15,2);
3953 l_er_soc_ins_id number(15,2);
3954 l_ee_soc_ins_adj_id number(15,2);
3955 l_er_soc_ins_adj_id number(15,2);
3956 l_ee_si_val number(15,2);
3957 l_er_si_val number(15,2);
3958 l_ee_si_adj_val number(15,2);
3959 l_er_si_adj_val number(15,2);
3960 l_er_contribution number(15,2);
3961 l_ee_contribution number(15,2);
3962 l_total_contribution number(15,2);
3963 l_fm_er_contribution varchar2(100);
3964 l_fm_ee_contribution varchar2(100);
3965 l_fm_total_contribution varchar2(100);
3966 l_employee_number varchar2(100);
3967 l_str_ee_eno varchar2(240);
3968 l_str_eecd varchar2(240);
3969 l_str_eecf varchar2(240);
3970 l_str_ercd varchar2(240);
3971 l_str_ercf varchar2(240);
3972 l_str_tcd varchar2(240);
3973 l_str_tcf varchar2(240);
3974 L_EE_SOC_INS_ARR_ID number;
3975 L_EE_SI_ARR_VAL number(15,2);
3976 l_subject_to_id number;
3977 l_nat_cd varchar2(30);
3978
3979 BEGIN
3980 set_currency_mask(p_business_group_id);
3981 l_input_date := '01-'||p_effective_month||'-'||p_effective_year;
3982 l_effective_date := last_day(to_date(l_input_date,'DD-MM-YYYY'));
3983 INSERT INTO fnd_sessions (session_id, effective_date)
3984 VALUES (userenv('sessionid'), l_effective_date);
3985 hr_utility.set_location('Entering FORM6 ',10);
3986
3987 /* Fetch Local Nationality */
3988 OPEN csr_get_loc_nat;
3989 FETCH csr_get_loc_nat into l_nat_cd;
3990 CLOSE csr_get_loc_nat;
3991
3992 /*Fetch Employer Name*/
3993 OPEN csr_employer_name;
3994 FETCH csr_employer_name INTO l_employer_name;
3995 CLOSE csr_employer_name;
3996
3997 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
3998 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
3999 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
4000 clob_to_blob(l_xfdf_string,l_xfdf_blob);
4001 dbms_lob.writeAppend( l_xfdf_string, length('<START>'),'<START>');
4002
4003 OPEN csr_get_def_bal_ids (p_employer_id);
4004 FETCH csr_get_def_bal_ids into l_basic_sal_id,l_accomodation_id,l_social_id,l_child_social_id,l_cost_of_living_id,l_ol1_id,l_tp_id,l_ol2_id,l_ol3_id,l_ol4_id;
4005 CLOSE csr_get_def_bal_ids;
4006
4007 OPEN csr_get_seeded_def_bal_ids ('EMPLOYEE_SOCIAL_INSURANCE_ASG_RUN'); /**** Change this to EMPLOYEE *******/
4008 FETCH csr_get_seeded_def_bal_ids into l_ee_soc_ins_id;
4009 CLOSE csr_get_seeded_def_bal_ids;
4010
4011 OPEN csr_get_seeded_def_bal_ids ('EMPLOYER_SOCIAL_INSURANCE_ASG_RUN'); /**** Change this to EMPLOYER *******/
4012 FETCH csr_get_seeded_def_bal_ids into l_er_soc_ins_id;
4013 CLOSE csr_get_seeded_def_bal_ids;
4014
4015 OPEN csr_get_seeded_def_bal_ids ('EMPLOYEE_SOCIAL_INSURANCE_ADJUSTMENT_ASG_RUN'); /**** Change this to EMPLOYEE *******/
4016 FETCH csr_get_seeded_def_bal_ids into l_ee_soc_ins_adj_id;
4017 CLOSE csr_get_seeded_def_bal_ids;
4018
4019 OPEN csr_get_seeded_def_bal_ids ('EMPLOYER_SOCIAL_INSURANCE_ADJUSTMENT_ASG_RUN'); /**** Change this to EMPLOYER *******/
4020 FETCH csr_get_seeded_def_bal_ids into l_er_soc_ins_adj_id;
4021 CLOSE csr_get_seeded_def_bal_ids;
4022
4023 OPEN csr_get_seeded_def_bal_ids ('EMPLOYEE_SOCIAL_INSURANCE_ARREARS_ASG_RUN'); /**** Change this to EMPLOYER *******/
4024 FETCH csr_get_seeded_def_bal_ids into l_ee_soc_ins_arr_id;
4025 CLOSE csr_get_seeded_def_bal_ids;
4026
4027 OPEN csr_get_seeded_def_bal_ids ('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
4028 FETCH csr_get_seeded_def_bal_ids into l_subject_to_id;
4029 CLOSE csr_get_seeded_def_bal_ids;
4030
4031 z := 1;
4032 t_store_def_bal(z).def_bal_id := l_basic_sal_id;
4033 z:= z+1;
4034 t_store_def_bal(z).def_bal_id := l_accomodation_id;
4035 z := z + 1;
4036 l_index := 2;
4037 LOOP
4038 If l_social_id is not null THEN
4039 t_store_def_bal(z).def_bal_id := l_social_id;
4040 z := z + 1;
4041 l_index := l_index + 1;
4042 EXIT WHEN z > 6;
4043 End if;
4044 If l_child_social_id is not null THEN
4045 t_store_def_bal(z).def_bal_id := l_child_social_id;
4046 z := z + 1;
4047 l_index := l_index + 1;
4048 EXIT WHEN z > 6;
4049 End if;
4050 If l_cost_of_living_id is not null THEN
4051 t_store_def_bal(z).def_bal_id := l_cost_of_living_id;
4052 z := z + 1;
4053 l_index := l_index + 1;
4054 EXIT WHEN z > 6;
4055 End if;
4056 If l_tp_id is not null THEN
4057 t_store_def_bal(z).def_bal_id := l_tp_id;
4058 z := z + 1;
4059 l_index := l_index + 1;
4060 EXIT WHEN z > 6;
4061 End if;
4062 If l_ol1_id is not null THEN
4063 t_store_def_bal(z).def_bal_id := l_ol1_id;
4064 z := z + 1;
4065 l_index := l_index + 1;
4066 EXIT WHEN z > 6;
4067 End if;
4068 If l_ol2_id is not null THEN
4069 t_store_def_bal(z).def_bal_id := l_ol2_id;
4070 z := z + 1;
4071 l_index := l_index + 1;
4072 EXIT WHEN z > 6;
4073 End if;
4074 If l_ol3_id is not null THEN
4075 t_store_def_bal(z).def_bal_id := l_ol3_id;
4076 z := z + 1;
4077 l_index := l_index + 1;
4078 EXIT WHEN z > 6;
4079 End if;
4080 If l_ol4_id is not null THEN
4081 t_store_def_bal(z).def_bal_id := l_ol4_id;
4082 z := z + 1;
4083 l_index := l_index + 1;
4084 EXIT WHEN z > 6;
4085 End if;
4086 If z < 7 then
4087 WHILE Z <=7LOOP
4088 t_store_def_bal(z).def_bal_id := NULL;
4089 z := z + 1;
4090 EXIT WHEN z >7;
4091 END LOOP;
4092 End If;
4093 EXIT WHEN z >= 7;
4094 END LOOP;
4095 i := 0;
4096 k := 0;
4097 m := 0;
4098 OPEN csr_get_emp(p_employer_id , l_effective_date , l_nat_cd);
4099 LOOP
4100 FETCH csr_get_emp INTO rec_get_emp;
4101 EXIT WHEN csr_get_emp%NOTFOUND;
4102 i := i + 1;
4103 t_store_assact(i).person_id := rec_get_emp.person_id;
4104 t_store_assact(i).assignment_action_id := rec_get_emp.assignment_action_id;
4105 t_store_assact(i).date_start := rec_get_emp.date_earned;
4106 END LOOP;
4107 CLOSE csr_get_emp;
4108 IF i > 0 THEN
4109 l_new_processed := 0;
4110 ELSE
4111 l_new_processed := 1;
4112 END IF;
4113 l_all_processed := 0;
4114 j := 1;
4115 l_total_basic := 0 ;
4116 l_total_aa := 0 ;
4117 l_total_a1 := 0 ;
4118 l_total_a2 := 0 ;
4119 l_total_a3 := 0 ;
4120 l_total_ee := 0 ;
4121 l_total_er := 0 ;
4122 l_total_total := 0 ;
4123
4124 l_tot_count := 0;
4125
4126 WHILE l_all_processed <> 1 LOOP
4127 --Writing data for new employees
4128 l_new_count := 0;
4129 l := 0;
4130 dbms_lob.writeAppend( l_xfdf_string, length('<EMP-REC>'),'<EMP-REC>');
4131 WHILE j <= i LOOP
4132 /**** RESET ALL THE VARIABLES *****/
4133 l_basic_val := 0;
4134 l_accomodation_val := 0;
4135 l_allowance_1_val := 0;
4136 l_allowance_2_val := 0;
4137 l_allowance_3_val := 0;
4138 l_allowance_4_val := 0;
4139 l_total := 0;
4140 x := 1;
4141 IF t_store_def_bal(x).def_bal_id is not null THEN
4142 l_basic_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4143 x:= x + 1;
4144 ELSE
4145 l_basic_val := 0;
4146 x:= x + 1;
4147 END IF;
4148 IF t_store_def_bal(x).def_bal_id is not null THEN
4149 l_accomodation_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4150 x:= x + 1;
4151 ELSE
4152 l_accomodation_val := 0;
4153 x:= x + 1;
4154 END IF;
4155 IF t_store_def_bal(x).def_bal_id is not null THEN
4156 l_allowance_1_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4157 x:= x + 1;
4158 ELSE
4159 l_allowance_1_val := 0;
4160 x:= x + 1;
4161 END IF;
4162 IF t_store_def_bal(x).def_bal_id is not null THEN
4163 l_allowance_2_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4164 x:= x + 1;
4165 ELSE
4166 l_allowance_2_val := 0;
4167 x:= x + 1;
4168 END IF;
4169 IF t_store_def_bal(x).def_bal_id is not null THEN
4170 l_allowance_3_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4171 ELSE
4172 l_allowance_3_val := 0;
4173 END IF;
4174
4175 pay_balance_pkg.set_context('DATE_EARNED',fnd_date.date_to_canonical(l_effective_date));
4176 pay_balance_pkg.set_context('TAX_UNIT_ID',p_employer_id);
4177
4178 l_ee_si_val := pay_balance_pkg.get_value(l_ee_soc_ins_id,t_store_assact(j).assignment_action_id);
4179 l_er_si_val := pay_balance_pkg.get_value(l_er_soc_ins_id,t_store_assact(j).assignment_action_id);
4180 l_ee_si_adj_val := pay_balance_pkg.get_value(l_ee_soc_ins_adj_id,t_store_assact(j).assignment_action_id);
4181 l_er_si_adj_val := pay_balance_pkg.get_value(l_er_soc_ins_adj_id,t_store_assact(j).assignment_action_id);
4182 l_ee_si_arr_val := pay_balance_pkg.get_value(l_ee_soc_ins_arr_id,t_store_assact(j).assignment_action_id);
4183 l_er_contribution := l_er_si_val + l_er_si_adj_val;
4184 l_ee_contribution := l_ee_si_val + l_ee_si_adj_val+l_ee_si_arr_val;
4185 l_total_contribution := l_er_contribution + l_ee_contribution;
4186
4187 l_fm_ee_contribution := to_char(abs(l_ee_contribution),lg_format_mask);
4188 l_fm_er_contribution := to_char(abs(l_er_contribution),lg_format_mask);
4189 l_fm_total_contribution := to_char(abs(l_total_contribution) ,lg_format_mask);
4190
4191 l_new_count := l_new_count+1;
4192
4193 l_fm_l_basic_val := to_char(abs(l_basic_val),lg_format_mask);
4194 l_fm_l_accomodation_val := to_char(abs(l_accomodation_val),lg_format_mask);
4195 l_fm_l_allowance_1_val := to_char(abs(l_allowance_1_val),lg_format_mask);
4196 l_fm_l_allowance_2_val := to_char(abs(l_allowance_2_val),lg_format_mask);
4197 l_fm_l_allowance_3_val := to_char(abs(l_allowance_3_val),lg_format_mask);
4198 l_fm_l_allowance_4_val := to_char(abs(l_allowance_4_val),lg_format_mask);
4199 /*l_total := l_basic_val + l_accomodation_val + l_allowance_1_val + l_allowance_2_val + l_allowance_3_val + l_allowance_4_val;*/
4200
4201 l_total := pay_balance_pkg.get_value(l_subject_to_id,t_store_assact(j).assignment_action_id);
4202
4203 l_fm_total_val := to_char(abs(l_total),lg_format_mask);
4204
4205
4206 BEGIN
4207 SELECT decode(l_ee_contribution/(abs(decode(l_ee_contribution,0,1,l_ee_contribution))*-1),1,'-'||l_fm_ee_contribution,l_fm_ee_contribution)
4208 INTO l_fm_ee_contribution
4209 FROM dual;
4210
4211 SELECT decode(l_er_contribution/(abs(decode(l_er_contribution,0,1,l_er_contribution))*-1),1,'-'||l_fm_er_contribution,l_fm_er_contribution)
4212 INTO l_fm_er_contribution
4213 FROM dual;
4214
4215 SELECT decode(l_total_contribution/(abs(decode(l_total_contribution,0,1,l_total_contribution))*-1),1,'-'||l_fm_total_contribution,l_fm_total_contribution)
4216 INTO l_fm_total_contribution
4217 FROM dual;
4218
4219 SELECT decode(l_basic_val/(abs(decode(l_basic_val,0,1,l_basic_val))*-1),1,'-'||l_fm_l_basic_val,l_fm_l_basic_val)
4220 INTO l_fm_l_basic_val
4221 FROM dual;
4222
4223 SELECT decode(l_accomodation_val/(abs(decode(l_accomodation_val,0,1,l_accomodation_val))*-1),1,'-'||l_fm_l_accomodation_val,l_fm_l_accomodation_val)
4224 INTO l_fm_l_accomodation_val
4225 FROM dual;
4226
4227 SELECT decode(l_allowance_1_val/(abs(decode(l_allowance_1_val,0,1,l_allowance_1_val))*-1),1,'-'||l_fm_l_allowance_1_val,l_fm_l_allowance_1_val)
4228 INTO l_fm_l_allowance_1_val
4229 FROM dual;
4230
4231 SELECT decode(l_allowance_2_val/(abs(decode(l_allowance_2_val,0,1,l_allowance_2_val))*-1),1,'-'||l_fm_l_allowance_2_val,l_fm_l_allowance_2_val)
4232 INTO l_fm_l_allowance_2_val
4233 FROM dual;
4234
4235 SELECT decode(l_allowance_3_val/(abs(decode(l_allowance_3_val,0,1,l_allowance_3_val))*-1),1,'-'||l_fm_l_allowance_3_val,l_fm_l_allowance_3_val)
4236 INTO l_fm_l_allowance_3_val
4237 FROM dual;
4238
4239 SELECT decode(l_allowance_4_val/(abs(decode(l_allowance_4_val,0,1,l_allowance_4_val))*-1),1,'-'||l_fm_l_allowance_4_val,l_fm_l_allowance_4_val)
4240 INTO l_fm_l_allowance_4_val
4241 FROM dual;
4242
4243 SELECT decode(l_total/(abs(decode(l_total,0,1,l_total))*-1),1,'-'||l_fm_total_val,l_fm_total_val)
4244 INTO l_fm_total_val
4245 FROM dual;
4246
4247 EXCEPTION
4248 WHEN no_data_found then
4249 null;
4250 END;
4251
4252 OPEN csr_get_person_data(t_store_assact(j).person_id,l_effective_date);
4253 FETCH csr_get_person_data INTO l_full_name, l_employee_number;
4254 CLOSE csr_get_person_data;
4255
4256 OPEN csr_get_person_asg_data(t_store_assact(j).person_id, l_effective_date);
4257 FETCH csr_get_person_asg_data into l_insured_ssn;
4258 CLOSE csr_get_person_asg_data;
4259
4260 l_str_er_name := '<ERNAME>'||l_employer_name||'</ERNAME>';
4261 l_str_year := '<YEAR>'||p_effective_year||'</YEAR>';
4262 l_str_month := '<MONTH>'||p_effective_month||'</MONTH>';
4263 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name), l_str_er_name);
4264 dbms_lob.writeAppend( l_xfdf_string, length(l_str_year), l_str_year);
4265 dbms_lob.writeAppend( l_xfdf_string, length(l_str_month), l_str_month);
4266 l := l + 1;
4267
4268 If l <> 11 then
4269 l_tot_count := l_tot_count + 1;
4270 End If;
4271 If l <> 11 then
4272 l_str_seq_no := '<SER-' || l ||'>'||l_tot_count||'</SER-'|| l || '>';
4273 l_str_ee_ssn := '<SSN-' || l || '>'||l_insured_ssn ||'</SSN-' || l || '>';
4274 l_str_ee_eno := '<ENO-' || l || '>'||l_employee_number ||'</ENO-' || l || '>';
4275 l_str_ee_name := '<EEN-'|| l || '>'|| initcap(substr(l_full_name,1,60)) ||'</EEN-'|| l || '>';
4276 l_str_bsd := '<BSD-' || l ||'>'||substr(l_fm_l_basic_val,1,length(l_fm_l_basic_val)-3)||'</BSD-'|| l || '>';
4277 l_str_bsf := '<BSF-' || l ||'>'||substr(l_fm_l_basic_val,length(l_fm_l_basic_val)-1)||'</BSF-'|| l || '>';
4278 l_str_aad := '<AAD-' || l ||'>'||substr(l_fm_l_accomodation_val,1,length(l_fm_l_accomodation_val)-3)||'</AAD-'|| l || '>';
4279 l_str_aaf := '<AAF-' || l ||'>'||substr(l_fm_l_accomodation_val,length(l_fm_l_accomodation_val)-1)||'</AAF-'|| l || '>';
4280 l_str_a1d := '<A1D-' || l ||'>'||substr(l_fm_l_allowance_1_val,1,length(l_fm_l_allowance_1_val)-3)||'</A1D-'|| l || '>';
4281 l_str_a1f := '<A1F-' || l ||'>'||substr(l_fm_l_allowance_1_val,length(l_fm_l_allowance_1_val)-1)||'</A1F-'|| l || '>';
4282 l_str_a2d := '<A2D-' || l ||'>'||substr(l_fm_l_allowance_2_val,1,length(l_fm_l_allowance_2_val)-3)||'</A2D-'|| l || '>';
4283 l_str_a2f := '<A2F-' || l ||'>'||substr(l_fm_l_allowance_2_val,length(l_fm_l_allowance_2_val)-1)||'</A2F-'|| l || '>';
4284 l_str_a3d := '<A3D-' || l ||'>'||substr(l_fm_total_val,1,length(l_fm_total_val)-3)||'</A3D-'|| l || '>';
4285 l_str_a3f := '<A3F-' || l ||'>'||substr(l_fm_total_val,length(l_fm_total_val)-1)||'</A3F-'|| l || '>';
4286 l_str_eecd := '6<EECD-' || l ||'>'||substr(l_fm_ee_contribution,1,length(l_fm_ee_contribution)-3)||'</EECD-'|| l || '>';
4287 l_str_eecf := '<EECF-' || l ||'>'||substr(l_fm_ee_contribution,length(l_fm_ee_contribution)-1)||'</EECF-'|| l || '>';
4288 l_str_ercd := '<ERCD-' || l ||'>'||substr(l_fm_er_contribution,1,length(l_fm_er_contribution)-3)||'</ERCD-'|| l || '>';
4289 l_str_ercf := '<ERCF-' || l ||'>'||substr(l_fm_er_contribution,length(l_fm_er_contribution)-1)||'</ERCF-'|| l || '>';
4290 l_str_tcd := '<TCD-' || l ||'>'||substr(l_fm_total_contribution,1,length(l_fm_total_contribution)-3)||'</TCD-'|| l || '>';
4291 l_str_tcf := '<TCF-' || l ||'>'||substr(l_fm_total_contribution,length(l_fm_total_contribution)-1)||'</TCF-'|| l || '>';
4292 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
4293 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_ssn), l_str_ee_ssn);
4294 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_eno), l_str_ee_eno);
4295 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_name), l_str_ee_name);
4296 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
4297 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
4298 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
4299 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
4300 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
4301 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
4302 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
4303 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
4304 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
4305 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
4306 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eecd), l_str_eecd);
4307 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eecf), l_str_eecf);
4308 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ercd), l_str_ercd);
4309 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ercf), l_str_ercf);
4310 dbms_lob.writeAppend( l_xfdf_string, length(l_str_tcd), l_str_tcd);
4311 dbms_lob.writeAppend( l_xfdf_string, length(l_str_tcf), l_str_tcf);
4312 l_total_basic := l_total_basic + l_basic_val;
4313 l_total_aa := l_total_aa + l_accomodation_val;
4314 l_total_a1 := l_total_a1 + l_allowance_1_val;
4315 l_total_a2 := l_total_a2 + l_allowance_2_val;
4316 l_total_a3 := l_total_a3 + l_total;
4317 l_total_ee := l_total_ee + l_ee_contribution;
4318 l_total_er := l_total_er + l_er_contribution;
4319 l_total_total := l_total_total + l_total_contribution;
4320 ElsIf l = 11 then
4321 l_fm_total_basic := to_char(abs(l_total_basic),lg_format_mask);
4322 l_fm_total_aa :=to_char(abs(l_total_aa),lg_format_mask);
4323 l_fm_total_a1 := to_char(abs(l_total_a1),lg_format_mask);
4324 l_fm_total_a2 :=to_char(abs(l_total_a2),lg_format_mask);
4325 l_fm_total_a3 := to_char(abs(l_total_a3),lg_format_mask);
4326 l_fm_total_ee := to_char(abs(l_total_ee),lg_format_mask);
4327 l_fm_total_er := to_char(abs(l_total_er),lg_format_mask);
4328 l_fm_total_total := to_char(abs(l_total_total),lg_format_mask);
4329
4330 BEGIN
4331 SELECT decode(l_total_basic/(abs(decode(l_total_basic,0,1,l_total_basic))*-1),1,'-'||l_fm_total_basic,l_fm_total_basic)
4332 INTO l_fm_total_basic
4333 FROM dual;
4334
4335 SELECT decode(l_total_aa/(abs(decode(l_total_aa,0,1,l_total_aa))*-1),1,'-'||l_fm_total_aa,l_fm_total_aa)
4336 INTO l_fm_total_aa
4337 FROM dual;
4338
4339 SELECT decode(l_total_a1/(abs(decode(l_total_a1,0,1,l_total_a1))*-1),1,'-'||l_fm_total_a1,l_fm_total_a1)
4340 INTO l_fm_total_a1
4341 FROM dual;
4342
4343 SELECT decode(l_total_a2/(abs(decode(l_total_a2,0,1,l_total_a2))*-1),1,'-'||l_fm_total_a2,l_fm_total_a2)
4344 INTO l_fm_total_a2
4345 FROM dual;
4346
4347 SELECT decode(l_total_a3/(abs(decode(l_total_a3,0,1,l_total_a3))*-1),1,'-'||l_fm_total_a3,l_fm_total_a3)
4348 INTO l_fm_total_a3
4349 FROM dual;
4350
4351 SELECT decode(l_total_ee/(abs(decode(l_total_ee,0,1,l_total_ee))*-1),1,'-'||l_fm_total_ee,l_fm_total_ee)
4352 INTO l_fm_total_ee
4353 FROM dual;
4354
4355 SELECT decode(l_total_er/(abs(decode(l_total_er,0,1,l_total_er))*-1),1,'-'||l_fm_total_er,l_fm_total_er)
4356 INTO l_fm_total_er
4357 FROM dual;
4358
4359 SELECT decode(l_total_total/(abs(decode(l_total_total,0,1,l_total_total))*-1),1,'-'||l_fm_total_total,l_fm_total_total)
4360 INTO l_fm_total_total
4361 FROM dual;
4362
4363
4364 EXCEPTION
4365 WHEN no_data_found then
4366 null;
4367 END;
4368
4369 l_str_bsd := '<BSD-' || l ||'>'||substr(l_fm_total_basic,1,length(l_fm_total_basic)-3)||'</BSD-'|| l || '>';
4370 l_str_bsf := '<BSF-' || l ||'>'||substr(l_fm_total_basic,length(l_fm_total_basic)-1)||'</BSF-'|| l || '>';
4371 l_str_aad := '<AAD-' || l ||'>'||substr(l_fm_total_aa,1,length(l_fm_total_aa)-3)||'</AAD-'|| l || '>';
4372 l_str_aaf := '<AAF-' || l ||'>'||substr(l_fm_total_aa,length(l_fm_total_aa)-1)||'</AAF-'|| l || '>';
4373 l_str_a1d := '<A1D-' || l ||'>'||substr(l_fm_total_a1,1,length(l_fm_total_a1)-3)||'</A1D-'|| l || '>';
4374 l_str_a1f := '<A1F-' || l ||'>'||substr(l_fm_total_a1,length(l_fm_total_a1)-1)||'</A1F-'|| l || '>';
4375 l_str_a2d := '<A2D-' || l ||'>'||substr(l_fm_total_a2,1,length(l_fm_total_a2)-3)||'</A2D-'|| l || '>';
4376 l_str_a2f := '<A2F-' || l ||'>'||substr(l_fm_total_a2,length(l_fm_total_a2)-1)||'</A2F-'|| l || '>';
4377 l_str_a3d := '<A3D-' || l ||'>'||substr(l_fm_total_a3,1,length(l_fm_total_a3)-3)||'</A3D-'|| l || '>';
4378 l_str_a3f := '<A3F-' || l ||'>'||substr(l_fm_total_a3,length(l_fm_total_a3)-1)||'</A3F-'|| l || '>';
4379 l_str_eecd := '<EECD-' || l ||'>'||substr(l_fm_total_ee,1,length(l_fm_total_ee)-3)||'</EECD-'|| l || '>';
4380 l_str_eecf := '<EECF-' || l ||'>'||substr(l_fm_total_ee,length(l_fm_total_ee)-1)||'</EECF-'|| l || '>';
4381 l_str_ercd := '<ERCD-' || l ||'>'||substr(l_fm_total_er,1,length(l_fm_total_er)-3)||'</ERCD-'|| l || '>';
4382 l_str_ercf := '<ERCF-' || l ||'>'||substr(l_fm_total_er,length(l_fm_total_er)-1)||'</ERCF-'|| l || '>';
4383 l_str_tcd := '<TCD-' || l ||'>'||substr(l_fm_total_total,1,length(l_fm_total_total)-3)||'</TCD-'|| l || '>';
4384 l_str_tcf := '<TCF-' || l ||'>'||substr(l_fm_total_total,length(l_fm_total_total)-1)||'</TCF-'|| l || '>';
4385 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
4386 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
4387 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
4388 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
4389 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
4390 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
4391 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
4392 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
4393 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
4394 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
4395 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eecd), l_str_eecd);
4396 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eecf), l_str_eecf);
4397 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ercd), l_str_ercd);
4398 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ercf), l_str_ercf);
4399 dbms_lob.writeAppend( l_xfdf_string, length(l_str_tcd), l_str_tcd);
4400 dbms_lob.writeAppend( l_xfdf_string, length(l_str_tcf), l_str_tcf);
4401 End If;
4402 If l <> 11 then
4403 j := j + 1;
4404 End if;
4405 IF j > i THEN
4406 l_new_processed := 1;
4407 END IF;
4408 IF l = 11/*8*/ THEN
4409 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
4410 l_total_basic := 0 ;
4411 l_total_aa := 0 ;
4412 l_total_a1 := 0 ;
4413 l_total_a2 := 0 ;
4414 l_total_a3 := 0 ;
4415 l_total_ee := 0 ;
4416 l_total_er := 0 ;
4417 l_total_total := 0 ;
4418 l := 1;
4419 EXIT;
4420 END IF;
4421 END LOOP;
4422 IF l_new_processed = 1 THEN
4423 l_all_processed := 1;
4424 If l <> 11 then
4425 l_fm_total_basic := to_char(abs(l_total_basic),lg_format_mask);
4426 l_fm_total_aa :=to_char(abs(l_total_aa),lg_format_mask);
4427 l_fm_total_a1 := to_char(abs(l_total_a1),lg_format_mask);
4428 l_fm_total_a2 :=to_char(abs(l_total_a2),lg_format_mask);
4429 l_fm_total_a3 := to_char(abs(l_total_a3),lg_format_mask);
4430 l_fm_total_ee := to_char(abs(l_total_ee),lg_format_mask);
4431 l_fm_total_er := to_char(abs(l_total_er),lg_format_mask);
4432 l_fm_total_total := to_char(abs(l_total_total),lg_format_mask);
4433
4434 BEGIN
4435 SELECT decode(l_total_basic/(abs(decode(l_total_basic,0,1,l_total_basic))*-1),1,'-'||l_fm_total_basic,l_fm_total_basic)
4436 INTO l_fm_total_basic
4437 FROM dual;
4438
4439 SELECT decode(l_total_aa/(abs(decode(l_total_aa,0,1,l_total_aa))*-1),1,'-'||l_fm_total_aa,l_fm_total_aa)
4440 INTO l_fm_total_aa
4441 FROM dual;
4442
4443 SELECT decode(l_total_a1/(abs(decode(l_total_a1,0,1,l_total_a1))*-1),1,'-'||l_fm_total_a1,l_fm_total_a1)
4444 INTO l_fm_total_a1
4445 FROM dual;
4446
4447 SELECT decode(l_total_a2/(abs(decode(l_total_a2,0,1,l_total_a2))*-1),1,'-'||l_fm_total_a2,l_fm_total_a2)
4448 INTO l_fm_total_a2
4449 FROM dual;
4450
4451 SELECT decode(l_total_a3/(abs(decode(l_total_a3,0,1,l_total_a3))*-1),1,'-'||l_fm_total_a3,l_fm_total_a3)
4452 INTO l_fm_total_a3
4453 FROM dual;
4454
4455 SELECT decode(l_total_ee/(abs(decode(l_total_ee,0,1,l_total_ee))*-1),1,'-'||l_fm_total_ee,l_fm_total_ee)
4456 INTO l_fm_total_ee
4457 FROM dual;
4458
4459 SELECT decode(l_total_er/(abs(decode(l_total_er,0,1,l_total_er))*-1),1,'-'||l_fm_total_er,l_fm_total_er)
4460 INTO l_fm_total_er
4461 FROM dual;
4462
4463 SELECT decode(l_total_total/(abs(decode(l_total_total,0,1,l_total_total))*-1),1,'-'||l_fm_total_total,l_fm_total_total)
4464 INTO l_fm_total_total
4465 FROM dual;
4466
4467
4468 EXCEPTION
4469 WHEN no_data_found then
4470 null;
4471 END;
4472
4473 l_str_bsd := '<BSD-' || 11 ||'>'||substr(l_fm_total_basic,1,length(l_fm_total_basic)-3)||'</BSD-'|| 11 || '>';
4474 l_str_bsf := '<BSF-' || 11 ||'>'||substr(l_fm_total_basic,length(l_fm_total_basic)-1)||'</BSF-'|| 11 || '>';
4475 l_str_aad := '<AAD-' || 11 ||'>'||substr(l_fm_total_aa,1,length(l_fm_total_aa)-3)||'</AAD-'|| 11 || '>';
4476 l_str_aaf := '<AAF-' || 11 ||'>'||substr(l_fm_total_aa,length(l_fm_total_aa)-1)||'</AAF-'|| 11 || '>';
4477 l_str_a1d := '<A1D-' || 11 ||'>'||substr(l_fm_total_a1,1,length(l_fm_total_a1)-3)||'</A1D-'|| 11 || '>';
4478 l_str_a1f := '<A1F-' || 11 ||'>'||substr(l_fm_total_a1,length(l_fm_total_a1)-1)||'</A1F-'|| 11 || '>';
4479 l_str_a2d := '<A2D-' || 11 ||'>'||substr(l_fm_total_a2,1,length(l_fm_total_a2)-3)||'</A2D-'|| 11 || '>';
4480 l_str_a2f := '<A2F-' || 11 ||'>'||substr(l_fm_total_a2,length(l_fm_total_a2)-1)||'</A2F-'|| 11 || '>';
4481 l_str_a3d := '<A3D-' || 11 ||'>'||substr(l_fm_total_a3,1,length(l_fm_total_a3)-3)||'</A3D-'|| 11 || '>';
4482 l_str_a3f := '<A3F-' ||11 ||'>'||substr(l_fm_total_a3,length(l_fm_total_a3)-1)||'</A3F-'|| 11 || '>';
4483 l_str_eecd := '<EECD-' || 11 ||'>'||substr(l_fm_total_ee,1,length(l_fm_total_ee)-3)||'</EECD-'|| 11 || '>';
4484 l_str_eecf := '<EECF-' ||11 ||'>'||substr(l_fm_total_ee,length(l_fm_total_ee)-1)||'</EECF-'|| 11 || '>';
4485 l_str_ercd := '<ERCD-' || 11 ||'>'||substr(l_fm_total_er,1,length(l_fm_total_er)-3)||'</ERCD-'|| 11 || '>';
4486 l_str_ercf := '<ERCF-' || 11 ||'>'||substr(l_fm_total_er,length(l_fm_total_er)-1)||'</ERCF-'|| 11 || '>';
4487 l_str_tcd := '<TCD-' || 11 ||'>'||substr(l_fm_total_total,1,length(l_fm_total_total)-3)||'</TCD-'|| 11 || '>';
4488 l_str_tcf := '<TCF-' || 11 ||'>'||substr(l_fm_total_total,length(l_fm_total_total)-1)||'</TCF-'|| 11 || '>';
4489 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
4490 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
4491 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aad), l_str_aad);
4492 dbms_lob.writeAppend( l_xfdf_string, length(l_str_aaf), l_str_aaf);
4493 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1d), l_str_a1d);
4494 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a1f), l_str_a1f);
4495 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2d), l_str_a2d);
4496 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a2f), l_str_a2f);
4497 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3d), l_str_a3d);
4498 dbms_lob.writeAppend( l_xfdf_string, length(l_str_a3f), l_str_a3f);
4499 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eecd), l_str_eecd);
4500 dbms_lob.writeAppend( l_xfdf_string, length(l_str_eecf), l_str_eecf);
4501 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ercd), l_str_ercd);
4502 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ercf), l_str_ercf);
4503 dbms_lob.writeAppend( l_xfdf_string, length(l_str_tcd), l_str_tcd);
4504 dbms_lob.writeAppend( l_xfdf_string, length(l_str_tcf), l_str_tcf);
4505 end if;
4506 If l <> 11 then
4507 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
4508 End If;
4509 EXIT;
4510 END IF;
4511 END LOOP;
4512 dbms_lob.writeAppend( l_xfdf_string, length('</START>'),'</START>');
4513 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
4514 clob_to_blob(l_xfdf_string,l_xfdf_blob);
4515 hr_utility.set_location('Finished creating xml data for Procedure FORM6 ',20);
4516 /*EXCEPTION
4517 WHEN utl_file.invalid_path then
4518 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
4519 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
4520 hr_utility.raise_error;
4521 --
4522 WHEN utl_file.invalid_mode then
4523 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
4524 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
4525 hr_utility.raise_error;
4526 --
4527 WHEN utl_file.invalid_filehandle then
4528 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
4529 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
4530 hr_utility.raise_error;
4531 --
4532 WHEN utl_file.invalid_operation then
4533 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
4534 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
4535 hr_utility.raise_error;
4536 --
4537 WHEN utl_file.read_error then
4538 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
4539 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
4540 hr_utility.raise_error;
4541 --
4542 WHEN others THEN
4543 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
4544 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
4545 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
4546 hr_utility.raise_error;*/
4547 END MCP;
4548 -------------------------------------------------------------------------------------------
4549 PROCEDURE MCF
4550 (p_request_id NUMBER
4551 ,p_report VARCHAR2
4552 ,p_business_group_id NUMBER
4553 ,p_employer_id NUMBER
4554 ,p_effective_month VARCHAR2
4555 ,p_effective_year VARCHAR2
4556 ,l_xfdf_blob OUT NOCOPY BLOB
4557 )
4558 AS
4559
4560 /*Cursor for fetching Local nationality for the BG */
4561 CURSOR csr_get_loc_nat IS
4562 SELECT org_information1
4563 FROM hr_organization_information
4564 WHERE organization_id = p_business_group_id
4565 AND org_information_context = 'AE_BG_DETAILS';
4566
4567 /*Cursor for fetching Employer Name*/
4568 CURSOR csr_employer_name IS
4569 SELECT name
4570 FROM hr_organization_units
4571 WHERE organization_id = p_employer_id;
4572
4573 /*Cursor for fetching employees*/
4574 CURSOR csr_get_emp (l_employer number , l_date date , l_nat_cd varchar2) IS
4575 SELECT distinct asg.person_id
4576 ,paa.assignment_action_id
4577 ,ppa.date_earned
4578 FROM per_all_assignments_f asg
4579 ,pay_assignment_actions paa
4580 ,pay_payroll_actions ppa
4581 ,hr_soft_coding_keyflex hscl
4582 ,per_periods_of_service pos
4583 ,per_all_people_f ppf
4584 WHERE asg.assignment_id = paa.assignment_id
4585 AND paa.payroll_action_id = ppa.payroll_action_id
4586 AND pos.period_of_service_id = asg.period_of_service_id
4587 AND ppa.action_type in ('R','Q')
4588 AND ppa.action_status = 'C'
4589 AND paa.action_status IN ('C','S')
4590 AND trunc(ppa.date_earned,'MM') = TRUNC(l_date, 'MM')
4591 AND trunc(l_date, 'MM') between trunc(asg.effective_start_date,'MM') and asg.effective_end_date
4592 AND hscl.soft_coding_keyflex_id = asg.soft_coding_keyflex_id
4593 AND hscl.segment1 = to_char(l_employer)
4594 AND ppf.person_id = asg.person_id
4595 AND trunc(l_date, 'MM') between trunc(ppf.effective_start_date,'MM') and ppf.effective_end_date
4596 AND ppf.per_information18 = l_nat_cd;
4597
4598 /* Cursor for fetching the person data */
4599 CURSOR csr_get_person_data (l_person_id number,l_effective_date date) IS
4600 SELECT ppf.full_name, ppf.employee_number
4601 FROM per_all_people_f ppf
4602 WHERE ppf.person_id = l_person_id
4603 AND l_effective_date between ppf.effective_start_date and ppf.effective_end_date;
4604
4605 /* Cursor for fetching the person's assignment data */
4606 CURSOR csr_get_person_asg_data (l_person_id number,l_effective_date date) IS
4607 SELECT hsck.segment3
4608 FROM per_all_assignments_f paf,hr_soft_coding_keyflex hsck
4609 WHERE paf.person_id = l_person_id
4610 AND paf.soft_coding_keyflex_id = hsck.soft_coding_keyflex_id
4611 AND hsck.segment1 = p_employer_id
4612 AND l_effective_date between paf.effective_start_date and paf.effective_end_date;
4613
4614 /* Cursor for fetching Defined balance ids from Org EIT */
4615 CURSOR csr_get_def_bal_ids (l_bg_id number) IS
4616 SELECT ORG_INFORMATION1,ORG_INFORMATION2,ORG_INFORMATION3,ORG_INFORMATION4,ORG_INFORMATION5,ORG_INFORMATION6,ORG_INFORMATION7,ORG_INFORMATION8,ORG_INFORMATION9,ORG_INFORMATION10
4617 FROM HR_ORGANIZATION_INFORMATION
4618 WHERE Organization_id = l_bg_id
4619 AND org_information_context = 'AE_SI_DETAILS';
4620
4621 /* Cursor to retrieve Defined Balance Id */
4622 CURSOR csr_def_bal_id(p_user_name VARCHAR2) IS
4623 SELECT u.creator_id
4624 FROM ff_user_entities u,
4625 ff_database_items d
4626 WHERE d.user_name = p_user_name
4627 AND u.user_entity_id = d.user_entity_id
4628 AND (u.legislation_code = 'AE' )
4629 AND (u.business_group_id IS NULL )
4630 AND u.creator_type = 'B';
4631
4632 TYPE def_bal_rec IS RECORD
4633 (def_bal_id NUMBER);
4634 TYPE t_def_bal_table IS TABLE OF def_bal_rec INDEX BY BINARY_INTEGER;
4635 t_store_def_bal t_def_bal_table;
4636 TYPE assact_rec IS RECORD
4637 (person_id NUMBER
4638 ,assignment_action_id NUMBER
4639 ,date_start DATE);
4640 TYPE t_assact_table IS TABLE OF assact_rec INDEX BY BINARY_INTEGER;
4641 t_store_assact t_assact_table;
4642 l_employer_name varchar2(240);
4643 l_input_date varchar2(30);
4644 l_effective_date date;
4645 l_employer_ssn number;
4646 l_basic_sal_id number;
4647 z number;
4648 l_accommodation_id number;
4649 l_social_id number;
4650 l_child_social_id number;
4651 l_tp_id number;
4652 l_ol1_id number;
4653 l_ol2_id number;
4654 l_ol3_id number;
4655 l_ol4_id number;
4656 l_cost_of_living_id number;
4657 l_index number;
4658 i number;
4659 k number;
4660 m number;
4661 j number;
4662 x number;
4663 l_new_processed number;
4664 l_all_processed number;
4665 l_new_count number;
4666 l_basic_val number(15,2);
4667 l_accommodation_val number(15,2);
4668 l_cost_of_living_val number(15,2);
4669 l_child_allow_val number(15,2);
4670 l_social_allow_val number(15,2);
4671 l number;
4672 l_full_name varchar2(240);
4673 l_emp_ssn varchar2(30);
4674 l_employee_cont number(15,2);
4675 l_employer_cont number(15,2);
4676 l_employee_adj_cont number(15,2);
4677 l_employer_adj_cont number(15,2);
4678 l_total_cont number(15,2);
4679 l_basic_total number(15,2) := 0;
4680 l_col_total number(15,2) := 0;
4681 l_social_total number(15,2) := 0;
4682 l_child_total number(15,2) := 0;
4683 l_acco_total number(15,2) := 0;
4684 l_total_allow_total number(15,2) := 0;
4685 l_total_ee_cont_total number(15,2) := 0;
4686 l_total_er_cont_total number(15,2) := 0;
4687 l_total_cont_total number(15,2) := 0;
4688 L_TOTAL number(15,2);
4689 L_FM_TOTAL_VAL varchar2(100);
4690 l_fm_l_basic_val varchar2(100);
4691 l_fm_l_accommodation_val varchar2(100);
4692 l_fm_l_cost_of_living_val varchar2(100);
4693 l_fm_l_child_allow_val varchar2(100);
4694 l_fm_l_social_allow_val varchar2(100);
4695 l_fm_l_total_allow_total varchar2(100);
4696 l_fm_l_basic_total varchar2(100);
4697 l_fm_l_col_total varchar2(100);
4698 l_fm_l_social_total varchar2(100);
4699 l_fm_l_child_total varchar2(100);
4700 l_fm_l_acco_total varchar2(100);
4701 l_fm_ee_cont_total varchar2(240);
4702 l_fm_er_cont_total varchar2(240);
4703 l_fm_total_cont varchar2(240);
4704 l_fm_total_ee_cont_total varchar2(240);
4705 l_fm_total_er_cont_total varchar2(240);
4706 l_fm_total_cont_total varchar2(240);
4707 rec_get_emp csr_get_emp%ROWTYPE;
4708 l_xfdf_string CLOB;
4709 l_str_er_name varchar2(240);
4710 l_str_er_ssn varchar2(240);
4711 l_str_ee_name varchar2(240);
4712 l_str_ee_ssn varchar2(240);
4713 l_str_year varchar2(240);
4714 l_str_month varchar2(240);
4715 l_str_seq_no varchar2(240);
4716 l_str_bsd varchar2(240);
4717 l_str_bsf varchar2(240);
4718 l_str_cold varchar2(240);
4719 l_str_colf varchar2(240);
4720 l_str_socd varchar2(240);
4721 l_str_socf varchar2(240);
4722 l_str_chd varchar2(240);
4723 l_str_chf varchar2(240);
4724 l_str_accd varchar2(240);
4725 l_str_accf varchar2(240);
4726 l_str_total_dinars varchar2(240);
4727 l_str_total_fills varchar2(240);
4728 l_str_total_allow_total_f varchar2(240);
4729 l_str_total_allow_total_d varchar2(240);
4730 l_str_ee_cont_f_total varchar2(240);
4731 l_str_ee_cont_d_total varchar2(240);
4732 l_str_er_cont_f_total varchar2(240);
4733 l_str_er_cont_d_total varchar2(240);
4734 l_str_total_cont_f varchar2(240);
4735 l_str_total_cont_d varchar2(240);
4736 l_str_bf_total varchar2(240);
4737 l_str_bd_total varchar2(240);
4738 l_str_colf_total varchar2(240);
4739 l_str_cold_total varchar2(240);
4740 l_str_socf_total varchar2(240);
4741 l_str_socd_total varchar2(240);
4742 l_str_chf_total varchar2(240);
4743 l_str_chd_total varchar2(240);
4744 l_str_accf_total varchar2(240);
4745 l_str_accd_total varchar2(240);
4746 l_str_total_ee_cont_f_total varchar2(240);
4747 l_str_total_ee_cont_d_total varchar2(240);
4748 l_str_total_er_cont_f_total varchar2(240);
4749 l_str_total_er_cont_d_total varchar2(240);
4750 l_str_total_cont_f_total varchar2(240);
4751 l_str_total_cont_d_total varchar2(240);
4752
4753 l_employee_number varchar2(100);
4754 l_str_ee_eno varchar2(240);
4755 l_defined_balance_id number;
4756 L_EMPLOYEE_ARR_CONT number(15,2);
4757 l_nat_cd varchar2(30);
4758
4759 BEGIN
4760
4761 set_currency_mask(p_business_group_id);
4762 l_input_date := '01-'||p_effective_month||'-'||p_effective_year;
4763 l_effective_date := last_day(to_date(l_input_date,'DD-MM-YYYY'));
4764 INSERT INTO fnd_sessions (session_id, effective_date)
4765 VALUES (userenv('sessionid'), l_effective_date);
4766 hr_utility.set_location('Entering Monthly Contribution Federal',10);
4767
4768 /* Fetch Local Nationality */
4769 OPEN csr_get_loc_nat;
4770 FETCH csr_get_loc_nat into l_nat_cd;
4771 CLOSE csr_get_loc_nat;
4772
4773 /*Fetch Employer Name*/
4774 OPEN csr_employer_name;
4775 FETCH csr_employer_name INTO l_employer_name;
4776 CLOSE csr_employer_name;
4777
4778 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
4779 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
4780 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
4781 clob_to_blob(l_xfdf_string,l_xfdf_blob);
4782 dbms_lob.writeAppend( l_xfdf_string, length('<START>'),'<START>');
4783
4784 /* Fetch Defined Balance IDs from EIT */
4785 OPEN csr_get_def_bal_ids (p_employer_id);
4786 FETCH csr_get_def_bal_ids into l_basic_sal_id,l_accommodation_id,l_social_id,l_child_social_id,l_cost_of_living_id,l_ol1_id,l_tp_id,l_ol2_id,l_ol3_id,l_ol4_id;
4787 CLOSE csr_get_def_bal_ids;
4788
4789 z := 1;
4790 t_store_def_bal(z).def_bal_id := l_basic_sal_id;
4791 z := z + 1;
4792 t_store_def_bal(z).def_bal_id := l_cost_of_living_id;
4793 z := z + 1;
4794 t_store_def_bal(z).def_bal_id := l_social_id;
4795 z := z + 1;
4796 t_store_def_bal(z).def_bal_id := l_child_social_id;
4797 z := z + 1;
4798 t_store_def_bal(z).def_bal_id := l_accommodation_id;
4799 z := z + 1;
4800 i := 0;
4801 k := 0;
4802 m := 0;
4803 /* Fetch Employee Details */
4804 OPEN csr_get_emp(p_employer_id , l_effective_date , l_nat_cd);
4805 LOOP
4806 FETCH csr_get_emp INTO rec_get_emp;
4807 EXIT WHEN csr_get_emp%NOTFOUND;
4808 i := i + 1;
4809 t_store_assact(i).person_id := rec_get_emp.person_id;
4810 t_store_assact(i).assignment_action_id := rec_get_emp.assignment_action_id;
4811 t_store_assact(i).date_start := rec_get_emp.date_earned;
4812 END LOOP;
4813 CLOSE csr_get_emp;
4814 IF i > 0 THEN
4815 l_new_processed := 0;
4816 ELSE
4817 l_new_processed := 1;
4818 END IF;
4819 l_all_processed := 0;
4820 j := 1;
4821 l := 1;
4822 WHILE l_all_processed <> 1 LOOP
4823 --Writing data for new employees
4824 l_new_count := 0;
4825 dbms_lob.writeAppend( l_xfdf_string, length('<EMP-REC>'),'<EMP-REC>');
4826 WHILE j <= i LOOP
4827 /**** RESET ALL THE VARIABLES *****/
4828 l_basic_val := 0;
4829 l_cost_of_living_val := 0;
4830 l_social_allow_val := 0;
4831 l_child_allow_val := 0;
4832 l_accommodation_val := 0;
4833 l_total := 0;
4834 l_employee_cont := 0;
4835 l_employer_cont := 0;
4836 l_employee_adj_cont := 0;
4837 l_employer_adj_cont := 0;
4838 x := 1;
4839 IF t_store_def_bal(x).def_bal_id is not null THEN
4840 l_basic_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4841 x:= x + 1;
4842 ELSE
4843 l_basic_val := 0;
4844 x:= x + 1;
4845 END IF;
4846 IF t_store_def_bal(x).def_bal_id is not null THEN
4847 l_cost_of_living_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4848 x:= x + 1;
4849 ELSE
4850 l_cost_of_living_val := 0;
4851 x:= x + 1;
4852 END IF;
4853 IF t_store_def_bal(x).def_bal_id is not null THEN
4854 l_social_allow_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4855 x:= x + 1;
4856 ELSE
4857 l_social_allow_val := 0;
4858 x:= x + 1;
4859 END IF;
4860 IF t_store_def_bal(x).def_bal_id is not null THEN
4861 l_child_allow_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4862 x:= x + 1;
4863 ELSE
4864 l_child_allow_val := 0;
4865 x:= x + 1;
4866 END IF;
4867 IF t_store_def_bal(x).def_bal_id is not null THEN
4868 l_accommodation_val := pay_balance_pkg.get_value(t_store_def_bal(x).def_bal_id,t_store_assact(j).assignment_action_id);
4869 x:= x + 1;
4870 ELSE
4871 l_accommodation_val := 0;
4872 x:= x + 1;
4873 END IF;
4874
4875 l_new_count := l_new_count + 1;
4876 l_fm_l_basic_val := to_char(abs(l_basic_val),lg_format_mask);
4877 l_fm_l_cost_of_living_val := to_char(abs(l_cost_of_living_val),lg_format_mask);
4878 l_fm_l_social_allow_val := to_char(abs(l_social_allow_val),lg_format_mask);
4879 l_fm_l_child_allow_val := to_char(abs(l_child_allow_val),lg_format_mask);
4880 l_fm_l_accommodation_val := to_char(abs(l_accommodation_val),lg_format_mask);
4881
4882 BEGIN
4883 SELECT decode(l_basic_val/(abs(decode(l_basic_val,0,1,l_basic_val))*-1),1,'-'||l_fm_l_basic_val,l_fm_l_basic_val)
4884 INTO l_fm_l_basic_val
4885 FROM dual;
4886
4887 SELECT decode(l_cost_of_living_val/(abs(decode(l_cost_of_living_val,0,1,l_cost_of_living_val))*-1),1,'-'||l_fm_l_cost_of_living_val,l_fm_l_cost_of_living_val)
4888 INTO l_fm_l_cost_of_living_val
4889 FROM dual;
4890
4891 SELECT decode(l_social_allow_val/(abs(decode(l_social_allow_val,0,1,l_social_allow_val))*-1),1,'-'||l_fm_l_social_allow_val,l_fm_l_social_allow_val)
4892 INTO l_fm_l_social_allow_val
4893 FROM dual;
4894
4895 SELECT decode(l_child_allow_val/(abs(decode(l_child_allow_val,0,1,l_child_allow_val))*-1),1,'-'||l_fm_l_child_allow_val,l_fm_l_child_allow_val)
4896 INTO l_fm_l_child_allow_val
4897 FROM dual;
4898
4899 SELECT decode(l_accommodation_val/(abs(decode(l_accommodation_val,0,1,l_accommodation_val))*-1),1,'-'||l_fm_l_accommodation_val,l_fm_l_accommodation_val)
4900 INTO l_fm_l_accommodation_val
4901 FROM dual;
4902
4903
4904 EXCEPTION
4905 WHEN no_data_found then
4906 null;
4907 END;
4908
4909
4910 /* Fetch balance values for Employee SI Contribution and Employer SI Contribution */
4911 pay_balance_pkg.set_context('DATE_EARNED',fnd_date.date_to_canonical(l_effective_date));
4912 pay_balance_pkg.set_context('TAX_UNIT_ID',p_employer_id);
4913
4914 OPEN csr_def_bal_id('EMPLOYEE_SOCIAL_INSURANCE_ADJUSTMENT_ASG_RUN');
4915 FETCH csr_def_bal_id INTO l_defined_balance_id;
4916 CLOSE csr_def_bal_id;
4917
4918 l_employee_adj_cont := pay_balance_pkg.get_value(l_defined_balance_id,t_store_assact(j).assignment_action_id);
4919 OPEN csr_def_bal_id('EMPLOYEE_SOCIAL_INSURANCE_ARREARS_ASG_RUN');
4920 FETCH csr_def_bal_id INTO l_defined_balance_id;
4921 CLOSE csr_def_bal_id;
4922
4923 l_employee_arr_cont := pay_balance_pkg.get_value(l_defined_balance_id,t_store_assact(j).assignment_action_id);
4924 OPEN csr_def_bal_id('EMPLOYEE_SOCIAL_INSURANCE_ASG_RUN');
4925 FETCH csr_def_bal_id INTO l_defined_balance_id;
4926 CLOSE csr_def_bal_id;
4927
4928 l_employee_cont := pay_balance_pkg.get_value(l_defined_balance_id,t_store_assact(j).assignment_action_id) + l_employee_adj_cont + l_employee_arr_cont;
4929 OPEN csr_def_bal_id('EMPLOYER_SOCIAL_INSURANCE_ADJUSTMENT_ASG_RUN');
4930 FETCH csr_def_bal_id INTO l_defined_balance_id;
4931 CLOSE csr_def_bal_id;
4932
4933 l_employer_adj_cont := pay_balance_pkg.get_value(l_defined_balance_id,t_store_assact(j).assignment_action_id);
4934 OPEN csr_def_bal_id('EMPLOYER_SOCIAL_INSURANCE_ASG_RUN');
4935 FETCH csr_def_bal_id INTO l_defined_balance_id;
4936 CLOSE csr_def_bal_id;
4937
4938 l_employer_cont := pay_balance_pkg.get_value(l_defined_balance_id,t_store_assact(j).assignment_action_id) + l_employer_adj_cont;
4939 OPEN csr_def_bal_id('SUBJECT_TO_SOCIAL_INSURANCE_ASG_RUN');
4940 FETCH csr_def_bal_id INTO l_defined_balance_id;
4941 CLOSE csr_def_bal_id;
4942
4943 l_total := pay_balance_pkg.get_value(l_defined_balance_id,t_store_assact(j).assignment_action_id);
4944 l_fm_total_val := to_char(abs(l_total),lg_format_mask);
4945 l_total_cont := l_employee_cont + l_employer_cont;
4946 l_fm_ee_cont_total := to_char(abs(l_employee_cont),lg_format_mask);
4947 l_fm_er_cont_total := to_char(abs(l_employer_cont),lg_format_mask);
4948 l_fm_total_cont := to_char(abs(l_total_cont),lg_format_mask);
4949
4950
4951 BEGIN
4952 SELECT decode(l_total/(abs(decode(l_total,0,1,l_total))*-1),1,'-'||l_fm_total_val,l_fm_total_val)
4953 INTO l_fm_total_val
4954 FROM dual;
4955
4956 SELECT decode(l_employee_cont/(abs(decode(l_employee_cont,0,1,l_employee_cont))*-1),1,'-'||l_fm_ee_cont_total,l_fm_ee_cont_total)
4957 INTO l_fm_ee_cont_total
4958 FROM dual;
4959
4960 SELECT decode(l_employer_cont/(abs(decode(l_employer_cont,0,1,l_employer_cont))*-1),1,'-'||l_fm_er_cont_total,l_fm_er_cont_total)
4961 INTO l_fm_er_cont_total
4962 FROM dual;
4963
4964 SELECT decode(l_total_cont/(abs(decode(l_total_cont,0,1,l_total_cont))*-1),1,'-'||l_fm_total_cont,l_fm_total_cont)
4965 INTO l_fm_total_cont
4966 FROM dual;
4967
4968 EXCEPTION
4969 WHEN no_data_found then
4970 null;
4971 END;
4972
4973 /* Fetch Person details */
4974 OPEN csr_get_person_data(t_store_assact(j).person_id,l_effective_date);
4975 FETCH csr_get_person_data INTO l_full_name,l_employee_number;
4976 CLOSE csr_get_person_data;
4977
4978 OPEN csr_get_person_asg_data(t_store_assact(j).person_id, l_effective_date);
4979 FETCH csr_get_person_asg_data into l_emp_ssn;
4980 CLOSE csr_get_person_asg_data;
4981
4982 l_str_er_name := '<EMPLOYER_NAME>'||l_employer_name||'</EMPLOYER_NAME>';
4983 l_str_year := '<YEAR>'||p_effective_year||'</YEAR>';
4984 l_str_month := '<MONTH>' || p_effective_month || '</MONTH>';
4985 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_name), l_str_er_name);
4986 dbms_lob.writeAppend( l_xfdf_string, length(l_str_year), l_str_year);
4987 dbms_lob.writeAppend( l_xfdf_string, length(l_str_month), l_str_month);
4988
4989 /* Write into allowances columns and Employee Details columns */
4990 l_str_seq_no := '<SER-' || l ||'>'||l||'</SER-'|| l || '>';
4991 l_str_ee_ssn := '<SSN-' || l || '>'||l_emp_ssn ||'</SSN-' || l || '>';
4992 l_str_ee_eno := '<EMPLOYEE-NUMBER-' || l || '>'||l_employee_number ||'</EMPLOYEE-NUMBER-' || l || '>';
4993 l_str_ee_name := '<EMPLOYEE-NAME-'|| l || '>'|| substr(l_full_name,1,60) ||'</EMPLOYEE-NAME-'|| l || '>';
4994 l_str_bsd := '<BASIC-SALARY-DINARS-' || l ||'>'||substr(l_fm_l_basic_val,1,length(l_fm_l_basic_val)-3)||'</BASIC-SALARY-DINARS-'|| l || '>';
4995 l_str_bsf := '<BASIC-SALARY-FILLS-' || l ||'>'||substr(l_fm_l_basic_val,length(l_fm_l_basic_val)-1)||'</BASIC-SALARY-FILLS-'|| l || '>';
4996 l_str_cold := '<COL-DINARS-'|| l || '>' ||substr(l_fm_l_cost_of_living_val,1,length(l_fm_l_cost_of_living_val)-3)||'</COL-DINARS-'|| l || '>';
4997 l_str_colf := '<COL-FILLS-'|| l || '>' ||substr(l_fm_l_cost_of_living_val,length(l_fm_l_cost_of_living_val)-1)||'</COL-FILLS-'|| l || '>';
4998 l_str_socd := '<SOCIAL-DINARS-'|| l || '>' ||substr(l_fm_l_social_allow_val,1,length(l_fm_l_social_allow_val)-3)||'</SOCIAL-DINARS-'|| l || '>';
4999 l_str_socf := '<SOCIAL-FILLS-'|| l || '>' ||substr(l_fm_l_social_allow_val,length(l_fm_l_social_allow_val)-1)||'</SOCIAL-FILLS-'|| l || '>';
5000 l_str_chd := '<CHILD-DINARS-'|| l || '>' ||substr(l_fm_l_child_allow_val,1,length(l_fm_l_child_allow_val)-3)||'</CHILD-DINARS-'|| l || '>';
5001 l_str_chf := '<CHILD-FILLS-'|| l || '>' ||substr(l_fm_l_child_allow_val,length(l_fm_l_child_allow_val)-1)||'</CHILD-FILLS-'|| l || '>';
5002 l_str_accd := '<HOUSING-DINARS-'|| l || '>' ||substr(l_fm_l_accommodation_val,1,length(l_fm_l_accommodation_val)-3)||'</HOUSING-DINARS-'|| l || '>';
5003 l_str_accf := '<HOUSING-FILLS-'|| l || '>' ||substr(l_fm_l_accommodation_val,length(l_fm_l_accommodation_val)-1)||'</HOUSING-FILLS-'|| l || '>';
5004 l_str_total_dinars := '<TOTAL-DINARS-'|| l || '>' ||substr(l_fm_total_val,1,length(l_fm_total_val)-3)||'</TOTAL-DINARS-'|| l || '>';
5005 l_str_total_fills := '<TOTAL-FILLS-'|| l || '>' ||substr(l_fm_total_val,length(l_fm_total_val)-1)||'</TOTAL-FILLS-'|| l || '>';
5006 /* Write into contribution columns */
5007 l_str_ee_cont_f_total := '<INSURANCE-CONT-FILLS-'|| l || '>' ||substr(l_fm_ee_cont_total,length(l_fm_ee_cont_total)-1)||'</INSURANCE-CONT-FILLS-'|| l || '>';
5008 l_str_ee_cont_d_total := '<INSURED-CONT-DINARS-' || l ||'>'||substr(l_fm_ee_cont_total,1,length(l_fm_ee_cont_total)-3)||'</INSURED-CONT-DINARS-'|| l || '>';
5009 l_str_er_cont_f_total := '<EMPLOYER-CONT-FILLS-'|| l || '>' ||substr(l_fm_er_cont_total,length(l_fm_er_cont_total)-1)||'</EMPLOYER-CONT-FILLS-'|| l || '>';
5010 l_str_er_cont_d_total := '<EMPLOYER-CONT-DINARS-' || l ||'>'||substr(l_fm_er_cont_total,1,length(l_fm_er_cont_total)-3)||'</EMPLOYER-CONT-DINARS-'|| l || '>';
5011 l_str_total_cont_f := '<TOTAL-CONT-FILLS-'|| l || '>' ||substr(l_fm_total_cont,length(l_fm_total_cont)-1)||'</TOTAL-CONT-FILLS-'|| l || '>';
5012 l_str_total_cont_d := '<TOTAL-CONT-DINARS-' || l ||'>'||substr(l_fm_total_cont,1,length(l_fm_total_cont)-3)||'</TOTAL-CONT-DINARS-'|| l || '>';
5013 dbms_lob.writeAppend( l_xfdf_string, length(l_str_seq_no), l_str_seq_no);
5014 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_ssn), l_str_ee_ssn);
5015 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_eno), l_str_ee_eno);
5016 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_name), l_str_ee_name);
5017 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsd), l_str_bsd);
5018 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bsf), l_str_bsf);
5019 dbms_lob.writeAppend( l_xfdf_string, length(l_str_cold), l_str_cold);
5020 dbms_lob.writeAppend( l_xfdf_string, length(l_str_colf), l_str_colf);
5021 dbms_lob.writeAppend( l_xfdf_string, length(l_str_socd), l_str_socd);
5022 dbms_lob.writeAppend( l_xfdf_string, length(l_str_socf), l_str_socf);
5023 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chd), l_str_chd);
5024 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chf), l_str_chf);
5025 dbms_lob.writeAppend( l_xfdf_string, length(l_str_accd), l_str_accd);
5026 dbms_lob.writeAppend( l_xfdf_string, length(l_str_accf), l_str_accf);
5027 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_dinars), l_str_total_dinars);
5028 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_fills), l_str_total_fills);
5029 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_cont_f_total), l_str_ee_cont_f_total);
5030 dbms_lob.writeAppend( l_xfdf_string, length(l_str_ee_cont_d_total), l_str_ee_cont_d_total);
5031 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_cont_f_total), l_str_er_cont_f_total);
5032 dbms_lob.writeAppend( l_xfdf_string, length(l_str_er_cont_d_total), l_str_er_cont_d_total);
5033 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_cont_f), l_str_total_cont_f);
5034 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_cont_d), l_str_total_cont_d);
5035 /* Calculate the total values of allowances for each row */
5036 l_basic_total := l_basic_total + l_basic_val;
5037 l_col_total := l_col_total + l_cost_of_living_val;
5038 l_social_total := l_social_total + l_social_allow_val;
5039 l_child_total := l_child_total + l_child_allow_val;
5040 l_acco_total := l_acco_total + l_accommodation_val;
5041 l_total_allow_total := l_total_allow_total + l_total;
5042 /* Calculate the total contribution of Employees and Employers, i.e., for last 6 (dinars and fills included) columns of report */
5043 l_total_ee_cont_total := l_total_ee_cont_total + l_employee_cont;
5044 l_total_er_cont_total := l_total_er_cont_total + l_employer_cont;
5045 l_total_cont_total := l_total_cont_total + l_total_cont;
5046
5047 l_fm_l_basic_total := to_char(abs(l_basic_total),lg_format_mask);
5048 l_fm_l_col_total := to_char(abs(l_basic_total),lg_format_mask);
5049 l_fm_l_social_total := to_char(abs(l_social_total),lg_format_mask);
5050 l_fm_l_child_total := to_char(abs(l_child_total),lg_format_mask);
5051 l_fm_l_acco_total := to_char(abs(l_acco_total),lg_format_mask);
5052 l_fm_l_total_allow_total := to_char(abs(l_total_allow_total),lg_format_mask);
5053 l_fm_total_ee_cont_total := to_char(abs(l_total_ee_cont_total),lg_format_mask);
5054 l_fm_total_er_cont_total := to_char(abs(l_total_er_cont_total),lg_format_mask);
5055 l_fm_total_cont_total := to_char(abs(l_total_cont_total),lg_format_mask);
5056
5057 BEGIN
5058 SELECT decode(l_basic_total/(abs(decode(l_basic_total,0,1,l_basic_total))*-1),1,'-'||l_fm_l_basic_total,l_fm_l_basic_total)
5059 INTO l_fm_l_basic_total
5060 FROM dual;
5061
5062 SELECT decode(l_basic_total/(abs(decode(l_basic_total,0,1,l_basic_total))*-1),1,'-'||l_fm_l_col_total,l_fm_l_col_total)
5063 INTO l_fm_l_col_total
5064 FROM dual;
5065
5066 SELECT decode(l_social_total/(abs(decode(l_social_total,0,1,l_social_total))*-1),1,'-'||l_fm_l_social_total,l_fm_l_social_total)
5067 INTO l_fm_l_social_total
5068 FROM dual;
5069
5070 SELECT decode(l_child_total/(abs(decode(l_child_total,0,1,l_child_total))*-1),1,'-'||l_fm_l_child_total,l_fm_l_child_total)
5071 INTO l_fm_l_child_total
5072 FROM dual;
5073
5074 SELECT decode(l_acco_total/(abs(decode(l_acco_total,0,1,l_acco_total))*-1),1,'-'||l_fm_l_acco_total,l_fm_l_acco_total)
5075 INTO l_fm_l_acco_total
5076 FROM dual;
5077
5078 SELECT decode(l_total_allow_total/(abs(decode(l_total_allow_total,0,1,l_total_allow_total))*-1),1,'-'||l_fm_l_total_allow_total,l_fm_l_total_allow_total)
5079 INTO l_fm_l_total_allow_total
5080 FROM dual;
5081
5082 SELECT decode(l_total_ee_cont_total/(abs(decode(l_total_ee_cont_total,0,1,l_total_ee_cont_total))*-1),1,'-'||l_fm_total_ee_cont_total,l_fm_total_ee_cont_total)
5083 INTO l_fm_total_ee_cont_total
5084 FROM dual;
5085
5086 SELECT decode(l_total_er_cont_total/(abs(decode(l_total_er_cont_total,0,1,l_total_er_cont_total))*-1),1,'-'||l_fm_total_er_cont_total,l_fm_total_er_cont_total)
5087 INTO l_fm_total_er_cont_total
5088 FROM dual;
5089
5090 SELECT decode(l_total_cont_total/(abs(decode(l_total_cont_total,0,1,l_total_cont_total))*-1),1,'-'||l_fm_total_cont_total,l_fm_total_cont_total)
5091 INTO l_fm_total_cont_total
5092 FROM dual;
5093
5094 EXCEPTION
5095 WHEN no_data_found then
5096 null;
5097 END;
5098
5099 j := j + 1;
5100 l := l + 1;
5101 IF j > i THEN
5102 l_new_processed := 1;
5103 END IF;
5104 IF l_new_count = 7 THEN
5105 /* Write into total of allowances total row , at the end of each page */
5106 l_str_bf_total := '<BASIC-SALARY-FILLS-TOTAL>' ||substr(l_fm_l_basic_total,length(l_fm_l_basic_total)-1)||'</BASIC-SALARY-FILLS-TOTAL>';
5107 l_str_bd_total := '<BASIC-SALARY-DINARS-TOTAL>'||substr(l_fm_l_basic_total,1,length(l_fm_l_basic_total)-3)||'</BASIC-SALARY-DINARS-TOTAL>';
5108 l_str_colf_total := '<COL-FILLS-TOTAL>' ||substr(l_fm_l_col_total,length(l_fm_l_col_total)-1)||'</COL-FILLS-TOTAL>';
5109 l_str_cold_total := '<COL-DINARS-TOTAL>'||substr(l_fm_l_col_total,1,length(l_fm_l_col_total)-3)||'</COL-DINARS-TOTAL>';
5110 l_str_socf_total := '<SOCIAL-FILLS-TOTAL>' ||substr(l_fm_l_social_total,length(l_fm_l_social_total)-1)||'</SOCIAL-FILLS-TOTAL>';
5111 l_str_socd_total := '<SOCIAL-DINARS-TOTAL>'||substr(l_fm_l_social_total,1,length(l_fm_l_social_total)-3)||'</SOCIAL-DINARS-TOTAL>';
5112 l_str_chf_total := '<CHILD-FILLS-TOTAL>' ||substr(l_fm_l_child_total,length(l_fm_l_child_total)-1)||'</CHILD-FILLS-TOTAL>';
5113 l_str_chd_total := '<CHILD-DINARS-TOTAL>'||substr(l_fm_l_child_total,1,length(l_fm_l_child_total)-3)||'</CHILD-DINARS-TOTAL>';
5114 l_str_accf_total := '<HOUSING-FILLS-TOTAL>' ||substr(l_fm_l_acco_total,length(l_fm_l_acco_total)-1)||'</HOUSING-FILLS-TOTAL>';
5115 l_str_accd_total := '<HOUSING-DINARS-TOTAL>'||substr(l_fm_l_acco_total,1,length(l_fm_l_acco_total)-3)||'</HOUSING-DINARS-TOTAL>';
5116 l_str_total_allow_total_f := '<TOTAL-FILLS-TOTAL>' ||substr(l_fm_l_total_allow_total,length(l_fm_l_total_allow_total)-1)||'</TOTAL-FILLS-TOTAL>';
5117 l_str_total_allow_total_d := '<TOTAL-DINARS-TOTAL>'||substr(l_fm_l_total_allow_total,1,length(l_fm_l_total_allow_total)-3)||'</TOTAL-DINARS-TOTAL>';
5118 /* Write into contributions total row at the end of each page */
5119 l_str_total_ee_cont_f_total := '<INSURED-FILLS-TOTAL>' ||substr(l_fm_total_ee_cont_total,length(l_fm_total_ee_cont_total)-1)||'</INSURED-FILLS-TOTAL>';
5120 l_str_total_ee_cont_d_total := '<INSURED-DINARS-TOTAL>'||substr(l_fm_total_ee_cont_total,1,length(l_fm_total_ee_cont_total)-3)||'</INSURED-DINARS-TOTAL>';
5121 l_str_total_er_cont_f_total := '<EMPLOYER-CONT-FILLS-TOTAL>' ||substr(l_fm_total_er_cont_total,length(l_fm_total_er_cont_total)-1)||'</EMPLOYER-CONT-FILLS-TOTAL>';
5122 l_str_total_er_cont_d_total := '<EMPLOYER-CONT-DINARS-TOTAL>'||substr(l_fm_total_er_cont_total,1,length(l_fm_total_er_cont_total)-3)||'</EMPLOYER-CONT-DINARS-TOTAL>';
5123 l_str_total_cont_f_total := '<TOTAL-CONT-FILLS-TOTAL>' ||substr(l_fm_total_cont_total,length(l_fm_total_cont_total)-1)||'</TOTAL-CONT-FILLS-TOTAL>';
5124 l_str_total_cont_d_total := '<TOTAL-CONT-DINARS-TOTAL>'||substr(l_fm_total_cont_total,1,length(l_fm_total_cont_total)-3)||'</TOTAL-CONT-DINARS-TOTAL>';
5125 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bf_total), l_str_bf_total);
5126 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bd_total), l_str_bd_total);
5127 dbms_lob.writeAppend( l_xfdf_string, length(l_str_colf_total), l_str_colf_total);
5128 dbms_lob.writeAppend( l_xfdf_string, length(l_str_cold_total), l_str_cold_total);
5129 dbms_lob.writeAppend( l_xfdf_string, length(l_str_socf_total), l_str_socf_total);
5130 dbms_lob.writeAppend( l_xfdf_string, length(l_str_socd_total), l_str_socd_total);
5131 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chf_total), l_str_chf_total);
5132 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chd_total), l_str_chd_total);
5133 dbms_lob.writeAppend( l_xfdf_string, length(l_str_accf_total), l_str_accf_total);
5134 dbms_lob.writeAppend( l_xfdf_string, length(l_str_accd_total), l_str_accd_total);
5135 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_allow_total_f), l_str_total_allow_total_f);
5136 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_allow_total_d), l_str_total_allow_total_d);
5137 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_ee_cont_f_total), l_str_total_ee_cont_f_total);
5138 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_ee_cont_d_total), l_str_total_ee_cont_d_total);
5139 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_er_cont_f_total), l_str_total_er_cont_f_total);
5140 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_er_cont_d_total), l_str_total_er_cont_d_total);
5141 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_cont_f_total), l_str_total_cont_f_total);
5142 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_cont_d_total), l_str_total_cont_d_total);
5143 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
5144 /* Reset total values, displayed at the end of each page */
5145 l_basic_total := 0;
5146 l_col_total := 0;
5147 l_social_total := 0;
5148 l_child_total := 0;
5149 l_acco_total := 0;
5150 l_total_allow_total := 0;
5151 l_total_ee_cont_total := 0;
5152 l_total_er_cont_total := 0;
5153 l_total_cont_total := 0;
5154 -- l := 1;
5155 EXIT;
5156 END IF;
5157 END LOOP;
5158 IF l_new_processed = 1 and l_new_count <> 7 THEN
5159 l_all_processed := 1;
5160 /* Write into total of allowances total row , at the end of each page */
5161 l_str_bf_total := '<BASIC-SALARY-FILLS-TOTAL>' ||substr(l_fm_l_basic_total,length(l_fm_l_basic_total)-1)||'</BASIC-SALARY-FILLS-TOTAL>';
5162 l_str_bd_total := '<BASIC-SALARY-DINARS-TOTAL>'||substr(l_fm_l_basic_total,1,length(l_fm_l_basic_total)-3)||'</BASIC-SALARY-DINARS-TOTAL>';
5163 l_str_colf_total := '<COL-FILLS-TOTAL>' ||substr(l_fm_l_col_total,length(l_fm_l_col_total)-1)||'</COL-FILLS-TOTAL>';
5164 l_str_cold_total := '<COL-DINARS-TOTAL>'||substr(l_fm_l_col_total,1,length(l_fm_l_col_total)-3)||'</COL-DINARS-TOTAL>';
5165 l_str_socf_total := '<SOCIAL-FILLS-TOTAL>' ||substr(l_fm_l_social_total,length(l_fm_l_social_total)-1)||'</SOCIAL-FILLS-TOTAL>';
5166 l_str_socd_total := '<SOCIAL-DINARS-TOTAL>'||substr(l_fm_l_social_total,1,length(l_fm_l_social_total)-3)||'</SOCIAL-DINARS-TOTAL>';
5167 l_str_chf_total := '<CHILD-FILLS-TOTAL>' ||substr(l_fm_l_child_total,length(l_fm_l_child_total)-1)||'</CHILD-FILLS-TOTAL>';
5168 l_str_chd_total := '<CHILD-DINARS-TOTAL>'||substr(l_fm_l_child_total,1,length(l_fm_l_child_total)-3)||'</CHILD-DINARS-TOTAL>';
5169 l_str_accf_total := '<HOUSING-FILLS-TOTAL>' ||substr(l_fm_l_acco_total,length(l_fm_l_acco_total)-1)||'</HOUSING-FILLS-TOTAL>';
5170 l_str_accd_total := '<HOUSING-DINARS-TOTAL>'||substr(l_fm_l_acco_total,1,length(l_fm_l_acco_total)-3)||'</HOUSING-DINARS-TOTAL>';
5171 l_str_total_allow_total_f := '<TOTAL-FILLS-TOTAL>' ||substr(l_fm_l_total_allow_total,length(l_fm_l_total_allow_total)-1)||'</TOTAL-FILLS-TOTAL>';
5172 l_str_total_allow_total_d := '<TOTAL-DINARS-TOTAL>'||substr(l_fm_l_total_allow_total,1,length(l_fm_l_total_allow_total)-3)||'</TOTAL-DINARS-TOTAL>';
5173 /* Write into contributions total row at the end of each page */
5174 l_str_total_ee_cont_f_total := '<INSURED-FILLS-TOTAL>' ||substr(l_fm_total_ee_cont_total,length(l_fm_total_ee_cont_total)-1)||'</INSURED-FILLS-TOTAL>';
5175 l_str_total_ee_cont_d_total := '<INSURED-DINARS-TOTAL>'||substr(l_fm_total_ee_cont_total,1,length(l_fm_total_ee_cont_total)-3)||'</INSURED-DINARS-TOTAL>';
5176 l_str_total_er_cont_f_total := '<EMPLOYER-CONT-FILLS-TOTAL>' ||substr(l_fm_total_er_cont_total,length(l_fm_total_er_cont_total)-1)||'</EMPLOYER-CONT-FILLS-TOTAL>';
5177 l_str_total_er_cont_d_total := '<EMPLOYER-CONT-DINARS-TOTAL>'||substr(l_fm_total_er_cont_total,1,length(l_fm_total_er_cont_total)-3)||'</EMPLOYER-CONT-DINARS-TOTAL>';
5178 l_str_total_cont_f_total := '<TOTAL-CONT-FILLS-TOTAL>' ||substr(l_fm_total_cont_total,length(l_fm_total_cont_total)-1)||'</TOTAL-CONT-FILLS-TOTAL>';
5179 l_str_total_cont_d_total := '<TOTAL-CONT-DINARS-TOTAL>'||substr(l_fm_total_cont_total,1,length(l_fm_total_cont_total)-3)||'</TOTAL-CONT-DINARS-TOTAL>';
5180 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bf_total), l_str_bf_total);
5181 dbms_lob.writeAppend( l_xfdf_string, length(l_str_bd_total), l_str_bd_total);
5182 dbms_lob.writeAppend( l_xfdf_string, length(l_str_colf_total), l_str_colf_total);
5183 dbms_lob.writeAppend( l_xfdf_string, length(l_str_cold_total), l_str_cold_total);
5184 dbms_lob.writeAppend( l_xfdf_string, length(l_str_socf_total), l_str_socf_total);
5185 dbms_lob.writeAppend( l_xfdf_string, length(l_str_socd_total), l_str_socd_total);
5186 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chf_total), l_str_chf_total);
5187 dbms_lob.writeAppend( l_xfdf_string, length(l_str_chd_total), l_str_chd_total);
5188 dbms_lob.writeAppend( l_xfdf_string, length(l_str_accf_total), l_str_accf_total);
5189 dbms_lob.writeAppend( l_xfdf_string, length(l_str_accd_total), l_str_accd_total);
5190 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_allow_total_f), l_str_total_allow_total_f);
5191 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_allow_total_d), l_str_total_allow_total_d);
5192 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_ee_cont_f_total), l_str_total_ee_cont_f_total);
5193 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_ee_cont_d_total), l_str_total_ee_cont_d_total);
5194 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_er_cont_f_total), l_str_total_er_cont_f_total);
5195 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_er_cont_d_total), l_str_total_er_cont_d_total);
5196 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_cont_f_total), l_str_total_cont_f_total);
5197 dbms_lob.writeAppend( l_xfdf_string, length(l_str_total_cont_d_total), l_str_total_cont_d_total);
5198 dbms_lob.writeAppend( l_xfdf_string, length('</EMP-REC>'),'</EMP-REC>');
5199 /* Reset total values, displayed at the end of each page */
5200 l_basic_total := 0;
5201 l_col_total := 0;
5202 l_social_total := 0;
5203 l_child_total := 0;
5204 l_acco_total := 0;
5205 l_total_allow_total := 0;
5206 l_total_ee_cont_total := 0;
5207 l_total_er_cont_total := 0;
5208 l_total_cont_total := 0;
5209 END IF;
5210 END LOOP;
5211 dbms_lob.writeAppend( l_xfdf_string, length('</START>'),'</START>');
5212 DBMS_LOB.CREATETEMPORARY(l_xfdf_blob,TRUE);
5213 clob_to_blob(l_xfdf_string,l_xfdf_blob);
5214 hr_utility.set_location('Finished creating xml data for Procedure Monthly Contribution Federal ',20);
5215 EXCEPTION
5216 WHEN utl_file.invalid_path then
5217 hr_utility.set_message(8301, 'GHR_38830_INVALID_UTL_FILE_PATH');
5218 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
5219 hr_utility.raise_error;
5220 --
5221 WHEN utl_file.invalid_mode then
5222 hr_utility.set_message(8301, 'GHR_38831_INVALID_FILE_MODE');
5223 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
5224 hr_utility.raise_error;
5225 --
5226 WHEN utl_file.invalid_filehandle then
5227 hr_utility.set_message(8301, 'GHR_38832_INVALID_FILE_HANDLE');
5228 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
5229 hr_utility.raise_error;
5230 --
5231 WHEN utl_file.invalid_operation then
5232 hr_utility.set_message(8301, 'GHR_38833_INVALID_OPER');
5233 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
5234 hr_utility.raise_error;
5235 --
5236 WHEN utl_file.read_error then
5237 hr_utility.set_message(8301, 'GHR_38834_FILE_READ_ERROR');
5238 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
5239 hr_utility.raise_error;
5240 --
5241 WHEN others THEN
5242 hr_utility.set_message(800,'FFU10_GENERAL_ORACLE_ERROR');
5243 hr_utility.set_message_token('2',substr(sqlerrm,1,200));
5244 fnd_file.put_line(fnd_file.log,HR_UTILITY.get_message);
5245 hr_utility.raise_error;
5246 END MCF;
5247 ---------------------------------------------------------------------------------------------------------
5248 PROCEDURE WritetoCLOB
5249 (p_xfdf_blob out nocopy blob)
5250 IS
5251 l_xfdf_string clob;
5252 l_str1 varchar2(1000);
5253 l_str2 varchar2(20);
5254 l_str3 varchar2(20);
5255 l_str4 varchar2(20);
5256 l_str5 varchar2(20);
5257 l_str6 varchar2(30);
5258 l_str7 varchar2(1000);
5259 l_str8 varchar2(240);
5260 l_str9 varchar2(240);
5261 BEGIN
5262 hr_utility.set_location('Entered Procedure Write to clob ',100);
5263 l_str1 := '<?xml version="1.0" encoding="UTF-8"?>
5264 <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
5265 <fields> ' ;
5266 l_str2 := '<field name="';
5267 l_str3 := '">';
5268 l_str4 := '<value>' ;
5269 l_str5 := '</value> </field>' ;
5270 l_str6 := '</fields> </xfdf>';
5271 l_str7 := '<?xml version="1.0" encoding="UTF-8"?>
5272 <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
5273 <fields>
5274 </fields> </xfdf>';
5275 dbms_lob.createtemporary(l_xfdf_string,FALSE,DBMS_LOB.CALL);
5276 dbms_lob.open(l_xfdf_string,dbms_lob.lob_readwrite);
5277 if vXMLTable.COUNT > 0 then
5278 dbms_lob.writeAppend( l_xfdf_string, length(l_str1), l_str1 );
5279 FOR ctr_table IN vXMLTable.FIRST .. vXMLTable.LAST LOOP
5280 l_str8 := vXMLTable(ctr_table).TagName;
5281 l_str9 := vXMLTable(ctr_table).TagValue;
5282 if (l_str9 is not null) then
5283 dbms_lob.writeAppend( l_xfdf_string, length(l_str2), l_str2 );
5284 dbms_lob.writeAppend( l_xfdf_string, length(l_str8),l_str8);
5285 dbms_lob.writeAppend( l_xfdf_string, length(l_str3), l_str3 );
5286 dbms_lob.writeAppend( l_xfdf_string, length(l_str4), l_str4 );
5287 dbms_lob.writeAppend( l_xfdf_string, length(l_str9), l_str9);
5288 dbms_lob.writeAppend( l_xfdf_string, length(l_str5), l_str5 );
5289 elsif (l_str9 is null and l_str8 is not null) then
5290 dbms_lob.writeAppend(l_xfdf_string,length(l_str2),l_str2);
5291 dbms_lob.writeAppend(l_xfdf_string,length(l_str8),l_str8);
5292 dbms_lob.writeAppend(l_xfdf_string,length(l_str3),l_str3);
5293 dbms_lob.writeAppend(l_xfdf_string,length(l_str4),l_str4);
5294 dbms_lob.writeAppend(l_xfdf_string,length(l_str5),l_str5);
5295 else
5296 null;
5297 end if;
5298 END LOOP;
5299 dbms_lob.writeAppend( l_xfdf_string, length(l_str6), l_str6 );
5300 else
5301 dbms_lob.writeAppend( l_xfdf_string, length(l_str7), l_str7 );
5302 end if;
5303 DBMS_LOB.CREATETEMPORARY(p_xfdf_blob,TRUE);
5304 clob_to_blob(l_xfdf_string,p_xfdf_blob);
5305 hr_utility.set_location('Finished Procedure Write to CLOB ,Before clob to blob ',110);
5306 --return p_xfdf_blob;
5307 EXCEPTION
5308 WHEN OTHERS then
5309 HR_UTILITY.TRACE('sqleerm ' || SQLERRM);
5310 HR_UTILITY.RAISE_ERROR;
5311 END WritetoCLOB;
5312 ----------------------------------------------------------------
5313 Procedure clob_to_blob
5314 (p_clob clob,
5315 p_blob IN OUT NOCOPY Blob)
5316 is
5317 l_length_clob number;
5318 l_offset pls_integer;
5319 l_varchar_buffer varchar2(32767);
5320 l_raw_buffer raw(32767);
5321 l_buffer_len number;
5322 l_chunk_len number;
5323 l_blob blob;
5324 g_nls_db_char varchar2(60);
5325 l_raw_buffer_len pls_integer;
5326 l_blob_offset pls_integer := 1;
5327 begin
5328 l_buffer_len := 20000;
5329 hr_utility.set_location('Entered Procedure clob to blob',120);
5330 select userenv('LANGUAGE') into g_nls_db_char from dual;
5331 l_length_clob := dbms_lob.getlength(p_clob);
5332 l_offset := 1;
5333 while l_length_clob > 0 loop
5334 hr_utility.trace('l_length_clob '|| l_length_clob);
5335 if l_length_clob < l_buffer_len then
5336 l_chunk_len := l_length_clob;
5337 else
5338 l_chunk_len := l_buffer_len;
5339 end if;
5340 DBMS_LOB.READ(p_clob,l_chunk_len,l_offset,l_varchar_buffer);
5341 fnd_file.put_line(fnd_file.log,l_varchar_buffer);
5342 --l_raw_buffer := utl_raw.cast_to_raw(l_varchar_buffer);
5343 l_raw_buffer := utl_raw.convert(utl_raw.cast_to_raw(l_varchar_buffer),'American_America.UTF8',g_nls_db_char);
5344 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));
5345 hr_utility.trace('l_varchar_buffer '|| l_varchar_buffer);
5346 --dbms_lob.write(p_blob,l_chunk_len, l_offset, l_raw_buffer);
5347 dbms_lob.write(p_blob,l_raw_buffer_len, l_blob_offset, l_raw_buffer);
5348 l_blob_offset := l_blob_offset + l_raw_buffer_len;
5349 l_offset := l_offset + l_chunk_len;
5350 l_length_clob := l_length_clob - l_chunk_len;
5351 hr_utility.trace('l_length_blob '|| dbms_lob.getlength(p_blob));
5352 end loop;
5353 hr_utility.set_location('Finished Procedure clob to blob ',130);
5354 end clob_to_blob;
5355 ------------------------------------------------------------------
5356 Procedure fetch_pdf_blob
5357 (p_report in varchar2,
5358 p_pdf_blob OUT NOCOPY blob)
5359 IS
5360 BEGIN
5361 IF (p_report='FORM1') THEN
5362 Select file_data
5363 Into p_pdf_blob
5364 From fnd_lobs
5365 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_F1_ar_AE.pdf');
5366 ELSIF (p_report = 'FORM2') THEN
5367 Select file_data
5368 Into p_pdf_blob
5369 From fnd_lobs
5370 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_F2_ar_AE.pdf');
5371 ELSIF (p_report ='FORM6') THEN
5372 Select file_data
5373 Into p_pdf_blob
5374 From fnd_lobs
5375 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_F6_ar_AE.rtf');
5376 ELSIF (p_report ='MCP') THEN
5377 Select file_data
5378 Into p_pdf_blob
5379 From fnd_lobs
5380 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_MCP_ar_AE.rtf');
5381 ELSIF (p_report ='MCF') THEN
5382 Select file_data
5383 Into p_pdf_blob
5384 From fnd_lobs
5385 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_MCF_ar_AE.rtf');
5386 ELSIF (p_report ='FORM7') THEN
5387 Select file_data
5388 Into p_pdf_blob
5389 From fnd_lobs
5390 Where file_id = (select max(file_id) from fnd_lobs where file_name like '%PAY_F7_ar_AE.rtf');
5391 END IF;
5392 EXCEPTION
5393 when no_data_found then
5394 null;
5395 END fetch_pdf_blob;
5396 -------------------------------------------------------------------
5397 END pay_ae_SI_reports;