[Home] [Help]
PACKAGE BODY: APPS.PAY_GB_ENROLL_PEN_REPORTING
Source
1 PACKAGE body PAY_GB_ENROLL_PEN_REPORTING
2 /* $Header: pygbpaer.pkb 120.0.12020000.6 2012/11/21 13:18:13 ssanjays noship $ */
3 AS
4
5
6 CURSOR cur_element_entry_assignment (p_end_date date,p_payroll_id pay_all_payrolls_f.payroll_id%type) IS
7 SELECT pay_element_entries_f.element_entry_id element_entry_id, per_all_assignments_f.assignment_id assignment_id
8 FROM pay_element_entries_f, pay_element_types_f , per_all_assignments_f,PER_ASSIGNMENT_STATUS_TYPES PAST
9 WHERE pay_element_entries_f.element_type_id = pay_element_types_f.element_type_id
10 AND per_all_assignments_f.ASSIGNMENT_STATUS_TYPE_ID = PAST.ASSIGNMENT_STATUS_TYPE_ID
11 AND PAST.PER_SYSTEM_STATUS ='ACTIVE_ASSIGN'
12 and pay_element_entries_f.assignment_id = per_all_assignments_f.assignment_id
13 and pay_element_types_f.ELEMENT_NAME like 'Pensions Information'
14 and per_all_assignments_f.payroll_id = p_payroll_id
15 and p_end_date between pay_element_entries_f.effective_start_date and pay_element_entries_f.effective_end_date
16 and p_end_date between pay_element_types_f.effective_start_date and pay_element_types_f.effective_end_date
17 and p_end_date between per_all_assignments_f.effective_start_date and per_all_assignments_f.effective_end_date;
18
19 cursor cur_input_id is
20 select
21 MAX(DECODE ( name , 'Qualifying Scheme Name', INPUT_VALUE_ID )) qualifying_scheme_name,
22 MAX(DECODE ( name , 'Auto Enrollment Date', INPUT_VALUE_ID )) auto_enrollment_date,
23 MAX(DECODE ( name , 'Pension Classification', INPUT_VALUE_ID )) pension_classification,
24 MAX(DECODE ( name , 'Opt Out Period End Date', INPUT_VALUE_ID )) opt_out_period_end_date,
25 MAX(DECODE ( name , 'Total Earning PRP', INPUT_VALUE_ID )) total_earning_PRP,
26 MAX(DECODE ( name , 'Postponement Type', INPUT_VALUE_ID )) postponement_type,
27 MAX(DECODE ( name , 'Postponement End Date', INPUT_VALUE_ID )) postponement_end_date,
28 MAX(DECODE ( name , 'Qualifying scheme exists', INPUT_VALUE_ID )) qualifying_scheme_exists,
29 MAX(DECODE ( name , 'Opt in Date', INPUT_VALUE_ID )) opt_in_Date,
30 MAX(DECODE ( name , 'Eligible Job Holder Date', INPUT_VALUE_ID )) first_found_elig_date,
31 MAX(DECODE ( name , 'Postponement End Date', INPUT_VALUE_ID )) post_period_end_date
32 FROM
33 (SELECT input_value_id, name from pay_input_values_f);
34
35
36 cursor cur_input_id_value(p_input_id cur_input_id%rowtype,p_elem_entry_id pay_element_entry_values_f.element_entry_id%type,p_end_date date) is
37 select
38 MAX(DECODE ( input_value_id , p_input_id.qualifying_scheme_name, SCREEN_ENTRY_VALUE )) qualifying_scheme_name,
39 MAX(DECODE ( input_value_id , p_input_id.auto_enrollment_date, SCREEN_ENTRY_VALUE )) auto_enrollment_date,
40 MAX(DECODE ( input_value_id , p_input_id.pension_classification, SCREEN_ENTRY_VALUE )) pension_classification,
41 MAX(DECODE ( input_value_id , p_input_id.opt_out_period_end_date, SCREEN_ENTRY_VALUE )) opt_out_period_end_date,
42 MAX(DECODE ( input_value_id , p_input_id.total_earning_PRP, SCREEN_ENTRY_VALUE )) total_earning_PRP,
43 MAX(DECODE ( input_value_id , p_input_id.postponement_type, SCREEN_ENTRY_VALUE )) postponement_type,
44 MAX(DECODE ( input_value_id , p_input_id.postponement_end_date, SCREEN_ENTRY_VALUE )) postponement_end_date,
45 MAX(DECODE ( input_value_id , p_input_id.qualifying_scheme_exists, SCREEN_ENTRY_VALUE )) qualifying_scheme_exists,
46 MAX(DECODE ( input_value_id , p_input_id.first_found_elig_date, SCREEN_ENTRY_VALUE )) first_found_elig_date,
47 MAX(DECODE ( input_value_id , p_input_id.opt_in_Date, SCREEN_ENTRY_VALUE ))opt_in_date,
48 MAX(DECODE ( input_value_id , p_input_id.post_period_end_date, SCREEN_ENTRY_VALUE ))post_period_end_date
49
50 FROM
51 (SELECT input_value_id,SCREEN_ENTRY_VALUE from pay_element_entry_values_f
52 where element_entry_id = p_elem_entry_id
53 and p_end_date between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE
54 );
55
56 cursor cur_person_assign_num(p_assignment_id per_all_assignments_f.assignment_id%type,p_end_date date) is
57 SELECT assignment_number,person_id
58 FROM per_all_assignments_f
59 WHERE assignment_id = p_assignment_id
60 AND p_end_date between effective_start_date and effective_end_date;
61
62 cursor cur_get_input_time(p_period number,p_payroll_id per_time_periods.payroll_id%type) is
63 select start_date,end_date,period_name
64 from per_time_periods
65 where TIME_PERIOD_ID=p_period and payroll_id =p_payroll_id;
66
67 cursor cur_payroll_name(p_payroll number,p_end_date date) is
68 select payroll_name from pay_all_payrolls_f where payroll_id = p_payroll
69 AND p_end_date between effective_start_date and effective_end_date;
70
71
72 procedure generate( p_employer NUMBER
73 ,p_payroll NUMBER
74 ,p_period NUMBER
75 ,p_template_name VARCHAR2
76 ,p_xml OUT NOCOPY CLOB) as
77
78 l_string VARCHAR2(32767) := NULL;
79 l_xml CLOB;
80 EOL VARCHAR2(5) := fnd_global.local_chr(10);
81 --l_start_date date;-- default to_date ('2012-08-01', 'yyyy-mm-dd');
82 --l_end_date date;-- default to_date ('2012-08-31', 'yyyy-mm-dd');
83
84 l_cur_element_entry_assignment cur_element_entry_assignment%ROWTYPE;
85 l_full_name per_all_people_f.full_name%TYPE;
86 l_age number;
87 l_auto_enrol_date/*auto_en_date*/ pay_element_entry_values_f.screen_entry_value%TYPE;
88 l_total_earning_prp pay_element_entry_values_f.screen_entry_value%TYPE;
89 l_opt_out_date pay_element_entry_values_f.screen_entry_value%TYPE;
90 l_emp_classification pay_element_entry_values_f.screen_entry_value%TYPE;
91 l_pension_scheme_name pay_element_entry_values_f.screen_entry_value%TYPE;
92 l_payroll_name cur_payroll_name%rowtype;
93 l_period/*p_name*/ cur_get_input_time%rowtype;
94 l_input_id_value cur_input_id_value%rowtype;
95 l_input_id cur_input_id%rowtype;
96 l_person_assign_num cur_person_assign_num%rowtype;
97
98
99 begin
100
101
102 dbms_lob.createtemporary(l_xml,FALSE,DBMS_LOB.CALL);
103 dbms_lob.open(l_xml,dbms_lob.lob_readwrite);
104
105 open cur_get_input_time(p_period,p_payroll);
106 fetch cur_get_input_time into l_period ;
107 close cur_get_input_time;
108
109 open cur_payroll_name(p_payroll,l_period.end_date);
110 fetch cur_payroll_name into l_payroll_name ;
111 close cur_payroll_name;
112
113
114 open cur_input_id;
115 fetch cur_input_id into l_input_id ;
116 close cur_input_id;
117
118 hr_utility.trace('...No Postponement present......');
119
120 if (p_template_name='PYGBPAERE') then
121 l_string := l_string || '<PYGBPAERE>'||EOL;
122 l_string := l_string || '<P_PAYROLL_ACTION_ID>'||p_payroll||'</P_PAYROLL_ACTION_ID>'||EOL;
123 l_string := l_string || '<P_PAY_START_DATE>'||l_period.start_date||'</P_PAY_START_DATE>'||EOL;
124 l_string := l_string || '<P_PAY_END_DATE>'||l_period.end_date||'</P_PAY_END_DATE>'||EOL;
125 l_string := l_string || '<P_PRP_START_DATE>'||l_period.start_date||'</P_PRP_START_DATE>'||EOL;
126 l_string := l_string || '<P_PRP_END_DATE>'||l_period.end_date||'</P_PRP_END_DATE>'||EOL;
127 l_string := l_string || '<P_MODE>'||0||'</P_MODE>'||EOL;
128 l_string := l_string || '<P_PAYROLL_NAME>'||l_payroll_name.payroll_name||'</P_PAYROLL_NAME>'||EOL;
129 l_string := l_string || '<P_PERIOD_NAME>'||l_period.period_name||'</P_PERIOD_NAME>'||EOL;
130 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
131 l_string := null;
132
133 OPEN cur_element_entry_assignment(l_period.end_date,p_payroll);
134
135 FETCH cur_element_entry_assignment
136 INTO l_cur_element_entry_assignment;
137 CLOSE cur_element_entry_assignment;
138
139
140
141 FOR l_cur_element_entry_assignment IN cur_element_entry_assignment(l_period.end_date,p_payroll) LOOP
142
143 open cur_input_id_value(l_input_id,l_cur_element_entry_assignment.element_entry_id,l_period.end_date);
144 fetch cur_input_id_value into l_input_id_value;
145 close cur_input_id_value;
146
147
148 IF (l_input_id_value.qualifying_scheme_name IS NOT NULL) and
149 (fnd_date.canonical_to_date(l_input_id_value.auto_enrollment_date) between l_period.start_date and l_period.end_date) THEN
150
151 open cur_person_assign_num(l_cur_element_entry_assignment.assignment_id,l_period.end_date);
152 fetch cur_person_assign_num into l_person_assign_num;
153 close cur_person_assign_num;
154
155 SELECT
156 (full_name)
157 , extract (year FROM sysdate) - extract (year FROM date_of_birth)
158 INTO l_full_name
159 , l_age
160 FROM per_all_people_f
161 WHERE person_id = l_person_assign_num.person_id
162 AND l_period.end_date between effective_start_date and effective_end_date;
163
164 l_string := l_string || '<G_EMP>'||EOL;
165 l_string := l_string || '<ASSIGNMENT_NUMBER>'||l_person_assign_num.assignment_number||'</ASSIGNMENT_NUMBER>'||EOL;
166 l_string := l_string || '<FULL_NAME>'||l_full_name||'</FULL_NAME>'||EOL;
167 l_string := l_string || '<AGE>'||l_age||'</AGE>'||EOL;
168 l_string := l_string || '<AUTO_ENROLLEMENT_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.auto_enrollment_date))||'</AUTO_ENROLLEMENT_DATE>'||EOL;
169 l_string := l_string || '<TOTAL_EAR_PRP>'||l_input_id_value.total_earning_PRP||'</TOTAL_EAR_PRP>'||EOL;/*total_earning_prp*/
170 l_string := l_string || '<EMPLOYEE_CLASSIFICATION>'||NVL(hr_general.decode_lookup('GB_PENSION_WORKER_TYPES',l_input_id_value.pension_classification),'N/A')||'</EMPLOYEE_CLASSIFICATION>'||EOL;
171 l_string := l_string || '<OPT_OUT_END_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.opt_out_period_end_date))||'</OPT_OUT_END_DATE>'||EOL;
172 l_string := l_string || '<PENSION_SCHEME_NAME>'||l_input_id_value.qualifying_scheme_name||'</PENSION_SCHEME_NAME>'||EOL;
173 l_string := l_string || '</G_EMP>'||EOL;
174
175 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
176 l_string := null;
177 END IF;
178 END LOOP;
179 l_string := l_string || '</PYGBPAERE>'||EOL;
180
181 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
182 l_string := null;
183
184
185 elsif (p_template_name='PYGBPAEQE') then
186
187 l_string := l_string || '<PYGBPAEQE>'||EOL;
188 l_string := l_string || '<P_PAYROLL_ACTION_ID>'||p_payroll||'</P_PAYROLL_ACTION_ID>'||EOL;
189 l_string := l_string || '<P_PAY_START_DATE>'||l_period.start_date||'</P_PAY_START_DATE>'||EOL;
190 l_string := l_string || '<P_PAY_END_DATE>'||l_period.end_date||'</P_PAY_END_DATE>'||EOL;
191 l_string := l_string || '<P_PRP_START_DATE>'||l_period.start_date||'</P_PRP_START_DATE>'||EOL;
192 l_string := l_string || '<P_PRP_END_DATE>'||l_period.end_date||'</P_PRP_END_DATE>'||EOL;
193 l_string := l_string || '<P_MODE>'||0||'</P_MODE>'||EOL;
194 l_string := l_string || '<P_PAYROLL_NAME>'||l_payroll_name.payroll_name||'</P_PAYROLL_NAME>'||EOL;
195 l_string := l_string || '<P_PERIOD_NAME>'||l_period.period_name||'</P_PERIOD_NAME>'||EOL;
196
197 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
198 l_string := null;
199
200 OPEN cur_element_entry_assignment(l_period.end_date,p_payroll);
201
202 FETCH cur_element_entry_assignment
203 INTO l_cur_element_entry_assignment;
204 CLOSE cur_element_entry_assignment;
205
206 FOR l_cur_element_entry_assignment IN cur_element_entry_assignment(l_period.end_date,p_payroll) LOOP
207
208 open cur_input_id_value(l_input_id,l_cur_element_entry_assignment.element_entry_id,l_period.end_date);
209 fetch cur_input_id_value into l_input_id_value;
210 close cur_input_id_value;
211
212
213 IF ((l_input_id_value.qualifying_scheme_name IS NOT NULL ) and (l_input_id_value.auto_enrollment_date is null )) THEN
214
215 open cur_person_assign_num(l_cur_element_entry_assignment.assignment_id,l_period.end_date);
216 fetch cur_person_assign_num into l_person_assign_num;
217 close cur_person_assign_num;
218
219 SELECT
220 (full_name)
221 , extract (year FROM sysdate) - extract (year FROM date_of_birth)
222 INTO l_full_name
223 , l_age
224 FROM per_all_people_f
225 WHERE person_id = l_person_assign_num.person_id
226 AND l_period.end_date between effective_start_date and effective_end_date;
227
228 l_string := l_string || '<G_EMP>'||EOL;
229 l_string := l_string || '<ASSIGNMENT_NUMBER>'||l_person_assign_num.assignment_number||'</ASSIGNMENT_NUMBER>'||EOL;
230 l_string := l_string || '<FULL_NAME>'||l_full_name||'</FULL_NAME>'||EOL;
231 l_string := l_string || '<AGE>'||l_age||'</AGE>'||EOL;
232 l_string := l_string || '<EMPLOYEE_CLASSIFICATION>'||NVL(hr_general.decode_lookup('GB_PENSION_WORKER_TYPES',l_input_id_value.pension_classification),'N/A')||'</EMPLOYEE_CLASSIFICATION>'||EOL;
233 l_string := l_string || '<PENSION_SCHEME_NAME>'||l_input_id_value.qualifying_scheme_name||'</PENSION_SCHEME_NAME>'||EOL;
234 --l_string := l_string || '<AUTO_ENROLLEMENT_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.auto_enrollment_date))||'</AUTO_ENROLLEMENT_DATE>'||EOL;
235 l_string := l_string || '</G_EMP>'||EOL;
236
237 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
238 l_string := null;
239 END IF;
240 END LOOP;
241 l_string := l_string || '</PYGBPAEQE>'||EOL;
242
243 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
244 l_string := null;
245
246
247 elsif (p_template_name='PYGBPAENRE') then
248
249 l_string := l_string || '<PYGBPAENRE>'||EOL;
250 l_string := l_string || '<P_PAYROLL_ACTION_ID>'||p_payroll||'</P_PAYROLL_ACTION_ID>'||EOL;
251 l_string := l_string || '<P_PAY_START_DATE>'||l_period.start_date||'</P_PAY_START_DATE>'||EOL;
252 l_string := l_string || '<P_PAY_END_DATE>'||l_period.end_date||'</P_PAY_END_DATE>'||EOL;
253 l_string := l_string || '<P_PRP_START_DATE>'||l_period.start_date||'</P_PRP_START_DATE>'||EOL;
254 l_string := l_string || '<P_PRP_END_DATE>'||l_period.end_date||'</P_PRP_END_DATE>'||EOL;
255 l_string := l_string || '<P_MODE>'||0||'</P_MODE>'||EOL;
256 l_string := l_string || '<P_PAYROLL_NAME>'||l_payroll_name.payroll_name||'</P_PAYROLL_NAME>'||EOL;
257 l_string := l_string || '<P_PERIOD_NAME>'||l_period.period_name||'</P_PERIOD_NAME>'||EOL;
258
259 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
260 l_string := null;
261
262
263 OPEN cur_element_entry_assignment(l_period.end_date,p_payroll);
264 FETCH cur_element_entry_assignment
265 INTO l_cur_element_entry_assignment;
266 CLOSE cur_element_entry_assignment;
267
268
269
270 FOR l_cur_element_entry_assignment IN cur_element_entry_assignment(l_period.end_date,p_payroll) LOOP
271
272 open cur_input_id_value(l_input_id,l_cur_element_entry_assignment.element_entry_id,l_period.end_date);
273 fetch cur_input_id_value into l_input_id_value;
274 close cur_input_id_value;
275
276 open cur_person_assign_num(l_cur_element_entry_assignment.assignment_id,l_period.end_date);
277 fetch cur_person_assign_num into l_person_assign_num;
278 close cur_person_assign_num;
279
280 SELECT
281 (full_name)
282 , extract (year FROM sysdate) - extract (year FROM date_of_birth)
283 INTO l_full_name
284 , l_age
285 FROM per_all_people_f
286 WHERE person_id = l_person_assign_num.person_id
287 AND l_period.end_date between effective_start_date and effective_end_date;
288
289
290 if (
291 (fnd_date.canonical_to_date(l_input_id_value.postponement_end_date) >=l_period.end_date) and
292 l_input_id_value.auto_enrollment_date is null and
293 l_input_id_value.postponement_type ='ELIGIBLE JOB HOLDER DEFERMENT'
294 ) then
295 l_string := l_string || '<G_EMP1>'||EOL;
296 l_string := l_string || '<ASSIGNMENT_NUMBER>'||l_person_assign_num.assignment_number||'</ASSIGNMENT_NUMBER>'||EOL;
297 l_string := l_string || '<FULL_NAME>'||l_full_name||'</FULL_NAME>'||EOL;
298 l_string := l_string || '<EMPLOYEE_CLASSIFICATION>'||NVL(hr_general.decode_lookup('GB_PENSION_WORKER_TYPES',l_input_id_value.pension_classification),'N/A')||'</EMPLOYEE_CLASSIFICATION>'||EOL;
299 l_string := l_string || '<FIRST_FOUND_ELIG_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.first_found_elig_date))||'</FIRST_FOUND_ELIG_DATE>'||EOL;
300 l_string := l_string || '<POST_PERIOD_END_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.post_period_end_date))||'</POST_PERIOD_END_DATE>'||EOL;
301 l_string := l_string || '</G_EMP1>'||EOL;
302
303 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
304 l_string := null;
305 end if ;
306
307 if (l_input_id_value.pension_classification IN ('NON ELIGIBLE JOB HOLDER','WORKER'))
308 then
309 l_string := l_string || '<G_EMP2>'||EOL;
310 l_string := l_string || '<ASSIGNMENT_NUMBER>'||l_person_assign_num.assignment_number||'</ASSIGNMENT_NUMBER>'||EOL;
311 l_string := l_string || '<FULL_NAME>'||l_full_name||'</FULL_NAME>'||EOL;
312 l_string := l_string || '<AGE>'||l_age||'</AGE>'||EOL;
313 l_string := l_string || '<TOTAL_EAR_PRP>'||NVL(l_input_id_value.total_earning_PRP,'N/A')||'</TOTAL_EAR_PRP>'||EOL;
314 l_string := l_string || '<EMPLOYEE_CLASSIFICATION>'||NVL(hr_general.decode_lookup('GB_PENSION_WORKER_TYPES',l_input_id_value.pension_classification),'N/A')||'</EMPLOYEE_CLASSIFICATION>'||EOL;
315 l_string := l_string || '</G_EMP2>'||EOL;
316
317 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
318 l_string := null;
319 end if;
320
321 if (
322 (fnd_date.canonical_to_date(l_input_id_value.postponement_end_date) >=l_period.end_date)
323 --AND l_input_id_value.pension_classification IS NULL
324 AND l_input_id_value.auto_enrollment_date IS NULL
325 AND l_input_id_value.postponement_type ='WORKER DEFERMENT'
326 ) then
327 l_string := l_string || '<G_EMP3>'||EOL;
328 l_string := l_string || '<ASSIGNMENT_NUMBER>'||l_person_assign_num.assignment_number||'</ASSIGNMENT_NUMBER>'||EOL;
329 l_string := l_string || '<FULL_NAME>'||l_full_name||'</FULL_NAME>'||EOL;
330 l_string := l_string || '<POST_PERIOD_END_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.post_period_end_date))||'</POST_PERIOD_END_DATE>'||EOL;
331 l_string := l_string || '<EMPLOYEE_CLASSIFICATION>'||NVL(hr_general.decode_lookup('GB_PENSION_WORKER_TYPES',l_input_id_value.pension_classification),'N/A')||'</EMPLOYEE_CLASSIFICATION>'||EOL;
332 l_string := l_string || '</G_EMP3>'||EOL;
333
334 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
335 l_string := null;
336 end if;
337
338 END LOOP;
339 l_string := l_string || '</PYGBPAENRE>'||EOL;
340 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
341 l_string := null;
342
343
344
345 elsif (p_template_name='PYGBPAOIE') then
346
347 l_string := l_string || '<PYGBPAOIE>'||EOL;
348 l_string := l_string || '<P_PAYROLL_ACTION_ID>'||p_payroll||'</P_PAYROLL_ACTION_ID>'||EOL;
349 l_string := l_string || '<P_PAY_START_DATE>'||l_period.start_date||'</P_PAY_START_DATE>'||EOL;
350 l_string := l_string || '<P_PAY_END_DATE>'||l_period.end_date||'</P_PAY_END_DATE>'||EOL;
351 l_string := l_string || '<P_PRP_START_DATE>'||l_period.start_date||'</P_PRP_START_DATE>'||EOL;
352 l_string := l_string || '<P_PRP_END_DATE>'||l_period.end_date||'</P_PRP_END_DATE>'||EOL;
353 l_string := l_string || '<P_MODE>'||0||'</P_MODE>'||EOL;
354 l_string := l_string || '<P_PAYROLL_NAME>'||l_payroll_name.payroll_name||'</P_PAYROLL_NAME>'||EOL;
355 l_string := l_string || '<P_PERIOD_NAME>'||l_period.period_name||'</P_PERIOD_NAME>'||EOL;
356
357 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
358 l_string := null;
359
360 OPEN cur_element_entry_assignment(l_period.end_date,p_payroll);
361
362 FETCH cur_element_entry_assignment
363 INTO l_cur_element_entry_assignment;
364 CLOSE cur_element_entry_assignment;
365
366 FOR l_cur_element_entry_assignment IN cur_element_entry_assignment(l_period.end_date,p_payroll) LOOP
367
368 open cur_input_id_value(l_input_id,l_cur_element_entry_assignment.element_entry_id,l_period.end_date);
369 fetch cur_input_id_value into l_input_id_value;
370 close cur_input_id_value;
371
372
373 open cur_person_assign_num(l_cur_element_entry_assignment.assignment_id,l_period.end_date);
374 fetch cur_person_assign_num into l_person_assign_num;
375 close cur_person_assign_num;
376
377 SELECT
378 (full_name)
379 , extract (year FROM sysdate) - extract (year FROM date_of_birth)
380 INTO l_full_name
381 , l_age
382 FROM per_all_people_f
383 WHERE person_id = l_person_assign_num.person_id
384 AND l_period.end_date between effective_start_date and effective_end_date;
385
386 -- if ( l_input_id_value.pension_classification IN ('Non Eligible Job Holder')
387 if ( fnd_date.canonical_to_date(l_input_id_value.opt_in_date)
388 BETWEEN l_period.start_date AND l_period.end_date) then
389 l_string := l_string || '<G_EMP4>'||EOL;
390 l_string := l_string || '<ASSIGNMENT_NUMBER>'||l_person_assign_num.assignment_number||'</ASSIGNMENT_NUMBER>'||EOL;
391 l_string := l_string || '<FULL_NAME>'||l_full_name||'</FULL_NAME>'||EOL;
392 l_string := l_string || '<EMPLOYEE_CLASSIFICATION>'||NVL(hr_general.decode_lookup('GB_PENSION_WORKER_TYPES',l_input_id_value.pension_classification),'N/A')||'</EMPLOYEE_CLASSIFICATION>'||EOL;
393 l_string := l_string || '<OPT_IN_DATE>'||fnd_date.date_to_displaydate(fnd_date.canonical_to_date(l_input_id_value.opt_in_Date))||'</OPT_IN_DATE>'||EOL;
394 l_string := l_string || '</G_EMP4>'||EOL;
395
396 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
397 l_string := null;
398 END IF;
399 END LOOP;
400 l_string := l_string || '</PYGBPAOIE>'||EOL;
401
402 dbms_lob.writeAppend( l_xml, length(l_string), l_string );
403 l_string := null;
404 end if;
405
406
407 -- dbms_lob.createtemporary(l_xml,FALSE,DBMS_LOB.CALL);
408 -- dbms_lob.open(l_xml,dbms_lob.lob_readwrite);
409 -- dbms_lob.writeAppend( l_xml, length(l_string), l_string);
410 p_xml := l_xml;
411 dbms_lob.freeTemporary(l_xml);
412
413 end generate;
414 END PAY_GB_ENROLL_PEN_REPORTING;