[Home] [Help]
PACKAGE BODY: APPS.PAY_GB_RTI_EYU
Source
1 PACKAGE BODY PAY_GB_RTI_EYU as
2 /* $Header: pygbrtieyu.pkb 120.0.12020000.2 2013/03/04 07:35:53 rajganga noship $ */
3 /*===========================================================================+
4 | Copyright (c) 1993 Oracle Corporation |
5 | Redwood Shores, California, USA |
6 | All rights reserved. |
7 +============================================================================
8 Name:
9 PAY_GB_RTI_EYU
10 Purpose:
11 It fetches the live data and archives it for RTI Processes.
12 This is a UK Specific payroll package.
13 History:
14 4-Feb-2013 rajganga 115.0 Created.
15 13-Feb-2013 rajganga 115.6 Created.
16 20-Feb-2013 rajganga 115.7 Fixed the bugs 16361499 , 16360534.
17 21-Feb-2013 rajganga 115.8 Fixed bug 16328233 .
18 21-Feb-2013 rajganga 115.9 Fixed bugs.
19 22-Feb-2013 rajganga 115.9 Fixed bug 16367557.
20 22-Feb-2013 rajganga 115.10 Added NIC Refund Code.
21 26-Feb-2013 rajganga 115.11 Removed Parameter codes.
22 26-Feb-2013 rajganga 115.12 Fixed bug 16400958.
23 27-Feb-2013 rajganga 115.13 Fixed retry issue.
24 28-Feb-2013 rajganga 115.14 Fixed GSCC issues.
25 28-Feb-2013 rajganga 115.15 Fixed NIC refund.
26 =============================================================================*/
27 --
28 --
29 g_econ_ni_check varchar2(1);
30
31 g_package CONSTANT VARCHAR2(20) := 'pay_gb_rti_eyu.';
32 c_contract_table_name CONSTANT pay_user_tables.user_table_name%TYPE := 'PQP_CONTRACT_TYPES';
33 g_start_year DATE;
34 g_end_year DATE;
35 g_tax_ref VARCHAR2(60);
36
37 g_paye_element_id NUMBER:= -1;
38 g_paye_details_id NUMBER:= -1;
39 g_reset_flag_type VARCHAR2(30);
40 g_legislation_code VARCHAR2(2) := 'GB';
41 g_validation_check VARCHAR2(1) := 'Y';
42
43 g_fps_bal_det_tab t_fps_bal_det_tab;
44 g_fps_aggr_bal_det_tab t_fps_bal_det_tab;
45 g_fps_ni_bal_det_tab t_fps_bal_det_tab;
46 g_fps_ni_aggr_bal_det_tab t_fps_bal_det_tab;
47 g_defined_balance_lst pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of normal balances
48 g_aggr_defined_balance_lst pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of aggregation balances
49 g_defined_balance_lst_ni pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of ni normal balances
50 g_aggr_defined_balance_lst_ni pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of ni aggregation balances
51 --
52
53 g_nia_lel_id pay_defined_balances.defined_balance_id%TYPE;
54 g_nia_et_id pay_defined_balances.defined_balance_id%TYPE;
55 g_nia_uap_id pay_defined_balances.defined_balance_id%TYPE;
56 g_nia_uel_id pay_defined_balances.defined_balance_id%TYPE;
57 g_nia_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
58 g_nia_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
59
60 g_nib_lel_id pay_defined_balances.defined_balance_id%TYPE;
61 g_nib_et_id pay_defined_balances.defined_balance_id%TYPE;
62 g_nib_uap_id pay_defined_balances.defined_balance_id%TYPE;
63 g_nib_uel_id pay_defined_balances.defined_balance_id%TYPE;
64 g_nib_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
65 g_nib_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
66
67 g_nic_lel_id pay_defined_balances.defined_balance_id%TYPE;
68 g_nic_et_id pay_defined_balances.defined_balance_id%TYPE;
69 g_nic_uap_id pay_defined_balances.defined_balance_id%TYPE;
70 g_nic_uel_id pay_defined_balances.defined_balance_id%TYPE;
71 g_nic_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
72 g_nic_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
73
74 g_nid_lel_id pay_defined_balances.defined_balance_id%TYPE;
75 g_nid_et_id pay_defined_balances.defined_balance_id%TYPE;
76 g_nid_uap_id pay_defined_balances.defined_balance_id%TYPE;
77 g_nid_uel_id pay_defined_balances.defined_balance_id%TYPE;
78 g_nid_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
79 g_nid_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
80
81 g_nie_lel_id pay_defined_balances.defined_balance_id%TYPE;
82 g_nie_et_id pay_defined_balances.defined_balance_id%TYPE;
83 g_nie_uap_id pay_defined_balances.defined_balance_id%TYPE;
84 g_nie_uel_id pay_defined_balances.defined_balance_id%TYPE;
85 g_nie_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
86 g_nie_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
87
88 g_nij_lel_id pay_defined_balances.defined_balance_id%TYPE;
89 g_nij_et_id pay_defined_balances.defined_balance_id%TYPE;
90 g_nij_uap_id pay_defined_balances.defined_balance_id%TYPE;
91 g_nij_uel_id pay_defined_balances.defined_balance_id%TYPE;
92 g_nij_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
93 g_nij_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
94
95 g_nil_lel_id pay_defined_balances.defined_balance_id%TYPE;
96 g_nil_et_id pay_defined_balances.defined_balance_id%TYPE;
97 g_nil_uap_id pay_defined_balances.defined_balance_id%TYPE;
98 g_nil_uel_id pay_defined_balances.defined_balance_id%TYPE;
99 g_nil_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
100 g_nil_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
101
102 --Aggr details
103
104 g_per_nia_lel_id pay_defined_balances.defined_balance_id%TYPE;
105 g_per_nia_et_id pay_defined_balances.defined_balance_id%TYPE;
106 g_per_nia_uap_id pay_defined_balances.defined_balance_id%TYPE;
107 g_per_nia_uel_id pay_defined_balances.defined_balance_id%TYPE;
108 g_per_nia_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
109 g_per_nia_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
110
111 g_per_nib_lel_id pay_defined_balances.defined_balance_id%TYPE;
112 g_per_nib_et_id pay_defined_balances.defined_balance_id%TYPE;
113 g_per_nib_uap_id pay_defined_balances.defined_balance_id%TYPE;
114 g_per_nib_uel_id pay_defined_balances.defined_balance_id%TYPE;
115 g_per_nib_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
116 g_per_nib_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
117
118 g_per_nic_lel_id pay_defined_balances.defined_balance_id%TYPE;
119 g_per_nic_et_id pay_defined_balances.defined_balance_id%TYPE;
120 g_per_nic_uap_id pay_defined_balances.defined_balance_id%TYPE;
121 g_per_nic_uel_id pay_defined_balances.defined_balance_id%TYPE;
122 g_per_nic_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
123 g_per_nic_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
124
125 g_per_nid_lel_id pay_defined_balances.defined_balance_id%TYPE;
126 g_per_nid_et_id pay_defined_balances.defined_balance_id%TYPE;
127 g_per_nid_uap_id pay_defined_balances.defined_balance_id%TYPE;
128 g_per_nid_uel_id pay_defined_balances.defined_balance_id%TYPE;
129 g_per_nid_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
130 g_per_nid_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
131
132 g_per_nie_lel_id pay_defined_balances.defined_balance_id%TYPE;
133 g_per_nie_et_id pay_defined_balances.defined_balance_id%TYPE;
134 g_per_nie_uap_id pay_defined_balances.defined_balance_id%TYPE;
135 g_per_nie_uel_id pay_defined_balances.defined_balance_id%TYPE;
136 g_per_nie_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
137 g_per_nie_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
138
139 g_per_nij_lel_id pay_defined_balances.defined_balance_id%TYPE;
140 g_per_nij_et_id pay_defined_balances.defined_balance_id%TYPE;
141 g_per_nij_uap_id pay_defined_balances.defined_balance_id%TYPE;
142 g_per_nij_uel_id pay_defined_balances.defined_balance_id%TYPE;
143 g_per_nij_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
144 g_per_nij_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
145
146 g_per_nil_lel_id pay_defined_balances.defined_balance_id%TYPE;
147 g_per_nil_et_id pay_defined_balances.defined_balance_id%TYPE;
148 g_per_nil_uap_id pay_defined_balances.defined_balance_id%TYPE;
149 g_per_nil_uel_id pay_defined_balances.defined_balance_id%TYPE;
150 g_per_nil_e_ytd_id pay_defined_balances.defined_balance_id%TYPE;
151 g_per_nil_r_ytd_id pay_defined_balances.defined_balance_id%TYPE;
152
153 -- NI Run balance fields
154 g_nia_able_id_run pay_defined_balances.defined_balance_id%TYPE;
155 g_nia_e_id_run pay_defined_balances.defined_balance_id%TYPE;
156 g_nib_able_id_run pay_defined_balances.defined_balance_id%TYPE;
157 g_nib_e_id_run pay_defined_balances.defined_balance_id%TYPE;
158 g_nic_able_id_run pay_defined_balances.defined_balance_id%TYPE;
159 g_nic_e_id_run pay_defined_balances.defined_balance_id%TYPE;
160 g_nid_able_id_run pay_defined_balances.defined_balance_id%TYPE;
161 g_nid_e_id_run pay_defined_balances.defined_balance_id%TYPE;
162 g_nie_able_id_run pay_defined_balances.defined_balance_id%TYPE;
163 g_nie_e_id_run pay_defined_balances.defined_balance_id%TYPE;
164 g_nij_able_id_run pay_defined_balances.defined_balance_id%TYPE;
165 g_nij_e_id_run pay_defined_balances.defined_balance_id%TYPE;
166 g_nil_able_id_run pay_defined_balances.defined_balance_id%TYPE;
167 g_nil_e_id_run pay_defined_balances.defined_balance_id%TYPE;
168
169 -- Function to fetch address details (CONTEXT - ADDRESS DETAILS)
170 FUNCTION fetch_address_rec(
171 p_person_id IN NUMBER,
172 p_assignment_id IN NUMBER,
173 p_effective_date IN DATE,
174 p_addr_rec OUT nocopy act_info_rec)
175 RETURN BOOLEAN
176 IS
177 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_address_rec';
178 l_arch BOOLEAN;
179 --address details
180 l_address_line1 per_addresses.address_line1%TYPE;
181 l_address_line2 per_addresses.address_line2%TYPE;
182 l_address_line3 per_addresses.address_line3%TYPE;
183 l_address_line4 per_addresses.address_line3%TYPE;
184
185 CURSOR csr_address
186 IS
187 SELECT upper(SUBSTR(trim(addr.address_line1),1,35)) addr1,
188 upper(SUBSTR(trim(addr.address_line2),1,35)) addr2,
189 upper(SUBSTR(trim(addr.address_line3),1,35)) addr3,
190 SUBSTR(addr.postal_code,1,10) post_code,
191 upper(SUBSTR(trim(addr.town_or_city),1,35)) addr4,
192 upper(SUBSTR(trim(addr.country),1,35)) country
193 FROM per_addresses addr
194 WHERE addr.person_id = p_person_id
195 AND ( addr.primary_flag = 'Y'
196 OR addr.primary_flag IS NULL)
197 AND p_effective_date
198 BETWEEN NVL(addr.date_from,fnd_date.canonical_to_date('0001/01/01 00:00:00'))
199 AND NVL(addr.date_to, fnd_date.canonical_to_date('4712/12/31 00:00:00'));
200
201 l_addr_rec csr_address%rowtype;
202
203 BEGIN
204 hr_utility.set_location('Entering : '||l_proc,1);
205 l_arch := true;
206
207 OPEN csr_address;
208 FETCH csr_address INTO l_addr_rec;
209 CLOSE csr_address;
210
211 l_address_line1 := l_addr_rec.addr1;
212 l_address_line2 := l_addr_rec.addr2;
213 l_address_line3 := l_addr_rec.addr3;
214 l_address_line4 := l_addr_rec.addr4;
215 -- Swapping from Address line4 to line2
216
217 IF l_address_line3 = ' ' THEN
218 l_address_line3 := l_address_line4;
219 l_address_line4 := ' ';
220 END IF;
221
222 IF l_address_line2 = ' ' THEN
223 l_address_line2 := l_address_line3;
224 l_address_line3 := l_address_line4;
225 l_address_line4 := ' ';
226 END IF;
227
228 IF LENGTH(TRIM(l_address_line4)) > 0 THEN
229 l_address_line4 := l_address_line4;
230 ELSE
231 l_address_line4 := ' ';
232 END IF;
233
234 IF LENGTH(TRIM(l_address_line3)) > 0 THEN
235 l_address_line3 := l_address_line3;
236 ELSE
237 l_address_line3 := l_address_line4;
238 l_address_line4 := ' ';
239 END IF;
240
241 IF LENGTH(TRIM(l_address_line2)) > 0 THEN
242 l_address_line2 := l_address_line2;
243 ELSE
244 l_address_line2 := l_address_line3;
245 l_address_line3 := l_address_line4;
246 l_address_line4 := ' ';
247 END IF;
248 -- For Foreign Country, postal code will not be reported , where as Country will be reported
249 -- For GB , postal code will be reported
250
251 IF l_addr_rec.country = 'GB' THEN
252 IF l_addr_rec.post_code <> ' ' OR l_addr_rec.post_code IS NOT NULL THEN
253 l_addr_rec.country := ' ';
254 END IF;
255 ELSE
256 l_addr_rec.post_code:= ' ';
257 END IF;
258
259 hr_utility.trace('line 1'||l_address_line1);
260 hr_utility.trace('line 2'||l_address_line2);
261 hr_utility.trace('line 3'||l_address_line3);
262 hr_utility.trace('line 4'||l_address_line4);
263
264 p_addr_rec.assignment_id := p_assignment_id;
265 p_addr_rec.action_info_category := 'ADDRESS DETAILS';
266 p_addr_rec.act_info5 := l_address_line1;
267 p_addr_rec.act_info6 := l_address_line2;
268 p_addr_rec.act_info7 := l_address_line3;
269 p_addr_rec.act_info8 := l_address_line4;
270 p_addr_rec.act_info12 := l_addr_rec.post_code;
271 p_addr_rec.act_info13 := l_addr_rec.country;
272 hr_utility.set_location('Leaving: '||l_proc,999);
273 RETURN l_arch;
274 END fetch_address_rec;
275
276 /*
277 Returns the passport number for the person from the source configured in Configuration
278 values page for this BG.
279 */
280 FUNCTION get_passport_number(
281 p_person_id VARCHAR2,p_effective_date DATE,p_bg_id NUMBER)
282 RETURN VARCHAR2
283 IS
284 l_config_values PQP_UTILITIES.t_config_values;
285 g_bon_bal_type_id NUMBER;
286 l_source_name VARCHAR2(100);
287 l_context_name VARCHAR2(100);
288 l_column_name VARCHAR2(100);
289 l_function_name VARCHAR2(100);
290 l_passport_number VARCHAR2(100) := NULL;
291 sqlstr VARCHAR2(1000);
292 l_proc CONSTANT VARCHAR2(50):= g_package||'get_passport_number';
293 l_package VARCHAR2(100);
294 l_effective_date date;
295 cursor csr_doc_of_rec
296 is
297 select hdei.document_number from hr_document_types hdt,hr_document_extra_info hdei
298 where hdt.category_code = 'PPT_INFO'
299 and hdt.document_type_id = hdei.document_type_id
300 and hdei.person_id = p_person_id;
301
302 CURSOR csr_per_all_people
303 IS
304 SELECT l_column_name
305 FROM per_all_people_f
306 WHERE person_id = p_person_id
307 AND ATTRIBUTE_CATEGORY = l_context_name
308 AND p_effective_date between effective_start_date and effective_end_date;
309
310 CURSOR csr_per_extra_people_info
311 IS
312 SELECT l_column_name
313 FROM per_people_extra_info
314 WHERE person_id = p_person_id
315 AND PEI_INFORMATION_CATEGORY = l_context_name;
316
317 cursor csr_per_start_date is
318 select max(effective_start_date) from per_all_people_f
319 where person_id = p_person_id
320 and effective_start_date <= p_effective_date;
321
322 BEGIN
323 hr_utility.set_location('Entering: '||l_proc,1);
324 hr_utility.trace('p_effective_date in get_passport_number : ' || p_effective_date);
325
326 open csr_per_start_date;
327 fetch csr_per_start_date into l_effective_date;
328 close csr_per_start_date;
329
330 hr_utility.trace('l_effective_date in get_oneoff_payment : ' || l_effective_date);
331 -- Use below API to get the config values for the given context in the business group
332 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_PASSPORT_NO' ,
333 p_business_group_id => p_bg_id ,
334 p_legislation_code => g_legislation_code ,
335 p_tab_config_values => l_config_values );
336
337 IF l_config_values.COUNT > 0 THEN
338 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
339 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
340 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
341 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
342 hr_utility.set_location('l_source_name' || l_source_name,1);
343 hr_utility.set_location('l_context_name' || l_context_name,1);
344 hr_utility.set_location('l_column_name' || l_column_name,1);
345 hr_utility.set_location('l_function_name' || l_function_name,1);
346
347 /** The source can be either from Others--> Extra information of the person
348 or from the descriptive flex field on the person form.
349 **/
350 IF l_source_name = 'Extra Person Info DDF' THEN
351 hr_utility.set_location('into Extra Person Info DDF',1);
352 sqlstr := 'select ' || l_column_name ||
353 ' from per_people_extra_info where person_id = :p_person_id and PEI_INFORMATION_CATEGORY = :l_context_name';
354 hr_utility.set_location(sqlstr,1);
355 begin
356 EXECUTE immediate sqlstr INTO l_passport_number USING p_person_id,l_context_name;
357 Exception
358 when others then
359 hr_utility.set_location('Exception in extra info : ' || sqlerrm,1);
360 end;
361
362 elsif l_source_name = 'PER_PEOPLE' THEN
363 hr_utility.set_location('into PER_PEOPLE',1);
364 sqlstr := 'select ' || l_column_name ||
365 ' from per_all_people_f where person_id = :p_person_id and ATTRIBUTE_CATEGORY = :l_context_name' ||
366 ' and :l_effective_date between effective_start_date and effective_end_date' ;
367 hr_utility.trace(sqlstr);
368 begin
369 EXECUTE immediate sqlstr INTO l_passport_number USING p_person_id,l_context_name,l_effective_date;
370 exception
371 when others then
372 hr_utility.trace('Exception in per_people: ' || sqlerrm);
373 end;
374
375 elsif l_source_name = 'Function' THEN
376
377 begin
378 SELECT definition
379 INTO l_package
380 FROM ff_functions
381 WHERE name = l_function_name
382 and business_group_id = p_bg_id;
383
384 hr_utility.trace('l_package'||l_package);
385
386 sqlstr :=
387 'SELECT '
388 || l_package
389 || ' (:p_person_id,:p_eff_date) '
390 || 'FROM DUAL';
391 hr_utility.set_location(sqlstr,1);
392 EXECUTE IMMEDIATE sqlstr into l_passport_number USING p_person_id,l_effective_date;
393 hr_utility.trace('Function value l_passport_number '||l_passport_number);
394 exception
395 WHEN OTHERS THEN
396 hr_utility.trace('Exception in get_passport_number.Function.');
397 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
398 return null;
399 end;
400
401 END IF;
402 ELSE
403 -- GEt the passport number from Documents of record, if it null then get from config values.
404 open csr_doc_of_rec;
405 fetch csr_doc_of_rec into l_passport_number;
406 close csr_doc_of_rec;
407
408 END IF;
409 hr_utility.set_location('l_passport_number: '||l_passport_number,1);
410 hr_utility.set_location('Leaving: '||l_proc,1);
411
412 RETURN l_passport_number;
413
414 EXCEPTION
415 WHEN OTHERS THEN
416 RETURN l_passport_number;
417 return null;
418 END get_passport_number;
419
420 -- Function to fetch person details (CONTEXT - GB RTI EMPLOYEE DETAILS)
421 FUNCTION fetch_person_rec(
422 p_assactid IN NUMBER,
423 p_effective_date IN DATE,
424 p_person_rec OUT nocopy act_info_rec)
425 RETURN BOOLEAN
426 IS
427 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_person_rec';
428 l_arch BOOLEAN;
429 l_partner_name VARCHAR2(50);
430 l_partner_ni VARCHAR2(30);
431 l_partner_surname VARCHAR2(50);
432 l_partner_first_name VARCHAR2(50);
433 l_partner_second_name VARCHAR2(50);
434
435 CURSOR csr_person_details
436 IS
437 SELECT rownum Number_of_employee,
438 pap.person_id p_person_id,
439 paa.assignment_id,
440 SUBSTR(trim(pap.last_name), 1,35) last_name,
441 SUBSTR(trim(pap.first_name), 1,least(DECODE(instr(trim(pap.first_name),' '),0,35,instr(trim(pap.first_name),' ')),35)) first_name,
442 SUBSTR(trim(pap.middle_names), 1,least(decode(instr(trim(pap.middle_names),' '),0,35,instr(trim(pap.middle_names),' ')),35)) middle_name,
443 pap.title title,
444 SUBSTR(pap.national_identifier,1,9) national_identifier,
445 pap.date_of_birth date_of_birth,
446 SUBSTR(pap.sex,1,1) sex ,
447 DECODE(pap.per_information10,'Y','Y',NULL) agg_paye_flag,
448 DECODE(pap.per_information9,'Y','Y',NULL) multiple_asg_flag,
449 pap.business_group_id business_group_id
450 FROM pay_assignment_actions act,
451 per_all_assignments_f paa,
452 per_all_people_f pap
453 WHERE act.assignment_action_id = p_assactid
454 AND act.assignment_id = paa.assignment_id
455 AND paa.person_id = pap.person_id
456 AND p_effective_date between pap.effective_start_date and pap.effective_end_date
457 AND paa.effective_start_date =
458 (
459 SELECT MAX(paa2.effective_start_date)
460 FROM per_all_assignments_f paa2
461 WHERE paa2.assignment_id = paa.assignment_id
462 AND paa2.assignment_type = 'E'
463 AND paa2.effective_start_date <= p_effective_date
464 );
465
466
467 CURSOR csr_partner_details(c_person_id NUMBER)
468 IS
469 SELECT NVL(partner_name,''),
470 partner_ni_number
471 FROM ssp_medicals
472 WHERE maternity_id IN
473 (SELECT MAX(maternity_id)
474 FROM per_absence_attendances
475 WHERE person_id = c_person_id
476 AND ABSENCE_ATTENDANCE_TYPE_ID IN
477 (SELECT ABSENCE_ATTENDANCE_TYPE_ID
478 FROM per_absence_attendance_types
479 WHERE ABSENCE_CATEGORY IN ('GB_ADDL_PAT_ADOPT', 'GB_ADDL_PAT_BIRTH')
480 )
481 )
482 AND EVIDENCE_STATUS = 'CURRENT';
483 l_person_rec csr_person_details%rowtype;
484
485 BEGIN
486 hr_utility.set_location('Entering: '||l_proc,1);
487 l_arch := true;
488 hr_utility.trace('p_assactid : '||p_assactid);
489 hr_utility.trace('p_effective_date : '||TO_CHAR(p_effective_date));
490
491 OPEN csr_person_details;
492 FETCH csr_person_details INTO l_person_rec;
493 CLOSE csr_person_details;
494
495 p_person_rec.person_id := l_person_rec.p_person_id;
496 p_person_rec.assignment_id := l_person_rec.assignment_id;
497 p_person_rec.action_info_category := 'GB RTI EMPLOYEE DETAILS';
498 p_person_rec.act_info3 := l_person_rec.last_name;
499 p_person_rec.act_info4 := l_person_rec.first_name;
500 p_person_rec.act_info5 := l_person_rec.middle_name;
501 p_person_rec.act_info6 := l_person_rec.title;
502 p_person_rec.act_info7 := l_person_rec.national_identifier;
503 p_person_rec.act_info8 := TO_CHAR(l_person_rec.date_of_birth,'YYYY-MM-DD');
504 p_person_rec.act_info9 := l_person_rec.sex;
505 p_person_rec.act_info10 := l_person_rec.agg_paye_flag;
506 p_person_rec.act_info11 := l_person_rec.multiple_asg_flag;
507 p_person_rec.act_info16 := get_passport_number(l_person_rec.p_person_id,p_effective_date,l_person_rec.business_group_id);
508
509 OPEN csr_partner_details(l_person_rec.p_person_id);
510 FETCH csr_partner_details INTO l_partner_name, l_partner_ni;
511 CLOSE csr_partner_details;
512
513 l_partner_surname := trim(SUBSTR(l_partner_name,1,instr(l_partner_name,' ')));
514 l_partner_first_name := trim(SUBSTR(l_partner_name,LENGTH(l_partner_surname) +1,instr(l_partner_name,' ',LENGTH(l_partner_surname))));
515 l_partner_second_name := trim(SUBSTR(l_partner_name,LENGTH(l_partner_surname||l_partner_first_name)+2,(instr(l_partner_name,' ',
516 LENGTH(l_partner_surname||l_partner_first_name)+3)) - (LENGTH(l_partner_surname||l_partner_first_name)+2) ));
517 p_person_rec.act_info12 := l_partner_surname;
518 p_person_rec.act_info13 := l_partner_first_name;
519 p_person_rec.act_info14 := l_partner_second_name;
520 p_person_rec.act_info15 := l_partner_ni;
521 hr_utility.set_location('Leaving: '||l_proc,999);
522 RETURN l_arch;
523 END fetch_person_rec;
524 --
525
526 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET1)
527 FUNCTION fetch_asg_det1(
528 p_effective_date IN DATE,
529 p_last_asg_action_id IN NUMBER,
530 p_eyu_effective_date IN DATE,
531 p_person_rec IN act_info_rec,
532 p_fps_rec1 OUT nocopy act_info_rec)
533 RETURN BOOLEAN
534 IS
535 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_asg_det1';
536 l_arch BOOLEAN;
537 --Below cursor fetches the starter details of the current assignment
538 CURSOR csr_get_starter_details(p_asg_id NUMBER)
539 IS
540 SELECT assignment_extra_info_id,
541 aei_information1 starter_decl,
542 aei_information2 prev_emp_paye_ref,
543 aei_information3 prev_tax_code,
544 aei_information4 date_left_prev_employer,
545 aei_information5 prev_tax_basis,
546 aei_information6 last_payment_period_type,
547 aei_information7 last_payment_period,
548 aei_information8 starter_flag,
549 aei_information10 continue_with_student_loan,
550 aei_information8 not_paid_between,
551 object_version_number object_version_number
552 FROM per_assignment_extra_info
553 WHERE assignment_id = p_asg_id
554 AND information_type = 'GB_RTI_ASG_DETAILS';
555
556 --Below cursor fetches the pension details of the current assignment
557 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
558 IS
559 SELECT assignment_extra_info_id,
560 aei_information9 pensioner_flag,
561 aei_information12 date_pension_started,
562 trim(aei_information13) annual_pension,
563 aei_information14 recently_bereaved,
564 object_version_number object_version_number
565 FROM per_assignment_extra_info
566 WHERE assignment_id = p_asg_id
567 AND information_type = 'GB_RTI_ASG_DETAILS';
568
569 --Below cursor fetches the expat details of the current assignment
570 CURSOR csr_get_expat_details(p_asg_id NUMBER)
571 IS
572 SELECT assignment_extra_info_id,
573 aei_information15 expat_statement,
574 aei_information16 date_emp_start_uk,
575 aei_information17 eea_cw_citizen,
576 aei_information18 epm6_scheme,
577 aei_information19 expat_flag,
578 object_version_number object_version_number
579 FROM per_assignment_extra_info
580 WHERE assignment_id = p_asg_id
581 AND information_type = 'GB_RTI_ASG_DETAILS';
582 /*
583 cursor csr_fetch_asg_num is
584 select assignment_number from per_all_assignments_f where assignment_id = p_person_rec.assignment_id
585 and p_effective_date between effective_start_date and effective_end_date;
586 */
587 --Cursor to fetch RTI Payroll ID for the assignment
588 CURSOR csr_fetch_asg_num IS
589 SELECT aei_information3 rti_payroll_id
590 FROM per_assignment_extra_info
591 WHERE assignment_id = p_person_rec.assignment_id
592 AND aei_information_category = 'GB_RTI_AGGREGATION';
593
594 -- Cursor to fetch Termination date
595 cursor csr_terminated_date is
596 select serv.actual_termination_date actual_termination_date
597 from
598 per_all_assignments_f asg,
599 per_periods_of_service serv
600 where asg.assignment_id = p_person_rec.assignment_id
601 and asg.period_of_service_id = serv.period_of_service_id
602 and p_effective_date between asg.effective_start_date and asg.effective_end_date
603 and actual_termination_date <= greatest(p_eyu_effective_date,p_effective_date);
604
605 --Below cursor fetches the termination date of the current assignment
606 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
607 IS
608 SELECT min(paaf.effective_start_date) min_active_start_date
609 FROM per_all_assignments_f paaf,
610 per_assignment_status_types past
611 WHERE paaf.assignment_id = p_asg_id
612 AND paaf.assignment_status_type_id = past.assignment_status_type_id
613 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN');
614
615 CURSOR csr_max_run_result(p_assignment_action_id number,p_element_id number) IS
616 SELECT max(prr.RUN_RESULT_ID)
617 FROM pay_run_results prr
618 WHERE prr.ASSIGNMENT_ACTION_ID = p_assignment_action_id
619 AND prr.ELEMENT_TYPE_ID = p_element_id
620 AND prr.status in ('P','PA');
621
622
623 CURSOR csr_run_result(p_run_result_id number,p_element_type_id number) IS
624 SELECT max(decode(name,'Tax Code',result_value,NULL)) tax_code,
625 max(decode(name,'Tax Basis',result_value,NULL)) tax_basis
626 FROM pay_input_values_f v,
627 pay_run_result_values rrv
628 WHERE rrv.run_result_id = p_run_result_id
629 AND v.input_value_id = rrv.input_value_id
630 AND v.element_type_id = p_element_type_id;
631
632 CURSOR csr_paye_details(p_assignment_id NUMBER) IS
633 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)) tax_code,
634 max(decode(iv.name,'Tax Basis',DECODE(screen_entry_value,'N','Y',NULL),NULL)) tax_basis -- kvinayku bug no 14774165
635 FROM pay_element_entries_f e,
636 pay_element_entry_values_f v,
637 pay_input_values_f iv,
638 pay_element_links_f link
639 WHERE e.assignment_id = p_assignment_id
640 AND link.element_type_id = g_paye_details_id
641 AND e.element_link_id = link.element_link_id
642 AND e.element_entry_id = v.element_entry_id
643 AND iv.input_value_id = v.input_value_id
644 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
645 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
646 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
647 AND e.effective_end_date = (select max(e1.effective_end_date)
648 from pay_element_entries_f e1,
649 pay_element_links_f link1
650 where link1.element_type_id = g_paye_details_id
651 and e1.assignment_id = p_assignment_id
652 and e1.element_link_id = link1.element_link_id);
653
654 l_starter_rec csr_get_starter_details%rowtype;
655 l_pensioner_rec csr_get_pensioner_details%rowtype;
656 l_expat_rec csr_get_expat_details%rowtype;
657 l_stay_over_6_months VARCHAR2(1);
658 l_stay_less_6_months VARCHAR2(1);
659 l_working_in_out_UK VARCHAR2(1);
660 l_asg_number per_assignments_f.assignment_number%TYPE;
661
662 l_starter_decl VARCHAR2(30);
663 l_continue_with_student_loan VARCHAR2(30);
664 l_ovn NUMBER;
665 l_starter_flag VARCHAR2(1);
666 l_pensioner_flag VARCHAR2(1);
667 l_expat_flag VARCHAR2(1);
668 l_recently_bereaved VARCHAR2(30);
669 l_annual_pension VARCHAR2(30);
670 l_eea_cw_citizen VARCHAR2(30);
671 l_epm6_scheme VARCHAR2(30);
672 l_asg_eff_start_date DATE;
673 l_person_actual_term_date DATE;
674 l_asg_effective_end_date DATE;
675 l_date_of_leaving DATE;
676 l_ovn_extra_info NUMBER;
677 l_asg_info_id NUMBER;
678 l_person_id NUMBER;
679 l_min_active_start_date DATE;
680 l_tax_code pay_element_entry_values_f.screen_entry_value%type;
681 l_tax_basis pay_element_entry_values_f.screen_entry_value%type;
682 l_rti_sent_flag VARCHAR2(15);
683 l_paye_rr_id number;
684 l_paye_details_rr_id number;
685
686 BEGIN
687 hr_utility.set_location('Entering: '||l_proc,1);
688 l_arch := true;
689
690
691 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
692 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
693 hr_utility.trace('Calling csr_get_starter_details');
694 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
695
696 OPEN csr_get_starter_details(p_person_rec.assignment_id);
697 FETCH csr_get_starter_details INTO l_starter_rec;
698 CLOSE csr_get_starter_details;
699
700 l_starter_decl := NULL;
701 l_continue_with_student_loan := NULL;
702 l_starter_flag := l_starter_rec.starter_flag;
703 g_reset_flag_type := NULL;
704 hr_utility.trace('Calling csr_get_starter_details1');
705 hr_utility.trace('l_starter_flag: '||l_starter_flag);
706 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
707 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
708
709 IF (l_starter_flag = 'N'
710 AND (l_starter_rec.starter_decl IS NOT NULL
711 OR NVL(l_starter_rec.continue_with_student_loan,'N') = 'Y' )) THEN
712 hr_utility.trace('Calling csr_get_starter_details2');
713 l_starter_decl := l_starter_rec.starter_decl;
714 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
715 l_ovn := l_starter_rec.object_version_number;
716 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
717 p_object_version_number => l_ovn,
718 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
719 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
720 p_aei_information8 => 'Y');
721 g_reset_flag_type := 'STARTER';
722 l_rti_sent_flag := 'STARTER';
723 hr_utility.trace('Calling csr_get_starter_details3');
724 END IF;
725 ---
726 hr_utility.trace('Calling csr_get_pensioner_details');
727
728 OPEN csr_get_pensioner_details(p_person_rec.assignment_id);
729 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
730 CLOSE csr_get_pensioner_details;
731
732 l_recently_bereaved := NULL;
733 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
734 l_annual_pension := NULL;
735 g_reset_flag_type := NULL;
736
737 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
738 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
739 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
740 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
741
742 IF (l_pensioner_flag = 'N'
743 AND ( NVL(l_pensioner_rec.recently_bereaved,'N') = 'Y'
744 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
745 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
746 if l_pensioner_rec.annual_pension is not null then
747 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
748 end if;
749 l_ovn := l_pensioner_rec.object_version_number;
750 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
751 p_object_version_number => l_ovn,
752 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
753 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
754 p_aei_information9 => 'Y');
755 l_rti_sent_flag := 'PENSIONER';
756 g_reset_flag_type := 'PENSIONER';
757 END IF;
758 ---
759 hr_utility.trace('Calling csr_get_expat_details');
760
761 OPEN csr_get_expat_details(p_person_rec.assignment_id);
762 FETCH csr_get_expat_details INTO l_expat_rec;
763 CLOSE csr_get_expat_details;
764
765 l_eea_cw_citizen := NULL;
766 l_epm6_scheme := NULL;
767 l_stay_over_6_months := NULL;
768 l_stay_less_6_months := NULL;
769 l_working_in_out_UK := NULL;
770 l_expat_flag := l_expat_rec.expat_flag;
771
772 hr_utility.trace('Calling csr_get_expat_details1');
773 hr_utility.trace('l_expat_flag: '||l_expat_flag);
774 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
775 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
776 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
777
778 g_reset_flag_type := NULL;
779
780 IF (l_expat_flag = 'N'
781 AND ( NVL(l_expat_rec.eea_cw_citizen,'N') = 'Y'
782 OR NVL(l_expat_rec.epm6_scheme,'N') = 'Y'
783 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
784 hr_utility.trace('Calling csr_get_expat_details2');
785 IF l_expat_rec.expat_statement = 'A' THEN
786 l_stay_over_6_months := 'Y';
787 elsif l_expat_rec.expat_statement = 'B' THEN
788 l_stay_less_6_months := 'Y';
789 elsif l_expat_rec.expat_statement = 'C' THEN
790 l_working_in_out_UK := 'Y';
791 END IF;
792
793 hr_utility.trace('Calling csr_get_expat_details3');
794 --l_starter_decl := l_expat_rec.expat_statement;
795 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
796 l_epm6_scheme := l_expat_rec.epm6_scheme;
797 l_ovn := l_expat_rec.object_version_number;
798 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
799 p_object_version_number => l_ovn,
800 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
801 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
802 p_aei_information19 => 'Y');
803 l_rti_sent_flag := 'EXPAT';
804 g_reset_flag_type := 'EXPAT';
805 END IF;
806
807 OPEN csr_get_term_asg_info (p_person_rec.assignment_id );
808 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
809 CLOSE csr_get_term_asg_info;
810
811 ---
812 IF (l_starter_rec.starter_flag = 'N') THEN
813 IF((l_starter_rec.starter_decl IS NOT NULL
814 OR NVL(l_starter_rec.continue_with_student_loan,'N') = 'Y')
815 AND l_starter_rec.starter_flag = 'N')
816
817 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
818 OR l_pensioner_rec.annual_pension IS NOT NULL
819 OR NVL(l_pensioner_rec.recently_bereaved,'N') = 'Y')
820 AND l_pensioner_rec.pensioner_flag = 'N')
821
822 OR ((l_expat_rec.expat_statement IS NOT NULL
823 OR l_expat_rec.date_emp_start_uk IS NOT NULL
824 OR NVL(l_expat_rec.eea_cw_citizen,'N') = 'Y'
825 OR NVL(l_expat_rec.epm6_scheme,'N') = 'Y')
826 AND l_expat_rec.expat_flag = 'N') THEN
827
828 hr_utility.trace('l_asg_eff_start_date : '||l_asg_eff_start_date);
829
830 if(l_min_active_start_date >= g_start_year) then
831 l_asg_eff_start_date := l_min_active_start_date;
832 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
833 end if;
834
835 ELSE
836 l_asg_eff_start_date := NULL;
837 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
838 END IF;
839 END IF;
840
841 --Fetch RTI Payroll id .
842 open csr_fetch_asg_num;
843 fetch csr_fetch_asg_num into l_asg_number;
844 close csr_fetch_asg_num;
845
846 hr_utility.trace('l_asg_number : '|| l_asg_number);
847
848 open csr_terminated_date;
849 fetch csr_terminated_date into l_person_actual_term_date;
850 close csr_terminated_date;
851
852 hr_utility.trace('l_person_actual_term_date : '|| l_person_actual_term_date);
853
854 l_date_of_leaving := l_person_actual_term_date;
855
856 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
857 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
858 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
859 ---
860
861 hr_utility.trace('g_paye_details_id : '|| g_paye_details_id);
862 hr_utility.trace('g_paye_element_id : '|| g_paye_element_id);
863
864
865 open csr_max_run_result(p_last_asg_action_id,g_paye_element_id);
866 fetch csr_max_run_result into l_paye_rr_id;
867 close csr_max_run_result;
868
869 hr_utility.trace('Fetching run result : '||l_paye_rr_id);
870 -- First we try to fetch it from the latest PAYE run results
871 open csr_run_result(l_paye_rr_id, g_paye_element_id);
872 fetch csr_run_result into l_tax_code,l_tax_basis;
873 close csr_run_result;
874
875 if l_tax_code is null then
876 open csr_paye_details(p_person_rec.assignment_id);
877 fetch csr_paye_details
878 INTO l_tax_code,
879 l_tax_basis;
880 close csr_paye_details;
881 end if;
882 hr_utility.trace('l_tax_code : '|| l_tax_code);
883 hr_utility.trace('l_tax_basis : '|| l_tax_basis);
884 hr_utility.trace('l_rti_sent_flag : '|| l_rti_sent_flag);
885
886 hr_utility.trace('Assigning values');
887
888 p_fps_rec1.assignment_id := p_person_rec.assignment_id;
889 p_fps_rec1.action_info_category := 'GB_RTI_EYU_ASG_DET';
890 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
891 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
892 p_fps_rec1.act_info3 := l_starter_decl;
893 p_fps_rec1.act_info4 := l_continue_with_student_loan;
894 p_fps_rec1.act_info5 := l_stay_over_6_months;
895 p_fps_rec1.act_info6 := l_stay_less_6_months;
896 p_fps_rec1.act_info7 := l_working_in_out_UK;
897 p_fps_rec1.act_info8 := l_eea_cw_citizen;
898 p_fps_rec1.act_info9 := l_epm6_scheme;
899 p_fps_rec1.act_info10 := l_asg_number;
900 p_fps_rec1.act_info11 := l_recently_bereaved;
901 p_fps_rec1.act_info12 := l_annual_pension;
902 p_fps_rec1.act_info13 := l_tax_code;
903 p_fps_rec1.act_info14 := l_tax_basis;
904
905
906 hr_utility.set_location('Leaving: '||l_proc,999);
907 RETURN l_arch;
908
909 EXCEPTION
910 WHEN OTHERS THEN
911 hr_utility.set_location('Error in function fetch_fps_asg_det1 ', 15);
912 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
913 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
914 RAISE;
915 END fetch_asg_det1;
916 --
917 --
918 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2)
919 FUNCTION fetch_asg_det2(
920 p_last_asg_action_id IN NUMBER,
921 p_asg_id IN NUMBER,
922 p_effective_date IN DATE,
923 p_fps_bal_context_2 IN OUT nocopy act_info_rec )
924 RETURN BOOLEAN
925 IS
926 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
927 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
928 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_asg_det2';
929
930 l_asg_primary_flag VARCHAR2(1);
931 l_per_agg_flag VARCHAR2(1);
932 l_aggr_archive_flag VARCHAR2(1);
933 l_last_chld_act_id NUMBER;
934 l_tax_pay_val NUMBER;
935 l_tax_pay_def_bal_id NUMBER;
936 l_ytd_dim VARCHAR2(15) := '_ASG_TD_YTD';
937
938 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
939 IS
940 SELECT trim(asg.primary_flag) asg_primary_flag,
941 trim(pap.per_information10) per_agg_flag
942 FROM per_all_people_f pap,
943 per_all_assignments_f asg
944 WHERE asg.assignment_id = c_asg_id
945 AND pap.person_id = asg.person_id
946 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
947 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
948
949 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
950 IS
951 SELECT MAX(ASSIGNMENT_ACTION_ID)
952 FROM pay_assignment_actions
953 WHERE SOURCE_ACTION_ID = c_lst_act_id;
954
955 cursor csr_get_taxable_pay(c_balance_name varchar2, c_dim_name varchar2) is
956 select pdb.defined_balance_id from
957 pay_defined_balances pdb,
958 pay_balance_dimensions pbd,
959 pay_balance_types pbt
960 where pbt.balance_name = c_balance_name
961 and pbd.database_item_suffix = c_dim_name
962 and pbt.balance_type_id= pdb.balance_type_id
963 and pbd.balance_dimension_id = pdb.balance_dimension_id
964 and pbt.legislation_code = 'GB'
965 and pdb.legislation_code = 'GB'
966 and pbd.legislation_code = 'GB';
967
968 cursor csr_tax_pay_value(p_last_asg_action_id number,l_tax_pay_def_bal_id number)
969 is
970 select hr_dirbal.get_balance(p_last_asg_action_id,l_tax_pay_def_bal_id) from dual;
971
972 BEGIN
973 hr_utility.set_location('Entering: '||l_proc,1);
974 l_context_lst(1).tax_unit_id :=NULL;
975 l_context_lst(1).jurisdiction_code :=NULL;
976 l_context_lst(1).source_id :=NULL;
977 l_context_lst(1).source_text :=NULL;
978 l_context_lst(1).source_number :=NULL;
979 l_context_lst(1).source_text2 :=NULL;
980 l_context_lst(1).time_def_id :=NULL;
981 l_context_lst(1).balance_date :=NULL;
982 l_context_lst(1).local_unit_id :=NULL;
983 l_context_lst(1).source_number2 :=NULL;
984 l_context_lst(1).organization_id :=NULL;
985 hr_utility.set_location('assignment_id :' || p_asg_id,15);
986 l_asg_primary_flag := 'N';
987 l_per_agg_flag := 'N';
988 l_aggr_archive_flag := 'N';
989
990 OPEN csr_asg(p_asg_id, p_effective_date);
991 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
992 CLOSE csr_asg;
993
994
995 hr_utility.set_location('p_last_asg_action_id :' || p_last_asg_action_id,15);
996 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
997 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
998
999 IF NVL(l_per_agg_flag,'N') = 'Y' THEN
1000 hr_utility.trace('Aggregation Found.');
1001 l_aggr_archive_flag := 'Y';
1002 l_ytd_dim := '_PER_TD_YTD';
1003 END IF;
1004 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
1005 ---
1006
1007 -- Get the child assignment action id to Archive Tax code and Tax basis.
1008 -- As the run results are generated with child assignment action id.
1009
1010 OPEN csr_child_act_id(p_last_asg_action_id);
1011 FETCH csr_child_act_id INTO l_last_chld_act_id;
1012 CLOSE csr_child_act_id;
1013
1014 IF l_last_chld_act_id is NULL THEN
1015 l_last_chld_act_id := p_last_asg_action_id;
1016 END IF;
1017
1018 hr_utility.trace('l_last_chld_act_id : '||l_last_chld_act_id);
1019
1020 open csr_get_taxable_pay('Taxable Pay', '_ASG_RUN');
1021 fetch csr_get_taxable_pay into l_tax_pay_def_bal_id;
1022 close csr_get_taxable_pay;
1023
1024 open csr_tax_pay_value(p_last_asg_action_id,l_tax_pay_def_bal_id);
1025 fetch csr_tax_pay_value into l_tax_pay_val;
1026 close csr_tax_pay_value;
1027 -- Test whether we can get run level value with parent action id.
1028 -- If not pass the child assignment action id.
1029
1030 if NVL(l_aggr_archive_flag,'N') = 'Y' then
1031
1032 hr_utility.trace('l_aggr_archive_flag '||l_aggr_archive_flag);
1033
1034 if l_tax_pay_val = 0 then
1035 pay_balance_pkg.get_value(p_assignment_action_id => l_last_chld_act_id,
1036 p_defined_balance_lst => g_aggr_defined_balance_lst ,
1037 p_context_lst => l_context_lst ,
1038 p_output_table => l_output_table );
1039 else
1040 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
1041 p_defined_balance_lst => g_aggr_defined_balance_lst ,
1042 p_context_lst => l_context_lst ,
1043 p_output_table => l_output_table );
1044 end if;
1045 else
1046
1047 hr_utility.trace('l_aggr_archive_flag '||l_aggr_archive_flag);
1048
1049 if l_tax_pay_val = 0 then
1050 pay_balance_pkg.get_value(p_assignment_action_id => l_last_chld_act_id,
1051 p_defined_balance_lst => g_defined_balance_lst ,
1052 p_context_lst => l_context_lst ,
1053 p_output_table => l_output_table );
1054 else
1055 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
1056 p_defined_balance_lst => g_defined_balance_lst ,
1057 p_context_lst => l_context_lst ,
1058 p_output_table => l_output_table );
1059 end if;
1060
1061 end if;
1062
1063
1064 hr_utility.trace('After invoking get_value');
1065 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
1066 hr_utility.set_location('l_ytd_dim :' || l_ytd_dim,15);
1067
1068 if NVL(l_aggr_archive_flag,'N') = 'Y' then
1069
1070 hr_utility.trace('After l_aggr_archive_flag'||l_aggr_archive_flag);
1071
1072 FOR outer_rec IN 1..l_output_table.count
1073 LOOP
1074
1075 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
1076
1077 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
1078 LOOP
1079 IF (g_fps_aggr_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id and l_output_table(outer_rec).balance_value is not null) THEN
1080 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
1081 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim ) THEN
1082 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1083 p_fps_bal_context_2.act_info15 := 100 * l_output_table(outer_rec).balance_value;
1084 END IF;
1085 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
1086 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
1087 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1088 p_fps_bal_context_2.act_info16 := 100 * l_output_table(outer_rec).balance_value;
1089 END IF;
1090 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
1091 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1092 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1093 p_fps_bal_context_2.act_info17 :=100 * NVL(l_output_table(outer_rec).balance_value,0);
1094 END IF;
1095 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
1096 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1097 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1098 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
1099 END IF;
1100 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
1101 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1102 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1103 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1104 END IF;
1105 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
1106 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1107 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1108 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
1109 END IF;
1110 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
1111 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1112 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1113 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
1114 END IF;
1115 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
1116 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1117 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1118 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
1119 END IF;
1120 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
1121 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1122 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1123 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
1124 END IF;
1125 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
1126 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1127 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1128 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
1129 END IF;
1130 END IF;
1131 END IF;
1132 END LOOP;
1133 hr_utility.trace('After for i in 1..g_fps_aggr_bal_det_tab.last loop');
1134 END IF; --Not null check ends
1135 END LOOP;
1136 else
1137
1138 hr_utility.trace('After l_aggr_archive_flag'||l_aggr_archive_flag);
1139
1140 FOR outer_rec IN 1..l_output_table.count
1141 LOOP
1142
1143 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
1144
1145 FOR inner_rec IN 1..g_fps_bal_det_tab.last
1146 LOOP
1147 IF (g_fps_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id and l_output_table(outer_rec).balance_value is not null) THEN
1148 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
1149 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim ) THEN
1150 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1151 p_fps_bal_context_2.act_info15 := 100 * l_output_table(outer_rec).balance_value;
1152 hr_utility.trace('Taxable pay '||p_fps_bal_context_2.act_info15);
1153 END IF;
1154 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
1155 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1156 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1157 p_fps_bal_context_2.act_info16 := 100 * l_output_table(outer_rec).balance_value;
1158 END IF;
1159 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
1160 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1161 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1162 p_fps_bal_context_2.act_info17 :=100 * NVL(l_output_table(outer_rec).balance_value,0);
1163 END IF;
1164 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
1165 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1166 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1167 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
1168 END IF;
1169 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
1170 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1171 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1172 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1173 END IF;
1174 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
1175 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1176 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1177 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
1178 END IF;
1179 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
1180 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1181 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1182 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
1183 END IF;
1184 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
1185 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1186 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1187 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
1188 END IF;
1189 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
1190 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1191 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1192 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
1193 END IF;
1194 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
1195 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1196 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1197 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
1198 END IF;
1199 END IF;
1200 END IF;
1201 END LOOP;
1202 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
1203 END IF; --Not null check ends
1204 END LOOP;
1205
1206 end if;
1207
1208 RETURN true;
1209
1210 EXCEPTION
1211 WHEN OTHERS THEN
1212 hr_utility.set_location('Error in function fetch_asg_det2 ', 15);
1213 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
1214 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
1215 RAISE;
1216 END fetch_asg_det2;
1217 --
1218
1219 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2)
1220 FUNCTION fetch_ni_det(
1221 p_last_asg_action_id IN NUMBER,
1222 p_asg_id IN NUMBER,
1223 p_effective_date IN DATE,
1224 l_archive_tab_ni_det OUT nocopy action_info_table )
1225 RETURN BOOLEAN
1226 IS
1227 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
1228 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
1229 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_ni_det';
1230 l_asg_primary_flag VARCHAR2(1);
1231 l_per_agg_flag VARCHAR2(1);
1232 l_aggr_archive_flag VARCHAR2(1);
1233 l_last_chld_act_id NUMBER;
1234 l_tax_pay_val NUMBER;
1235 l_tax_pay_def_bal_id NUMBER;
1236 l_per_ni_flag VARCHAR2(1);
1237 l_ni_rpt_asg_id NUMBER;
1238 l_ni_rpt_date DATE;
1239 l_ni_non_rti VARCHAR2(1) := 'N';
1240
1241 l_nia_total NUMBER(15) :=0;
1242 l_nia_able NUMBER(15) :=0;
1243 l_nib_total NUMBER(15) :=0;
1244 l_nib_able NUMBER(15) :=0;
1245 l_nic_total NUMBER(15) :=0;
1246 l_nic_able NUMBER(15) :=0;
1247 l_nid_total NUMBER(15) :=0;
1248 l_nid_able NUMBER(15) :=0;
1249 l_nie_total NUMBER(15) :=0;
1250 l_nie_able NUMBER(15) :=0;
1251 l_nij_total NUMBER(15) :=0;
1252 l_nij_able NUMBER(15) :=0;
1253 l_nil_total NUMBER(15) :=0;
1254 l_nil_able NUMBER(15) :=0;
1255
1256 l_nia_able_run NUMBER(15) :=0;
1257 l_nia_e_run NUMBER(15) :=0;
1258 l_nib_able_run NUMBER(15) :=0;
1259 l_nib_e_run NUMBER(15) :=0;
1260 l_nic_able_run NUMBER(15) :=0;
1261 l_nic_e_run NUMBER(15) :=0;
1262 l_nid_able_run NUMBER(15) :=0;
1263 l_nid_e_run NUMBER(15) :=0;
1264 l_nie_able_run NUMBER(15) :=0;
1265 l_nie_e_run NUMBER(15) :=0;
1266 l_nij_able_run NUMBER(15) :=0;
1267 l_nij_e_run NUMBER(15) :=0;
1268 l_nil_able_run NUMBER(15) :=0;
1269 l_nil_e_run NUMBER(15) :=0;
1270
1271 i NUMBER :=-1;
1272
1273 already_a NUMBER := -1;
1274 already_b NUMBER := -1;
1275 already_c NUMBER := -1;
1276 already_d NUMBER := -1;
1277 already_e NUMBER := -1;
1278 already_j NUMBER := -1;
1279 already_l NUMBER := -1;
1280
1281
1282 l_ytd_dim VARCHAR2(15) := '_ASG_TD_YTD';
1283 l_reversal VARCHAR2(1);
1284
1285 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
1286 IS
1287 SELECT trim(asg.primary_flag) asg_primary_flag,
1288 trim(pap.per_information10) per_agg_flag,
1289 trim(pap.per_information9) per_ni_flag
1290 FROM per_all_people_f pap,
1291 per_all_assignments_f asg
1292 WHERE asg.assignment_id = c_asg_id
1293 AND pap.person_id = asg.person_id
1294 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
1295 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
1296
1297 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
1298 IS
1299 SELECT MAX(ASSIGNMENT_ACTION_ID)
1300 FROM pay_assignment_actions
1301 WHERE SOURCE_ACTION_ID = c_lst_act_id;
1302
1303 cursor csr_get_taxable_pay(c_balance_name varchar2, c_dim_name varchar2) is
1304 select pdb.defined_balance_id from pay_defined_balances pdb,
1305 pay_balance_dimensions pbd,
1306 pay_balance_types pbt
1307 where pbt.balance_name = c_balance_name
1308 and pbd.database_item_suffix = c_dim_name
1309 and pbt.balance_type_id= pdb.balance_type_id
1310 and pbd.balance_dimension_id = pdb.balance_dimension_id
1311 and pbt.legislation_code = 'GB'
1312 and pbd.legislation_code = 'GB'
1313 and pdb.legislation_code = 'GB';
1314
1315 -- Cursor to fetch the RTI NI Reporting assignment for this person.
1316 cursor csr_get_ni_rpt_asg(c_asg_id number) is
1317 select
1318 distinct paei.assignment_id , fnd_date.canonical_to_date(paei.AEI_INFORMATION2)
1319 from per_all_assignments_f paaf1, per_all_assignments_f paaf2 ,per_assignment_extra_info paei,
1320 pay_all_payrolls_f pay,
1321 hr_soft_coding_keyflex sck
1322 where paaf1.assignment_id = c_asg_id
1323 and paaf1.person_id = paaf2.person_id
1324 and paaf2.assignment_type = 'E'
1325 and paei.assignment_id = paaf2.assignment_id
1326 and paei.AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION'
1327 and paei. AEI_INFORMATION1 = 'Y'
1328 AND pay.payroll_id = paaf2.payroll_id
1329 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
1330 and upper(g_tax_ref) = upper(sck.segment1)
1331 and p_effective_date between pay.effective_start_date and pay.effective_end_date
1332 AND paaf1.effective_start_date =
1333 ( select max(asg2.effective_start_date)
1334 from per_all_assignments_f asg2
1335 where asg2.assignment_id = paaf1.assignment_id
1336 and asg2.assignment_type = 'E'
1337 and asg2.effective_start_date <= g_end_year
1338 )
1339 AND paaf2.effective_start_date =
1340 ( select max(asg2.effective_start_date)
1341 from per_all_assignments_f asg2
1342 where asg2.assignment_id = paaf2.assignment_id
1343 and asg2.assignment_type = 'E'
1344 and asg2.effective_start_date <= g_end_year
1345 )
1346 order by 2 desc;
1347
1348 cursor csr_tax_pay_value(p_last_asg_action_id number,l_tax_pay_def_bal_id number)
1349 is
1350 select hr_dirbal.get_balance(p_last_asg_action_id,l_tax_pay_def_bal_id) from dual;
1351
1352 cursor csr_reversal is
1353 select ACTION_TYPE from pay_assignment_actions paa, pay_payroll_actions ppa
1354 where paa.assignment_action_id = p_last_asg_action_id
1355 and paa.payroll_action_id = ppa.payroll_action_id
1356 and ACTION_TYPE in ('V');
1357
1358 BEGIN
1359 hr_utility.set_location('Entering: '||l_proc,1);
1360 l_context_lst(1).tax_unit_id :=NULL;
1361 l_context_lst(1).jurisdiction_code :=NULL;
1362 l_context_lst(1).source_id :=NULL;
1363 l_context_lst(1).source_text :=NULL;
1364 l_context_lst(1).source_number :=NULL;
1365 l_context_lst(1).source_text2 :=NULL;
1366 l_context_lst(1).time_def_id :=NULL;
1367 l_context_lst(1).balance_date :=NULL;
1368 l_context_lst(1).local_unit_id :=NULL;
1369 l_context_lst(1).source_number2 :=NULL;
1370 l_context_lst(1).organization_id :=NULL;
1371
1372 l_asg_primary_flag := 'N';
1373 l_per_agg_flag := 'N';
1374 l_aggr_archive_flag := 'N';
1375
1376 hr_utility.set_location('assignment_id :' || p_asg_id,15);
1377
1378 IF l_archive_tab_ni_det.count > 0 THEN
1379 FOR i IN l_archive_tab_ni_det.first .. l_archive_tab_ni_det.last
1380 LOOP
1381 hr_utility.set_location('i : ' || i ,999);
1382 if l_archive_tab_ni_det(i).act_info1 = 'A' then
1383 already_a := i;
1384 elsif l_archive_tab_ni_det(i).act_info1 = 'B' then
1385 already_b := i;
1386 elsif l_archive_tab_ni_det(i).act_info1 = 'C' then
1387 already_c := i;
1388 elsif l_archive_tab_ni_det(i).act_info1 = 'D' then
1389 already_d := i;
1390 elsif l_archive_tab_ni_det(i).act_info1 = 'E' then
1391 already_e := i;
1392 elsif l_archive_tab_ni_det(i).act_info1 = 'J' then
1393 already_j := i;
1394 elsif l_archive_tab_ni_det(i).act_info1 = 'L' then
1395 already_l := i;
1396 end if;
1397
1398 END LOOP;
1399 END IF;
1400
1401 OPEN csr_asg(p_asg_id, p_effective_date);
1402 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag,l_per_ni_flag;
1403 CLOSE csr_asg;
1404
1405 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
1406 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
1407 hr_utility.set_location('l_per_ni_flag :' || l_per_ni_flag,15);
1408
1409 IF NVL(l_per_agg_flag,'N') = 'Y' THEN
1410 hr_utility.trace('Aggregation Found.');
1411 l_aggr_archive_flag := 'Y';
1412 l_ytd_dim := '_PER_TD_YTD';
1413 END IF;
1414 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
1415 ---
1416
1417 open csr_reversal;
1418 fetch csr_reversal into l_reversal;
1419 close csr_reversal;
1420
1421 -- Get the child assignment action id to Archive Tax code and Tax basis.
1422 -- As the run results are generated with child assignment action id.
1423
1424 OPEN csr_child_act_id(p_last_asg_action_id);
1425 FETCH csr_child_act_id INTO l_last_chld_act_id;
1426 CLOSE csr_child_act_id;
1427
1428 IF l_last_chld_act_id is NULL THEN
1429 l_last_chld_act_id := p_last_asg_action_id;
1430 END IF;
1431
1432 hr_utility.trace('l_last_chld_act_id : '||l_last_chld_act_id);
1433
1434 open csr_get_taxable_pay('Taxable Pay', '_ASG_RUN');
1435 fetch csr_get_taxable_pay into l_tax_pay_def_bal_id;
1436 close csr_get_taxable_pay;
1437
1438 open csr_tax_pay_value(p_last_asg_action_id,l_tax_pay_def_bal_id);
1439 fetch csr_tax_pay_value into l_tax_pay_val;
1440 close csr_tax_pay_value;
1441 -- Test whether we can get run level value with parent action id.
1442 -- If not pass the child assignment action id.
1443
1444 --Get NI RTI reporting assignment
1445 open csr_get_ni_rpt_asg(p_asg_id);
1446 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
1447 close csr_get_ni_rpt_asg;
1448
1449 --NI Aggregation and if the assignment is RTI Reporting , consider it as Aggregation case
1450 if NVL(l_per_ni_flag,'N') = 'Y' and NVL(l_per_agg_flag,'N') = 'N' then
1451 if l_ni_rpt_asg_id = p_asg_id then
1452 l_aggr_archive_flag := 'Y';
1453 l_ytd_dim := '_PER_TD_YTD';
1454 hr_utility.trace('RTI Reporting Assignment.');
1455 hr_utility.trace('l_aggr_archive_flag : '||l_aggr_archive_flag);
1456 else
1457 l_ni_non_rti := 'Y';
1458 hr_utility.trace('Non RTI Reporting Assignment.');
1459 hr_utility.trace('l_ni_non_rti : '||l_ni_non_rti);
1460 end if;
1461 end if;
1462
1463 if NVL(l_aggr_archive_flag,'N') = 'Y' then
1464 if l_tax_pay_val = 0 then
1465 pay_balance_pkg.get_value(p_assignment_action_id => l_last_chld_act_id,
1466 p_defined_balance_lst => g_aggr_defined_balance_lst_ni ,
1467 p_context_lst => l_context_lst ,
1468 p_output_table => l_output_table );
1469 else
1470 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
1471 p_defined_balance_lst => g_aggr_defined_balance_lst_ni ,
1472 p_context_lst => l_context_lst ,
1473 p_output_table => l_output_table );
1474 end if;
1475
1476 else
1477 if l_tax_pay_val = 0 then
1478 pay_balance_pkg.get_value(p_assignment_action_id => l_last_chld_act_id,
1479 p_defined_balance_lst => g_defined_balance_lst_ni ,
1480 p_context_lst => l_context_lst ,
1481 p_output_table => l_output_table );
1482 else
1483 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
1484 p_defined_balance_lst => g_defined_balance_lst_ni ,
1485 p_context_lst => l_context_lst ,
1486 p_output_table => l_output_table );
1487 end if;
1488 end if;
1489
1490 hr_utility.trace('After invoking get_value');
1491 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
1492 hr_utility.set_location('l_ytd_dim :' || l_ytd_dim,15);
1493
1494 if NVL(l_aggr_archive_flag,'N') = 'Y' then
1495
1496 FOR outer_rec IN 1..l_output_table.count
1497 LOOP
1498
1499 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
1500
1501 FOR inner_rec IN 1..g_fps_ni_aggr_bal_det_tab.last
1502 LOOP
1503 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id and l_output_table(outer_rec).balance_value is not null) THEN
1504 IF g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI A Total' THEN
1505 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1506 l_nia_total := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1507 hr_utility.trace('After invoking ni D'||l_output_table(outer_rec).balance_value);
1508 END IF;
1509 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI A Able' THEN
1510 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1511 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1512 l_nia_able := 100 * l_output_table(outer_rec).balance_value;
1513 END IF;
1514 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI B Total' THEN
1515 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1516 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1517 l_nib_total := 100 * l_output_table(outer_rec).balance_value;
1518 END IF;
1519 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI B Able' THEN
1520 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1521 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1522 l_nib_able := 100 * l_output_table(outer_rec).balance_value;
1523 END IF;
1524 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI C Total' THEN
1525 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1526 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1527 l_nic_total := 100 * l_output_table(outer_rec).balance_value;
1528 END IF;
1529 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI C Able' THEN
1530 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1531 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1532 l_nic_able := 100 * l_output_table(outer_rec).balance_value;
1533 END IF;
1534 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI D Total' THEN
1535 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1536 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1537 l_nid_total := 100 * l_output_table(outer_rec).balance_value;
1538 END IF;
1539 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI D Able' THEN
1540 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1541 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1542 l_nid_able := 100 * l_output_table(outer_rec).balance_value;
1543 END IF;
1544 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI E Total' THEN
1545 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1546 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1547 l_nie_total := 100 * l_output_table(outer_rec).balance_value;
1548 END IF;
1549 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI E Able' THEN
1550 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1551 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1552 l_nie_able := 100 * l_output_table(outer_rec).balance_value;
1553 END IF;
1554 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI J Total' THEN
1555 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1556 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1557 l_nij_total := 100 * l_output_table(outer_rec).balance_value;
1558 END IF;
1559 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI J Able' THEN
1560 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1561 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1562 l_nij_able := 100 * l_output_table(outer_rec).balance_value;
1563 END IF;
1564 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI L Total' THEN
1565 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1566 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1567 l_nil_total := 100 * l_output_table(outer_rec).balance_value;
1568 END IF;
1569 elsif g_fps_ni_aggr_bal_det_tab(inner_rec).balance_name = 'NI L Able' THEN
1570 IF (g_fps_ni_aggr_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1571 g_fps_ni_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1572 l_nil_able := 100 * l_output_table(outer_rec).balance_value;
1573 END IF;
1574 END IF;
1575 END IF;
1576 END LOOP;
1577 hr_utility.trace('After for i in 1..g_fps_ni_aggr_bal_det_tab.last loop');
1578 END IF; --Not null check ends
1579 END LOOP;
1580
1581 else
1582
1583 FOR outer_rec IN 1..l_output_table.count
1584 LOOP
1585
1586 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
1587
1588 FOR inner_rec IN 1..g_fps_ni_bal_det_tab.last
1589 LOOP
1590 IF (g_fps_ni_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id and l_output_table(outer_rec).balance_value is not null) THEN
1591 IF g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI A Total' THEN
1592 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1593 l_nia_total := 100 * NVL(l_output_table(outer_rec).balance_value,0);
1594 END IF;
1595 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI A Able' THEN
1596 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1597 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1598 l_nia_able := 100 * l_output_table(outer_rec).balance_value;
1599 END IF;
1600 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI B Total' THEN
1601 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1602 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1603 l_nib_total := 100 * l_output_table(outer_rec).balance_value;
1604 END IF;
1605 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI B Able' THEN
1606 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1607 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1608 l_nib_able := 100 * l_output_table(outer_rec).balance_value;
1609 END IF;
1610 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI C Total' THEN
1611 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1612 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1613 l_nic_total := 100 * l_output_table(outer_rec).balance_value;
1614 END IF;
1615 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI C Able' THEN
1616 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1617 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1618 l_nic_able := 100 * l_output_table(outer_rec).balance_value;
1619 END IF;
1620 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI D Total' THEN
1621 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1622 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1623 l_nid_total := 100 * l_output_table(outer_rec).balance_value;
1624 END IF;
1625 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI D Able' THEN
1626 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1627 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1628 l_nid_able := 100 * l_output_table(outer_rec).balance_value;
1629 END IF;
1630 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI E Total' THEN
1631 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1632 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1633 l_nie_total := 100 * l_output_table(outer_rec).balance_value;
1634 END IF;
1635 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI E Able' THEN
1636 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1637 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1638 l_nie_able := 100 * l_output_table(outer_rec).balance_value;
1639 END IF;
1640 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI J Total' THEN
1641 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1642 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1643 l_nij_total := 100 * l_output_table(outer_rec).balance_value;
1644 END IF;
1645 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI J Able' THEN
1646 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1647 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1648 l_nij_able := 100 * l_output_table(outer_rec).balance_value;
1649 END IF;
1650 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI L Total' THEN
1651 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1652 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1653 l_nil_total := 100 * l_output_table(outer_rec).balance_value;
1654 END IF;
1655 elsif g_fps_ni_bal_det_tab(inner_rec).balance_name = 'NI L Able' THEN
1656 IF (g_fps_ni_bal_det_tab(inner_rec).database_item_suffix = l_ytd_dim) THEN
1657 g_fps_ni_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
1658 l_nil_able := 100 * l_output_table(outer_rec).balance_value;
1659 END IF;
1660 END IF;
1661 END IF;
1662 END LOOP;
1663 hr_utility.trace('After for i in 1..g_fps_ni_bal_det_tab.last loop');
1664 END IF; --Not null check ends
1665 END LOOP;
1666
1667 end if;
1668
1669 hr_utility.trace('After invoking l_nia_total '||l_nia_total);
1670 hr_utility.trace('After invoking l_nia_able '||l_nia_able);
1671 hr_utility.trace('After invoking l_nib_total '||l_nib_total);
1672 hr_utility.trace('After invoking l_nib_able '||l_nib_able);
1673 hr_utility.trace('After invoking l_nic_total '||l_nic_total);
1674 hr_utility.trace('After invoking l_nic_able '||l_nic_able);
1675 hr_utility.trace('After invoking l_nid_total '||l_nid_total);
1676 hr_utility.trace('After invoking l_nid_able '||l_nid_able);
1677 hr_utility.trace('After invoking l_nie_total '||l_nie_total);
1678 hr_utility.trace('After invoking l_nie_able '||l_nie_able);
1679 hr_utility.trace('After invoking l_nij_total '||l_nij_total);
1680 hr_utility.trace('After invoking l_nij_able '||l_nij_able);
1681 hr_utility.trace('After invoking l_nil_total '||l_nil_total);
1682 hr_utility.trace('After invoking l_nil_able '||l_nil_able);
1683
1684 if l_reversal is not null then
1685
1686
1687 l_nia_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nia_able_id_run);
1688 l_nia_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nia_e_id_run);
1689
1690 l_nib_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nib_able_id_run);
1691 l_nib_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nib_e_id_run);
1692
1693 l_nic_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nic_able_id_run);
1694 l_nic_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nic_e_id_run);
1695
1696 l_nid_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nid_able_id_run);
1697 l_nid_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nid_e_id_run);
1698
1699 l_nie_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nie_able_id_run);
1700 l_nie_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nie_e_id_run);
1701
1702 l_nij_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nij_able_id_run);
1703 l_nij_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nij_e_id_run);
1704
1705 l_nil_able_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nil_able_id_run);
1706 l_nil_e_run := hr_dirbal.get_balance(l_last_chld_act_id, g_nil_e_id_run);
1707
1708 end if;
1709
1710 if NVL(l_aggr_archive_flag,'N') = 'Y' then
1711
1712 hr_utility.trace('fetching NI Aggr balances');
1713
1714 hr_utility.trace('fetching l_nid_total'||l_nid_total);
1715 hr_utility.trace('fetching l_nid_able'||l_nid_able);
1716
1717 -- Fetch 6 NI balances based on the Total and Able
1718 IF (NVL(l_nia_total,0) <> 0 OR NVL(l_nia_able,0) <> 0 ) OR
1719 ( l_reversal is not null and NVL(l_nia_able_run,0) <> 0 OR NVL(l_nia_e_run,0) <> 0) THEN
1720
1721 IF already_a = -1 THEN
1722 i := i+1;
1723 already_a := i;
1724 END IF;
1725
1726 hr_utility.trace('fetching NI A Total/Able balances');
1727 l_archive_tab_ni_det(already_a).assignment_id := p_asg_id;
1728 l_archive_tab_ni_det(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
1729 l_archive_tab_ni_det(already_a).act_info1 := 'A';
1730 l_archive_tab_ni_det(already_a).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nia_lel_id);
1731 l_archive_tab_ni_det(already_a).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nia_et_id);
1732 l_archive_tab_ni_det(already_a).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nia_uap_id);
1733 l_archive_tab_ni_det(already_a).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nia_uel_id);
1734 l_archive_tab_ni_det(already_a).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nia_r_ytd_id);
1735 l_archive_tab_ni_det(already_a).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nia_e_ytd_id);
1736 END IF;
1737 IF (NVL(l_nib_total,0) <> 0 OR NVL(l_nib_able,0) <> 0 ) OR
1738 ( l_reversal is not null and NVL(l_nib_able_run,0) <> 0 OR NVL(l_nib_e_run,0) <> 0) THEN
1739
1740 IF already_b = -1 THEN
1741 i := i+1;
1742 already_b := i;
1743 END IF;
1744 hr_utility.trace('fetching NI B Total/Able balances');
1745 l_archive_tab_ni_det(already_b).assignment_id := p_asg_id;
1746 l_archive_tab_ni_det(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
1747 l_archive_tab_ni_det(already_b).act_info1 := 'B';
1748 l_archive_tab_ni_det(already_b).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nib_lel_id);
1749 l_archive_tab_ni_det(already_b).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nib_et_id);
1750 l_archive_tab_ni_det(already_b).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nib_uap_id);
1751 l_archive_tab_ni_det(already_b).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nib_uel_id);
1752 l_archive_tab_ni_det(already_b).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nib_r_ytd_id);
1753 l_archive_tab_ni_det(already_b).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nib_e_ytd_id);
1754 END IF;
1755 IF (NVL(l_nic_total,0) <> 0 OR NVL(l_nic_able,0) <> 0 ) OR
1756 ( l_reversal is not null and NVL(l_nic_able_run,0) <> 0 OR NVL(l_nic_e_run,0) <> 0) THEN
1757 IF already_c = -1 THEN
1758 i := i+1;
1759 already_c := i;
1760 END IF;
1761 hr_utility.trace('fetching NI C Total/Able balances');
1762 l_archive_tab_ni_det(already_c).assignment_id := p_asg_id;
1763 l_archive_tab_ni_det(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
1764 l_archive_tab_ni_det(already_c).act_info1 := 'C';
1765 l_archive_tab_ni_det(already_c).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nic_lel_id);
1766 l_archive_tab_ni_det(already_c).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nic_et_id);
1767 l_archive_tab_ni_det(already_c).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nic_uap_id);
1768 l_archive_tab_ni_det(already_c).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nic_uel_id);
1769 l_archive_tab_ni_det(already_c).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nic_r_ytd_id);
1770 l_archive_tab_ni_det(already_c).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nic_e_ytd_id);
1771 END IF;
1772 IF (NVL(l_nid_total,0) <> 0 OR NVL(l_nid_able,0) <> 0 ) OR
1773 ( l_reversal is not null and NVL(l_nid_able_run,0) <> 0 OR NVL(l_nid_e_run,0) <> 0) THEN
1774 IF already_d = -1 THEN
1775 i := i+1;
1776 already_d := i;
1777 END IF;
1778 hr_utility.trace('fetching NI D Total/Able balances');
1779 l_archive_tab_ni_det(already_d).assignment_id := p_asg_id;
1780 l_archive_tab_ni_det(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
1781 l_archive_tab_ni_det(already_d).act_info1 := 'D';
1782 l_archive_tab_ni_det(already_d).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nid_lel_id);
1783 l_archive_tab_ni_det(already_d).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nid_et_id);
1784 l_archive_tab_ni_det(already_d).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nid_uap_id);
1785 l_archive_tab_ni_det(already_d).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nid_uel_id);
1786 l_archive_tab_ni_det(already_d).act_info7 := 100 * hr_dirbal.get_balance(l_last_chld_act_id, g_per_nid_r_ytd_id);
1787 l_archive_tab_ni_det(already_d).act_info8 := 100 * hr_dirbal.get_balance(l_last_chld_act_id, g_per_nid_e_ytd_id);
1788 END IF;
1789 IF (NVL(l_nie_total,0) <> 0 OR NVL(l_nie_able,0) <> 0 ) OR
1790 ( l_reversal is not null and NVL(l_nie_able_run,0) <> 0 OR NVL(l_nie_e_run,0) <> 0) THEN
1791 IF already_e = -1 THEN
1792 i := i+1;
1793 already_e := i;
1794 END IF;
1795 hr_utility.trace('fetching NI E Total/Able balances');
1796 l_archive_tab_ni_det(already_e).assignment_id := p_asg_id;
1797 l_archive_tab_ni_det(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
1798 l_archive_tab_ni_det(already_e).act_info1 := 'E';
1799 l_archive_tab_ni_det(already_e).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nie_lel_id);
1800 l_archive_tab_ni_det(already_e).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nie_et_id);
1801 l_archive_tab_ni_det(already_e).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nie_uap_id);
1802 l_archive_tab_ni_det(already_e).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nie_uel_id);
1803 l_archive_tab_ni_det(already_e).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nie_r_ytd_id);
1804 l_archive_tab_ni_det(already_e).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nie_e_ytd_id);
1805 END IF;
1806 IF (NVL(l_nij_total,0) <> 0 OR NVL(l_nij_able,0) <> 0 ) OR
1807 ( l_reversal is not null and NVL(l_nij_able_run,0) <> 0 OR NVL(l_nij_e_run,0) <> 0) THEN
1808 IF already_j = -1 THEN
1809 i := i+1;
1810 already_j := i;
1811 END IF;
1812 hr_utility.trace('fetching NI J Total/Able balances');
1813 l_archive_tab_ni_det(already_j).assignment_id := p_asg_id;
1814 l_archive_tab_ni_det(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
1815 l_archive_tab_ni_det(already_j).act_info1 := 'J';
1816 l_archive_tab_ni_det(already_j).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nij_lel_id);
1817 l_archive_tab_ni_det(already_j).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nij_et_id);
1818 l_archive_tab_ni_det(already_j).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nij_uap_id);
1819 l_archive_tab_ni_det(already_j).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nij_uel_id);
1820 l_archive_tab_ni_det(already_j).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nij_r_ytd_id);
1821 l_archive_tab_ni_det(already_j).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nij_e_ytd_id);
1822 END IF;
1823 IF (NVL(l_nil_total,0) <> 0 OR NVL(l_nil_able,0) <> 0 ) OR
1824 ( l_reversal is not null and NVL(l_nil_able_run,0) <> 0 OR NVL(l_nil_e_run,0) <> 0) THEN
1825 IF already_l = -1 THEN
1826 i := i+1;
1827 already_l := i;
1828 END IF;
1829 hr_utility.trace('fetching NI L Total/Able balances');
1830 l_archive_tab_ni_det(already_l).assignment_id := p_asg_id;
1831 l_archive_tab_ni_det(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
1832 l_archive_tab_ni_det(already_l).act_info1 := 'L';
1833 l_archive_tab_ni_det(already_l).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nil_lel_id);
1834 l_archive_tab_ni_det(already_l).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nil_et_id);
1835 l_archive_tab_ni_det(already_l).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nil_uap_id);
1836 l_archive_tab_ni_det(already_l).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nil_uel_id);
1837 l_archive_tab_ni_det(already_l).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nil_r_ytd_id);
1838 l_archive_tab_ni_det(already_l).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_per_nil_e_ytd_id);
1839 END IF;
1840
1841 else --Aggregation else
1842 hr_utility.trace('fetching NI balances');
1843 -- Fetch 6 NI balances based on the Total and Able
1844 IF (NVL(l_nia_total,0) <> 0 OR NVL(l_nia_able,0) <> 0 ) OR
1845 ( l_reversal is not null and NVL(l_nia_able_run,0) <> 0 OR NVL(l_nia_e_run,0) <> 0) THEN
1846 IF already_a = -1 THEN
1847 i := i+1;
1848 already_a := i;
1849 END IF;
1850 hr_utility.trace('fetching NI A Total/Able balances');
1851 l_archive_tab_ni_det(already_a).assignment_id := p_asg_id;
1852 l_archive_tab_ni_det(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
1853 l_archive_tab_ni_det(already_a).act_info1 := 'A';
1854 l_archive_tab_ni_det(already_a).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nia_lel_id);
1855 l_archive_tab_ni_det(already_a).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nia_et_id);
1856 l_archive_tab_ni_det(already_a).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nia_uap_id);
1857 l_archive_tab_ni_det(already_a).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nia_uel_id);
1858 l_archive_tab_ni_det(already_a).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nia_r_ytd_id);
1859 l_archive_tab_ni_det(already_a).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nia_e_ytd_id);
1860 END IF;
1861 IF (NVL(l_nib_total,0) <> 0 OR NVL(l_nib_able,0) <> 0 ) OR
1862 ( l_reversal is not null and NVL(l_nib_able_run,0) <> 0 OR NVL(l_nib_e_run,0) <> 0) THEN
1863 IF already_b = -1 THEN
1864 i := i+1;
1865 already_b := i;
1866 END IF;
1867 hr_utility.trace('fetching NI B Total/Able balances');
1868 l_archive_tab_ni_det(already_b).assignment_id := p_asg_id;
1869 l_archive_tab_ni_det(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
1870 l_archive_tab_ni_det(already_b).act_info1 := 'B';
1871 l_archive_tab_ni_det(already_b).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nib_lel_id);
1872 l_archive_tab_ni_det(already_b).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nib_et_id);
1873 l_archive_tab_ni_det(already_b).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nib_uap_id);
1874 l_archive_tab_ni_det(already_b).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nib_uel_id);
1875 l_archive_tab_ni_det(already_b).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nib_r_ytd_id);
1876 l_archive_tab_ni_det(already_b).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nib_e_ytd_id);
1877 END IF;
1878 IF (NVL(l_nic_total,0) <> 0 OR NVL(l_nic_able,0) <> 0 ) OR
1879 ( l_reversal is not null and NVL(l_nic_able_run,0) <> 0 OR NVL(l_nic_e_run,0) <> 0) THEN
1880 IF already_c = -1 THEN
1881 i := i+1;
1882 already_c := i;
1883 END IF;
1884 hr_utility.trace('fetching NI C Total/Able balances');
1885 l_archive_tab_ni_det(already_c).assignment_id := p_asg_id;
1886 l_archive_tab_ni_det(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
1887 l_archive_tab_ni_det(already_c).act_info1 := 'C';
1888 l_archive_tab_ni_det(already_c).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nic_lel_id);
1889 l_archive_tab_ni_det(already_c).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nic_et_id);
1890 l_archive_tab_ni_det(already_c).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nic_uap_id);
1891 l_archive_tab_ni_det(already_c).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nic_uel_id);
1892 l_archive_tab_ni_det(already_c).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nic_r_ytd_id);
1893 l_archive_tab_ni_det(already_c).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nic_e_ytd_id);
1894 END IF;
1895 IF (NVL(l_nid_total,0) <> 0 OR NVL(l_nid_able,0) <> 0 ) OR
1896 ( l_reversal is not null and NVL(l_nid_able_run,0) <> 0 OR NVL(l_nid_e_run,0) <> 0) THEN
1897 IF already_d = -1 THEN
1898 i := i+1;
1899 already_d := i;
1900 END IF;
1901 hr_utility.trace('fetching NI D Total/Able balances');
1902 l_archive_tab_ni_det(already_d).assignment_id := p_asg_id;
1903 l_archive_tab_ni_det(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
1904 l_archive_tab_ni_det(already_d).act_info1 := 'D';
1905 l_archive_tab_ni_det(already_d).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nid_lel_id);
1906 l_archive_tab_ni_det(already_d).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nid_et_id);
1907 l_archive_tab_ni_det(already_d).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nid_uap_id);
1908 l_archive_tab_ni_det(already_d).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nid_uel_id);
1909 l_archive_tab_ni_det(already_d).act_info7 := 100 * hr_dirbal.get_balance(l_last_chld_act_id, g_nid_r_ytd_id);
1910 l_archive_tab_ni_det(already_d).act_info8 := 100 * hr_dirbal.get_balance(l_last_chld_act_id, g_nid_e_ytd_id);
1911 END IF;
1912 IF (NVL(l_nie_total,0) <> 0 OR NVL(l_nie_able,0) <> 0 ) OR
1913 ( l_reversal is not null and NVL(l_nie_able_run,0) <> 0 OR NVL(l_nie_e_run,0) <> 0) THEN
1914 IF already_e = -1 THEN
1915 i := i+1;
1916 already_e := i;
1917 END IF;
1918 hr_utility.trace('fetching NI E Total/Able balances');
1919 l_archive_tab_ni_det(already_e).assignment_id := p_asg_id;
1920 l_archive_tab_ni_det(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
1921 l_archive_tab_ni_det(already_e).act_info1 := 'E';
1922 l_archive_tab_ni_det(already_e).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nie_lel_id);
1923 l_archive_tab_ni_det(already_e).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nie_et_id);
1924 l_archive_tab_ni_det(already_e).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nie_uap_id);
1925 l_archive_tab_ni_det(already_e).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nie_uel_id);
1926 l_archive_tab_ni_det(already_e).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nie_r_ytd_id);
1927 l_archive_tab_ni_det(already_e).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nie_e_ytd_id);
1928 END IF;
1929 IF (NVL(l_nij_total,0) <> 0 OR NVL(l_nij_able,0) <> 0 ) OR
1930 ( l_reversal is not null and NVL(l_nij_able_run,0) <> 0 OR NVL(l_nij_e_run,0) <> 0) THEN
1931 IF already_j = -1 THEN
1932 i := i+1;
1933 already_j := i;
1934 END IF;
1935 hr_utility.trace('fetching NI J Total/Able balances');
1936 l_archive_tab_ni_det(already_j).assignment_id := p_asg_id;
1937 l_archive_tab_ni_det(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
1938 l_archive_tab_ni_det(already_j).act_info1 := 'J';
1939 l_archive_tab_ni_det(already_j).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nij_lel_id);
1940 l_archive_tab_ni_det(already_j).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nij_et_id);
1941 l_archive_tab_ni_det(already_j).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nij_uap_id);
1942 l_archive_tab_ni_det(already_j).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nij_uel_id);
1943 l_archive_tab_ni_det(already_j).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nij_r_ytd_id);
1944 l_archive_tab_ni_det(already_j).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nij_e_ytd_id);
1945 END IF;
1946 IF (NVL(l_nil_total,0) <> 0 OR NVL(l_nil_able,0) <> 0 ) OR
1947 ( l_reversal is not null and NVL(l_nil_able_run,0) <> 0 OR NVL(l_nil_e_run,0) <> 0) THEN
1948 IF already_l = -1 THEN
1949 i := i+1;
1950 already_l := i;
1951 END IF;
1952 hr_utility.trace('fetching NI L Total/Able balances');
1953 l_archive_tab_ni_det(already_l).assignment_id := p_asg_id;
1954 l_archive_tab_ni_det(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
1955 l_archive_tab_ni_det(already_l).act_info1 := 'L';
1956 l_archive_tab_ni_det(already_l).act_info3 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nil_lel_id);
1957 l_archive_tab_ni_det(already_l).act_info4 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nil_et_id);
1958 l_archive_tab_ni_det(already_l).act_info5 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nil_uap_id);
1959 l_archive_tab_ni_det(already_l).act_info6 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nil_uel_id);
1960 l_archive_tab_ni_det(already_l).act_info7 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nil_r_ytd_id);
1961 l_archive_tab_ni_det(already_l).act_info8 := 100 * hr_dirbal.get_balance(p_last_asg_action_id, g_nil_e_ytd_id);
1962 END IF;
1963
1964 END IF; --Aggregation End
1965
1966 --Non RTI Reporting asg . make values to zero
1967 IF l_ni_non_rti = 'Y' then
1968 hr_utility.trace('Assigning zeroes Non RTI Reporting Assignment.');
1969
1970 IF l_archive_tab_ni_det.count > 0 THEN
1971 FOR i IN l_archive_tab_ni_det.first .. l_archive_tab_ni_det.last
1972 LOOP
1973 hr_utility.set_location('i : ' || i ,999);
1974 l_archive_tab_ni_det(i).act_info3 := 0;
1975 l_archive_tab_ni_det(i).act_info4 := 0;
1976 l_archive_tab_ni_det(i).act_info5 := 0;
1977 l_archive_tab_ni_det(i).act_info6 := 0;
1978 l_archive_tab_ni_det(i).act_info7 := 0;
1979 l_archive_tab_ni_det(i).act_info8 := 0;
1980
1981 END LOOP;
1982 END IF;
1983
1984 end if;
1985
1986 RETURN true;
1987
1988 EXCEPTION
1989 WHEN OTHERS THEN
1990 hr_utility.set_location('Error in function fetch_ni_det ', 15);
1991 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
1992 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
1993 RAISE;
1994 END fetch_ni_det;
1995
1996 --
1997 PROCEDURE fetch_nic_refund(
1998 p_asg_id IN NUMBER,
1999 l_archive_tab_ni_det IN OUT nocopy action_info_table )
2000
2001 is
2002
2003 --Below cursor fetches the nic_refund from asg extra details of the current assignment
2004 CURSOR csr_fetch_nic_refund
2005 IS
2006 SELECT AEI_INFORMATION10 nic_refund
2007 FROM PER_ASSIGNMENT_EXTRA_INFO
2008 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
2009 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
2010 AND assignment_id = p_asg_id;
2011
2012 l_nic_refund PER_ASSIGNMENT_EXTRA_INFO.AEI_INFORMATION10%type;
2013
2014 begin
2015 hr_utility.trace('Inside fetch_nic_refund');
2016
2017 open csr_fetch_nic_refund;
2018 fetch csr_fetch_nic_refund into l_nic_refund;
2019 close csr_fetch_nic_refund;
2020
2021 hr_utility.trace('EYU NIC Refunded from EIT'||l_nic_refund);
2022
2023 if l_nic_refund is NULL then
2024 l_nic_refund := 'Y' ;
2025 end if;
2026
2027 hr_utility.trace('EYU NIC Refunded after default'||l_nic_refund);
2028
2029 IF l_archive_tab_ni_det.count > 0 THEN
2030 FOR i IN l_archive_tab_ni_det.first .. l_archive_tab_ni_det.last
2031 LOOP
2032 hr_utility.set_location('i : ' || i ,999);
2033 if l_archive_tab_ni_det(i).act_info8 < 0 then
2034 l_archive_tab_ni_det(i).act_info11 := l_nic_refund;
2035 end if;
2036 END LOOP;
2037 END IF;
2038 hr_utility.trace('Leaving fetch_nic_refund');
2039 EXCEPTION
2040 WHEN OTHERS THEN
2041 hr_utility.trace('Fetch nic refund failed:'||SQLERRM);
2042 END;
2043 ---
2044
2045 procedure calculate_diff (pactid number , p_report_type varchar2,p_asg_id number,p_archive_tab IN OUT NOCOPY action_info_table,p_flag IN OUT NOCOPY varchar2 )
2046 is
2047
2048 cursor csr_fps_details is
2049 select
2050 (ACTION_INFORMATION1),
2051 (ACTION_INFORMATION2),
2052 (ACTION_INFORMATION3),
2053 (ACTION_INFORMATION18),
2054 (ACTION_INFORMATION19),
2055 (ACTION_INFORMATION20),
2056 (ACTION_INFORMATION21),
2057 (ACTION_INFORMATION22)
2058
2059 from pay_assignment_actions paa , pay_action_information pai
2060 where paa.payroll_action_id = pactid
2061 and paa.ASSIGNMENT_ID = p_asg_id
2062 and pai.action_context_id = paa.assignment_action_id
2063 and pai.ACTION_INFORMATION_CATEGORY = 'GB_RTI_FPS_ASG_DET2'
2064 and ACTION_CONTEXT_TYPE = 'AAP';
2065
2066 cursor csr_fps_details_payeagg is
2067 select
2068 (ACTION_INFORMATION1),
2069 (ACTION_INFORMATION2),
2070 (ACTION_INFORMATION3),
2071 (ACTION_INFORMATION18),
2072 (ACTION_INFORMATION19),
2073 (ACTION_INFORMATION20),
2074 (ACTION_INFORMATION21),
2075 (ACTION_INFORMATION22)
2076 from pay_assignment_actions paa , pay_action_information pai
2077 where paa.payroll_action_id = pactid
2078 and paa.ASSIGNMENT_ID in (select distinct assignment_id from per_all_assignments_f where person_id = p_archive_tab(0).person_id)
2079 and pai.action_context_id = paa.assignment_action_id
2080 and pai.ACTION_INFORMATION_CATEGORY = 'GB_RTI_FPS_ASG_DET2'
2081 and ACTION_INFORMATION30 = 'Y'
2082 and ACTION_CONTEXT_TYPE = 'AAP'
2083 order by substr(ACTION_INFORMATION29,instr(ACTION_INFORMATION29,',')+1,length(ACTION_INFORMATION29)) desc; --payroll run asg action id
2084
2085
2086 cursor csr_eyu_details is
2087 select
2088 (ACTION_INFORMATION15),
2089 (ACTION_INFORMATION16),
2090 (ACTION_INFORMATION17),
2091 (ACTION_INFORMATION18),
2092 (ACTION_INFORMATION19),
2093 (ACTION_INFORMATION20),
2094 (ACTION_INFORMATION21),
2095 (ACTION_INFORMATION22)
2096 from pay_assignment_actions paa , pay_action_information pai
2097 where paa.payroll_action_id = pactid
2098 and paa.ASSIGNMENT_ID = p_asg_id
2099 and pai.action_context_id = paa.assignment_action_id
2100 and pai.ACTION_INFORMATION_CATEGORY = 'GB_RTI_EYU_ASG_DET'
2101 and ACTION_CONTEXT_TYPE = 'AAP';
2102
2103 l_taxable_pay NUMBER;
2104 l_paye NUMBER;
2105 l_stud_loan NUMBER;
2106 l_ssp NUMBER;
2107 l_smp NUMBER;
2108 l_ospp NUMBER;
2109 l_sap NUMBER;
2110 l_aspp NUMBER;
2111 l_flag VARCHAR2(1) := 'N';
2112
2113 begin
2114 hr_utility.trace('Entering calculate_diff '||p_asg_id);
2115
2116 hr_utility.trace('Entering pactid '||pactid);
2117 hr_utility.trace('Entering p_report_type '||p_report_type);
2118
2119 if p_report_type = 'RTI_FPS_REP' then
2120
2121 --Paye Aggregation
2122 if NVL(p_archive_tab(0).act_info10,'N') = 'Y' then
2123 hr_utility.trace('Entering Aggregation '||p_report_type);
2124 open csr_fps_details_payeagg;
2125 fetch csr_fps_details_payeagg into l_taxable_pay,l_paye,l_stud_loan,l_ssp,l_smp,l_ospp,l_sap,l_aspp;
2126 close csr_fps_details_payeagg;
2127 else
2128 hr_utility.trace('Entering Others '||p_report_type);
2129 open csr_fps_details;
2130 fetch csr_fps_details into l_taxable_pay,l_paye,l_stud_loan,l_ssp,l_smp,l_ospp,l_sap,l_aspp;
2131 close csr_fps_details;
2132 end if;
2133
2134 elsif p_report_type = 'RTI_EYU_REP_13' then
2135 open csr_eyu_details;
2136 fetch csr_eyu_details into l_taxable_pay,l_paye,l_stud_loan,l_ssp,l_smp,l_ospp,l_sap,l_aspp;
2137 close csr_eyu_details;
2138 end if;
2139
2140
2141 hr_utility.trace('p_archive_tab(2).act_info15 '||p_archive_tab(2).act_info15);
2142 hr_utility.trace('p_archive_tab(2).act_info16 '||p_archive_tab(2).act_info16);
2143 hr_utility.trace('p_archive_tab(2).act_info17 '||p_archive_tab(2).act_info17);
2144 hr_utility.trace('p_archive_tab(2).act_info18 '||p_archive_tab(2).act_info18);
2145 hr_utility.trace('p_archive_tab(2).act_info19 '||p_archive_tab(2).act_info19);
2146 hr_utility.trace('p_archive_tab(2).act_info20 '||p_archive_tab(2).act_info20);
2147 hr_utility.trace('p_archive_tab(2).act_info21 '||p_archive_tab(2).act_info21);
2148 hr_utility.trace('p_archive_tab(2).act_info22 '||p_archive_tab(2).act_info22);
2149
2150 hr_utility.trace('l_taxable_pay : '||l_taxable_pay);
2151 hr_utility.trace('l_paye :'||l_paye);
2152 hr_utility.trace('l_stud_loan :'||l_stud_loan);
2153 hr_utility.trace('l_ssp :'||l_ssp);
2154 hr_utility.trace('l_smp :'||l_smp);
2155 hr_utility.trace('l_ospp :'||l_ospp);
2156 hr_utility.trace('l_sap :'||l_sap);
2157 hr_utility.trace('l_aspp :'||l_aspp);
2158
2159 --Suppressing zeroes
2160 if p_archive_tab(2).act_info15 = 0 and l_taxable_pay = 0 then
2161 p_archive_tab(2).act_info15 := NULL;
2162 end if;
2163
2164 if p_archive_tab(2).act_info16 = 0 and l_paye = 0 then
2165 p_archive_tab(2).act_info16 := NULL;
2166 end if;
2167
2168 if p_archive_tab(2).act_info17 = 0 and l_stud_loan = 0 then
2169 p_archive_tab(2).act_info17 := NULL;
2170 end if;
2171
2172 if p_archive_tab(2).act_info18 = 0 and l_ssp = 0 then
2173 p_archive_tab(2).act_info18 := NULL;
2174 end if;
2175
2176 if p_archive_tab(2).act_info19 = 0 and l_smp = 0 then
2177 p_archive_tab(2).act_info19 := NULL;
2178 end if;
2179
2180 if p_archive_tab(2).act_info20 = 0 and l_ospp = 0 then
2181 p_archive_tab(2).act_info20 := NULL;
2182 end if;
2183
2184 if p_archive_tab(2).act_info21 = 0 and l_sap = 0 then
2185 p_archive_tab(2).act_info21 := NULL;
2186 end if;
2187
2188 if p_archive_tab(2).act_info22 = 0 and l_aspp = 0 then
2189 p_archive_tab(2).act_info22 := NULL;
2190 end if;
2191
2192
2193 -- New YTD - Old YTD
2194 p_archive_tab(2).act_info15 := (p_archive_tab(2).act_info15) - (l_taxable_pay) ;
2195 p_archive_tab(2).act_info16 := (p_archive_tab(2).act_info16) - (l_paye) ;
2196 p_archive_tab(2).act_info17 := (p_archive_tab(2).act_info17) - (l_stud_loan) ;
2197 p_archive_tab(2).act_info18 := p_archive_tab(2).act_info18 - l_ssp ;
2198 p_archive_tab(2).act_info19 := p_archive_tab(2).act_info19 - l_smp ;
2199 p_archive_tab(2).act_info20 := p_archive_tab(2).act_info20 - l_ospp ;
2200 p_archive_tab(2).act_info21 := p_archive_tab(2).act_info21 - l_sap ;
2201 p_archive_tab(2).act_info22 := p_archive_tab(2).act_info22 - l_aspp ;
2202
2203 hr_utility.trace('p_archive_tab(2).act_info15 '||p_archive_tab(2).act_info15);
2204 hr_utility.trace('p_archive_tab(2).act_info16 '||p_archive_tab(2).act_info16);
2205 hr_utility.trace('p_archive_tab(2).act_info17 '||p_archive_tab(2).act_info17);
2206 hr_utility.trace('p_archive_tab(2).act_info18 '||p_archive_tab(2).act_info18);
2207 hr_utility.trace('p_archive_tab(2).act_info19 '||p_archive_tab(2).act_info19);
2208 hr_utility.trace('p_archive_tab(2).act_info20 '||p_archive_tab(2).act_info20);
2209 hr_utility.trace('p_archive_tab(2).act_info21 '||p_archive_tab(2).act_info21);
2210 hr_utility.trace('p_archive_tab(2).act_info22 '||p_archive_tab(2).act_info22);
2211
2212
2213 if p_archive_tab(2).act_info15 <> 0 or p_archive_tab(2).act_info16 <> 0 or p_archive_tab(2).act_info17 <> 0
2214 or p_archive_tab(2).act_info18 <> 0 or p_archive_tab(2).act_info19 <> 0 or p_archive_tab(2).act_info20 <> 0
2215 or p_archive_tab(2).act_info21 <> 0 or p_archive_tab(2).act_info22 <> 0 then
2216 l_flag := 'Y';
2217 hr_utility.trace('Differences are found. Archive the data.');
2218 end if;
2219 p_flag := l_flag;
2220 hr_utility.trace('Leaving calculate_diff');
2221 end calculate_diff;
2222
2223 --
2224 procedure calculate_diff_ni (pactid number , p_report_type varchar2 , p_asg_id number, p_archive_tab IN OUT NOCOPY action_info_table,p_flag IN OUT NOCOPY varchar2)
2225 is
2226
2227 cursor csr_fps_details is
2228 select
2229 (ACTION_INFORMATION1) l_ni_cat,
2230 (ACTION_INFORMATION3) l_lel,
2231 (ACTION_INFORMATION4) l_et,
2232 (ACTION_INFORMATION5) l_uap,
2233 (ACTION_INFORMATION6) l_uel,
2234 (ACTION_INFORMATION7) l_emr,
2235 (ACTION_INFORMATION8) l_emp
2236 from pay_assignment_actions paa , pay_action_information pai
2237 where paa.payroll_action_id = pactid
2238 and paa.ASSIGNMENT_ID = p_asg_id
2239 and pai.action_context_id = paa.assignment_action_id
2240 and pai.ACTION_INFORMATION_CATEGORY = 'GB_RTI_FPS_NI_DET'
2241 and ACTION_CONTEXT_TYPE = 'AAP';
2242
2243 l_lel NUMBER;
2244 l_et NUMBER;
2245 l_uap NUMBER;
2246 l_uel NUMBER;
2247 l_emr NUMBER;
2248 l_emp NUMBER;
2249 l_flag VARCHAR2(1) := 'N';
2250
2251 begin
2252 hr_utility.trace('Entering calculate_diff_ni');
2253
2254 IF p_archive_tab.count > 0 THEN
2255
2256 hr_utility.trace('Entering if');
2257
2258 FOR i IN p_archive_tab.first .. p_archive_tab.last
2259 LOOP
2260
2261 hr_utility.trace('Entering for loop1');
2262
2263 for ni_fps_rec in csr_fps_details
2264 loop
2265 hr_utility.trace('Entering for loop2');
2266
2267 if p_archive_tab(i).act_info1 = ni_fps_rec.l_ni_cat then
2268 hr_utility.trace('Entering if');
2269 hr_utility.trace('Entering ni_fps_rec.l_ni_cat '||ni_fps_rec.l_ni_cat);
2270 hr_utility.trace('Entering ni_fps_rec.l_lel '||ni_fps_rec.l_lel);
2271
2272 hr_utility.trace('Entering i '||i);
2273 hr_utility.trace('p_archive_tab(i).act_info3 '||p_archive_tab(i).act_info3);
2274 hr_utility.trace('p_archive_tab(i).act_info4 '||p_archive_tab(i).act_info4);
2275 hr_utility.trace('p_archive_tab(i).act_info5 '||p_archive_tab(i).act_info5);
2276 hr_utility.trace('p_archive_tab(i).act_info6 '||p_archive_tab(i).act_info6);
2277 hr_utility.trace('p_archive_tab(i).act_info7 '||p_archive_tab(i).act_info7);
2278 hr_utility.trace('p_archive_tab(i).act_info8 '||p_archive_tab(i).act_info8);
2279
2280 hr_utility.trace('ni_fps_rec.l_lel '||ni_fps_rec.l_lel);
2281 hr_utility.trace('ni_fps_rec.l_et '||ni_fps_rec.l_et);
2282
2283 -- New YTD - Old YTD
2284 p_archive_tab(i).act_info3 := p_archive_tab(i).act_info3 - ni_fps_rec.l_lel ;
2285 p_archive_tab(i).act_info4 := p_archive_tab(i).act_info4 - ni_fps_rec.l_et ;
2286 p_archive_tab(i).act_info5 := p_archive_tab(i).act_info5 - ni_fps_rec.l_uap ;
2287 p_archive_tab(i).act_info6 := p_archive_tab(i).act_info6 - ni_fps_rec.l_uel ;
2288 p_archive_tab(i).act_info7 := p_archive_tab(i).act_info7 - ni_fps_rec.l_emr ;
2289 p_archive_tab(i).act_info8 := p_archive_tab(i).act_info8 - ni_fps_rec.l_emp ;
2290
2291 hr_utility.trace('p_archive_tab(i).act_info3 '||p_archive_tab(i).act_info3);
2292 hr_utility.trace('p_archive_tab(i).act_info4 '||p_archive_tab(i).act_info4);
2293 hr_utility.trace('p_archive_tab(i).act_info5 '||p_archive_tab(i).act_info5);
2294 hr_utility.trace('p_archive_tab(i).act_info6 '||p_archive_tab(i).act_info6);
2295 hr_utility.trace('p_archive_tab(i).act_info7 '||p_archive_tab(i).act_info7);
2296 hr_utility.trace('p_archive_tab(i).act_info8 '||p_archive_tab(i).act_info8);
2297
2298 if p_archive_tab(i).act_info3 <> 0 or p_archive_tab(i).act_info4 <> 0 or p_archive_tab(i).act_info5 <> 0
2299 or p_archive_tab(i).act_info6 <> 0 or p_archive_tab(i).act_info7 <> 0 or p_archive_tab(i).act_info8 <> 0
2300 then
2301 l_flag := 'Y';
2302 hr_utility.trace('Differences are found.Archive the data.');
2303 end if;
2304 end if;
2305 end loop;
2306
2307 end loop;
2308 END IF;
2309 p_flag := l_flag;
2310 hr_utility.trace('Leaving calculate_diff_ni');
2311 end calculate_diff_ni;
2312
2313 procedure calculate_diff_ni_payeagg (pactid number , p_report_type varchar2 , p_asg_id number, p_person_id number,p_archive_tab IN OUT NOCOPY action_info_table,p_flag IN OUT NOCOPY varchar2)
2314 is
2315
2316 cursor csr_get_latest_fps_asg is
2317 select
2318 pai.assignment_id
2319 from pay_assignment_actions paa , pay_action_information pai
2320 where paa.payroll_action_id = pactid
2321 and paa.ASSIGNMENT_ID in (select distinct assignment_id from per_all_assignments_f where person_id = p_person_id)
2322 and pai.action_context_id = paa.assignment_action_id
2323 and pai.ACTION_INFORMATION_CATEGORY = 'GB_RTI_FPS_ASG_DET2'
2324 and ACTION_INFORMATION30 = 'Y'
2325 and ACTION_CONTEXT_TYPE = 'AAP'
2326 order by substr(ACTION_INFORMATION29,instr(ACTION_INFORMATION29,',')+1,length(ACTION_INFORMATION29)) desc; -- payroll run asg action id
2327
2328 cursor csr_fps_details(l_latest_fps_asg number) is
2329 select
2330 (ACTION_INFORMATION1) l_ni_cat,
2331 (ACTION_INFORMATION3) l_lel,
2332 (ACTION_INFORMATION4) l_et,
2333 (ACTION_INFORMATION5) l_uap,
2334 (ACTION_INFORMATION6) l_uel,
2335 (ACTION_INFORMATION7) l_emr,
2336 (ACTION_INFORMATION8) l_emp
2337 from pay_assignment_actions paa , pay_action_information pai
2338 where paa.payroll_action_id = pactid
2339 and paa.ASSIGNMENT_ID = l_latest_fps_asg
2340 and pai.action_context_id = paa.assignment_action_id
2341 and pai.ACTION_INFORMATION_CATEGORY = 'GB_RTI_FPS_NI_DET'
2342 and ACTION_CONTEXT_TYPE = 'AAP';
2343
2344 l_lel NUMBER;
2345 l_et NUMBER;
2346 l_uap NUMBER;
2347 l_uel NUMBER;
2348 l_emr NUMBER;
2349 l_emp NUMBER;
2350 l_flag VARCHAR2(1) := 'N';
2351 l_latest_fps_asg number;
2352
2353 begin
2354 hr_utility.trace('Entering calculate_diff_ni_payeagg');
2355
2356 open csr_get_latest_fps_asg;
2357 fetch csr_get_latest_fps_asg into l_latest_fps_asg;
2358 close csr_get_latest_fps_asg;
2359
2360 IF p_archive_tab.count > 0 THEN
2361
2362 hr_utility.trace('Entering if');
2363
2364 FOR i IN p_archive_tab.first .. p_archive_tab.last
2365 LOOP
2366
2367 hr_utility.trace('Entering for loop1');
2368
2369 for ni_fps_rec in csr_fps_details(l_latest_fps_asg)
2370 loop
2371 hr_utility.trace('Entering for loop2');
2372
2373 if p_archive_tab(i).act_info1 = ni_fps_rec.l_ni_cat then
2374 hr_utility.trace('Entering if');
2375 hr_utility.trace('Entering ni_fps_rec.l_ni_cat '||ni_fps_rec.l_ni_cat);
2376 hr_utility.trace('Entering ni_fps_rec.l_lel '||ni_fps_rec.l_lel);
2377
2378 hr_utility.trace('Entering i '||i);
2379 hr_utility.trace('p_archive_tab(i).act_info3 '||p_archive_tab(i).act_info3);
2380 hr_utility.trace('p_archive_tab(i).act_info4 '||p_archive_tab(i).act_info4);
2381 hr_utility.trace('p_archive_tab(i).act_info5 '||p_archive_tab(i).act_info5);
2382 hr_utility.trace('p_archive_tab(i).act_info6 '||p_archive_tab(i).act_info6);
2383 hr_utility.trace('p_archive_tab(i).act_info7 '||p_archive_tab(i).act_info7);
2384 hr_utility.trace('p_archive_tab(i).act_info8 '||p_archive_tab(i).act_info8);
2385
2386 hr_utility.trace('ni_fps_rec.l_lel '||ni_fps_rec.l_lel);
2387 hr_utility.trace('ni_fps_rec.l_et '||ni_fps_rec.l_et);
2388
2389 -- New YTD - Old YTD
2390 p_archive_tab(i).act_info3 := p_archive_tab(i).act_info3 - ni_fps_rec.l_lel ;
2391 p_archive_tab(i).act_info4 := p_archive_tab(i).act_info4 - ni_fps_rec.l_et ;
2392 p_archive_tab(i).act_info5 := p_archive_tab(i).act_info5 - ni_fps_rec.l_uap ;
2393 p_archive_tab(i).act_info6 := p_archive_tab(i).act_info6 - ni_fps_rec.l_uel ;
2394 p_archive_tab(i).act_info7 := p_archive_tab(i).act_info7 - ni_fps_rec.l_emr ;
2395 p_archive_tab(i).act_info8 := p_archive_tab(i).act_info8 - ni_fps_rec.l_emp ;
2396
2397 hr_utility.trace('p_archive_tab(i).act_info3 '||p_archive_tab(i).act_info3);
2398 hr_utility.trace('p_archive_tab(i).act_info4 '||p_archive_tab(i).act_info4);
2399 hr_utility.trace('p_archive_tab(i).act_info5 '||p_archive_tab(i).act_info5);
2400 hr_utility.trace('p_archive_tab(i).act_info6 '||p_archive_tab(i).act_info6);
2401 hr_utility.trace('p_archive_tab(i).act_info7 '||p_archive_tab(i).act_info7);
2402 hr_utility.trace('p_archive_tab(i).act_info8 '||p_archive_tab(i).act_info8);
2403
2404 if p_archive_tab(i).act_info3 <> 0 or p_archive_tab(i).act_info4 <> 0 or p_archive_tab(i).act_info5 <> 0
2405 or p_archive_tab(i).act_info6 <> 0 or p_archive_tab(i).act_info7 <> 0 or p_archive_tab(i).act_info8 <> 0
2406 then
2407 l_flag := 'Y';
2408 hr_utility.trace('Differences are found.Archive the data.');
2409 end if;
2410 end if;
2411 end loop;
2412
2413 end loop;
2414 END IF;
2415 p_flag := l_flag;
2416 hr_utility.trace('Leaving calculate_diff_ni_payeagg');
2417 end calculate_diff_ni_payeagg;
2418
2419
2420 procedure supressing_zeros_new_starter(p_archive_tab IN OUT nocopy action_info_table,p_flag IN OUT NOCOPY varchar2)
2421 is
2422 begin
2423
2424 p_flag := 'N';
2425
2426 --Suppressing zeroes
2427 if p_archive_tab(2).act_info15 = 0 then
2428 p_archive_tab(2).act_info15 := NULL;
2429 end if;
2430
2431 if p_archive_tab(2).act_info16 = 0 then
2432 p_archive_tab(2).act_info16 := NULL;
2433 end if;
2434
2435 if p_archive_tab(2).act_info17 = 0 then
2436 p_archive_tab(2).act_info17 := NULL;
2437 end if;
2438
2439 if p_archive_tab(2).act_info18 = 0 then
2440 p_archive_tab(2).act_info18 := NULL;
2441 end if;
2442
2443 if p_archive_tab(2).act_info19 = 0 then
2444 p_archive_tab(2).act_info19 := NULL;
2445 end if;
2446
2447 if p_archive_tab(2).act_info20 = 0 then
2448 p_archive_tab(2).act_info20 := NULL;
2449 end if;
2450
2451 if p_archive_tab(2).act_info21 = 0 then
2452 p_archive_tab(2).act_info21 := NULL;
2453 end if;
2454
2455 if p_archive_tab(2).act_info22 = 0 then
2456 p_archive_tab(2).act_info22 := NULL;
2457 end if;
2458
2459 if NVL(p_archive_tab(2).act_info15,0) <> 0 or NVL(p_archive_tab(2).act_info16,0) <> 0 or NVL(p_archive_tab(2).act_info17,0) <> 0
2460 or NVL(p_archive_tab(2).act_info18,0) <> 0 or NVL(p_archive_tab(2).act_info19,0) <> 0 or NVL(p_archive_tab(2).act_info20,0) <> 0
2461 or NVL(p_archive_tab(2).act_info21,0) <> 0 or NVL(p_archive_tab(2).act_info22,0) <> 0 then
2462 p_flag := 'Y';
2463 hr_utility.trace('Values are found. Archive the data.');
2464 end if;
2465
2466 end supressing_zeros_new_starter;
2467
2468 PROCEDURE populate_run_msg(
2469 p_assignment_action_id IN NUMBER ,
2470 p_message_text IN VARCHAR2,
2471 p_message_level IN VARCHAR2 DEFAULT 'F')
2472 IS
2473 PRAGMA AUTONOMOUS_TRANSACTION;
2474 BEGIN
2475 hr_utility.set_location(' Entering: populate_run_msg',111);
2476
2477 INSERT
2478 INTO pay_message_lines
2479 (
2480 line_sequence,
2481 payroll_id,
2482 message_level,
2483 source_id,
2484 source_type,
2485 line_text
2486 )
2487 VALUES
2488 (
2489 pay_message_lines_s.nextval ,
2490 100 ,
2491 p_message_level, --'F' ,
2492 p_assignment_action_id ,
2493 'A' ,
2494 SUBSTR(p_message_text,1,240)
2495 );
2496 hr_utility.set_location(' Leaving: populate_run_msg',999);
2497 COMMIT;
2498
2499 EXCEPTION
2500 WHEN OTHERS THEN
2501 hr_utility.trace('Error occured in populate_run_msg');
2502 RAISE;
2503 END populate_run_msg;
2504
2505 procedure set_address_fields (p_addr_rec IN OUT nocopy act_info_rec,p_person_rec IN act_info_rec, p_asg_det IN act_info_rec )
2506 is
2507 begin
2508 hr_utility.trace('Entering set_address_fields');
2509
2510 --Address Fields are mandatory when nino is not known or on starter
2511 if p_asg_det.act_info1 is null then
2512 if p_person_rec.act_info7 is not null then
2513 p_addr_rec.act_info5 := NULL;
2514 p_addr_rec.act_info6 := NULL;
2515 p_addr_rec.act_info7 := NULL;
2516 p_addr_rec.act_info8 := NULL;
2517 p_addr_rec.act_info12 := NULL;
2518 p_addr_rec.act_info13 := NULL;
2519 hr_utility.trace('Address details will not be reported.');
2520 end if;
2521 end if;
2522
2523 hr_utility.trace('Leaving set_address_fields');
2524 end set_address_fields;
2525
2526 PROCEDURE header_validations(p_payroll_action_id IN NUMBER)
2527 IS
2528 l_proc CONSTANT VARCHAR2(70) := g_package || 'header_validations';
2529 l_err BOOLEAN;
2530 l_exp EXCEPTION;
2531
2532 cursor csr_payroll_details(pactid NUMBER) is
2533 select
2534 nvl(UPPER(hoi.org_information11),' ') sender_id,
2535 nvl(upper(substr(ltrim(hoi.org_information3),1,35)),' ') employer_name,
2536 nvl(upper(substr(ltrim(substr(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
2537 lpad(nvl(substr(hoi.org_information1,1,3),' '),3,0) tax_office_no,
2538 decode(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
2539 nvl(upper(substr(hoi.org_information6,1,13)),' ') acc_ref_no,
2540 hoi.org_information7 econ
2541
2542 from pay_payroll_actions pact,
2543 hr_organization_information hoi
2544 where pact.payroll_action_id=pactid
2545 and pact.business_group_id = hoi.organization_id
2546 and hoi.org_information_context = 'Tax Details References'
2547 and nvl(hoi.org_information10,'UK') = 'UK'
2548 and substr(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8,
2549 instr(pact.legislative_parameters||' ',' ', instr(pact.legislative_parameters,'TAX_REF=')+8) -
2550 instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
2551
2552 l_payroll_rec csr_payroll_details%rowtype;
2553
2554 BEGIN
2555
2556 hr_utility.set_location('Entering '|| l_proc, 10);
2557 l_err := FALSE;
2558
2559 open csr_payroll_details(p_payroll_action_id);
2560 fetch csr_payroll_details into l_payroll_rec;
2561 close csr_payroll_details;
2562
2563 -- Sender Id
2564 if l_payroll_rec.sender_id = ' ' or l_payroll_rec.sender_id is null then
2565 hr_utility.set_location('The Sender ID is missing.',10);
2566 fnd_file.put_line(fnd_file.output,'The Sender ID is missing.');
2567 l_err := true;
2568 end if;
2569
2570 -- HMRC Office Number
2571 if l_payroll_rec.tax_office_no = ' ' or l_payroll_rec.tax_office_no is null then
2572 hr_utility.set_location('The HMRC Office number is missing.',10);
2573 fnd_file.put_line(fnd_file.output,'The HMRC Office number is missing.');
2574 l_err := true;
2575 elsif validate_input(substr(l_payroll_rec.tax_office_no,1,3),'NUMBER') > 0
2576 then
2577 hr_utility.set_location('The HMRC Office Number '||l_payroll_rec.tax_office_no||' has invalid characters.',10);
2578 fnd_file.put_line(fnd_file.output,'The HMRC Office Number '||l_payroll_rec.tax_office_no||' has invalid characters.');
2579 l_err := true;
2580 end if;
2581
2582 -- Employer PAYE Ref
2583 if l_payroll_rec.tax_ref_no = ' ' or l_payroll_rec.tax_ref_no is null then
2584 hr_utility.set_location('The Employer PAYE Reference is missing.',10);
2585 fnd_file.put_line(fnd_file.output,'The Employer PAYE Reference is missing.');
2586 l_err := true;
2587 elsif validate_input(l_payroll_rec.tax_ref_no,'FULL_EDI') > 0 then
2588 hr_utility.set_location('The Employer PAYE Reference '||l_payroll_rec.tax_ref_no||' has invalid characters.',10);
2589 fnd_file.put_line(fnd_file.output,'The Employer PAYE Reference '||l_payroll_rec.tax_ref_no||' has invalid characters.');
2590 l_err := true;
2591 end if;
2592
2593 -- Employer Name
2594 if l_payroll_rec.employer_name = ' ' or l_payroll_rec.employer_name is null then
2595 hr_utility.set_location('The Employer Name is missing.',10);
2596 fnd_file.put_line(fnd_file.output,'The Employer Name is missing.');
2597 l_err := true;
2598 elsif validate_input(l_payroll_rec.employer_name,'EMP_NAME') > 0 then
2599 hr_utility.set_location('The Employer Name '||l_payroll_rec.employer_name ||' has invalid characters.',10);
2600 fnd_file.put_line(fnd_file.output,'The Employer Name '||l_payroll_rec.employer_name ||' has invalid characters.');
2601 l_err := true;
2602 end if;
2603
2604 -- Accounts Office Number
2605 if l_payroll_rec.acc_ref_no = ' ' or l_payroll_rec.acc_ref_no is null then
2606 hr_utility.set_location('The Employer Accounts Office Ref Number is missing.',10);
2607 fnd_file.put_line(fnd_file.output,'The Employer Accounts Office Ref Number is missing.');
2608 l_err := true;
2609 elsif (length(l_payroll_rec.acc_ref_no) > 13
2610 OR REGEXP_INSTR(l_payroll_rec.acc_ref_no,'^([[:digit:]]{1,3})P([[:alpha:]]{1})([[:digit:]]{1,7})([[:digit:]]|X)$') = 0 ) THEN
2611
2612 hr_utility.set_location ('Incorrect format entered for Employer Accounts Office Ref Num field. Valid format is NNNPANNNNNNNX.',10);
2613 fnd_file.put_line(fnd_file.output,'Incorrect format entered for Employer Accounts Office Ref Num field. Valid format is NNNPANNNNNNNX.');
2614 l_err := true;
2615 END IF;
2616
2617 -- Econ
2618 if l_payroll_rec.econ is not null then
2619 IF econ_validate(l_payroll_rec.econ) = 0 THEN
2620 hr_utility.set_location('ECON Number '||l_payroll_rec.econ ||' is invalid',10);
2621 fnd_file.put_line(fnd_file.output,'ECON Number '||l_payroll_rec.econ ||' is invalid.');
2622 l_err := true;
2623 END IF;
2624 END IF;
2625
2626 if (l_err) then
2627 raise l_exp; -- Raising Exception when error is found
2628 end if;
2629
2630 hr_utility.set_location('Leaving '|| l_proc, 10);
2631 EXCEPTION
2632 when l_exp then
2633 raise_application_error(-20001,'Errors found while archiving data.');
2634
2635 END header_validations;
2636
2637
2638 -- Person Address validations
2639 PROCEDURE person_address_validations( p_assactid IN NUMBER,
2640 p_effective_date IN DATE,
2641 p_tab_rec_data IN action_info_table,
2642 p_asg_no IN VARCHAR2,
2643 edi_validation_fail out nocopy varchar2) IS
2644
2645 l_proc CONSTANT VARCHAR2(70):= g_package||'person_address_validations';
2646
2647 --Assignment Number
2648 l_assignment_number per_assignments_f.assignment_number%TYPE;
2649
2650 -- Address details
2651 l_address_line1 per_addresses.address_line1%TYPE;
2652 l_address_line2 per_addresses.address_line2%TYPE;
2653 l_address_line3 per_addresses.address_line3%TYPE;
2654 l_address_line4 per_addresses.address_line3%TYPE;
2655 l_town_or_city per_addresses.town_or_city%TYPE;
2656 l_postal_code per_addresses.postal_code%TYPE;
2657 l_country per_addresses.country%TYPE;
2658
2659 -- Person details
2660 l_last_name per_people_f.last_name%TYPE;
2661 l_first_name per_people_f.first_name%TYPE;
2662 l_middle_name per_people_f.middle_names%TYPE;
2663 l_national_identifier per_people_f.national_identifier%TYPE;
2664 l_title per_people_f.title%TYPE;
2665 l_date_of_birth per_people_f.date_of_birth%TYPE;
2666 l_sex per_people_f.sex%TYPE;
2667 l_passport_no varchar2(50);
2668
2669 -- Partner Person Details
2670 l_partner_last_name per_people_f.last_name%TYPE;
2671 l_partner_first_name per_people_f.first_name%TYPE;
2672 l_partner_middle_name per_people_f.middle_names%TYPE;
2673 l_partner_national_id per_people_f.national_identifier%TYPE;
2674
2675 -- Assignment Details required for validations
2676 l_aspp NUMBER;
2677 l_start_date DATE;
2678
2679 l_effective_date DATE;
2680 l_year1 NUMBER;
2681 l_year2 NUMBER;
2682
2683 BEGIN
2684 hr_utility.set_location('Entering '||l_proc,10);
2685 edi_validation_fail := 'N'; -- Initialized validation fail to N
2686
2687 -- Assignment Number
2688 l_assignment_number := p_asg_no;
2689
2690 -- Initializing the Address variables
2691 l_address_line1 := p_tab_rec_data(1).act_info5;
2692 l_address_line2 := p_tab_rec_data(1).act_info6;
2693 l_address_line3 := p_tab_rec_data(1).act_info7;
2694 l_town_or_city := p_tab_rec_data(1).act_info8;
2695 l_country := p_tab_rec_data(1).act_info13;
2696 l_postal_code := p_tab_rec_data(1).act_info12;
2697
2698 -- Initializing the Person variables
2699 l_last_name := p_tab_rec_data(0).act_info3;
2700 l_first_name := p_tab_rec_data(0).act_info4;
2701 l_middle_name := p_tab_rec_data(0).act_info5;
2702 l_title := p_tab_rec_data(0).act_info6;
2703 l_national_identifier := p_tab_rec_data(0).act_info7;
2704 l_date_of_birth := (to_date(substr(p_tab_rec_data(0).act_info8,1,10),'YYYY-MM-DD'));
2705 l_sex := p_tab_rec_data(0).act_info9;
2706 l_partner_last_name := p_tab_rec_data(0).act_info12;
2707 l_partner_first_name := p_tab_rec_data(0).act_info13;
2708 l_partner_middle_name := p_tab_rec_data(0).act_info14;
2709 l_partner_national_id := p_tab_rec_data(0).act_info15;
2710 l_passport_no := p_tab_rec_data(0).act_info16;
2711
2712 --Assignment Details required for validations
2713 l_aspp := p_tab_rec_data(2).act_info22;
2714 l_start_date := (to_date(substr(p_tab_rec_data(2).act_info1,1,10),'YYYY-MM-DD'));
2715
2716 --Local declarations
2717 l_year1 := to_number(to_char(sysdate,'YYYY'));
2718 l_year2 := to_number(to_char(l_date_of_birth,'YYYY'));
2719 l_year1 := l_year1- l_year2;
2720
2721 --Address validations
2722
2723 --Address line 1 is mandatory if Start date is not null or nino is null
2724 IF l_start_date is not null or l_national_identifier is null then
2725 IF l_address_line1 = ' ' OR l_address_line1 IS NULL THEN
2726 populate_run_msg(p_assactid,'The Address Line 1 of the assignment ' || l_assignment_number || ' is missing.');
2727 fnd_file.put_line (fnd_file.LOG,'The Address Line 1 of the assignment ' || l_assignment_number || ' is missing.');
2728 edi_validation_fail := 'Y';
2729 ELSIF validate_input(l_address_line1,'ADDRESS') > 0 THEN
2730 populate_run_msg(p_assactid,'The Address Line 1 ' || l_address_line1 || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2731 fnd_file.put_line (fnd_file.LOG,'The Address Line 1 ' || l_address_line1 || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2732 edi_validation_fail := 'Y';
2733 END IF;
2734 END IF;
2735
2736 --Address line 2 is mandatory if Start date is not null or nino is null
2737 IF l_start_date is not null or l_national_identifier is null then
2738 IF l_address_line2 = ' ' OR l_address_line2 IS NULL THEN
2739 populate_run_msg(p_assactid,'The Address Line 2 of the assignment ' || l_assignment_number || ' is missing.');
2740 fnd_file.put_line (fnd_file.LOG,'The Address Line 2 of the assignment ' || l_assignment_number || ' is missing.');
2741 edi_validation_fail := 'Y';
2742 ELSIF validate_input(l_address_line2,'ADDRESS') > 0 THEN
2743 populate_run_msg(p_assactid,'The Address Line 2 ' || l_address_line2 || ' of the assignment '|| l_assignment_number || ' has invalid characters.');
2744 fnd_file.put_line (fnd_file.LOG,'The Address Line 2 ' || l_address_line2 || ' of the assignment '|| l_assignment_number || ' has invalid characters.');
2745 edi_validation_fail := 'Y';
2746 END IF;
2747 END IF;
2748
2749 IF l_address_line3 <> ' ' and l_address_line3 IS NOT NULL THEN
2750 IF validate_input(l_address_line3,'ADDRESS') > 0 THEN
2751 populate_run_msg(p_assactid,'The Address Line 3 ' || l_address_line3 || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2752 fnd_file.put_line (fnd_file.LOG,'The Address Line 3 ' || l_address_line3 || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2753 edi_validation_fail := 'Y';
2754 END IF;
2755 END IF;
2756
2757 IF l_town_or_city <> ' ' and l_town_or_city IS NOT NULL THEN
2758 IF validate_input(l_town_or_city,'ADDRESS') > 0 THEN
2759 populate_run_msg(p_assactid,'The Town Or City ' || l_town_or_city || ' of the assignment '|| l_assignment_number || ' has invalid characters.');
2760 fnd_file.put_line (fnd_file.LOG,'The Town Or City ' || l_town_or_city ||' of the assignment ' || l_assignment_number || ' has invalid characters.');
2761 edi_validation_fail := 'Y';
2762 END IF;
2763 END IF;
2764
2765 IF l_country <> ' ' and l_country IS NOT NULL THEN
2766 IF validate_input(l_country,'COUNTRY') > 0 THEN
2767 populate_run_msg(p_assactid,'The Country ' || l_country || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2768 fnd_file.put_line (fnd_file.LOG,'The Country ' || l_country || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2769 edi_validation_fail := 'Y';
2770 END IF;
2771 END IF;
2772
2773 IF l_postal_code <> ' ' and l_postal_code IS NOT NULL THEN
2774 IF validate_input(l_postal_code,'POSTALCODE') > 0 THEN
2775 populate_run_msg(p_assactid,'The Postal Code ' || l_postal_code || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2776 fnd_file.put_line (fnd_file.LOG,'The Postal Code ' || l_postal_code || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2777 edi_validation_fail := 'Y';
2778 END IF;
2779 END IF;
2780
2781 -- Person validations
2782
2783 -- Last name is mandatory field
2784 IF l_last_name = ' ' OR l_last_name IS NULL THEN
2785 populate_run_msg(p_assactid,'The Last Name of the assignment ' || l_assignment_number || ' is missing.');
2786 fnd_file.put_line (fnd_file.LOG,'The Last Name of the assignment '|| l_assignment_number || ' is missing.');
2787 edi_validation_fail := 'Y';
2788 ELSIF validate_input(l_last_name,'NAME') > 0 THEN
2789 populate_run_msg(p_assactid,'The Last Name ' || l_last_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2790 fnd_file.put_line (fnd_file.LOG,'The Last Name ' || l_last_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2791 edi_validation_fail := 'Y';
2792 END IF;
2793
2794 -- First name is mandatory field
2795 IF l_first_name = ' ' OR l_first_name IS NULL THEN
2796 populate_run_msg(p_assactid,'The First Name of the assignment '|| l_assignment_number || ' is missing.');
2797 fnd_file.put_line (fnd_file.LOG,'The First Name of the assignment ' || l_assignment_number || ' is missing.');
2798 edi_validation_fail := 'Y';
2799 ELSIF validate_input(l_first_name,'NAME') > 0 THEN
2800 populate_run_msg(p_assactid,'The First Name ' || l_first_name ||' of the assignment ' || l_assignment_number || ' has invalid characters.');
2801 fnd_file.put_line (fnd_file.LOG,'The First Name ' || l_first_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2802 edi_validation_fail := 'Y';
2803 END IF;
2804
2805 -- Middle name = Second First name
2806 IF l_middle_name <> ' ' AND l_middle_name IS NOT NULL THEN
2807 IF validate_input(l_middle_name,'NAME') > 0 THEN
2808 populate_run_msg(p_assactid,'The Middle Name ' || l_middle_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2809 fnd_file.put_line (fnd_file.LOG,'The Middle Name ' || l_middle_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2810 edi_validation_fail := 'Y';
2811 END IF;
2812 END IF;
2813
2814
2815 IF l_title <> ' ' AND l_title is not null THEN
2816 IF validate_input(l_title,'TITLE') > 0 THEN
2817 populate_run_msg(p_assactid,'The Title ' || l_title || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2818 fnd_file.put_line (fnd_file.LOG,'The Title ' || l_title || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2819 edi_validation_fail := 'Y';
2820 END IF;
2821 END IF;
2822
2823 IF l_national_identifier IS NOT NULL AND
2824 hr_gb_utility.ni_validate(l_national_identifier,sysdate) <> 0 THEN
2825 populate_run_msg(p_assactid,'The National Insurance number ' || l_national_identifier || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2826 fnd_file.put_line (fnd_file.LOG,'The National Insurance number ' || l_national_identifier || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2827 edi_validation_fail := 'Y';
2828 END IF;
2829
2830 -- Gender is mandatory field
2831 IF ((l_sex <> 'M' AND l_sex <> 'F') OR (l_sex = ' ' OR l_sex IS NULL)) THEN
2832 populate_run_msg(p_assactid,'Gender is not specified for the assignment ' || l_assignment_number || '.');
2833 fnd_file.put_line (fnd_file.LOG,'Gender is not specified for the assignment ' || l_assignment_number || '.');
2834 edi_validation_fail := 'Y';
2835 END IF;
2836
2837 IF l_passport_no <> ' ' OR l_passport_no IS NOT NULL THEN
2838 IF validate_input(l_passport_no,'PASSPORT') > 0 THEN
2839 populate_run_msg(p_assactid,'The Passport Number ' || l_passport_no || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2840 fnd_file.put_line (fnd_file.LOG,'The Passport Number ' || l_passport_no || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2841 edi_validation_fail := 'Y';
2842 END IF;
2843 END IF;
2844
2845 -- Date of Birth is mandatory field
2846 IF l_date_of_birth IS NULL THEN
2847 populate_run_msg(p_assactid,'The Date of Birth of the assignment ' || l_assignment_number || ' is missing.');
2848 fnd_file.put_line (fnd_file.LOG,'The Date of Birth of the assignment '|| l_assignment_number || ' is missing.');
2849 edi_validation_fail := 'Y';
2850 END IF;
2851
2852 IF ((l_date_of_birth > sysdate) OR (l_year1 > 130)) THEN
2853 populate_run_msg(p_assactid,'The Date of Birth of the assignment ' || l_assignment_number || ' is invalid');
2854 fnd_file.put_line (fnd_file.LOG,'The Date of Birth of the assignment '|| l_assignment_number || ' is invalid');
2855 edi_validation_fail := 'Y';
2856 END IF;
2857
2858 -- Partner validations
2859
2860 -- ASPP rate is mandatory if Partner details are found
2861 IF l_partner_last_name <> ' ' OR l_partner_last_name IS NOT NULL THEN
2862
2863 IF l_aspp IS NULL THEN
2864 populate_run_msg(p_assactid, 'Additional Statutory Paternity Pay for assignment ' || l_assignment_number||' is missing, although Partner details are present.');
2865 fnd_file.put_line (fnd_file.LOG,'Additional Statutory Paternity Pay for assignment ' || l_assignment_number||' is missing, although Partner details are present.');
2866 edi_validation_fail := 'Y';
2867 END IF;
2868
2869 IF validate_input(l_partner_last_name,'NAME') > 0 THEN
2870 populate_run_msg(p_assactid,'The Partner Last Name ' || l_partner_last_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2871 fnd_file.put_line (fnd_file.LOG,'The Partner Last Name ' || l_partner_last_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2872 edi_validation_fail := 'Y';
2873 END IF;
2874 END IF;
2875
2876 -- Partner First name is mandatory field if last name is present
2877 IF l_partner_last_name IS NOT NULL AND (l_partner_first_name = ' ' OR l_partner_first_name IS NULL) THEN
2878 populate_run_msg(p_assactid,'The Partner First Name of the assignment '|| l_assignment_number || ' is missing.');
2879 fnd_file.put_line (fnd_file.LOG,'The Partner First Name of the assignment ' || l_assignment_number || ' is missing.');
2880 edi_validation_fail := 'Y';
2881 ELSIF validate_input(l_partner_first_name,'NAME') > 0 THEN
2882 populate_run_msg(p_assactid,'The Partner First Name ' || l_partner_first_name ||' of the assignment ' || l_assignment_number || ' has invalid characters.');
2883 fnd_file.put_line (fnd_file.LOG,'The Partner First Name ' || l_partner_first_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2884 edi_validation_fail := 'Y';
2885 END IF;
2886
2887 -- Middle name = Second First name
2888 IF l_partner_middle_name <> ' ' AND l_partner_middle_name IS NOT NULL THEN
2889 IF validate_input(l_partner_middle_name,'NAME') > 0 THEN
2890 populate_run_msg(p_assactid,'The Partner First Name ' || l_partner_middle_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2891 fnd_file.put_line (fnd_file.LOG,'The Partner First Name ' || l_partner_middle_name || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2892 edi_validation_fail := 'Y';
2893 END IF;
2894 END IF;
2895
2896 IF l_partner_national_id IS NOT NULL AND
2897 hr_gb_utility.ni_validate(l_partner_national_id,sysdate) <> 0 THEN
2898 populate_run_msg(p_assactid,'The Partner National Insurance number ' || l_partner_national_id || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2899 fnd_file.put_line (fnd_file.LOG,'The Partner National Insurance number ' || l_partner_national_id || ' of the assignment ' || l_assignment_number || ' has invalid characters.');
2900 edi_validation_fail := 'Y';
2901 END IF;
2902
2903
2904 hr_utility.set_location('Leaving'||l_proc,10);
2905 END person_address_validations;
2906
2907 PROCEDURE assignment_validations(p_assactid IN NUMBER,
2908 p_effective_date IN DATE,
2909 p_tab_rec_data IN action_info_table,
2910 p_asg_no IN VARCHAR2,
2911 edi_validation_fail out nocopy varchar2) IS
2912
2913 -- To fetch Effective date
2914 CURSOR get_effective_date IS
2915 SELECT ppa.effective_date
2916 FROM pay_payroll_actions ppa, pay_assignment_actions paa
2917 WHERE ppa.payroll_action_id = paa.payroll_action_id
2918 AND paa.assignment_action_id = p_assactid;
2919
2920 --Declarations
2921 l_proc CONSTANT VARCHAR2(70):= g_package||'assignment_validations';
2922
2923 -- Assignment Number
2924 l_assignment_number per_assignments_f.assignment_number%TYPE;
2925
2926 -- Assignment Fields
2927 l_start_date date;
2928 l_end_date date;
2929 l_payment_date date;
2930 l_starter_declaration varchar2(100);
2931 l_stay_over_six_months varchar2(100);
2932 l_stay_less_six_months varchar2(100);
2933 l_living_abroad varchar2(100);
2934 l_occ_pension_indicator varchar2(100);
2935 l_annual_occupational_pension number;
2936 l_payroll_id per_assignments_f.assignment_number%TYPE;
2937 l_taxable_pay_to_date number;
2938 l_student_loan_repayment number;
2939 l_student_loan_repay number;
2940 l_tax_deducted_refunded number;
2941 l_ssp number;
2942 l_smp number;
2943 l_ospp number;
2944 l_sap number;
2945 l_aspp number;
2946 l_eea varchar2(1);
2947 l_tax_code varchar2(15);
2948 -- Person Details needed to validations
2949 l_gender varchar2(100);
2950
2951 -- Local Declarations
2952 l_msg_value varchar2(100);
2953 l_eff_date date;
2954
2955
2956 BEGIN
2957 hr_utility.set_location('Entering: '||l_proc,1);
2958 --
2959 edi_validation_fail := 'N'; -- Initialized validation fail to N
2960
2961 -- Assigning values to the local variables
2962 l_assignment_number := p_asg_no;
2963
2964 -- Assignment Fields
2965 l_start_date := (to_date(substr(p_tab_rec_data(2).act_info1,1,10),'YYYY-MM-DD'));
2966 l_end_date := (to_date(substr(p_tab_rec_data(2).act_info2,1,10),'YYYY-MM-DD'));
2967 l_starter_declaration := p_tab_rec_data(2).act_info3;
2968 l_stay_over_six_months := p_tab_rec_data(2).act_info5;
2969 l_stay_less_six_months := p_tab_rec_data(2).act_info6;
2970 l_living_abroad := p_tab_rec_data(2).act_info7;
2971 l_eea := p_tab_rec_data(2).act_info8;
2972 l_payroll_id := p_tab_rec_data(2).act_info10;
2973 l_occ_pension_indicator := p_tab_rec_data(2).act_info11;
2974 l_annual_occupational_pension := p_tab_rec_data(2).act_info12;
2975 l_tax_code := p_tab_rec_data(2).act_info13;
2976 l_taxable_pay_to_date := p_tab_rec_data(2).act_info15;
2977 l_tax_deducted_refunded := p_tab_rec_data(2).act_info16;
2978 l_student_loan_repayment := p_tab_rec_data(2).act_info17;
2979 l_ssp := p_tab_rec_data(2).act_info18;
2980 l_smp := p_tab_rec_data(2).act_info19;
2981 l_ospp := p_tab_rec_data(2).act_info20;
2982 l_sap := p_tab_rec_data(2).act_info21;
2983 l_aspp := p_tab_rec_data(2).act_info22;
2984
2985 l_gender := p_tab_rec_data(0).act_info9;
2986
2987
2988 -- Assignment Validations
2989
2990
2991 IF l_start_date IS NOT NULL
2992 and date_validate(p_assactid,'UK_EMPL_DATE',l_start_date) = 0 THEN
2993 populate_run_msg(p_assactid,' The start date of employment for the assignment ' || l_assignment_number || ' is invalid.');
2994 fnd_file.put_line (fnd_file.LOG,'The start date of employment for the assignment ' || l_assignment_number || ' is invalid.');
2995 edi_validation_fail := 'Y';
2996 END IF;
2997
2998 IF l_end_date IS NOT NULL
2999 and date_validate(p_assactid,'UK_EMPL_DATE_LEAVING',l_end_date) = 0 THEN
3000 populate_run_msg(p_assactid,' The end date of employment for the assignment ' || l_assignment_number || ' is invalid.');
3001 fnd_file.put_line (fnd_file.LOG,'The end date of employment for the assignment ' || l_assignment_number || ' is invalid.');
3002 edi_validation_fail := 'Y';
3003 END IF;
3004
3005 IF l_stay_over_six_months <> 'Y' AND l_stay_less_six_months <> 'Y' AND l_living_abroad <> 'Y' AND l_annual_occupational_pension IS NULL ThEN
3006 IF l_start_date IS NOT NULL AND l_starter_declaration IS NULL THEN
3007 populate_run_msg(p_assactid, 'The Starter Declaration is missing for assignment ' || l_assignment_number || '.');
3008 fnd_file.put_line (fnd_file.LOG,'The Starter Declaration is missing for assignment ' || l_assignment_number || '.');
3009 edi_validation_fail := 'Y';
3010 END IF;
3011 END IF;
3012
3013 IF l_starter_declaration IS NOT NULL THEN
3014 IF l_starter_declaration NOT IN ('A' , 'B' , 'C') THEN
3015 populate_run_msg(p_assactid, 'The Starter Declaration ' ||l_starter_declaration|| ' for assignment ' || l_assignment_number||' is invalid.');
3016 fnd_file.put_line (fnd_file.LOG,'The Starter Declaration ' ||l_starter_declaration|| ' for assignment ' || l_assignment_number||' is invalid.');
3017 edi_validation_fail := 'Y';
3018 END IF;
3019 END IF;
3020
3021 IF l_starter_declaration IS NOT NULL THEN
3022 IF l_stay_over_six_months = 'Y' OR l_stay_less_six_months = 'Y' OR l_living_abroad = 'Y' OR l_annual_occupational_pension IS NOT NULL ThEN
3023 populate_run_msg(p_assactid, 'Starter Declaration must not be present for assignment ' || l_assignment_number||' as Expat Statement or Annual Pension is also present.');
3024 fnd_file.put_line (fnd_file.LOG,'Starter Declaration must not be present for assignment ' || l_assignment_number||' as Expat Statement or Annual Pension is also present.');
3025 edi_validation_fail := 'Y';
3026 END IF;
3027 END IF;
3028
3029 -- One can be present among the following
3030 -- l_stay_over_six_months , l_stay_less_six_months , l_living_abroad
3031
3032 IF l_stay_over_six_months = 'Y' AND (l_stay_less_six_months = 'Y' OR l_living_abroad = 'Y') THEN
3033 populate_run_msg(p_assactid, 'Stay in UK over six months for assignment ' || l_assignment_number||' is invalid.');
3034 fnd_file.put_line (fnd_file.LOG,'Stay in UK over six months for assignment ' || l_assignment_number||' is invalid.');
3035 edi_validation_fail := 'Y';
3036 END IF;
3037
3038 IF l_stay_less_six_months = 'Y' AND (l_stay_over_six_months = 'Y' OR l_living_abroad = 'Y') THEN
3039 populate_run_msg(p_assactid, 'Stay in UK less than six months for assignment ' || l_assignment_number||' is invalid.');
3040 fnd_file.put_line (fnd_file.LOG,'Stay in UK less than six months for assignment ' || l_assignment_number||' is invalid.');
3041 edi_validation_fail := 'Y';
3042 END IF;
3043
3044 IF l_living_abroad = 'Y' AND (l_stay_less_six_months = 'Y' OR l_stay_over_six_months = 'Y') THEN
3045 populate_run_msg(p_assactid, 'Working in/out of UK but living abroad for assignment ' || l_assignment_number||' is invalid.');
3046 fnd_file.put_line (fnd_file.LOG,'Working in/out of UK but living abroad for assignment ' || l_assignment_number||' is invalid.');
3047 edi_validation_fail := 'Y';
3048 END IF;
3049
3050 IF (l_living_abroad = 'Y' OR l_stay_less_six_months = 'Y' OR l_stay_over_six_months = 'Y') AND l_eea <> 'Y' THEN
3051 populate_run_msg(p_assactid, 'EEA Citizen for assignment ' || l_assignment_number||' is invalid.');
3052 fnd_file.put_line (fnd_file.LOG,'EEA Citizen for assignment ' || l_assignment_number||' is invalid.');
3053 edi_validation_fail := 'Y';
3054 END IF;
3055
3056 IF l_occ_pension_indicator = 'Y' AND l_annual_occupational_pension IS NULL THEN
3057 populate_run_msg(p_assactid, 'The Annual amount of Occupational Pension for assignment ' || l_assignment_number||' is missing,although Recently Bereaved Indicator is present.');
3058 fnd_file.put_line (fnd_file.LOG,'The Annual amount of Occupational Pension for assignment ' || l_assignment_number||' is missing,although Recently Bereaved Indicator is present.');
3059 edi_validation_fail := 'Y';
3060 END IF;
3061
3062
3063 IF l_annual_occupational_pension IS NOT NULL THEN
3064 IF l_annual_occupational_pension < 0 THEN
3065 populate_run_msg(p_assactid, 'The Annual amount of Occupational Pension ' ||l_annual_occupational_pension|| ' for assignment ' || l_assignment_number||' must be greater than or equal to zero.');
3066 fnd_file.put_line (fnd_file.LOG,'The Annual amount of Occupational Pension ' ||l_annual_occupational_pension|| ' for assignment ' || l_assignment_number||' must be greater than or equal to zero.');
3067 edi_validation_fail := 'Y';
3068 ELSIF l_annual_occupational_pension > 999999999.99 THEN
3069 populate_run_msg(p_assactid, 'The Annual amount of Occupational Pension ' ||l_annual_occupational_pension|| ' exceeds 999999999.99 for assignment ' || l_assignment_number||'.');
3070 fnd_file.put_line (fnd_file.LOG,'The Annual amount of Occupational Pension ' ||l_annual_occupational_pension|| ' exceeds 999999999.99 for assignment ' || l_assignment_number||'.');
3071 edi_validation_fail := 'Y';
3072 END IF;
3073 END IF;
3074
3075 IF ((l_payroll_id <> ' ' and l_payroll_id IS NOT NULL)
3076 and validate_input(l_payroll_id,'PAYROLLID') > 0) THEN
3077 populate_run_msg(p_assactid,'Payroll ID '||l_payroll_id||' for the assignment ' || l_assignment_number || ' has invalid characters.');
3078 fnd_file.put_line (fnd_file.LOG,'Payroll ID '||l_payroll_id||' for the assignment ' || l_assignment_number || ' has invalid characters.');
3079 edi_validation_fail := 'Y';
3080 END IF;
3081
3082
3083 IF l_taxable_pay_to_date IS NOT NULL AND abs(l_taxable_pay_to_date) > 99999999999 THEN
3084 populate_run_msg(p_assactid, 'Taxable Pay '||l_taxable_pay_to_date||' exceeds 999999999.99 for assignment ' || l_assignment_number|| '.');
3085 fnd_file.put_line (fnd_file.LOG,'Taxable Pay '||l_taxable_pay_to_date||' exceeds 999999999.99 for assignment ' || l_assignment_number|| '.');
3086 edi_validation_fail := 'Y';
3087 END IF;
3088
3089 IF l_student_loan_repayment IS NOT NULL AND abs(l_student_loan_repayment) > 9999900 THEN
3090 populate_run_msg(p_assactid, 'The Total Student loan repayment recovered to date exceeds 99999.00 for assignment ' || l_assignment_number|| '.' );
3091 fnd_file.put_line (fnd_file.LOG,'The Total Student loan repayment recovered to date exceeds 99999.00 for assignment ' || l_assignment_number|| '.');
3092 edi_validation_fail := 'Y';
3093 END IF;
3094
3095 IF l_tax_deducted_refunded IS NOT NULL AND abs(l_tax_deducted_refunded) > 999999999999 THEN
3096 populate_run_msg(p_assactid, 'Tax Deducted or Refunded '||l_tax_deducted_refunded||' exceeds 9999999999.99 for assignment ' || l_assignment_number|| '.');
3097 fnd_file.put_line (fnd_file.LOG,'Tax Deducted or Refunded '||l_tax_deducted_refunded||' exceeds 9999999999.99 for assignment ' || l_assignment_number|| '.');
3098 edi_validation_fail := 'Y';
3099 END IF;
3100
3101 --Statutory Sick Pay (SSP)-EYU
3102 IF l_ssp IS NOT NULL AND abs(l_ssp) > 999999 THEN
3103 populate_run_msg(p_assactid, 'Statutory Sick Pay '||l_ssp||' exceeds 9999.99 for assignment ' || l_assignment_number|| '.');
3104 fnd_file.put_line (fnd_file.LOG,'Statutory Sick Pay '||l_ssp||' exceeds 9999.99 for assignment ' || l_assignment_number|| '.');
3105 edi_validation_fail := 'Y';
3106 END IF;
3107
3108 --Statutory Maternity Pay (SMP)-EYU
3109 IF l_smp IS NOT NULL AND abs(l_smp) > 99999999 THEN
3110 populate_run_msg(p_assactid, 'Statutory Maternity Pay '||l_smp||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3111 fnd_file.put_line (fnd_file.LOG,'Statutory Maternity Pay '||l_smp||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3112 edi_validation_fail := 'Y';
3113 END IF;
3114
3115
3116 IF l_smp > 0 AND l_gender <> 'F' THEN
3117 populate_run_msg(p_assactid, 'Gender must be female for assignment ' || l_assignment_number|| ' to claim Statutory Maternity Pay.');
3118 fnd_file.put_line (fnd_file.LOG,'Gender must be female for assignment ' || l_assignment_number|| ' to claim Statutory Maternity Pay.');
3119 edi_validation_fail := 'Y';
3120 END IF;
3121
3122 --Ordinary Statutory Paternity Pay (OSPP)-EYU
3123 IF l_ospp IS NOT NULL AND abs(l_ospp) > 99999999 THEN
3124 populate_run_msg(p_assactid, 'Ordinary Statutory Paternity Pay '||l_ospp||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3125 fnd_file.put_line (fnd_file.LOG,'Ordinary Statutory Paternity Pay '||l_ospp||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3126 edi_validation_fail := 'Y';
3127 END IF;
3128
3129 --Statutory Adoption Pay (SAP)-EYU
3130 IF l_sap IS NOT NULL AND abs(l_sap) > 99999999 THEN
3131 populate_run_msg(p_assactid, 'Statutory Adoption Pay '||l_sap||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3132 fnd_file.put_line (fnd_file.LOG,'Statutory Adoption Pay '||l_sap||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3133 edi_validation_fail := 'Y';
3134 END IF;
3135
3136 --Additional Statutory Paternity Pay (ASPP)-EYU
3137 IF l_aspp IS NOT NULL AND abs(l_aspp) > 99999999 THEN
3138 populate_run_msg(p_assactid, 'Additional Statutory Paternity Pay '||l_aspp||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3139 fnd_file.put_line (fnd_file.LOG,'Additional Statutory Paternity Pay '||l_aspp||' exceeds 999999.99 for assignment ' || l_assignment_number|| '.');
3140 edi_validation_fail := 'Y';
3141 END IF;
3142
3143
3144 -- Tax Code
3145 IF (l_tax_code = ' ' OR l_tax_code IS NULL) then
3146 populate_run_msg(p_assactid, 'The Tax Code is missing for assignment ' || l_assignment_number || '.');
3147 fnd_file.put_line (fnd_file.LOG,'The Tax Code is missing for assignment ' || l_assignment_number || '.');
3148 edi_validation_fail := 'Y';
3149 END IF;
3150
3151
3152 OPEN get_effective_date;
3153 FETCH get_effective_date INTO l_eff_date;
3154 CLOSE get_effective_date;
3155
3156 l_msg_value := pay_gb_eoy_magtape.validate_tax_code_yrfil(p_assactid,l_tax_code,l_eff_date); -- Tax code validation
3157
3158 IF (l_tax_code <> ' ' and l_tax_code IS NOT NULL)
3159 AND (l_msg_value <> ' ') THEN
3160 populate_run_msg(p_assactid,'The Tax Code ' || l_tax_code || ' for assignment ' || l_assignment_number||' is invalid.');
3161 fnd_file.put_line (fnd_file.LOG,'The Tax Code ' || l_tax_code || ' for assignment ' || l_assignment_number||' is invalid.');
3162 edi_validation_fail := 'Y';
3163 END IF;
3164
3165
3166 hr_utility.set_location('Leaving '||l_proc,1);
3167
3168 END assignment_validations;
3169
3170 PROCEDURE ni_validations( p_assactid IN NUMBER,
3171 p_effective_date IN DATE,
3172 p_tab_rec_data IN action_info_table,
3173 p_index IN NUMBER,
3174 p_asg_no IN VARCHAR2,
3175 edi_validation_fail out nocopy varchar2) IS
3176
3177
3178 --Declarations
3179 l_proc CONSTANT VARCHAR2(70):= g_package||'ni_validations';
3180 l_assignment_number per_assignments_f.assignment_number%TYPE;
3181
3182 -- NI Fields
3183 l_ni_category varchar2(2);
3184 l_earnings_lel number;
3185 l_earnings_above_lel number;
3186 l_earnings_above_pt number;
3187 l_earnings_above_uap number;
3188 l_employer_contrib_y2d number;
3189 l_employee_contrib_y2d number;
3190 l_nic_refund VARCHAR2(10);
3191
3192 -- Employee Person Detail needed for validation
3193 l_gender varchar2(1);
3194
3195
3196 BEGIN
3197 hr_utility.set_location('Entering: '||l_proc,1);
3198
3199 edi_validation_fail := 'N'; -- Initialized validation fail to N
3200
3201
3202 -- Assigning values to the local variables
3203 l_assignment_number := p_asg_no; --p_tab_rec_data(2).act_info10;
3204
3205 -- Assigning values to the local variables
3206 l_ni_category := p_tab_rec_data(p_index).act_info1;
3207 l_earnings_lel := p_tab_rec_data(p_index).act_info3;
3208 l_earnings_above_lel := p_tab_rec_data(p_index).act_info4;
3209 l_earnings_above_pt := p_tab_rec_data(p_index).act_info5;
3210 l_earnings_above_uap := p_tab_rec_data(p_index).act_info6;
3211 l_employer_contrib_y2d := p_tab_rec_data(p_index).act_info7;
3212 l_employee_contrib_y2d := p_tab_rec_data(p_index).act_info8;
3213 l_nic_refund := p_tab_rec_data(p_index).act_info11;
3214
3215 -- Employee Person details
3216 l_gender := p_tab_rec_data(0).act_info9;
3217
3218 -- NI Validations
3219 IF l_ni_category IS NOT NULL THEN
3220 IF (l_gender = 'M' AND l_ni_category NOT IN ('A','C','D','J','L','N','Q','R','W','X')) OR
3221 (l_gender = 'F' AND l_ni_category NOT IN ('A','B','C','D','E','J','L','N','O','Q','R','T','W','X')) THEN
3222
3223 populate_run_msg(p_assactid,'NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is invalid.');
3224 fnd_file.put_line (fnd_file.LOG,'NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is invalid.');
3225 edi_validation_fail := 'Y';
3226
3227 END IF;
3228 END IF;
3229
3230 IF l_ni_category IS NOT NULL THEN
3231 IF l_earnings_lel IS NULL THEN
3232 populate_run_msg(p_assactid,'Earnings at Lower Earnings Limit Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3233 fnd_file.put_line (fnd_file.LOG,'Earnings at Lower Earnings Limit Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3234 edi_validation_fail := 'Y';
3235 ELSIF l_ni_category = 'X' AND l_earnings_lel <> 0 THEN
3236 populate_run_msg(p_assactid,'Earnings at Lower Earnings Limit Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3237 fnd_file.put_line (fnd_file.LOG,'Earnings at Lower Earnings Limit Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3238 edi_validation_fail := 'Y';
3239 END IF;
3240 END IF;
3241
3242 IF l_ni_category IS NOT NULL THEN
3243 IF l_earnings_above_lel IS NULL THEN
3244 populate_run_msg(p_assactid,'Earnings above LEL upto PT Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3245 fnd_file.put_line (fnd_file.LOG,'Earnings above LEL upto PT Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3246 edi_validation_fail := 'Y';
3247 ELSIF l_ni_category = 'X' AND l_earnings_above_lel <> 0 THEN
3248 populate_run_msg(p_assactid,'Earnings above LEL upto PT Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3249 fnd_file.put_line (fnd_file.LOG,'Earnings above LEL upto PT Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3250 edi_validation_fail := 'Y';
3251 END IF;
3252 END IF;
3253
3254 IF l_ni_category IS NOT NULL THEN
3255 IF l_earnings_above_pt IS NULL THEN
3256 populate_run_msg(p_assactid,'Earnings above PT upto UAP Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3257 fnd_file.put_line (fnd_file.LOG,'Earnings above PT upto UAP Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3258 edi_validation_fail := 'Y';
3259 ELSIF l_ni_category = 'X' AND l_earnings_above_pt <> 0 THEN
3260 populate_run_msg(p_assactid,'Earnings above PT upto UAP Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3261 fnd_file.put_line (fnd_file.LOG,'Earnings above PT upto UAP Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3262 edi_validation_fail := 'Y';
3263 END IF;
3264 END IF;
3265
3266 IF l_ni_category IS NOT NULL THEN
3267 IF l_earnings_above_uap IS NULL THEN
3268 populate_run_msg(p_assactid,'Earnings above UAP upto UEL Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3269 fnd_file.put_line (fnd_file.LOG,'Earnings above UAP upto UEL Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' is missing.');
3270 edi_validation_fail := 'Y';
3271 ELSIF l_ni_category = 'X' AND l_earnings_above_uap <> 0 THEN
3272 populate_run_msg(p_assactid,'Earnings above UAP upto UEL Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3273 fnd_file.put_line (fnd_file.LOG,'Earnings above UAP upto UEL Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3274 edi_validation_fail := 'Y';
3275 END IF;
3276 END IF;
3277
3278
3279 IF l_employer_contrib_y2d IS NULL THEN
3280 populate_run_msg(p_assactid, 'The Total of Employer contributions Year to Date is missing for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number);
3281 fnd_file.put_line (fnd_file.LOG,'The Total of Employer contributions Year to Date is missing for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number);
3282 edi_validation_fail := 'Y';
3283 ELSIF l_ni_category = 'X' AND l_employer_contrib_y2d <> 0 THEN
3284 populate_run_msg(p_assactid, 'The Total of Employer contributions Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3285 fnd_file.put_line (fnd_file.LOG,'The Total of Employer contributions Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3286 edi_validation_fail := 'Y';
3287 END IF;
3288
3289 IF l_employee_contrib_y2d IS NULL THEN
3290 populate_run_msg(p_assactid, 'The Employee contributions Payable Year to Date is missing for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number);
3291 fnd_file.put_line (fnd_file.LOG,'The Employee contributions Payable Year to Date is missing for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number);
3292 edi_validation_fail := 'Y';
3293 ELSIF l_ni_category IN ('X','C','W') AND l_employee_contrib_y2d <> 0 THEN
3294 populate_run_msg(p_assactid, 'The Employee contributions Payable Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3295 fnd_file.put_line (fnd_file.LOG,'The Employee contributions Payable Year to Date for NI Category '||l_ni_category|| ' of the assignment ' || l_assignment_number||' must be zero.');
3296 edi_validation_fail := 'Y';
3297 END IF;
3298
3299 IF l_nic_refund is not null and l_nic_refund not in ('Y','N') then
3300 populate_run_msg(p_assactid,'NIC Refund '||l_nic_refund|| ' of the assignment ' || l_assignment_number||' is invalid.');
3301 fnd_file.put_line (fnd_file.LOG,'NIC Refund '||l_nic_refund|| ' of the assignment ' || l_assignment_number||' is invalid.');
3302 edi_validation_fail := 'Y';
3303 end if;
3304
3305 -- For Employer - ECON field validation
3306 IF l_ni_category IN ('D','E','L','N','O') THEN
3307 g_econ_ni_check := 'Y';
3308 END IF;
3309
3310 END NI_VALIDATIONS;
3311
3312
3313 PROCEDURE footer_validations(econ IN VARCHAR2,flag OUT nocopy VARCHAR2)
3314 IS
3315
3316 --Declarations
3317 l_proc CONSTANT VARCHAR2(70):= g_package||'footer_validations';
3318 l_err BOOLEAN := FALSE;
3319
3320 BEGIN
3321 hr_utility.set_location('Entering: '||l_proc,1);
3322
3323 -- ECON Validations
3324 IF g_econ_ni_check = 'Y' THEN
3325 IF econ IS NULL THEN
3326 hr_utility.set_location('ECON is missing.',10);
3327 fnd_file.put_line(fnd_file.output,'ECON is missing. Provide the ECON , rollback and rerun the process.');
3328 l_err := true;
3329 END IF;
3330 END IF;
3331
3332 if (l_err) then
3333 flag := 'Y';
3334 else flag := 'N';
3335 end if;
3336
3337 hr_utility.set_location('Leaving '|| l_proc, 10);
3338 END footer_validations;
3339
3340
3341 -- Function to validate the format of the fields
3342 function validate_input(p_input_value varchar2,
3343 p_validate_mode varchar2)
3344 return number is
3345 --
3346 l_valid number := 0;
3347 l_invalid_char constant varchar2(1) := '~'; -- required for translate
3348 l_char_chk constant varchar2(26) := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
3349
3350 --
3351 l_emp_set constant varchar2(36) := '-''.';
3352 l_space constant varchar2(10) := ' ';
3353 l_mix_chars constant varchar2(52) := 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
3354 l_number_chk constant varchar2(10) := '0123456789';
3355 l_char_set_A constant varchar2(36) := '.,-()/=!""%&*;<>''+:?\[]@$#^{}_';
3356 l_char_set_B constant varchar2(52) := '.,-()/=!""%&*;<>''+:?';
3357 l_char_set_C constant varchar2(52) := '.-''';
3358 l_char_set_D constant varchar2(52) := '-''';
3359 l_translated_value varchar2(200); -- Required to output failing char.
3360 --
3361 BEGIN
3362 --
3363 hr_utility.trace('Entering validate_input');
3364 hr_utility.trace('p_validate_mode='||p_validate_mode);
3365 hr_utility.trace('p_input_value='||p_input_value);
3366 --
3367
3368 if p_validate_mode = 'EMP_NAME' then
3369 if ( substr(p_input_value,1,1) =' ') then
3370 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3371 l_valid := 2;
3372 else
3373 l_translated_value :=
3374 translate(p_input_value,
3375 l_invalid_char||l_mix_chars||l_number_chk||l_char_set_A||l_space,l_invalid_char);
3376
3377 if l_translated_value is not null then
3378 hr_utility.trace('Invalid chars found: '||l_translated_value);
3379 l_valid := 1; -- Not valid
3380 else
3381 l_valid := 0; -- Valid
3382 end if;
3383 end if ;
3384
3385 elsIF p_validate_mode = 'NUMBER' then
3386 --
3387 -- Check for Valid First Char
3388 --
3389 l_translated_value :=
3390 translate(p_input_value,
3391 l_invalid_char||l_number_chk,l_invalid_char);
3392
3393 if l_translated_value is not null then
3394 hr_utility.trace('Invalid chars found: '||l_translated_value);
3395 l_valid := 1; -- Not valid
3396 else
3397 l_valid := 0; -- Valid
3398 end if;
3399
3400 elsIF p_validate_mode = 'FULL_EDI' then
3401 --
3402 -- Check for Valid First Char
3403 --
3404 if ( substr(p_input_value,1,1) =' ') then
3405 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3406 l_valid := 2;
3407 else
3408 l_translated_value :=
3409 translate(p_input_value,
3410 l_invalid_char||l_char_chk||l_number_chk||l_char_set_B||l_space,l_invalid_char);
3411
3412 if l_translated_value is not null then
3413 hr_utility.trace('Invalid chars found: '||l_translated_value);
3414 l_valid := 1; -- Not valid
3415 else
3416 l_valid := 0; -- Valid
3417 end if;
3418 end if;
3419
3420 elsIF p_validate_mode = 'NAME' then
3421 --
3422 -- Check for Valid First Char
3423 --
3424 if not (substr(p_input_value,1,1) between 'A' and 'Z'
3425 or substr(p_input_value,1,1) between 'a' and 'z') then
3426 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3427 l_valid := 2;
3428 else
3429 l_translated_value :=
3430 translate(p_input_value,
3431 l_invalid_char||l_mix_chars||l_char_set_D||l_space,l_invalid_char);
3432
3433 if l_translated_value is not null then
3434 hr_utility.trace('Invalid chars found: '||l_translated_value);
3435 l_valid := 1; -- Not valid
3436 else
3437 l_valid := 0; -- Valid
3438 end if;
3439 end if;
3440
3441 elsIF p_validate_mode = 'TITLE' then
3442 --
3443 -- Check for Valid First Char
3444 --
3445 if not (substr(p_input_value,1,1) between 'A' and 'Z'
3446 or substr(p_input_value,1,1) between 'a' and 'z') then
3447 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3448 l_valid := 2;
3449 else
3450 l_translated_value :=
3451 translate(p_input_value,
3452 l_invalid_char||l_mix_chars||l_char_set_C||l_space,l_invalid_char);
3453
3454 if l_translated_value is not null then
3455 hr_utility.trace('Invalid chars found: '||l_translated_value);
3456 l_valid := 1; -- Not valid
3457 else
3458 l_valid := 0; -- Valid
3459 end if;
3460 end if;
3461
3462 ELSIF p_validate_mode = 'ADDRESS' THEN
3463 --
3464 -- Check for Valid First Char
3465 --
3466 if not (substr(p_input_value,1,1) between 'A' and 'Z'
3467 or substr(p_input_value,1,1) between 'a' and 'z' or substr(p_input_value,1,1) between '0' and '9') then
3468 -- First char invalid
3469 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3470 l_valid := 2;
3471 else
3472 l_translated_value :=
3473 translate(p_input_value,
3474 l_invalid_char||l_mix_chars||l_number_chk||l_space||l_char_set_B,l_invalid_char);
3475
3476 if l_translated_value is not null then
3477 hr_utility.trace('Invalid chars found: '||l_translated_value);
3478 l_valid := 1; --Invalid
3479 else
3480 l_valid := 0; -- Valid
3481 end if;
3482 end if;
3483
3484 elsif p_validate_mode = 'COUNTRY' then
3485 if not (substr(p_input_value,1,1) between 'A' and 'Z' or
3486 substr(p_input_value,1,1) between 'a' and 'z' ) then
3487 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3488 l_valid := 2;
3489 else
3490 l_translated_value :=
3491 translate(p_input_value,
3492 l_invalid_char||l_mix_chars||l_number_chk||l_space||l_char_set_B,l_invalid_char);
3493
3494 if l_translated_value is not null then
3495 hr_utility.trace('Invalid chars found: '||l_translated_value);
3496 l_valid := 1; -- Not valid
3497 else
3498 l_valid := 0; -- Valid
3499 end if;
3500 end if ;
3501
3502 -- character set E has alpha,numerals,space
3503 elsif p_validate_mode = 'POSTALCODE' then
3504
3505 if not (substr(p_input_value,1,1) between 'A' and 'Z'
3506 or substr(p_input_value,1,1) between 'a' and 'z' or substr(p_input_value,1,1) between '0' and '9') then
3507 -- First char invalid
3508 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3509 l_valid := 2;
3510 else
3511 l_translated_value := translate(p_input_value,
3512 l_invalid_char||l_mix_chars||l_number_chk||l_space,l_invalid_char);
3513 --
3514 if l_translated_value is not null then
3515 hr_utility.trace('Invalid chars found: '||l_translated_value);
3516 l_valid := 1; -- Not valid
3517 else
3518 l_valid := 0; -- Valid
3519 end if;
3520 end if;
3521
3522
3523 -- character set E has alpha,numerals,space
3524 elsif p_validate_mode = 'PASSPORT' then
3525 l_translated_value := translate(p_input_value,
3526 l_invalid_char||l_mix_chars||l_number_chk||l_space||l_char_set_B,l_invalid_char);
3527 --
3528 if l_translated_value is not null then
3529 hr_utility.trace('Invalid chars found: '||l_translated_value);
3530 l_valid := 1; -- Not valid
3531 else
3532 l_valid := 0; -- Valid
3533 end if;
3534
3535
3536 elsif p_validate_mode = 'PAYROLLID' then
3537 if ( substr(p_input_value,1,1) =' ') then
3538 hr_utility.trace('Invalid first char: '||substr(p_input_value,1,1));
3539 l_valid := 2;
3540 else
3541 l_translated_value :=
3542 translate(p_input_value,
3543 l_invalid_char||l_mix_chars||l_number_chk||l_char_set_B||l_space,l_invalid_char);
3544
3545 if l_translated_value is not null then
3546 hr_utility.trace('Invalid chars found: '||l_translated_value);
3547 l_valid := 1; -- Not valid
3548 else
3549 l_valid := 0; -- Valid
3550 end if;
3551 end if ;
3552
3553 END IF;
3554 --
3555 hr_utility.trace('Leaving validate_input');
3556 return l_valid;
3557 end validate_input;
3558
3559 -- Function for validating Date fields
3560 FUNCTION date_validate (c_assignment_action_id NUMBER,
3561 p_mode VARCHAR2,
3562 p_validate_date DATE)
3563 RETURN NUMBER
3564 IS
3565
3566
3567 cursor csr_parameter_info is
3568 select pay_gb_eoy_archive.get_parameter(legislative_parameters, 'TEST'),
3569 /*ppa.effective_date*/
3570 sysdate
3571 from pay_payroll_actions ppa
3572 ,pay_assignment_actions paa
3573 where paa.assignment_action_id = c_assignment_action_id
3574 and ppa.payroll_action_id = paa.payroll_action_id;
3575
3576 l_date_valid DATE;
3577 l_return_valid NUMBER;
3578 l_test_submission VARCHAR2(1);
3579 l_tax_date DATE;
3580 l_tax_year VARCHAR2(4);
3581 l_tax_year_start DATE ;
3582 BEGIN
3583 l_return_valid := 1; -- Initializing to one
3584 open csr_parameter_info;
3585 fetch csr_parameter_info into l_test_submission,l_tax_date;
3586 close csr_parameter_info;
3587
3588 hr_utility.trace('date as parameter : '||p_validate_date);
3589
3590 l_tax_year := to_char(l_tax_date,'RRRR');
3591 if (l_tax_date > to_date(l_tax_year||'0405','RRRRMMDD')) THEN
3592 l_tax_date := ADD_MONTHS(to_date(l_tax_year||'0405','RRRRMMDD'),12) ; /*tax year end date*/
3593 else
3594 l_tax_date := to_date(l_tax_year||'0405','RRRRMMDD'); /*tax year end date*/
3595 end if;
3596
3597 l_tax_date := fnd_date.canonical_to_date(to_char(l_tax_date,'RRRRMMDD'));
3598
3599 l_tax_year_start := add_months(l_tax_date,-12)+1 ;
3600
3601 l_date_valid := p_validate_date;
3602
3603 -- Start Date Validation
3604 if (p_mode = 'UK_EMPL_DATE') then
3605 if (l_test_submission = 'N') then -- Live Files
3606 if (l_date_valid > (sysdate+30)) then -- No later than current date + 30 days
3607 l_return_valid := 0;
3608 end if;
3609 else -- Test Files
3610 if (l_date_valid > add_months(l_tax_date,12)) then -- Current Tax year +1
3611 l_return_valid := 0;
3612 end if;
3613 end if;
3614 -- End Date Validation
3615 elsif (p_mode = 'UK_EMPL_DATE_LEAVING') then
3616 if (l_test_submission = 'N') then --Live Files
3617 if (l_date_valid > (sysdate+30)) then -- No later than current date + 30 days
3618 l_return_valid := 0;
3619 elsif(l_date_valid < (add_months(l_tax_date,-24)+1)) then -- Start of previous tax year
3620 l_return_valid := 0;
3621 end if;
3622 else -- Test Files
3623 if (l_date_valid > add_months(l_tax_date,12)) then -- Current Tax year +1
3624 l_return_valid := 0;
3625 end if;
3626 end if;
3627
3628 end if;
3629
3630 RETURN l_return_valid;
3631 END date_validate;
3632
3633 -- Returns 1 on success, 0 on failure
3634 function econ_validate(econ varchar2)
3635 return number
3636 is
3637 l_fixed_value number := 37;
3638 l_temp number := 0;
3639 l_sum number := 0 ;
3640 l_reminder number;
3641 l_check_letters varchar2(19) := 'ABCDEFHJKLMNPQRTWXY';
3642
3643 begin
3644 hr_utility.trace('Entering ECON Validate');
3645
3646 -- Format Check ENNNNNNNA
3647 IF regexp_instr(econ,'^E[[:digit:]]{7}[[:alpha:]]$') = 0 THEN
3648 hr_utility.set_location('ECON Validation Fails',10);
3649 return 0;-- Validation fails
3650 END IF;
3651
3652 -- First Char must be E
3653 IF substr(econ,1,1) <> 'E' THEN
3654 hr_utility.set_location('ECON Validation Fails',10);
3655 return 0;-- Validation fails
3656
3657 -- Next 7 should be numeric ranging 3000000 up to 3999999
3658 ELSIF substr(econ,2,7) < 3000000 OR substr(econ,2,7) > 3999999 THEN
3659 hr_utility.set_location('ECON Validation Fails',20);
3660 return 0;-- Validation fails
3661 END IF;
3662
3663 -- Last char must be alpha satifying modulas 19 rule
3664 for i in reverse 2..8 loop
3665 l_temp := substr(econ,(10-i),1) * i;
3666 l_sum := l_sum + l_temp;
3667 end loop;
3668
3669 l_sum := l_sum + l_fixed_value;
3670 l_reminder := mod(l_sum,19);
3671
3672 IF substr(l_check_letters,l_reminder+1,1) <> substr(econ,9,1) THEN
3673 hr_utility.set_location('ECON Validation Fails',30);
3674 return 0; -- Validation Fails
3675 END IF;
3676
3677 return 1; -- Validation passes
3678 hr_utility.trace('Leaving ECON Validate');
3679 END econ_validate;
3680
3681 FUNCTION get_version(
3682 p_assig_id IN NUMBER,
3683 p_type IN VARCHAR2,
3684 p_aei_id OUT nocopy NUMBER)
3685 RETURN NUMBER
3686 IS
3687 l_proc CONSTANT VARCHAR2(50):= 'get_version';
3688 l_ovn NUMBER;
3689 CURSOR csr_ovn
3690 IS
3691 SELECT object_version_number,
3692 assignment_extra_info_id
3693 FROM per_assignment_extra_info
3694 WHERE assignment_id = p_assig_id
3695 AND information_type = p_type;
3696 BEGIN
3697 hr_utility.set_location('Entering: '||l_proc,1);
3698 OPEN csr_ovn;
3699 FETCH csr_ovn INTO l_ovn, p_aei_id;
3700 CLOSE csr_ovn;
3701 RETURN l_ovn;
3702 hr_utility.set_location('Leaving: '||l_proc,999);
3703 END;
3704
3705 -- Procedure to insert data to the archive table pay_action_information
3706 PROCEDURE insert_archive_row
3707 (
3708 p_assactid IN NUMBER,
3709 p_effective_date IN DATE,
3710 p_tab_rec_data IN action_info_table
3711 )
3712 IS
3713 l_proc CONSTANT VARCHAR2(50):= g_package||'insert_archive_row';
3714 l_ovn NUMBER;
3715 l_action_id NUMBER;
3716 BEGIN
3717 hr_utility.set_location('Entering: '||l_proc,1);
3718
3719 IF p_tab_rec_data.count > 0 THEN
3720 FOR i IN p_tab_rec_data.first .. p_tab_rec_data.last
3721 LOOP
3722 hr_utility.trace
3723 (
3724 'Defining category '|| p_tab_rec_data(i).action_info_category
3725 )
3726 ;
3727 hr_utility.trace('action_context_id = '|| p_assactid);
3728 IF p_tab_rec_data(i).action_info_category IS NOT NULL THEN
3729 pay_action_information_api.create_action_information( p_action_information_id => l_action_id,
3730 p_object_version_number => l_ovn,
3731 p_action_information_category => p_tab_rec_data(i).action_info_category,
3732 p_action_context_id => p_assactid,
3733 p_action_context_type => 'AAP',
3734 p_assignment_id => p_tab_rec_data(i).assignment_id,
3735 p_effective_date => p_effective_date,
3736 p_action_information1 => p_tab_rec_data(i).act_info1,
3737 p_action_information2 => p_tab_rec_data(i).act_info2,
3738 p_action_information3 => p_tab_rec_data(i).act_info3,
3739 p_action_information4 => p_tab_rec_data(i).act_info4,
3740 p_action_information5 => p_tab_rec_data(i).act_info5,
3741 p_action_information6 => p_tab_rec_data(i).act_info6,
3742 p_action_information7 => p_tab_rec_data(i).act_info7,
3743 p_action_information8 => p_tab_rec_data(i).act_info8,
3744 p_action_information9 => p_tab_rec_data(i).act_info9,
3745 p_action_information10 => p_tab_rec_data(i).act_info10,
3746 p_action_information11 => p_tab_rec_data(i).act_info11,
3747 p_action_information12 => p_tab_rec_data(i).act_info12,
3748 p_action_information13 => p_tab_rec_data(i).act_info13,
3749 p_action_information14 => p_tab_rec_data(i).act_info14,
3750 p_action_information15 => p_tab_rec_data(i).act_info15,
3751 p_action_information16 => p_tab_rec_data(i).act_info16,
3752 p_action_information17 => p_tab_rec_data(i).act_info17,
3753 p_action_information18 => p_tab_rec_data(i).act_info18,
3754 p_action_information19 => p_tab_rec_data(i).act_info19,
3755 p_action_information20 => p_tab_rec_data(i).act_info20,
3756 p_action_information21 => p_tab_rec_data(i).act_info21,
3757 p_action_information22 => p_tab_rec_data(i).act_info22,
3758 p_action_information23 => p_tab_rec_data(i).act_info23,
3759 p_action_information24 => p_tab_rec_data(i).act_info24,
3760 p_action_information25 => p_tab_rec_data(i).act_info25,
3761 p_action_information26 => p_tab_rec_data(i).act_info26,
3762 p_action_information27 => p_tab_rec_data(i).act_info27,
3763 p_action_information28 => p_tab_rec_data(i).act_info28,
3764 p_action_information29 => p_tab_rec_data(i).act_info29,
3765 p_action_information30 => p_tab_rec_data(i).act_info30 );
3766 END IF;
3767 END LOOP;
3768 END IF;
3769 hr_utility.set_location('Leaving: '||l_proc,999);
3770 END insert_archive_row;
3771
3772
3773 --
3774 --
3775 /*------------ PUBLIC PROCEDURES --------------*/
3776 /*--------------------------------------------------------------------------
3777 Name : range_cursor
3778 Purpose : This returns the select statement that is used to create the
3779 range rows.
3780 Arguments :
3781 Notes : The range cursor determines which people should be processed.
3782 The normal practice is to include everyone, and then limit
3783 the list during the assignment action creation.
3784 --------------------------------------------------------------------------*/
3785 PROCEDURE range_cursor
3786 (
3787 pactid IN NUMBER,
3788 sqlstr OUT NOCOPY VARCHAR2
3789 )
3790 IS
3791
3792 l_proc CONSTANT VARCHAR2(35):= g_package||'range_cursor';
3793
3794 BEGIN
3795 hr_utility.set_location('Entering: '||l_proc,1);
3796
3797 sqlstr := 'select distinct PERSON_ID '|| 'from per_all_people_f ppf, '
3798 || 'pay_payroll_actions ppa '|| 'where ppa.payroll_action_id = :payroll_action_id '
3799 || 'and ppa.business_group_id = ppf.business_group_id '
3800 || ' order by person_id';
3801
3802 hr_utility.trace(' Range Cursor Statement : '||sqlstr);
3803 -- Header validations
3804 header_validations(pactid);
3805
3806 hr_utility.set_location(' Leaving: '||l_proc,100);
3807
3808 EXCEPTION
3809 WHEN OTHERS THEN
3810 hr_utility.raise_error;
3811 END range_cursor;
3812 --
3813 --
3814 PROCEDURE internal_action_creation_eyu(
3815 pactid IN NUMBER,
3816 stperson IN NUMBER,
3817 endperson IN NUMBER,
3818 chunk IN NUMBER,
3819 p_info_type IN VARCHAR2,
3820 p_rep_type IN VARCHAR2)
3821 IS
3822 l_proc CONSTANT VARCHAR2(90):= g_package||'internal_action_creation_eyu';
3823
3824 l_tax_ref VARCHAR2(20);
3825 l_business_group_id NUMBER;
3826 l_effective_date DATE;
3827 l_rti_payroll_id per_assignments_f.assignment_number%TYPE;
3828 l_flag varchar2(1) := 'Y';
3829 l_fps_run_date date;
3830 l_last_asg_action_id number;
3831 l_last_effective_date date;
3832 l_last_asg_action_id1 number;
3833 l_last_effective_date1 date;
3834 lockingactid number;
3835 l_asg_num varchar2(50);
3836 l_latest_asg number;
3837 l_pact_id number;
3838
3839 CURSOR csr_parameter_info
3840 IS
3841 SELECT
3842 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
3843 effective_date,
3844 business_group_id
3845 FROM pay_payroll_actions pact
3846 WHERE payroll_action_id = pactid;
3847
3848 CURSOR csr_asg is
3849 select distinct asg.assignment_id assignment_id,trim(pap.per_information10) per_agg_flag,trim(pap.per_information9) per_ni_flag,
3850 pap.person_id person_id , asg.assignment_number l_asg_num
3851 from per_all_people_f pap,
3852 per_all_assignments_f asg,
3853 per_assignment_status_types past,
3854 pay_all_payrolls_f pay,
3855 hr_soft_coding_keyflex sck
3856 where pap.person_id between stperson and endperson
3857 and pap.person_id = asg.person_id
3858 and asg.business_group_id +0 = l_business_group_id
3859 and asg.assignment_status_type_id = past.assignment_status_type_id
3860 and past.per_system_status in ('ACTIVE_ASSIGN', 'SUSP_ASSIGN','TERM_ASSIGN')
3861 and asg.payroll_id = pay.payroll_id
3862 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
3863 and upper(l_tax_ref) = upper(sck.segment1)
3864 and asg.effective_start_date =
3865 ( select max(asg2.effective_start_date)
3866 from per_all_assignments_f asg2
3867 where asg2.assignment_id = asg.assignment_id
3868 and asg2.assignment_type = 'E'
3869 and asg2.effective_start_date <= g_end_year
3870 )
3871 and l_effective_date between pap.effective_start_date and pap.effective_end_date
3872 and l_effective_date between pay.effective_start_date and pay.effective_end_date
3873 order by person_id,assignment_id;
3874
3875 --Cursor to fetch RTI Payroll ID for the assignment
3876 CURSOR csr_rti_payroll_id(asg_id NUMBER)
3877 IS
3878 SELECT aei_information3 rti_payroll_id
3879 FROM per_assignment_extra_info
3880 WHERE assignment_id = asg_id
3881 AND aei_information_category = 'GB_RTI_AGGREGATION';
3882
3883 --Cursor to fetch Latest FPS Run date for the assignment
3884 cursor csr_latest_fps_date(asg_id number) is select ppa.effective_date,ppa.payroll_action_id
3885 from pay_assignment_actions paa,
3886 pay_payroll_actions ppa
3887 where paa.assignment_id = asg_id
3888 and paa.action_status ='C'
3889 and ppa.action_type ='X'
3890 and ppa.payroll_action_id = paa.payroll_action_id
3891 and ppa.report_type in( 'RTI_FPS_REP' , 'RTI_EYU_REP_13')
3892 and ppa.effective_date >= g_start_year
3893 and UPPER(l_tax_ref) = UPPER(SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'TAX_REF'),1,20))
3894 order by ppa.effective_date desc;
3895
3896 CURSOR csr_latest_asg_action1(asg_id number,p_pact_id number) is
3897 select paa.ASSIGNMENT_ACTION_ID , ppa.EFFECTIVE_DATE from pay_payroll_actions ppa,pay_assignment_actions paa
3898 where ASSIGNMENT_ID = asg_id
3899 and ppa.ACTION_TYPE in ('Q','R','B','I','V','P','U')
3900 AND paa.action_status IN ('C', 'S')
3901 and ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
3902 and ppa.PAYROLL_ACTION_ID > p_pact_id
3903 and ppa.EFFECTIVE_DATE <= g_end_year
3904 order by ppa.effective_date desc;
3905
3906 --Cursor to fetch Latest assignment action after fps run before end of tax year
3907 CURSOR csr_latest_asg_action(asg_id number,l_latest_fps_run_date date) is
3908 SELECT
3909 to_number (substr (max (lpad (paa.action_sequence, 15
3910 , '0')
3911 || paa.assignment_action_id), 16))
3912 , max (pact.effective_date) effective_date
3913 FROM pay_assignment_actions paa
3914 , pay_payroll_actions pact
3915 , per_time_periods ptp
3916 WHERE paa.assignment_id = asg_id
3917 AND paa.payroll_action_id = pact.payroll_action_id
3918 AND pact.time_period_id = ptp.time_period_id
3919 AND pact.action_type IN ('Q', 'R', 'B'
3920 , 'I', 'V')
3921 AND paa.action_status IN ('C', 'S')
3922 AND ptp.regular_payment_date
3923 BETWEEN l_latest_fps_run_date
3924 AND g_end_year;
3925
3926 cursor csr_action_type (l_asg_act_id number) is
3927 SELECT
3928 pact.action_type
3929 FROM pay_payroll_actions pact, pay_assignment_actions paa
3930 WHERE paa.ASSIGNMENT_ACTION_ID = l_asg_act_id
3931 and paa.payroll_action_id = pact.payroll_action_id;
3932
3933 cursor csr_all_actions_after_fps (asg_id number, p_pact_id number) is
3934 select paa.ASSIGNMENT_ACTION_ID asg_act_id from pay_payroll_actions ppa,pay_assignment_actions paa,
3935 per_all_assignments_f paaf,
3936 pay_all_payrolls_f pay,
3937 hr_soft_coding_keyflex sck
3938 where paa.ASSIGNMENT_ID = asg_id
3939 AND paaf.assignment_id = asg_id
3940 AND pay.payroll_id = paaf.payroll_id
3941 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
3942 and upper(l_tax_ref) = upper(sck.segment1)
3943 and paaf.effective_start_date =
3944 ( select max(asg2.effective_start_date)
3945 from per_all_assignments_f asg2
3946 where asg2.assignment_id = paaf.assignment_id
3947 and asg2.assignment_type = 'E'
3948 and asg2.effective_start_date <= g_end_year
3949 )
3950 and l_effective_date between pay.effective_start_date and pay.effective_end_date
3951 and ppa.ACTION_TYPE in ('Q','R','B','I','V','P','U')
3952 AND paa.action_status IN ('C', 'S')
3953 and ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
3954 and ppa.PAYROLL_ACTION_ID > p_pact_id
3955 and ppa.EFFECTIVE_DATE <= g_end_year;
3956
3957
3958 cursor csr_all_actions_tax_year (asg_id number)is
3959 select paa.assignment_action_id asg_act_id
3960 FROM pay_assignment_actions paa
3961 , pay_payroll_actions pact
3962 , per_time_periods ptp,
3963 per_all_assignments_f paaf,
3964 pay_all_payrolls_f pay,
3965 hr_soft_coding_keyflex sck
3966
3967 WHERE paa.assignment_id = asg_id
3968 AND paaf.assignment_id = asg_id
3969 AND pay.payroll_id = paaf.payroll_id
3970 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
3971 and upper(l_tax_ref) = upper(sck.segment1)
3972 and paaf.effective_start_date =
3973 ( select max(asg2.effective_start_date)
3974 from per_all_assignments_f asg2
3975 where asg2.assignment_id = paaf.assignment_id
3976 and asg2.assignment_type = 'E'
3977 and asg2.effective_start_date <= g_end_year
3978 )
3979 and l_effective_date between pay.effective_start_date and pay.effective_end_date
3980 AND paa.payroll_action_id = pact.payroll_action_id
3981 AND pact.time_period_id = ptp.time_period_id
3982 AND pact.action_type IN ('Q', 'R', 'B'
3983 , 'I', 'V')
3984 AND paa.action_status IN ('C', 'S')
3985 AND ptp.regular_payment_date
3986 BETWEEN g_start_year
3987 AND g_end_year;
3988
3989
3990 cursor csr_all_actions_after_fps_agg (per_id number, p_pact_id number) is
3991 select paa.ASSIGNMENT_ACTION_ID asg_act_id from per_all_assignments_f paaf, pay_payroll_actions ppa,pay_assignment_actions paa,
3992 pay_all_payrolls_f pay,
3993 hr_soft_coding_keyflex sck
3994 where paaf.person_ID = per_id
3995 and paa.assignment_id = paaf.assignment_id
3996 AND pay.payroll_id = paaf.payroll_id
3997 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
3998 and upper(l_tax_ref) = upper(sck.segment1)
3999 and l_effective_date between pay.effective_start_date and pay.effective_end_date
4000
4001 and ppa.ACTION_TYPE in ('Q','R','B','I','V','P','U')
4002 AND paa.action_status IN ('C', 'S')
4003 and ppa.PAYROLL_ACTION_ID = paa.PAYROLL_ACTION_ID
4004 and ppa.PAYROLL_ACTION_ID > p_pact_id
4005 AND paaf.effective_start_date =
4006 ( select max(asg2.effective_start_date)
4007 from per_all_assignments_f asg2
4008 where asg2.assignment_id = paaf.assignment_id
4009 and asg2.assignment_type = 'E'
4010 and asg2.effective_start_date <= g_end_year
4011 )
4012 and ppa.EFFECTIVE_DATE <= g_end_year;
4013
4014 cursor csr_all_actions_tax_year_agg (per_id number)is
4015 select paa.ASSIGNMENT_ACTION_ID asg_act_id
4016 FROM per_all_assignments_f paaf,
4017 pay_assignment_actions paa
4018 , pay_payroll_actions pact
4019 , per_time_periods ptp,
4020 pay_all_payrolls_f pay,
4021 hr_soft_coding_keyflex sck
4022 WHERE paa.assignment_id = paaf.assignment_id
4023 and paaf.person_id = per_id
4024 AND pay.payroll_id = paaf.payroll_id
4025 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
4026 and upper(l_tax_ref) = upper(sck.segment1)
4027 and l_effective_date between pay.effective_start_date and pay.effective_end_date
4028 AND paa.payroll_action_id = pact.payroll_action_id
4029 AND pact.time_period_id = ptp.time_period_id
4030 AND pact.action_type IN ('Q', 'R', 'B'
4031 , 'I', 'V')
4032 AND paa.action_status IN ('C', 'S')
4033 AND ptp.regular_payment_date
4034 BETWEEN g_start_year
4035 AND g_end_year
4036 AND paaf.effective_start_date =
4037 ( select max(asg2.effective_start_date)
4038 from per_all_assignments_f asg2
4039 where asg2.assignment_id = paaf.assignment_id
4040 and asg2.assignment_type = 'E'
4041 and asg2.effective_start_date <= g_end_year
4042 );
4043
4044
4045 -- To get maximum assignment action id for the person
4046 cursor csr_get_max_asg_actid_person(per_id number) is
4047 SELECT /*+ USE_NL(paa, pact, ptp) */
4048 to_number (substr (max (lpad (paa.action_sequence, 15
4049 , '0')
4050 || paa.assignment_action_id), 16))
4051 , max (pact.effective_date) effective_date
4052
4053 FROM per_all_assignments_f paaf,
4054 pay_assignment_actions paa
4055 , pay_payroll_actions pact
4056 , per_time_periods ptp,
4057 pay_all_payrolls_f pay,
4058 hr_soft_coding_keyflex sck
4059 WHERE paa.assignment_id = paaf.assignment_id
4060 and paaf.person_id = per_id
4061 AND pay.payroll_id = paaf.payroll_id
4062 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
4063 and upper(l_tax_ref) = upper(sck.segment1)
4064 and l_effective_date between pay.effective_start_date and pay.effective_end_date
4065 AND paa.payroll_action_id = pact.payroll_action_id
4066 AND pact.time_period_id = ptp.time_period_id
4067 AND pact.action_type IN ('Q', 'R', 'B'
4068 , 'I', 'V')
4069 AND paa.action_status IN ('C', 'S')
4070 AND ptp.regular_payment_date
4071 BETWEEN g_start_year
4072 AND g_end_year
4073 AND paaf.effective_start_date =
4074 ( select max(asg2.effective_start_date)
4075 from per_all_assignments_f asg2
4076 where asg2.assignment_id = paaf.assignment_id
4077 and asg2.assignment_type = 'E'
4078 and asg2.effective_start_date <= g_end_year
4079 );
4080
4081 -- To get maximum assignment action id for the person (NI aggr)
4082
4083 cursor csr_get_max_asg_actid_person_n(per_id number,asg_id number) is
4084 SELECT /*+ USE_NL(paa, pact, ptp) */
4085 to_number (substr (max (lpad (paa.action_sequence, 15
4086 , '0')
4087 || paa.assignment_action_id), 16))
4088 , max (pact.effective_date) effective_date
4089
4090 FROM per_all_assignments_f paaf,
4091 pay_assignment_actions paa
4092 , pay_payroll_actions pact
4093 , per_time_periods ptp,
4094 pay_all_payrolls_f pay,
4095 hr_soft_coding_keyflex sck
4096 WHERE paa.assignment_id = paaf.assignment_id
4097 and paaf.person_id = per_id
4098 and paaf.assignment_id <> asg_id
4099 AND pay.payroll_id = paaf.payroll_id
4100 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
4101 and upper(l_tax_ref) = upper(sck.segment1)
4102 and l_effective_date between pay.effective_start_date and pay.effective_end_date
4103 AND paa.payroll_action_id = pact.payroll_action_id
4104 AND pact.time_period_id = ptp.time_period_id
4105 AND pact.action_type IN ('Q', 'R', 'B'
4106 , 'I', 'V')
4107 AND paa.action_status IN ('C', 'S')
4108 AND ptp.regular_payment_date
4109 BETWEEN g_start_year
4110 AND g_end_year
4111 AND paaf.effective_start_date =
4112 ( select max(asg2.effective_start_date)
4113 from per_all_assignments_f asg2
4114 where asg2.assignment_id = paaf.assignment_id
4115 and asg2.assignment_type = 'E'
4116 and asg2.effective_start_date <= g_end_year
4117 );
4118
4119 cursor csr_latest_asg(p_asg_act_id number) is
4120 select assignment_id from pay_assignment_actions where assignment_action_id = p_asg_act_id;
4121
4122 -- Curosr to fetch the RTI Reporting flag and effective date of the assignment
4123 cursor csr_ni_rpt_flag(c_asg_id number) is
4124 select AEI_INFORMATION1, AEI_INFORMATION2 from per_assignment_extra_info where assignment_id = c_asg_id
4125 and AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION';
4126
4127 -- Cursor to fetch the RTI NI Reporting assignment for this person.
4128 cursor csr_get_ni_rpt_asg(c_asg_id number) is
4129 select
4130 distinct paei.assignment_id , fnd_date.canonical_to_date(paei.AEI_INFORMATION2)
4131 from per_all_assignments_f paaf1, per_all_assignments_f paaf2 ,per_assignment_extra_info paei,
4132 pay_all_payrolls_f pay,
4133 hr_soft_coding_keyflex sck
4134 where paaf1.assignment_id = c_asg_id
4135 and paaf1.person_id = paaf2.person_id
4136 and paaf2.assignment_type= 'E'
4137 and paei.assignment_id = paaf2.assignment_id
4138 and paei.AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION'
4139 and paei. AEI_INFORMATION1 = 'Y'
4140 AND pay.payroll_id = paaf2.payroll_id
4141 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
4142 and upper(l_tax_ref) = upper(sck.segment1)
4143 and l_effective_date between pay.effective_start_date and pay.effective_end_date
4144 AND paaf1.effective_start_date =
4145 ( select max(asg2.effective_start_date)
4146 from per_all_assignments_f asg2
4147 where asg2.assignment_id = paaf1.assignment_id
4148 and asg2.assignment_type = 'E'
4149 and asg2.effective_start_date <= g_end_year
4150 )
4151 AND paaf2.effective_start_date =
4152 ( select max(asg2.effective_start_date)
4153 from per_all_assignments_f asg2
4154 where asg2.assignment_id = paaf2.assignment_id
4155 and asg2.assignment_type = 'E'
4156 and asg2.effective_start_date <= g_end_year
4157 )
4158 order by 2 desc;
4159
4160 l_ni_rpt_asg_id NUMBER;
4161 l_ni_rpt_date DATE;
4162 l_ni_max_asg number;
4163 l_action_created VARCHAR2(1) := 'N';
4164 l_latest_action_type VARCHAR2(5);
4165 l_tax_year varchar2(4) := '2013';
4166
4167 BEGIN
4168 hr_utility.set_location('Entering: '||l_proc,1);
4169
4170 --Fetching Request Details
4171 OPEN csr_parameter_info;
4172 FETCH csr_parameter_info
4173 INTO
4174 l_tax_ref,
4175 l_effective_date,
4176 l_business_group_id ;
4177 CLOSE csr_parameter_info;
4178
4179 l_effective_date := to_date('05-04-'||l_tax_year,'DD-MM-YYYY');
4180
4181 --Fetching Start and End of Tax Year
4182 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
4183 g_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
4184 g_end_year := to_date('05-04-'||TO_CHAR(to_number(SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4))+1 ),'DD-MM-YYYY') ;
4185 ELSE
4186 g_start_year := to_date('06-04-'||TO_CHAR(to_number(SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4))-1 ),'DD-MM-YYYY') ;
4187 g_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
4188 END IF;
4189
4190 hr_utility.set_location('pactid : '||pactid,20);
4191 hr_utility.set_location('stperson : '||stperson,20);
4192 hr_utility.set_location('endperson : '||endperson,20);
4193 hr_utility.set_location('l_tax_ref : '||l_tax_ref,20);
4194 hr_utility.set_location('l_effective_date : '||l_effective_date,20);
4195 hr_utility.set_location('l_bg_id : '||l_business_group_id,20);
4196
4197 for asg_rec in csr_asg
4198 loop
4199 l_flag := 'Y';
4200 l_action_created := 'N';
4201
4202 hr_utility.set_location('Assignment ID : '||asg_rec.assignment_id,20);
4203 hr_utility.set_location('Person ID : '||asg_rec.person_id,20);
4204 hr_utility.set_location('PAYE Aggregation : '||asg_rec.per_agg_flag,20);
4205 hr_utility.set_location('NI Aggregation : '||asg_rec.per_ni_flag,20);
4206
4207 -- PAYE Aggregation
4208 if NVL(asg_rec.per_agg_flag,'N') = 'Y' then
4209 open csr_rti_payroll_id(asg_rec.assignment_id);
4210 fetch csr_rti_payroll_id into l_rti_payroll_id;
4211 close csr_rti_payroll_id;
4212
4213 hr_utility.set_location('l_rti_payroll_id : '||l_rti_payroll_id,20);
4214
4215 -- Fetch latest asg action id , asg id for the person
4216 open csr_get_max_asg_actid_person(asg_rec.person_id);
4217 fetch csr_get_max_asg_actid_person INTO l_last_asg_action_id1,l_last_effective_date1;
4218 close csr_get_max_asg_actid_person;
4219
4220 hr_utility.set_location('l_last_asg_action_id1 : '||l_last_asg_action_id1,20);
4221 hr_utility.set_location('l_last_effective_date1 : '||l_last_effective_date1,20);
4222
4223 open csr_latest_asg(l_last_asg_action_id1);
4224 fetch csr_latest_asg INTO l_latest_asg;
4225 close csr_latest_asg;
4226
4227 hr_utility.set_location('l_latest_asg : '||l_latest_asg,20);
4228
4229 if asg_rec.assignment_id <> l_latest_asg then
4230
4231 hr_utility.set_location('Not archiving as this is not the latest assignment.',20);
4232 l_flag := 'N';
4233 end if;
4234
4235 end if;
4236 --PAYE Aggregation ends
4237
4238 if l_flag = 'Y' then
4239
4240 hr_utility.set_location('asg_rec.assignment_id : '||asg_rec.assignment_id,20);
4241 l_fps_run_date := NULL;
4242 l_pact_id := NULL;
4243 -- Get the Last FPS run date
4244 -- check any payroll actions after that date till 5-apr-13
4245
4246 open csr_latest_fps_date(asg_rec.assignment_id);
4247 fetch csr_latest_fps_date into l_fps_run_date,l_pact_id;
4248 close csr_latest_fps_date;
4249
4250 hr_utility.set_location('l_fps_run_date : '||l_fps_run_date,20);
4251 hr_utility.set_location('l_pact_id : '||l_pact_id,20);
4252
4253 if l_fps_run_date is not null then
4254 open csr_latest_asg_action1(asg_rec.assignment_id,l_pact_id);
4255 fetch csr_latest_asg_action1 into l_last_asg_action_id, l_last_effective_date;
4256 close csr_latest_asg_action1;
4257 end if;
4258
4259 -- For New Starters where no FPS run exists, set the date to Start of the Tax Year
4260 if l_fps_run_date is null then
4261 open csr_latest_asg_action(asg_rec.assignment_id,g_start_year);
4262 fetch csr_latest_asg_action into l_last_asg_action_id, l_last_effective_date;
4263 close csr_latest_asg_action;
4264 end if;
4265
4266 hr_utility.set_location('l_fps_run_date : '||l_fps_run_date,20);
4267 hr_utility.set_location('l_last_asg_action_id : '||l_last_asg_action_id,20);
4268 hr_utility.set_location('l_last_effective_date : '||l_last_effective_date,20);
4269
4270 if l_last_asg_action_id is not null then
4271 hr_utility.set_location('Creating assignment action for the assignment ID : '||asg_rec.assignment_id,20);
4272
4273 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
4274 -- Insert assignment into pay_assignment_actions
4275 hr_nonrun_asact.insact ( lockingactid, asg_rec.assignment_id, pactid, chunk, NULL );
4276
4277 --Locking mechanism
4278 -- If NI Aggr and non aggr
4279 if (NVL(asg_rec.per_ni_flag,'N') = 'Y' and NVL(asg_rec.per_agg_flag,'N') = 'N') or (NVL(asg_rec.per_ni_flag,'N') = 'N')then
4280 open csr_action_type(l_last_asg_action_id);
4281 fetch csr_action_type INTO l_latest_action_type;
4282 close csr_action_type;
4283
4284 if l_latest_action_type = 'P' or l_latest_action_type = 'U' then
4285 hr_utility.set_location('lockingactid '||lockingactid, 50);
4286 hr_utility.set_location('Prepayment l_last_asg_action_id '||l_last_asg_action_id, 50);
4287 hr_nonrun_asact.insint(lockingactid, l_last_asg_action_id);
4288 else
4289 if l_fps_run_date is not null then
4290
4291 for asg_actions in csr_all_actions_after_fps(asg_rec.assignment_id,l_pact_id)
4292 loop
4293 hr_utility.set_location('lockingactid '||lockingactid, 50);
4294 hr_utility.set_location('asg_actions.asg_act_id '||asg_actions.asg_act_id, 50);
4295 hr_nonrun_asact.insint(lockingactid, asg_actions.asg_act_id);
4296 end loop;
4297 else
4298 for asg_actions in csr_all_actions_tax_year(asg_rec.assignment_id)
4299 loop
4300 hr_utility.set_location('New Starter ', 50);
4301 hr_utility.set_location('lockingactid '||lockingactid, 50);
4302 hr_utility.set_location('asg_actions.asg_act_id '||asg_actions.asg_act_id, 50);
4303 hr_nonrun_asact.insint(lockingactid, asg_actions.asg_act_id);
4304 end loop;
4305 end if;
4306 end if;
4307 end if;
4308 -- If PAYE Aggr
4309 if (NVL(asg_rec.per_agg_flag,'N') = 'Y')then
4310 open csr_action_type(l_last_asg_action_id);
4311 fetch csr_action_type INTO l_latest_action_type;
4312 close csr_action_type;
4313
4314 if l_latest_action_type = 'P' or l_latest_action_type = 'U' then
4315 hr_utility.set_location('lockingactid '||lockingactid, 50);
4316 hr_utility.set_location('Prepayment l_last_asg_action_id '||l_last_asg_action_id, 50);
4317 hr_nonrun_asact.insint(lockingactid, l_last_asg_action_id);
4318 else
4319 if l_fps_run_date is not null then
4320
4321 for asg_actions in csr_all_actions_after_fps_agg(asg_rec.person_id,l_pact_id)
4322 loop
4323 hr_utility.set_location('lockingactid '||lockingactid, 50);
4324 hr_utility.set_location('asg_actions.asg_act_id '||asg_actions.asg_act_id, 50);
4325 hr_nonrun_asact.insint(lockingactid, asg_actions.asg_act_id);
4326 end loop;
4327 else
4328 for asg_actions in csr_all_actions_tax_year_agg(asg_rec.person_id)
4329 loop
4330 hr_utility.set_location('New Starter ', 50);
4331 hr_utility.set_location('lockingactid '||lockingactid, 50);
4332 hr_utility.set_location('asg_actions.asg_act_id '||asg_actions.asg_act_id, 50);
4333 hr_nonrun_asact.insint(lockingactid, asg_actions.asg_act_id);
4334 end loop;
4335 end if;
4336 end if;
4337 end if;
4338 --NI Aggr
4339 if NVL(asg_rec.per_ni_flag,'N') = 'Y' and NVL(asg_rec.per_agg_flag,'N') = 'N' then
4340 l_action_created := 'Y';
4341 end if;
4342 end if;
4343
4344 end if; -- if l_flag = 'Y' then
4345
4346 --Ni Aggr
4347 if l_action_created = 'Y' then
4348 hr_utility.set_location('Created assignment action for the NI Aggr assignment ID : '||asg_rec.assignment_id,20);
4349
4350 --Get NI RTI reporting assignment
4351 open csr_get_ni_rpt_asg(asg_rec.assignment_id);
4352 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
4353 close csr_get_ni_rpt_asg;
4354
4355 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id, 50);
4356
4357 if asg_rec.assignment_id <> l_ni_rpt_asg_id then
4358
4359 -- fetch latest asg action id , asg id for the person , if both r same create actions
4360 open csr_get_max_asg_actid_person_n(asg_rec.person_id,l_ni_rpt_asg_id);
4361 fetch csr_get_max_asg_actid_person_n INTO l_last_asg_action_id1,l_last_effective_date1;
4362 close csr_get_max_asg_actid_person_n;
4363
4364 hr_utility.set_location('l_last_asg_action_id1 : '||l_last_asg_action_id1,20);
4365 hr_utility.set_location('l_last_effective_date1 : '||l_last_effective_date1,20);
4366
4367 open csr_latest_asg(l_last_asg_action_id1);
4368 fetch csr_latest_asg INTO l_latest_asg;
4369 close csr_latest_asg;
4370
4371 hr_utility.set_location('l_latest_asg : ' || l_latest_asg, 50);
4372
4373 if l_latest_asg = asg_rec.assignment_id then
4374 -- If RTI Reporting asg is not processed then create action for it
4375
4376 ----------------------------------------------------------------------------------------
4377 l_fps_run_date := NULL;
4378 -- Get the Last FPS run date
4379 -- check any payroll actions after that date till 5-apr-13
4380 hr_utility.set_location('l_fps_run_date : '||l_fps_run_date,20);
4381
4382 open csr_latest_fps_date(l_ni_rpt_asg_id);
4383 fetch csr_latest_fps_date into l_fps_run_date,l_pact_id;
4384 if csr_latest_fps_date%found then
4385 hr_utility.set_location('Cursor Found. l_fps_run_date : '||l_fps_run_date,20);
4386 hr_utility.set_location('Cursor Found. l_pact_id : '||l_pact_id,20);
4387 end if;
4388 close csr_latest_fps_date;
4389
4390 if l_fps_run_date is not null then
4391 open csr_latest_asg_action1(l_ni_rpt_asg_id,l_pact_id);
4392 fetch csr_latest_asg_action1 into l_last_asg_action_id, l_last_effective_date;
4393 close csr_latest_asg_action1;
4394 end if;
4395
4396 -- For New Starters where no FPS run exists, set the date to Start of the Tax Year
4397 if l_fps_run_date is null then
4398 l_fps_run_date := g_start_year;
4399 open csr_latest_asg_action(l_ni_rpt_asg_id,g_start_year);
4400 fetch csr_latest_asg_action into l_last_asg_action_id, l_last_effective_date;
4401 close csr_latest_asg_action;
4402 end if;
4403
4404 hr_utility.set_location('l_last_asg_action_id: '||l_last_asg_action_id,20);
4405 hr_utility.set_location('l_last_effective_date: '||l_last_effective_date,20);
4406
4407 if l_last_asg_action_id is null then
4408 hr_utility.set_location('Creating assignment action for the assignment ID : '||l_ni_rpt_asg_id,20);
4409
4410 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
4411 -- Insert assignment into pay_assignment_actions
4412 hr_nonrun_asact.insact ( lockingactid, l_ni_rpt_asg_id, pactid, chunk, NULL );
4413
4414 --NI Aggr
4415 hr_utility.set_location('Action Created for RTI Reporting Ni Aggr asg : '||l_ni_rpt_asg_id,20);
4416
4417 --Locking mechanism
4418 -- If NI Aggr
4419
4420 open csr_action_type(l_last_asg_action_id);
4421 fetch csr_action_type INTO l_latest_action_type;
4422 close csr_action_type;
4423
4424 if l_latest_action_type = 'P' or l_latest_action_type = 'U' then
4425 hr_utility.set_location('lockingactid '||lockingactid, 50);
4426 hr_utility.set_location('Prepayment l_last_asg_action_id '||l_last_asg_action_id, 50);
4427 hr_nonrun_asact.insint(lockingactid, l_last_asg_action_id);
4428 else
4429 if l_fps_run_date is not null then
4430
4431 for asg_actions in csr_all_actions_after_fps(l_ni_rpt_asg_id,l_pact_id)
4432 loop
4433 hr_utility.set_location('lockingactid '||lockingactid, 50);
4434 hr_utility.set_location('asg_actions.asg_act_id '||asg_actions.asg_act_id, 50);
4435 hr_nonrun_asact.insint(lockingactid, asg_actions.asg_act_id);
4436 end loop;
4437 else
4438 for asg_actions in csr_all_actions_tax_year(l_ni_rpt_asg_id)
4439 loop
4440 hr_utility.set_location('New Starter ', 50);
4441 hr_utility.set_location('lockingactid '||lockingactid, 50);
4442 hr_utility.set_location('asg_actions.asg_act_id '||asg_actions.asg_act_id, 50);
4443 hr_nonrun_asact.insint(lockingactid, asg_actions.asg_act_id);
4444 end loop;
4445 end if;
4446 end if;
4447
4448
4449
4450 end if;
4451 ----------------------------------------------------------------------------------------
4452
4453 end if;
4454
4455 end if;
4456 end if;
4457 --NI Aggr
4458
4459 end loop;
4460
4461 hr_utility.set_location('Leaving: '||l_proc,999);
4462 END internal_action_creation_eyu;
4463 --
4464 --
4465 --
4466 /*--------------------------------------------------------------------------
4467 Name : action_creation
4468 Purpose : This creates the assignment actions for a specific chunk.
4469 Arguments :
4470 Notes :
4471 --------------------------------------------------------------------------*/
4472 PROCEDURE rti_eyu_action_creation(
4473 pactid IN NUMBER,
4474 stperson IN NUMBER,
4475 endperson IN NUMBER,
4476 chunk IN NUMBER)
4477 IS
4478 BEGIN
4479 internal_action_creation_eyu(pactid, stperson, endperson, chunk,'GB_RTI_EYU_13', 'RTI_EYU_REP_13');
4480 END rti_eyu_action_creation;
4481 ---
4482 ---
4483 PROCEDURE reset_flag(
4484 p_type VARCHAR2,
4485 p_reset_flag_type VARCHAR2,
4486 p_assact NUMBER)
4487 IS
4488 l_proc CONSTANT VARCHAR2(50):= g_package||'reset_flag';
4489
4490 CURSOR csr_aei_starter_details
4491 IS
4492 SELECT aei.assignment_extra_info_id,
4493 aei.object_version_number,
4494 aei.aei_information8
4495 FROM pay_assignment_actions paa,
4496 per_assignment_extra_info aei
4497 WHERE paa.assignment_action_id = p_assact
4498 AND aei.assignment_id = paa.assignment_id
4499 AND aei.information_type = p_type;
4500
4501 CURSOR csr_aei_pensioner_details
4502 IS
4503 SELECT aei.assignment_extra_info_id,
4504 aei.object_version_number,
4505 aei.aei_information9
4506 FROM pay_assignment_actions paa,
4507 per_assignment_extra_info aei
4508 WHERE paa.assignment_action_id = p_assact
4509 AND aei.assignment_id = paa.assignment_id
4510 AND aei.information_type = p_type;
4511
4512 CURSOR csr_aei_expat_details
4513 IS
4514 SELECT aei.assignment_extra_info_id,
4515 aei.object_version_number,
4516 aei.aei_information19
4517 FROM pay_assignment_actions paa,
4518 per_assignment_extra_info aei
4519 WHERE paa.assignment_action_id = p_assact
4520 AND aei.assignment_id = paa.assignment_id
4521 AND aei.information_type = p_type;
4522
4523 l_aei_starter_rec csr_aei_starter_details%rowtype;
4524 l_aei_pensioner_rec csr_aei_pensioner_details%rowtype;
4525 l_aei_expat_rec csr_aei_expat_details%rowtype;
4526 l_ovn NUMBER;
4527 l_reset_flag VARCHAR2(30);
4528
4529 BEGIN
4530 IF p_reset_flag_type = 'STARTER' THEN
4531
4532 OPEN csr_aei_starter_details;
4533 FETCH csr_aei_starter_details INTO l_aei_starter_rec;
4534 CLOSE csr_aei_starter_details;
4535
4536 IF l_aei_starter_rec.aei_information8 = 'Y' THEN
4537 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
4538 p_object_version_number => l_ovn,
4539 p_assignment_extra_info_id => l_aei_starter_rec.assignment_extra_info_id,
4540 p_aei_information_category => p_type,
4541 p_aei_information8 => 'N');
4542 END IF;
4543 END IF;
4544
4545 IF p_reset_flag_type = 'PENSIONER' THEN
4546
4547 OPEN csr_aei_pensioner_details;
4548 FETCH csr_aei_pensioner_details INTO l_aei_pensioner_rec;
4549 CLOSE csr_aei_pensioner_details;
4550
4551 IF l_aei_pensioner_rec.aei_information9 = 'Y' THEN
4552 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
4553 p_object_version_number => l_ovn,
4554 p_assignment_extra_info_id => l_aei_pensioner_rec.assignment_extra_info_id,
4555 p_aei_information_category => p_type,
4556 p_aei_information9 => 'N');
4557 END IF;
4558 END IF;
4559
4560 IF p_reset_flag_type = 'EXPAT' THEN
4561
4562 OPEN csr_aei_expat_details;
4563 FETCH csr_aei_expat_details INTO l_aei_expat_rec;
4564 CLOSE csr_aei_expat_details;
4565
4566 IF l_aei_expat_rec.aei_information19 = 'Y' THEN
4567 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
4568 p_object_version_number => l_ovn,
4569 p_assignment_extra_info_id => l_aei_expat_rec.assignment_extra_info_id,
4570 p_aei_information_category => p_type,
4571 p_aei_information19 => 'N');
4572 END IF;
4573 END IF;
4574 END;
4575
4576 /*--------------------------------------------------------------------------
4577 Name : archinit
4578 Purpose : This procedure can be used to perform an initialisation
4579 section and validation of Employer details
4580 Arguments :
4581 Notes :
4582 --------------------------------------------------------------------------*/
4583 PROCEDURE archinit(
4584 p_payroll_action_id IN NUMBER)
4585 IS
4586 error_found EXCEPTION;
4587 l_proc CONSTANT VARCHAR2(50) := g_package || ' archinit';
4588 l_sender_id hr_organization_information.org_information11%TYPE;
4589 l_tax_ref hr_organization_information.org_information1%TYPE;
4590 l_tax_dist hr_organization_information.org_information2%TYPE;
4591 l_employer_addr VARCHAR2(255);
4592 l_employer_name VARCHAR2(150);
4593 l_err BOOLEAN;
4594 l_exp EXCEPTION;
4595 l_rep_typ VARCHAR2(100);
4596 l_effective_date DATE;
4597
4598
4599 CURSOR csr_parameter_info(p_payroll_action_id NUMBER)
4600 IS
4601 SELECT
4602 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref
4603 FROM pay_payroll_actions
4604 WHERE payroll_action_id = p_payroll_action_id;
4605
4606 CURSOR csr_payroll_details(pactid NUMBER)
4607 IS
4608 SELECT NVL(UPPER(hoi.org_information11),' ') sender_id,
4609 DECODE(SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TEST=') + 5,1) ,'N',' ','Y','1') test_indicator,
4610 fnd_number.number_to_canonical(pact.request_id) request_id,
4611 NVL(upper(SUBSTR(ltrim(hoi.org_information3),1,35)),' ') employer_name,
4612 NVL(upper(SUBSTR(ltrim(SUBSTR(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
4613 lpad(NVL(SUBSTR(hoi.org_information1,1,3),' '),3,0) tax_office_no,
4614 DECODE(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
4615 NVL(upper(SUBSTR(hoi.org_information6,1,13)),' ') acc_ref_no,
4616 report_type
4617 FROM pay_payroll_actions pact,
4618 hr_organization_information hoi
4619 WHERE pact.payroll_action_id =pactid
4620 AND pact.business_group_id = hoi.organization_id
4621 AND hoi.org_information_context = 'Tax Details References'
4622 AND NVL(hoi.org_information10,'UK') = 'UK'
4623 AND SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8, instr(pact.legislative_parameters
4624 ||' ',' ', instr(pact.legislative_parameters,'TAX_REF=') +8) - instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
4625
4626
4627 CURSOR get_defined_balance_id (p_balance_name VARCHAR2, p_dimension_name VARCHAR2)
4628 IS
4629 SELECT defined_balance_id
4630 FROM pay_defined_balances db,
4631 pay_balance_types b,
4632 pay_balance_dimensions d
4633 WHERE b.balance_name = p_balance_name
4634 AND d.dimension_name = p_dimension_name
4635 AND db.balance_type_id = b.balance_type_id
4636 AND db.balance_dimension_id = d.balance_dimension_id
4637 AND b.legislation_code = 'GB'
4638 AND d.legislation_code = 'GB'
4639 AND db.legislation_code = 'GB';
4640
4641 CURSOR get_defined_balance_id1
4642 IS
4643 SELECT b.balance_name balance_name,
4644 b.balance_type_id balance_type_id,
4645 d.database_item_suffix database_item_suffix,
4646 d.balance_dimension_id balance_dimension_id,
4647 db.defined_balance_id defined_balance_id
4648 FROM pay_defined_balances db,
4649 pay_balance_types b,
4650 pay_balance_dimensions d
4651 WHERE db.balance_type_id = b.balance_type_id
4652 AND db.balance_dimension_id = d.balance_dimension_id
4653
4654 AND (d.database_item_suffix = '_ASG_TD_YTD'
4655 AND b.balance_name IN ('Taxable Pay','PAYE','Student Loan','SSP Total',
4656 'SMP Total','SPP Adoption Total', 'SPP Birth Total','SAP Total',
4657 'ASPP Adoption Total','ASPP Birth Total'
4658 ))
4659
4660 AND b.legislation_code = 'GB'
4661 AND d.legislation_code = 'GB'
4662 AND db.legislation_code = 'GB';
4663
4664 CURSOR get_aggr_defined_balance_id
4665 IS
4666 SELECT b.balance_name balance_name,
4667 b.balance_type_id balance_type_id,
4668 d.database_item_suffix database_item_suffix,
4669 d.balance_dimension_id balance_dimension_id,
4670 db.defined_balance_id defined_balance_id
4671 FROM pay_defined_balances db,
4672 pay_balance_types b,
4673 pay_balance_dimensions d
4674 WHERE db.balance_type_id = b.balance_type_id
4675 AND db.balance_dimension_id = d.balance_dimension_id
4676 AND ((d.database_item_suffix = '_PER_TD_YTD'
4677 AND b.balance_name IN ('Taxable Pay','Student Loan','SSP Total','SMP Total',
4678 'SPP Adoption Total', 'SAP Total','ASPP Adoption Total',
4679 'SPP Birth Total','ASPP Birth Total'))
4680
4681 OR(d.database_item_suffix = '_PER_TD_CPE_YTD'
4682 AND b.balance_name IN ('PAYE')))
4683
4684
4685 and b.legislation_code = 'GB'
4686 and d.legislation_code = 'GB'
4687 and db.legislation_code = 'GB';
4688
4689 CURSOR get_defined_balance_id_ni
4690 IS
4691 SELECT b.balance_name balance_name,
4692 b.balance_type_id balance_type_id,
4693 d.database_item_suffix database_item_suffix,
4694 d.balance_dimension_id balance_dimension_id,
4695 db.defined_balance_id defined_balance_id
4696 FROM pay_defined_balances db,
4697 pay_balance_types b,
4698 pay_balance_dimensions d
4699 WHERE db.balance_type_id = b.balance_type_id
4700 AND db.balance_dimension_id = d.balance_dimension_id
4701
4702 AND (d.database_item_suffix = '_ASG_TD_YTD'
4703 AND b.balance_name IN ('NI A Total','NI A Able',
4704 'NI B Total','NI B Able',
4705 'NI C Total','NI C Able',
4706 'NI D Total','NI D Able',
4707 'NI E Total','NI E Able',
4708 'NI J Total','NI J Able',
4709 'NI L Total','NI L Able'))
4710 and b.legislation_code = 'GB'
4711 and d.legislation_code = 'GB'
4712 and db.legislation_code = 'GB';
4713
4714 CURSOR get_aggr_defined_balance_id_ni
4715 IS
4716 SELECT b.balance_name balance_name,
4717 b.balance_type_id balance_type_id,
4718 d.database_item_suffix database_item_suffix,
4719 d.balance_dimension_id balance_dimension_id,
4720 db.defined_balance_id defined_balance_id
4721 FROM pay_defined_balances db,
4722 pay_balance_types b,
4723 pay_balance_dimensions d
4724 WHERE db.balance_type_id = b.balance_type_id
4725 AND db.balance_dimension_id = d.balance_dimension_id
4726
4727 AND (d.database_item_suffix = '_PER_TD_YTD'
4728 AND b.balance_name IN ('NI A Total','NI A Able',
4729 'NI B Total','NI B Able',
4730 'NI C Total','NI C Able',
4731 'NI D Total','NI D Able',
4732 'NI E Total','NI E Able',
4733 'NI J Total','NI J Able',
4734 'NI L Total','NI L Able'))
4735
4736 and b.legislation_code = 'GB'
4737 and d.legislation_code = 'GB'
4738 and db.legislation_code = 'GB';
4739
4740
4741
4742 l_count NUMBER := 1;
4743 l_fps_effective_date VARCHAR2(30);
4744 l_balance_counter NUMBER;
4745 taxable_id NUMBER :=1;
4746 paye_id NUMBER :=2;
4747 student_loan_id NUMBER :=3;
4748 taxable_ptd_id NUMBER :=4;
4749 student_loan_ptd_id NUMBER :=5;
4750 paye_ptd_id NUMBER :=6;
4751 ssp_id NUMBER :=7;
4752 smp_id NUMBER :=8;
4753 ospp_adopt_id NUMBER :=9;
4754 sap_id NUMBER :=10;
4755 aspp_adopt_id NUMBER :=11;
4756 l_dummy NUMBER;
4757 l_pre_pact_effective_date DATE;
4758 l_first_fps_run_date date;
4759 l_tax_year varchar2(4) := '2013';
4760 BEGIN
4761 hr_utility.set_location('Entering '|| l_proc, 10);
4762 l_err := FALSE;
4763
4764 OPEN csr_parameter_info(p_payroll_action_id);
4765 FETCH csr_parameter_info
4766 INTO g_tax_ref;
4767 CLOSE csr_parameter_info;
4768
4769 l_effective_date := to_date('05-04-'||l_tax_year,'DD-MM-YYYY');
4770
4771 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
4772 g_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
4773 g_end_year := to_date('05-04-'||TO_CHAR(to_number(SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4))+1 ),'DD-MM-YYYY') ;
4774 ELSE
4775 g_start_year := to_date('06-04-'||TO_CHAR(to_number(SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4))-1 ),'DD-MM-YYYY') ;
4776 g_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
4777 END IF;
4778
4779
4780 SELECT distinct element_type_id
4781 INTO g_paye_element_id
4782 FROM pay_element_types_f
4783 WHERE element_name = 'PAYE'
4784 AND legislation_code = 'GB';
4785
4786 SELECT distinct element_type_id
4787 INTO g_paye_details_id
4788 FROM pay_element_types_f
4789 WHERE element_name = 'PAYE Details'
4790 AND legislation_code = 'GB';
4791
4792 hr_utility.trace('g_paye_element_id: '||TO_CHAR(g_paye_element_id));
4793
4794 --******************************
4795 l_balance_counter := 1;
4796 FOR rec IN get_defined_balance_id1
4797 LOOP
4798 g_fps_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
4799 hr_utility.trace('balance_name: '||g_fps_bal_det_tab(l_balance_counter).balance_name);
4800 g_fps_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
4801 hr_utility.trace('balance_type_id: '||g_fps_bal_det_tab(l_balance_counter).balance_type_id);
4802 g_fps_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
4803 hr_utility.trace('database_item_suffix: '||g_fps_bal_det_tab(l_balance_counter).database_item_suffix);
4804 g_fps_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
4805 hr_utility.trace('balance_dimension_id: '||g_fps_bal_det_tab(l_balance_counter).balance_dimension_id);
4806 g_fps_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
4807 hr_utility.trace('defined_balance_id: '||g_fps_bal_det_tab(l_balance_counter).defined_balance_id);
4808 l_balance_counter := l_balance_counter + 1;
4809 hr_utility.trace('Balance Counter: '||l_balance_counter);
4810 END LOOP;
4811
4812 FOR i IN 1..g_fps_bal_det_tab.last
4813 LOOP
4814 g_defined_balance_lst(i).defined_balance_id := g_fps_bal_det_tab(i).defined_balance_id;
4815 END LOOP;
4816
4817
4818 --NI balances for non aggregated assignments starts here
4819 l_balance_counter := 1;
4820 FOR rec IN get_defined_balance_id_ni
4821 LOOP
4822 g_fps_ni_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
4823 g_fps_ni_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
4824 g_fps_ni_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
4825 g_fps_ni_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
4826 g_fps_ni_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
4827 l_balance_counter := l_balance_counter + 1;
4828 END LOOP;
4829 FOR i IN 1..g_fps_ni_bal_det_tab.last
4830 LOOP
4831 g_defined_balance_lst_ni(i).defined_balance_id := g_fps_ni_bal_det_tab(i).defined_balance_id;
4832 END LOOP;
4833
4834
4835 --Aggregation balances starts here
4836 l_balance_counter := 1;
4837 FOR rec IN get_aggr_defined_balance_id
4838 LOOP
4839 g_fps_aggr_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
4840 hr_utility.trace('balance name: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_name);
4841 g_fps_aggr_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
4842 hr_utility.trace('balance_type_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_type_id);
4843 g_fps_aggr_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
4844 hr_utility.trace('database_item_suffix: '||g_fps_aggr_bal_det_tab(l_balance_counter).database_item_suffix);
4845 g_fps_aggr_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
4846 hr_utility.trace('balance_dimension_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_dimension_id);
4847 g_fps_aggr_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
4848 hr_utility.trace('defined_balance_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).defined_balance_id);
4849 l_balance_counter := l_balance_counter + 1;
4850 hr_utility.trace('Balance Counter: '||l_balance_counter);
4851 END LOOP;
4852
4853 FOR i IN 1..g_fps_aggr_bal_det_tab.last
4854 LOOP
4855 g_aggr_defined_balance_lst(i).defined_balance_id := g_fps_aggr_bal_det_tab(i).defined_balance_id;
4856 END LOOP;
4857
4858 --Aggregation balances ends here
4859
4860 --NI balances for Aggregation assignments starts here
4861 l_balance_counter := 1;
4862
4863 FOR rec IN get_aggr_defined_balance_id_ni
4864 LOOP
4865 g_fps_ni_aggr_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
4866 g_fps_ni_aggr_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
4867 g_fps_ni_aggr_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
4868 g_fps_ni_aggr_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
4869 g_fps_ni_aggr_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
4870 l_balance_counter := l_balance_counter + 1;
4871 END LOOP;
4872
4873 FOR i IN 1..g_fps_ni_aggr_bal_det_tab.last
4874 LOOP
4875 g_aggr_defined_balance_lst_ni(i).defined_balance_id := g_fps_ni_aggr_bal_det_tab(i).defined_balance_id;
4876 END LOOP;
4877
4878
4879 OPEN get_defined_balance_id('NI A Able LEL','_ASG_TD_YTD');
4880 FETCH get_defined_balance_id INTO g_nia_lel_id;
4881 CLOSE get_defined_balance_id;
4882
4883 OPEN get_defined_balance_id('NI A Able ET','_ASG_TD_YTD');
4884 FETCH get_defined_balance_id INTO g_nia_et_id;
4885 CLOSE get_defined_balance_id;
4886
4887 OPEN get_defined_balance_id('NI A Able UAP','_ASG_TD_YTD');
4888 FETCH get_defined_balance_id INTO g_nia_uap_id;
4889 CLOSE get_defined_balance_id;
4890
4891 OPEN get_defined_balance_id('NI A Able UEL','_ASG_TD_YTD');
4892 FETCH get_defined_balance_id INTO g_nia_uel_id;
4893 CLOSE get_defined_balance_id;
4894
4895 OPEN get_defined_balance_id('NI A Employee','_ASG_TD_YTD');
4896 FETCH get_defined_balance_id INTO g_nia_e_ytd_id;
4897 CLOSE get_defined_balance_id;
4898
4899 OPEN get_defined_balance_id('NI A Employer','_ASG_TD_YTD');
4900 FETCH get_defined_balance_id INTO g_nia_r_ytd_id;
4901 CLOSE get_defined_balance_id;
4902 --
4903 OPEN get_defined_balance_id('NI B Able LEL','_ASG_TD_YTD');
4904 FETCH get_defined_balance_id INTO g_nib_lel_id;
4905 CLOSE get_defined_balance_id;
4906
4907 OPEN get_defined_balance_id('NI B Able ET','_ASG_TD_YTD');
4908 FETCH get_defined_balance_id INTO g_nib_et_id;
4909 CLOSE get_defined_balance_id;
4910
4911 OPEN get_defined_balance_id('NI B Able UAP','_ASG_TD_YTD');
4912 FETCH get_defined_balance_id INTO g_nib_uap_id;
4913 CLOSE get_defined_balance_id;
4914
4915 OPEN get_defined_balance_id('NI B Able UEL','_ASG_TD_YTD');
4916 FETCH get_defined_balance_id INTO g_nib_uel_id;
4917 CLOSE get_defined_balance_id;
4918
4919 OPEN get_defined_balance_id('NI B Employee','_ASG_TD_YTD');
4920 FETCH get_defined_balance_id INTO g_nib_e_ytd_id;
4921 CLOSE get_defined_balance_id;
4922
4923 OPEN get_defined_balance_id('NI B Employer','_ASG_TD_YTD');
4924 FETCH get_defined_balance_id INTO g_nib_r_ytd_id;
4925 CLOSE get_defined_balance_id;
4926 --
4927 OPEN get_defined_balance_id('NI C Able LEL','_ASG_TD_YTD');
4928 FETCH get_defined_balance_id INTO g_nic_lel_id;
4929 CLOSE get_defined_balance_id;
4930
4931 OPEN get_defined_balance_id('NI C Able ET','_ASG_TD_YTD');
4932 FETCH get_defined_balance_id INTO g_nic_et_id;
4933 CLOSE get_defined_balance_id;
4934
4935 OPEN get_defined_balance_id('NI C Able UAP','_ASG_TD_YTD');
4936 FETCH get_defined_balance_id INTO g_nic_uap_id;
4937 CLOSE get_defined_balance_id;
4938
4939 OPEN get_defined_balance_id('NI C Able UEL','_ASG_TD_YTD');
4940 FETCH get_defined_balance_id INTO g_nic_uel_id;
4941 CLOSE get_defined_balance_id;
4942
4943 OPEN get_defined_balance_id('NI C Employee','_ASG_TD_YTD');
4944 FETCH get_defined_balance_id INTO g_nic_e_ytd_id;
4945 CLOSE get_defined_balance_id;
4946
4947 OPEN get_defined_balance_id('NI C Employer','_ASG_TD_YTD');
4948 FETCH get_defined_balance_id INTO g_nic_r_ytd_id;
4949 CLOSE get_defined_balance_id;
4950 ---
4951
4952 OPEN get_defined_balance_id('NI D Able LEL','_ASG_TD_YTD');
4953 FETCH get_defined_balance_id INTO g_nid_lel_id;
4954 CLOSE get_defined_balance_id;
4955
4956 OPEN get_defined_balance_id('NI D Able ET','_ASG_TD_YTD');
4957 FETCH get_defined_balance_id INTO g_nid_et_id;
4958 CLOSE get_defined_balance_id;
4959
4960 OPEN get_defined_balance_id('NI D Able UAP','_ASG_TD_YTD');
4961 FETCH get_defined_balance_id INTO g_nid_uap_id;
4962 CLOSE get_defined_balance_id;
4963
4964 OPEN get_defined_balance_id('NI D Able UEL','_ASG_TD_YTD');
4965 FETCH get_defined_balance_id INTO g_nid_uel_id;
4966 CLOSE get_defined_balance_id;
4967
4968 OPEN get_defined_balance_id('NI D Employee','_ASG_TD_YTD');
4969 FETCH get_defined_balance_id INTO g_nid_e_ytd_id;
4970 CLOSE get_defined_balance_id;
4971
4972 OPEN get_defined_balance_id('NI D Employer','_ASG_TD_YTD');
4973 FETCH get_defined_balance_id INTO g_nid_r_ytd_id;
4974 CLOSE get_defined_balance_id;
4975 ---
4976 OPEN get_defined_balance_id('NI E Able LEL','_ASG_TD_YTD');
4977 FETCH get_defined_balance_id INTO g_nie_lel_id;
4978 CLOSE get_defined_balance_id;
4979
4980 OPEN get_defined_balance_id('NI E Able ET','_ASG_TD_YTD');
4981 FETCH get_defined_balance_id INTO g_nie_et_id;
4982 CLOSE get_defined_balance_id;
4983
4984 OPEN get_defined_balance_id('NI E Able UAP','_ASG_TD_YTD');
4985 FETCH get_defined_balance_id INTO g_nie_uap_id;
4986 CLOSE get_defined_balance_id;
4987
4988 OPEN get_defined_balance_id('NI E Able UEL','_ASG_TD_YTD');
4989 FETCH get_defined_balance_id INTO g_nie_uel_id;
4990 CLOSE get_defined_balance_id;
4991
4992 OPEN get_defined_balance_id('NI E Employee','_ASG_TD_YTD');
4993 FETCH get_defined_balance_id INTO g_nie_e_ytd_id;
4994 CLOSE get_defined_balance_id;
4995
4996 OPEN get_defined_balance_id('NI E Employer','_ASG_TD_YTD');
4997 FETCH get_defined_balance_id INTO g_nie_r_ytd_id;
4998 CLOSE get_defined_balance_id;
4999
5000 ---
5001 OPEN get_defined_balance_id('NI J Able LEL','_ASG_TD_YTD');
5002 FETCH get_defined_balance_id INTO g_nij_lel_id;
5003 CLOSE get_defined_balance_id;
5004
5005 OPEN get_defined_balance_id('NI J Able ET','_ASG_TD_YTD');
5006 FETCH get_defined_balance_id INTO g_nij_et_id;
5007 CLOSE get_defined_balance_id;
5008
5009 OPEN get_defined_balance_id('NI J Able UAP','_ASG_TD_YTD');
5010 FETCH get_defined_balance_id INTO g_nij_uap_id;
5011 CLOSE get_defined_balance_id;
5012
5013 OPEN get_defined_balance_id('NI J Able UEL','_ASG_TD_YTD');
5014 FETCH get_defined_balance_id INTO g_nij_uel_id;
5015 CLOSE get_defined_balance_id;
5016
5017 OPEN get_defined_balance_id('NI J Employee','_ASG_TD_YTD');
5018 FETCH get_defined_balance_id INTO g_nij_e_ytd_id;
5019 CLOSE get_defined_balance_id;
5020
5021 OPEN get_defined_balance_id('NI J Employer','_ASG_TD_YTD');
5022 FETCH get_defined_balance_id INTO g_nij_r_ytd_id;
5023 CLOSE get_defined_balance_id;
5024 ---
5025 OPEN get_defined_balance_id('NI L Able LEL','_ASG_TD_YTD');
5026 FETCH get_defined_balance_id INTO g_nil_lel_id;
5027 CLOSE get_defined_balance_id;
5028
5029 OPEN get_defined_balance_id('NI L Able ET','_ASG_TD_YTD');
5030 FETCH get_defined_balance_id INTO g_nil_et_id;
5031 CLOSE get_defined_balance_id;
5032
5033 OPEN get_defined_balance_id('NI L Able UAP','_ASG_TD_YTD');
5034 FETCH get_defined_balance_id INTO g_nil_uap_id;
5035 CLOSE get_defined_balance_id;
5036
5037 OPEN get_defined_balance_id('NI L Able UEL','_ASG_TD_YTD');
5038 FETCH get_defined_balance_id INTO g_nil_uel_id;
5039 CLOSE get_defined_balance_id;
5040
5041 OPEN get_defined_balance_id('NI L Employee','_ASG_TD_YTD');
5042 FETCH get_defined_balance_id INTO g_nil_e_ytd_id;
5043 CLOSE get_defined_balance_id;
5044
5045 OPEN get_defined_balance_id('NI L Employer','_ASG_TD_YTD');
5046 FETCH get_defined_balance_id INTO g_nil_r_ytd_id;
5047 CLOSE get_defined_balance_id;
5048 ---
5049 ---
5050 ---
5051
5052
5053 OPEN get_defined_balance_id('NI A Able LEL','_PER_TD_YTD');
5054 FETCH get_defined_balance_id INTO g_per_nia_lel_id;
5055 CLOSE get_defined_balance_id;
5056
5057 OPEN get_defined_balance_id('NI A Able ET','_PER_TD_YTD');
5058 FETCH get_defined_balance_id INTO g_per_nia_et_id;
5059 CLOSE get_defined_balance_id;
5060
5061 OPEN get_defined_balance_id('NI A Able UAP','_PER_TD_YTD');
5062 FETCH get_defined_balance_id INTO g_per_nia_uap_id;
5063 CLOSE get_defined_balance_id;
5064
5065 OPEN get_defined_balance_id('NI A Able UEL','_PER_TD_YTD');
5066 FETCH get_defined_balance_id INTO g_per_nia_uel_id;
5067 CLOSE get_defined_balance_id;
5068
5069 OPEN get_defined_balance_id('NI A Employee','_PER_TD_YTD');
5070 FETCH get_defined_balance_id INTO g_per_nia_e_ytd_id;
5071 CLOSE get_defined_balance_id;
5072
5073 OPEN get_defined_balance_id('NI A Employer','_PER_TD_YTD');
5074 FETCH get_defined_balance_id INTO g_per_nia_r_ytd_id;
5075 CLOSE get_defined_balance_id;
5076 --
5077 OPEN get_defined_balance_id('NI B Able LEL','_PER_TD_YTD');
5078 FETCH get_defined_balance_id INTO g_per_nib_lel_id;
5079 CLOSE get_defined_balance_id;
5080
5081 OPEN get_defined_balance_id('NI B Able ET','_PER_TD_YTD');
5082 FETCH get_defined_balance_id INTO g_per_nib_et_id;
5083 CLOSE get_defined_balance_id;
5084
5085 OPEN get_defined_balance_id('NI B Able UAP','_PER_TD_YTD');
5086 FETCH get_defined_balance_id INTO g_per_nib_uap_id;
5087 CLOSE get_defined_balance_id;
5088
5089 OPEN get_defined_balance_id('NI B Able UEL','_PER_TD_YTD');
5090 FETCH get_defined_balance_id INTO g_per_nib_uel_id;
5091 CLOSE get_defined_balance_id;
5092
5093 OPEN get_defined_balance_id('NI B Employee','_PER_TD_YTD');
5094 FETCH get_defined_balance_id INTO g_per_nib_e_ytd_id;
5095 CLOSE get_defined_balance_id;
5096
5097 OPEN get_defined_balance_id('NI B Employer','_PER_TD_YTD');
5098 FETCH get_defined_balance_id INTO g_per_nib_r_ytd_id;
5099 CLOSE get_defined_balance_id;
5100 --
5101 OPEN get_defined_balance_id('NI C Able LEL','_PER_TD_YTD');
5102 FETCH get_defined_balance_id INTO g_per_nic_lel_id;
5103 CLOSE get_defined_balance_id;
5104
5105 OPEN get_defined_balance_id('NI C Able ET','_PER_TD_YTD');
5106 FETCH get_defined_balance_id INTO g_per_nic_et_id;
5107 CLOSE get_defined_balance_id;
5108
5109 OPEN get_defined_balance_id('NI C Able UAP','_PER_TD_YTD');
5110 FETCH get_defined_balance_id INTO g_per_nic_uap_id;
5111 CLOSE get_defined_balance_id;
5112
5113 OPEN get_defined_balance_id('NI C Able UEL','_PER_TD_YTD');
5114 FETCH get_defined_balance_id INTO g_per_nic_uel_id;
5115 CLOSE get_defined_balance_id;
5116
5117 OPEN get_defined_balance_id('NI C Employee','_PER_TD_YTD');
5118 FETCH get_defined_balance_id INTO g_per_nic_e_ytd_id;
5119 CLOSE get_defined_balance_id;
5120
5121 OPEN get_defined_balance_id('NI C Employer','_PER_TD_YTD');
5122 FETCH get_defined_balance_id INTO g_per_nic_r_ytd_id;
5123 CLOSE get_defined_balance_id;
5124 ---
5125
5126 OPEN get_defined_balance_id('NI D Able LEL','_PER_TD_YTD');
5127 FETCH get_defined_balance_id INTO g_per_nid_lel_id;
5128 CLOSE get_defined_balance_id;
5129
5130 OPEN get_defined_balance_id('NI D Able ET','_PER_TD_YTD');
5131 FETCH get_defined_balance_id INTO g_per_nid_et_id;
5132 CLOSE get_defined_balance_id;
5133
5134 OPEN get_defined_balance_id('NI D Able UAP','_PER_TD_YTD');
5135 FETCH get_defined_balance_id INTO g_per_nid_uap_id;
5136 CLOSE get_defined_balance_id;
5137
5138 OPEN get_defined_balance_id('NI D Able UEL','_PER_TD_YTD');
5139 FETCH get_defined_balance_id INTO g_per_nid_uel_id;
5140 CLOSE get_defined_balance_id;
5141
5142 OPEN get_defined_balance_id('NI D Employee','_PER_TD_YTD');
5143 FETCH get_defined_balance_id INTO g_per_nid_e_ytd_id;
5144 CLOSE get_defined_balance_id;
5145
5146 OPEN get_defined_balance_id('NI D Employer','_PER_TD_YTD');
5147 FETCH get_defined_balance_id INTO g_per_nid_r_ytd_id;
5148 CLOSE get_defined_balance_id;
5149 ---
5150 OPEN get_defined_balance_id('NI E Able LEL','_PER_TD_YTD');
5151 FETCH get_defined_balance_id INTO g_per_nie_lel_id;
5152 CLOSE get_defined_balance_id;
5153
5154 OPEN get_defined_balance_id('NI E Able ET','_PER_TD_YTD');
5155 FETCH get_defined_balance_id INTO g_per_nie_et_id;
5156 CLOSE get_defined_balance_id;
5157
5158 OPEN get_defined_balance_id('NI E Able UAP','_PER_TD_YTD');
5159 FETCH get_defined_balance_id INTO g_per_nie_uap_id;
5160 CLOSE get_defined_balance_id;
5161
5162 OPEN get_defined_balance_id('NI E Able UEL','_PER_TD_YTD');
5163 FETCH get_defined_balance_id INTO g_per_nie_uel_id;
5164 CLOSE get_defined_balance_id;
5165
5166 OPEN get_defined_balance_id('NI E Employee','_PER_TD_YTD');
5167 FETCH get_defined_balance_id INTO g_per_nie_e_ytd_id;
5168 CLOSE get_defined_balance_id;
5169
5170 OPEN get_defined_balance_id('NI E Employer','_PER_TD_YTD');
5171 FETCH get_defined_balance_id INTO g_per_nie_r_ytd_id;
5172 CLOSE get_defined_balance_id;
5173
5174 ---
5175 OPEN get_defined_balance_id('NI J Able LEL','_PER_TD_YTD');
5176 FETCH get_defined_balance_id INTO g_per_nij_lel_id;
5177 CLOSE get_defined_balance_id;
5178
5179 OPEN get_defined_balance_id('NI J Able ET','_PER_TD_YTD');
5180 FETCH get_defined_balance_id INTO g_per_nij_et_id;
5181 CLOSE get_defined_balance_id;
5182
5183 OPEN get_defined_balance_id('NI J Able UAP','_PER_TD_YTD');
5184 FETCH get_defined_balance_id INTO g_per_nij_uap_id;
5185 CLOSE get_defined_balance_id;
5186
5187 OPEN get_defined_balance_id('NI J Able UEL','_PER_TD_YTD');
5188 FETCH get_defined_balance_id INTO g_per_nij_uel_id;
5189 CLOSE get_defined_balance_id;
5190
5191 OPEN get_defined_balance_id('NI J Employee','_PER_TD_YTD');
5192 FETCH get_defined_balance_id INTO g_per_nij_e_ytd_id;
5193 CLOSE get_defined_balance_id;
5194
5195 OPEN get_defined_balance_id('NI J Employer','_PER_TD_YTD');
5196 FETCH get_defined_balance_id INTO g_per_nij_r_ytd_id;
5197 CLOSE get_defined_balance_id;
5198 ---
5199 OPEN get_defined_balance_id('NI L Able LEL','_PER_TD_YTD');
5200 FETCH get_defined_balance_id INTO g_per_nil_lel_id;
5201 CLOSE get_defined_balance_id;
5202
5203 OPEN get_defined_balance_id('NI L Able ET','_PER_TD_YTD');
5204 FETCH get_defined_balance_id INTO g_per_nil_et_id;
5205 CLOSE get_defined_balance_id;
5206
5207 OPEN get_defined_balance_id('NI L Able UAP','_PER_TD_YTD');
5208 FETCH get_defined_balance_id INTO g_per_nil_uap_id;
5209 CLOSE get_defined_balance_id;
5210
5211 OPEN get_defined_balance_id('NI L Able UEL','_PER_TD_YTD');
5212 FETCH get_defined_balance_id INTO g_per_nil_uel_id;
5213 CLOSE get_defined_balance_id;
5214
5215 OPEN get_defined_balance_id('NI L Employee','_PER_TD_YTD');
5216 FETCH get_defined_balance_id INTO g_per_nil_e_ytd_id;
5217 CLOSE get_defined_balance_id;
5218
5219 OPEN get_defined_balance_id('NI L Employer','_PER_TD_YTD');
5220 FETCH get_defined_balance_id INTO g_per_nil_r_ytd_id;
5221 CLOSE get_defined_balance_id;
5222
5223 -- Run Values for Ni Balances
5224 OPEN get_defined_balance_id('NI A Able','_ASG_RUN');
5225 FETCH get_defined_balance_id INTO g_nia_able_id_run;
5226 CLOSE get_defined_balance_id;
5227
5228 OPEN get_defined_balance_id('NI A Employee','_ASG_RUN');
5229 FETCH get_defined_balance_id INTO g_nia_e_id_run;
5230 CLOSE get_defined_balance_id;
5231
5232 OPEN get_defined_balance_id('NI B Able','_ASG_RUN');
5233 FETCH get_defined_balance_id INTO g_nib_able_id_run;
5234 CLOSE get_defined_balance_id;
5235
5236 OPEN get_defined_balance_id('NI B Employee','_ASG_RUN');
5237 FETCH get_defined_balance_id INTO g_nib_e_id_run;
5238 CLOSE get_defined_balance_id;
5239
5240 OPEN get_defined_balance_id('NI C Able','_ASG_RUN');
5241 FETCH get_defined_balance_id INTO g_nic_able_id_run;
5242 CLOSE get_defined_balance_id;
5243
5244 OPEN get_defined_balance_id('NI C Employee','_ASG_RUN');
5245 FETCH get_defined_balance_id INTO g_nic_e_id_run;
5246 CLOSE get_defined_balance_id;
5247
5248 OPEN get_defined_balance_id('NI D Able','_ASG_RUN');
5249 FETCH get_defined_balance_id INTO g_nid_able_id_run;
5250 CLOSE get_defined_balance_id;
5251
5252 OPEN get_defined_balance_id('NI D Employee','_ASG_RUN');
5253 FETCH get_defined_balance_id INTO g_nid_e_id_run;
5254 CLOSE get_defined_balance_id;
5255
5256 OPEN get_defined_balance_id('NI E Able','_ASG_RUN');
5257 FETCH get_defined_balance_id INTO g_nie_able_id_run;
5258 CLOSE get_defined_balance_id;
5259
5260 OPEN get_defined_balance_id('NI E Employee','_ASG_RUN');
5261 FETCH get_defined_balance_id INTO g_nie_e_id_run;
5262 CLOSE get_defined_balance_id;
5263
5264 OPEN get_defined_balance_id('NI J Able','_ASG_RUN');
5265 FETCH get_defined_balance_id INTO g_nij_able_id_run;
5266 CLOSE get_defined_balance_id;
5267
5268 OPEN get_defined_balance_id('NI J Employee','_ASG_RUN');
5269 FETCH get_defined_balance_id INTO g_nij_e_id_run;
5270 CLOSE get_defined_balance_id;
5271
5272 OPEN get_defined_balance_id('NI L Able','_ASG_RUN');
5273 FETCH get_defined_balance_id INTO g_nil_able_id_run;
5274 CLOSE get_defined_balance_id;
5275
5276 OPEN get_defined_balance_id('NI L Employee','_ASG_RUN');
5277 FETCH get_defined_balance_id INTO g_nil_e_id_run;
5278 CLOSE get_defined_balance_id;
5279
5280 hr_utility.set_location('Leaving '|| l_proc, 10);
5281
5282 EXCEPTION
5283 WHEN OTHERS THEN
5284 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
5285 hr_utility.raise_error;
5286 END archinit;
5287 --
5288 --
5289 /*--------------------------------------------------------------------------
5290 Name : archive_data
5291 Purpose : This sets up the contexts needed for the live (non-archive)
5292 database items
5293 Arguments :
5294 Notes : Every possible context for a specific assignment action has to
5295 be added to the PL/SQL table
5296 --------------------------------------------------------------------------*/
5297 --
5298 --
5299 PROCEDURE archive_code(
5300 p_assactid IN NUMBER,
5301 p_effective_date IN DATE)
5302 IS
5303 l_proc CONSTANT VARCHAR2(35):= g_package||'archive_code';
5304 error_found EXCEPTION;
5305 already_processed EXCEPTION;
5306 l_archive_tab action_info_table;
5307 l_archive_tab_det1 action_info_table;
5308 l_archive_tab_det2 action_info_table;
5309 l_archive_tab_ni_det action_info_table;
5310 l_archive_tab_ni_det_1 action_info_table;
5311 l_archive_tab_det1_local action_info_table;
5312 l_archive_tab_det2_local action_info_table;
5313
5314 l_archive_person BOOLEAN;
5315 l_archive_addr BOOLEAN;
5316 l_archive_asg BOOLEAN;
5317 l_per_addr_val_flag VARCHAR2(1);
5318 l_fps_etext_asg_flag VARCHAR2(1);
5319 l_fps_etext_ni_flag VARCHAR2(1);
5320 l_archive_asg_det1 BOOLEAN;
5321 l_archive_asg_det2 BOOLEAN;
5322 l_archive_asg_ni_det BOOLEAN;
5323
5324 l_asg_id number;
5325 l_person_id NUMBER;
5326 l_last_asg_action_id number;
5327 l_last_effective_date date;
5328 l_asg_no per_assignments_f.assignment_number%TYPE;
5329
5330 l_last_fps_pactid number := NULL;
5331 l_last_fps_effdate date;
5332 l_flag VARCHAR2(1) := 'N';
5333 l_flag_ni VARCHAR2(1) := 'N';
5334 l_flag_strt VARCHAR2(1) := 'N';
5335 l_asg_val_flag VARCHAR2(1);
5336 l_ni_val_flag VARCHAR2(1);
5337 l_ni_val_flag1 VARCHAR2(1) := 'N';
5338 l_report_type VARCHAR2(20);
5339
5340 l_paye_flag VARCHAR2(1);
5341 l_ni_flag VARCHAR2(1);
5342
5343 i_count number;
5344
5345 cursor fetch_asg_details is
5346 select paaf.assignment_id ,
5347 paaf.person_id ,
5348 trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
5349 trim(NVL(pap.per_information10,'N')) per_paye_agg_flag,
5350 assignment_number
5351 from pay_assignment_actions paa,
5352 per_all_assignments_f paaf,
5353 per_all_people_f pap
5354 where assignment_action_id = p_assactid
5355 and paaf.assignment_id = paa.assignment_id
5356 and pap.person_id = paaf.person_id
5357 and paaf.effective_start_date =
5358 ( select max(asg2.effective_start_date)
5359 from per_all_assignments_f asg2
5360 where asg2.assignment_id = paaf.assignment_id
5361 and asg2.assignment_type = 'E'
5362 and asg2.effective_start_date <= g_end_year
5363 )
5364 AND g_end_year BETWEEN pap.effective_start_date AND pap.effective_end_date;
5365
5366
5367 --Cursor to fetch Latest assignment action after fps run before end of tax year
5368 CURSOR csr_latest_asg_action(asg_id number) is
5369 SELECT
5370 to_number (substr (max (lpad (paa.action_sequence, 15
5371 , '0')
5372 || paa.assignment_action_id), 16))
5373 , max (pact.effective_date) effective_date
5374 FROM pay_assignment_actions paa
5375 , pay_payroll_actions pact
5376 , per_time_periods ptp
5377 WHERE paa.assignment_id = asg_id
5378 AND paa.payroll_action_id = pact.payroll_action_id
5379 AND pact.time_period_id = ptp.time_period_id
5380 AND pact.action_type IN ('Q', 'R', 'B'
5381 , 'I', 'V')
5382 AND paa.action_status IN ('C', 'S')
5383 AND ptp.regular_payment_date
5384 BETWEEN g_start_year
5385 AND g_end_year;
5386
5387
5388 -- To get maximum assignment action id for the person
5389 cursor csr_get_max_asg_actid_person(person_id number) is
5390 SELECT /*+ USE_NL(paa, pact, ptp) */
5391 to_number (substr (max (lpad (paa.action_sequence, 15
5392 , '0')
5393 || paa.assignment_action_id), 16))
5394 , max (pact.effective_date) effective_date
5395
5396 FROM per_all_assignments_f paaf,
5397 pay_assignment_actions paa
5398 , pay_payroll_actions pact
5399 , per_time_periods ptp,
5400 pay_all_payrolls_f pay,
5401 hr_soft_coding_keyflex sck
5402 WHERE paa.assignment_id = paaf.assignment_id
5403 and paaf.person_id = person_id
5404 AND paa.payroll_action_id = pact.payroll_action_id
5405 AND pact.time_period_id = ptp.time_period_id
5406 AND pact.action_type IN ('Q', 'R', 'B'
5407 , 'I', 'V')
5408 AND paa.action_status IN ('C', 'S')
5409 AND pay.payroll_id = paaf.payroll_id
5410 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
5411 and upper(g_tax_ref) = upper(sck.segment1)
5412 AND ptp.regular_payment_date
5413 BETWEEN g_start_year
5414 AND g_end_year
5415 AND paaf.effective_start_date =
5416 ( select max(asg2.effective_start_date)
5417 from per_all_assignments_f asg2
5418 where asg2.assignment_id = paaf.assignment_id
5419 and asg2.assignment_type = 'E'
5420 and asg2.effective_start_date <= g_end_year
5421 );
5422
5423 --Cursor to fetch Latest FPS Run date and Payroll action ID for the assignment
5424 cursor csr_latest_fps(asg_id number) is
5425 select ppa.effective_date,ppa.payroll_action_id,ppa.report_type
5426 from pay_assignment_actions paa,
5427 pay_payroll_actions ppa
5428 where paa.assignment_id = asg_id
5429 and paa.action_status ='C'
5430 and ppa.payroll_action_id = paa.payroll_action_id
5431 and ppa.report_type in ( 'RTI_FPS_REP' , 'RTI_EYU_REP_13')
5432 and UPPER(g_tax_ref) = UPPER(SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'TAX_REF'),1,20))
5433 order by ppa.effective_date desc;
5434
5435 --cursor to get person latest fps run
5436 cursor csr_latest_fps_payeagg(per_id number) is
5437 select ppa.effective_date,ppa.payroll_action_id,ppa.report_type
5438 from pay_assignment_actions paa,
5439 pay_payroll_actions ppa,
5440 per_all_assignments_f paaf ,
5441 pay_all_payrolls_f pay,
5442 hr_soft_coding_keyflex sck
5443 where paaf.person_id = per_id
5444 AND pay.payroll_id = paaf.payroll_id
5445 and pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
5446 and upper(g_tax_ref) = upper(sck.segment1)
5447 and paa.assignment_id = paaf.assignment_id
5448 and paa.action_status ='C'
5449 and ppa.payroll_action_id = paa.payroll_action_id
5450 and ppa.report_type in ( 'RTI_FPS_REP' , 'RTI_EYU_REP_13')
5451 and paaf.effective_start_date =
5452 ( select max(asg2.effective_start_date)
5453 from per_all_assignments_f asg2
5454 where asg2.assignment_id = paaf.assignment_id
5455 and asg2.assignment_type = 'E'
5456 and asg2.effective_start_date <= g_end_year
5457 )
5458 and g_end_year between pay.effective_start_date and pay.effective_end_date
5459 order by ppa.effective_date desc;
5460
5461 cursor csr_is_retry_request is
5462 select 'Y' from
5463 pay_assignment_actions
5464 where assignment_action_id = p_assactid
5465 AND ACTION_STATUS = 'M';
5466
5467 CURSOR csr_get_starter_details(p_asg_id NUMBER)
5468 IS
5469 SELECT assignment_extra_info_id l_aei_id,
5470 aei_information8 starter_flag,
5471 aei_information9 pensioner_flag,
5472 aei_information19 expat_flag,
5473 object_version_number l_ovn
5474 FROM per_assignment_extra_info
5475 WHERE assignment_id = p_asg_id
5476 AND information_type = 'GB_RTI_ASG_DETAILS';
5477
5478 cursor csr_fps_check(p_asg_id number) is
5479 select count(*)
5480 from pay_assignment_actions paa,
5481 pay_payroll_actions ppa
5482 where paa.assignment_id = p_asg_id
5483 and paa.action_status ='C'
5484 and paa.assignment_action_id <> p_assactid
5485 and ppa.payroll_action_id = paa.payroll_action_id
5486 and ppa.report_type in ( 'RTI_FPS_REP' , 'RTI_EYU_REP_13')
5487 order by ppa.effective_date desc;
5488
5489 l_retry_req_flag varchar2(1) := 'N';
5490 l_new_starter csr_get_starter_details%rowtype;
5491 l_ovn NUMBER;
5492 l_aei_id NUMBER;
5493 l_fps_check NUMBER;
5494
5495 BEGIN
5496 --archive_code begins here
5497 hr_utility.set_location('Entering the debug: '||l_proc,1);
5498 hr_utility.trace('p_assactid: '||p_assactid);
5499 hr_utility.trace('p_effective_date: '||p_effective_date);
5500
5501 open fetch_asg_details;
5502 fetch fetch_asg_details into l_asg_id,l_person_id,l_ni_flag,l_paye_flag,l_asg_no;
5503 close fetch_asg_details;
5504
5505 hr_utility.trace('l_asg_id : '||l_asg_id);
5506 hr_utility.trace('l_person_id : '||l_person_id);
5507 hr_utility.trace('l_ni_flag : '||l_ni_flag);
5508 hr_utility.trace('l_paye_flag : '||l_paye_flag);
5509 hr_utility.trace('l_asg_no : '||l_asg_no);
5510
5511 --RETRY LOGIC
5512 l_retry_req_flag := NULL;
5513 open csr_is_retry_request;
5514 fetch csr_is_retry_request into l_retry_req_flag;
5515 close csr_is_retry_request;
5516
5517 if l_retry_req_flag = 'Y' then
5518
5519 hr_utility.trace('RETRY : l_retry_req_flag: '|| l_retry_req_flag);
5520 open csr_get_starter_details(l_asg_id);
5521 fetch csr_get_starter_details into l_new_starter;
5522 close csr_get_starter_details;
5523
5524 hr_utility.trace('RETRY : l_new_starter.l_aei_id : '|| l_new_starter.l_aei_id);
5525 hr_utility.trace('RETRY : l_new_starter.l_ovn : '|| l_new_starter.l_ovn);
5526 hr_utility.trace('RETRY : l_new_starter.starter_flag : '|| l_new_starter.starter_flag);
5527 hr_utility.trace('RETRY : l_new_starter.pensioner_flag : '|| l_new_starter.pensioner_flag);
5528 hr_utility.trace('RETRY : l_new_starter.expat_flag : '|| l_new_starter.expat_flag);
5529
5530 if l_new_starter.starter_flag = 'Y' OR l_new_starter.pensioner_flag = 'Y' OR l_new_starter.expat_flag = 'Y' THEN
5531
5532 hr_utility.trace('RTI Sent checked.');
5533
5534 open csr_fps_check(l_asg_id);
5535 fetch csr_fps_check into l_fps_check;
5536 close csr_fps_check;
5537
5538 if l_fps_check = 0 then
5539
5540 hr_utility.trace('RETRY : Reset is required.');
5541
5542 --EXPAT Flag
5543 IF l_new_starter.starter_flag = 'Y' THEN
5544 l_ovn := get_version(l_asg_id,'GB_RTI_ASG_DETAILS',l_new_starter.l_aei_id);
5545 IF l_ovn IS NOT NULL THEN
5546 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false, p_object_version_number => l_ovn, p_assignment_extra_info_id => l_new_starter.l_aei_id, p_aei_information_category => 'GB_RTI_ASG_DETAILS',
5547 p_aei_information8 => 'N');
5548 END IF;
5549 END IF;
5550 --PENSIONER Flag
5551 IF l_new_starter.pensioner_flag = 'Y' THEN
5552 l_ovn := get_version(l_asg_id,'GB_RTI_ASG_DETAILS',l_new_starter.l_aei_id);
5553 IF l_ovn IS NOT NULL THEN
5554 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false, p_object_version_number => l_ovn, p_assignment_extra_info_id => l_new_starter.l_aei_id, p_aei_information_category => 'GB_RTI_ASG_DETAILS',
5555 p_aei_information9 => 'N');
5556 END IF;
5557 END IF;
5558 --STARTER Flag
5559 IF l_new_starter.expat_flag = 'Y' THEN
5560 l_ovn := get_version(l_asg_id,'GB_RTI_ASG_DETAILS',l_new_starter.l_aei_id);
5561 IF l_ovn IS NOT NULL THEN
5562 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false, p_object_version_number => l_ovn, p_assignment_extra_info_id => l_new_starter.l_aei_id, p_aei_information_category => 'GB_RTI_ASG_DETAILS',
5563 p_aei_information19 => 'N');
5564 END IF;
5565 END IF;
5566
5567 end if; --l_fps_check
5568
5569 end if;
5570
5571 end if; --l_retry_req_flag
5572
5573 --RETRY Logic ends here
5574
5575 if l_paye_flag = 'Y' then
5576 open csr_latest_fps_payeagg(l_person_id);
5577 fetch csr_latest_fps_payeagg into l_last_fps_effdate,l_last_fps_pactid,l_report_type;
5578 close csr_latest_fps_payeagg;
5579 else
5580 open csr_latest_fps(l_asg_id);
5581 fetch csr_latest_fps into l_last_fps_effdate,l_last_fps_pactid,l_report_type;
5582 close csr_latest_fps;
5583 end if;
5584
5585 hr_utility.set_location('l_last_fps_pactid ' || l_last_fps_pactid ,999);
5586 hr_utility.set_location('l_last_fps_effdate ' || l_last_fps_effdate ,999);
5587 hr_utility.set_location('l_report_type ' || l_report_type ,999);
5588
5589 if l_last_fps_effdate is null then
5590 l_last_fps_effdate := g_start_year;
5591 end if;
5592
5593 hr_utility.set_location('l_last_fps_effdate : ' || l_last_fps_effdate ,999);
5594
5595 OPEN csr_latest_asg_action(l_asg_id);
5596 FETCH csr_latest_asg_action
5597 INTO l_last_asg_action_id,
5598 l_last_effective_date;
5599 close csr_latest_asg_action;
5600
5601 hr_utility.trace('l_asg_id : '||l_asg_id);
5602 hr_utility.set_location('l_last_asg_action_id '||l_last_asg_action_id,10);
5603 hr_utility.set_location('l_last_effective_date '||l_last_effective_date,10);
5604
5605 hr_utility.set_location('Fetching person details ',10);
5606 l_archive_person := fetch_person_rec(p_assactid, l_last_effective_date,l_archive_tab(0));
5607
5608 hr_utility.set_location('Fetching address details ',20);
5609 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
5610 l_archive_tab(0).assignment_id,
5611 l_last_effective_date,
5612 l_archive_tab(1));
5613
5614 hr_utility.set_location('Fetching Assignment details ',30);
5615 l_archive_asg_det1 := fetch_asg_det1(
5616 l_last_effective_date,
5617 l_last_asg_action_id,
5618 p_effective_date,
5619 l_archive_tab(0),
5620 l_archive_tab(2));
5621
5622 if NVL(l_archive_tab(0).act_info10,'N') = 'Y' then
5623
5624 OPEN csr_get_max_asg_actid_person(l_archive_tab(0).person_id);
5625 FETCH csr_get_max_asg_actid_person
5626 INTO l_last_asg_action_id,
5627 l_last_effective_date;
5628 close csr_get_max_asg_actid_person;
5629
5630 end if;
5631
5632 hr_utility.trace('l_asg_id : '||l_asg_id);
5633 hr_utility.set_location('l_last_asg_action_id '||l_last_asg_action_id,10);
5634 hr_utility.set_location('l_last_effective_date '||l_last_effective_date,10);
5635
5636 hr_utility.set_location('Fetching Assignment details 2',30);
5637 l_archive_asg_det2 := fetch_asg_det2(l_last_asg_action_id,l_asg_id,l_last_effective_date,l_archive_tab(2));
5638
5639 hr_utility.set_location('Fetching Ni details 2',30);
5640 l_archive_asg_det2 := fetch_ni_det(l_last_asg_action_id,l_asg_id,l_last_effective_date,l_archive_tab_ni_det);
5641
5642
5643
5644 if l_last_fps_pactid is not null then
5645
5646 hr_utility.set_location('FPS/EYU Run Exist.',999);
5647
5648 calculate_diff (l_last_fps_pactid , l_report_type,l_asg_id, l_archive_tab ,l_flag);
5649
5650 if l_report_type = 'RTI_FPS_REP' and NVL(l_archive_tab(0).act_info10,'N') = 'Y' then
5651 calculate_diff_ni_payeagg (l_last_fps_pactid , l_report_type,l_asg_id,l_archive_tab(0).person_id,l_archive_tab_ni_det ,l_flag_ni);
5652 else
5653 calculate_diff_ni (l_last_fps_pactid , l_report_type,l_asg_id,l_archive_tab_ni_det ,l_flag_ni);
5654 end if;
5655
5656 else
5657 supressing_zeros_new_starter(l_archive_tab,l_flag_strt);
5658 end if;
5659
5660 fetch_nic_refund(l_asg_id,l_archive_tab_ni_det);
5661
5662 hr_utility.set_location('l_flag ' || l_flag ,999);
5663 hr_utility.set_location('l_flag_ni ' || l_flag_ni ,999);
5664
5665 -- no payment for the assignment exist
5666 if l_last_fps_pactid is null and l_flag_strt = 'N' then
5667 populate_run_msg(p_assactid, 'No payment has been made for assignment ' || l_asg_no || '.');
5668 fnd_file.put_line (fnd_file.LOG,'No payment has been made for assignment ' || l_asg_no || '.');
5669 raise error_found;
5670 ELSIF l_last_fps_pactid is not null and l_flag = 'N' and l_flag_ni = 'N' then
5671 populate_run_msg(p_assactid, 'No payment has been made for assignment ' || l_asg_no || '.');
5672 fnd_file.put_line (fnd_file.LOG,'No payment has been made for assignment ' || l_asg_no || '.');
5673 raise error_found;
5674 end if;
5675
5676 if l_last_fps_pactid is null or (l_flag = 'Y' or l_flag_ni = 'Y') then
5677
5678 hr_utility.set_location('Calling validations ',999);
5679 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
5680
5681 person_address_validations(p_assactid, l_last_effective_date, l_archive_tab,l_asg_no,l_per_addr_val_flag);
5682 hr_utility.set_location('l_per_addr_val_flag : ' || l_per_addr_val_flag ,999);
5683 assignment_validations(p_assactid, l_last_effective_date, l_archive_tab,l_asg_no,l_asg_val_flag);
5684 hr_utility.set_location('l_asg_val_flag : ' || l_asg_val_flag ,999);
5685
5686 IF l_archive_tab_ni_det.count > 0 THEN
5687 FOR i IN l_archive_tab_ni_det.first .. l_archive_tab_ni_det.last
5688 LOOP
5689 hr_utility.set_location('i : ' || i ,999);
5690 ni_validations(p_assactid, l_last_effective_date, l_archive_tab_ni_det,i,l_asg_no,l_ni_val_flag);
5691 hr_utility.set_location('l_ni_val_flag : ' || l_ni_val_flag ,999);
5692 if l_ni_val_flag = 'Y' then
5693 l_ni_val_flag1 := 'Y';
5694 end if;
5695 END LOOP;
5696 END IF;
5697
5698 if l_per_addr_val_flag = 'N' and l_asg_val_flag ='N' and l_ni_val_flag1 = 'N' then
5699 hr_utility.set_location('Archiving - assignment action id ' || p_assactid ,999);
5700 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
5701 insert_archive_row(p_assactid, p_effective_date,l_archive_tab_ni_det);
5702 else
5703 hr_utility.set_location('Validation failed - assignment action id ' || p_assactid ,999);
5704 raise error_found;
5705 end if;
5706
5707 end if;
5708
5709
5710 EXCEPTION
5711 WHEN error_found THEN
5712 reset_flag('GB_RTI_ASG_DETAILS',g_reset_flag_type, p_assactid);
5713 fnd_file.put_line(fnd_file.LOG,'Errors found while archiving data.');
5714 raise_application_error(-20001,'Errors found while archiving data.');
5715 WHEN OTHERS THEN
5716 fnd_file.put_line(fnd_file.LOG,'An error encountered was - '||SQLERRM);
5717 raise_application_error(-20001,'An error encountered was - '||SQLERRM);
5718 END archive_code;
5719 --
5720 --
5721 PROCEDURE deinitialization_code
5722 (
5723 pactid IN NUMBER
5724 )
5725 IS
5726 l_proc CONSTANT VARCHAR2(50) := g_package || 'deinitialization_code';
5727 l_counter NUMBER;
5728 l_flag VARCHAR2(1);
5729 l_exp EXCEPTION;
5730 errbuf varchar2(100);
5731 retcode number;
5732 l_econ varchar2(100);
5733 l_person_count number :=0;
5734 l_error_flag VARCHAR2(1);
5735 CURSOR csr_is_etext_report
5736 IS
5737 SELECT report_type
5738 FROM pay_payroll_actions pact
5739 WHERE pact.payroll_action_id = pactid;
5740 l_is_etext_report VARCHAR2(50);
5741 l_request_id fnd_concurrent_requests.request_id%TYPE;
5742 xml_layout BOOLEAN;
5743
5744 -- Cursor to fetch Employer details
5745 CURSOR csr_payroll_details(pactid NUMBER)
5746 IS
5747 SELECT NVL(UPPER(hoi.org_information11),' ') sender_id,
5748 DECODE(SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TEST=') + 5,1) ,'N',' ','Y','1') test_indicator,
5749 fnd_number.number_to_canonical(pact.request_id) request_id,
5750 NVL(upper(SUBSTR(ltrim(hoi.org_information3),1,35)),' ') employer_name,
5751 NVL(upper(SUBSTR(ltrim(SUBSTR(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
5752 lpad(SUBSTR(hoi.ORG_INFORMATION1,0,instr(hoi.ORG_INFORMATION1,'/')-1),3,0) tax_office_no,
5753 DECODE(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
5754 (lpad(SUBSTR(hoi.ORG_INFORMATION6,0,instr(hoi.ORG_INFORMATION6,'P')-1),3,0)
5755 || 'P'
5756 || SUBSTR(hoi.ORG_INFORMATION6,instr(hoi.ORG_INFORMATION6,'P') +1,1)
5757 || lpad(SUBSTR(hoi.ORG_INFORMATION6,instr(hoi.ORG_INFORMATION6,'P')+2,LENGTH(hoi.ORG_INFORMATION6)-3-(instr(hoi.ORG_INFORMATION6,'P')-1)),7,0)
5758 || SUBSTR(hoi.ORG_INFORMATION6,LENGTH(hoi.ORG_INFORMATION6),1) ) AS acc_ref_no,
5759 hoi.org_information7 econ_number,
5760 pact.business_group_id bus_grp_id,
5761 pact.action_parameter_group_id act_param_grp_id,
5762 org_information19 service_company
5763 FROM pay_payroll_actions pact,
5764 hr_organization_information hoi
5765 WHERE pact.payroll_action_id =pactid
5766 AND pact.business_group_id = hoi.organization_id
5767 AND hoi.org_information_context = 'Tax Details References'
5768 AND NVL(hoi.org_information10,'UK') = 'UK'
5769 AND SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8, instr(pact.legislative_parameters
5770 ||' ',' ', instr(pact.legislative_parameters,'TAX_REF=') +8) - instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
5771
5772
5773 l_payroll_rec csr_payroll_details%rowtype;
5774 l_action_info_id NUMBER(15);
5775 l_ovn NUMBER;
5776
5777
5778 ---------------------
5779 ---------------------
5780
5781 PROCEDURE write_header(
5782 report_type VARCHAR2)
5783 IS
5784 l_token VARCHAR2(255);
5785 l_addr1 VARCHAR2(255);
5786 l_addr2 VARCHAR2(255);
5787 l_addr3 VARCHAR2(255);
5788 l_addr4 VARCHAR2(255);
5789 l_form VARCHAR2(40);
5790 l_tax_ref VARCHAR2(20);
5791 l_urgent VARCHAR2(2);
5792 l_test VARCHAR2(2);
5793 l_temp NUMBER;
5794 l_form_name VARCHAR2(100);
5795 l_payroll_name VARCHAR2(100);
5796 l_prepay_eff_date date;
5797
5798 CURSOR csr_leg_param
5799 IS
5800 SELECT legislative_parameters para,
5801 fnd_number.number_to_canonical(request_id) control_id,
5802 report_type,
5803 business_group_id
5804 FROM pay_payroll_actions pact
5805 WHERE payroll_action_id = pactid;
5806
5807 CURSOR csr_header_det(p_bus_id NUMBER, p_tax_ref VARCHAR2)
5808 IS
5809 SELECT NVL(hoi.org_information11,' ') sender_id,
5810 NVL(upper(hoi.org_information2),' ') hrmc_office,
5811 NVL(upper(hoi.org_information4),' ') er_addr,
5812 NVL(upper(hoi.org_information3),' ') er_name
5813 FROM hr_organization_information hoi
5814 WHERE hoi.organization_id = p_bus_id
5815 AND hoi.org_information_context = 'Tax Details References'
5816 AND NVL(hoi.org_information10,'UK') = 'UK'
5817 AND upper(hoi.org_information1) = upper(p_tax_ref);
5818
5819 CURSOR csr_payroll_details
5820 IS
5821 SELECT ppf.PAYROLL_NAME
5822 from pay_payrolls_f ppf,pay_payroll_actions ppa
5823 WHERE ppa.payroll_action_id = pactid
5824 and ppf.payroll_id = SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'PAYROLL'),1,20);
5825
5826 -- Cursor to fetch Errored Records
5827 CURSOR get_asg_action_id_error
5828 IS
5829 SELECT DISTINCT paa.assignment_action_id asg_action_id,
5830 assignment_id
5831 FROM pay_payroll_actions ppa,
5832 pay_assignment_actions paa
5833 WHERE ppa.payroll_action_id = pactid -- pact_id
5834 AND paa.payroll_action_id = ppa.payroll_action_id
5835 AND paa.action_status = 'E';
5836
5837
5838 --CURSOR csr_err_msg(asg_action_id NUMBER)
5839 CURSOR csr_prepay_err_msg(asg_action_id NUMBER)
5840 IS
5841 SELECT DISTINCT line_text
5842 FROM pay_message_lines
5843 WHERE source_id = asg_action_id --9919881 --asg_action_id
5844 AND message_level <> 'W'-- p_message_level
5845 AND payroll_id = 100;
5846
5847 l_param csr_leg_param%rowtype;
5848 l_det csr_header_det%rowtype;
5849 l_err_msg varchar2(100);
5850 BEGIN
5851 OPEN csr_leg_param;
5852 FETCH csr_leg_param INTO l_param;
5853 CLOSE csr_leg_param;
5854
5855 open csr_payroll_details;
5856 fetch csr_payroll_details into l_payroll_name;
5857 close csr_payroll_details;
5858
5859 l_token := 'TAX_REF';
5860 l_temp := instr(l_param.para,l_token);
5861 l_tax_ref := SUBSTR(l_param.para, l_temp + LENGTH(l_token) + 1, instr(l_param.para||' ',' ',l_temp)
5862 - (l_temp + LENGTH(l_token) + 1));
5863 l_token := 'TEST';
5864 l_temp := instr(l_param.para,l_token);
5865 l_test := SUBSTR(l_param.para, l_temp + LENGTH(l_token) + 1, instr(l_param.para||' ',' ',l_temp)
5866 - (l_temp + LENGTH(l_token) + 1));
5867
5868 OPEN csr_header_det(l_param.business_group_id, l_tax_ref);
5869 FETCH csr_header_det INTO l_det;
5870 CLOSE csr_header_det;
5871
5872 l_addr1 := l_det.er_addr;
5873 IF LENGTH(l_addr1) > 35 THEN
5874 l_temp := instr(l_addr1, ',', 34 - LENGTH(l_addr1));
5875 IF l_temp = 0 THEN
5876 l_temp := 35;
5877 END IF;
5878 l_addr2 := ltrim(SUBSTR(l_addr1, 1 + l_temp),' ,');
5879 l_addr1 := SUBSTR(l_addr1,1,l_temp);
5880 END IF;
5881 IF LENGTH(l_addr2) > 35 THEN
5882 l_temp := instr(l_addr2, ',', 34 - LENGTH(l_addr2));
5883 IF l_temp = 0 THEN
5884 l_temp := 35;
5885 END IF;
5886 l_addr3 := ltrim(SUBSTR(l_addr2, 1 + l_temp),' ,');
5887 l_addr2 := SUBSTR(l_addr2,1,l_temp);
5888 END IF;
5889 IF LENGTH(l_addr3) > 35 THEN
5890 l_temp := instr(l_addr3, ',', 34 - LENGTH(l_addr3));
5891 IF l_temp = 0 THEN
5892 l_temp := 35;
5893 END IF;
5894 l_addr3 := ltrim(SUBSTR(l_addr3, 1 + l_temp),' ,');
5895 l_addr4 := SUBSTR(l_addr3,1,l_temp);
5896 END IF;
5897
5898 l_form := 'RTI_EYU_REP_13';
5899 l_form_name := 'RTI Earlier Year Update Process (EYU) 2012/13';
5900
5901 fnd_file.put_line(fnd_file.output,' ');
5902 fnd_file.put_line(fnd_file.output,'EDI Transmission Report:');
5903 fnd_file.put_line(fnd_file.output,' ');
5904 fnd_file.put_line(fnd_file.output,rpad('Form Type : ',32) || l_form_name);
5905 fnd_file.put_line(fnd_file.output,rpad('Sender : ',32) || l_det.sender_id);
5906 fnd_file.put_line(fnd_file.output,rpad('Date : ',32) || TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS'));
5907 fnd_file.put_line(fnd_file.output,rpad('Interchange Control Reference : ',32) || l_param.control_id);
5908 fnd_file.put_line(fnd_file.output,rpad('Test Transmission : ',32) || l_test);
5909 fnd_file.put_line(fnd_file.output,rpad('-',80,'-'));
5910 fnd_file.put_line(fnd_file.output,rpad('Employers PAYE Reference : ',32) || l_tax_ref);
5911 fnd_file.put_line(fnd_file.output,rpad('HRMC Office : ',32) || l_det.hrmc_office);
5912 fnd_file.put_line(fnd_file.output,rpad('Employer Name : ',32) || l_det.er_name);
5913 fnd_file.put_line(fnd_file.output,rpad('Employer Address : ',32) || l_addr1);
5914
5915 IF LENGTH(l_addr2) > 0 THEN
5916 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr2);
5917 END IF;
5918 IF LENGTH(l_addr3) > 0 THEN
5919 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr3);
5920 END IF;
5921 IF LENGTH(l_addr4) > 0 THEN
5922 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr4);
5923 END IF;
5924
5925 fnd_file.put_line(fnd_file.output,rpad('Payroll : ',32) || l_payroll_name);
5926
5927 END write_header;
5928 ---
5929 PROCEDURE write_sub_header(
5930 p_type VARCHAR2,
5931 report_type VARCHAR2)
5932 IS
5933 BEGIN
5934 fnd_file.put_line(fnd_file.output,NULL);
5935 IF p_type = 'E' THEN
5936 fnd_file.put_line(fnd_file.output,'The following employments have completed with error');
5937 ELSE
5938 fnd_file.put_line(fnd_file.output,'The following employments have completed successfully');
5939 END IF;
5940
5941 IF p_type <> 'E' THEN --Completed records
5942 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51));
5943 ELSE -- errored records
5944 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51)
5945 || rpad('Error Messages',30));
5946 END IF;
5947
5948 IF p_type <> 'E' THEN -- Completed records
5949 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-'));
5950 ELSE -- errored records
5951 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-') || ' '
5952 || rpad('-',30,'-'));
5953 END IF;
5954 END write_sub_header;
5955 ---
5956 PROCEDURE write_body(
5957 p_type VARCHAR2,
5958 pactid IN NUMBER,
5959 report_type VARCHAR2)
5960 IS
5961 l_count NUMBER;
5962 i NUMBER;
5963 l_temp VARCHAR2(255);
5964 l_emp_count NUMBER;
5965 l_number VARCHAR2(30);
5966 l_start_date DATE;
5967 l_end_date DATE;
5968
5969 l_effective_date date;
5970
5971 -- Cursor to fetch Completed records
5972 CURSOR get_asg_action_id
5973 IS
5974 SELECT DISTINCT paa.assignment_action_id asg_action_id,
5975 assignment_id
5976 FROM pay_payroll_actions ppa,
5977 pay_assignment_actions paa
5978 WHERE ppa.payroll_action_id = pactid -- pact_id
5979 AND paa.payroll_action_id = ppa.payroll_action_id
5980 AND paa.action_status = 'C';
5981
5982 -- Cursor to fetch Errored Records
5983 CURSOR get_asg_action_id_error
5984 IS
5985 SELECT DISTINCT paa.assignment_action_id asg_action_id,
5986 assignment_id
5987 FROM pay_payroll_actions ppa,
5988 pay_assignment_actions paa
5989 WHERE ppa.payroll_action_id = pactid -- pact_id
5990 AND paa.payroll_action_id = ppa.payroll_action_id
5991 AND paa.action_status = 'E';
5992
5993 CURSOR get_person_details(c_assignment_id NUMBER)
5994 IS
5995 SELECT DISTINCT pap.first_name f_name ,
5996 pap.middle_names m_name,
5997 pap.last_name l_name,
5998 pap.title title,
5999 paa.assignment_number emp_no,
6000 NVL(pap.national_identifier,' ')ni_no,
6001 NVL(pap.employee_number,' ') employee_number,
6002 TO_CHAR(paa.EFFECTIVE_START_DATE,'DD-MON-RRRR') start_date,
6003 paa.EFFECTIVE_END_DATE end_date, --to_char(paa.EFFECTIVE_END_DATE,'DD-MON-RRRR') end_date
6004 pap.person_id
6005 FROM per_all_assignments_f paa,
6006 per_assignment_status_types past,
6007 per_all_people_f pap
6008 WHERE paa.person_id = pap.person_id
6009 AND paa.assignment_id = c_assignment_id
6010 AND past.ASSIGNMENT_STATUS_TYPE_ID = paa.ASSIGNMENT_STATUS_TYPE_ID
6011 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN') -- Added for Bug#13626488
6012 and pap.effective_start_date =
6013 ( select max(pap2.effective_start_date) from
6014 per_all_people_f pap2
6015 where pap2.person_id = pap.person_id
6016 and pap2.effective_start_date <= g_end_year
6017 )
6018 and paa.effective_start_date =
6019 ( select max(asg2.effective_start_date)
6020 from per_all_assignments_f asg2
6021 where asg2.assignment_id = paa.assignment_id
6022 and asg2.assignment_type = 'E'
6023 and ASSIGNMENT_STATUS_TYPE_ID = paa.ASSIGNMENT_STATUS_TYPE_ID
6024 and asg2.effective_start_date <= g_end_year
6025 )
6026
6027 ORDER BY end_date DESC;
6028
6029 -- Cursor to fetch error Messages from pay_message lines table
6030 --CURSOR csr_err_msg(asg_action_id NUMBER)
6031 CURSOR csr_err_msg(asg_action_id NUMBER)
6032 IS
6033 SELECT DISTINCT line_text
6034 FROM pay_message_lines
6035 WHERE source_id = asg_action_id
6036 --AND message_level <> 'W'-- p_message_level
6037 AND payroll_id = 100;
6038
6039 err_msg varchar2(255);--csr_err_msg%rowtype;
6040 et_asg_rec get_person_details%rowtype;
6041 asg_rec get_person_details%rowtype;
6042 l_et_temp VARCHAR2(255);
6043 BEGIN
6044 l_count := 0;
6045
6046 fnd_file.put_line(fnd_file.LOG, 'l_effective_date: ' || l_effective_date);
6047 --Completed Records
6048 IF p_type = 'ET' THEN
6049 FOR action_id IN get_asg_action_id
6050 LOOP
6051 OPEN get_person_details(action_id.assignment_id);
6052 FETCH get_person_details INTO et_asg_rec;
6053 CLOSE get_person_details;
6054 l_et_temp := et_asg_rec.l_name || ', '|| et_asg_rec.title || ' ' || et_asg_rec.f_name || ' ' || et_asg_rec.m_name;
6055 IF et_asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
6056 fnd_file.put_line(fnd_file.output,rpad(et_asg_rec.emp_no, 18) || ' ' || rpad(et_asg_rec.ni_no ,10) || ' '
6057 || rpad(l_et_temp,50) );
6058 ELSE
6059 fnd_file.put_line(fnd_file.output,rpad(et_asg_rec.emp_no, 18) || ' ' || rpad(et_asg_rec.ni_no ,10) || ' '
6060 || rpad(l_et_temp,50));
6061 END IF;
6062 l_count := l_count + 1;
6063 END LOOP;
6064 END IF;
6065
6066 -- Errored Records
6067 IF p_type = 'E'THEN
6068 FOR action_id IN get_asg_action_id_error
6069 LOOP
6070 err_msg := ' ';
6071 -- Fetching details
6072 OPEN get_person_details(action_id.assignment_id);
6073 FETCH get_person_details INTO asg_rec;
6074 CLOSE get_person_details;
6075
6076 OPEN csr_err_msg(action_id.asg_action_id);
6077 FETCH csr_err_msg INTO err_msg;
6078 if csr_err_msg%notfound then
6079 SELECT LINE_TEXT into err_msg FROM pay_message_lines WHERE source_id = action_id.asg_action_id and rownum <=1;
6080 end if;
6081
6082 l_error_flag := 'Y';
6083
6084 l_temp := asg_rec.l_name || ', '|| asg_rec.title || ' ' || asg_rec.f_name || ' ' || asg_rec.m_name;
6085 IF asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
6086 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
6087 || ' ' || rpad(err_msg,120) ); -- error message
6088 ELSE
6089 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
6090 || ' ' || rpad(err_msg,120) ); -- error message
6091 END IF;
6092
6093 -- To print remaining error messgaes if any
6094 LOOP
6095 FETCH csr_err_msg INTO err_msg;
6096 EXIT
6097 WHEN csr_err_msg%notfound;
6098 fnd_file.put_line(fnd_file.output,rpad(' ',81,' ')||rpad(err_msg,120));
6099 END LOOP;
6100
6101 CLOSE csr_err_msg;
6102 l_count := l_count + 1;
6103 END LOOP;
6104 END IF;
6105 fnd_file.put_line(fnd_file.output,NULL);
6106
6107 IF p_type = 'E' THEN
6108 fnd_file.put_line(fnd_file.output,'Total Number of employments completed with error : ' || l_count);
6109 ELSE
6110 fnd_file.put_line(fnd_file.output,'Total Number of employments completed successfully :' || l_count);
6111 END IF;
6112 l_counter := l_counter + l_count;
6113 END write_body;
6114 ---
6115 PROCEDURE write_footer
6116 IS
6117
6118 CURSOR get_person_count
6119 IS
6120 SELECT COUNT(DISTINCT(paaf.person_id))
6121 FROM pay_payroll_actions ppa,
6122 pay_assignment_actions paa,
6123 per_all_assignments_f paaf
6124 WHERE ppa.payroll_action_id = pactid -- pact_id
6125 AND paa.payroll_action_id = ppa.payroll_action_id
6126 AND paa.action_status = 'C'
6127 AND paaf.assignment_id = paa.assignment_id;
6128
6129 BEGIN
6130 OPEN get_person_count;
6131 FETCH get_person_count INTO l_person_count;
6132 CLOSE get_person_count;
6133
6134 fnd_file.put_line(fnd_file.output,NULL);
6135 fnd_file.put_line(fnd_file.output,'Total Number of employments : ' || l_counter);
6136 fnd_file.put_line(fnd_file.output,NULL);
6137 fnd_file.put_line(fnd_file.output,'Total Number of employees successfully processed : ' || l_person_count);
6138 END write_footer;
6139 ---------------------
6140 BEGIN
6141 hr_utility.trace('Entering deinit: '||l_proc);
6142
6143 -- To avoid re-archiving while Retry
6144 delete from pay_action_information pai
6145 where pai.action_context_id = pactid
6146 and pai.action_context_type = 'PA'
6147 and pai.action_information_category in ('RTI PAYROLL INFO');
6148
6149 delete from pay_action_information pai
6150 where pai.action_context_id = pactid
6151 and pai.action_context_type = 'PA'
6152 and pai.action_information_category in ('GB_RTI_FPS_EXTRA_DET');
6153
6154 OPEN csr_payroll_details(pactid);
6155 FETCH csr_payroll_details INTO l_payroll_rec;
6156 CLOSE csr_payroll_details;
6157
6158 l_econ := l_payroll_rec.econ_number;
6159
6160 --Footer Validations
6161 footer_validations(l_payroll_rec.econ_number,l_flag);
6162
6163 pay_balance_pkg.set_context('PAYROLL_ACTION_ID',pactid);
6164 hr_utility.set_location('l_payroll_rec.bus_grp_id = ' || l_payroll_rec.bus_grp_id,10);
6165 hr_utility.set_location('l_payroll_rec.act_param_grp_id = ' || l_payroll_rec.act_param_grp_id,20);
6166 hr_utility.set_location('l_sender_id = '||l_payroll_rec.sender_id,30);
6167 hr_utility.set_location('l_test_indicator = '||l_payroll_rec.test_indicator,40);
6168 hr_utility.set_location('l_request_id = '||l_payroll_rec.request_id,50);
6169 hr_utility.set_location('g_start_year = '||g_start_year,60);
6170
6171 hr_utility.set_location('Archiving RTI PAYROLL INFO',60);
6172
6173 pay_action_information_api.create_action_information ( p_action_information_id => l_action_info_id ,
6174 p_action_context_id => pactid ,
6175 p_action_context_type => 'PA' ,
6176 p_object_version_number => l_ovn ,
6177 p_source_id => NULL ,
6178 p_source_text => NULL ,
6179 p_action_information_category => 'RTI PAYROLL INFO' ,
6180 p_action_information1 => pactid ,
6181 p_action_information3 => NULL ,
6182 p_action_information4 => l_payroll_rec.employer_name ,
6183 p_action_information6 => l_payroll_rec.tax_office_no ,
6184 p_action_information7 => l_payroll_rec.tax_ref_no ,
6185 p_action_information8 => l_payroll_rec.payroll_ver ,
6186 p_action_information11 => l_payroll_rec.acc_ref_no ,
6187 p_action_information12 => l_payroll_rec.sender_id ,
6188 p_action_information13 => l_payroll_rec.test_indicator ,
6189 p_action_information14 => TO_CHAR(l_payroll_rec.request_id),
6190 p_action_information15 => to_char(g_end_year,'RRRR'));
6191 ---
6192 pay_action_information_api.create_action_information ( p_action_information_id => l_action_info_id ,
6193 p_action_context_id => pactid ,
6194 p_action_context_type => 'PA' ,
6195 p_object_version_number => l_ovn ,
6196 p_source_id => NULL ,
6197 p_source_text => NULL ,
6198 p_action_information_category => 'GB_RTI_FPS_EXTRA_DET' ,
6199 p_action_information3 => l_econ );
6200 ---
6201 OPEN csr_is_etext_report;
6202 FETCH csr_is_etext_report INTO l_is_etext_report;
6203 CLOSE csr_is_etext_report;
6204
6205 l_counter := 0;
6206 write_header(l_is_etext_report);
6207 write_sub_header('C',l_is_etext_report);
6208 write_body('ET',pactid,l_is_etext_report);
6209 write_sub_header('E',l_is_etext_report);
6210 write_body('E',pactid,l_is_etext_report);
6211 write_footer;
6212
6213
6214 --Footer Validations
6215 if l_flag = 'Y' then
6216 raise l_exp;
6217 end if;
6218
6219 -- For Spawning the output Concurrent Program
6220 hr_utility.set_location('Spawning RTI EYU output process',1);
6221 xml_layout := FND_REQUEST.ADD_LAYOUT('PAY','PYGBRTIEYUOP13','en','US', 'ETEXT');
6222
6223
6224 IF xml_layout = true and g_validation_check = 'Y' and l_person_count <> 0 THEN
6225 l_request_id := fnd_request.submit_request (application => 'PAY'
6226 ,program => 'PYGBRTIEYUOP13'
6227 ,argument1 => pactid --Process Name
6228 );
6229 COMMIT;
6230 --check for process submit error
6231 IF l_request_id = 0 THEN
6232 hr_utility.set_location('Error spawning output process',1);
6233 END IF;
6234
6235 END IF;
6236 hr_utility.set_location('Leaving: '||l_proc,999);
6237
6238 EXCEPTION
6239 When l_exp then
6240 fnd_file.put_line(fnd_file.LOG,'Errors found while archiving data.');
6241 raise_application_error(-20001,'Errors found while archiving data.');
6242 END deinitialization_code;
6243 --
6244 END PAY_GB_RTI_EYU;