[Home] [Help]
PACKAGE BODY: APPS.PAY_GB_RTI_FPS_ARCHIVE
Source
1 PACKAGE BODY PAY_GB_RTI_FPS_ARCHIVE AS
2 /* $Header: pygbrtifps13.pkb 120.0.12020000.32 2013/03/29 13:38:55 ssarap noship $ */
3 /*===========================================================================+
4 | Copyright (c) 1993 Oracle Corporation |
5 | Redwood Shores, California, USA |
6 | All rights reserved. |
7 +============================================================================
8 Name:
9 PAY_GB_RTI_FPS_ARCHIVE
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 26-Dec-2012 rajganga 115.0 13918120 Created.
15 03-JAN-2013 ssarap 115.2 Hours worked change for PAYE Aggregation.
16 10-Jan-2013 rajganga 115.10 Fixed Ni aggr and other issues.
17 10-Jan-2013 rajganga 115.11 Corrected continue statement.
18 25-Jan-2013 rajganga 115.12 csr_director.
19 07-FEB-2013 ssarap 115.111 16276411 Fix for Mckesson reported issues.
20 08-FEB-2013 ssarap 115.11 16276411 Assignment number data type is modified.
21 09-FEB-2013 ssarap 115.12 16276411 Validation logic change.
22 12-FEB-2013 sampmand 115.13 16276411 Added logic to delete from pay_gb_fps_details in case of retry.
23 12-FEB-2013 ssarap 115.117 16310246 Changed the Action informatin column. For irre payemnt it is 3 and for one-off pay it is 4.
24 14-FEB-2013 sampmand 115.18 16276411 Modified Tax Code Fetch logic to fix Mckesson issue.
25 Included 'TERM_ASSIGN' in get_eff_start_date cursor
26 to set first fps starter date correctly.
27 21-FEB-2013 sampmand 115.19 16328672 Modified starter flag checks in fetch_fps_asg_det1.
28 21-FEB-2013 ssarap 115.120 16345058 Initialiazed variable l_flag1 to 'Y' each time at
29 the start of the loop in action creation code.
30 04-Mar-2013 sampmand 115.121 16386622 Modified Retry Cursor.
31 04-Mar-2013 sampmand 115.122 16386622 Modified NI reporting cursor.
32 13-Mar-2013 ssarap 115.123 16414987 Hours worked fix for multiple assignments.
33 15-Mar-2013 rajganga 115.125 16386622 Modified for Retry.
34 11-Mar-2013 krreddy 115.23 16396194 Modified the below two procedures for correcting the balance values if they contain
35 Process Separate elements in the run:
36 fetch_fps_asg_det2 and fetch_fps_agg_asg_det2.
37 20-Mar-2013 sampmand 115.24 16505555 Modified procedures to archive Emp Pensions Contrib YTD values.
38 20-Mar-2013 rajganga 115.25 16501443 Added sysdate+30 condition to Termination date.
39 20-Mar-2013 sampmand 115.26 16505555 modified decode logic of tax_basis in procedure fetch_tax_code_basis.
40 22-Mar-2013 krreddy 115.128 16409794 Resolved the issue of incorrect picking of actions when no payment exists.
41 25-Mar-2013 rajganga 115.28 16501443 Added sysdate+30 condition to Termination date in first fps.Added Det3 in First FPS.
42 25-Mar-2013 rajganga 115.29 16542698 Resolved the NI Only and PAYE Aggr issues with No Payment Exist scenarios.
43 26-Mar-2013 ssarap 115.128 16306737 Added a third party prepayment check for pay_pre_payments tables. Removed
44 the balances Pre Tax Deductions and NIable Deductions Free of Tax from 58B.
45 28-Mar-2013 rajganga 115.30 16567045 Added 13 version report type in fetching first fps
46 29-Mar-2013 ssarap 115.32 16555308 Changes to 58B calculation. Used the updated procedure fetch_HASH_FPS_PER.
47 Fetched the correct NI Employee values .
48 =============================================================================*/
49 --
50 --
51 g_package CONSTANT VARCHAR2(20) := 'pay_gb_rti_fps.';
52 c_contract_table_name CONSTANT pay_user_tables.user_table_name%TYPE := 'PQP_CONTRACT_TYPES';
53 g_start_year DATE;
54 g_end_year DATE;
55 g_effective_date DATE;
56 g_fps_effective_date DATE;
57 g_fps_start_year DATE;
58 g_fps_end_year DATE;
59 g_business_group_id hr_organization_units.business_group_id%TYPE;
60 g_legislation_code VARCHAR2(2) := 'GB';
61 g_permit_number VARCHAR2(12);
62 g_tax_district_reference VARCHAR2(3);
63 g_tax_reference_number VARCHAR2(10); --4011263: length 10 chars
64 g_split VARCHAR2(1);
65 g_pre_pact_id NUMBER;
66 g_first_fps VARCHAR2(1);
67 g_paye_element_id NUMBER:= -1;
68 g_paye_details_id NUMBER:= -1;
69 g_payroll_action_id NUMBER;
70 g_date_paid DATE;
71 g_asg_primary_flag VARCHAR2(1);
72 g_per_agg_flag VARCHAR2(1);
73 g_reset_flag_type VARCHAR2(30);
74 g_taxable_id pay_defined_balances.defined_balance_id%TYPE;
75 g_paye_id pay_defined_balances.defined_balance_id%TYPE;
76 g_student_loan_id pay_defined_balances.defined_balance_id%TYPE;
77 g_taxable_ptd_id pay_defined_balances.defined_balance_id%TYPE;
78 g_student_loan_ptd_id pay_defined_balances.defined_balance_id%TYPE;
79 g_paye_ptd_id pay_defined_balances.defined_balance_id%TYPE;
80 g_ssp_id pay_defined_balances.defined_balance_id%TYPE;
81 g_smp_id pay_defined_balances.defined_balance_id%TYPE;
82 g_ospp_adopt_id pay_defined_balances.defined_balance_id%TYPE;
83 g_sap_id pay_defined_balances.defined_balance_id%TYPE;
84 g_aspp_adopt_id pay_defined_balances.defined_balance_id%TYPE;
85 g_final_submission VARCHAR2(100);
86 g_free_tax_payments_made VARCHAR2(100);
87 g_expenses_benefits_others VARCHAR2(100);
88 g_employed_outside_uk VARCHAR2(100);
89 g_pay_to_third_party VARCHAR2(100);
90 g_p11d_due VARCHAR2(100);
91 g_hmrc_advance_received VARCHAR2(100);
92 g_cis_deductions VARCHAR2(100);
93 g_econ VARCHAR2(100);
94 g_service_company VARCHAR2(100);
95 g_ni_pt_eid NUMBER:=0;
96 g_ni_pt_ivid NUMBER:=0;
97 g_fps_bal_det_tab t_fps_bal_det_tab;
98 g_fps_aggr_bal_det_tab t_fps_bal_det_tab;
99 g_defined_balance_lst pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of normal balances
100 g_aggr_defined_balance_lst pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of aggregation balances
101 g_aggr_defined_balance_lst_ni pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of ni aggregation balances
102 --
103 g_tax_ref VARCHAR2(20);
104 --
105 g_paye_eid NUMBER :=0 ;
106 g_ni_eid NUMBER :=0;
107 g_tax_ivid NUMBER :=0;
108 g_taxbasis_ivid NUMBER :=0;
109 g_pt_ivid NUMBER :=0;
110 --
111 --
112 g_ssp_total NUMBER;
113 g_smp_total NUMBER;
114 g_assp_total NUMBER;
115 g_sap_total NUMBER;
116 g_spp_total NUMBER;
117
118 g_payroll_id NUMBER;
119 g_first_fps_run_date date;
120
121 first_fps_indicator_error EXCEPTION;
122 first_fps_ran_already_error EXCEPTION;
123 --
124 g_adv_period_id NUMBER;
125 g_validation_check VARCHAR2(1) := 'Y';
126 g_prepayment_date date;
127
128 -- Function to fetch address details (CONTEXT - ADDRESS DETAILS)
129 FUNCTION fetch_address_rec(
130 p_person_id IN NUMBER,
131 p_assignment_id IN NUMBER,
132 p_effective_date IN DATE,
133 p_addr_rec OUT nocopy act_info_rec)
134 RETURN BOOLEAN
135 IS
136 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_address_rec';
137 l_arch BOOLEAN;
138 --address details
139 l_address_line1 per_addresses.address_line1%TYPE;
140 l_address_line2 per_addresses.address_line2%TYPE;
141 l_address_line3 per_addresses.address_line3%TYPE;
142 l_address_line4 per_addresses.address_line3%TYPE;
143
144 CURSOR csr_address
145 IS
146 SELECT upper(SUBSTR(trim(addr.address_line1),1,35)) addr1,
147 upper(SUBSTR(trim(addr.address_line2),1,35)) addr2,
148 upper(SUBSTR(trim(addr.address_line3),1,35)) addr3,
149 SUBSTR(addr.postal_code,1,10) post_code,
150 upper(SUBSTR(trim(addr.town_or_city),1,35)) addr4,
151 upper(SUBSTR(trim(addr.country),1,35)) country
152 FROM per_addresses addr
153 WHERE addr.person_id = p_person_id
154 AND ( addr.primary_flag = 'Y'
155 OR addr.primary_flag IS NULL)
156 AND p_effective_date
157 BETWEEN NVL(addr.date_from,fnd_date.canonical_to_date('0001/01/01 00:00:00'))
158 AND NVL(addr.date_to, fnd_date.canonical_to_date('4712/12/31 00:00:00'));
159
160 l_addr_rec csr_address%rowtype;
161
162 BEGIN
163 hr_utility.set_location('Entering : '||l_proc,1);
164 l_arch := true;
165
166 OPEN csr_address;
167 FETCH csr_address INTO l_addr_rec;
168 CLOSE csr_address;
169
170 l_address_line1 := l_addr_rec.addr1;
171 l_address_line2 := l_addr_rec.addr2;
172 l_address_line3 := l_addr_rec.addr3;
173 l_address_line4 := l_addr_rec.addr4;
174 -- Swapping from Address line4 to line2
175
176 IF l_address_line3 = ' ' THEN
177 l_address_line3 := l_address_line4;
178 l_address_line4 := ' ';
179 END IF;
180
181 IF l_address_line2 = ' ' THEN
182 l_address_line2 := l_address_line3;
183 l_address_line3 := l_address_line4;
184 l_address_line4 := ' ';
185 END IF;
186
187 IF LENGTH(TRIM(l_address_line4)) > 0 THEN
188 l_address_line4 := l_address_line4;
189 ELSE
190 l_address_line4 := ' ';
191 END IF;
192
193 IF LENGTH(TRIM(l_address_line3)) > 0 THEN
194 l_address_line3 := l_address_line3;
195 ELSE
196 l_address_line3 := l_address_line4;
197 l_address_line4 := ' ';
198 END IF;
199
200 IF LENGTH(TRIM(l_address_line2)) > 0 THEN
201 l_address_line2 := l_address_line2;
202 ELSE
203 l_address_line2 := l_address_line3;
204 l_address_line3 := l_address_line4;
205 l_address_line4 := ' ';
206 END IF;
207 -- For Foreign Country, postal code will not be reported , where as Country will be reported
208 -- For GB , postal code will be reported
209
210 IF l_addr_rec.country = 'GB' THEN
211 IF l_addr_rec.post_code <> ' ' OR l_addr_rec.post_code IS NOT NULL THEN
212 l_addr_rec.country := ' ';
213 END IF;
214 ELSE
215 l_addr_rec.post_code:= ' ';
216 END IF;
217
218 hr_utility.trace('line 1'||l_address_line1);
219 hr_utility.trace('line 2'||l_address_line2);
220 hr_utility.trace('line 3'||l_address_line3);
221 hr_utility.trace('line 4'||l_address_line4);
222
223 p_addr_rec.assignment_id := p_assignment_id;
224 p_addr_rec.action_info_category := 'ADDRESS DETAILS';
225 p_addr_rec.act_info5 := l_address_line1;
226 p_addr_rec.act_info6 := l_address_line2;
227 p_addr_rec.act_info7 := l_address_line3;
228 p_addr_rec.act_info8 := l_address_line4;
229 p_addr_rec.act_info12 := l_addr_rec.post_code;
230 p_addr_rec.act_info13 := l_addr_rec.country;
231 hr_utility.set_location('Leaving: '||l_proc,999);
232 RETURN l_arch;
233 END fetch_address_rec;
234
235 --
236 /*
237 Returns the hours worked value for the person from the source configured in Configuration
238 values page for this BG.
239 */
240 FUNCTION get_hours_worked(
241 p_assignment_id NUMBER)
242 RETURN VARCHAR2
243 IS
244 l_config_values PQP_UTILITIES.t_config_values;
245 g_bon_bal_type_id NUMBER;
246 l_source_name VARCHAR2(100);
247 l_context_name VARCHAR2(100);
248 l_column_name VARCHAR2(100);
249 l_function_name VARCHAR2(100);
250 l_sqlstr VARCHAR2(1000);
251 l_hours_worked VARCHAR2(20) := NULL;
252 l_package VARCHAR2(100);
253 l_frequency VARCHAR2(20);
254 l_working_hours VARCHAR2(20);
255 l_effective_date date;
256 l_paye_agg_flag varchar2(100);
257 l_hours_worked_asg number;
258 l_asg_eff_date date;
259 l_irregular varchar2(2):= 'N';
260 cursor csr_normal_hours is
261 select AEI_INFORMATION2 from per_assignment_extra_info
262 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
263 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
264
265 cursor csr_stnd_cond(c_asg_id number) is
266 select FREQUENCY , NORMAL_HOURS from per_all_assignments_f where assignment_id = c_asg_id and
267 l_effective_date between effective_start_date and effective_end_date;
268
269 cursor csr_asg_start_date(c_asg_id number) is
270 select max(effective_start_date) from per_all_assignments_f
271 where assignment_id = c_asg_id
272 and assignment_type = 'E'
273 and effective_start_date <= g_effective_date;
274
275 -- to get the agg flag.
276 cursor csr_agg_flag(c_asg_id number) is
277 SELECT trim(nvl(pap.per_information10,'N')) per_agg_flag
278 FROM per_all_people_f pap,
279 per_all_assignments_f asg
280 WHERE asg.assignment_id = c_asg_id
281 AND pap.person_id = asg.person_id
282 AND asg.business_group_id = g_business_group_id
283 AND l_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
284 AND l_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
285
286 cursor csr_asg is
287 select paaf.assignment_id
288 from per_all_assignments_f paaf,
289 pay_payrolls_f pay,
290 hr_soft_coding_keyflex sck
291 where paaf.person_id = (select distinct person_id from per_all_assignments_f where ASSIGNMENT_ID =p_assignment_id)
292 and pay.payroll_id = paaf.payroll_id
293 and pay.SOFT_CODING_KEYFLEX_ID = sck.SOFT_CODING_KEYFLEX_ID
294 and sck.SEGMENT1 = g_tax_ref
295 and paaf.EFFECTIVE_START_DATE =
296 ( select max(paaf1.effective_start_date)
297 from per_all_assignments_f paaf1
298 where paaf1.assignment_id = paaf.assignment_id
299 and paaf1.assignment_type = 'E'
300 and paaf1.effective_start_date <= l_effective_date
301 )
302 and l_effective_date between pay.EFFECTIVE_START_DATE and pay.EFFECTIVE_END_DATE;
303
304
305 BEGIN
306 hr_utility.trace('Entering get_hours_worked');
307 hr_utility.trace('g_effective_date in hours worked : ' || g_effective_date);
308 open csr_asg_start_date(p_assignment_id);
309 fetch csr_asg_start_date into l_effective_date;
310 close csr_asg_start_date;
311 hr_utility.trace('l_effective_date in hours worked : ' || l_effective_date);
312
313 open csr_agg_flag(p_assignment_id);
314 fetch csr_agg_flag into l_paye_agg_flag;
315 close csr_agg_flag;
316 hr_utility.trace('l_paye_agg_flag: ' || l_paye_agg_flag);
317 -- Source 1
318
319 -- First check the hours worked from normal hours in the assignment form
320 -- Assignment EIT Context='RTI Information' and segment 'Normal Hours Band'
321
322 open csr_normal_hours;
323 fetch csr_normal_hours into l_hours_worked;
324 close csr_normal_hours;
325
326 -- Source 2
327 -- Configuration values
328 if l_hours_worked is null then
329 hr_utility.trace('in config ');
330 -- Use below API to get the config values for the given context in the business group
331 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_HOURS_WORKED' ,
332 p_business_group_id => g_business_group_id ,
333 p_legislation_code => g_legislation_code ,
334 p_tab_config_values => l_config_values );
335
336 IF l_config_values.COUNT > 0 THEN -- Source is hours worked.
337 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
338 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
339 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
340 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
341 hr_utility.trace('l_source_name: ' || l_source_name);
342 hr_utility.trace('l_context_name: ' || l_context_name);
343 hr_utility.trace('l_column_name: ' || l_column_name);
344 hr_utility.trace('l_function_name: ' || l_function_name);
345
346 /**
347 Source for deriving the hours worked can be
348 - Assignment ==> Extra details
349 - Assignment ==> DFF
350 - Formula Function
351 **/
352 IF l_source_name = 'Assignment Developer DF' THEN
353 l_sqlstr := 'select ' || l_column_name ||
354 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
355 begin
356 EXECUTE immediate l_sqlstr INTO l_hours_worked USING p_assignment_id,l_context_name;
357 exception
358 WHEN OTHERS THEN
359 hr_utility.trace('Exception in get hours worked.Assignment Developer DFF.');
360 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
361 end;
362 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
363 l_sqlstr := 'select ' || l_column_name ||
364 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
365 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
366 begin
367 EXECUTE immediate l_sqlstr INTO l_hours_worked USING p_assignment_id,l_context_name;
368 exception
369 WHEN OTHERS THEN
370 hr_utility.trace('Exception in get hours worked.PER_ASSIGNMENTS.');
371 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
372 end;
373 elsif l_source_name = 'Function' THEN
374 begin
375 SELECT definition
376 INTO l_package
377 FROM ff_functions
378 WHERE name = l_function_name
379 and business_group_id = g_business_group_id;
380
381 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_hours_worked' USING OUT l_hours_worked;
382 hr_utility.trace('l_package'||l_package);
383
384 if l_paye_agg_flag = 'Y' then
385 --get all asg for PAYE agg
386 hr_utility.trace('Agg Person . Hours worked.');
387 for asg_rec in csr_asg loop
388 open csr_asg_start_date(asg_rec.assignment_id);
389 fetch csr_asg_start_date into l_asg_eff_date;
390 close csr_asg_start_date;
391 l_sqlstr :=
392 'SELECT '
393 || l_package
394 || ' (:p_assignment_id,:p_eff_date) '
395 || 'FROM DUAL';
396 EXECUTE IMMEDIATE l_sqlstr into l_hours_worked_asg USING asg_rec.assignment_id,l_asg_eff_date;
397 l_hours_worked := nvl(l_hours_worked,0) + l_hours_worked_asg;
398 end loop;
399 else
400 l_sqlstr :=
401 'SELECT '
402 || l_package
403 || ' (:p_assignment_id,:p_eff_date) '
404 || 'FROM DUAL';
405 EXECUTE IMMEDIATE l_sqlstr into l_hours_worked USING p_assignment_id,l_effective_date;
406 end if; -- end paye agg
407 if l_hours_worked = 0 then
408 l_hours_worked := 'D';
409 end if;
410 hr_utility.trace('Function value l_hours_worked '||l_hours_worked);
411 exception
412 WHEN OTHERS THEN
413 hr_utility.trace('Exception in get hours worked.Function.');
414 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
415 end;
416 END IF;
417
418 END IF;
419 END IF;--source 2 end
420
421 -- Source 3
422 --Assignment Standard Conditions
423 if l_hours_worked is null then
424 hr_utility.trace('in standard ');
425
426 if l_paye_agg_flag = 'Y' then
427 --get all asg for PAYE agg
428 hr_utility.trace('Agg Person . Hours worked.');
429 for asg_rec in csr_asg loop
430 open csr_stnd_cond(asg_rec.assignment_id);
431 fetch csr_stnd_cond into l_frequency, l_working_hours;
432 close csr_stnd_cond;
433 if l_frequency is not null and l_working_hours is not null then
434
435 if l_frequency = 'W' then
436 l_hours_worked := nvl(l_hours_worked,0) + l_working_hours;
437 elsif l_frequency = 'M' then
438 l_hours_worked := nvl(l_hours_worked,0) + round(l_working_hours *12/52,2);
439 elsif l_frequency = 'D' then
440 l_hours_worked := nvl(l_hours_worked,0) + round(l_working_hours *5,2);
441 elsif l_frequency = 'Y' then
442 l_hours_worked := nvl(l_hours_worked,0) + round(l_working_hours/52,2);
443 elsif l_frequency = 'H' then
444 l_irregular := 'Y';
445 end if;
446 end if;
447 end loop;
448 if l_irregular = 'Y' and l_hours_worked is null then
449 l_hours_worked := 'D';
450 end if;
451
452 else -- else paye agg
453 open csr_stnd_cond(p_assignment_id);
454 fetch csr_stnd_cond into l_frequency, l_working_hours;
455 close csr_stnd_cond;
456 if l_frequency is not null and l_working_hours is not null then
457
458 if l_frequency = 'W' then
459 l_hours_worked := l_working_hours;
460 elsif l_frequency = 'M' then
461 l_hours_worked := round(l_working_hours *12/52,2);
462 elsif l_frequency = 'D' then
463 l_hours_worked := round(l_working_hours *5,2);
464 elsif l_frequency = 'Y' then
465 l_hours_worked := round(l_working_hours/52,2);
466 elsif l_frequency = 'H' then
467 l_hours_worked := 'D';
468 end if;
469 end if;
470 end if; -- end for PAYE agg
471 end if; -- Soruce 3 end
472
473 hr_utility.trace(' l_hours_worked : ' || l_hours_worked);
474
475 -- Convert hours worked into Grades.
476 IF l_hours_worked IS NOT NULL AND LENGTH(TRIM(TRANSLATE (l_hours_worked, ' +-.0123456789',' '))) IS NULL THEN
477 IF to_number(l_hours_worked) <= 15.99 THEN
478 RETURN 'A';
479 elsif to_number(l_hours_worked) <= 29.99 THEN
480 RETURN 'B';
481 ELSE
482 RETURN 'C';
483 END IF;
484 ELSE
485 RETURN l_hours_worked;
486 END IF;
487 hr_utility.trace('Leaving get_hours_worked');
488 EXCEPTION
489 WHEN OTHERS THEN
490 hr_utility.trace('Exception in get hours worked end of function block.');
491 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
492 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
493 return null;
494 END get_hours_worked;
495
496 /*
497 Returns get_periods_covered value for the person from the source configured in Configuration
498 values page for this BG.
499 */
500 FUNCTION get_periods_covered(
501 p_assignment_id NUMBER)
502 RETURN VARCHAR2
503 IS
504 l_config_values PQP_UTILITIES.t_config_values;
505 g_bon_bal_type_id NUMBER;
506 l_source_name VARCHAR2(100);
507 l_context_name VARCHAR2(100);
508 l_column_name VARCHAR2(100);
509 l_function_name VARCHAR2(100);
510 l_sqlstr VARCHAR2(1000);
511 l_periods_covered VARCHAR2(20) := NULL;
512 l_package VARCHAR2(100);
513 l_frequency VARCHAR2(20);
514 l_effective_date date;
515
516 cursor csr_periods_covered_eit is
517 select AEI_INFORMATION1 from per_assignment_extra_info
518 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
519 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
520
521 cursor csr_asg_start_date is
522 select max(effective_start_date) from per_all_assignments_f
523 where assignment_id = p_assignment_id
524 and assignment_type = 'E'
525 and effective_start_date <= g_effective_date;
526
527 BEGIN
528
529 hr_utility.trace('Entering get_periods_covered');
530 hr_utility.trace('g_effective_date in get_periods_covered : ' || g_effective_date);
531 open csr_asg_start_date;
532 fetch csr_asg_start_date into l_effective_date;
533 close csr_asg_start_date;
534 hr_utility.trace('l_effective_date in get_periods_covered : ' || l_effective_date);
535
536 -- Source 1
537
538 -- First check in the assignment form
539 -- Assignment EIT Context='RTI Information'
540
541 open csr_periods_covered_eit;
542 fetch csr_periods_covered_eit into l_periods_covered;
543 close csr_periods_covered_eit;
544
545 -- Source 2
546 -- Configuration values
547 if l_periods_covered is null then
548 hr_utility.trace('in config ');
549
550 -- Use below API to get the config values for the given context in the business group
551 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_PERIODS_COVERED' ,
552 p_business_group_id => g_business_group_id ,
553 p_legislation_code => g_legislation_code ,
554 p_tab_config_values => l_config_values );
555
556 IF l_config_values.COUNT > 0 THEN
557 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
558 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
559 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
560 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
561
562 hr_utility.trace('l_source_name: ' || l_source_name);
563 hr_utility.trace('l_context_name: ' || l_context_name);
564 hr_utility.trace('l_column_name: ' || l_column_name);
565 hr_utility.trace('l_function_name: ' || l_function_name);
566
567 /**
568
569 - Assignment ==> Extra details
570 - Assignment ==> DFF
571 - Formula Function
572 **/
573 IF l_source_name = 'Assignment Developer DF' THEN
574 l_sqlstr := 'select ' || l_column_name ||
575 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
576 begin
577
578 hr_utility.trace('string '||l_sqlstr);
579 EXECUTE immediate l_sqlstr INTO l_periods_covered USING p_assignment_id,l_context_name;
580
581 exception
582 WHEN OTHERS THEN
583 hr_utility.trace('Exception in get_periods_covered.Assignment Developer DFF.');
584 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
585 return null;
586 end;
587
588 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
589
590 l_sqlstr := 'select ' || l_column_name ||
591 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
592 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
593 begin
594 EXECUTE immediate l_sqlstr INTO l_periods_covered USING p_assignment_id,l_context_name;
595
596 exception
597 WHEN OTHERS THEN
598 hr_utility.trace('Exception in get_periods_covered.PER_ASSIGNMENTS.');
599 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
600 return null;
601 end;
602
603 elsif l_source_name = 'Function' THEN
604
605 begin
606 SELECT definition
607 INTO l_package
608 FROM ff_functions
609 WHERE name = l_function_name
610 and business_group_id = g_business_group_id;
611
612 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_periods_covered' USING OUT l_periods_covered;
613 hr_utility.trace('l_package'||l_package);
614
615 l_sqlstr :=
616 'SELECT '
617 || l_package
618 || ' (:p_assignment_id,:p_eff_date) '
619 || 'FROM DUAL';
620 EXECUTE IMMEDIATE l_sqlstr into l_periods_covered USING p_assignment_id,l_effective_date;
621
622 hr_utility.trace('Function value l_periods_covered '||l_periods_covered);
623
624 exception
625 WHEN OTHERS THEN
626 hr_utility.trace('Exception in get_periods_covered.Function.');
627 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
628 return null;
629 end;
630
631 END IF;
632
633 END IF;
634 END IF;--source 2 end
635
636 hr_utility.trace(' l_periods_covered : ' || l_periods_covered);
637 hr_utility.trace('Leaving get_periods_covered');
638
639 return l_periods_covered;
640
641 EXCEPTION
642 WHEN OTHERS THEN
643 hr_utility.trace('Exception in get_periods_covered end of function block.');
644 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
645 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
646 return null;
647 END get_periods_covered;
648
649
650 /*
651 Returns get_irregular_payment value for the person from the source configured in Configuration
652 values page for this BG.
653 */
654 FUNCTION get_irregular_payment(
655 p_assignment_id NUMBER)
656 RETURN VARCHAR2
657 IS
658 l_config_values PQP_UTILITIES.t_config_values;
659 g_bon_bal_type_id NUMBER;
660 l_source_name VARCHAR2(100);
661 l_context_name VARCHAR2(100);
662 l_column_name VARCHAR2(100);
663 l_function_name VARCHAR2(100);
664 l_sqlstr VARCHAR2(1000);
665 l_irregular_payment VARCHAR2(20) := NULL;
666 l_package VARCHAR2(100);
667 l_frequency VARCHAR2(20);
668 l_effective_date date;
669
670 cursor csr_irregular_payment_eit is
671 select AEI_INFORMATION3 from per_assignment_extra_info
672 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
673 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
674
675 cursor csr_asg_start_date is
676 select max(effective_start_date) from per_all_assignments_f
677 where assignment_id = p_assignment_id
678 and assignment_type = 'E'
679 and effective_start_date <= g_effective_date;
680
681 BEGIN
682
683 hr_utility.trace('Entering get_irregular_payment');
684 hr_utility.trace('g_effective_date in get_irregular_payment : ' || g_effective_date);
685 open csr_asg_start_date;
686 fetch csr_asg_start_date into l_effective_date;
687 close csr_asg_start_date;
688 hr_utility.trace('l_effective_date in get_irregular_payment : ' || l_effective_date);
689
690 -- Source 1
691
692 -- First check in the assignment form
693 -- Assignment EIT Context='RTI Information'
694
695 open csr_irregular_payment_eit;
696 fetch csr_irregular_payment_eit into l_irregular_payment;
697 close csr_irregular_payment_eit;
698
699 -- Source 2
700 -- Configuration values
701 if l_irregular_payment is null then
702 hr_utility.trace('in config ');
703
704 -- Use below API to get the config values for the given context in the business group
705 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_IRREGULAR_PAYMENT' ,
706 p_business_group_id => g_business_group_id ,
707 p_legislation_code => g_legislation_code ,
708 p_tab_config_values => l_config_values );
709
710 IF l_config_values.COUNT > 0 THEN
711 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
712 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
713 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
714 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
715
716 hr_utility.trace('l_source_name: ' || l_source_name);
717 hr_utility.trace('l_context_name: ' || l_context_name);
718 hr_utility.trace('l_column_name: ' || l_column_name);
719 hr_utility.trace('l_function_name: ' || l_function_name);
720
721 /**
722
723 - Assignment ==> Extra details
724 - Assignment ==> DFF
725 - Formula Function
726 **/
727 IF l_source_name = 'Assignment Developer DF' THEN
728 l_sqlstr := 'select ' || l_column_name ||
729 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
730 begin
731
732 hr_utility.trace('string '||l_sqlstr);
733 EXECUTE immediate l_sqlstr INTO l_irregular_payment USING p_assignment_id,l_context_name;
734
735 exception
736 WHEN OTHERS THEN
737 hr_utility.trace('Exception in get_irregular_payment Assignment Developer DFF.');
738 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
739 return null;
740 end;
741
742 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
743
744 l_sqlstr := 'select ' || l_column_name ||
745 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
746 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
747 begin
748 EXECUTE immediate l_sqlstr INTO l_irregular_payment USING p_assignment_id,l_context_name;
749
750 exception
751 WHEN OTHERS THEN
752 hr_utility.trace('Exception in get_irregular_payment PER_ASSIGNMENTS.');
753 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
754 return null;
755 end;
756
757 elsif l_source_name = 'Function' THEN
758
759 begin
760 SELECT definition
761 INTO l_package
762 FROM ff_functions
763 WHERE name = l_function_name
764 and business_group_id = g_business_group_id;
765
766 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_periods_covered' USING OUT l_irregular_payment;
767
768 hr_utility.trace('l_package'||l_package);
769
770 l_sqlstr :=
771 'SELECT '
772 || l_package
773 || ' (:p_assignment_id,:p_eff_date) '
774 || 'FROM DUAL';
775
776 EXECUTE IMMEDIATE l_sqlstr into l_irregular_payment USING p_assignment_id,l_effective_date;
777
778 hr_utility.trace('Function value l_irregular_payment '||l_irregular_payment);
779
780 exception
781 WHEN OTHERS THEN
782 hr_utility.trace('Exception in get_irregular_payment Function.');
783 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
784 return null;
785 end;
786
787 END IF;
788
789 END IF;
790 END IF;--source 2 end
791
792 hr_utility.trace(' l_irregular_payment : ' || l_irregular_payment);
793 hr_utility.trace('Leaving get_irregular_payment');
794
795 return l_irregular_payment;
796
797 EXCEPTION
798 WHEN OTHERS THEN
799 hr_utility.trace('Exception in get_irregular_payment end of function block.');
800 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
801 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
802 return null;
803 END get_irregular_payment;
804
805
806 /*
807 Returns get_oneoff_payment value for the person from the source configured in Configuration
808 values page for this BG.
809 */
810 FUNCTION get_oneoff_payment(
811 p_assignment_id NUMBER)
812 RETURN VARCHAR2
813 IS
814 l_config_values PQP_UTILITIES.t_config_values;
815 g_bon_bal_type_id NUMBER;
816 l_source_name VARCHAR2(100);
817 l_context_name VARCHAR2(100);
818 l_column_name VARCHAR2(100);
819 l_function_name VARCHAR2(100);
820 l_sqlstr VARCHAR2(1000);
821 l_oneoff_payment VARCHAR2(20) := NULL;
822 l_package VARCHAR2(100);
823 l_frequency VARCHAR2(20);
824 l_effective_date date;
825
826 cursor csr_oneoff_payment_eit is
827 select AEI_INFORMATION4 from per_assignment_extra_info
828 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
829 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
830
831 cursor csr_asg_start_date is
832 select max(effective_start_date) from per_all_assignments_f
833 where assignment_id = p_assignment_id
834 and assignment_type = 'E'
835 and effective_start_date <= g_effective_date;
836
837 BEGIN
838
839 hr_utility.trace('Entering get_oneoff_payment');
840 hr_utility.trace('g_effective_date in get_oneoff_payment : ' || g_effective_date);
841 open csr_asg_start_date;
842 fetch csr_asg_start_date into l_effective_date;
843 close csr_asg_start_date;
844 hr_utility.trace('l_effective_date in get_oneoff_payment : ' || l_effective_date);
845
846 -- Source 1
847
848 -- First check in the assignment form
849 -- Assignment EIT Context='RTI Information'
850
851 open csr_oneoff_payment_eit;
852 fetch csr_oneoff_payment_eit into l_oneoff_payment;
853 close csr_oneoff_payment_eit;
854
855 -- Source 2
856 -- Configuration values
857 if l_oneoff_payment is null then
858 hr_utility.trace('in config ');
859
860 -- Use below API to get the config values for the given context in the business group
861 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_ONEOFF_PAYMENT' ,
862 p_business_group_id => g_business_group_id ,
863 p_legislation_code => g_legislation_code ,
864 p_tab_config_values => l_config_values );
865
866 IF l_config_values.COUNT > 0 THEN
867 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
868 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
869 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
870 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
871
872 hr_utility.trace('l_source_name: ' || l_source_name);
873 hr_utility.trace('l_context_name: ' || l_context_name);
874 hr_utility.trace('l_column_name: ' || l_column_name);
875 hr_utility.trace('l_function_name: ' || l_function_name);
876
877 /**
878
879 - Assignment ==> Extra details
880 - Assignment ==> DFF
881 - Formula Function
882 **/
883 IF l_source_name = 'Assignment Developer DF' THEN
884 l_sqlstr := 'select ' || l_column_name ||
885 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
886 begin
887
888 hr_utility.trace('string '||l_sqlstr);
889 EXECUTE immediate l_sqlstr INTO l_oneoff_payment USING p_assignment_id,l_context_name;
890
891 exception
892 WHEN OTHERS THEN
893 hr_utility.trace('Exception in get_oneoff_payment Assignment Developer DFF.');
894 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
895 return null;
896 end;
897
898 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
899
900 l_sqlstr := 'select ' || l_column_name ||
901 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
902 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
903 begin
904 EXECUTE immediate l_sqlstr INTO l_oneoff_payment USING p_assignment_id,l_context_name;
905
906 exception
907 WHEN OTHERS THEN
908 hr_utility.trace('Exception in get_oneoff_payment.PER_ASSIGNMENTS.');
909 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
910 return null;
911 end;
912
913 elsif l_source_name = 'Function' THEN
914
915 begin
916 SELECT definition
917 INTO l_package
918 FROM ff_functions
919 WHERE name = l_function_name
920 and business_group_id = g_business_group_id;
921
922 hr_utility.trace('l_package'||l_package);
923
924 l_sqlstr :=
925 'SELECT '
926 || l_package
927 || ' (:p_assignment_id,:p_eff_date) '
928 || 'FROM DUAL';
929 EXECUTE IMMEDIATE l_sqlstr into l_oneoff_payment USING p_assignment_id,l_effective_date;
930
931 hr_utility.trace('Function value l_oneoff_payment '||l_oneoff_payment);
932 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_periods_covered' USING OUT l_oneoff_payment;
933
934 exception
935 WHEN OTHERS THEN
936 hr_utility.trace('Exception in get_oneoff_payment.Function.');
937 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
938 return null;
939 end;
940
941 END IF;
942
943 END IF;
944 END IF;--source 2 end
945
946 hr_utility.trace(' l_oneoff_payment : ' || l_oneoff_payment);
947 hr_utility.trace('Leaving get_oneoff_payment');
948
949 return l_oneoff_payment;
950
951 EXCEPTION
952 WHEN OTHERS THEN
953 hr_utility.trace('Exception in get_oneoff_payment end of function block.');
954 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
955 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
956 return null;
957 END get_oneoff_payment;
958
959 /*
960 Returns get_payment_non_indiv value for the person from the source configured in Configuration
961 values page for this BG.
962 */
963 FUNCTION get_payment_non_indiv(
964 p_assignment_id NUMBER)
965 RETURN VARCHAR2
966 IS
967 l_config_values PQP_UTILITIES.t_config_values;
968 g_bon_bal_type_id NUMBER;
969 l_source_name VARCHAR2(100);
970 l_context_name VARCHAR2(100);
971 l_column_name VARCHAR2(100);
972 l_function_name VARCHAR2(100);
973 l_sqlstr VARCHAR2(1000);
974 l_pay_non_indiv_ind VARCHAR2(20) := NULL;
975 l_package VARCHAR2(100);
976 l_frequency VARCHAR2(20);
977 l_effective_date date;
978
979
980 cursor csr_asg_start_date is
981 select max(effective_start_date) from per_all_assignments_f
982 where assignment_id = p_assignment_id
983 and assignment_type = 'E'
984 and effective_start_date <= g_effective_date;
985
986 BEGIN
987
988 hr_utility.trace('Entering get_payment_non_indiv');
989 hr_utility.trace('g_effective_date in get_payment_non_indiv : ' || g_effective_date);
990
991 open csr_asg_start_date;
992 fetch csr_asg_start_date into l_effective_date;
993 close csr_asg_start_date;
994
995 hr_utility.trace('l_effective_date in get_payment_non_indiv : ' || l_effective_date);
996
997 -- Source 2
998 -- Configuration values
999 if l_pay_non_indiv_ind is null then
1000 hr_utility.trace('in config ');
1001
1002 -- Use below API to get the config values for the given context in the business group
1003 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_PAY_NON_INDIV_IND' ,
1004 p_business_group_id => g_business_group_id ,
1005 p_legislation_code => g_legislation_code ,
1006 p_tab_config_values => l_config_values );
1007
1008 IF l_config_values.COUNT > 0 THEN
1009 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
1010 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
1011 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
1012 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
1013
1014 hr_utility.trace('l_source_name: ' || l_source_name);
1015 hr_utility.trace('l_context_name: ' || l_context_name);
1016 hr_utility.trace('l_column_name: ' || l_column_name);
1017 hr_utility.trace('l_function_name: ' || l_function_name);
1018
1019 /**
1020
1021 - Assignment ==> Extra details
1022 - Assignment ==> DFF
1023 - Formula Function
1024 **/
1025 IF l_source_name = 'Assignment Developer DF' THEN
1026 l_sqlstr := 'select ' || l_column_name ||
1027 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
1028 begin
1029
1030 hr_utility.trace('string '||l_sqlstr);
1031 EXECUTE immediate l_sqlstr INTO l_pay_non_indiv_ind USING p_assignment_id,l_context_name;
1032
1033 exception
1034 WHEN OTHERS THEN
1035 hr_utility.trace('Exception in get_payment_non_indiv Assignment Developer DFF.');
1036 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1037 return null;
1038 end;
1039
1040 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
1041
1042 l_sqlstr := 'select ' || l_column_name ||
1043 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
1044 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
1045 begin
1046 EXECUTE immediate l_sqlstr INTO l_pay_non_indiv_ind USING p_assignment_id,l_context_name;
1047
1048 exception
1049 WHEN OTHERS THEN
1050 hr_utility.trace('Exception in get_payment_non_indiv.PER_ASSIGNMENTS.');
1051 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1052 return null;
1053 end;
1054
1055 elsif l_source_name = 'Function' THEN
1056
1057 begin
1058 SELECT definition
1059 INTO l_package
1060 FROM ff_functions
1061 WHERE name = l_function_name
1062 and business_group_id = g_business_group_id;
1063
1064 hr_utility.trace('l_package'||l_package);
1065
1066 l_sqlstr :=
1067 'SELECT '
1068 || l_package
1069 || ' (:p_assignment_id,:p_eff_date) '
1070 || 'FROM DUAL';
1071 EXECUTE IMMEDIATE l_sqlstr into l_pay_non_indiv_ind USING p_assignment_id,l_effective_date;
1072
1073 hr_utility.trace('Function value get_payment_non_indiv '||l_pay_non_indiv_ind);
1074
1075 exception
1076 WHEN OTHERS THEN
1077 hr_utility.trace('Exception in get_payment_non_indiv Function.');
1078 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1079 return null;
1080 end;
1081
1082 END IF;
1083
1084 END IF;
1085 END IF;--source 2 end
1086
1087 hr_utility.trace(' l_onstrike_ind : ' || l_pay_non_indiv_ind);
1088 hr_utility.trace('Leaving get_payment_non_indiv');
1089
1090 return l_pay_non_indiv_ind;
1091
1092 EXCEPTION
1093 WHEN OTHERS THEN
1094 hr_utility.trace('Exception in get_payment_non_indiv end of function block.');
1095 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1096 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
1097 return null;
1098 END get_payment_non_indiv;
1099
1100
1101 /*
1102 Returns get_onstrike_indicator value for the person from the source configured in Configuration
1103 values page for this BG.
1104 */
1105 FUNCTION get_onstrike_indicator(
1106 p_assignment_id NUMBER)
1107 RETURN VARCHAR2
1108 IS
1109 l_config_values PQP_UTILITIES.t_config_values;
1110 g_bon_bal_type_id NUMBER;
1111 l_source_name VARCHAR2(100);
1112 l_context_name VARCHAR2(100);
1113 l_column_name VARCHAR2(100);
1114 l_function_name VARCHAR2(100);
1115 l_sqlstr VARCHAR2(1000);
1116 l_onstrike_ind VARCHAR2(20) := NULL;
1117 l_package VARCHAR2(100);
1118 l_frequency VARCHAR2(20);
1119 l_effective_date date;
1120
1121
1122 cursor csr_asg_start_date is
1123 select max(effective_start_date) from per_all_assignments_f
1124 where assignment_id = p_assignment_id
1125 and assignment_type = 'E'
1126 and effective_start_date <= g_effective_date;
1127
1128 BEGIN
1129
1130 hr_utility.trace('Entering get_onstrike_indicator');
1131 hr_utility.trace('g_effective_date in get_onstrike_indicator : ' || g_effective_date);
1132
1133 open csr_asg_start_date;
1134 fetch csr_asg_start_date into l_effective_date;
1135 close csr_asg_start_date;
1136
1137 hr_utility.trace('l_effective_date in get_onstrike_indicator : ' || l_effective_date);
1138
1139 -- Source 2
1140 -- Configuration values
1141 if l_onstrike_ind is null then
1142 hr_utility.trace('in config ');
1143
1144 -- Use below API to get the config values for the given context in the business group
1145 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_ONSTRIKE_INDICATOR' ,
1146 p_business_group_id => g_business_group_id ,
1147 p_legislation_code => g_legislation_code ,
1148 p_tab_config_values => l_config_values );
1149
1150 IF l_config_values.COUNT > 0 THEN
1151 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
1152 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
1153 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
1154 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
1155
1156 hr_utility.trace('l_source_name: ' || l_source_name);
1157 hr_utility.trace('l_context_name: ' || l_context_name);
1158 hr_utility.trace('l_column_name: ' || l_column_name);
1159 hr_utility.trace('l_function_name: ' || l_function_name);
1160
1161 /**
1162
1163 - Assignment ==> Extra details
1164 - Assignment ==> DFF
1165 - Formula Function
1166 **/
1167 IF l_source_name = 'Assignment Developer DF' THEN
1168 l_sqlstr := 'select ' || l_column_name ||
1169 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
1170 begin
1171
1172 hr_utility.trace('string '||l_sqlstr);
1173 EXECUTE immediate l_sqlstr INTO l_onstrike_ind USING p_assignment_id,l_context_name;
1174
1175 exception
1176 WHEN OTHERS THEN
1177 hr_utility.trace('Exception in get_oneoff_payment Assignment Developer DFF.');
1178 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1179 return null;
1180 end;
1181
1182 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
1183
1184 l_sqlstr := 'select ' || l_column_name ||
1185 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
1186 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
1187 begin
1188 EXECUTE immediate l_sqlstr INTO l_onstrike_ind USING p_assignment_id,l_context_name;
1189
1190 exception
1191 WHEN OTHERS THEN
1192 hr_utility.trace('Exception in get_onstrike_indicator.PER_ASSIGNMENTS.');
1193 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1194 return null;
1195 end;
1196
1197 elsif l_source_name = 'Function' THEN
1198
1199 begin
1200 SELECT definition
1201 INTO l_package
1202 FROM ff_functions
1203 WHERE name = l_function_name
1204 and business_group_id = g_business_group_id;
1205
1206 hr_utility.trace('l_package'||l_package);
1207
1208 l_sqlstr :=
1209 'SELECT '
1210 || l_package
1211 || ' (:p_assignment_id,:p_eff_date) '
1212 || 'FROM DUAL';
1213 EXECUTE IMMEDIATE l_sqlstr into l_onstrike_ind USING p_assignment_id,l_effective_date;
1214
1215 hr_utility.trace('Function value l_onstrike_ind '||l_onstrike_ind);
1216
1217 exception
1218 WHEN OTHERS THEN
1219 hr_utility.trace('Exception in get_l_onstrike_indicator Function.');
1220 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1221 return null;
1222 end;
1223
1224 END IF;
1225
1226 END IF;
1227 END IF;--source 2 end
1228
1229 hr_utility.trace(' l_onstrike_ind : ' || l_onstrike_ind);
1230 hr_utility.trace('Leaving l_onstrike_ind');
1231
1232 return l_onstrike_ind;
1233
1234 EXCEPTION
1235 WHEN OTHERS THEN
1236 hr_utility.trace('Exception in get_onstrike_indicator end of function block.');
1237 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1238 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
1239 return null;
1240 END get_onstrike_indicator;
1241
1242
1243 /*
1244 Returns get_unpaid_absence value for the person from the source configured in Configuration
1245 values page for this BG.
1246 */
1247 FUNCTION get_unpaid_absence(
1248 p_assignment_id NUMBER)
1249 RETURN VARCHAR2
1250 IS
1251 l_config_values PQP_UTILITIES.t_config_values;
1252 g_bon_bal_type_id NUMBER;
1253 l_source_name VARCHAR2(100);
1254 l_context_name VARCHAR2(100);
1255 l_column_name VARCHAR2(100);
1256 l_function_name VARCHAR2(100);
1257 l_sqlstr VARCHAR2(1000);
1258 l_unpaid_absence_ind VARCHAR2(20) := NULL;
1259 l_package VARCHAR2(100);
1260 l_frequency VARCHAR2(20);
1261 l_effective_date date;
1262
1263 cursor csr_asg_start_date is
1264 select max(effective_start_date) from per_all_assignments_f
1265 where assignment_id = p_assignment_id
1266 and assignment_type = 'E'
1267 and effective_start_date <= g_effective_date;
1268
1269 BEGIN
1270
1271 hr_utility.trace('Entering get_unpaid_absence');
1272 hr_utility.trace('g_effective_date in get_unpaid_absence : ' || g_effective_date);
1273
1274 open csr_asg_start_date;
1275 fetch csr_asg_start_date into l_effective_date;
1276 close csr_asg_start_date;
1277
1278 hr_utility.trace('l_effective_date in get_unpaid_absence : ' || l_effective_date);
1279
1280 -- Source 2
1281 -- Configuration values
1282 if l_unpaid_absence_ind is null then
1283 hr_utility.trace('in config ');
1284
1285 -- Use below API to get the config values for the given context in the business group
1286 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_ONSTRIKE_INDICATOR' ,
1287 p_business_group_id => g_business_group_id ,
1288 p_legislation_code => g_legislation_code ,
1289 p_tab_config_values => l_config_values );
1290
1291 IF l_config_values.COUNT > 0 THEN
1292 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
1293 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
1294 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
1295 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
1296
1297 hr_utility.trace('l_source_name: ' || l_source_name);
1298 hr_utility.trace('l_context_name: ' || l_context_name);
1299 hr_utility.trace('l_column_name: ' || l_column_name);
1300 hr_utility.trace('l_function_name: ' || l_function_name);
1301
1302 /**
1303
1304 - Assignment ==> Extra details
1305 - Assignment ==> DFF
1306 - Formula Function
1307 **/
1308 IF l_source_name = 'Assignment Developer DF' THEN
1309 l_sqlstr := 'select ' || l_column_name ||
1310 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
1311 begin
1312
1313 hr_utility.trace('string '||l_sqlstr);
1314 EXECUTE immediate l_sqlstr INTO l_unpaid_absence_ind USING p_assignment_id,l_context_name;
1315
1316 exception
1317 WHEN OTHERS THEN
1318 hr_utility.trace('Exception in get_unpaid_absence Assignment Developer DFF.');
1319 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1320 return null;
1321 end;
1322
1323 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
1324
1325 l_sqlstr := 'select ' || l_column_name ||
1326 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
1327 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
1328 begin
1329 EXECUTE immediate l_sqlstr INTO l_unpaid_absence_ind USING p_assignment_id,l_context_name;
1330
1331 exception
1332 WHEN OTHERS THEN
1333 hr_utility.trace('Exception in get_unpaid_absence.PER_ASSIGNMENTS.');
1334 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1335 return null;
1336 end;
1337
1338 elsif l_source_name = 'Function' THEN
1339
1340 begin
1341 SELECT definition
1342 INTO l_package
1343 FROM ff_functions
1344 WHERE name = l_function_name
1345 and business_group_id = g_business_group_id;
1346
1347 hr_utility.trace('l_package'||l_package);
1348
1349 l_sqlstr :=
1350 'SELECT '
1351 || l_package
1352 || ' (:p_assignment_id,:p_eff_date) '
1353 || 'FROM DUAL';
1354 EXECUTE IMMEDIATE l_sqlstr into l_unpaid_absence_ind USING p_assignment_id,l_effective_date;
1355
1356 hr_utility.trace('Function value l_unpaid_absence_ind '||l_unpaid_absence_ind);
1357
1358 exception
1359 WHEN OTHERS THEN
1360 hr_utility.trace('Exception in get_unpaid_absence Function.');
1361 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1362 return null;
1363 end;
1364
1365 END IF;
1366
1367 END IF;
1368 END IF;--source 2 end
1369
1370 hr_utility.trace(' l_onstrike_ind : ' || l_unpaid_absence_ind);
1371 hr_utility.trace('Leaving get_unpaid_absence');
1372
1373 return l_unpaid_absence_ind;
1374
1375 EXCEPTION
1376 WHEN OTHERS THEN
1377 hr_utility.trace('Exception in get_unpaid_absence end of function block.');
1378 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1379 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
1380 return null;
1381 END get_unpaid_absence;
1382
1383 /*
1384 Returns the passport number for the person from the source configured in Configuration
1385 values page for this BG.
1386 */
1387 FUNCTION get_passport_number(
1388 p_person_id VARCHAR2)
1389 RETURN VARCHAR2
1390 IS
1391 l_config_values PQP_UTILITIES.t_config_values;
1392 g_bon_bal_type_id NUMBER;
1393 l_source_name VARCHAR2(100);
1394 l_context_name VARCHAR2(100);
1395 l_column_name VARCHAR2(100);
1396 l_function_name VARCHAR2(100);
1397 l_passport_number VARCHAR2(100) := NULL;
1398 sqlstr VARCHAR2(1000);
1399 l_proc CONSTANT VARCHAR2(50):= g_package||'get_passport_number';
1400 l_package VARCHAR2(100);
1401 l_effective_date date;
1402 cursor csr_doc_of_rec
1403 is
1404 select hdei.document_number from hr_document_types hdt,hr_document_extra_info hdei
1405 where hdt.category_code = 'PPT_INFO'
1406 and hdt.document_type_id = hdei.document_type_id
1407 and hdei.person_id = p_person_id;
1408
1409 CURSOR csr_per_all_people
1410 IS
1411 SELECT l_column_name
1412 FROM per_all_people_f
1413 WHERE person_id = p_person_id
1414 AND ATTRIBUTE_CATEGORY = l_context_name
1415 ORDER BY effective_start_date,
1416 effective_end_date;
1417
1418 CURSOR csr_per_extra_people_info
1419 IS
1420 SELECT l_column_name
1421 FROM per_people_extra_info
1422 WHERE person_id = p_person_id
1423 AND PEI_INFORMATION_CATEGORY = l_context_name;
1424
1425 cursor csr_per_start_date is
1426 select max(effective_start_date) from per_all_people_f
1427 where person_id = p_person_id
1428 and effective_start_date <= g_effective_date;
1429
1430 BEGIN
1431 hr_utility.set_location('Entering: '||l_proc,1);
1432 hr_utility.trace('g_effective_date in get_passport_number : ' || g_effective_date);
1433
1434 open csr_per_start_date;
1435 fetch csr_per_start_date into l_effective_date;
1436 close csr_per_start_date;
1437
1438 hr_utility.trace('l_effective_date in get_oneoff_payment : ' || l_effective_date);
1439 -- Use below API to get the config values for the given context in the business group
1440 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_PASSPORT_NO' ,
1441 p_business_group_id => g_business_group_id ,
1442 p_legislation_code => g_legislation_code ,
1443 p_tab_config_values => l_config_values );
1444
1445 IF l_config_values.COUNT > 0 THEN
1446 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
1447 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
1448 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
1449 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
1450 hr_utility.set_location('l_source_name' || l_source_name,1);
1451 hr_utility.set_location('l_context_name' || l_context_name,1);
1452 hr_utility.set_location('l_column_name' || l_column_name,1);
1453 hr_utility.set_location('l_function_name' || l_function_name,1);
1454
1455 /** The source can be either from Others--> Extra information of the person
1456 or from the descriptive flex field on the person form.
1457 **/
1458 IF l_source_name = 'Extra Person Info DDF' THEN
1459 hr_utility.set_location('into Extra Person Info DDF',1);
1460 sqlstr := 'select ' || l_column_name ||
1461 ' from per_people_extra_info where person_id = :p_person_id and PEI_INFORMATION_CATEGORY = :l_context_name';
1462 hr_utility.set_location(sqlstr,1);
1463 begin
1464 EXECUTE immediate sqlstr INTO l_passport_number USING p_person_id,l_context_name;
1465 Exception
1466 when others then
1467 hr_utility.set_location('Exception in extra info : ' || sqlerrm,1);
1468 end;
1469
1470 elsif l_source_name = 'PER_PEOPLE' THEN
1471 hr_utility.set_location('into PER_PEOPLE',1);
1472 sqlstr := 'select ' || l_column_name ||
1473 ' from per_all_people_f where person_id = :p_person_id and ATTRIBUTE_CATEGORY = :l_context_name' ||
1474 ' and :l_effective_date between effective_start_date and effective_end_date' ;
1475 hr_utility.trace(sqlstr);
1476 begin
1477 EXECUTE immediate sqlstr INTO l_passport_number USING p_person_id,l_context_name,l_effective_date;
1478 exception
1479 when others then
1480 hr_utility.trace('Exception in per_people: ' || sqlerrm);
1481 end;
1482
1483 elsif l_source_name = 'Function' THEN
1484
1485 begin
1486 SELECT definition
1487 INTO l_package
1488 FROM ff_functions
1489 WHERE name = l_function_name
1490 and business_group_id = g_business_group_id;
1491
1492 hr_utility.trace('l_package'||l_package);
1493
1494 sqlstr :=
1495 'SELECT '
1496 || l_package
1497 || ' (:p_person_id,:p_eff_date) '
1498 || 'FROM DUAL';
1499 hr_utility.set_location(sqlstr,1);
1500 EXECUTE IMMEDIATE sqlstr into l_passport_number USING p_person_id,l_effective_date;
1501 hr_utility.trace('Function value l_passport_number '||l_passport_number);
1502 exception
1503 WHEN OTHERS THEN
1504 hr_utility.trace('Exception in get_passport_number.Function.');
1505 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1506 return null;
1507 end;
1508
1509 END IF;
1510 ELSE
1511 -- GEt the passport number from Documents of record, if it null then get from config values.
1512 open csr_doc_of_rec;
1513 fetch csr_doc_of_rec into l_passport_number;
1514 close csr_doc_of_rec;
1515
1516 END IF;
1517 hr_utility.set_location('l_passport_number: '||l_passport_number,1);
1518 hr_utility.set_location('Leaving: '||l_proc,1);
1519
1520 RETURN l_passport_number;
1521
1522 EXCEPTION
1523 WHEN OTHERS THEN
1524 RETURN l_passport_number;
1525 return null;
1526 END get_passport_number;
1527
1528 /*
1529 Procedure get_paye_agg_values(
1530 p_asg_id IN NUMBER,
1531 p_fps_rec3 IN OUT nocopy act_info_rec)
1532 is
1533 begin
1534 end;*/
1535
1536 -- Procedure to fetch Trivial Commutation Amount Detials
1537 PROCEDURE fetch_trivial_payment(
1538 p_asg_id IN NUMBER,
1539 p_last_asg_action_id IN NUMBER,
1540 p_fps_rec3 IN OUT nocopy act_info_rec)
1541 IS
1542
1543 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_trivial_payment';
1544 l_arch BOOLEAN;
1545 l_trivial_a number;
1546 l_trivial_b number;
1547 l_trivial_c number;
1548 l_trivial_a_id number;
1549 l_trivial_b_id number;
1550 l_trivial_c_id number;
1551 l_last_asg_action_id number;
1552
1553 -- get the defined balance id for specified balance and dimension
1554 cursor get_defined_balance_id
1555 (p_balance_name VARCHAR2, p_dimension_name VARCHAR2) IS
1556 SELECT defined_balance_id
1557 FROM pay_defined_balances db
1558 , pay_balance_types b
1559 , pay_balance_dimensions d
1560 WHERE b.balance_name = p_balance_name
1561 AND d.dimension_name = p_dimension_name
1562 AND db.balance_type_id = b.balance_type_id
1563 AND db.balance_dimension_id = d.balance_dimension_id
1564 AND b.legislation_code = 'GB'
1565 AND d.legislation_code = 'GB';
1566
1567 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
1568 IS
1569 SELECT MAX(ASSIGNMENT_ACTION_ID)
1570 FROM pay_assignment_actions
1571 WHERE SOURCE_ACTION_ID = c_lst_act_id;
1572
1573 BEGIN
1574 hr_utility.set_location('Entering: '||l_proc,1);
1575 l_arch := true;
1576
1577 OPEN csr_child_act_id(p_last_asg_action_id);
1578 FETCH csr_child_act_id INTO l_last_asg_action_id;
1579 CLOSE csr_child_act_id;
1580
1581 if l_last_asg_action_id is null then
1582 l_last_asg_action_id := p_last_asg_action_id;
1583 end if;
1584
1585 OPEN get_defined_balance_id('Trivial Commutation Type A','_ASG_RUN');
1586 FETCH get_defined_balance_id INTO l_trivial_a_id;
1587 CLOSE get_defined_balance_id;
1588
1589 OPEN get_defined_balance_id('Trivial Commutation Type B','_ASG_RUN');
1590 FETCH get_defined_balance_id INTO l_trivial_b_id;
1591 CLOSE get_defined_balance_id;
1592
1593 OPEN get_defined_balance_id('Trivial Commutation Type C','_ASG_RUN');
1594 FETCH get_defined_balance_id INTO l_trivial_c_id;
1595 CLOSE get_defined_balance_id;
1596
1597 l_trivial_a := 100 * NVL(pay_balance_pkg.get_value(l_trivial_a_id,l_last_asg_action_id),0);
1598
1599 l_trivial_b := 100 * NVL(pay_balance_pkg.get_value(l_trivial_b_id,l_last_asg_action_id),0);
1600
1601 l_trivial_c := 100 * NVL(pay_balance_pkg.get_value(l_trivial_c_id,l_last_asg_action_id),0);
1602
1603 p_fps_rec3.assignment_id := p_asg_id;
1604 p_fps_rec3.action_info_category := 'GB_RTI_FPS_ASG_DET3';
1605
1606 -- initialized to 0 act info 2,4,6
1607 -- IF PAYE Aggregation values summed up value of all assignments should be reported
1608 if l_trivial_a > 0 then
1609 p_fps_rec3.act_info1 := 'A';
1610 p_fps_rec3.act_info2 := p_fps_rec3.act_info2 + l_trivial_a;
1611 end if;
1612
1613 if l_trivial_b > 0 then
1614 p_fps_rec3.act_info3 := 'B';
1615 p_fps_rec3.act_info4 := p_fps_rec3.act_info4 + l_trivial_b;
1616 end if;
1617
1618 if l_trivial_c > 0 then
1619 p_fps_rec3.act_info5 := 'C';
1620 p_fps_rec3.act_info6 := p_fps_rec3.act_info6 +l_trivial_c;
1621 end if;
1622
1623 hr_utility.set_location('Leaving: '||l_proc,999);
1624 END fetch_trivial_payment;
1625
1626
1627 -- Function to fetch Assignment Details3 (CONTEXT - GB RTI ASG DET3)
1628 FUNCTION fetch_asg_det3(
1629 p_asg_id IN NUMBER,
1630 p_last_asg_action_id IN NUMBER,
1631 p_fps_rec3 IN OUT NOCOPY act_info_rec,
1632 p_fps IN VARCHAR2 DEFAULT 'Y')
1633 RETURN BOOLEAN
1634 IS
1635
1636 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_asg_det3';
1637 l_arch BOOLEAN;
1638 l_onstrike varchar2(10);
1639 l_unpaid_absence varchar2(10);
1640 l_payment_nonindiv varchar2(10);
1641 l_asg_id number;
1642
1643 --To fetch Assignment Extra info details
1644 CURSOR csr_fetch_other_fields
1645 IS
1646 SELECT
1647 AEI_INFORMATION7 payment_nonindiv,
1648 AEI_INFORMATION8 onstrike ,
1649 AEI_INFORMATION9 unpaid_absence
1650 FROM PER_ASSIGNMENT_EXTRA_INFO
1651 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
1652 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
1653 AND assignment_id = l_asg_id;
1654
1655 --To fetch assignment id of the payroll run
1656 cursor csr_get_asg_id is
1657 select assignment_id
1658 from pay_assignment_actions
1659 where assignment_action_id = p_last_asg_action_id;
1660
1661 BEGIN
1662
1663 hr_utility.set_location('Entering: '||l_proc,1);
1664 l_arch := true;
1665
1666 open csr_get_asg_id;
1667 fetch csr_get_asg_id into l_asg_id;
1668 close csr_get_asg_id;
1669
1670 hr_utility.set_location('l_asg_id : '||l_asg_id,1);
1671 hr_utility.set_location('p_last_asg_action_id: '||p_last_asg_action_id,1);
1672
1673 p_fps_rec3.assignment_id := l_asg_id;
1674 p_fps_rec3.action_info_category := 'GB_RTI_FPS_ASG_DET3';
1675
1676 --If First FPS (p_fps = 'N') then dont fetch Trivial Amounts
1677 if p_fps = 'Y' then
1678 fetch_trivial_payment(p_asg_id,p_last_asg_action_id,p_fps_rec3);
1679 end if;
1680
1681 -- Get the Irregular payment indicator, periods covered and one-off payment.
1682 OPEN csr_fetch_other_fields;
1683 FETCH csr_fetch_other_fields
1684 INTO l_payment_nonindiv,
1685 l_onstrike,
1686 l_unpaid_absence;
1687 CLOSE csr_fetch_other_fields;
1688
1689 --Fetch Payment to Non Individual, OnStrike and Unpaid Absence Indicators
1690 -- From Configuration
1691
1692 if l_payment_nonindiv is null then
1693 l_payment_nonindiv := get_payment_non_indiv(l_asg_id);
1694 end if;
1695
1696 if l_onstrike is null then
1697 l_onstrike := get_onstrike_indicator(l_asg_id);
1698 end if;
1699
1700 if l_unpaid_absence is null then
1701 l_unpaid_absence := get_unpaid_absence(l_asg_id);
1702 end if;
1703
1704 -- Modify the value only if the old value is null or 'N'
1705 -- If PAYE Aggregation 'Y' should be reported , at least one of the assignment in the the prepayment has 'Y'
1706 if l_payment_nonindiv is not null then
1707 if p_fps_rec3.act_info7 is null or p_fps_rec3.act_info7 ='N' then
1708 p_fps_rec3.act_info7 := l_payment_nonindiv;
1709 end if;
1710 end if;
1711
1712 if l_onstrike is not null then
1713 if p_fps_rec3.act_info8 is null or p_fps_rec3.act_info8 ='N' then
1714 p_fps_rec3.act_info8 := l_onstrike;
1715 end if;
1716 end if;
1717
1718 if l_unpaid_absence is not null then
1719 if p_fps_rec3.act_info9 is null or p_fps_rec3.act_info9 ='N' then
1720 p_fps_rec3.act_info9 := l_unpaid_absence;
1721 end if;
1722 end if;
1723
1724 hr_utility.set_location('p_fps_rec3.act_info1: '||p_fps_rec3.act_info1,1);
1725 hr_utility.set_location('p_fps_rec3.act_info2: '||p_fps_rec3.act_info2,1);
1726 hr_utility.set_location('p_fps_rec3.act_info3: '||p_fps_rec3.act_info3,1);
1727 hr_utility.set_location('p_fps_rec3.act_info4: '||p_fps_rec3.act_info4,1);
1728 hr_utility.set_location('p_fps_rec3.act_info5: '||p_fps_rec3.act_info5,1);
1729 hr_utility.set_location('p_fps_rec3.act_info6: '||p_fps_rec3.act_info6,1);
1730 hr_utility.set_location('p_fps_rec3.act_info7: '||p_fps_rec3.act_info7,1);
1731 hr_utility.set_location('p_fps_rec3.act_info8: '||p_fps_rec3.act_info8,1);
1732 hr_utility.set_location('p_fps_rec3.act_info9: '||p_fps_rec3.act_info9,1);
1733
1734 hr_utility.set_location('Leaving: '||l_proc,999);
1735 RETURN l_arch;
1736 END fetch_asg_det3;
1737
1738 -- Function to fetch person details (CONTEXT - GB RTI EMPLOYEE DETAILS)
1739 FUNCTION fetch_person_rec(
1740 p_assactid IN NUMBER,
1741 p_start_date IN DATE,
1742 p_end_date IN DATE,
1743 p_person_rec OUT nocopy act_info_rec)
1744 RETURN BOOLEAN
1745 IS
1746 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_person_rec';
1747 l_arch BOOLEAN;
1748 l_partner_name VARCHAR2(50);
1749 l_partner_ni VARCHAR2(30);
1750 l_partner_surname VARCHAR2(50);
1751 l_partner_first_name VARCHAR2(50);
1752 l_partner_second_name VARCHAR2(50);
1753
1754 CURSOR csr_person_details
1755 IS
1756 SELECT rownum Number_of_employee,
1757 pap.person_id p_person_id,
1758 paa.assignment_id,
1759 SUBSTR(trim(pap.last_name), 1,35) last_name,
1760 SUBSTR(trim(pap.first_name), 1,least(DECODE(instr(trim(pap.first_name),' '),0,35,instr(trim(pap.first_name),' ')),35)) first_name,
1761 SUBSTR(trim(pap.middle_names), 1,least(decode(instr(trim(pap.middle_names),' '),0,35,instr(trim(pap.middle_names),' ')),35)) middle_name,
1762 pap.title title,
1763 SUBSTR(pap.national_identifier,1,9) national_identifier,
1764 pap.date_of_birth date_of_birth,
1765 SUBSTR(pap.sex,1,1) sex ,
1766 DECODE(pap.per_information10,'Y','Y',NULL) agg_paye_flag,
1767 DECODE(pap.per_information9,'Y','Y',NULL) multiple_asg_flag
1768 FROM pay_assignment_actions act,
1769 per_all_assignments_f paa,
1770 per_all_people_f pap
1771 WHERE act.assignment_action_id = p_assactid
1772 AND act.assignment_id = paa.assignment_id
1773 AND paa.person_id = pap.person_id
1774 AND p_end_date between pap.effective_start_date and pap.effective_end_date
1775 AND paa.effective_start_date =
1776 (
1777 SELECT MAX(paa2.effective_start_date)
1778 FROM per_all_assignments_f paa2
1779 WHERE paa2.assignment_id = paa.assignment_id
1780 AND paa2.assignment_type = 'E'
1781 AND paa2.effective_start_date <= p_end_date
1782 );
1783
1784
1785 CURSOR csr_partner_details(c_person_id NUMBER)
1786 IS
1787 SELECT NVL(partner_name,''),
1788 partner_ni_number
1789 FROM ssp_medicals
1790 WHERE maternity_id IN
1791 (SELECT MAX(maternity_id)
1792 FROM per_absence_attendances
1793 WHERE person_id = c_person_id
1794 AND ABSENCE_ATTENDANCE_TYPE_ID IN
1795 (SELECT ABSENCE_ATTENDANCE_TYPE_ID
1796 FROM per_absence_attendance_types
1797 WHERE ABSENCE_CATEGORY IN ('GB_ADDL_PAT_ADOPT', 'GB_ADDL_PAT_BIRTH')
1798 )
1799 )
1800 AND EVIDENCE_STATUS = 'CURRENT';
1801 l_person_rec csr_person_details%rowtype;
1802
1803 BEGIN
1804 hr_utility.set_location('Entering: '||l_proc,1);
1805 l_arch := true;
1806 hr_utility.trace('p_assactid: '||p_assactid);
1807 hr_utility.trace('p_start_date: '||TO_CHAR(p_start_date));
1808 hr_utility.trace('p_end_date: '||TO_CHAR(p_end_date));
1809
1810 OPEN csr_person_details;
1811 FETCH csr_person_details INTO l_person_rec;
1812 CLOSE csr_person_details;
1813
1814 p_person_rec.person_id := l_person_rec.p_person_id;
1815 p_person_rec.assignment_id := l_person_rec.assignment_id;
1816 p_person_rec.action_info_category := 'GB RTI EMPLOYEE DETAILS';
1817 p_person_rec.act_info3 := l_person_rec.last_name;
1818 p_person_rec.act_info4 := l_person_rec.first_name;
1819 p_person_rec.act_info5 := l_person_rec.middle_name;
1820 p_person_rec.act_info6 := l_person_rec.title;
1821 p_person_rec.act_info7 := l_person_rec.national_identifier;
1822 p_person_rec.act_info8 := TO_CHAR(l_person_rec.date_of_birth,'YYYY-MM-DD');
1823 p_person_rec.act_info9 := l_person_rec.sex;
1824 p_person_rec.act_info10 := l_person_rec.agg_paye_flag;
1825 p_person_rec.act_info11 := l_person_rec.multiple_asg_flag;
1826 p_person_rec.act_info16 := get_passport_number(l_person_rec.p_person_id);
1827
1828 OPEN csr_partner_details(l_person_rec.p_person_id);
1829 FETCH csr_partner_details INTO l_partner_name, l_partner_ni;
1830 CLOSE csr_partner_details;
1831
1832 if instr(l_partner_name,' ') <> 0 then
1833 l_partner_surname := trim(SUBSTR(l_partner_name,1,instr(l_partner_name,' ')));
1834 else
1835 l_partner_surname := l_partner_name;
1836 end if;
1837 l_partner_first_name := trim(SUBSTR(l_partner_name,LENGTH(l_partner_surname) +1,instr(l_partner_name,' ',LENGTH(l_partner_surname))));
1838 l_partner_second_name := trim(SUBSTR(l_partner_name,LENGTH(l_partner_surname||l_partner_first_name)+2,(instr(l_partner_name,' ',
1839 LENGTH(l_partner_surname||l_partner_first_name)+3)) - (LENGTH(l_partner_surname||l_partner_first_name)+2) ));
1840 p_person_rec.act_info12 := l_partner_surname;
1841 p_person_rec.act_info13 := l_partner_first_name;
1842 p_person_rec.act_info14 := l_partner_second_name;
1843 p_person_rec.act_info15 := l_partner_ni;
1844 hr_utility.set_location('Leaving: '||l_proc,999);
1845 RETURN l_arch;
1846 END fetch_person_rec;
1847 --
1848
1849 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET1)
1850 FUNCTION fetch_fps_asg_det1(
1851 p_start_date IN DATE,
1852 p_end_date IN DATE,
1853 p_assactid IN NUMBER,
1854 p_last_asg_action_id IN NUMBER,
1855 p_fps IN varchar2,
1856 p_person_rec IN act_info_rec,
1857 p_fps_rec1 OUT nocopy act_info_rec,
1858 p_starter_set out nocopy varchar2)
1859 RETURN BOOLEAN
1860 IS
1861 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_asg_det1';
1862 l_arch BOOLEAN;
1863
1864 --Below cursor fetches the asg extra details of the current assignment
1865 CURSOR csr_fetch_other_fields
1866 IS
1867 SELECT AEI_INFORMATION1 periods_worked,
1868 AEI_INFORMATION3 irr_payment ,
1869 AEI_INFORMATION4 "One-Off Payment",
1870 ASSIGNMENT_EXTRA_INFO_ID,
1871 object_version_number
1872 FROM PER_ASSIGNMENT_EXTRA_INFO
1873 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
1874 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
1875 AND assignment_id = p_person_rec.assignment_id;
1876
1877 --Below cursor fetches the starter details of the current assignment
1878 CURSOR csr_get_starter_details(p_asg_id NUMBER)
1879 IS
1880 SELECT assignment_extra_info_id,
1881 aei_information1 starter_decl,
1882 aei_information2 prev_emp_paye_ref,
1883 aei_information3 prev_tax_code,
1884 aei_information4 date_left_prev_employer,
1885 aei_information5 prev_tax_basis,
1886 aei_information6 last_payment_period_type,
1887 aei_information7 last_payment_period,
1888 aei_information8 starter_flag,
1889 aei_information10 continue_with_student_loan,
1890 aei_information8 not_paid_between,
1891 object_version_number object_version_number
1892 FROM per_assignment_extra_info
1893 WHERE assignment_id = p_asg_id
1894 AND information_type = 'GB_RTI_ASG_DETAILS';
1895
1896 --Below cursor fetches the pension details of the current assignment
1897 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
1898 IS
1899 SELECT assignment_extra_info_id,
1900 aei_information9 pensioner_flag,
1901 aei_information12 date_pension_started,
1902 trim(aei_information13) annual_pension,
1903 aei_information14 recently_bereaved,
1904 object_version_number object_version_number
1905 FROM per_assignment_extra_info
1906 WHERE assignment_id = p_asg_id
1907 AND information_type = 'GB_RTI_ASG_DETAILS';
1908
1909 --Below cursor fetches the expat details of the current assignment
1910 CURSOR csr_get_expat_details(p_asg_id NUMBER)
1911 IS
1912 SELECT assignment_extra_info_id,
1913 aei_information15 expat_statement,
1914 aei_information16 date_emp_start_uk,
1915 aei_information17 eea_cw_citizen,
1916 aei_information18 epm6_scheme,
1917 aei_information19 expat_flag,
1918 object_version_number object_version_number
1919 FROM per_assignment_extra_info
1920 WHERE assignment_id = p_asg_id
1921 AND information_type = 'GB_RTI_ASG_DETAILS';
1922
1923 --Below cursor fetches the assignment numbers of the current assignment
1924 CURSOR csr_get_asg_numbers
1925 IS
1926 SELECT paaf.assignment_number assignment_number,
1927 paaf_old.assignment_number old_assignment_number
1928 FROM per_all_assignments_f paaf,
1929 per_all_assignments_f paaf_old
1930 WHERE paaf.assignment_id = p_person_rec.assignment_id
1931 AND ((paaf_old.assignment_id = paaf.assignment_id
1932 AND paaf_old.effective_start_date < paaf.effective_start_date
1933 AND paaf.effective_start_date > g_start_year
1934 AND paaf_old.effective_end_date > g_start_year)
1935 OR (paaf.assignment_number = paaf_old.assignment_number));
1936
1937 --Below cursor fetches further payment details of the current assignment
1938 CURSOR csr_get_more_payment_details
1939 IS
1940 SELECT ptp.regular_payment_date,
1941 ptp.period_num,
1942 ptp.period_type
1943 FROM pay_payroll_actions ppa,
1944 pay_assignment_actions paa,
1945 per_time_periods ptp
1946 WHERE assignment_action_id = p_last_asg_action_id
1947 AND ppa.time_period_id = ptp.time_period_id
1948 AND ppa.payroll_id = ptp.payroll_id
1949 AND paa.payroll_action_id = ppa.payroll_action_id;
1950
1951 --Below cursor fetches further period type details of the current assignment
1952 CURSOR csr_period_type_info(p_period_type VARCHAR2)
1953 IS
1954 SELECT ptpt.number_per_fiscal_year
1955 FROM per_time_period_types ptpt
1956 WHERE p_period_type = ptpt.period_type;
1957
1958 --Below cursor fetches basic ni details of the current assignment
1959 CURSOR csr_ni_info(c_asg_id NUMBER, c_asg_eff_start_date DATE)
1960 IS
1961 SELECT peevf.screen_entry_value screen_value
1962 FROM
1963 pay_element_entries_f peef,
1964 pay_element_entry_values_f peevf
1965 WHERE peef.assignment_id = c_asg_id
1966 AND peef.element_entry_id = peevf.element_entry_id
1967 AND peevf.input_value_id = g_ni_pt_ivid
1968 AND peef.element_type_id = g_ni_pt_eid
1969 AND c_asg_eff_start_date between peef.effective_start_date and peef.effective_end_date
1970 AND c_asg_eff_start_date between peevf.effective_start_date and peevf.effective_end_date;
1971 /*
1972 AND peef.effective_start_date <= g_effective_date
1973 AND peef.effective_end_date >= c_asg_eff_start_date
1974 AND peevf.effective_start_date <= g_effective_date
1975 AND peevf.effective_end_date >= c_asg_eff_start_date;
1976 */
1977
1978 --Below cursor fetches further ni details of the current assignment
1979 CURSOR csr_cat_NI_Details
1980 IS
1981 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
1982 FROM pay_assignment_actions paa ,
1983 pay_run_results prr,
1984 pay_run_result_values prrv,
1985 pay_element_types_f petf ,
1986 pay_input_values_f pivf
1987 WHERE paa.source_action_id = p_last_asg_action_id
1988 AND paa.assignment_action_id = prr.assignment_action_id
1989 AND prr.element_type_id = petf.element_type_id
1990 AND petf.element_name = 'NI DETAILS'
1991 AND prr.run_result_id = prrv.run_result_id
1992 AND prrv.input_value_id = pivf.input_value_id
1993 AND p_start_date between petf.effective_start_date and petf.effective_end_date
1994 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
1995
1996 --Below cursor fetches further ni details of the current assignment
1997 CURSOR csr_cat_NI
1998 IS
1999 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
2000 FROM pay_assignment_actions paa ,
2001 pay_run_results prr,
2002 pay_run_result_values prrv,
2003 pay_element_types_f petf ,
2004 pay_input_values_f pivf
2005 WHERE paa.source_action_id = p_last_asg_action_id
2006 AND paa.assignment_action_id = prr.assignment_action_id
2007 AND prr.element_type_id = petf.element_type_id
2008 AND petf.element_name = 'NI'
2009 AND prr.run_result_id = prrv.run_result_id
2010 AND prrv.input_value_id = pivf.input_value_id
2011 AND p_start_date between petf.effective_start_date and petf.effective_end_date
2012 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
2013
2014 --Below cursor fetches asg details of the current assignment
2015 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
2016 IS
2017 SELECT trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
2018 trim(NVL(pap.per_information10,'N')) per_agg_flag,
2019 asg.assignment_number assignment_number
2020 FROM per_all_people_f pap,
2021 per_all_assignments_f asg,
2022 pay_assignment_actions paa
2023 WHERE paa.assignment_action_id = c_asg_act_id
2024 AND paa.assignment_id = asg.assignment_id
2025 AND pap.person_id = asg.person_id
2026 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
2027 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
2028 AND pap.per_information_category = 'GB';
2029 /*AND asg.EFFECTIVE_START_DATE =
2030 (SELECT MAX(EFFECTIVE_START_DATE)
2031 FROM per_all_assignments_f paaf
2032 WHERE paaf.assignment_id = asg.assignment_id
2033 );*/
2034
2035 --Below cursor fetches the period start and end dates of payrolls processed in the current prepayment
2036 CURSOR csr_all_payroll_actions(p_asgid NUMBER, p_pre_pay_id NUMBER, p_asg_start DATE, p_start_year DATE, p_end_year DATE)
2037 IS
2038 SELECT
2039 /*+ USE_NL(paa, pact, ptp) */
2040 MIN(ptp.start_date) payroll_period_start_date,
2041 MAX(ptp.end_date) payroll_period_end_date
2042 FROM pay_assignment_actions paa,
2043 pay_payroll_actions pact,
2044 per_time_periods ptp,
2045 pay_assignment_actions paa1, --Prepayments
2046 pay_payroll_actions ppa1, --Prepayments
2047 pay_action_interlocks pai --Prepayments
2048 WHERE paa.assignment_id = p_asgid
2049 AND paa.payroll_action_id = pact.payroll_action_id
2050 AND pact.time_period_id = ptp.time_period_id
2051 AND pact.action_type IN ('Q','R','B','I','V')
2052 AND paa.action_status IN ('C','S')
2053 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
2054 AND ppa1.payroll_action_id = p_pre_pay_id
2055 AND ppa1.action_type IN ('P','U')
2056 AND paa1.payroll_action_id = ppa1.payroll_action_id
2057 AND paa1.assignment_action_id = pai.locking_action_id
2058 AND paa.assignment_action_id = pai.locked_action_id;
2059
2060 -- Cursor to fetch Termination date
2061 cursor csr_terminated_date is
2062 select serv.actual_termination_date actual_termination_date
2063 from
2064 per_all_assignments_f asg,
2065 per_periods_of_service serv
2066 where asg.assignment_id = p_person_rec.assignment_id
2067 and asg.period_of_service_id = serv.period_of_service_id
2068 and p_end_date between asg.effective_start_date and asg.effective_end_date
2069 and actual_termination_date <= g_effective_date
2070 and actual_termination_date <= sysdate + 30 ;
2071
2072 --Below cursor fetches the termination date of the current assignment
2073 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
2074 IS
2075 SELECT min(paaf.effective_start_date) min_active_start_date
2076 FROM per_all_assignments_f paaf,
2077 per_assignment_status_types past
2078 WHERE paaf.assignment_id = p_asg_id
2079 AND paaf.assignment_status_type_id = past.assignment_status_type_id
2080 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN');
2081
2082 --Below cursor fetches the Last Pre-Payment id
2083 CURSOR csr_last_pre_pay_id (c_asg_id NUMBER)
2084 IS
2085 select ppa_prev.payroll_action_id
2086 from pay_payroll_actions ppa_prev,
2087 pay_payroll_actions ppa_current
2088 where ppa_prev.action_type IN ('P','U')
2089 and ppa_prev.payroll_id = ppa_current.payroll_id
2090 and ppa_prev.payroll_action_id < ppa_current.payroll_action_id
2091 and ppa_current.payroll_action_id = g_pre_pact_id
2092 and ppa_prev.payroll_action_id =
2093 (select max(ppa_max.payroll_action_id)
2094 from pay_payroll_actions ppa_max,
2095 pay_assignment_actions paa_max
2096 where ppa_max.payroll_id = ppa_current.payroll_id
2097 and ppa_max.payroll_action_id < ppa_current.payroll_action_id
2098 and ppa_max.action_type IN ('P','U')
2099 and ppa_max.payroll_action_id = paa_max.payroll_action_id
2100 and paa_max.assignment_id = c_asg_id );
2101
2102 --Below cursor fetches the Previous run FPS assignment_action_id
2103 CURSOR csr_last_fps_asg_act_id (c_last_pre_pay_id NUMBER, c_asg_id NUMBER)
2104 IS
2105 select paa_fps.assignment_action_id
2106 from pay_assignment_actions paa_prepay,
2107 pay_payroll_actions ppa_prepay,
2108 pay_assignment_actions paa_fps,
2109 pay_payroll_actions ppa_fps,
2110 pay_action_interlocks pai
2111 where ppa_prepay.payroll_action_id = c_last_pre_pay_id
2112 and ppa_prepay.payroll_action_id = paa_prepay.payroll_action_id
2113 and paa_prepay.assignment_action_id = pai.locked_action_id
2114 and paa_fps.assignment_action_id = pai.locking_action_id
2115 and paa_fps.payroll_action_id = ppa_fps.payroll_action_id
2116 and ppa_fps.action_type = 'X'
2117 and paa_fps.assignment_id = c_asg_id;
2118
2119 --Below cursor fetches the New Asg Number reported in Last FPS
2120 CURSOR csr_last_asg_num_submitted(c_last_fps_asg_act_id NUMBER, c_asg_id NUMBER)
2121 IS
2122 select ACTION_INFORMATION13
2123 from pay_action_information
2124 where action_context_id = c_last_fps_asg_act_id
2125 and action_information_category = 'GB_RTI_FPS_ASG_DET1'
2126 and assignment_id = c_asg_id;
2127
2128
2129 cursor csr_advance_pay_dates
2130 is
2131 select fnd_date.canonical_to_date(max(decode(pivf.name,'Start Date',peevf.screen_entry_value,null))) start_date,
2132 fnd_date.canonical_to_date(max(decode(pivf.name,'End Date',peevf.screen_entry_value,null))) end_date
2133 from pay_element_entries_f peef,
2134 pay_element_entry_values_f peevf ,
2135 pay_input_values_f pivf
2136 where
2137 peef.assignment_id = p_person_rec.assignment_id
2138 and peef.ELEMENT_TYPE_ID = g_adv_period_id
2139 and peef.element_entry_id = peevf.element_entry_id
2140 and peevf.input_value_id = pivf.input_value_id
2141 and pivf.element_type_id = peef.ELEMENT_TYPE_ID
2142 and g_effective_date between peevf.effective_start_date and peevf.effective_end_date
2143 and g_effective_date between pivf.effective_start_date and pivf.effective_end_date
2144 and g_effective_date between peef.effective_start_date and peef.effective_end_date;
2145
2146 -- Cursor to fetch Director details for the person
2147 cursor csr_director is
2148 select PER_INFORMATION2 from per_all_people_f papf
2149 where person_id = p_person_rec.person_id
2150 and effective_start_date =
2151 (select max(effective_start_date)
2152 from per_all_people_f where person_id = papf.person_id and effective_start_date <= g_effective_date);
2153
2154
2155 l_starter_rec csr_get_starter_details%rowtype;
2156 l_pensioner_rec csr_get_pensioner_details%rowtype;
2157 l_expat_rec csr_get_expat_details%rowtype;
2158 l_stay_over_6_months VARCHAR2(1);
2159 l_stay_less_6_months VARCHAR2(1);
2160 l_working_in_out_UK VARCHAR2(1);
2161 l_asg_number VARCHAR2(30);
2162 l_asg_number_old VARCHAR2(30);
2163 l_irr_payment_ind VARCHAR2(10);
2164 l_periods_covered VARCHAR2(10);
2165 l_one_off_pay VARCHAR2(10);
2166 l_payroll_id_changed_indicator VARCHAR2(1) := 'N';
2167 l_payment_date DATE;
2168 l_period_num NUMBER;
2169 l_period_type VARCHAR2(30);
2170 l_number_per_fiscal_yr NUMBER;
2171 l_payment_month_number NUMBER;
2172 l_payment_week_number NUMBER;
2173 l_ni_process_type VARCHAR2(10);
2174 l_dir_nic_calc_method VARCHAR2(30);
2175 l_dir_tax_week_num NUMBER;
2176 l_per_ni_agg_flag VARCHAR2(1);
2177 l_per_agg_flag VARCHAR2(1);
2178 l_aggr_earnings VARCHAR2(1);
2179 l_starter_decl VARCHAR2(30);
2180 l_continue_with_student_loan VARCHAR2(30);
2181 l_ovn NUMBER;
2182 l_starter_flag VARCHAR2(1);
2183 l_pensioner_flag VARCHAR2(1);
2184 l_expat_flag VARCHAR2(1);
2185 l_recently_bereaved VARCHAR2(30);
2186 l_annual_pension VARCHAR2(30);
2187 l_eea_cw_citizen VARCHAR2(30);
2188 l_epm6_scheme VARCHAR2(30);
2189 l_asg_eff_start_date DATE;
2190 l_frequency VARCHAR2(30);
2191 l_payroll_period_start_date DATE;
2192 l_payroll_period_end_date DATE;
2193 l_person_actual_term_date DATE;
2194 l_asg_effective_end_date DATE;
2195 l_payment_after_leaving VARCHAR2(1);
2196 l_date_of_leaving DATE;
2197 l_ovn_extra_info NUMBER;
2198 l_asg_info_id NUMBER;
2199 l_start_date DATE;
2200 l_end_date DATE;
2201 l_last_pre_pay_id NUMBER;
2202 l_last_fps_asg_act_id NUMBER;
2203 l_last_asg_num_submitted VARCHAR2(30);
2204 l_person_id number;
2205 l_min_active_start_date DATE;
2206 l_director VARCHAR2(1);
2207
2208 BEGIN
2209 hr_utility.set_location('Entering: '||l_proc,1);
2210 l_arch := true;
2211 p_starter_set := 'N';
2212 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
2213 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
2214 hr_utility.trace('Calling csr_get_starter_details');
2215 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
2216
2217 OPEN csr_get_starter_details(p_person_rec.assignment_id);
2218 FETCH csr_get_starter_details INTO l_starter_rec;
2219 CLOSE csr_get_starter_details;
2220
2221 l_starter_decl := NULL;
2222 l_continue_with_student_loan := NULL;
2223 l_starter_flag := l_starter_rec.starter_flag;
2224 g_reset_flag_type := NULL;
2225 hr_utility.trace('Calling csr_get_starter_details1');
2226 hr_utility.trace('l_starter_flag: '||l_starter_flag);
2227 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
2228 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
2229
2230 IF (l_starter_flag = 'N'
2231 AND (l_starter_rec.starter_decl IS NOT NULL
2232 OR NVL(l_starter_rec.continue_with_student_loan,'N') = 'Y')) THEN
2233 hr_utility.trace('Calling csr_get_starter_details2');
2234 l_starter_decl := l_starter_rec.starter_decl;
2235 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
2236 l_ovn := l_starter_rec.object_version_number;
2237 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2238 p_object_version_number => l_ovn,
2239 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
2240 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
2241 p_aei_information8 => 'Y');
2242 p_starter_set := 'Y';
2243 g_reset_flag_type := 'STARTER';
2244 hr_utility.trace('Calling csr_get_starter_details3');
2245 END IF;
2246 ---
2247 hr_utility.trace('Calling csr_get_pensioner_details');
2248
2249 OPEN csr_get_pensioner_details(p_person_rec.assignment_id);
2250 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
2251 CLOSE csr_get_pensioner_details;
2252
2253 l_recently_bereaved := NULL;
2254 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
2255 l_annual_pension := NULL;
2256 g_reset_flag_type := NULL;
2257
2258 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
2259 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
2260 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
2261 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
2262
2263 IF (l_pensioner_flag = 'N'
2264 AND (NVL(l_pensioner_rec.recently_bereaved,'N') = 'Y'
2265 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
2266 l_starter_decl := 'B';
2267 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
2268 if l_pensioner_rec.annual_pension is not null then
2269 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
2270 end if;
2271 l_ovn := l_pensioner_rec.object_version_number;
2272 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2273 p_object_version_number => l_ovn,
2274 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
2275 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
2276 p_aei_information9 => 'Y');
2277 g_reset_flag_type := 'PENSIONER';
2278 END IF;
2279 ---
2280 hr_utility.trace('Calling csr_get_expat_details');
2281
2282 OPEN csr_get_expat_details(p_person_rec.assignment_id);
2283 FETCH csr_get_expat_details INTO l_expat_rec;
2284 CLOSE csr_get_expat_details;
2285
2286 l_eea_cw_citizen := NULL;
2287 l_epm6_scheme := NULL;
2288 l_stay_over_6_months := NULL;
2289 l_stay_less_6_months := NULL;
2290 l_working_in_out_UK := NULL;
2291 l_expat_flag := l_expat_rec.expat_flag;
2292
2293 hr_utility.trace('Calling csr_get_expat_details1');
2294 hr_utility.trace('l_expat_flag: '||l_expat_flag);
2295 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
2296 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
2297 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
2298
2299 g_reset_flag_type := NULL;
2300
2301 IF (l_expat_flag = 'N'
2302 AND (NVL(l_expat_rec.eea_cw_citizen,'N') = 'Y'
2303 OR NVL(l_expat_rec.epm6_scheme,'N') = 'Y'
2304 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
2305 hr_utility.trace('Calling csr_get_expat_details2');
2306 IF l_expat_rec.expat_statement = 'A' THEN
2307 l_stay_over_6_months := 'Y';
2308 elsif l_expat_rec.expat_statement = 'B' THEN
2309 l_stay_less_6_months := 'Y';
2310 elsif l_expat_rec.expat_statement = 'C' THEN
2311 l_working_in_out_UK := 'Y';
2312 END IF;
2313
2314 hr_utility.trace('Calling csr_get_expat_details3');
2315 l_starter_decl := l_expat_rec.expat_statement;
2316 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
2317 l_epm6_scheme := l_expat_rec.epm6_scheme;
2318 l_ovn := l_expat_rec.object_version_number;
2319 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2320 p_object_version_number => l_ovn,
2321 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
2322 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
2323 p_aei_information19 => 'Y');
2324 g_reset_flag_type := 'EXPAT';
2325 END IF;
2326
2327 OPEN csr_get_term_asg_info (p_person_rec.assignment_id );
2328 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
2329 CLOSE csr_get_term_asg_info;
2330
2331 ---
2332 IF (l_starter_rec.starter_flag = 'N') THEN
2333 IF((l_starter_rec.starter_decl IS NOT NULL
2334 OR NVL(l_starter_rec.continue_with_student_loan,'N') = 'Y')
2335 AND l_starter_rec.starter_flag = 'N')
2336
2337 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
2338 OR l_pensioner_rec.annual_pension IS NOT NULL
2339 OR NVL(l_pensioner_rec.recently_bereaved,'N') = 'Y')
2340 AND l_pensioner_rec.pensioner_flag = 'N')
2341
2342 OR ((l_expat_rec.expat_statement IS NOT NULL
2343 OR l_expat_rec.date_emp_start_uk IS NOT NULL
2344 OR NVL(l_expat_rec.eea_cw_citizen,'N') = 'Y'
2345 OR NVL(l_expat_rec.epm6_scheme,'N') = 'Y')
2346 AND l_expat_rec.expat_flag = 'N') THEN
2347 -- l_asg_eff_start_date := p_start_date;
2348 if(l_min_active_start_date >= g_start_year) then
2349 l_asg_eff_start_date := l_min_active_start_date;
2350 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
2351 end if;
2352
2353 ELSE
2354 l_asg_eff_start_date := NULL;
2355 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
2356 END IF;
2357 END IF;
2358 ---
2359 OPEN csr_get_more_payment_details;
2360 FETCH csr_get_more_payment_details
2361 INTO l_payment_date,
2362 l_period_num,
2363 l_period_type;
2364 CLOSE csr_get_more_payment_details;
2365
2366 hr_utility.trace('l_payment_date :'||l_payment_date);
2367 hr_utility.trace('l_period_num :'||l_period_num);
2368 hr_utility.trace('l_period_type :'||l_period_type);
2369 g_date_paid:= l_payment_date;
2370
2371 ---
2372 if (l_period_type = 'Week') then
2373 l_frequency := 'W1';
2374 elsif (l_period_type = 'Bi-Month' or l_period_type = 'Bi-Week') then
2375 l_frequency := 'W2';
2376 elsif (l_period_type = 'Lunar Month') then
2377 l_frequency := 'W4';
2378 elsif (l_period_type = 'Calendar Month' or l_period_type = 'Semi-Month') then
2379 l_frequency := 'M1';
2380 elsif (l_period_type = 'Quarter') then
2381 l_frequency := 'M3';
2382 elsif (l_period_type = 'Semi-Year') then
2383 l_frequency := 'M6';
2384 elsif (l_period_type = 'Year') then
2385 l_frequency := 'MA';
2386 end if;
2387 ---
2388
2389 -- OPEN csr_asg(p_assactid, g_date_paid);
2390 OPEN csr_asg(p_last_asg_action_id, g_date_paid);
2391 FETCH csr_asg INTO l_per_ni_agg_flag, l_per_agg_flag, l_asg_number;
2392 CLOSE csr_asg;
2393
2394 hr_utility.trace('l_per_ni_agg_flag :'||l_per_ni_agg_flag);
2395 hr_utility.trace('l_per_agg_flag :'||l_per_agg_flag);
2396 hr_utility.trace('l_frequency :'||l_frequency);
2397
2398 IF l_per_ni_agg_flag = 'Y' OR l_per_agg_flag = 'Y' THEN
2399 l_aggr_earnings := 'Y';
2400 ELSE
2401 l_aggr_earnings:= 'N';
2402 END IF;
2403
2404 OPEN csr_period_type_info(l_period_type);
2405 FETCH csr_period_type_info INTO l_number_per_fiscal_yr;
2406 CLOSE csr_period_type_info;
2407
2408 hr_utility.trace('l_number_per_fiscal_yr :'||l_number_per_fiscal_yr);
2409 l_payment_month_number := NULL;
2410 l_payment_week_number := NULL;
2411
2412 IF l_number_per_fiscal_yr IN (1,2,4,6,12,24) THEN
2413 l_payment_month_number := l_period_num;
2414 ELSE
2415 l_payment_week_number := l_period_num;
2416 END IF;
2417
2418 hr_utility.trace('l_payment_month_number :'||l_payment_month_number);
2419 hr_utility.trace('l_payment_week_number :'||l_payment_week_number);
2420 ---
2421 --New Asg Number and Old Asg Number logic starts below
2422 hr_utility.trace('p_person_rec.assignment_id :'||p_person_rec.assignment_id);
2423
2424 OPEN csr_last_pre_pay_id(p_person_rec.assignment_id);
2425 FETCH csr_last_pre_pay_id INTO l_last_pre_pay_id;
2426 CLOSE csr_last_pre_pay_id;
2427 hr_utility.trace('l_last_pre_pay_id :'||l_last_pre_pay_id);
2428
2429 OPEN csr_last_fps_asg_act_id(l_last_pre_pay_id, p_person_rec.assignment_id);
2430 FETCH csr_last_fps_asg_act_id INTO l_last_fps_asg_act_id;
2431 CLOSE csr_last_fps_asg_act_id;
2432 hr_utility.trace('l_last_fps_asg_act_id :'||l_last_fps_asg_act_id);
2433
2434 OPEN csr_last_asg_num_submitted(l_last_fps_asg_act_id, p_person_rec.assignment_id);
2435 FETCH csr_last_asg_num_submitted INTO l_last_asg_num_submitted;
2436 CLOSE csr_last_asg_num_submitted;
2437 hr_utility.trace('l_last_asg_num_submitted :'||l_last_asg_num_submitted);
2438 hr_utility.trace('l_asg_number :'||l_asg_number);
2439
2440 if (l_asg_number <> l_last_asg_num_submitted)
2441 then
2442 hr_utility.trace('Inside if asg number is changed');
2443 l_asg_number_old := l_last_asg_num_submitted;
2444 l_payroll_id_changed_indicator := 'Y';
2445 else
2446 hr_utility.trace('Inside else asg number is not changed');
2447 l_asg_number_old := NULL;
2448 l_payroll_id_changed_indicator := NULL;
2449 end if;
2450 --New Asg Number and Old Asg Number logic ends below
2451 ---
2452 OPEN csr_ni_info(p_person_rec.assignment_id, p_start_date);
2453 FETCH csr_ni_info INTO l_ni_process_type;
2454 CLOSE csr_ni_info;
2455
2456 hr_utility.trace('l_ni_process_type: '||l_ni_process_type);
2457
2458 IF (l_ni_process_type = 'DY') THEN --Director
2459 l_dir_nic_calc_method := 'AN';
2460 elsif ((l_ni_process_type = 'DN') --Director Normal
2461 OR (l_ni_process_type = 'DP') --Director Pro Rate
2462 OR (l_ni_process_type = 'DR') --Director Pro Rate Normal
2463 OR (l_ni_process_type = 'PY')) THEN --Pensioner Director
2464 l_dir_nic_calc_method := 'AL';
2465 END IF;
2466 ---
2467 open csr_director;
2468 fetch csr_director into l_director;
2469 close csr_director;
2470
2471 if l_director = 'Y' then
2472 OPEN csr_cat_NI_Details;
2473 FETCH csr_cat_NI_Details INTO l_dir_tax_week_num;
2474 CLOSE csr_cat_NI_Details;
2475
2476 IF l_dir_tax_week_num IS NULL THEN
2477 OPEN csr_cat_NI;
2478 FETCH csr_cat_NI INTO l_dir_tax_week_num;
2479 CLOSE csr_cat_NI;
2480 END IF;
2481
2482 end if;
2483
2484 -- Get the Irregular payment indicator, periods covered and one-off payment.
2485 OPEN csr_fetch_other_fields;
2486 FETCH csr_fetch_other_fields
2487 INTO l_periods_covered,
2488 l_irr_payment_ind,
2489 l_one_off_pay,
2490 l_asg_info_id,
2491 l_ovn_extra_info;
2492 CLOSE csr_fetch_other_fields;
2493
2494 hr_utility.trace('l_periods_covered '||l_periods_covered);
2495 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
2496 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
2497
2498 hr_utility.trace('l_asg_info_id '||l_asg_info_id);
2499 hr_utility.trace('l_ovn_extra_info '||l_ovn_extra_info);
2500
2501 if l_periods_covered is null then
2502 l_periods_covered := get_periods_covered(p_person_rec.assignment_id);
2503 end if;
2504
2505 if l_irr_payment_ind is null then
2506 l_irr_payment_ind := get_irregular_payment(p_person_rec.assignment_id);
2507 end if;
2508
2509 if l_one_off_pay is null then
2510 l_one_off_pay := get_oneoff_payment(p_person_rec.assignment_id);
2511 end if;
2512
2513
2514 hr_utility.trace('l_periods_covered '||l_periods_covered);
2515 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
2516 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
2517
2518 open csr_advance_pay_dates;
2519 fetch csr_advance_pay_dates into l_start_date, l_end_date;
2520 close csr_advance_pay_dates;
2521 hr_utility.trace('l_start_date : ' || l_start_date);
2522 hr_utility.trace('l_end_date : ' || l_end_date);
2523
2524 if l_start_date is not null and l_end_date is not null then
2525 hr_utility.trace('test3');
2526 select
2527 pay_advance_pay_pkg.advanced_periods(
2528 p_person_rec.assignment_id,
2529 l_start_date,
2530 l_end_date
2531 ) into l_periods_covered from dual;
2532 hr_utility.trace('test4');
2533 -- reset the periods covered value to 1
2534 elsif l_periods_covered IS NOT NULL AND l_periods_covered <> 1 THEN
2535 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2536 p_object_version_number => l_ovn_extra_info,
2537 p_assignment_extra_info_id => l_asg_info_id,
2538 p_aei_information_category => 'GB_PAY_RTI',
2539 p_aei_information1 => 1);
2540 else
2541 l_periods_covered := 1;
2542 end if;
2543 hr_utility.trace('l_periods_covered : ' || l_periods_covered);
2544 hr_utility.trace('l_dir_tax_week_num : '|| l_dir_tax_week_num);
2545 ---
2546
2547 IF (l_irr_payment_ind = 'Y') THEN
2548 l_frequency := 'IR';
2549 elsif (l_one_off_pay = 'Y') THEN
2550 l_frequency := 'IO';
2551 END IF;
2552
2553 OPEN csr_all_payroll_actions(p_person_rec.assignment_id, g_pre_pact_id, p_start_date, g_start_year,g_end_year);
2554 FETCH csr_all_payroll_actions
2555 INTO l_payroll_period_start_date,
2556 l_payroll_period_end_date;
2557 CLOSE csr_all_payroll_actions;
2558
2559 open csr_terminated_date;
2560 fetch csr_terminated_date into l_person_actual_term_date;
2561 close csr_terminated_date;
2562 ---
2563 hr_utility.trace('p_end_date : '|| p_end_date);
2564 hr_utility.trace('l_person_actual_term_date : '|| l_person_actual_term_date);
2565
2566 IF p_fps = 'Y' and l_person_actual_term_date is not null THEN
2567 IF l_person_actual_term_date >= l_payroll_period_start_date and l_person_actual_term_date <= l_payroll_period_end_date THEN
2568 l_payment_after_leaving := 'N';
2569 ELSE
2570 l_payment_after_leaving := 'Y';
2571 END IF;
2572 ELSE
2573 l_payment_after_leaving := 'N';
2574 END IF;
2575
2576 l_date_of_leaving := l_person_actual_term_date;
2577
2578
2579 -- If Date of Leaving is less then Start of the Tax Year - 6
2580 -- Updating it to Payment Date as Validation rule will fail
2581 if l_date_of_leaving is not null and l_date_of_leaving < (add_months(g_start_year,-72)+1) then
2582 l_date_of_leaving := l_payment_date;
2583 end if;
2584
2585
2586 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
2587 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
2588 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
2589 ---
2590 hr_utility.trace('Assigning values to p_fps_rec1');
2591
2592 p_fps_rec1.assignment_id := p_person_rec.assignment_id;
2593 p_fps_rec1.action_info_category := 'GB_RTI_FPS_ASG_DET1';
2594 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
2595 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
2596 p_fps_rec1.act_info3 := to_char(l_payment_date,'YYYY-MM-DD');
2597 p_fps_rec1.act_info4 := l_starter_decl;
2598 p_fps_rec1.act_info5 := l_continue_with_student_loan;
2599 p_fps_rec1.act_info6 := l_stay_over_6_months;
2600 p_fps_rec1.act_info7 := l_stay_less_6_months;
2601 p_fps_rec1.act_info8 := l_working_in_out_UK;
2602 p_fps_rec1.act_info9 := l_eea_cw_citizen;
2603 p_fps_rec1.act_info10 := l_epm6_scheme;
2604 p_fps_rec1.act_info11 := NULL; -- Recently Bereaved spouse / Civil Partner (State Pension) Not applicable
2605 p_fps_rec1.act_info12 := l_recently_bereaved;
2606 p_fps_rec1.act_info13 := l_asg_number;
2607 p_fps_rec1.act_info14 := l_payroll_id_changed_indicator;
2608 p_fps_rec1.act_info15 := l_asg_number_old;
2609 p_fps_rec1.act_info16 := l_irr_payment_ind;
2610 p_fps_rec1.act_info17 := l_frequency;
2611 p_fps_rec1.act_info18 := l_payment_week_number;
2612 p_fps_rec1.act_info19 := l_payment_month_number;
2613 p_fps_rec1.act_info20 := l_periods_covered;
2614 p_fps_rec1.act_info21 := l_aggr_earnings;
2615 p_fps_rec1.act_info22 := l_payment_after_leaving;
2616 p_fps_rec1.act_info23 := get_hours_worked(p_person_rec.assignment_id);
2617 p_fps_rec1.act_info24 := l_dir_nic_calc_method;
2618 p_fps_rec1.act_info25 := l_dir_tax_week_num;
2619 p_fps_rec1.act_info26 := l_annual_pension;
2620 p_fps_rec1.act_info27 := NULL; -- State Pension Not applicable
2621
2622 hr_utility.set_location('Leaving: '||l_proc,999);
2623 RETURN l_arch;
2624
2625 EXCEPTION
2626 WHEN OTHERS THEN
2627 hr_utility.set_location('Error in function fetch_fps_asg_det1 ', 15);
2628 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
2629 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
2630 RAISE;
2631 END fetch_fps_asg_det1;
2632 --
2633
2634 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET1)
2635 -- When there are no payments for the assignment this function will be called for Ni only Agg asgs
2636 FUNCTION fetch_fps_nopay_asg_det1(
2637 p_start_date IN DATE,
2638 p_end_date IN DATE,
2639 p_assactid IN NUMBER,
2640 p_last_asg_action_id IN NUMBER,
2641 p_fps IN varchar2,
2642 p_person_rec IN act_info_rec,
2643 p_fps_rec1 OUT nocopy act_info_rec,
2644 p_starter_set out nocopy varchar2)
2645 RETURN BOOLEAN
2646 IS
2647 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_asg_det1';
2648 l_arch BOOLEAN;
2649
2650 --Below cursor fetches the asg extra details of the current assignment
2651 CURSOR csr_fetch_other_fields
2652 IS
2653 SELECT AEI_INFORMATION1 periods_worked,
2654 AEI_INFORMATION3 irr_payment ,
2655 AEI_INFORMATION4 "One-Off Payment",
2656 ASSIGNMENT_EXTRA_INFO_ID,
2657 object_version_number
2658 FROM PER_ASSIGNMENT_EXTRA_INFO
2659 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
2660 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
2661 AND assignment_id = p_person_rec.assignment_id;
2662
2663 --Below cursor fetches the starter details of the current assignment
2664 CURSOR csr_get_starter_details(p_asg_id NUMBER)
2665 IS
2666 SELECT assignment_extra_info_id,
2667 aei_information1 starter_decl,
2668 aei_information2 prev_emp_paye_ref,
2669 aei_information3 prev_tax_code,
2670 aei_information4 date_left_prev_employer,
2671 aei_information5 prev_tax_basis,
2672 aei_information6 last_payment_period_type,
2673 aei_information7 last_payment_period,
2674 aei_information8 starter_flag,
2675 aei_information10 continue_with_student_loan,
2676 aei_information8 not_paid_between,
2677 object_version_number object_version_number
2678 FROM per_assignment_extra_info
2679 WHERE assignment_id = p_asg_id
2680 AND information_type = 'GB_RTI_ASG_DETAILS';
2681
2682 --Below cursor fetches the pension details of the current assignment
2683 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
2684 IS
2685 SELECT assignment_extra_info_id,
2686 aei_information9 pensioner_flag,
2687 aei_information12 date_pension_started,
2688 trim(aei_information13) annual_pension,
2689 aei_information14 recently_bereaved,
2690 object_version_number object_version_number
2691 FROM per_assignment_extra_info
2692 WHERE assignment_id = p_asg_id
2693 AND information_type = 'GB_RTI_ASG_DETAILS';
2694
2695 --Below cursor fetches the expat details of the current assignment
2696 CURSOR csr_get_expat_details(p_asg_id NUMBER)
2697 IS
2698 SELECT assignment_extra_info_id,
2699 aei_information15 expat_statement,
2700 aei_information16 date_emp_start_uk,
2701 aei_information17 eea_cw_citizen,
2702 aei_information18 epm6_scheme,
2703 aei_information19 expat_flag,
2704 object_version_number object_version_number
2705 FROM per_assignment_extra_info
2706 WHERE assignment_id = p_asg_id
2707 AND information_type = 'GB_RTI_ASG_DETAILS';
2708
2709 --Below cursor fetches the assignment numbers of the current assignment
2710 CURSOR csr_get_asg_numbers
2711 IS
2712 SELECT paaf.assignment_number assignment_number,
2713 paaf_old.assignment_number old_assignment_number
2714 FROM per_all_assignments_f paaf,
2715 per_all_assignments_f paaf_old
2716 WHERE paaf.assignment_id = p_person_rec.assignment_id
2717 AND ((paaf_old.assignment_id = paaf.assignment_id
2718 AND paaf_old.effective_start_date < paaf.effective_start_date
2719 AND paaf.effective_start_date > g_start_year
2720 AND paaf_old.effective_end_date > g_start_year)
2721 OR (paaf.assignment_number = paaf_old.assignment_number));
2722
2723 --Below cursor fetches further payment details of the current assignment
2724 CURSOR csr_get_more_payment_details(l_last_asg_action_id number)
2725 IS
2726 SELECT ptp.regular_payment_date,
2727 ptp.period_num,
2728 ptp.period_type
2729 FROM pay_payroll_actions ppa,
2730 pay_assignment_actions paa,
2731 per_time_periods ptp
2732 WHERE assignment_action_id = l_last_asg_action_id
2733 AND ppa.time_period_id = ptp.time_period_id
2734 AND ppa.payroll_id = ptp.payroll_id
2735 AND paa.payroll_action_id = ppa.payroll_action_id;
2736
2737 --Below cursor fetches further period type details of the current assignment
2738 CURSOR csr_period_type_info(p_period_type VARCHAR2)
2739 IS
2740 SELECT ptpt.number_per_fiscal_year
2741 FROM per_time_period_types ptpt
2742 WHERE p_period_type = ptpt.period_type;
2743
2744 --Below cursor fetches basic ni details of the current assignment
2745 CURSOR csr_ni_info(c_asg_id NUMBER, c_asg_eff_start_date DATE)
2746 IS
2747 SELECT peevf.screen_entry_value screen_value
2748 FROM
2749 pay_element_entries_f peef,
2750 pay_element_entry_values_f peevf
2751 WHERE peef.assignment_id = c_asg_id
2752 AND peef.element_entry_id = peevf.element_entry_id
2753 AND peevf.input_value_id = g_ni_pt_ivid
2754 AND peef.element_type_id = g_ni_pt_eid
2755 AND c_asg_eff_start_date between peef.effective_start_date and peef.effective_end_date
2756 AND c_asg_eff_start_date between peevf.effective_start_date and peevf.effective_end_date;
2757
2758
2759 --Below cursor fetches further ni details of the current assignment
2760 CURSOR csr_cat_NI_Details
2761 IS
2762 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
2763 FROM pay_assignment_actions paa ,
2764 pay_run_results prr,
2765 pay_run_result_values prrv,
2766 pay_element_types_f petf ,
2767 pay_input_values_f pivf
2768 WHERE paa.source_action_id = p_last_asg_action_id
2769 AND paa.assignment_action_id = prr.assignment_action_id
2770 AND prr.element_type_id = petf.element_type_id
2771 AND petf.element_name = 'NI DETAILS'
2772 AND prr.run_result_id = prrv.run_result_id
2773 AND prrv.input_value_id = pivf.input_value_id
2774 AND p_start_date between petf.effective_start_date and petf.effective_end_date
2775 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
2776
2777 --Below cursor fetches further ni details of the current assignment
2778 CURSOR csr_cat_NI
2779 IS
2780 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
2781 FROM pay_assignment_actions paa ,
2782 pay_run_results prr,
2783 pay_run_result_values prrv,
2784 pay_element_types_f petf ,
2785 pay_input_values_f pivf
2786 WHERE paa.source_action_id = p_last_asg_action_id
2787 AND paa.assignment_action_id = prr.assignment_action_id
2788 AND prr.element_type_id = petf.element_type_id
2789 AND petf.element_name = 'NI'
2790 AND prr.run_result_id = prrv.run_result_id
2791 AND prrv.input_value_id = pivf.input_value_id
2792 AND p_start_date between petf.effective_start_date and petf.effective_end_date
2793 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
2794
2795
2796 --Below cursor fetches asg details of the current assignment
2797 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
2798 IS
2799 SELECT trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
2800 trim(NVL(pap.per_information10,'N')) per_agg_flag,
2801 asg.assignment_number assignment_number
2802 FROM per_all_people_f pap,
2803 per_all_assignments_f asg
2804 WHERE asg.assignment_id = c_asg_act_id
2805 AND pap.person_id = asg.person_id
2806 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
2807 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
2808 AND pap.per_information_category = 'GB';
2809
2810
2811 --Below cursor fetches the period start and end dates of payrolls processed in the current prepayment
2812 CURSOR csr_all_payroll_actions(p_asgid NUMBER, p_pre_pay_id NUMBER, p_asg_start DATE, p_start_year DATE, p_end_year DATE)
2813 IS
2814 SELECT
2815 /*+ USE_NL(paa, pact, ptp) */
2816 MIN(ptp.start_date) payroll_period_start_date,
2817 MAX(ptp.end_date) payroll_period_end_date
2818 FROM pay_assignment_actions paa,
2819 pay_payroll_actions pact,
2820 per_time_periods ptp,
2821 pay_assignment_actions paa1, --Prepayments
2822 pay_payroll_actions ppa1, --Prepayments
2823 pay_action_interlocks pai --Prepayments
2824 WHERE paa.assignment_id = p_asgid
2825 AND paa.payroll_action_id = pact.payroll_action_id
2826 AND pact.time_period_id = ptp.time_period_id
2827 AND pact.action_type IN ('Q','R','B','I','V')
2828 AND paa.action_status IN ('C','S')
2829 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
2830 AND ppa1.payroll_action_id = p_pre_pay_id
2831 AND ppa1.action_type IN ('P','U')
2832 AND paa1.payroll_action_id = ppa1.payroll_action_id
2833 AND paa1.assignment_action_id = pai.locking_action_id
2834 AND paa.assignment_action_id = pai.locked_action_id;
2835
2836 -- Cursor to fetch Termination date
2837 cursor csr_terminated_date is
2838 select serv.actual_termination_date actual_termination_date
2839 from
2840 per_all_assignments_f asg,
2841 per_periods_of_service serv
2842 where asg.assignment_id = p_person_rec.assignment_id
2843 and asg.period_of_service_id = serv.period_of_service_id
2844 and p_end_date between asg.effective_start_date and asg.effective_end_date
2845 and actual_termination_date <= g_effective_date
2846 and actual_termination_date <= sysdate + 30 ;
2847
2848 --Below cursor fetches the termination date of the current assignment
2849 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
2850 IS
2851 SELECT min(paaf.effective_start_date) min_active_start_date
2852 FROM per_all_assignments_f paaf,
2853 per_assignment_status_types past
2854 WHERE paaf.assignment_id = p_asg_id
2855 AND paaf.assignment_status_type_id = past.assignment_status_type_id
2856 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN');
2857
2858 --Below cursor fetches the Last Pre-Payment id
2859 CURSOR csr_last_pre_pay_id (c_asg_id NUMBER)
2860 IS
2861 select ppa_prev.payroll_action_id
2862 from pay_payroll_actions ppa_prev,
2863 pay_payroll_actions ppa_current
2864 where ppa_prev.action_type IN ('P','U')
2865 and ppa_prev.payroll_id = ppa_current.payroll_id
2866 and ppa_prev.payroll_action_id < ppa_current.payroll_action_id
2867 and ppa_current.payroll_action_id = g_pre_pact_id
2868 and ppa_prev.payroll_action_id =
2869 (select max(ppa_max.payroll_action_id)
2870 from pay_payroll_actions ppa_max,
2871 pay_assignment_actions paa_max
2872 where ppa_max.payroll_id = ppa_current.payroll_id
2873 and ppa_max.payroll_action_id < ppa_current.payroll_action_id
2874 and ppa_max.action_type IN ('P','U')
2875 and ppa_max.payroll_action_id = paa_max.payroll_action_id
2876 and paa_max.assignment_id = c_asg_id );
2877
2878 --Below cursor fetches the Previous run FPS assignment_action_id
2879 CURSOR csr_last_fps_asg_act_id (c_last_pre_pay_id NUMBER, c_asg_id NUMBER)
2880 IS
2881 select paa_fps.assignment_action_id
2882 from pay_assignment_actions paa_prepay,
2883 pay_payroll_actions ppa_prepay,
2884 pay_assignment_actions paa_fps,
2885 pay_payroll_actions ppa_fps,
2886 pay_action_interlocks pai
2887 where ppa_prepay.payroll_action_id = c_last_pre_pay_id
2888 and ppa_prepay.payroll_action_id = paa_prepay.payroll_action_id
2889 and paa_prepay.assignment_action_id = pai.locked_action_id
2890 and paa_fps.assignment_action_id = pai.locking_action_id
2891 and paa_fps.payroll_action_id = ppa_fps.payroll_action_id
2892 and ppa_fps.action_type = 'X'
2893 and paa_fps.assignment_id = c_asg_id;
2894
2895 --Below cursor fetches the New Asg Number reported in Last FPS
2896 CURSOR csr_last_asg_num_submitted(c_last_fps_asg_act_id NUMBER, c_asg_id NUMBER)
2897 IS
2898 select ACTION_INFORMATION13
2899 from pay_action_information
2900 where action_context_id = c_last_fps_asg_act_id
2901 and action_information_category = 'GB_RTI_FPS_ASG_DET1'
2902 and assignment_id = c_asg_id;
2903
2904
2905 cursor csr_advance_pay_dates
2906 is
2907 select fnd_date.canonical_to_date(max(decode(pivf.name,'Start Date',peevf.screen_entry_value,null))) start_date,
2908 fnd_date.canonical_to_date(max(decode(pivf.name,'End Date',peevf.screen_entry_value,null))) end_date
2909 from pay_element_entries_f peef,
2910 pay_element_entry_values_f peevf ,
2911 pay_input_values_f pivf
2912 where
2913 peef.assignment_id = p_person_rec.assignment_id
2914 and peef.ELEMENT_TYPE_ID = g_adv_period_id
2915 and peef.element_entry_id = peevf.element_entry_id
2916 and peevf.input_value_id = pivf.input_value_id
2917 and pivf.element_type_id = peef.ELEMENT_TYPE_ID
2918 and g_effective_date between peevf.effective_start_date and peevf.effective_end_date
2919 and g_effective_date between pivf.effective_start_date and pivf.effective_end_date
2920 and g_effective_date between peef.effective_start_date and peef.effective_end_date;
2921
2922 cursor csr_asg_act_id is
2923 SELECT
2924 /*+ USE_NL(paa, pact, ptp) */
2925 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
2926 || paa.assignment_action_id),16)) max_asg_act_id,
2927 MAX(pact.effective_date) effective_date
2928 FROM per_all_assignments_f paaf,
2929 pay_assignment_actions paa,
2930 pay_payroll_actions pact,
2931 per_time_periods ptp,
2932 pay_assignment_actions paa1, --Prepayments
2933 pay_payroll_actions ppa1, --Prepayments
2934 pay_action_interlocks pai --Prepayments
2935 WHERE paaf.person_id = p_person_rec.person_id--59437
2936 AND sysdate between paaf.effective_start_date and paaf.effective_end_date
2937 AND paa.assignment_id = paaf.assignment_id
2938 AND paa.payroll_action_id = pact.payroll_action_id
2939 AND pact.time_period_id = ptp.time_period_id
2940 AND pact.action_type IN ('Q','R','I','V','B')
2941 AND paa.action_status IN ('C','S')
2942 AND ptp.regular_payment_date BETWEEN g_start_year AND g_end_year--p_start_year AND p_end_year
2943 AND ppa1.payroll_action_id = g_pre_pact_id --1160712
2944 AND ppa1.action_type IN ('P','U')
2945 AND paa1.payroll_action_id = ppa1.payroll_action_id
2946 AND paa1.assignment_action_id = pai.locking_action_id
2947 AND paa.assignment_action_id = pai.locked_action_id;
2948
2949
2950 l_starter_rec csr_get_starter_details%rowtype;
2951 l_pensioner_rec csr_get_pensioner_details%rowtype;
2952 l_expat_rec csr_get_expat_details%rowtype;
2953 l_stay_over_6_months VARCHAR2(1);
2954 l_stay_less_6_months VARCHAR2(1);
2955 l_working_in_out_UK VARCHAR2(1);
2956 l_asg_number VARCHAR2(30);
2957 l_asg_number_old VARCHAR2(30);
2958 l_irr_payment_ind VARCHAR2(10);
2959 l_periods_covered VARCHAR2(10);
2960 l_one_off_pay VARCHAR2(10);
2961 l_payroll_id_changed_indicator VARCHAR2(1) := 'N';
2962 l_payment_date DATE;
2963 l_period_num NUMBER;
2964 l_period_type VARCHAR2(30);
2965 l_number_per_fiscal_yr NUMBER;
2966 l_payment_month_number NUMBER;
2967 l_payment_week_number NUMBER;
2968 l_ni_process_type VARCHAR2(10);
2969 l_dir_nic_calc_method VARCHAR2(30);
2970 l_dir_tax_week_num NUMBER;
2971 l_per_ni_agg_flag VARCHAR2(1);
2972 l_per_agg_flag VARCHAR2(1);
2973 l_aggr_earnings VARCHAR2(1);
2974 l_starter_decl VARCHAR2(30);
2975 l_continue_with_student_loan VARCHAR2(30);
2976 l_ovn NUMBER;
2977 l_starter_flag VARCHAR2(1);
2978 l_pensioner_flag VARCHAR2(1);
2979 l_expat_flag VARCHAR2(1);
2980 l_recently_bereaved VARCHAR2(30);
2981 l_annual_pension VARCHAR2(30);
2982 l_eea_cw_citizen VARCHAR2(30);
2983 l_epm6_scheme VARCHAR2(30);
2984 l_asg_eff_start_date DATE;
2985 l_frequency VARCHAR2(30);
2986 l_payroll_period_start_date DATE;
2987 l_payroll_period_end_date DATE;
2988 l_person_actual_term_date DATE;
2989 l_asg_effective_end_date DATE;
2990 l_payment_after_leaving VARCHAR2(1);
2991 l_date_of_leaving DATE;
2992 l_ovn_extra_info NUMBER;
2993 l_asg_info_id NUMBER;
2994 l_start_date DATE;
2995 l_end_date DATE;
2996 l_last_pre_pay_id NUMBER;
2997 l_last_fps_asg_act_id NUMBER;
2998 l_last_asg_num_submitted VARCHAR2(30);
2999 l_person_id number;
3000 l_min_active_start_date DATE;
3001 l_last_asg_action_id NUMBER;
3002 l_last_effective_date DATE;
3003
3004 BEGIN
3005 hr_utility.set_location('Entering: '||l_proc,1);
3006 l_arch := true;
3007 p_starter_set := 'N';
3008 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
3009 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
3010 hr_utility.trace('Calling csr_get_starter_details');
3011 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
3012
3013 OPEN csr_get_starter_details(p_person_rec.assignment_id);
3014 FETCH csr_get_starter_details INTO l_starter_rec;
3015 CLOSE csr_get_starter_details;
3016
3017 l_starter_decl := NULL;
3018 l_continue_with_student_loan := NULL;
3019 l_starter_flag := l_starter_rec.starter_flag;
3020 g_reset_flag_type := NULL;
3021 hr_utility.trace('Calling csr_get_starter_details1');
3022 hr_utility.trace('l_starter_flag: '||l_starter_flag);
3023 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
3024 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
3025
3026 IF (l_starter_flag = 'N'
3027 AND (l_starter_rec.starter_decl IS NOT NULL
3028 OR l_starter_rec.continue_with_student_loan IS NOT NULL )) THEN
3029 hr_utility.trace('Calling csr_get_starter_details2');
3030 l_starter_decl := l_starter_rec.starter_decl;
3031 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
3032 l_ovn := l_starter_rec.object_version_number;
3033 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3034 p_object_version_number => l_ovn,
3035 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
3036 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3037 p_aei_information8 => 'Y');
3038 p_starter_set := 'Y';
3039 g_reset_flag_type := 'STARTER';
3040 hr_utility.trace('Calling csr_get_starter_details3');
3041 END IF;
3042 ---
3043 hr_utility.trace('Calling csr_get_pensioner_details');
3044
3045 OPEN csr_get_pensioner_details(p_person_rec.assignment_id);
3046 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
3047 CLOSE csr_get_pensioner_details;
3048
3049 l_recently_bereaved := NULL;
3050 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
3051 l_annual_pension := NULL;
3052 g_reset_flag_type := NULL;
3053
3054 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
3055 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
3056 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
3057 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
3058
3059 IF (l_pensioner_flag = 'N'
3060 AND (l_pensioner_rec.recently_bereaved IS NOT NULL
3061 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
3062 l_starter_decl := 'B';
3063 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
3064 if l_pensioner_rec.annual_pension is not null then
3065 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
3066 end if;
3067 l_ovn := l_pensioner_rec.object_version_number;
3068 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3069 p_object_version_number => l_ovn,
3070 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
3071 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3072 p_aei_information9 => 'Y');
3073 g_reset_flag_type := 'PENSIONER';
3074 END IF;
3075 ---
3076 hr_utility.trace('Calling csr_get_expat_details');
3077
3078 OPEN csr_get_expat_details(p_person_rec.assignment_id);
3079 FETCH csr_get_expat_details INTO l_expat_rec;
3080 CLOSE csr_get_expat_details;
3081
3082 l_eea_cw_citizen := NULL;
3083 l_epm6_scheme := NULL;
3084 l_stay_over_6_months := NULL;
3085 l_stay_less_6_months := NULL;
3086 l_working_in_out_UK := NULL;
3087 l_expat_flag := l_expat_rec.expat_flag;
3088
3089 hr_utility.trace('Calling csr_get_expat_details1');
3090 hr_utility.trace('l_expat_flag: '||l_expat_flag);
3091 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
3092 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
3093 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
3094
3095 g_reset_flag_type := NULL;
3096
3097 IF (l_expat_flag = 'N'
3098 AND (l_expat_rec.eea_cw_citizen IS NOT NULL
3099 OR l_expat_rec.epm6_scheme IS NOT NULL
3100 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
3101 hr_utility.trace('Calling csr_get_expat_details2');
3102 IF l_expat_rec.expat_statement = 'A' THEN
3103 l_stay_over_6_months := 'Y';
3104 elsif l_expat_rec.expat_statement = 'B' THEN
3105 l_stay_less_6_months := 'Y';
3106 elsif l_expat_rec.expat_statement = 'C' THEN
3107 l_working_in_out_UK := 'Y';
3108 END IF;
3109
3110 hr_utility.trace('Calling csr_get_expat_details3');
3111 l_starter_decl := l_expat_rec.expat_statement;
3112 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
3113 l_epm6_scheme := l_expat_rec.epm6_scheme;
3114 l_ovn := l_expat_rec.object_version_number;
3115 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3116 p_object_version_number => l_ovn,
3117 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
3118 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3119 p_aei_information19 => 'Y');
3120 g_reset_flag_type := 'EXPAT';
3121 END IF;
3122
3123 OPEN csr_get_term_asg_info (p_person_rec.assignment_id );
3124 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
3125 CLOSE csr_get_term_asg_info;
3126
3127 ---
3128 IF (l_starter_rec.starter_flag = 'N') THEN
3129 IF((l_starter_rec.starter_decl IS NOT NULL
3130 OR l_starter_rec.continue_with_student_loan IS NOT NULL)
3131 AND l_starter_rec.starter_flag = 'N')
3132
3133 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
3134 OR l_pensioner_rec.annual_pension IS NOT NULL
3135 OR l_pensioner_rec.recently_bereaved IS NOT NULL)
3136 AND l_pensioner_rec.pensioner_flag = 'N')
3137
3138 OR ((l_expat_rec.expat_statement IS NOT NULL
3139 OR l_expat_rec.date_emp_start_uk IS NOT NULL
3140 OR l_expat_rec.eea_cw_citizen IS NOT NULL
3141 OR l_expat_rec.epm6_scheme IS NOT NULL)
3142 AND l_expat_rec.expat_flag = 'N') THEN
3143 -- l_asg_eff_start_date := p_start_date;
3144 if(l_min_active_start_date >= g_start_year) then
3145 l_asg_eff_start_date := l_min_active_start_date;
3146 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
3147 end if;
3148
3149 ELSE
3150 l_asg_eff_start_date := NULL;
3151 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
3152 END IF;
3153 END IF;
3154 ---
3155
3156 OPEN csr_get_more_payment_details(p_last_asg_action_id);
3157 FETCH csr_get_more_payment_details
3158 INTO l_payment_date,
3159 l_period_num,
3160 l_period_type;
3161 CLOSE csr_get_more_payment_details;
3162
3163 -- If there is no payment fetch details from the other assignments of the person
3164 -- Latest assignment action which is locked by the prepayment
3165 if l_payment_date is null then
3166 open csr_asg_act_id;
3167 fetch csr_asg_act_id into l_last_asg_action_id, l_last_effective_date;
3168 close csr_asg_act_id;
3169
3170 OPEN csr_get_more_payment_details(l_last_asg_action_id);
3171 FETCH csr_get_more_payment_details
3172 INTO l_payment_date,
3173 l_period_num,
3174 l_period_type;
3175 CLOSE csr_get_more_payment_details;
3176
3177 end if;
3178
3179 hr_utility.trace('l_payment_date :'||l_payment_date);
3180 hr_utility.trace('l_period_num :'||l_period_num);
3181 hr_utility.trace('l_period_type :'||l_period_type);
3182 g_date_paid:= l_payment_date;
3183
3184 ---
3185 if (l_period_type = 'Week') then
3186 l_frequency := 'W1';
3187 elsif (l_period_type = 'Bi-Month' or l_period_type = 'Bi-Week') then
3188 l_frequency := 'W2';
3189 elsif (l_period_type = 'Lunar Month') then
3190 l_frequency := 'W4';
3191 elsif (l_period_type = 'Calendar Month' or l_period_type = 'Semi-Month') then
3192 l_frequency := 'M1';
3193 elsif (l_period_type = 'Quarter') then
3194 l_frequency := 'M3';
3195 elsif (l_period_type = 'Semi-Year') then
3196 l_frequency := 'M6';
3197 elsif (l_period_type = 'Year') then
3198 l_frequency := 'MA';
3199 end if;
3200 ---
3201
3202 hr_utility.trace('p_person_rec.assignment_id :'||p_person_rec.assignment_id);
3203 hr_utility.trace('g_date_paid :'||g_date_paid);
3204 hr_utility.trace('g_effective_date :'||g_effective_date);
3205
3206 OPEN csr_asg(p_person_rec.assignment_id, g_effective_date);
3207 FETCH csr_asg INTO l_per_ni_agg_flag, l_per_agg_flag, l_asg_number;
3208 CLOSE csr_asg;
3209
3210 hr_utility.trace('l_per_ni_agg_flag :'||l_per_ni_agg_flag);
3211 hr_utility.trace('l_per_agg_flag :'||l_per_agg_flag);
3212 hr_utility.trace('l_frequency :'||l_frequency);
3213
3214 IF l_per_ni_agg_flag = 'Y' OR l_per_agg_flag = 'Y' THEN
3215 l_aggr_earnings := 'Y';
3216 ELSE
3217 l_aggr_earnings:= 'N';
3218 END IF;
3219
3220 OPEN csr_period_type_info(l_period_type);
3221 FETCH csr_period_type_info INTO l_number_per_fiscal_yr;
3222 CLOSE csr_period_type_info;
3223
3224 hr_utility.trace('l_number_per_fiscal_yr :'||l_number_per_fiscal_yr);
3225 l_payment_month_number := NULL;
3226 l_payment_week_number := NULL;
3227
3228 IF l_number_per_fiscal_yr IN (1,2,4,6,12,24) THEN
3229 l_payment_month_number := l_period_num;
3230 ELSE
3231 l_payment_week_number := l_period_num;
3232 END IF;
3233
3234 hr_utility.trace('l_payment_month_number :'||l_payment_month_number);
3235 hr_utility.trace('l_payment_week_number :'||l_payment_week_number);
3236 ---
3237 --New Asg Number and Old Asg Number logic starts below
3238 hr_utility.trace('p_person_rec.assignment_id :'||p_person_rec.assignment_id);
3239
3240 OPEN csr_last_pre_pay_id(p_person_rec.assignment_id);
3241 FETCH csr_last_pre_pay_id INTO l_last_pre_pay_id;
3242 CLOSE csr_last_pre_pay_id;
3243 hr_utility.trace('l_last_pre_pay_id :'||l_last_pre_pay_id);
3244
3245 OPEN csr_last_fps_asg_act_id(l_last_pre_pay_id, p_person_rec.assignment_id);
3246 FETCH csr_last_fps_asg_act_id INTO l_last_fps_asg_act_id;
3247 CLOSE csr_last_fps_asg_act_id;
3248 hr_utility.trace('l_last_fps_asg_act_id :'||l_last_fps_asg_act_id);
3249
3250 OPEN csr_last_asg_num_submitted(l_last_fps_asg_act_id, p_person_rec.assignment_id);
3251 FETCH csr_last_asg_num_submitted INTO l_last_asg_num_submitted;
3252 CLOSE csr_last_asg_num_submitted;
3253 hr_utility.trace('l_last_asg_num_submitted :'||l_last_asg_num_submitted);
3254 hr_utility.trace('l_asg_number :'||l_asg_number);
3255
3256 if (l_asg_number <> l_last_asg_num_submitted)
3257 then
3258 hr_utility.trace('Inside if asg number is changed');
3259 l_asg_number_old := l_last_asg_num_submitted;
3260 l_payroll_id_changed_indicator := 'Y';
3261 else
3262 hr_utility.trace('Inside else asg number is not changed');
3263 l_asg_number_old := NULL;
3264 l_payroll_id_changed_indicator := NULL;
3265 end if;
3266 --New Asg Number and Old Asg Number logic ends below
3267 ---
3268 OPEN csr_ni_info(p_person_rec.assignment_id, p_start_date);
3269 FETCH csr_ni_info INTO l_ni_process_type;
3270 CLOSE csr_ni_info;
3271
3272 hr_utility.trace('l_ni_process_type: '||l_ni_process_type);
3273
3274 IF (l_ni_process_type = 'DY') THEN --Director
3275 l_dir_nic_calc_method := 'AN';
3276 elsif ((l_ni_process_type = 'DN') --Director Normal
3277 OR (l_ni_process_type = 'DP') --Director Pro Rate
3278 OR (l_ni_process_type = 'DR') --Director Pro Rate Normal
3279 OR (l_ni_process_type = 'PY')) THEN --Pensioner Director
3280 l_dir_nic_calc_method := 'AL';
3281 END IF;
3282 ---
3283 OPEN csr_cat_NI_Details;
3284 FETCH csr_cat_NI_Details INTO l_dir_tax_week_num;
3285 CLOSE csr_cat_NI_Details;
3286
3287 IF l_dir_tax_week_num IS NULL THEN
3288 OPEN csr_cat_NI;
3289 FETCH csr_cat_NI INTO l_dir_tax_week_num;
3290 CLOSE csr_cat_NI;
3291 END IF;
3292 -- Get the Irregular payment indicator, periods covered and one-off payment.
3293 OPEN csr_fetch_other_fields;
3294 FETCH csr_fetch_other_fields
3295 INTO l_periods_covered,
3296 l_irr_payment_ind,
3297 l_one_off_pay,
3298 l_asg_info_id,
3299 l_ovn_extra_info;
3300 CLOSE csr_fetch_other_fields;
3301
3302 hr_utility.trace('l_periods_covered '||l_periods_covered);
3303 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
3304 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
3305
3306 hr_utility.trace('l_asg_info_id '||l_asg_info_id);
3307 hr_utility.trace('l_ovn_extra_info '||l_ovn_extra_info);
3308
3309 if l_periods_covered is null then
3310 l_periods_covered := get_periods_covered(p_person_rec.assignment_id);
3311 end if;
3312
3313 if l_irr_payment_ind is null then
3314 l_irr_payment_ind := get_irregular_payment(p_person_rec.assignment_id);
3315 end if;
3316
3317 if l_one_off_pay is null then
3318 l_one_off_pay := get_oneoff_payment(p_person_rec.assignment_id);
3319 end if;
3320
3321
3322 hr_utility.trace('l_periods_covered '||l_periods_covered);
3323 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
3324 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
3325
3326 open csr_advance_pay_dates;
3327 fetch csr_advance_pay_dates into l_start_date, l_end_date;
3328 close csr_advance_pay_dates;
3329 hr_utility.trace('l_start_date : ' || l_start_date);
3330 hr_utility.trace('l_end_date : ' || l_end_date);
3331
3332 if l_start_date is not null and l_end_date is not null then
3333 hr_utility.trace('test3');
3334 select
3335 pay_advance_pay_pkg.advanced_periods(
3336 p_person_rec.assignment_id,
3337 l_start_date,
3338 l_end_date
3339 ) into l_periods_covered from dual;
3340 hr_utility.trace('test4');
3341 -- reset the periods covered value to 1
3342 elsif l_periods_covered IS NOT NULL AND l_periods_covered <> 1 THEN
3343 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3344 p_object_version_number => l_ovn_extra_info,
3345 p_assignment_extra_info_id => l_asg_info_id,
3346 p_aei_information_category => 'GB_PAY_RTI',
3347 p_aei_information1 => 1);
3348 else
3349 l_periods_covered := 1;
3350 end if;
3351 hr_utility.trace('l_periods_covered : ' || l_periods_covered);
3352 hr_utility.trace('l_dir_tax_week_num : '|| l_dir_tax_week_num);
3353 ---
3354
3355 IF (l_irr_payment_ind = 'Y') THEN
3356 l_frequency := 'IR';
3357 elsif (l_one_off_pay = 'Y') THEN
3358 l_frequency := 'IO';
3359 END IF;
3360
3361 OPEN csr_all_payroll_actions(p_person_rec.assignment_id, g_pre_pact_id, p_start_date, g_start_year,g_end_year);
3362 FETCH csr_all_payroll_actions
3363 INTO l_payroll_period_start_date,
3364 l_payroll_period_end_date;
3365 CLOSE csr_all_payroll_actions;
3366
3367 open csr_terminated_date;
3368 fetch csr_terminated_date into l_person_actual_term_date;
3369 close csr_terminated_date;
3370 ---
3371 hr_utility.trace('p_end_date : '|| p_end_date);
3372 hr_utility.trace('l_person_actual_term_date : '|| l_person_actual_term_date);
3373
3374 IF p_fps = 'Y' and l_person_actual_term_date is not null THEN
3375 IF l_person_actual_term_date >= l_payroll_period_start_date and l_person_actual_term_date <= l_payroll_period_end_date THEN
3376 l_payment_after_leaving := 'N';
3377 ELSE
3378 l_payment_after_leaving := 'Y';
3379 END IF;
3380 ELSE
3381 l_payment_after_leaving := 'N';
3382 END IF;
3383
3384 l_date_of_leaving := l_person_actual_term_date;
3385
3386
3387
3388 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
3389 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
3390 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
3391 ---
3392 hr_utility.trace('Assigning values to p_fps_rec1');
3393
3394 p_fps_rec1.assignment_id := p_person_rec.assignment_id;
3395 p_fps_rec1.action_info_category := 'GB_RTI_FPS_ASG_DET1';
3396 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
3397 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
3398 p_fps_rec1.act_info3 := to_char(l_payment_date,'YYYY-MM-DD');
3399 p_fps_rec1.act_info4 := l_starter_decl;
3400 p_fps_rec1.act_info5 := l_continue_with_student_loan;
3401 p_fps_rec1.act_info6 := l_stay_over_6_months;
3402 p_fps_rec1.act_info7 := l_stay_less_6_months;
3403 p_fps_rec1.act_info8 := l_working_in_out_UK;
3404 p_fps_rec1.act_info9 := l_eea_cw_citizen;
3405 p_fps_rec1.act_info10 := l_epm6_scheme;
3406 p_fps_rec1.act_info11 := NULL; -- Recently Bereaved spouse / Civil Partner (State Pension) Not applicable
3407 p_fps_rec1.act_info12 := l_recently_bereaved;
3408 p_fps_rec1.act_info13 := l_asg_number;
3409 p_fps_rec1.act_info14 := l_payroll_id_changed_indicator;
3410 p_fps_rec1.act_info15 := l_asg_number_old;
3411 p_fps_rec1.act_info16 := l_irr_payment_ind;
3412 p_fps_rec1.act_info17 := l_frequency;
3413 p_fps_rec1.act_info18 := l_payment_week_number;
3414 p_fps_rec1.act_info19 := l_payment_month_number;
3415 p_fps_rec1.act_info20 := l_periods_covered;
3416 p_fps_rec1.act_info21 := l_aggr_earnings;
3417 p_fps_rec1.act_info22 := l_payment_after_leaving;
3418 p_fps_rec1.act_info23 := get_hours_worked(p_person_rec.assignment_id);
3419 p_fps_rec1.act_info24 := l_dir_nic_calc_method;
3420 p_fps_rec1.act_info25 := l_dir_tax_week_num;
3421 p_fps_rec1.act_info26 := l_annual_pension;
3422 p_fps_rec1.act_info27 := NULL; -- State Pension Not applicable
3423
3424 hr_utility.set_location('Leaving: '||l_proc,999);
3425 RETURN l_arch;
3426
3427 EXCEPTION
3428 WHEN OTHERS THEN
3429 hr_utility.set_location('Error in function fetch_fps_asg_det1 ', 15);
3430 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
3431 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
3432 RAISE;
3433 END fetch_fps_nopay_asg_det1;
3434
3435
3436
3437 -- Function to fetch Assignment details for Aggregated employees (CONTEXT - GB_RTI_FPS_ASG_DET1)
3438 FUNCTION fetch_fps_aggr_asg_det1(
3439 p_start_date IN DATE,
3440 p_end_date IN DATE,
3441 p_assactid IN NUMBER,
3442 p_last_asg_action_id IN NUMBER,
3443 p_fps IN varchar2,
3444 p_person_rec IN act_info_rec,
3445 p_fps_rec1 OUT nocopy act_info_rec)
3446 RETURN BOOLEAN
3447 IS
3448 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_aggr_asg_det1';
3449 l_arch BOOLEAN;
3450 l_asg_id NUMBER;
3451
3452 --Below cursor fetches the asg extra details of the current assignment
3453 CURSOR csr_fetch_other_fields
3454 IS
3455 SELECT AEI_INFORMATION1 periods_worked,
3456 AEI_INFORMATION3 irr_payment ,
3457 AEI_INFORMATION4 "One-Off Payment",
3458 ASSIGNMENT_EXTRA_INFO_ID,
3459 object_version_number
3460 FROM PER_ASSIGNMENT_EXTRA_INFO
3461 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
3462 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
3463 AND assignment_id = l_asg_id;
3464
3465 --Below cursor fetches the starter details of the current assignment
3466 CURSOR csr_get_starter_details(p_asg_id NUMBER)
3467 IS
3468 SELECT assignment_extra_info_id,
3469 aei_information1 starter_decl,
3470 aei_information2 prev_emp_paye_ref,
3471 aei_information3 prev_tax_code,
3472 aei_information4 date_left_prev_employer,
3473 aei_information5 prev_tax_basis,
3474 aei_information6 last_payment_period_type,
3475 aei_information7 last_payment_period,
3476 aei_information8 starter_flag,
3477 aei_information10 continue_with_student_loan,
3478 aei_information8 not_paid_between,
3479 object_version_number object_version_number
3480 FROM per_assignment_extra_info
3481 WHERE assignment_id = p_asg_id
3482 AND information_type = 'GB_RTI_ASG_DETAILS';
3483
3484 --Below cursor fetches the pension details of the current assignment
3485 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
3486 IS
3487 SELECT assignment_extra_info_id,
3488 aei_information9 pensioner_flag,
3489 aei_information12 date_pension_started,
3490 trim(aei_information13) annual_pension,
3491 aei_information14 recently_bereaved,
3492 object_version_number object_version_number
3493 FROM per_assignment_extra_info
3494 WHERE assignment_id = p_asg_id
3495 AND information_type = 'GB_RTI_ASG_DETAILS';
3496
3497 --Below cursor fetches the expat details of the current assignment
3498 CURSOR csr_get_expat_details(p_asg_id NUMBER)
3499 IS
3500 SELECT assignment_extra_info_id,
3501 aei_information15 expat_statement,
3502 aei_information16 date_emp_start_uk,
3503 aei_information17 eea_cw_citizen,
3504 aei_information18 epm6_scheme,
3505 aei_information19 expat_flag,
3506 object_version_number object_version_number
3507 FROM per_assignment_extra_info
3508 WHERE assignment_id = p_asg_id
3509 AND information_type = 'GB_RTI_ASG_DETAILS';
3510
3511 --Below cursor fetches the assignment numbers of the current assignment
3512 CURSOR csr_get_asg_numbers
3513 IS
3514 SELECT paaf.assignment_number assignment_number,
3515 paaf_old.assignment_number old_assignment_number
3516 FROM per_all_assignments_f paaf,
3517 per_all_assignments_f paaf_old
3518 WHERE paaf.assignment_id = l_asg_id
3519 AND ((paaf_old.assignment_id = paaf.assignment_id
3520 AND paaf_old.effective_start_date < paaf.effective_start_date
3521 AND paaf.effective_start_date > g_start_year
3522 AND paaf_old.effective_end_date > g_start_year)
3523 OR (paaf.assignment_number = paaf_old.assignment_number));
3524
3525 --Below cursor fetches further payment details of the current assignment
3526 CURSOR csr_get_more_payment_details
3527 IS
3528 SELECT ptp.regular_payment_date,
3529 ptp.period_num,
3530 ptp.period_type
3531 FROM pay_payroll_actions ppa,
3532 pay_assignment_actions paa,
3533 per_time_periods ptp
3534 WHERE assignment_action_id = p_last_asg_action_id
3535 AND ppa.time_period_id = ptp.time_period_id
3536 AND ppa.payroll_id = ptp.payroll_id
3537 AND paa.payroll_action_id = ppa.payroll_action_id;
3538
3539 --Below cursor fetches further period type details of the current assignment
3540 CURSOR csr_period_type_info(p_period_type VARCHAR2)
3541 IS
3542 SELECT ptpt.number_per_fiscal_year
3543 FROM per_time_period_types ptpt
3544 WHERE p_period_type = ptpt.period_type;
3545
3546 --Below cursor fetches basic ni details of the current assignment
3547 CURSOR csr_ni_info(c_asg_id NUMBER, c_asg_eff_start_date DATE)
3548 IS
3549 SELECT peevf.screen_entry_value screen_value
3550 FROM
3551 pay_element_entries_f peef,
3552 pay_element_entry_values_f peevf
3553 WHERE peef.assignment_id = c_asg_id
3554 AND peef.element_entry_id = peevf.element_entry_id
3555 AND peevf.input_value_id = g_ni_pt_ivid
3556 AND peef.element_type_id = g_ni_pt_eid
3557 AND c_asg_eff_start_date between peef.effective_start_date and peef.effective_end_date
3558 AND c_asg_eff_start_date between peevf.effective_start_date and peevf.effective_end_date;
3559
3560 --Below cursor fetches further ni details of the current assignment
3561 CURSOR csr_cat_NI_Details
3562 IS
3563 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
3564 FROM pay_assignment_actions paa ,
3565 pay_run_results prr,
3566 pay_run_result_values prrv,
3567 pay_element_types_f petf ,
3568 pay_input_values_f pivf
3569 WHERE paa.source_action_id = p_last_asg_action_id
3570 AND paa.assignment_action_id = prr.assignment_action_id
3571 AND prr.element_type_id = petf.element_type_id
3572 AND petf.element_name = 'NI DETAILS'
3573 AND prr.run_result_id = prrv.run_result_id
3574 AND prrv.input_value_id = pivf.input_value_id;
3575
3576 --Below cursor fetches further ni details of the current assignment
3577 CURSOR csr_cat_NI
3578 IS
3579 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
3580 FROM pay_assignment_actions paa ,
3581 pay_run_results prr,
3582 pay_run_result_values prrv,
3583 pay_element_types_f petf ,
3584 pay_input_values_f pivf
3585 WHERE paa.source_action_id = p_last_asg_action_id
3586 AND paa.assignment_action_id = prr.assignment_action_id
3587 AND prr.element_type_id = petf.element_type_id
3588 AND petf.element_name = 'NI'
3589 AND prr.run_result_id = prrv.run_result_id
3590 AND prrv.input_value_id = pivf.input_value_id;
3591
3592 --Below cursor fetches asg details of the current assignment
3593 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
3594 IS
3595 SELECT trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
3596 trim(NVL(pap.per_information10,'N')) per_agg_flag,
3597 asg.assignment_number assignment_number,
3598 asg.assignment_id assignment_id
3599 FROM per_all_people_f pap,
3600 per_all_assignments_f asg,
3601 pay_assignment_actions paa
3602 WHERE paa.assignment_action_id = c_asg_act_id
3603 AND paa.assignment_id = asg.assignment_id
3604 AND pap.person_id = asg.person_id
3605 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
3606 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
3607 AND pap.per_information_category = 'GB';
3608 /*AND asg.EFFECTIVE_START_DATE =
3609 (SELECT MAX(EFFECTIVE_START_DATE)
3610 FROM per_all_assignments_f paaf
3611 WHERE paaf.assignment_id = asg.assignment_id
3612 );*/
3613
3614 --Below cursor fetches the period start and end dates of payrolls processed in the current prepayment
3615 CURSOR csr_all_payroll_actions(p_asgid NUMBER, p_pre_pay_id NUMBER, p_asg_start DATE, p_start_year DATE, p_end_year DATE)
3616 IS
3617 SELECT
3618 /*+ USE_NL(paa, pact, ptp) */
3619 MIN(ptp.start_date) payroll_period_start_date,
3620 MAX(ptp.end_date) payroll_period_end_date
3621 FROM pay_assignment_actions paa,
3622 pay_payroll_actions pact,
3623 per_time_periods ptp,
3624 pay_assignment_actions paa1, --Prepayments
3625 pay_payroll_actions ppa1, --Prepayments
3626 pay_action_interlocks pai --Prepayments
3627 WHERE paa.assignment_id = p_asgid
3628 AND paa.payroll_action_id = pact.payroll_action_id
3629 AND pact.time_period_id = ptp.time_period_id
3630 AND pact.action_type IN ('Q','R','B','I','V')
3631 AND paa.action_status IN ('C','S')
3632 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
3633 AND ppa1.payroll_action_id = p_pre_pay_id
3634 AND ppa1.action_type IN ('P','U')
3635 AND paa1.payroll_action_id = ppa1.payroll_action_id
3636 AND paa1.assignment_action_id = pai.locking_action_id
3637 AND paa.assignment_action_id = pai.locked_action_id;
3638
3639 -- Cursor to fetch Termination date
3640 cursor csr_terminated_date is
3641 select serv.actual_termination_date actual_termination_date
3642 from
3643 per_all_assignments_f asg,
3644 per_periods_of_service serv
3645 where asg.assignment_id = l_asg_id
3646 and asg.period_of_service_id = serv.period_of_service_id
3647 and p_end_date between asg.effective_start_date and asg.effective_end_date
3648 and actual_termination_date <= g_effective_date
3649 and actual_termination_date <= sysdate + 30 ;
3650
3651 --Below cursor fetches the termination date of the current assignment
3652 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
3653 IS
3654 SELECT min(paaf.effective_start_date) min_active_start_date
3655 FROM per_all_assignments_f paaf,
3656 per_assignment_status_types past
3657 WHERE paaf.assignment_id = p_asg_id
3658 AND paaf.assignment_status_type_id = past.assignment_status_type_id
3659 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN');
3660
3661 --Below cursor fetches the Last Pre-Payment id
3662 CURSOR csr_last_pre_pay_id (c_asg_id NUMBER)
3663 IS
3664 select ppa_prev.payroll_action_id
3665 from pay_payroll_actions ppa_prev,
3666 pay_payroll_actions ppa_current
3667 where ppa_prev.action_type IN ('P','U')
3668 and ppa_prev.payroll_id = ppa_current.payroll_id
3669 and ppa_prev.payroll_action_id < ppa_current.payroll_action_id
3670 and ppa_current.payroll_action_id = g_pre_pact_id
3671 and ppa_prev.payroll_action_id =
3672 (select max(ppa_max.payroll_action_id)
3673 from pay_payroll_actions ppa_max,
3674 pay_assignment_actions paa_max
3675 where ppa_max.payroll_id = ppa_current.payroll_id
3676 and ppa_max.payroll_action_id < ppa_current.payroll_action_id
3677 and ppa_max.action_type IN ('P','U')
3678 and ppa_max.payroll_action_id = paa_max.payroll_action_id
3679 and paa_max.assignment_id = c_asg_id );
3680
3681 --Below cursor fetches the Previous run FPS assignment_action_id
3682 CURSOR csr_last_fps_asg_act_id (c_last_pre_pay_id NUMBER, c_asg_id NUMBER)
3683 IS
3684 select paa_fps.assignment_action_id
3685 from pay_assignment_actions paa_prepay,
3686 pay_payroll_actions ppa_prepay,
3687 pay_assignment_actions paa_fps,
3688 pay_payroll_actions ppa_fps,
3689 pay_action_interlocks pai
3690 where ppa_prepay.payroll_action_id = c_last_pre_pay_id
3691 and ppa_prepay.payroll_action_id = paa_prepay.payroll_action_id
3692 and paa_prepay.assignment_action_id = pai.locked_action_id
3693 and paa_fps.assignment_action_id = pai.locking_action_id
3694 and paa_fps.payroll_action_id = ppa_fps.payroll_action_id
3695 and ppa_fps.action_type = 'X'
3696 and paa_fps.assignment_id = c_asg_id;
3697
3698 --Below cursor fetches the New Asg Number reported in Last FPS
3699 CURSOR csr_last_asg_num_submitted(c_last_fps_asg_act_id NUMBER, c_asg_id NUMBER)
3700 IS
3701 select ACTION_INFORMATION13
3702 from pay_action_information
3703 where action_context_id = c_last_fps_asg_act_id
3704 and action_information_category = 'GB_RTI_FPS_ASG_DET1'
3705 and assignment_id = c_asg_id;
3706
3707
3708 cursor csr_advance_pay_dates
3709 is
3710 select fnd_date.canonical_to_date(max(decode(pivf.name,'Start Date',peevf.screen_entry_value,null))) start_date,
3711 fnd_date.canonical_to_date(max(decode(pivf.name,'End Date',peevf.screen_entry_value,null))) end_date
3712 from pay_element_entries_f peef,
3713 pay_element_entry_values_f peevf ,
3714 pay_input_values_f pivf
3715 where
3716 peef.assignment_id = l_asg_id
3717 and peef.ELEMENT_TYPE_ID = g_adv_period_id
3718 and peef.element_entry_id = peevf.element_entry_id
3719 and peevf.input_value_id = pivf.input_value_id
3720 and pivf.element_type_id = peef.ELEMENT_TYPE_ID;
3721
3722 --Cursor to fetch RTI Payroll ID for the assignment
3723 CURSOR csr_rti_payroll_id(cp_assignment_id NUMBER)
3724 IS
3725 SELECT aei_information3 rti_payroll_id
3726 FROM per_assignment_extra_info
3727 WHERE assignment_id = cp_assignment_id
3728 AND aei_information_category = 'GB_RTI_AGGREGATION';
3729
3730 -- Cursor to fetch Director details for the person
3731 cursor csr_director is
3732 select PER_INFORMATION2 from per_all_people_f papf
3733 where person_id = p_person_rec.person_id
3734 and effective_start_date =
3735 (select max(effective_start_date)
3736 from per_all_people_f where person_id = papf.person_id and effective_start_date <= g_effective_date);
3737
3738 l_starter_rec csr_get_starter_details%rowtype;
3739 l_pensioner_rec csr_get_pensioner_details%rowtype;
3740 l_expat_rec csr_get_expat_details%rowtype;
3741 l_stay_over_6_months VARCHAR2(1);
3742 l_stay_less_6_months VARCHAR2(1);
3743 l_working_in_out_UK VARCHAR2(1);
3744 l_asg_number VARCHAR2(30);
3745 l_asg_number_old VARCHAR2(30);
3746 l_irr_payment_ind VARCHAR2(10);
3747 l_periods_covered VARCHAR2(10);
3748 l_one_off_pay VARCHAR2(10);
3749 l_payroll_id_changed_indicator VARCHAR2(1) := 'N';
3750 l_payment_date DATE;
3751 l_period_num NUMBER;
3752 l_period_type VARCHAR2(30);
3753 l_number_per_fiscal_yr NUMBER;
3754 l_payment_month_number NUMBER;
3755 l_payment_week_number NUMBER;
3756 l_ni_process_type VARCHAR2(10);
3757 l_dir_nic_calc_method VARCHAR2(30);
3758 l_dir_tax_week_num NUMBER;
3759 l_per_ni_agg_flag VARCHAR2(1);
3760 l_per_agg_flag VARCHAR2(1);
3761 l_aggr_earnings VARCHAR2(1);
3762 l_starter_decl VARCHAR2(30);
3763 l_continue_with_student_loan VARCHAR2(30);
3764 l_ovn NUMBER;
3765 l_starter_flag VARCHAR2(1);
3766 l_pensioner_flag VARCHAR2(1);
3767 l_expat_flag VARCHAR2(1);
3768 l_recently_bereaved VARCHAR2(30);
3769 l_annual_pension VARCHAR2(30);
3770 l_eea_cw_citizen VARCHAR2(30);
3771 l_epm6_scheme VARCHAR2(30);
3772 l_asg_eff_start_date DATE;
3773 l_frequency VARCHAR2(30);
3774 l_payroll_period_start_date DATE;
3775 l_payroll_period_end_date DATE;
3776 l_person_actual_term_date DATE;
3777 l_asg_effective_end_date DATE;
3778 l_payment_after_leaving VARCHAR2(1);
3779 l_date_of_leaving DATE;
3780 l_ovn_extra_info NUMBER;
3781 l_asg_info_id NUMBER;
3782 l_start_date DATE;
3783 l_end_date DATE;
3784 l_last_pre_pay_id NUMBER;
3785 l_last_fps_asg_act_id NUMBER;
3786 l_last_asg_num_submitted VARCHAR2(30);
3787 l_person_id NUMBER;
3788 l_min_active_start_date DATE;
3789 l_rti_payroll_id VARCHAR2(30);
3790 l_director VARCHAR2(1);
3791
3792 BEGIN
3793 hr_utility.set_location('Entering: '||l_proc,1);
3794 l_arch := true;
3795 -- p_starter_set := 'N';
3796 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
3797 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
3798 hr_utility.trace('Calling csr_get_starter_details');
3799 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
3800 --
3801
3802 OPEN csr_get_more_payment_details;
3803 FETCH csr_get_more_payment_details
3804 INTO l_payment_date,
3805 l_period_num,
3806 l_period_type;
3807 CLOSE csr_get_more_payment_details;
3808
3809 hr_utility.trace('l_payment_date :'||l_payment_date);
3810 hr_utility.trace('l_period_num :'||l_period_num);
3811 hr_utility.trace('l_period_type :'||l_period_type);
3812 g_date_paid:= l_payment_date;
3813
3814 OPEN csr_asg(p_last_asg_action_id, g_date_paid);
3815 FETCH csr_asg INTO l_per_ni_agg_flag, l_per_agg_flag, l_asg_number, l_asg_id;
3816 CLOSE csr_asg;
3817
3818 hr_utility.trace('l_per_ni_agg_flag :'||l_per_ni_agg_flag);
3819 hr_utility.trace('l_per_agg_flag :'||l_per_agg_flag);
3820 hr_utility.trace('l_asg_number :'||l_asg_number);
3821 hr_utility.trace('l_asg_id :'||l_asg_id);
3822
3823 --
3824
3825 OPEN csr_get_starter_details(l_asg_id);
3826 FETCH csr_get_starter_details INTO l_starter_rec;
3827 CLOSE csr_get_starter_details;
3828
3829 l_starter_decl := NULL;
3830 l_continue_with_student_loan := NULL;
3831 l_starter_flag := l_starter_rec.starter_flag;
3832 g_reset_flag_type := NULL;
3833 hr_utility.trace('Calling csr_get_starter_details1');
3834 hr_utility.trace('l_starter_flag: '||l_starter_flag);
3835 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
3836 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
3837
3838 IF (l_starter_flag = 'N'
3839 AND (l_starter_rec.starter_decl IS NOT NULL
3840 OR l_starter_rec.continue_with_student_loan IS NOT NULL )) THEN
3841 hr_utility.trace('Calling csr_get_starter_details2');
3842 l_starter_decl := l_starter_rec.starter_decl;
3843 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
3844 l_ovn := l_starter_rec.object_version_number;
3845 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3846 p_object_version_number => l_ovn,
3847 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
3848 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3849 p_aei_information8 => 'Y');
3850 g_reset_flag_type := 'STARTER';
3851 hr_utility.trace('Calling csr_get_starter_details3');
3852 END IF;
3853 ---
3854 hr_utility.trace('Calling csr_get_pensioner_details');
3855
3856 OPEN csr_get_pensioner_details(l_asg_id);
3857 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
3858 CLOSE csr_get_pensioner_details;
3859
3860 l_recently_bereaved := NULL;
3861 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
3862 l_annual_pension := NULL;
3863 g_reset_flag_type := NULL;
3864
3865 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
3866 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
3867 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
3868 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
3869
3870 IF (l_pensioner_flag = 'N'
3871 AND (l_pensioner_rec.recently_bereaved IS NOT NULL
3872 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
3873 l_starter_decl := 'B';
3874 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
3875 if l_pensioner_rec.annual_pension is not null then
3876 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
3877 end if;
3878 l_ovn := l_pensioner_rec.object_version_number;
3879 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3880 p_object_version_number => l_ovn,
3881 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
3882 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3883 p_aei_information9 => 'Y');
3884 g_reset_flag_type := 'PENSIONER';
3885 END IF;
3886 ---
3887 hr_utility.trace('Calling csr_get_expat_details');
3888
3889 OPEN csr_get_expat_details(l_asg_id);
3890 FETCH csr_get_expat_details INTO l_expat_rec;
3891 CLOSE csr_get_expat_details;
3892
3893 l_eea_cw_citizen := NULL;
3894 l_epm6_scheme := NULL;
3895 l_stay_over_6_months := NULL;
3896 l_stay_less_6_months := NULL;
3897 l_working_in_out_UK := NULL;
3898 l_expat_flag := l_expat_rec.expat_flag;
3899
3900 hr_utility.trace('Calling csr_get_expat_details1');
3901 hr_utility.trace('l_expat_flag: '||l_expat_flag);
3902 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
3903 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
3904 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
3905
3906 g_reset_flag_type := NULL;
3907
3908 IF (l_expat_flag = 'N'
3909 AND (l_expat_rec.eea_cw_citizen IS NOT NULL
3910 OR l_expat_rec.epm6_scheme IS NOT NULL
3911 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
3912 hr_utility.trace('Calling csr_get_expat_details2');
3913 IF l_expat_rec.expat_statement = 'A' THEN
3914 l_stay_over_6_months := 'Y';
3915 elsif l_expat_rec.expat_statement = 'B' THEN
3916 l_stay_less_6_months := 'Y';
3917 elsif l_expat_rec.expat_statement = 'C' THEN
3918 l_working_in_out_UK := 'Y';
3919 END IF;
3920
3921 hr_utility.trace('Calling csr_get_expat_details3');
3922 l_starter_decl := l_expat_rec.expat_statement;
3923 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
3924 l_epm6_scheme := l_expat_rec.epm6_scheme;
3925 l_ovn := l_expat_rec.object_version_number;
3926 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3927 p_object_version_number => l_ovn,
3928 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
3929 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3930 p_aei_information19 => 'Y');
3931 g_reset_flag_type := 'EXPAT';
3932 END IF;
3933
3934 OPEN csr_get_term_asg_info (l_asg_id);
3935 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
3936 CLOSE csr_get_term_asg_info;
3937
3938 ---
3939 IF (l_starter_rec.starter_flag = 'N') THEN
3940 IF((l_starter_rec.starter_decl IS NOT NULL
3941 OR l_starter_rec.continue_with_student_loan IS NOT NULL)
3942 AND l_starter_rec.starter_flag = 'N')
3943
3944 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
3945 OR l_pensioner_rec.annual_pension IS NOT NULL
3946 OR l_pensioner_rec.recently_bereaved IS NOT NULL)
3947 AND l_pensioner_rec.pensioner_flag = 'N')
3948
3949 OR ((l_expat_rec.expat_statement IS NOT NULL
3950 OR l_expat_rec.date_emp_start_uk IS NOT NULL
3951 OR l_expat_rec.eea_cw_citizen IS NOT NULL
3952 OR l_expat_rec.epm6_scheme IS NOT NULL)
3953 AND l_expat_rec.expat_flag = 'N') THEN
3954 --l_asg_eff_start_date := p_start_date;
3955 if(l_min_active_start_date >= g_start_year) then
3956 l_asg_eff_start_date := l_min_active_start_date;
3957 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
3958 end if;
3959 ELSE
3960 l_asg_eff_start_date := NULL;
3961 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
3962 END IF;
3963 END IF;
3964 ---
3965
3966 if (l_period_type = 'Week') then
3967 l_frequency := 'W1';
3968 elsif (l_period_type = 'Bi-Month' or l_period_type = 'Bi-Week') then
3969 l_frequency := 'W2';
3970 elsif (l_period_type = 'Lunar Month') then
3971 l_frequency := 'W4';
3972 elsif (l_period_type = 'Calendar Month' or l_period_type = 'Semi-Month') then
3973 l_frequency := 'M1';
3974 elsif (l_period_type = 'Quarter') then
3975 l_frequency := 'M3';
3976 elsif (l_period_type = 'Semi-Year') then
3977 l_frequency := 'M6';
3978 elsif (l_period_type = 'Year') then
3979 l_frequency := 'MA';
3980 end if;
3981 ---
3982
3983 hr_utility.trace('l_frequency :'||l_frequency);
3984
3985
3986 -- PAYE aggregation should be reported on rti payroll id which should be the primary assignment
3987 IF l_per_agg_flag = 'Y'
3988 THEN
3989 hr_utility.trace('Fetching RTI Payroll ID for the assignment : '||l_asg_id);
3990 hr_utility.trace('Assignment Number : ' || l_asg_number);
3991 OPEN csr_rti_payroll_id(l_asg_id);
3992 FETCH csr_rti_payroll_id INTO l_rti_payroll_id;
3993 IF csr_rti_payroll_id%FOUND
3994 THEN
3995 l_asg_number := l_rti_payroll_id;
3996 hr_utility.trace('RTI Payroll ID : ' || l_asg_number);
3997 ELSE
3998 hr_utility.trace('Unable to fetch the rti payroll id for assignment number ' || l_asg_number);
3999 END IF;
4000 CLOSE csr_rti_payroll_id;
4001 END IF;
4002
4003 IF l_per_ni_agg_flag = 'Y' OR l_per_agg_flag = 'Y' THEN
4004 l_aggr_earnings := 'Y';
4005 ELSE
4006 l_aggr_earnings:= 'N';
4007 END IF;
4008
4009 OPEN csr_period_type_info(l_period_type);
4010 FETCH csr_period_type_info INTO l_number_per_fiscal_yr;
4011 CLOSE csr_period_type_info;
4012
4013 hr_utility.trace('l_number_per_fiscal_yr :'||l_number_per_fiscal_yr);
4014 l_payment_month_number := NULL;
4015 l_payment_week_number := NULL;
4016
4017 IF l_number_per_fiscal_yr IN (1,2,4,6,12,24) THEN
4018 l_payment_month_number := l_period_num;
4019 ELSE
4020 l_payment_week_number := l_period_num;
4021 END IF;
4022
4023 hr_utility.trace('l_payment_month_number :'||l_payment_month_number);
4024 hr_utility.trace('l_payment_week_number :'||l_payment_week_number);
4025 ---
4026 --New Asg Number and Old Asg Number logic starts below
4027 hr_utility.trace('l_asg_id :'||l_asg_id);
4028
4029 OPEN csr_last_pre_pay_id(l_asg_id);
4030 FETCH csr_last_pre_pay_id INTO l_last_pre_pay_id;
4031 CLOSE csr_last_pre_pay_id;
4032 hr_utility.trace('l_last_pre_pay_id :'||l_last_pre_pay_id);
4033
4034 OPEN csr_last_fps_asg_act_id(l_last_pre_pay_id, l_asg_id);
4035 FETCH csr_last_fps_asg_act_id INTO l_last_fps_asg_act_id;
4036 CLOSE csr_last_fps_asg_act_id;
4037 hr_utility.trace('l_last_fps_asg_act_id :'||l_last_fps_asg_act_id);
4038
4039 OPEN csr_last_asg_num_submitted(l_last_fps_asg_act_id, l_asg_id);
4040 FETCH csr_last_asg_num_submitted INTO l_last_asg_num_submitted;
4041 CLOSE csr_last_asg_num_submitted;
4042 hr_utility.trace('l_last_asg_num_submitted :'||l_last_asg_num_submitted);
4043 hr_utility.trace('l_asg_number :'||l_asg_number);
4044
4045 if (l_asg_number <> l_last_asg_num_submitted)
4046 then
4047 hr_utility.trace('Inside if asg number is changed');
4048 l_asg_number_old := l_last_asg_num_submitted;
4049 l_payroll_id_changed_indicator := 'Y';
4050 else
4051 hr_utility.trace('Inside else asg number is not changed');
4052 l_asg_number_old := NULL;
4053 l_payroll_id_changed_indicator := NULL;
4054 end if;
4055 --New Asg Number and Old Asg Number logic ends below
4056 ---
4057 OPEN csr_ni_info(l_asg_id, p_start_date);
4058 FETCH csr_ni_info INTO l_ni_process_type;
4059 CLOSE csr_ni_info;
4060
4061 hr_utility.trace('l_ni_process_type: '||l_ni_process_type);
4062
4063 IF (l_ni_process_type = 'DY') THEN --Director
4064 l_dir_nic_calc_method := 'AN';
4065 elsif ((l_ni_process_type = 'DN') --Director Normal
4066 OR (l_ni_process_type = 'DP') --Director Pro Rate
4067 OR (l_ni_process_type = 'DR') --Director Pro Rate Normal
4068 OR (l_ni_process_type = 'PY')) THEN --Pensioner Director
4069 l_dir_nic_calc_method := 'AL';
4070 END IF;
4071
4072 open csr_director;
4073 fetch csr_director into l_director;
4074 close csr_director;
4075
4076 if l_director = 'Y' then
4077 OPEN csr_cat_NI_Details;
4078 FETCH csr_cat_NI_Details INTO l_dir_tax_week_num;
4079 CLOSE csr_cat_NI_Details;
4080
4081 IF l_dir_tax_week_num IS NULL THEN
4082 OPEN csr_cat_NI;
4083 FETCH csr_cat_NI INTO l_dir_tax_week_num;
4084 CLOSE csr_cat_NI;
4085 END IF;
4086
4087 end if;
4088
4089
4090 -- Get the Irregular payment indicator, periods covered and one-off payment.
4091 OPEN csr_fetch_other_fields;
4092 FETCH csr_fetch_other_fields
4093 INTO l_periods_covered,
4094 l_irr_payment_ind,
4095 l_one_off_pay,
4096 l_asg_info_id,
4097 l_ovn_extra_info;
4098 CLOSE csr_fetch_other_fields;
4099
4100 open csr_advance_pay_dates;
4101 fetch csr_advance_pay_dates into l_start_date, l_end_date;
4102 close csr_advance_pay_dates;
4103 hr_utility.trace('l_start_date : ' || l_start_date);
4104 hr_utility.trace('l_end_date : ' || l_end_date);
4105
4106 if l_start_date is not null and l_end_date is not null then
4107 hr_utility.trace('test3');
4108 select
4109 pay_advance_pay_pkg.advanced_periods(
4110 l_asg_id,
4111 l_start_date,
4112 l_end_date
4113 ) into l_periods_covered from dual;
4114 hr_utility.trace('test4');
4115 -- reset the periods covered value to 1
4116 elsif l_periods_covered IS NOT NULL AND l_periods_covered <> 1 THEN
4117 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
4118 p_object_version_number => l_ovn_extra_info,
4119 p_assignment_extra_info_id => l_asg_info_id,
4120 p_aei_information_category => 'GB_PAY_RTI',
4121 p_aei_information1 => 1);
4122 else
4123 l_periods_covered := 1;
4124 end if;
4125 hr_utility.trace('l_periods_covered : ' || l_periods_covered);
4126 hr_utility.trace('l_dir_tax_week_num : '|| l_dir_tax_week_num);
4127 ---
4128
4129 IF (l_irr_payment_ind = 'Y') THEN
4130 l_frequency := 'IR';
4131 elsif (l_one_off_pay = 'Y') THEN
4132 l_frequency := 'IO';
4133 END IF;
4134
4135 OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, p_start_date, g_start_year,g_end_year);
4136 FETCH csr_all_payroll_actions
4137 INTO l_payroll_period_start_date,
4138 l_payroll_period_end_date;
4139 CLOSE csr_all_payroll_actions;
4140
4141 OPEN csr_terminated_date;
4142 FETCH csr_terminated_date INTO l_person_actual_term_date;
4143 CLOSE csr_terminated_date;
4144 ---
4145
4146 IF p_fps = 'Y' and l_person_actual_term_date is not null THEN
4147 IF l_person_actual_term_date >= l_payroll_period_start_date and l_person_actual_term_date <= l_payroll_period_end_date THEN
4148 l_payment_after_leaving := 'N';
4149 ELSE
4150 l_payment_after_leaving := 'Y';
4151 END IF;
4152 ELSE
4153 l_payment_after_leaving := 'N';
4154 END IF;
4155
4156 /*
4157 IF (l_asg_effective_end_date > l_payroll_period_start_date
4158 AND l_asg_effective_end_date < l_payroll_period_end_date ) THEN
4159 l_date_of_leaving := l_asg_effective_end_date;
4160 ELSE
4161 l_date_of_leaving := NULL;
4162 END IF;
4163 */
4164 /*
4165 IF l_payment_after_leaving = 'Y' THEN
4166 l_date_of_leaving := l_person_actual_term_date;
4167 ELSE
4168 l_date_of_leaving := NULL;
4169 END IF;
4170 */
4171
4172 l_date_of_leaving := l_person_actual_term_date;
4173
4174
4175 -- If Date of Leaving is less then Start of the Previous Tax Year
4176 -- Updating it to Payment Date as Validation rule will fail
4177 if l_date_of_leaving is not null and l_date_of_leaving < (add_months(g_end_year,-24)+1) then
4178 l_date_of_leaving := l_payment_date;
4179 end if;
4180
4181
4182 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
4183 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
4184 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
4185 ---
4186 hr_utility.trace('Assigning values to p_fps_rec1');
4187
4188 p_fps_rec1.assignment_id := l_asg_id;
4189 p_fps_rec1.action_info_category := 'GB_RTI_FPS_ASG_DET1';
4190 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
4191 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
4192 p_fps_rec1.act_info3 := to_char(l_payment_date,'YYYY-MM-DD');
4193 p_fps_rec1.act_info4 := l_starter_decl;
4194 p_fps_rec1.act_info5 := l_continue_with_student_loan;
4195 p_fps_rec1.act_info6 := l_stay_over_6_months;
4196 p_fps_rec1.act_info7 := l_stay_less_6_months;
4197 p_fps_rec1.act_info8 := l_working_in_out_UK;
4198 p_fps_rec1.act_info9 := l_eea_cw_citizen;
4199 p_fps_rec1.act_info10 := l_epm6_scheme;
4200 p_fps_rec1.act_info11 := NULL; -- Recently Bereaved spouse / Civil Partner (State Pension) Not applicable
4201 p_fps_rec1.act_info12 := l_recently_bereaved;
4202 p_fps_rec1.act_info13 := l_asg_number;
4203 p_fps_rec1.act_info14 := l_payroll_id_changed_indicator;
4204 p_fps_rec1.act_info15 := l_asg_number_old;
4205 p_fps_rec1.act_info16 := l_irr_payment_ind;
4206 p_fps_rec1.act_info17 := l_frequency;
4207 p_fps_rec1.act_info18 := l_payment_week_number;
4208 p_fps_rec1.act_info19 := l_payment_month_number;
4209 p_fps_rec1.act_info20 := l_periods_covered;
4210 p_fps_rec1.act_info21 := l_aggr_earnings;
4211 p_fps_rec1.act_info22 := l_payment_after_leaving;
4212 p_fps_rec1.act_info23 := get_hours_worked(l_asg_id);
4213 p_fps_rec1.act_info24 := l_dir_nic_calc_method;
4214 p_fps_rec1.act_info25 := l_dir_tax_week_num;
4215 p_fps_rec1.act_info26 := l_annual_pension;
4216 p_fps_rec1.act_info27 := NULL; -- State Pension Not applicable
4217
4218 hr_utility.set_location('Leaving: '||l_proc,999);
4219 RETURN l_arch;
4220
4221 EXCEPTION
4222 WHEN OTHERS THEN
4223 hr_utility.set_location('Error in function fetch_fps_aggr_asg_det1 ', 15);
4224 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
4225 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
4226 RAISE;
4227 END fetch_fps_aggr_asg_det1;
4228 --
4229 --
4230 /*FUNCTION get_ni_contrib(
4231 f_asg_act_id NUMBER,
4232 f_aggr VARCHAR2 DEFAULT 'N')
4233 RETURN NUMBER
4234 IS
4235 l_ni_contrib NUMBER := 0;
4236 l_def_bal_id NUMBER := 0;
4237 l_def_bal_id1 NUMBER := 0;
4238
4239 CURSOR csr_cat_NI_Details
4240 IS
4241 SELECT MAX(DECODE(name,'Category',result_value,NULL))
4242 FROM pay_assignment_actions paa ,
4243 pay_run_results prr,
4244 pay_run_result_values prrv,
4245 pay_element_types_f petf ,
4246 pay_input_values_f pivf
4247 WHERE paa.source_action_id = f_asg_act_id
4248 AND paa.assignment_action_id = prr.assignment_action_id
4249 AND prr.element_type_id = petf.element_type_id
4250 AND petf.element_name = 'NI DETAILS'
4251 AND prr.run_result_id = prrv.run_result_id
4252 AND prrv.input_value_id = pivf.input_value_id;
4253
4254 CURSOR csr_cat_NI
4255 IS
4256 SELECT MAX(DECODE(name,'Category',result_value,NULL))
4257 FROM pay_assignment_actions paa ,
4258 pay_run_results prr,
4259 pay_run_result_values prrv,
4260 pay_element_types_f petf ,
4261 pay_input_values_f pivf
4262 WHERE paa.source_action_id = f_asg_act_id
4263 AND paa.assignment_action_id = prr.assignment_action_id
4264 AND prr.element_type_id = petf.element_type_id
4265 AND petf.element_name = 'NI'
4266 AND prr.run_result_id = prrv.run_result_id
4267 AND prrv.input_value_id = pivf.input_value_id;
4268
4269 l_cat VARCHAR2(1) := NULL;
4270
4271 CURSOR get_defined_balance_id_ni(c_ni_cat VARCHAR2, c_dim VARCHAR2)
4272 IS
4273 SELECT db.defined_balance_id defined_balance_id
4274 FROM pay_defined_balances db,
4275 pay_balance_types b,
4276 pay_balance_dimensions d
4277 WHERE db.balance_type_id = b.balance_type_id
4278 AND db.balance_dimension_id = d.balance_dimension_id
4279 AND d.database_item_suffix = c_dim
4280 AND b.balance_name = 'NI '
4281 || c_ni_cat
4282 || ' Total'
4283 AND b.legislation_code = 'GB';
4284
4285 CURSOR get_def_bal_id_ni_total_emplyr(c_dim VARCHAR2)
4286 IS
4287 SELECT db.defined_balance_id defined_balance_id
4288 FROM pay_defined_balances db,
4289 pay_balance_types b,
4290 pay_balance_dimensions d
4291 WHERE db.balance_type_id = b.balance_type_id
4292 AND db.balance_dimension_id = d.balance_dimension_id
4293 AND d.database_item_suffix = c_dim
4294 AND b.balance_name = 'NI Employer'
4295 AND b.legislation_code = 'GB';
4296
4297 BEGIN
4298 hr_utility.trace('Entering get_ni_contrib');
4299 hr_utility.trace('f_asg_act_id : ' || TO_CHAR(f_asg_act_id));
4300 hr_utility.trace('f_aggr : ' || f_aggr );
4301
4302 OPEN csr_cat_NI_Details;
4303 FETCH csr_cat_NI_Details INTO l_cat;
4304 CLOSE csr_cat_NI_Details;
4305
4306 IF l_cat IS NULL THEN
4307 OPEN csr_cat_NI;
4308 FETCH csr_cat_NI INTO l_cat;
4309 CLOSE csr_cat_NI;
4310 END IF;
4311
4312 IF l_cat IS NOT NULL THEN
4313 hr_utility.trace('Entered if - l_cat : '|| l_cat);
4314 IF f_aggr = 'Y' THEN
4315 OPEN get_defined_balance_id_ni(l_cat, '_PER_TD_STAT_PTD');
4316 FETCH get_defined_balance_id_ni INTO l_def_bal_id;
4317 CLOSE get_defined_balance_id_ni;
4318 OPEN get_def_bal_id_ni_total_emplyr('_PER_TD_STAT_PTD');
4319 FETCH get_def_bal_id_ni_total_emplyr INTO l_def_bal_id1;
4320 CLOSE get_def_bal_id_ni_total_emplyr;
4321 l_ni_contrib := HR_GBNIDIR.NI_BALANCES_PER_NI_PTD(f_asg_act_id, lower(l_cat) || '_employee');
4322 ELSE
4323 OPEN get_defined_balance_id_ni(l_cat, '_ASG_TRANSFER_PTD');
4324 FETCH get_defined_balance_id_ni INTO l_def_bal_id;
4325 CLOSE get_defined_balance_id_ni;
4326 OPEN get_def_bal_id_ni_total_emplyr('_ASG_TRANSFER_PTD');
4327 FETCH get_def_bal_id_ni_total_emplyr INTO l_def_bal_id1;
4328 CLOSE get_def_bal_id_ni_total_emplyr;
4329 hr_utility.trace('l_def_bal_id : '|| TO_CHAR(l_def_bal_id));
4330 hr_utility.trace('l_def_bal_id1 : '|| TO_CHAR(l_def_bal_id1));
4331 l_ni_contrib := NVL(pay_balance_pkg.get_value(p_defined_balance_id => l_def_bal_id, p_assignment_action_id => f_asg_act_id ),0);
4332 l_ni_contrib := l_ni_contrib - NVL(pay_balance_pkg.get_value(p_defined_balance_id => l_def_bal_id1, p_assignment_action_id => f_asg_act_id ),0);
4333 END IF;
4334 hr_utility.trace('Leaving get_ni_contrib');
4335 END IF;
4336
4337 RETURN l_ni_contrib;
4338
4339 EXCEPTION
4340 WHEN OTHERS THEN
4341 hr_utility.trace('Exception in get_ni_contrib');
4342 hr_utility.trace('Exception : ' ||SQLERRM ||' ' || SQLCODE );-- return type: varchar2
4343 RETURN l_ni_contrib;
4344 RAISE;
4345 END get_ni_contrib;
4346 --
4347 --
4348 */
4349
4350 function get_eff_start_date (asg_id number,eff_date date,l_tax_ref varchar2)
4351 return date is
4352 l_eff_date date;
4353 cursor csr_get_start_date is
4354 select paaf.effective_start_date from
4355 per_all_assignments_f paaf,
4356 pay_all_payrolls_f papf ,
4357 hr_soft_coding_keyflex flex,
4358 per_assignment_status_types past
4359 where paaf.assignment_id = asg_id and paaf.effective_end_date = eff_date - 1
4360 and papf.payroll_id = paaf.payroll_id
4361 and flex.SOFT_CODING_KEYFLEX_ID = papf.SOFT_CODING_KEYFLEX_ID
4362 and upper(l_tax_ref) = upper(flex.segment1)
4363 and paaf.assignment_status_type_id = past.assignment_status_type_id
4364 and past.per_system_status in ('ACTIVE_ASSIGN', 'SUSP_ASSIGN', 'TERM_ASSIGN'); -- Bug 16276411
4365 begin
4366 open csr_get_start_date;
4367 fetch csr_get_start_date into l_eff_date;
4368 if csr_get_start_date%notfound then
4369 close csr_get_start_date;
4370 return eff_date;
4371 else
4372 close csr_get_start_date;
4373 l_eff_date := get_eff_start_date(asg_id,l_eff_date,l_tax_ref);
4374 return l_eff_date;
4375 end if;
4376 end;
4377
4378 procedure fetch_tax_code_basis(
4379 p_last_asg_action_id IN NUMBER,
4380 p_tax_code OUT nocopy varchar2,
4381 p_tax_basis OUT nocopy varchar2)
4382
4383 IS
4384
4385 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_tax_code_basis';
4386 l_paye_rr_id number;
4387 l_paye_details_rr_id number;
4388
4389
4390 CURSOR csr_max_run_result(p_assignment_action_id number,p_element_id number) IS
4391 SELECT max(prr.RUN_RESULT_ID)
4392 FROM pay_run_results prr
4393 WHERE prr.ASSIGNMENT_ACTION_ID = p_assignment_action_id
4394 AND prr.ELEMENT_TYPE_ID = p_element_id
4395 AND prr.status in ('P','PA');
4396
4397
4398 CURSOR csr_run_result(p_run_result_id number,p_element_type_id number) IS
4399 SELECT max(decode(name,'Tax Code',result_value,NULL)) tax_code,
4400 MAX(DECODE(name,'Tax Basis',DECODE(result_value,'N','Y',NULL),NULL)) tax_basis
4401 FROM pay_input_values_f v,
4402 pay_run_result_values rrv
4403 WHERE rrv.run_result_id = p_run_result_id
4404 AND v.input_value_id = rrv.input_value_id
4405 AND v.element_type_id = p_element_type_id;
4406
4407
4408 BEGIN
4409
4410 hr_utility.set_location('Entering: '||l_proc,1);
4411 hr_utility.set_location('Assignment_action_id :' || p_last_asg_action_id,15);
4412
4413 ---
4414
4415 open csr_max_run_result(p_last_asg_action_id,g_paye_element_id);
4416 fetch csr_max_run_result into l_paye_rr_id;
4417 close csr_max_run_result;
4418
4419 open csr_max_run_result(p_last_asg_action_id,g_paye_details_id);
4420 fetch csr_max_run_result into l_paye_details_rr_id;
4421 close csr_max_run_result;
4422
4423 hr_utility.trace('Fetching run result 1');
4424 -- 1. First we try to fetch it from the latest PAYE run results
4425 open csr_run_result(l_paye_rr_id, g_paye_element_id);
4426 fetch csr_run_result into p_tax_code,p_tax_basis;
4427 close csr_run_result;
4428 -- 2. Tax code is not found, fetch from the latest PAYE Details run results
4429 if p_tax_code is null then
4430 hr_utility.trace('Fetching run result 2');
4431 open csr_run_result(l_paye_details_rr_id, g_paye_details_id);
4432 fetch csr_run_result into p_tax_code,p_tax_basis;
4433 close csr_run_result;
4434
4435 end if;
4436
4437 hr_utility.trace('Tax Code '||p_tax_code||' Tax Basis '||p_tax_basis);
4438
4439 exception
4440 when others then
4441 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
4442 end fetch_tax_code_basis;
4443
4444
4445
4446
4447 function fetch_start_date(p_asg_id number,p_effective_date date, p_payment_date date,p_tax_ref varchar2,p_tax_year_start date ,p_starter_set varchar2,p_fps_rec1 in OUT nocopy act_info_rec)
4448 return boolean
4449 is
4450
4451 cursor csr_terminated_emp is
4452 select serv.actual_termination_date actual_termination_date
4453 from
4454 per_all_assignments_f asg,
4455 per_periods_of_service serv
4456 where asg.assignment_id = p_asg_id
4457 and serv.actual_termination_date is not null
4458 and asg.period_of_service_id = serv.period_of_service_id
4459 and p_payment_date between asg.effective_start_date and asg.effective_end_date
4460 and actual_termination_date <= sysdate + 30 ;
4461
4462 cursor csr_get_start_date is
4463 select paaf.effective_start_date,paaf.effective_end_date
4464 from per_all_assignments_f paaf
4465 where paaf.assignment_id = p_asg_id
4466 and p_payment_date between paaf.effective_start_date and paaf.effective_end_date;
4467
4468 cursor csr_get_starter is
4469 SELECT aei_information8 starter_flag , aei_information1 starter_decl
4470 FROM per_assignment_extra_info
4471 WHERE assignment_id = p_asg_id
4472 AND information_type = 'GB_RTI_ASG_DETAILS';
4473
4474 l_eff_start_date date;
4475 l_eff_end_date date;
4476 l_termination_date date;
4477 l_starter_flag varchar2(1);
4478 l_starter_declaration varchar2(1);
4479
4480 begin
4481 hr_utility.trace('Fetching First FPS Details');
4482
4483 open csr_get_starter;
4484 fetch csr_get_starter into l_starter_flag,l_starter_declaration;
4485 hr_utility.trace('Fetching First FPS Details l_starter_flag: '||l_starter_flag);
4486 hr_utility.trace('Fetching First FPS Details l_starter_declaration: '||l_starter_declaration);
4487 close csr_get_starter;
4488
4489 if l_starter_flag = 'Y' and p_starter_set = 'N' then
4490 hr_utility.trace('RTI Sent flag is already set.');
4491 p_fps_rec1.act_info1 := NULL;
4492 p_fps_rec1.act_info4 := NULL;
4493
4494 else
4495
4496 open csr_get_start_date;
4497 fetch csr_get_start_date into l_eff_start_date,l_eff_end_date;
4498 close csr_get_start_date;
4499
4500 l_eff_start_date := get_eff_start_date(p_asg_id,l_eff_start_date,p_tax_ref);
4501
4502 if l_eff_start_date >= p_tax_year_start and l_eff_start_date <= p_effective_date then
4503 p_fps_rec1.act_info1 := to_char(l_eff_start_date,'YYYY-MM-DD');
4504 p_fps_rec1.act_info4 := l_starter_declaration;
4505 else p_fps_rec1.act_info1 := NULL;
4506 end if;
4507
4508 end if; --Starter_flag check ends
4509
4510 open csr_terminated_emp;
4511 fetch csr_terminated_emp into l_termination_date;
4512 close csr_terminated_emp;
4513
4514 if l_termination_date is not null then
4515 if l_termination_date >= p_tax_year_start and l_termination_date <= p_effective_date then
4516 p_fps_rec1.act_info2 := to_char(l_termination_date,'YYYY-MM-DD');
4517 else
4518 p_fps_rec1.act_info2 := to_char(p_payment_date,'YYYY-MM-DD');
4519 end if;
4520 end if;
4521
4522 hr_utility.trace('l_eff_start_date = '||l_eff_start_date);
4523 hr_utility.trace('l_eff_end_date = '||l_eff_end_date);
4524 hr_utility.trace('p_fps_rec1.act_info1 = '||p_fps_rec1.act_info1);
4525 hr_utility.trace('p_fps_rec1.act_info2 = '||p_fps_rec1.act_info2);
4526 return true;
4527 end;
4528
4529 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2)
4530 FUNCTION fetch_first_fps_asg_det2(
4531 p_last_asg_action_id IN NUMBER,
4532 p_asg_id IN NUMBER,
4533 p_effective_date in date,
4534 p_fps_bal_context_2 OUT nocopy act_info_rec )
4535 RETURN BOOLEAN
4536 IS
4537
4538 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
4539 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
4540 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_first_fps_asg_det2';
4541 l_asg_primary_flag VARCHAR2(1);
4542 l_per_agg_flag VARCHAR2(1);
4543 l_aggr_archive_flag VARCHAR2(1);
4544 l_last_chld_act_id NUMBER;
4545 l_arch BOOLEAN;
4546
4547 CURSOR csr_asg(c_asg_id NUMBER)
4548 IS
4549 SELECT trim(asg.primary_flag) asg_primary_flag,
4550 trim(pap.per_information10) per_agg_flag
4551 FROM per_all_people_f pap,
4552 per_all_assignments_f asg
4553 WHERE asg.assignment_id = c_asg_id
4554 AND pap.person_id = asg.person_id
4555 AND p_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
4556 AND p_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
4557
4558 cursor csr_tax_code_basis is
4559 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)),
4560 decode(max(decode(iv.name,'Tax Basis',screen_entry_value)),'N','Y',NULL)
4561 FROM pay_element_entries_f e,
4562 pay_element_entry_values_f v,
4563 pay_input_values_f iv,
4564 pay_element_links_f link
4565 WHERE e.assignment_id = p_asg_id
4566 AND link.element_type_id = g_paye_details_id
4567 AND e.element_link_id = link.element_link_id
4568 AND e.element_entry_id = v.element_entry_id
4569 AND iv.input_value_id = v.input_value_id
4570 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
4571 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
4572 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
4573 AND e.effective_end_date = (select max(e1.effective_end_date)
4574 from pay_element_entries_f e1,
4575 pay_element_links_f link1
4576 where link1.element_type_id = g_paye_details_id
4577 and e1.assignment_id = p_asg_id
4578 and e1.element_link_id = link1.element_link_id);
4579
4580 CURSOR csr_child_act_id(c_lst_act_id NUMBER) -- kvinayku
4581 IS
4582 SELECT NVL(MAX(ASSIGNMENT_ACTION_ID),c_lst_act_id)
4583 FROM pay_assignment_actions
4584 WHERE SOURCE_ACTION_ID = c_lst_act_id;
4585
4586 CURSOR csr_tax_paye_result(p_action_id NUMBER) -- kvinayku
4587 IS
4588 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
4589 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
4590 FROM pay_run_results prr ,
4591 pay_run_result_values prrv ,
4592 pay_input_values_f pivf
4593 WHERE prr.assignment_action_id = p_action_id
4594 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
4595 AND prrv.run_result_id = prr.run_result_id
4596 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
4597
4598 l_tax_code varchar2(10);
4599 l_tax_basis varchar2(1);
4600
4601 BEGIN
4602 l_arch := true;
4603
4604 hr_utility.set_location('Entering: '||l_proc,1);
4605 l_context_lst(1).tax_unit_id :=NULL;
4606 l_context_lst(1).jurisdiction_code :=NULL;
4607 l_context_lst(1).source_id :=NULL;
4608 l_context_lst(1).source_text :=NULL;
4609 l_context_lst(1).source_number :=NULL;
4610 l_context_lst(1).source_text2 :=NULL;
4611 l_context_lst(1).time_def_id :=NULL;
4612 l_context_lst(1).balance_date :=NULL;
4613 l_context_lst(1).local_unit_id :=NULL;
4614 l_context_lst(1).source_number2 :=NULL;
4615 l_context_lst(1).organization_id :=NULL;
4616
4617 hr_utility.set_location('Assignment_id :' || p_asg_id,15);
4618 l_asg_primary_flag := 'N';
4619 l_per_agg_flag := 'N';
4620 l_aggr_archive_flag := 'N';
4621
4622 OPEN csr_asg(p_asg_id);
4623 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
4624 CLOSE csr_asg;
4625
4626 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
4627 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
4628 /*
4629 IF NVL(l_per_agg_flag,'N') = 'Y' THEN
4630 IF NVL(l_asg_primary_flag,'N') = 'Y' THEN
4631 hr_utility.trace('Aggregation Found.');
4632 l_aggr_archive_flag := 'Y';
4633 END IF;
4634 END IF;
4635 */
4636 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
4637 ---
4638
4639 -- IF (l_aggr_archive_flag = 'N' AND NVL(l_per_agg_flag,'N') = 'N') THEN
4640 hr_utility.trace('l_aggr_archive_flag = N');
4641 -- Get the child assignment action id to Archive Tax code and Tax basis.
4642 -- As the run results are generated with child assignment action id.
4643
4644 -- added by kvinayku start
4645 OPEN csr_child_act_id(p_last_asg_action_id);
4646 FETCH csr_child_act_id INTO l_last_chld_act_id;
4647 CLOSE csr_child_act_id;
4648
4649 --Tax code fix start
4650 /* OPEN csr_tax_paye_result(l_last_chld_act_id);
4651 FETCH csr_tax_paye_result
4652 INTO p_fps_bal_context_2.act_info25,
4653 p_fps_bal_context_2.act_info27;
4654 CLOSE csr_tax_paye_result;
4655
4656 if p_fps_bal_context_2.act_info27 is null then
4657 open csr_tax_code_basis;
4658 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4659 p_fps_bal_context_2.act_info27;
4660 close csr_tax_code_basis;
4661 end if; */
4662
4663 fetch_tax_code_basis(l_last_chld_act_id,
4664 p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
4665
4666 if p_fps_bal_context_2.act_info25 is null then
4667 open csr_tax_code_basis;
4668 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4669 p_fps_bal_context_2.act_info27;
4670 close csr_tax_code_basis;
4671 end if;
4672
4673 --Tax code fix end
4674
4675 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
4676
4677 --p_fps_bal_context_2.act_info25 := l_tax_code;
4678 --p_fps_bal_context_2.act_info27 := l_tax_basis;
4679
4680 -- added by kvinayku end
4681
4682 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
4683 p_defined_balance_lst => g_defined_balance_lst ,
4684 p_context_lst => l_context_lst ,
4685 p_output_table => l_output_table );
4686 hr_utility.trace('After invoking get_value');
4687 p_fps_bal_context_2.assignment_id := p_asg_id;
4688 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
4689 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
4690
4691 FOR outer_rec IN 1..l_output_table.count
4692 LOOP
4693
4694 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4695
4696 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4697 LOOP
4698 IF (g_fps_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id) THEN
4699 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
4700 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD' ) THEN
4701 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4702 p_fps_bal_context_2.act_info1 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4703 END IF;
4704 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
4705 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4706 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4707 p_fps_bal_context_2.act_info2 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4708 END IF;
4709 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
4710 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4711 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4712 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4713 END IF;
4714 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
4715 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4716 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4717 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4718 END IF;
4719 -- This is for newly created balances
4720 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
4721 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4722 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4723 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4724 END IF;
4725 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of NI' THEN
4726 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4727 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4728 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4729 END IF;
4730 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
4731 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4732 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4733 p_fps_bal_context_2.act_info18 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4734 END IF;
4735 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
4736 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4737 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4738 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4739 END IF;
4740 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
4741 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4742 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4743 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4744 END IF;
4745 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
4746 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4747 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4748 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4749 END IF;
4750
4751 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
4752 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4753 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4754 p_fps_bal_context_2.act_info21 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4755 END IF;
4756 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
4757 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4758 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4759 p_fps_bal_context_2.act_info22 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4760 END IF;
4761 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
4762 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4763 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4764 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4765 END IF;
4766 -- Bug 16505555 fix
4767 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
4768 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4769 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4770 p_fps_bal_context_2.act_info26 := nvl(p_fps_bal_context_2.act_info26,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4771 END IF;
4772 -- Bug 16505555 fix
4773 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
4774 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4775 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4776 p_fps_bal_context_2.act_info28 := nvl(p_fps_bal_context_2.act_info28,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4777 END IF;
4778 END IF;
4779 END IF;
4780 END LOOP;
4781 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
4782 END IF; --Not null check ends
4783 END LOOP;
4784 p_fps_bal_context_2.act_info17 := 0; -- Tax Deducted refunded
4785 -- END IF;
4786
4787 hr_utility.trace(p_asg_id||'Leaving asg2 details function ');
4788
4789 RETURN l_arch;
4790
4791 EXCEPTION
4792 WHEN OTHERS THEN
4793 hr_utility.set_location('Error in function fetch_fps_asg_det2 ', 15);
4794 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
4795 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
4796 RAISE;
4797
4798 END fetch_first_fps_asg_det2;
4799
4800 -- Below function is to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2).
4801 -- This function is used for PAYE Aggregated scenarios processed as part of First FPS.
4802
4803 FUNCTION fetch_first_fps_agg_asg_det2(
4804 p_last_asg_action_id IN NUMBER,
4805 p_asg_id IN NUMBER,
4806 p_effective_date in date,
4807 p_fps_bal_context_2 OUT nocopy act_info_rec )
4808 RETURN BOOLEAN
4809 IS
4810
4811 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
4812 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
4813 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_first_fps_agg_asg_det2';
4814 l_asg_primary_flag VARCHAR2(1);
4815 l_per_agg_flag VARCHAR2(1);
4816 l_aggr_archive_flag VARCHAR2(1);
4817 l_last_chld_act_id NUMBER;
4818 l_arch BOOLEAN;
4819
4820 CURSOR csr_asg(c_asg_id NUMBER)
4821 IS
4822 SELECT trim(asg.primary_flag) asg_primary_flag,
4823 trim(pap.per_information10) per_agg_flag
4824 FROM per_all_people_f pap,
4825 per_all_assignments_f asg
4826 WHERE asg.assignment_id = c_asg_id
4827 AND pap.person_id = asg.person_id
4828 AND p_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
4829 AND p_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
4830
4831 cursor csr_tax_code_basis is
4832 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)),
4833 decode(max(decode(iv.name,'Tax Basis',screen_entry_value)),'N','Y',NULL)
4834 FROM pay_element_entries_f e,
4835 pay_element_entry_values_f v,
4836 pay_input_values_f iv,
4837 pay_element_links_f link
4838 WHERE e.assignment_id = p_asg_id
4839 AND link.element_type_id = g_paye_details_id
4840 AND e.element_link_id = link.element_link_id
4841 AND e.element_entry_id = v.element_entry_id
4842 AND iv.input_value_id = v.input_value_id
4843 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
4844 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
4845 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
4846 AND e.effective_end_date = (select max(e1.effective_end_date)
4847 from pay_element_entries_f e1,
4848 pay_element_links_f link1
4849 where link1.element_type_id = g_paye_details_id
4850 and e1.assignment_id = p_asg_id
4851 and e1.element_link_id = link1.element_link_id);
4852
4853 CURSOR csr_child_act_id(c_lst_act_id NUMBER) -- kvinayku
4854 IS
4855 SELECT NVL(MAX(ASSIGNMENT_ACTION_ID),c_lst_act_id)
4856 FROM pay_assignment_actions
4857 WHERE SOURCE_ACTION_ID = c_lst_act_id;
4858
4859 CURSOR csr_tax_paye_result(p_action_id NUMBER) -- kvinayku
4860 IS
4861 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
4862 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
4863 FROM pay_run_results prr ,
4864 pay_run_result_values prrv ,
4865 pay_input_values_f pivf
4866 WHERE prr.assignment_action_id = p_action_id
4867 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
4868 AND prrv.run_result_id = prr.run_result_id
4869 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
4870
4871 l_tax_code varchar2(10);
4872 l_tax_basis varchar2(1);
4873
4874 BEGIN
4875 l_arch := true;
4876
4877 hr_utility.set_location('Entering: '||l_proc,1);
4878 l_context_lst(1).tax_unit_id :=NULL;
4879 l_context_lst(1).jurisdiction_code :=NULL;
4880 l_context_lst(1).source_id :=NULL;
4881 l_context_lst(1).source_text :=NULL;
4882 l_context_lst(1).source_number :=NULL;
4883 l_context_lst(1).source_text2 :=NULL;
4884 l_context_lst(1).time_def_id :=NULL;
4885 l_context_lst(1).balance_date :=NULL;
4886 l_context_lst(1).local_unit_id :=NULL;
4887 l_context_lst(1).source_number2 :=NULL;
4888 l_context_lst(1).organization_id :=NULL;
4889
4890 hr_utility.set_location('Assignment_id :' || p_asg_id,15);
4891 l_asg_primary_flag := 'N';
4892 l_per_agg_flag := 'N';
4893 l_aggr_archive_flag := 'N';
4894
4895 OPEN csr_asg(p_asg_id);
4896 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
4897 CLOSE csr_asg;
4898
4899 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
4900 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
4901
4902 OPEN csr_child_act_id(p_last_asg_action_id);
4903 FETCH csr_child_act_id INTO l_last_chld_act_id;
4904 CLOSE csr_child_act_id;
4905
4906 --Tax code fix start
4907 /* OPEN csr_tax_paye_result(l_last_chld_act_id);
4908 FETCH csr_tax_paye_result
4909 INTO p_fps_bal_context_2.act_info25,
4910 p_fps_bal_context_2.act_info27;
4911 CLOSE csr_tax_paye_result;
4912
4913 if p_fps_bal_context_2.act_info27 is null then
4914 open csr_tax_code_basis;
4915 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4916 p_fps_bal_context_2.act_info27;
4917 close csr_tax_code_basis;
4918 end if; */
4919
4920 fetch_tax_code_basis(l_last_chld_act_id,
4921 p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
4922
4923 if p_fps_bal_context_2.act_info25 is null then
4924 open csr_tax_code_basis;
4925 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4926 p_fps_bal_context_2.act_info27;
4927 close csr_tax_code_basis;
4928 end if;
4929
4930 --Tax code fix end
4931 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
4932
4933 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
4934 p_defined_balance_lst => g_defined_balance_lst ,
4935 p_context_lst => l_context_lst ,
4936 p_output_table => l_output_table );
4937 hr_utility.trace('After invoking get_value');
4938 p_fps_bal_context_2.assignment_id := p_asg_id;
4939 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
4940 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
4941
4942 FOR outer_rec IN 1..l_output_table.count
4943 LOOP
4944
4945 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4946
4947 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4948 LOOP
4949 IF (g_fps_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id) THEN
4950 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
4951 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
4952 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4953 p_fps_bal_context_2.act_info1 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4954 END IF;
4955 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
4956 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
4957 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4958 p_fps_bal_context_2.act_info2 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4959 END IF;
4960 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
4961 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4962 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4963 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4964 END IF;
4965 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
4966 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4967 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4968 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4969 END IF;
4970 -- This is for newly created balances
4971 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
4972 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4973 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4974 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4975 END IF;
4976 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of NI' THEN
4977 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4978 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4979 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4980 END IF;
4981 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
4982 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4983 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4984 p_fps_bal_context_2.act_info18 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4985 END IF;
4986 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
4987 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4988 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4989 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4990 END IF;
4991 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
4992 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4993 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4994 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
4995 END IF;
4996 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
4997 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4998 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4999 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
5000 END IF;
5001
5002 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5003 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5004 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5005 p_fps_bal_context_2.act_info21 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5006 END IF;
5007 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
5008 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5009 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5010 p_fps_bal_context_2.act_info22 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5011 END IF;
5012 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
5013 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5014 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5015 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
5016 END IF;
5017 -- Bug 16505555 fix
5018 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5019 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5020 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5021 p_fps_bal_context_2.act_info26 := nvl(p_fps_bal_context_2.act_info26,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
5022 END IF;
5023 -- Bug 16505555 fix
5024 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5025 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5026 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5027 p_fps_bal_context_2.act_info28 := nvl(p_fps_bal_context_2.act_info28,0) + 100 * NVL(l_output_table(outer_rec).balance_value,0);
5028 END IF;
5029 END IF;
5030 END IF;
5031 END LOOP;
5032 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5033 END IF; --Not null check ends
5034 END LOOP;
5035 p_fps_bal_context_2.act_info17 := 0; -- Tax Deducted refunded
5036
5037 hr_utility.trace(p_asg_id||'Leaving fetch_first_fps_agg_asg_det2 details function');
5038
5039 RETURN l_arch;
5040
5041 EXCEPTION
5042 WHEN OTHERS THEN
5043 hr_utility.set_location('Error in function fetch_first_fps_agg_asg_det2 ', 15);
5044 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
5045 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
5046 RAISE;
5047
5048 END fetch_first_fps_agg_asg_det2;
5049
5050 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2)
5051 FUNCTION fetch_fps_asg_det2(
5052 p_last_asg_action_id IN NUMBER,
5053 p_asg_id IN NUMBER,
5054 p_fps_bal_context_2 IN OUT nocopy act_info_rec )
5055 RETURN BOOLEAN
5056 IS
5057 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
5058 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
5059 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_asg_det2';
5060 l_asg_primary_flag VARCHAR2(1);
5061 l_per_agg_flag VARCHAR2(1);
5062 l_aggr_archive_flag VARCHAR2(1);
5063 l_last_chld_act_id NUMBER;
5064 l_tax_pay_val number;
5065 l_tax_pay_def_bal_id number;
5066 l_child_exists VARCHAR2(1);
5067 l_chld_act_id NUMBER;
5068 l_max_chld_act_id NUMBER;
5069
5070 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
5071 IS
5072 SELECT trim(asg.primary_flag) asg_primary_flag,
5073 trim(pap.per_information10) per_agg_flag
5074 FROM per_all_people_f pap,
5075 per_all_assignments_f asg
5076 WHERE asg.assignment_id = c_asg_id
5077 AND pap.person_id = asg.person_id
5078 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
5079 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
5080
5081 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
5082 IS
5083 SELECT assignment_action_id
5084 FROM pay_assignment_actions
5085 WHERE source_action_id = c_lst_act_id;
5086
5087 CURSOR csr_tax_paye_result(p_action_id NUMBER)
5088 IS
5089 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
5090 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
5091 FROM pay_run_results prr ,
5092 pay_run_result_values prrv ,
5093 pay_input_values_f pivf
5094 WHERE prr.assignment_action_id = p_action_id
5095 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
5096 AND prrv.run_result_id = prr.run_result_id
5097 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
5098
5099 CURSOR csr_paye_details(p_assignment_id NUMBER) IS
5100 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)) tax_code,
5101 max(decode(iv.name,'Tax Basis',DECODE(screen_entry_value,'N','Y',NULL),NULL)) tax_basis -- kvinayku bug no 14774165
5102 FROM pay_element_entries_f e,
5103 pay_element_entry_values_f v,
5104 pay_input_values_f iv,
5105 pay_element_links_f link
5106 WHERE e.assignment_id = p_asg_id
5107 AND link.element_type_id = g_paye_details_id
5108 AND e.element_link_id = link.element_link_id
5109 AND e.element_entry_id = v.element_entry_id
5110 AND iv.input_value_id = v.input_value_id
5111 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
5112 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
5113 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
5114 AND e.effective_end_date = (select max(e1.effective_end_date)
5115 from pay_element_entries_f e1,
5116 pay_element_links_f link1
5117 where link1.element_type_id = g_paye_details_id
5118 and e1.assignment_id = p_asg_id
5119 and e1.element_link_id = link1.element_link_id);
5120
5121 cursor csr_get_taxable_pay(c_balance_name varchar2, c_dim_name varchar2) is
5122 select pdb.defined_balance_id from pay_defined_balances pdb,
5123 pay_balance_dimensions pbd,
5124 pay_balance_types pbt
5125 where pbt.balance_name = c_balance_name
5126 and pbd.database_item_suffix = c_dim_name
5127 and pbt.balance_type_id= pdb.balance_type_id
5128 and pbd.balance_dimension_id = pdb.balance_dimension_id and
5129 pbt.legislation_code = 'GB';
5130
5131 cursor csr_tax_pay_value(p_last_asg_action_id number,l_tax_pay_def_bal_id number)
5132 is
5133 select hr_dirbal.get_balance(p_last_asg_action_id,l_tax_pay_def_bal_id) from dual;
5134
5135 CURSOR csr_max_child_act_id(c_lst_act_id NUMBER)
5136 IS
5137 SELECT max(assignment_action_id)
5138 FROM pay_assignment_actions
5139 WHERE source_action_id = c_lst_act_id;
5140
5141 BEGIN
5142 hr_utility.set_location('Entering: '||l_proc,1);
5143 l_context_lst(1).tax_unit_id :=NULL;
5144 l_context_lst(1).jurisdiction_code :=NULL;
5145 l_context_lst(1).source_id :=NULL;
5146 l_context_lst(1).source_text :=NULL;
5147 l_context_lst(1).source_number :=NULL;
5148 l_context_lst(1).source_text2 :=NULL;
5149 l_context_lst(1).time_def_id :=NULL;
5150 l_context_lst(1).balance_date :=NULL;
5151 l_context_lst(1).local_unit_id :=NULL;
5152 l_context_lst(1).source_number2 :=NULL;
5153 l_context_lst(1).organization_id :=NULL;
5154 hr_utility.set_location('assignment_id :' || p_asg_id,15);
5155 l_asg_primary_flag := 'N';
5156 l_per_agg_flag := 'N';
5157 l_aggr_archive_flag := 'N';
5158
5159 OPEN csr_asg(p_asg_id, g_effective_date);
5160 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
5161 CLOSE csr_asg;
5162
5163 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
5164 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
5165
5166 IF NVL(l_per_agg_flag,'N') = 'Y' THEN
5167 IF NVL(l_asg_primary_flag,'N') = 'Y' THEN
5168 hr_utility.trace('Aggregation Found.');
5169 l_aggr_archive_flag := 'Y';
5170 END IF;
5171 END IF;
5172 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
5173 ---
5174
5175 IF (l_aggr_archive_flag = 'N' AND NVL(l_per_agg_flag,'N') = 'N') THEN
5176 hr_utility.trace('l_aggr_archive_flag = N');
5177 -- Get the child assignment action id to Archive Tax code and Tax basis.
5178 -- As the run results are generated with child assignment action id.
5179
5180 open csr_get_taxable_pay('Taxable Pay', '_ASG_RUN');
5181 fetch csr_get_taxable_pay into l_tax_pay_def_bal_id;
5182 close csr_get_taxable_pay;
5183
5184 open csr_tax_pay_value(p_last_asg_action_id,l_tax_pay_def_bal_id);
5185 fetch csr_tax_pay_value into l_tax_pay_val;
5186 close csr_tax_pay_value;
5187 hr_utility.set_location('l_tax_pay_val :' ||l_tax_pay_val ,15);
5188
5189 IF l_tax_pay_val = 0 THEN
5190 OPEN csr_child_act_id(p_last_asg_action_id);
5191 FETCH csr_child_act_id INTO l_chld_act_id;
5192 CLOSE csr_child_act_id;
5193 l_child_exists := 'Y';
5194 ELSE
5195 l_chld_act_id := p_last_asg_action_id;
5196 l_child_exists := 'N';
5197 END IF;
5198
5199 IF l_chld_act_id IS NULL THEN
5200 l_chld_act_id := p_last_asg_action_id;
5201 l_child_exists := 'N';
5202 END IF;
5203
5204 OPEN csr_max_child_act_id(p_last_asg_action_id);
5205 FETCH csr_max_child_act_id INTO l_max_chld_act_id;
5206 CLOSE csr_max_child_act_id;
5207
5208 hr_utility.trace('l_max_chld_act_id : '||l_max_chld_act_id);
5209
5210 fetch_tax_code_basis(l_max_chld_act_id,
5211 p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
5212
5213 if p_fps_bal_context_2.act_info25 is null then
5214 open csr_paye_details(p_asg_id);
5215 fetch csr_paye_details
5216 into p_fps_bal_context_2.act_info25,
5217 p_fps_bal_context_2.act_info27;
5218 close csr_paye_details;
5219 end if;
5220
5221 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
5222
5223 --Check whether we need to get balances with master asg action id or child asg action id
5224 if l_child_exists = 'N' then
5225 --We need to get balances with master asg action id
5226 hr_utility.trace('Processing with Master Action ID:'||p_last_asg_action_id);
5227
5228 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
5229 p_defined_balance_lst => g_defined_balance_lst ,
5230 p_context_lst => l_context_lst ,
5231 p_output_table => l_output_table );
5232
5233 hr_utility.trace('After invoking get_value');
5234 p_fps_bal_context_2.assignment_id := p_asg_id;
5235 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
5236 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
5237
5238 --Get all balances with master asg action id
5239 FOR outer_rec IN 1..l_output_table.count
5240 LOOP
5241
5242 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5243
5244 FOR inner_rec IN 1..g_fps_bal_det_tab.last
5245 LOOP
5246 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
5247 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5248 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD' ) THEN
5249 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5250 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
5251 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5252 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5253 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5254 END IF;
5255 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5256 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5257 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5258 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
5259 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5260 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5261 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5262 END IF;
5263 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5264 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5265 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5266 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5267 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5268 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5269 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5270 END IF;
5271 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5272 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5273 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5274 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5275 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5276 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5277 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5278 END IF;
5279 -- This is for newly created balances
5280 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5281 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5282 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5283 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5284 END IF;
5285 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5286 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5287 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5288 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5289 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5290 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5291 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5292 end if;
5293 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5294 if g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5295 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5296 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5297 end if;
5298 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5299 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5300 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5301 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5302 END IF;
5303 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
5304 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5305 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5306 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5307 END IF;
5308 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
5309 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5310 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5311 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5312 END IF;
5313 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5314 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5315 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5316 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5317 END IF;
5318 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5319 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5320 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5321 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5322 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5323 END IF;
5324 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5325 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5326 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5327 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5328 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5329 END IF;
5330 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5331 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5332 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5333 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5334 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5335 END IF;
5336 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5337 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5338 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5339 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5340 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5341 END IF;
5342 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5343 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5344 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5345 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5346 -- Bug 16505555 fix
5347 elsif (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5348 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5349 p_fps_bal_context_2.act_info26 := 100 * l_output_table(outer_rec).balance_value;
5350 END IF;
5351 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5352 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5353 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5354 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5355 -- Bug 16505555 fix
5356 elsif (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5357 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5358 p_fps_bal_context_2.act_info28 := 100 * l_output_table(outer_rec).balance_value;
5359 END IF;
5360 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5361 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5362 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5363 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
5364 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5365 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5366 END IF;
5367 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5368 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5369 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5370 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5371 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5372 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5373 END IF;
5374 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
5375 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5376 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5377 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5378 END IF;
5379 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
5380 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5381 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5382 --g_spp_total := 100 * l_output_table(outer_rec).balance_value;
5383 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5384 END IF;
5385 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5386 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5387 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5388 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
5389 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5390 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5391 END IF;
5392 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
5393 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5394 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5395 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5396 END IF;
5397 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
5398 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5399 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5400 --g_assp_total := 100 * l_output_table(outer_rec).balance_value;
5401 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5402 END IF;
5403 END IF;
5404 END IF;
5405 END LOOP;
5406 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5407 END IF;
5408 END LOOP;
5409
5410 ELSE -- for if l_child_exists = 'N' then
5411 --We need to get balances with child asg action id
5412 hr_utility.trace('Processing with Child Action IDs of:'||p_last_asg_action_id);
5413
5414 FOR rec IN csr_child_act_id(p_last_asg_action_id)
5415 LOOP
5416 --Loop for getting the balances for all child asg action id's
5417 l_chld_act_id := rec.assignment_action_id;
5418 hr_utility.trace('l_chld_act_id:'||l_chld_act_id);
5419 pay_balance_pkg.get_value(p_assignment_action_id => l_chld_act_id ,
5420 p_defined_balance_lst => g_defined_balance_lst ,
5421 p_context_lst => l_context_lst ,
5422 p_output_table => l_output_table );
5423
5424 hr_utility.trace('After invoking get_value');
5425 p_fps_bal_context_2.assignment_id := p_asg_id;
5426 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
5427 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
5428 --Check whether this is the latest child asg action id
5429 IF (l_chld_act_id = l_max_chld_act_id) then
5430 --It is the latest child asg action id
5431 --Get all the balances with this latest child asg action id
5432 hr_utility.trace('in side if l_chld_act_id = l_max_chld_act_id');
5433 FOR outer_rec IN 1..l_output_table.count
5434 LOOP
5435 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5436
5437 FOR inner_rec IN 1..g_fps_bal_det_tab.last
5438 LOOP
5439 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
5440 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5441 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD' ) THEN
5442 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5443 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
5444 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5445 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5446 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5447 END IF;
5448 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5449 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5450 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5451 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
5452 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5453 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5454 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5455 END IF;
5456 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5457 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5458 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5459 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5460 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5461 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5462 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5463 END IF;
5464 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5465 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5466 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5467 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5468 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5469 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5470 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5471 END IF;
5472 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5473 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5474 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5475 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5476 END IF;
5477 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5478 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5479 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5480 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5481 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5482 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5483 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5484 end if;
5485 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5486 if g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5487 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5488 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5489 end if;
5490 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5491 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5492 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5493 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5494 END IF;
5495 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
5496 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5497 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5498 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5499 END IF;
5500 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
5501 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5502 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5503 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5504 END IF;
5505 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5506 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5507 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5508 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5509 END IF;
5510 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5511 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5512 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5513 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5514 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5515 END IF;
5516 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5517 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5518 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5519 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5520 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5521 END IF;
5522 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5523 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5524 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5525 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5526 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5527 END IF;
5528 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5529 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5530 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5531 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5532 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5533 END IF;
5534 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5535 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5536 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5537 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5538 -- Bug 16505555 fix
5539 elsif (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5540 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5541 p_fps_bal_context_2.act_info26 := 100 * l_output_table(outer_rec).balance_value;
5542 END IF;
5543 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5544 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5545 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5546 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5547 -- Bug 16505555 fix
5548 elsif (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5549 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5550 p_fps_bal_context_2.act_info28 := 100 * l_output_table(outer_rec).balance_value;
5551 END IF;
5552 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5553 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5554 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5555 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
5556 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5557 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5558 END IF;
5559 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5560 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5561 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5562 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5563 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5564 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5565
5566 END IF;
5567 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
5568 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5569 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5570 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5571 END IF;
5572 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
5573 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5574 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5575 --g_spp_total := 100 * l_output_table(outer_rec).balance_value;
5576 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5577 END IF;
5578 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5579 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5580 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5581 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
5582 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5583 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5584 END IF;
5585 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
5586 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5587 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5588 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5589 END IF;
5590 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
5591 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
5592 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5593 --g_assp_total := 100 * l_output_table(outer_rec).balance_value;
5594 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5595 END IF;
5596 END IF;
5597 END IF;
5598 END LOOP;
5599 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5600 END IF;
5601 END LOOP;
5602
5603 ELSE --for IF (l_chld_act_id = l_max_chld_act_id) then
5604 --It is not the latest child asg action id
5605 --Get only the RUN balances with this child asg action id
5606 hr_utility.trace('in side else l_chld_act_id = l_max_chld_act_id');
5607 FOR outer_rec IN 1..l_output_table.count
5608 LOOP
5609 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5610
5611 FOR inner_rec IN 1..g_fps_bal_det_tab.last
5612 LOOP
5613 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
5614 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5615 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5616 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5617 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5618 END IF;
5619 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5620 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5621 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5622 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5623 END IF;
5624 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5625 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5626 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5627 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5628 END IF;
5629 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5630 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5631 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5632 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5633 END IF;
5634 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5635 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5636 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5637 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5638 END IF;
5639 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5640 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5641 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5642 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5643 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5644 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5645 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5646 end if;
5647 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5648 if g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5649 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5650 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5651 end if;
5652 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5653 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5654 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5655 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5656 END IF;
5657 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5658 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5659 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5660 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5661 END IF;
5662 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5663 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5664 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5665 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5666 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5667 END IF;
5668 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5669 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5670 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5671 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5672 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5673 END IF;
5674 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5675 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5676 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5677 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5678 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5679 END IF;
5680 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5681 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5682 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5683 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5684 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5685 END IF;
5686 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5687 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5688 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5689 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5690 END IF;
5691 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5692 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5693 g_fps_bal_det_tab(inner_rec).balance_value := NVL(g_fps_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5694 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5695 END IF;
5696 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5697 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5698 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5699 END IF;
5700 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5701 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5702 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5703 END IF;
5704 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5705 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5706 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5707 END IF;
5708 END IF;
5709 END IF;
5710 END LOOP;
5711 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5712 END IF;
5713 END LOOP;
5714
5715 END IF;
5716
5717 END LOOP;
5718 END IF; --for if l_child_exists = 'N' then
5719 END IF;
5720 RETURN true;
5721
5722 EXCEPTION
5723 WHEN OTHERS THEN
5724 hr_utility.set_location('Error in function fetch_fps_asg_det2 ', 15);
5725 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
5726 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
5727 RAISE;
5728 END fetch_fps_asg_det2;
5729 --
5730 --
5731 --
5732 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2) for PAYE aggregated cases
5733 FUNCTION fetch_fps_agg_asg_det2(
5734 p_last_asg_action_id IN NUMBER,
5735 p_asg_id IN NUMBER,
5736 p_fps_bal_context_2 IN OUT nocopy act_info_rec )
5737 RETURN BOOLEAN
5738 IS
5739 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
5740 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
5741 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_agg_asg_det2';
5742 l_asg_primary_flag VARCHAR2(1);
5743 l_per_agg_flag VARCHAR2(1);
5744 l_aggr_archive_flag VARCHAR2(1);
5745 l_last_chld_act_id NUMBER;
5746 l_tax_pay_val number;
5747 l_tax_pay_def_bal_id number;
5748 l_child_exists VARCHAR2(1);
5749 l_chld_act_id NUMBER;
5750 l_max_chld_act_id NUMBER;
5751
5752 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
5753 IS
5754 SELECT trim(asg.primary_flag) asg_primary_flag,
5755 trim(pap.per_information10) per_agg_flag
5756 FROM per_all_people_f pap,
5757 per_all_assignments_f asg
5758 WHERE asg.assignment_id = c_asg_id
5759 AND pap.person_id = asg.person_id
5760 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
5761 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
5762
5763 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
5764 IS
5765 SELECT ASSIGNMENT_ACTION_ID
5766 FROM pay_assignment_actions
5767 WHERE SOURCE_ACTION_ID = c_lst_act_id;
5768
5769 CURSOR csr_tax_paye_result(p_action_id NUMBER)
5770 IS
5771 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
5772 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
5773 FROM pay_run_results prr ,
5774 pay_run_result_values prrv ,
5775 pay_input_values_f pivf
5776 WHERE prr.assignment_action_id = p_action_id
5777 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
5778 AND prrv.run_result_id = prr.run_result_id
5779 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
5780
5781 CURSOR csr_paye_details(p_assignment_id NUMBER) IS
5782 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)) tax_code,
5783 max(decode(iv.name,'Tax Basis',decode(screen_entry_value,'N','Y',NULL),NULL)) tax_basis -- added by kvinayku 14774165
5784 FROM pay_element_entries_f e,
5785 pay_element_entry_values_f v,
5786 pay_input_values_f iv,
5787 pay_element_links_f link
5788 WHERE e.assignment_id = p_asg_id
5789 AND link.element_type_id = g_paye_details_id
5790 AND e.element_link_id = link.element_link_id
5791 AND e.element_entry_id = v.element_entry_id
5792 AND iv.input_value_id = v.input_value_id
5793 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
5794 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
5795 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
5796 AND e.effective_end_date = (select max(e1.effective_end_date)
5797 from pay_element_entries_f e1,
5798 pay_element_links_f link1
5799 where link1.element_type_id = g_paye_details_id
5800 and e1.assignment_id = p_asg_id
5801 and e1.element_link_id = link1.element_link_id);
5802
5803
5804 cursor csr_get_taxable_pay(c_balance_name varchar2, c_dim_name varchar2) is
5805 select pdb.defined_balance_id from pay_defined_balances pdb,
5806 pay_balance_dimensions pbd,
5807 pay_balance_types pbt
5808 where pbt.balance_name = c_balance_name
5809 and pbd.database_item_suffix = c_dim_name
5810 and pbt.balance_type_id= pdb.balance_type_id
5811 and pbd.balance_dimension_id = pdb.balance_dimension_id and
5812 pbt.legislation_code = 'GB';
5813
5814 cursor csr_tax_pay_value(p_last_asg_action_id number,l_tax_pay_def_bal_id number)
5815 is
5816 select hr_dirbal.get_balance(p_last_asg_action_id,l_tax_pay_def_bal_id) from dual;
5817
5818 CURSOR csr_max_child_act_id(c_lst_act_id NUMBER)
5819 IS
5820 SELECT max(assignment_action_id)
5821 FROM pay_assignment_actions
5822 WHERE source_action_id = c_lst_act_id;
5823
5824 BEGIN
5825 hr_utility.set_location('Entering: '||l_proc,1);
5826 l_context_lst(1).tax_unit_id :=NULL;
5827 l_context_lst(1).jurisdiction_code :=NULL;
5828 l_context_lst(1).source_id :=NULL;
5829 l_context_lst(1).source_text :=NULL;
5830 l_context_lst(1).source_number :=NULL;
5831 l_context_lst(1).source_text2 :=NULL;
5832 l_context_lst(1).time_def_id :=NULL;
5833 l_context_lst(1).balance_date :=NULL;
5834 l_context_lst(1).local_unit_id :=NULL;
5835 l_context_lst(1).source_number2 :=NULL;
5836 l_context_lst(1).organization_id :=NULL;
5837 hr_utility.set_location('assignment_id :' || p_asg_id,15);
5838 l_asg_primary_flag := 'N';
5839 l_per_agg_flag := 'N';
5840 l_aggr_archive_flag := 'N';
5841
5842 OPEN csr_asg(p_asg_id, g_effective_date);
5843 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
5844 CLOSE csr_asg;
5845
5846 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
5847 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
5848 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
5849 ---
5850
5851 open csr_get_taxable_pay('Taxable Pay', '_ASG_RUN');
5852 fetch csr_get_taxable_pay into l_tax_pay_def_bal_id;
5853 close csr_get_taxable_pay;
5854
5855 open csr_tax_pay_value(p_last_asg_action_id,l_tax_pay_def_bal_id);
5856 fetch csr_tax_pay_value into l_tax_pay_val;
5857 close csr_tax_pay_value;
5858 hr_utility.set_location('l_tax_pay_val :' ||l_tax_pay_val ,15);
5859 -- Test whether we can get run level value with parent action id.
5860 -- If not pass the child assignment action id.
5861
5862 if l_tax_pay_val = 0 then
5863
5864 OPEN csr_child_act_id(p_last_asg_action_id);
5865 FETCH csr_child_act_id INTO l_chld_act_id;
5866 CLOSE csr_child_act_id;
5867
5868 l_child_exists := 'Y';
5869 ELSE
5870 l_chld_act_id := p_last_asg_action_id;
5871 l_child_exists := 'N';
5872 END IF;
5873
5874 IF l_chld_act_id IS NULL THEN
5875 l_chld_act_id := p_last_asg_action_id;
5876 l_child_exists := 'N';
5877 END IF;
5878
5879 OPEN csr_max_child_act_id(p_last_asg_action_id);
5880 FETCH csr_max_child_act_id INTO l_max_chld_act_id;
5881 CLOSE csr_max_child_act_id;
5882
5883 hr_utility.trace('l_max_chld_act_id : '||l_max_chld_act_id);
5884
5885 fetch_tax_code_basis(l_max_chld_act_id, p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
5886
5887 if p_fps_bal_context_2.act_info25 is null then
5888 open csr_paye_details(p_asg_id);
5889 fetch csr_paye_details
5890 INTO p_fps_bal_context_2.act_info25,
5891 p_fps_bal_context_2.act_info27;
5892 close csr_paye_details;
5893 end if;
5894 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
5895
5896 --Check whether we need to get balances with master asg action id or child asg action id
5897 if l_child_exists = 'N' then
5898 --We need to get balances with master asg action id
5899 hr_utility.trace('Processing with Master Action ID:'||p_last_asg_action_id);
5900 --
5901 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
5902 p_defined_balance_lst => g_aggr_defined_balance_lst ,
5903 p_context_lst => l_context_lst ,
5904 p_output_table => l_output_table );
5905
5906 hr_utility.trace('After invoking get_value');
5907 p_fps_bal_context_2.assignment_id := p_asg_id;
5908 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
5909 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
5910
5911 --Get all the balances with master asg action id
5912 FOR outer_rec IN 1..l_output_table.count
5913 LOOP
5914
5915 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5916
5917 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
5918 LOOP
5919 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
5920 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5921 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
5922 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5923 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
5924 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5925 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5926 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5927 END IF;
5928 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5929 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
5930 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5931 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
5932 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5933 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5934 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5935 END IF;
5936 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5937 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5938 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5939 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5940 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5941 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5942 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5943 END IF;
5944 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5945 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5946 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5947 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5948 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5949 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5950 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5951 END IF;
5952 -- This is for newly created balances
5953 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5954 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5955 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5956 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5957 END IF;
5958 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5959 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5960 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5961 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5962 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5963 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5964 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5965 end if;
5966 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5967 if g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5968 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5969 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5970 end if;
5971 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5972 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5973 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5974 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5975 END IF;
5976 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
5977 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5978 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5979 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5980 END IF;
5981 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
5982 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5983 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5984 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5985 END IF;
5986 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5987 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5988 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5989 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5990 END IF;
5991 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5992 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5993 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
5994 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5995 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5996 END IF;
5997 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5998 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5999 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6000 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6001 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
6002 END IF;
6003 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
6004 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6005 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6006 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
6007 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6008 END IF;
6009 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
6010 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6011 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6012 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
6013 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6014 END IF;
6015 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
6016 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6017 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6018 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
6019 -- Bug 16505555 fix
6020 elsif (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
6021 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6022 p_fps_bal_context_2.act_info26 := 100 * l_output_table(outer_rec).balance_value;
6023 END IF;
6024 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
6025 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6026 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6027 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
6028 -- Bug 16505555 fix
6029 elsif (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
6030 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6031 p_fps_bal_context_2.act_info28 := 100 * l_output_table(outer_rec).balance_value;
6032 END IF;
6033 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
6034 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6035 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6036 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
6037 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6038 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6039 END IF;
6040 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
6041 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6042 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6043 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6044 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6045 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6046
6047 END IF;
6048 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
6049 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6050 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6051 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
6052 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6053 g_spp_total := NVL(g_spp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6054 END IF;
6055 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
6056 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6057 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6058 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
6059 END IF;
6060 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
6061 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6062 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6063 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
6064 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6065 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
6066
6067 END IF;
6068 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
6069 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6070 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6071 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
6072 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6073 g_assp_total := NVL(g_assp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6074 END IF;
6075 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
6076 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6077 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6078 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
6079 END IF;
6080 END IF;
6081 END IF;
6082 END LOOP;
6083 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
6084 END IF; --Not null check ends
6085 END LOOP;
6086
6087 ELSE --For if l_child_exists = 'N' then
6088 --We need to get balances with child asg action id
6089 hr_utility.trace('Processing with Child Action IDs of:'||p_last_asg_action_id);
6090
6091 FOR rec IN csr_child_act_id(p_last_asg_action_id)
6092 LOOP
6093
6094 --Loop for getting the balances for all child asg action id's
6095 l_chld_act_id := rec.assignment_action_id;
6096 hr_utility.trace('l_chld_act_id:'||l_chld_act_id);
6097
6098 pay_balance_pkg.get_value(p_assignment_action_id => l_chld_act_id,
6099 p_defined_balance_lst => g_aggr_defined_balance_lst ,
6100 p_context_lst => l_context_lst ,
6101 p_output_table => l_output_table );
6102
6103 hr_utility.trace('After invoking get_value');
6104 p_fps_bal_context_2.assignment_id := p_asg_id;
6105 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
6106 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
6107
6108 --Check whether this is the latest child asg action id
6109 IF (l_chld_act_id = l_max_chld_act_id) then
6110 --It is the latest child asg action id
6111 --Get all the balances with this latest child asg action id
6112 FOR outer_rec IN 1..l_output_table.count
6113 LOOP
6114
6115 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
6116
6117 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
6118 LOOP
6119 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
6120 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
6121 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
6122 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6123 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
6124 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6125 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6126 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
6127 END IF;
6128 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
6129 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
6130 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6131 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
6132 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6133 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6134 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
6135 END IF;
6136 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
6137 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6138 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6139 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6140 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6141 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6142 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
6143 END IF;
6144 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
6145 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6146 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6147 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6148 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6149 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6150 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
6151 END IF;
6152 -- This is for newly created balances
6153 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
6154 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
6155 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6156 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
6157 END IF;
6158 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
6159 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
6160 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6161 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
6162 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6163 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6164 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
6165 end if;
6166 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
6167 if g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6168 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6169 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
6170 end if;
6171 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
6172 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6173 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6174 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
6175 END IF;
6176 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
6177 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6178 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6179 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
6180 END IF;
6181 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
6182 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6183 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6184 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
6185 END IF;
6186 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
6187 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6188 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6189 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
6190 END IF;
6191 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
6192 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6193 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6194 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6195 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
6196 END IF;
6197 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
6198 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6199 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6200 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6201 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
6202 END IF;
6203 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
6204 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6205 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6206 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
6207 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6208 END IF;
6209 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
6210 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6211 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6212 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
6213 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6214 END IF;
6215 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
6216 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6217 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6218 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
6219 -- Bug 16505555 fix
6220 elsif (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
6221 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6222 p_fps_bal_context_2.act_info26 := 100 * l_output_table(outer_rec).balance_value;
6223 END IF;
6224 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
6225 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6226 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6227 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
6228 -- Bug 16505555 fix
6229 elsif (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
6230 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6231 p_fps_bal_context_2.act_info28 := 100 * l_output_table(outer_rec).balance_value;
6232 END IF;
6233 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
6234 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6235 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6236 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
6237 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6238 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6239 END IF;
6240 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
6241 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6242 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6243 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
6244 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6245 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6246
6247 END IF;
6248 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
6249 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6250 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6251 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
6252 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6253 g_spp_total := NVL(g_spp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6254 END IF;
6255 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
6256 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6257 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6258 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
6259 END IF;
6260 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
6261 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6262 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6263 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
6264 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6265 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
6266
6267 END IF;
6268 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
6269 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6270 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6271 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
6272 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6273 g_assp_total := NVL(g_assp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6274 END IF;
6275 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
6276 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
6277 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6278 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
6279 END IF;
6280 END IF;
6281 END IF;
6282 END LOOP;
6283 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
6284 END IF; --Not null check ends
6285 END LOOP;
6286
6287 ELSE --IF (l_chld_act_id = l_max_chld_act_id) then
6288 --It is not the latest child asg action id
6289 --Get only the RUN balances with this child asg action id
6290
6291 FOR outer_rec IN 1..l_output_table.count
6292 LOOP
6293
6294 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
6295
6296 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
6297 LOOP
6298 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
6299 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
6300 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6301 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6302 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
6303 END IF;
6304 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
6305 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6306 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6307 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
6308 END IF;
6309 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
6310 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6311 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6312 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
6313 END IF;
6314 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
6315 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6316 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6317 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
6318 END IF;
6319 -- This is for newly created balances
6320 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
6321 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
6322 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6323 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
6324 END IF;
6325 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
6326 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
6327 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
6328 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
6329 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6330 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6331 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
6332 end if;
6333 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
6334 if g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6335 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6336 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
6337 end if;
6338 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
6339 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6340 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6341 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
6342 END IF;
6343 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
6344 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6345 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6346 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
6347 END IF;
6348 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
6349 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6350 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6351 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6352 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
6353 END IF;
6354 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
6355 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6356 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6357 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6358 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
6359 END IF;
6360 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
6361 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6362 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6363 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
6364 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6365 END IF;
6366 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
6367 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6368 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6369 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
6370 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
6371 END IF;
6372 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
6373 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6374 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6375 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
6376 END IF;
6377 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
6378 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6379 g_fps_aggr_bal_det_tab(inner_rec).balance_value := NVL(g_fps_aggr_bal_det_tab(inner_rec).balance_value,0) + 100 * l_output_table(outer_rec).balance_value;
6380 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
6381 END IF;
6382 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
6383 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6384 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6385 END IF;
6386 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
6387 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6388 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6389
6390 END IF;
6391 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
6392 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6393 g_spp_total := NVL(g_spp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6394 END IF;
6395 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
6396 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6397 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
6398
6399 END IF;
6400 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
6401 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
6402 g_assp_total := NVL(g_assp_total,0) + 100 * l_output_table(outer_rec).balance_value;
6403 END IF;
6404 END IF;
6405 END IF;
6406 END LOOP;
6407 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
6408 END IF; --Not null check ends
6409 END LOOP;
6410 END IF; --IF (l_chld_act_id = l_max_chld_act_id) then
6411
6412 END LOOP;
6413 END IF; --For if l_child_exists = 'N' then
6414
6415
6416 RETURN true;
6417
6418 EXCEPTION
6419 WHEN OTHERS THEN
6420 hr_utility.set_location('Error in function fetch_fps_agg_asg_det2 ', 15);
6421 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
6422 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
6423 RAISE;
6424 END fetch_fps_agg_asg_det2;
6425
6426 PROCEDURE populate_run_msg(
6427 p_assignment_action_id IN NUMBER ,
6428 p_message_text IN VARCHAR2,
6429 p_message_level IN VARCHAR2 DEFAULT 'F')
6430 IS
6431 PRAGMA AUTONOMOUS_TRANSACTION;
6432 BEGIN
6433 hr_utility.set_location(' Entering: populate_run_msg',111);
6434
6435 INSERT
6436 INTO pay_message_lines
6437 (
6438 line_sequence,
6439 payroll_id,
6440 message_level,
6441 source_id,
6442 source_type,
6443 line_text
6444 )
6445 VALUES
6446 (
6447 pay_message_lines_s.nextval ,
6448 100 ,
6449 p_message_level, --'F' ,
6450 p_assignment_action_id ,
6451 'A' ,
6452 SUBSTR(p_message_text,1,240)
6453 );
6454 hr_utility.set_location(' Leaving: populate_run_msg',999);
6455 COMMIT;
6456
6457 EXCEPTION
6458 WHEN OTHERS THEN
6459 hr_utility.trace('Error occured in populate_run_msg');
6460 RAISE;
6461 END populate_run_msg;
6462
6463 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 )
6464 is
6465 begin
6466 hr_utility.trace('Entering set_address_fields');
6467
6468 --Address Fields are mandatory when nino is not known or on starter
6469 if p_asg_det.act_info1 is null then
6470 if p_person_rec.act_info7 is not null then
6471 p_addr_rec.act_info5 := NULL;
6472 p_addr_rec.act_info6 := NULL;
6473 p_addr_rec.act_info7 := NULL;
6474 p_addr_rec.act_info8 := NULL;
6475 p_addr_rec.act_info12 := NULL;
6476 p_addr_rec.act_info13 := NULL;
6477 hr_utility.trace('Address details will not be reported.');
6478 end if;
6479 end if;
6480
6481 hr_utility.trace('Leaving set_address_fields');
6482 end set_address_fields;
6483
6484 -- Procedure to insert data to the archive table pay_action_information
6485 PROCEDURE insert_archive_row
6486 (
6487 p_assactid IN NUMBER,
6488 p_effective_date IN DATE,
6489 p_tab_rec_data IN action_info_table
6490 )
6491 IS
6492 l_proc CONSTANT VARCHAR2(50):= g_package||'insert_archive_row';
6493 l_ovn NUMBER;
6494 l_action_id NUMBER;
6495 BEGIN
6496 hr_utility.set_location('Entering: '||l_proc,1);
6497
6498 IF p_tab_rec_data.count > 0 THEN
6499 FOR i IN p_tab_rec_data.first .. p_tab_rec_data.last
6500 LOOP
6501 hr_utility.trace
6502 (
6503 'Defining category '|| p_tab_rec_data(i).action_info_category
6504 )
6505 ;
6506 hr_utility.trace('action_context_id = '|| p_assactid);
6507 IF p_tab_rec_data(i).action_info_category IS NOT NULL THEN
6508 pay_action_information_api.create_action_information( p_action_information_id => l_action_id,
6509 p_object_version_number => l_ovn,
6510 p_action_information_category => p_tab_rec_data(i).action_info_category,
6511 p_action_context_id => p_assactid,
6512 p_action_context_type => 'AAP',
6513 p_assignment_id => p_tab_rec_data(i).assignment_id,
6514 p_effective_date => p_effective_date,
6515 p_action_information1 => p_tab_rec_data(i).act_info1,
6516 p_action_information2 => p_tab_rec_data(i).act_info2,
6517 p_action_information3 => p_tab_rec_data(i).act_info3,
6518 p_action_information4 => p_tab_rec_data(i).act_info4,
6519 p_action_information5 => p_tab_rec_data(i).act_info5,
6520 p_action_information6 => p_tab_rec_data(i).act_info6,
6521 p_action_information7 => p_tab_rec_data(i).act_info7,
6522 p_action_information8 => p_tab_rec_data(i).act_info8,
6523 p_action_information9 => p_tab_rec_data(i).act_info9,
6524 p_action_information10 => p_tab_rec_data(i).act_info10,
6525 p_action_information11 => p_tab_rec_data(i).act_info11,
6526 p_action_information12 => p_tab_rec_data(i).act_info12,
6527 p_action_information13 => p_tab_rec_data(i).act_info13,
6528 p_action_information14 => p_tab_rec_data(i).act_info14,
6529 p_action_information15 => p_tab_rec_data(i).act_info15,
6530 p_action_information16 => p_tab_rec_data(i).act_info16,
6531 p_action_information17 => p_tab_rec_data(i).act_info17,
6532 p_action_information18 => p_tab_rec_data(i).act_info18,
6533 p_action_information19 => p_tab_rec_data(i).act_info19,
6534 p_action_information20 => p_tab_rec_data(i).act_info20,
6535 p_action_information21 => p_tab_rec_data(i).act_info21,
6536 p_action_information22 => p_tab_rec_data(i).act_info22,
6537 p_action_information23 => p_tab_rec_data(i).act_info23,
6538 p_action_information24 => p_tab_rec_data(i).act_info24,
6539 p_action_information25 => p_tab_rec_data(i).act_info25,
6540 p_action_information26 => p_tab_rec_data(i).act_info26,
6541 p_action_information27 => p_tab_rec_data(i).act_info27,
6542 p_action_information28 => p_tab_rec_data(i).act_info28,
6543 p_action_information29 => p_tab_rec_data(i).act_info29,
6544 p_action_information30 => p_tab_rec_data(i).act_info30 );
6545 END IF;
6546 END LOOP;
6547 END IF;
6548 hr_utility.set_location('Leaving: '||l_proc,999);
6549 END insert_archive_row;
6550 -- Procedure to insert data to the archive table pay_action_information.
6551 -- This is used in PAYE aggregation case inaddition to the procedure insert_archive_row
6552 PROCEDURE insert_archive_row_agg
6553 (
6554 p_assactid IN NUMBER,
6555 p_effective_date IN DATE,
6556 p_tab_rec_data IN action_info_table
6557 )
6558 IS
6559 l_proc CONSTANT VARCHAR2(50):= g_package||'insert_archive_row_agg';
6560 l_ovn NUMBER;
6561 l_action_id NUMBER;
6562 l_assact_id number;
6563 BEGIN
6564 hr_utility.set_location('Entering: '||l_proc,1);
6565
6566 IF p_tab_rec_data.count > 0 THEN
6567 FOR i IN p_tab_rec_data.first .. p_tab_rec_data.last
6568 LOOP
6569 hr_utility.trace
6570 (
6571 'Defining category '|| p_tab_rec_data(i).action_info_category
6572 )
6573 ;
6574 hr_utility.trace('action_context_id = '|| p_assactid);
6575 IF p_tab_rec_data(i).action_info_category IS NOT NULL THEN
6576 -- get the assignment action id for the each assignment which are created in action creation
6577 select paa.assignment_action_id into l_assact_id from pay_assignment_actions paa
6578 where paa.payroll_action_id = g_payroll_action_id
6579 and paa.assignment_id = p_tab_rec_data(i).assignment_id;
6580
6581 pay_action_information_api.create_action_information( p_action_information_id => l_action_id,
6582 p_object_version_number => l_ovn,
6583 p_action_information_category => p_tab_rec_data(i).action_info_category,
6584 p_action_context_id => l_assact_id,
6585 p_action_context_type => 'AAP',
6586 p_assignment_id => p_tab_rec_data(i).assignment_id,
6587 p_effective_date => p_effective_date,
6588 p_action_information1 => p_tab_rec_data(i).act_info1,
6589 p_action_information2 => p_tab_rec_data(i).act_info2,
6590 p_action_information3 => p_tab_rec_data(i).act_info3,
6591 p_action_information4 => p_tab_rec_data(i).act_info4,
6592 p_action_information5 => p_tab_rec_data(i).act_info5,
6593 p_action_information6 => p_tab_rec_data(i).act_info6,
6594 p_action_information7 => p_tab_rec_data(i).act_info7,
6595 p_action_information8 => p_tab_rec_data(i).act_info8,
6596 p_action_information9 => p_tab_rec_data(i).act_info9,
6597 p_action_information10 => p_tab_rec_data(i).act_info10,
6598 p_action_information11 => p_tab_rec_data(i).act_info11,
6599 p_action_information12 => p_tab_rec_data(i).act_info12,
6600 p_action_information13 => p_tab_rec_data(i).act_info13,
6601 p_action_information14 => p_tab_rec_data(i).act_info14,
6602 p_action_information15 => p_tab_rec_data(i).act_info15,
6603 p_action_information16 => p_tab_rec_data(i).act_info16,
6604 p_action_information17 => p_tab_rec_data(i).act_info17,
6605 p_action_information18 => p_tab_rec_data(i).act_info18,
6606 p_action_information19 => p_tab_rec_data(i).act_info19,
6607 p_action_information20 => p_tab_rec_data(i).act_info20,
6608 p_action_information21 => p_tab_rec_data(i).act_info21,
6609 p_action_information22 => p_tab_rec_data(i).act_info22,
6610 p_action_information23 => p_tab_rec_data(i).act_info23,
6611 p_action_information24 => p_tab_rec_data(i).act_info24,
6612 p_action_information25 => p_tab_rec_data(i).act_info25,
6613 p_action_information26 => p_tab_rec_data(i).act_info26,
6614 p_action_information27 => p_tab_rec_data(i).act_info27,
6615 p_action_information28 => p_tab_rec_data(i).act_info28,
6616 p_action_information29 => p_tab_rec_data(i).act_info29,
6617 p_action_information30 => p_tab_rec_data(i).act_info30 );
6618 END IF;
6619 END LOOP;
6620 END IF;
6621 hr_utility.set_location('Leaving: '||l_proc,999);
6622 END insert_archive_row_agg;
6623
6624 --
6625 --
6626 /*------------ PUBLIC PROCEDURES --------------*/
6627 /*--------------------------------------------------------------------------
6628 Name : range_cursor
6629 Purpose : This returns the select statement that is used to create the
6630 range rows.
6631 Arguments :
6632 Notes : The range cursor determines which people should be processed.
6633 The normal practice is to include everyone, and then limit
6634 the list during the assignment action creation.
6635 --------------------------------------------------------------------------*/
6636 PROCEDURE range_cursor
6637 (
6638 pactid IN NUMBER,
6639 sqlstr OUT NOCOPY VARCHAR2
6640 )
6641 IS
6642
6643 CURSOR csr_parameter_info
6644 IS
6645 SELECT SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PRE_PAY_ID'),1,20) pre_pay_id,
6646 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS'),1,20) first_fps,
6647 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
6648 fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS_DATE'),1,10)) first_fps_date,
6649 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIN_SUB'),1,20) final_submission,
6650 fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'DATE_SCHEME'),1,10)) final_submission,
6651 effective_date
6652 FROM pay_payroll_actions
6653 WHERE payroll_action_id = pactid;
6654
6655 CURSOR csr_get_payroll_id(c_pre_pact_id NUMBER)
6656 IS
6657 SELECT payroll_id
6658 FROM pay_payroll_actions
6659 WHERE payroll_action_id = c_pre_pact_id;
6660
6661 -- cursor to check whether first fps is run for this payroll or not
6662 cursor c_first_fps_ran(c_payroll_id number) is
6663 select 'Y' from pay_payroll_actions ppa
6664 where c_payroll_id = pay_gb_eoy_archive.get_parameter(legislative_parameters,'PAYROLL_ID')
6665 and pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS') = 'Y'
6666 and ACTION_STATUS = 'C'
6667 and exists (select 1 from pay_gb_fps_details where PAYROLL_ACTION_ID = ppa.payroll_action_id);
6668
6669 cursor csr_other_prepay_pactid(c_tax_ref varchar2) is
6670 select distinct ppa.payroll_action_id
6671 from pay_payroll_actions ppa
6672 where ppa.effective_date >= sysdate - 30
6673 and ppa.action_type in ('P','U')
6674 and ppa.action_status ='C'
6675 and ppa.payroll_id in (select distinct payroll_id
6676 from pay_all_payrolls_f papf,
6677 hr_soft_coding_keyflex flex
6678 where upper(flex.segment1) = c_tax_ref
6679 and flex.SOFT_CODING_KEYFLEX_ID = papf.SOFT_CODING_KEYFLEX_ID)
6680 minus
6681 select distinct pre_payment_payroll_action_id from pay_gb_bacs_fps;
6682
6683 l_report_type VARCHAR2(15);
6684 l_payroll_id NUMBER;
6685 l_proc CONSTANT VARCHAR2(35):= g_package||'range_cursor';
6686 l_first_fps_ind varchar2(10);
6687 l_first_fps_date date;
6688 l_frst_fps_ran char;
6689 l_dummy number;
6690 l_other_prepay_pactid number;
6691 l_tax_ref varchar2(30);
6692 l_final_submission varchar2(50);
6693 l_date_scheme_ceased date;
6694 date_scheme_error EXCEPTION;
6695 l_effective_date date;
6696 l_start_year date;
6697 l_end_year date;
6698
6699 BEGIN
6700 hr_utility.set_location('Entering: '||l_proc,1);
6701
6702 OPEN csr_parameter_info;
6703 FETCH csr_parameter_info INTO g_pre_pact_id,l_first_fps_ind,l_tax_ref,l_first_fps_date,l_final_submission,l_date_scheme_ceased,l_effective_date;
6704 CLOSE csr_parameter_info;
6705 hr_utility.trace('g_pre_pact_id: '||g_pre_pact_id);
6706 hr_utility.trace('l_tax_ref: '||l_tax_ref);
6707 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS: ');
6708 l_dummy := PAY_GB_FPS_NI_AND_OTHERS_13.FPS_BACS_PREPROCESS(g_pre_pact_id, 'FPS');
6709
6710 /*Below code generates the HASH CODE for All Prepayments ran within 30 days.
6711 This will avoid generating duplicate records when it is called from Archive Code*/
6712
6713 OPEN csr_other_prepay_pactid(l_tax_ref);
6714 LOOP
6715 FETCH csr_other_prepay_pactid INTO l_other_prepay_pactid;
6716 EXIT WHEN csr_other_prepay_pactid%notfound;
6717 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS for: '||l_other_prepay_pactid);
6718 l_dummy := PAY_GB_FPS_NI_AND_OTHERS_13.FPS_BACS_PREPROCESS(l_other_prepay_pactid, 'FPS');
6719 hr_utility.trace('After calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS for: '||l_other_prepay_pactid);
6720 END LOOP;
6721 CLOSE csr_other_prepay_pactid;
6722
6723 OPEN csr_get_payroll_id(g_pre_pact_id);
6724 FETCH csr_get_payroll_id INTO l_payroll_id;
6725 CLOSE csr_get_payroll_id;
6726
6727 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
6728 l_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
6729 l_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') ;
6730 ELSE
6731 l_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') ;
6732 l_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
6733 END IF;
6734
6735 hr_utility.trace(' Payroll : '||l_payroll_id);
6736 hr_utility.trace(' l_first_fps_ind : '||l_first_fps_ind);
6737 hr_utility.trace(' l_first_fps_date : '||l_first_fps_date);
6738 hr_utility.trace(' l_final_submission : '||l_final_submission);
6739 hr_utility.trace(' l_date_scheme_ceased : '||l_date_scheme_ceased);
6740
6741 -- This blocks checks whether First FPS is already ran for this payroll.
6742 if l_first_fps_ind is not null and l_first_fps_ind = 'Y' then
6743 open c_first_fps_ran(l_payroll_id);
6744 fetch c_first_fps_ran into l_frst_fps_ran;
6745 close c_first_fps_ran;
6746
6747 if l_frst_fps_ran = 'Y' then
6748 fnd_file.put_line (fnd_file.LOG,'Error : First FPS has already been run for the requested payroll. Either rollback or select to run a normal FPS.');
6749 --raise first_fps_ran_already_error;
6750 end if;
6751 end if;
6752
6753 if l_first_fps_ind is not null and l_first_fps_ind <> 'Y'
6754 and l_first_fps_date is not null then
6755 fnd_file.put_line (fnd_file.LOG,'Error : First FPS date should not be entered when First FPS Indicator is not Yes.');
6756 RAISE first_fps_indicator_error;
6757 end if;
6758
6759 if l_first_fps_ind = 'Y' and l_first_fps_date is null then
6760 fnd_file.put_line (fnd_file.LOG,'Error : Enter the First FPS date when First FPS Indicator is Yes.');
6761 RAISE first_fps_indicator_error;
6762 end if;
6763
6764 -- Raise error if Date Scheme Ceased not entered when Final Submission set to Yes - Final for Ceased PAYE Ref
6765 if l_final_submission = 'YCEAS' and l_date_scheme_ceased is null then
6766 fnd_file.put_line (fnd_file.LOG,'Error : Enter Date Scheme Ceased when Final Submission is Yes - Final for Ceased PAYE Ref.');
6767 fnd_file.put_line (fnd_file.output,'Error : Enter Date Scheme Ceased when Final Submission is Yes - Final for Ceased PAYE Ref.');
6768 RAISE date_scheme_error;
6769 end if;
6770
6771 -- Raise error if Date Scheme Ceased entered when Final Submission not set to Yes - Final for Ceased PAYE Ref
6772 if l_date_scheme_ceased is not null and l_final_submission <> 'YCEAS' then
6773 fnd_file.put_line (fnd_file.LOG,'Error : Date Scheme Ceased should not be entered when Final Submission is not Yes - Final for Ceased PAYE Ref.');
6774 fnd_file.put_line (fnd_file.output,'Error : Date Scheme Ceased should not be entered when Final Submission is not Yes - Final for Ceased PAYE Ref.');
6775 RAISE date_scheme_error;
6776 end if;
6777
6778 if l_date_scheme_ceased < l_start_year or l_date_scheme_ceased > l_end_year then
6779 fnd_file.put_line (fnd_file.LOG,'Error : Date Scheme Ceased should be within Tax Year.');
6780 fnd_file.put_line (fnd_file.output,'Error : Date Scheme Ceased should be within Tax Year.');
6781 RAISE date_scheme_error;
6782 end if;
6783
6784 sqlstr := 'select distinct PERSON_ID '|| 'from per_all_assignments_f paaf, '
6785 || 'pay_payroll_actions ppa '|| 'where ppa.payroll_action_id = :payroll_action_id '
6786 || 'and ppa.business_group_id = paaf.business_group_id '|| ' and paaf.payroll_id = '
6787 ||''''||l_payroll_id||''''|| ' order by person_id';
6788
6789 hr_utility.trace(' Range Cursor Statement : '||sqlstr);
6790 -- Header validations
6791 pay_gb_rti_fps_validate_13.header_validations(pactid,g_validation_check);
6792
6793 hr_utility.set_location(' Leaving: '||l_proc,100);
6794
6795 EXCEPTION
6796 when first_fps_indicator_error then
6797 hr_utility.raise_error;
6798 when date_scheme_error then
6799 hr_utility.raise_error;
6800 when first_fps_ran_already_error then
6801 hr_utility.set_location('First FPS already ran for the payroll id '||l_payroll_id,1);
6802 hr_utility.raise_error;
6803 WHEN OTHERS THEN
6804 hr_utility.raise_error;
6805 END range_cursor;
6806 --
6807 --
6808 --
6809 PROCEDURE internal_action_creation_fps(
6810 pactid IN NUMBER,
6811 stperson IN NUMBER,
6812 endperson IN NUMBER,
6813 chunk IN NUMBER,
6814 p_info_type IN VARCHAR2,
6815 p_rep_type IN VARCHAR2)
6816 IS
6817 l_proc CONSTANT VARCHAR2(90):= g_package||'internal_action_creation_fps';
6818 l_payroll_id NUMBER;
6819 l_tax_ref VARCHAR2(20);
6820 l_business_group_id NUMBER;
6821 l_end_date DATE;
6822 l_start_date DATE;
6823 l_ass_act_id NUMBER;
6824 l_assignment_id NUMBER;
6825 l_arch BOOLEAN;
6826 lockingactid NUMBER;
6827 l_locked_action_id NUMBER;
6828 l_exist NUMBER;
6829 l_first_fps VARCHAR2(1);
6830 l_first_fps_run_date date;
6831 l_first_fps_eff_date date;
6832 l_asg_number per_all_assignments_f.assignment_number%type;
6833 CURSOR csr_parameter_info
6834 IS
6835 SELECT to_number(pay_gb_eoy_archive.get_parameter(legislative_parameters, 'PAYROLL_ID')) payroll_id,
6836 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
6837 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS'),1,1) first_fps,
6838 effective_date,
6839 business_group_id,
6840 fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS_DATE'),1,10)) first_fps_date
6841 FROM pay_payroll_actions pact
6842 WHERE payroll_action_id = pactid;
6843
6844 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
6845 IS
6846 SELECT asg.person_id person_id,
6847 trim(asg.primary_flag) asg_primary_flag,
6848 trim(nvl(pap.per_information10,'N')) per_agg_flag,
6849 trim(nvl(pap.per_information9,'N')) ni_agg_flag,
6850 asg.assignment_number
6851 FROM per_all_people_f pap,
6852 per_all_assignments_f asg
6853 WHERE asg.assignment_id = c_asg_id
6854 AND pap.person_id = asg.person_id
6855 AND asg.business_group_id = l_business_group_id
6856 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
6857 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
6858
6859 CURSOR csr_get_assignments( pactid NUMBER,
6860 stperson NUMBER,
6861 endperson NUMBER,
6862 p_payroll_id NUMBER,
6863 p_pre_pact_id NUMBER,
6864 c_effective_date DATE)
6865 IS
6866 SELECT DISTINCT act.assignment_id assignment_id,
6867 act.assignment_action_id asg_act_id
6868 FROM pay_payroll_actions ppa, --Current pactid
6869 pay_payroll_actions appa, --Payroll Run
6870 pay_payroll_actions appa2, --Prepayments
6871 pay_assignment_actions act, --Payroll Run
6872 pay_assignment_actions act1, --Prepayments
6873 pay_action_interlocks pai, --Prepayments
6874 per_all_assignments_f as1
6875 WHERE ppa.payroll_action_id = pactid
6876 AND as1.person_id BETWEEN stperson AND endperson
6877 AND appa.action_type IN ('R','Q','V','B') -- Payroll Run or Quickpay Run
6878 AND act.payroll_action_id = appa.payroll_action_id
6879 AND act.source_action_id IS NULL
6880 AND as1.assignment_id = act.assignment_id
6881 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
6882 AND act.action_status = 'C'
6883 AND act.assignment_action_id = pai.locked_action_id
6884 AND act1.assignment_action_id = pai.locking_action_id
6885 AND act1.action_status = 'C'
6886 AND act1.payroll_action_id = appa2.payroll_action_id
6887 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
6888 AND (as1.payroll_id = p_payroll_id
6889 OR p_payroll_id IS NULL)
6890 AND appa2.payroll_action_id = p_pre_pact_id
6891 AND exists( select 1
6892 from pay_pre_payments ppp
6893 where ASSIGNMENT_ACTION_ID = act1.assignment_action_id
6894 and ppp.value <> 0)
6895 ORDER BY act.assignment_id;
6896
6897 l_flag VARCHAR2(1) :='Y';
6898 l_prev_person NUMBER :=0;
6899 --
6900 l_effective_date DATE;
6901 l_asg_primary_flag VARCHAR2(1);
6902 l_per_agg_flag VARCHAR2(1);
6903 l_ni_agg_flag VARCHAR2(1);
6904 l_pre_pact_id NUMBER;
6905
6906
6907 -- First FPS Cursors
6908 cursor csr_get_prepayment_date(p_pre_pact_id number) is
6909 select EFFECTIVE_DATE from pay_payroll_actions where payroll_action_id = p_pre_pact_id;
6910
6911 cursor csr_asg_details(p_prepay_id number,p_prepayment_date date) is
6912 select distinct paaf.assignment_id assignment_id,
6913 trim(paaf.primary_flag) asg_primary_flag,
6914 trim(pap.per_information10) per_agg_flag,
6915 pap.person_id
6916 from per_all_people_f pap,
6917 per_all_assignments_f paaf,
6918 per_assignment_status_types past,
6919 pay_payroll_actions paa
6920 where pap.person_id between stperson and endperson
6921 and paa.payroll_Action_id = p_prepay_id
6922 and pap.person_id = paaf.person_id
6923 and paaf.assignment_type = 'E'
6924 and paaf.assignment_status_type_id = past.assignment_status_type_id
6925 and past.per_system_status in ('ACTIVE_ASSIGN', 'SUSP_ASSIGN','TERM_ASSIGN')
6926 and paaf.business_group_id = paa.business_group_id
6927 and paaf.payroll_id = paa.payroll_id
6928 and pap.effective_start_date =
6929 ( select max(pap2.effective_start_date) from
6930 per_all_people_f pap2
6931 where pap2.person_id = pap.person_id
6932 and pap2.effective_start_date <= p_prepayment_date
6933 )
6934 and paaf.effective_start_date =
6935 ( select max(asg2.effective_start_date)
6936 from per_all_assignments_f asg2
6937 where asg2.assignment_id = paaf.assignment_id
6938 and asg2.assignment_type = 'E'
6939 and asg2.effective_start_date <= p_prepayment_date
6940 )
6941 order by pap.person_id;
6942
6943 -- cursor to check whether this assignment processed in prepayment or not
6944 cursor csr_prepayment_made(pre_pay_id number,p_asg_id number) is
6945 SELECT paa_pre.assignment_id
6946 FROM pay_assignment_actions paa_pre
6947 , pay_assignment_actions paa_arcv
6948 WHERE paa_arcv.assignment_id = p_asg_id
6949 AND paa_pre.payroll_action_id = pre_pay_id
6950 AND paa_pre.assignment_id = paa_arcv.assignment_id;
6951
6952 -- get the defined balance id for specified balance and dimension
6953 cursor get_defined_balance_id
6954 (p_balance_name VARCHAR2, p_dimension_name VARCHAR2) IS
6955 SELECT defined_balance_id
6956 FROM pay_defined_balances db
6957 , pay_balance_types b
6958 , pay_balance_dimensions d
6959 WHERE b.balance_name = p_balance_name
6960 AND d.dimension_name = p_dimension_name
6961 AND db.balance_type_id = b.balance_type_id
6962 AND db.balance_dimension_id = d.balance_dimension_id
6963 AND b.legislation_code = 'GB'
6964 AND d.legislation_code = 'GB';
6965
6966 -- to fetch last assignment action id for the given assignment
6967 cursor csr_last_action(p_asgid NUMBER, p_start_year DATE,p_end_year DATE) IS
6968 SELECT
6969 to_number (substr (max (lpad (paa.action_sequence, 15
6970 , '0')
6971 || paa.assignment_action_id), 16))
6972 , max (pact.effective_date) effective_date
6973 FROM pay_assignment_actions paa
6974 , pay_payroll_actions pact
6975 , per_time_periods ptp
6976 WHERE paa.assignment_id = p_asgid
6977 AND paa.payroll_action_id = pact.payroll_action_id
6978 AND pact.payroll_id = l_payroll_id
6979 AND pact.time_period_id = ptp.time_period_id
6980 AND pact.action_type IN ('Q', 'R', 'B'
6981 , 'I', 'V')
6982 AND paa.action_status IN ('C', 'S')
6983 AND ptp.regular_payment_date
6984 BETWEEN p_start_year
6985 AND p_end_year;
6986
6987 CURSOR csr_aggr_min_act_id( p_person_id NUMBER,
6988 p_payroll_id NUMBER,
6989 p_pre_pact_id NUMBER,
6990 c_effective_date DATE)
6991 IS
6992
6993 SELECT max (act.assignment_action_id) assignment_id
6994 -- SELECT min (act.assignment_action_id) assignment_id
6995 -- SELECT max (act.assignment_id) assignment_id
6996 FROM pay_payroll_actions ppa, --Current pactid
6997 pay_payroll_actions appa, --Payroll Run
6998 pay_payroll_actions appa2, --Prepayments
6999 pay_assignment_actions act, --Payroll Run
7000 pay_assignment_actions act1, --Prepayments
7001 pay_action_interlocks pai, --Prepayments
7002 per_all_assignments_f as1
7003 WHERE as1.person_id = p_person_id --45885
7004 AND appa.action_type IN ('R','Q','V','B') -- Payroll Run or Quickpay Run
7005 AND act.payroll_action_id = appa.payroll_action_id
7006 AND act.source_action_id IS NULL
7007 AND as1.assignment_id = act.assignment_id
7008 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
7009 AND act.action_status = 'C'
7010 AND act.assignment_action_id = pai.locked_action_id
7011 AND act1.assignment_action_id = pai.locking_action_id
7012 AND act1.action_status = 'C'
7013 AND act1.payroll_action_id = appa2.payroll_action_id
7014 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
7015 AND (as1.payroll_id = p_payroll_id
7016 OR p_payroll_id IS NULL)
7017 AND appa2.payroll_action_id = p_pre_pact_id
7018 AND exists( select 1
7019 from pay_pre_payments ppp
7020 where ASSIGNMENT_ACTION_ID = act1.assignment_action_id
7021 and ppp.value <> 0); --For the bug 16542698
7022
7023 CURSOR csr_ni_aggr_max_act_id( p_person_id NUMBER,
7024 p_payroll_id NUMBER,
7025 p_pre_pact_id NUMBER,
7026 c_effective_date DATE)
7027 IS
7028
7029 SELECT max (act.assignment_action_id) assignment_id
7030 -- SELECT max (act.assignment_id) assignment_id
7031 FROM pay_payroll_actions ppa, --Current pactid
7032 pay_payroll_actions appa, --Payroll Run
7033 pay_payroll_actions appa2, --Prepayments
7034 pay_assignment_actions act, --Payroll Run
7035 pay_assignment_actions act1, --Prepayments
7036 pay_action_interlocks pai, --Prepayments
7037 per_all_assignments_f as1
7038 WHERE as1.person_id = p_person_id --45885
7039 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
7040 AND act.payroll_action_id = appa.payroll_action_id
7041 AND act.source_action_id IS NULL
7042 AND as1.assignment_id = act.assignment_id
7043 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
7044 AND act.action_status = 'C'
7045 AND act.assignment_action_id = pai.locked_action_id
7046 AND act1.assignment_action_id = pai.locking_action_id
7047 AND act1.action_status = 'C'
7048 AND act1.payroll_action_id = appa2.payroll_action_id
7049 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
7050 AND (as1.payroll_id = p_payroll_id
7051 OR p_payroll_id IS NULL)
7052 AND appa2.payroll_action_id = p_pre_pact_id;
7053
7054 l_person_id number;
7055 cursor csr_get_other_asg(c_asg_id number) is
7056 select paaf.assignment_id asg_id from per_all_assignments_f paaf where
7057 paaf.person_id = l_person_id
7058 and paaf.assignment_id <> c_asg_id
7059 and l_effective_date between paaf.effective_start_date and paaf.effective_end_date;
7060
7061
7062 -- new agg changes
7063 cursor csr_agg_all_asg_act_creat(p_person_id NUMBER,
7064 p_asg_id NUMBER,
7065 p_asg_act_id NUMBER,
7066 p_start_year DATE,
7067 p_end_year DATE) is
7068 SELECT
7069 /* to_number (substr (max (lpad (paa.action_sequence ,15,'0')
7070 || paa.assignment_action_id),16)) max_asg_act_id*/
7071 distinct paa.assignment_id
7072 /* ,max (pact.effective_date) effective_date
7073 ,max(paa1.assignment_action_id)*/
7074 FROM pay_assignment_actions paa
7075 ,pay_assignment_actions paa1
7076 ,per_all_assignments_f paaf
7077 ,pay_payroll_actions pact
7078 ,pay_payroll_actions pact1
7079 ,per_time_periods ptp
7080 ,pay_action_interlocks pai
7081 WHERE paa.assignment_id = paaf.assignment_id
7082 AND paa.assignment_id <> p_asg_id
7083 AND paaf.person_id = p_person_id
7084 AND paa.payroll_action_id = pact.payroll_action_id
7085 AND paa1.payroll_action_id = pact1.payroll_action_id
7086 AND pai.locked_action_id = paa.assignment_action_id
7087 and pai.locking_action_id = paa1.assignment_action_id
7088 AND pact1.action_type IN ('P','U')
7089 AND pact.time_period_id = ptp.time_period_id
7090 AND pact.action_type IN ('Q','R','B','I','V')
7091 AND paa.action_status IN ('C','S')
7092 AND paa1.action_status IN ('C','S')
7093 AND ptp.regular_payment_date BETWEEN p_start_year
7094 AND p_end_year
7095 AND (
7096 (
7097 paa.assignment_action_id >
7098 (
7099 SELECT nvl (max (payroll_asg_act_id),paa.assignment_action_id)
7100 FROM pay_gb_fps_details pgfd
7101 WHERE pgfd.person_id = p_person_id
7102 )
7103 AND paa.source_action_id IS NULL
7104 )
7105 OR (
7106 (
7107 SELECT count (*)
7108 FROM pay_gb_fps_details pgfd
7109 WHERE pgfd.person_id = p_person_id
7110 ) = 0
7111 )
7112 )
7113 AND ptp.regular_payment_date >= nvl (l_first_fps_run_date, l_first_fps_eff_date)
7114 AND paa.assignment_action_id < p_asg_act_id
7115 AND exists( select 1
7116 from pay_pre_payments ppp
7117 where ASSIGNMENT_ACTION_ID = paa1.assignment_action_id
7118 and ppp.value <> 0)
7119 GROUP BY paa.payroll_action_id,paa.assignment_id ;
7120 -- ORDER BY max_asg_act_id;
7121
7122 cursor csr_agg_all_actions_lock(p_person_id NUMBER,
7123 p_asg_id NUMBER,
7124 p_start_year DATE,
7125 p_end_year DATE)is
7126 SELECT /*+ USE_NL(paa, pact, ptp) */
7127 /* to_number (substr (max (lpad (paa.action_sequence ,15,'0')
7128 || paa.assignment_action_id),16)) max_asg_act_id
7129 ,max(paa.assignment_id)
7130 ,max (pact.effective_date) effective_date*/
7131 distinct max(paa1.assignment_action_id) max_pre_act_id
7132 FROM pay_assignment_actions paa
7133 ,pay_assignment_actions paa1
7134 ,per_all_assignments_f paaf
7135 ,pay_payroll_actions pact
7136 ,pay_payroll_actions pact1
7137 ,per_time_periods ptp
7138 ,pay_action_interlocks pai
7139 WHERE paa.assignment_id = paaf.assignment_id
7140 AND paa.assignment_id = p_asg_id
7141 AND paaf.person_id = p_person_id
7142 AND paa.payroll_action_id = pact.payroll_action_id
7143 AND paa1.payroll_action_id = pact1.payroll_action_id
7144 AND pai.locked_action_id = paa.assignment_action_id
7145 and pai.locking_action_id = paa1.assignment_action_id
7146 AND pact1.action_type IN ('P','U')
7147 AND pact.time_period_id = ptp.time_period_id
7148 AND pact.action_type IN ('Q','R','B','I','V')
7149 AND paa.action_status IN ('C','S')
7150 AND paa1.action_status IN ('C','S')
7151 AND ptp.regular_payment_date BETWEEN p_start_year
7152 AND p_end_year
7153 AND (
7154 (
7155 paa.assignment_action_id >
7156 (
7157 SELECT nvl (max (payroll_asg_act_id),paa.assignment_action_id)
7158 FROM pay_gb_fps_details pgfd
7159 WHERE pgfd.person_id = p_person_id
7160 -- AND pgfd.assignment_id = p_asg_id
7161 )
7162 AND paa.source_action_id IS NULL
7163 )
7164 OR (
7165 (
7166 SELECT count (*)
7167 FROM pay_gb_fps_details pgfd
7168 WHERE pgfd.person_id = p_person_id
7169 AND pgfd.assignment_id = p_asg_id
7170 ) = 0
7171 )
7172 )
7173 AND ptp.regular_payment_date >= nvl (l_first_fps_run_date, l_first_fps_eff_date)
7174 GROUP BY paa.payroll_action_id
7175 ORDER BY max_pre_act_id;
7176
7177 cursor chk_processed_in_prepay(c_cur_asg_action_id number) is
7178 select pai.locking_action_id
7179 from
7180 pay_action_interlocks pai,
7181 pay_payroll_actions ppa,
7182 pay_assignment_actions paa
7183 where pai.locked_action_id = c_cur_asg_action_id
7184 and ppa.action_type in ('P','U')
7185 and paa.payroll_action_id = ppa.payroll_action_id
7186 and paa.assignment_action_id = pai.locking_action_id;
7187
7188 CURSOR csr_prepay_asg_act_details(p_asgid NUMBER, p_pre_pay_id NUMBER)
7189 IS
7190 SELECT paa.assignment_action_id,
7191 ppa.payroll_action_id,
7192 ppa.effective_date
7193 FROM pay_assignment_actions paa,
7194 pay_payroll_actions ppa
7195 WHERE paa.assignment_id = p_asgid
7196 AND ppa.payroll_action_id = p_pre_pay_id
7197 AND paa.payroll_action_id = ppa.payroll_action_id;
7198
7199 CURSOR get_first_fps_date(c_payroll_id number)
7200 IS
7201 SELECT max (ppa2.effective_date)
7202 FROM pay_payroll_actions ppa2
7203 WHERE ppa2.report_qualifier = 'GB'
7204 AND ppa2.report_type in ('RTI_FPS_REP','RTI_FPS_REP_13')
7205 AND ppa2.action_status = 'C'
7206 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'FIRST_FPS'),1,20) = 'Y'
7207 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'PAYROLL_ID'),1,20) = c_payroll_id;
7208
7209 -- Curosr to fetch the RTI Reporting flag and effective date of the assignment
7210 cursor csr_ni_rpt_flag(c_asg_id number) is
7211 select AEI_INFORMATION1, AEI_INFORMATION2 from per_assignment_extra_info where assignment_id = c_asg_id
7212 and AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION';
7213
7214 -- Cursor to fetch the RTI NI Reporting assignment for this person.
7215 cursor csr_get_ni_rpt_asg(c_asg_id number) is
7216 select
7217 paei.assignment_id , fnd_date.canonical_to_date(paei.AEI_INFORMATION2)
7218 from per_all_assignments_f paaf1, per_all_assignments_f paaf2 ,per_assignment_extra_info paei
7219 where paaf1.assignment_id = c_asg_id
7220 and paaf1.person_id = paaf2.person_id
7221 and paaf2.ASSIGNMENT_TYPE = 'E'
7222
7223 and paei.assignment_id = paaf2.assignment_id
7224 and paei.AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION'
7225 and paei. AEI_INFORMATION1 = 'Y'
7226 and l_effective_date between paaf1.effective_start_date and paaf1.effective_end_date
7227 and l_effective_date between paaf2.effective_start_date and paaf2.effective_end_date
7228 order by 2 desc;
7229
7230 -- cursor to fetch the prepayment asg_action id for the given payroll asg_action id
7231 cursor csr_ni_prepay_asg_act_details(c_payroll_asg_act_id number) is
7232 select pai.locking_action_id prepay_asg_act_id from
7233 pay_action_interlocks pai,
7234 pay_assignment_actions paa,
7235 pay_payroll_actions ppa
7236 where pai.locked_action_id = c_payroll_asg_act_id
7237 and pai.locking_action_id = paa.assignment_action_id
7238 and paa.action_status in ('C','S')
7239 and ppa.action_type in ('P','U')
7240 and paa.payroll_action_id = ppa.payroll_action_id;
7241
7242 -- to check whether the given assignment is processed in given prepay payroll_action id
7243 cursor csr_rti_rpt_proc_prepay(c_ni_rpt_asg_id number,c_pre_pay_action_id number) is
7244 select 'Y' from pay_assignment_actions paa,
7245 pay_payroll_actions ppa
7246 where
7247 ppa.payroll_action_id = c_pre_pay_action_id
7248 and ppa.payroll_action_id = paa.payroll_action_id
7249 and paa.assignment_id = c_ni_rpt_asg_id
7250 and ppa.action_type IN ('P','U')
7251 and paa.action_status IN ('C','S')
7252 AND exists( select 1
7253 from pay_pre_payments ppp
7254 where ASSIGNMENT_ACTION_ID = paa.assignment_action_id
7255 and ppp.value <> 0); --For the bug 16542698
7256
7257 CURSOR csr_chk_earlier_processed (c_person_id number, c_cur_asg_action_id number) is
7258 SELECT count (*)
7259 FROM pay_gb_fps_details pgfd
7260 WHERE pgfd.person_id = c_person_id
7261 AND pgfd.payroll_asg_act_id = c_cur_asg_action_id;
7262
7263 --Below cursor fetches the latest payroll run details of the current assignment
7264 CURSOR csr_aggr_asgs_processed(p_person_id NUMBER, p_pre_pay_id NUMBER, p_start_year DATE, p_end_year DATE)
7265 IS
7266 SELECT count(distinct paa1.assignment_id)
7267 FROM pay_assignment_actions paa,
7268 per_all_assignments_f paaf,
7269 pay_payroll_actions pact,
7270 per_time_periods ptp,
7271 pay_assignment_actions paa1, --Prepayments
7272 pay_payroll_actions ppa1, --Prepayments
7273 pay_action_interlocks pai --Prepayments
7274 WHERE paa.assignment_id = paaf.assignment_id
7275 AND paaf.person_id = p_person_id
7276 AND paa.payroll_action_id = pact.payroll_action_id
7277 AND pact.time_period_id = ptp.time_period_id
7278 AND pact.action_type IN ('Q','R','B','I','V')
7279 AND paa.action_status IN ('C','S')
7280 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
7281 AND ppa1.payroll_action_id = p_pre_pay_id
7282 AND ppa1.action_type IN ('P','U')
7283 AND paa1.payroll_action_id = ppa1.payroll_action_id
7284 AND paa1.assignment_action_id = pai.locking_action_id
7285 AND paa.assignment_action_id = pai.locked_action_id;
7286
7287 CURSOR csr_aggr_max_act_id( p_person_id NUMBER)
7288 IS
7289 SELECT max(act.assignment_action_id) assignment_action_id
7290 FROM pay_payroll_actions appa, --Payroll Run
7291 pay_payroll_actions appa2, --Prepayments
7292 pay_assignment_actions act, --Payroll Run
7293 pay_assignment_actions act1, --Prepayments
7294 pay_action_interlocks pai, --Prepayments
7295 per_all_assignments_f as1,
7296 pay_all_payrolls_f papf ,
7297 hr_soft_coding_keyflex flex
7298 WHERE as1.person_id = p_person_id --58105
7299 AND appa.action_type IN ('R','Q','V','B') -- Payroll Run or Quickpay Run
7300 AND act.payroll_action_id = appa.payroll_action_id
7301 AND act.source_action_id IS NULL
7302 AND as1.assignment_id = act.assignment_id
7303 AND act.action_status = 'C'
7304 AND act.assignment_action_id = pai.locked_action_id
7305 AND act1.assignment_action_id = pai.locking_action_id
7306 AND act1.action_status = 'C'
7307 AND act1.payroll_action_id = appa2.payroll_action_id
7308 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
7309 AND appa2.effective_date between g_start_year and l_first_fps_eff_date
7310 AND appa2.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
7311 AND papf.payroll_id = as1.payroll_id
7312 AND flex.SOFT_CODING_KEYFLEX_ID = papf.SOFT_CODING_KEYFLEX_ID
7313 AND upper(flex.segment1) = upper(l_tax_ref);
7314
7315 CURSOR csr_asg_id(c_aggr_max_act_id number)
7316 IS
7317 SELECT assignment_id
7318 FROM pay_assignment_actions
7319 WHERE assignment_action_id = c_aggr_max_act_id;
7320
7321 -- Declarations for First FPS
7322 l_last_asg_action_id number;
7323
7324 l_gross number;
7325 l_taxable number;
7326 l_niable number;
7327 l_gross_id number;
7328 l_taxable_id number;
7329 l_niable_id number;
7330
7331 l_first_fps_prepay_asg varchar2(10);
7332 l_temp_asg_id number;
7333 l_date_soy date;
7334 l_date_eoy date;
7335 l_pre_id number;
7336 l_prepayment_date date;
7337
7338 l_asg_action_id number;
7339 l_asg_id number;
7340 l_pre_pay_asg_action_id number;
7341 l_last_effective_date date;
7342 l_aggr_max_asg_id number;
7343 l_aggr_min_act_id number;
7344 l_prepay_asg_action_id number;
7345 l_prepay_payroll_action_id number;
7346 l_prepay_effective_date date;
7347 l_cur_asg_pre_pay_act_id number;
7348 l_ni_rpt_asg_id number;
7349 l_ni_rti_flag varchar2(1);
7350 l_ni_rpt_date date;
7351 l_ni_rti_date varchar2(30);
7352 l_ni_prepay_asg_action_id number;
7353 l_rti_ni_proc_flag varchar2(1);
7354 l_ni_aggr_max_act_id number;
7355 l_earlier_processed number;
7356 l_aggr_asgs_processed number;
7357 l_aggr_max_act_id number;
7358 l_latest_first_fps_asg_id number;
7359 l_prev_asg_id number := 0;
7360 l_flag1 VARCHAR2(1) :='Y';
7361
7362 BEGIN
7363 hr_utility.set_location('Entering: '||l_proc,1);
7364
7365 OPEN csr_parameter_info;
7366 FETCH csr_parameter_info
7367 INTO l_payroll_id,
7368 l_tax_ref,
7369 l_first_fps,
7370 l_effective_date,
7371 l_business_group_id,
7372 l_first_fps_eff_date;
7373 CLOSE csr_parameter_info;
7374
7375
7376 OPEN get_first_fps_date(l_payroll_id);
7377 FETCH get_first_fps_date
7378 INTO l_first_fps_run_date;
7379 CLOSE get_first_fps_date;
7380
7381 hr_utility.set_location('process start date'||l_start_date,20);
7382 hr_utility.set_location('process end date'||l_end_date,20);
7383 hr_utility.set_location('pactid: '||pactid,20);
7384 hr_utility.set_location('stperson: '||stperson,20);
7385 hr_utility.set_location('endperson: '||endperson,20);
7386 hr_utility.set_location('l_payroll_id: '||l_payroll_id,20);
7387 hr_utility.set_location('l_tax_ref: '||l_tax_ref,20);
7388 hr_utility.set_location('l_effective_date: '||l_effective_date,20);
7389 hr_utility.set_location('l_business_group_id: '||l_business_group_id,20);
7390 hr_utility.set_location('g_start_year: '||g_start_year,20);
7391 hr_utility.set_location('l_first_fps_run_date: '||l_first_fps_run_date,20);
7392 hr_utility.set_location('l_first_fps_eff_date: '||l_first_fps_eff_date,20);
7393
7394 PAY_GB_P11D_ARCHIVE_SS.get_parameters( p_payroll_action_id => pactid,
7395 p_token_name => 'PRE_PAY_ID',
7396 p_token_value => l_pre_pact_id);
7397
7398 hr_utility.trace(' Payroll : '||l_payroll_id);
7399 hr_utility.trace(' Pre Payment Payroll_Action_ID Entered : '||to_number(l_pre_pact_id));
7400
7401 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
7402 g_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
7403 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') ;
7404 ELSE
7405 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') ;
7406 g_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
7407 END IF;
7408
7409 -- hr_utility.set_location('Before csr_get_assignments cursor',10);
7410 hr_utility.set_location('pactid :' || pactid,15);
7411 hr_utility.set_location('stperson :' || stperson,15);
7412 hr_utility.set_location('endperson :' || endperson,15);
7413 hr_utility.set_location('l_payroll_id :' || l_payroll_id,15);
7414 hr_utility.set_location('l_pre_pact_id :' || l_pre_pact_id,15);
7415 hr_utility.set_location('l_effective_date :' || l_effective_date,15);
7416
7417 l_pre_id := to_number(l_pre_pact_id);
7418
7419 hr_utility.set_location('l_first_fps : '||l_first_fps,20);
7420 if l_first_fps = 'Y' then
7421
7422 open csr_get_prepayment_date(l_pre_id);
7423 fetch csr_get_prepayment_date into l_prepayment_date;
7424 close csr_get_prepayment_date;
7425
7426 FOR asg_record IN csr_asg_details(l_pre_pact_id,l_prepayment_date)
7427 LOOP
7428 l_flag := 'Y';
7429
7430 --PAYE Aggr logic starts here
7431 /* Below code is to filter out PAYE Aggregated employees as part of First FPS processing logic
7432 if they have any of the assignments processed in current prepayment request id.
7433 That means this employee would be processed in main PAYE Aggregated code itself.
7434 Hence, skip the action creation in First FPS logic. */
7435
7436 l_aggr_asgs_processed := 0;
7437 IF asg_record.per_agg_flag = 'Y' THEN
7438 hr_utility.trace('PAYE Aggregated Assignment');
7439
7440 OPEN csr_aggr_asgs_processed(asg_record.person_id, l_pre_pact_id, g_start_year, g_end_year);
7441 FETCH csr_aggr_asgs_processed
7442 INTO l_aggr_asgs_processed;
7443
7444 hr_utility.trace('l_aggr_asgs_processed:' ||l_aggr_asgs_processed);
7445
7446 CLOSE csr_aggr_asgs_processed;
7447
7448 IF l_aggr_asgs_processed > 0 THEN
7449 l_flag:= 'N';
7450 hr_utility.trace('There is a payment made for one of his asgs in current prepayment request');
7451
7452 ELSIF l_aggr_asgs_processed = 0 THEN --l_aggr_asgs_processed > 0 THEN
7453
7454 OPEN csr_aggr_max_act_id(asg_record.person_id);
7455 FETCH csr_aggr_max_act_id
7456 INTO l_aggr_max_act_id;
7457 CLOSE csr_aggr_max_act_id;
7458
7459 hr_utility.set_location('l_aggr_max_act_id : '||l_aggr_max_act_id,20);
7460
7461 OPEN csr_asg_id(l_aggr_max_act_id);
7462 FETCH csr_asg_id
7463 INTO l_latest_first_fps_asg_id;
7464 CLOSE csr_asg_id;
7465
7466 hr_utility.set_location('l_latest_first_fps_asg_id : '||l_latest_first_fps_asg_id,20);
7467 hr_utility.set_location('asg_record.assignment_id : '||asg_record.assignment_id,20);
7468
7469 IF (nvl(l_latest_first_fps_asg_id,-999) <> asg_record.assignment_id) THEN
7470 l_flag:= 'N';
7471 END IF;
7472
7473 END IF; --l_aggr_asgs_processed > 0 THEN
7474
7475 END IF; --IF asg_record.per_agg_flag = 'Y' THEN
7476 hr_utility.set_location('l_flag: '||l_flag,20);
7477 --PAYE Aggr logic ends here
7478
7479 if (l_flag = 'Y') then
7480
7481 -- Added to check YTD balances
7482 open csr_prepayment_made(l_pre_pact_id,asg_record.assignment_id);
7483 fetch csr_prepayment_made into l_temp_asg_id;
7484 if csr_prepayment_made%found then
7485 l_first_fps_prepay_asg := 'Y';
7486 else
7487 l_first_fps_prepay_asg := 'N';
7488 end if;
7489 close csr_prepayment_made;
7490
7491 hr_utility.trace(asg_record.assignment_id||' First FPS Pre Pay Asg : '||l_first_fps_prepay_asg );
7492
7493 if l_first_fps_prepay_asg = 'N' then
7494
7495 hr_utility.trace(asg_record.assignment_id||'Entering First FPS Logic');
7496
7497 OPEN get_defined_balance_id('Gross Pay','_ASG_TD_YTD');
7498 FETCH get_defined_balance_id INTO l_gross_id;
7499 CLOSE get_defined_balance_id;
7500
7501 OPEN get_defined_balance_id('Taxable Pay','_ASG_TD_YTD');
7502 FETCH get_defined_balance_id INTO l_taxable_id;
7503 CLOSE get_defined_balance_id;
7504
7505 OPEN get_defined_balance_id('NIable Pay','_ASG_TD_YTD');
7506 FETCH get_defined_balance_id INTO l_niable_id;
7507 CLOSE get_defined_balance_id;
7508
7509 l_effective_date := l_prepayment_date;
7510
7511 -- Tax Year Start and End
7512 If l_effective_date >= to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) Then
7513 l_date_soy := to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
7514 l_date_eoy := to_date('05-04-'||to_char(to_number(substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4))+1 ),'DD-MM-YYYY') ;
7515 Else
7516 l_date_soy := to_date('06-04-'||to_char(to_number(substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4))-1 ),'DD-MM-YYYY') ;
7517 l_date_eoy := to_date('05-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
7518 End If;
7519
7520 -- To get latest assignment action id for the assignment
7521 OPEN csr_last_action(asg_record.assignment_id,l_date_soy,l_prepayment_date);
7522 FETCH csr_last_action INTO l_last_asg_action_id,l_last_effective_date;
7523
7524 -- If there are no assignment action ids, no payment has been made for the assignment
7525 -- This assignment will not be archived.
7526 IF l_last_asg_action_id is null then
7527 fnd_file.put_line (fnd_file.LOG,'No Payment has been made for assignment ' || asg_record.assignment_id|| '.');
7528 l_flag:= 'N';
7529 end if;
7530 CLOSE csr_last_action;
7531
7532 -- Fetching balances
7533 IF l_last_asg_action_id IS NOT NULL THEN
7534 l_gross := pay_balance_pkg.get_value(l_gross_id,l_last_asg_action_id);
7535 IF l_gross <= 0 THEN
7536 l_taxable := pay_balance_pkg.get_value(l_taxable_id,l_last_asg_action_id);
7537 END IF;
7538
7539 IF l_taxable <= 0 THEN
7540 l_niable := pay_balance_pkg.get_value(l_niable_id,l_last_asg_action_id);
7541 end if;
7542 END IF;
7543
7544 IF l_gross > 0 or l_taxable > 0 or l_niable > 0 THEN
7545 hr_utility.trace('Assignment '||asg_record.assignment_id||' has YTD values');
7546 ELSE
7547 hr_utility.trace('Assignment '||asg_record.assignment_id||' has No YTD values.');
7548 l_flag:= 'N';
7549 END IF;
7550
7551 end if;
7552 end if; --if (l_flag = 'Y') then
7553
7554 if l_flag = 'Y' and l_first_fps_prepay_asg = 'N' Then
7555 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7556 -- Insert assignment into pay_assignment_actions
7557 hr_nonrun_asact.insact ( lockingactid, asg_record.assignment_id, pactid, chunk, NULL );
7558 End if;
7559
7560 END LOOP;
7561 end if; -- First FPS logic ends
7562 --else
7563 hr_utility.set_location('Before csr_get_assignments cursor',10);
7564 FOR asg_rec IN csr_get_assignments (pactid, stperson, endperson, l_payroll_id, l_pre_pact_id, l_effective_date)
7565 LOOP
7566 hr_utility.set_location('Assignment ID :' || asg_rec.assignment_id,15);
7567 l_flag1 := 'Y'; --Added for Bug - 16345058
7568 --Ignore the same assignment ids (Prepayment would have processed same assignment's payroll, Quickpay)
7569 if l_prev_asg_id = asg_rec.assignment_id then
7570 l_flag1 := 'N';
7571 else
7572 l_prev_asg_id := asg_rec.assignment_id;
7573 end if;
7574
7575 l_arch := false;
7576 -- hr_utility.set_location('Before CSR_ASG cursor l_effective_date '|| to_char(l_effective_date),10);
7577 hr_utility.set_location('Before CSR_ASG cursor',10);
7578
7579 OPEN csr_asg(asg_rec.assignment_id, l_effective_date);
7580 FETCH csr_asg INTO l_person_id, l_asg_primary_flag, l_per_agg_flag,l_ni_agg_flag,l_asg_number;
7581 CLOSE csr_asg;
7582
7583 hr_utility.set_location('l_person_id :' || l_person_id,20);
7584 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,20);
7585 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,20);
7586 hr_utility.set_location('l_ni_agg_flag :' || l_ni_agg_flag,20);
7587 hr_utility.set_location('l_payroll_id :' || l_payroll_id,20);
7588 hr_utility.set_location('l_pre_pact_id :' || l_pre_pact_id,20);
7589 hr_utility.set_location('l_effective_date :' || l_effective_date,20);
7590
7591 hr_utility.set_location('Assignment ID :' || asg_rec.assignment_id,20);
7592 l_arch := false;
7593 -- If Aggregate flag is set then ignore non primary assignments
7594 IF l_per_agg_flag = 'Y' and l_flag1 = 'Y' THEN
7595
7596 OPEN csr_aggr_min_act_id (l_person_id, l_payroll_id, l_pre_pact_id, l_effective_date);
7597 FETCH csr_aggr_min_act_id INTO l_aggr_min_act_id;
7598 CLOSE csr_aggr_min_act_id;
7599
7600 l_earlier_processed := 0;
7601 OPEN csr_chk_earlier_processed(l_person_id, asg_rec.asg_act_id);
7602 FETCH csr_chk_earlier_processed
7603 INTO l_earlier_processed;
7604 CLOSE csr_chk_earlier_processed;
7605
7606 hr_utility.set_location('asg_rec.asg_act_id: '||asg_rec.asg_act_id, 50);
7607 hr_utility.set_location('l_earlier_processed :' || l_earlier_processed,20);
7608 hr_utility.set_location('l_aggr_min_act_id :' || l_aggr_min_act_id,20);
7609
7610 if ((asg_rec.asg_act_id = l_aggr_min_act_id) and (l_earlier_processed = 0)) then
7611 hr_utility.set_location('Creating Assignment Action for assignment_id '||asg_rec.assignment_id, 50);
7612
7613 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7614 hr_nonrun_asact.insact ( lockingactid, asg_rec.assignment_id, pactid, chunk, NULL );
7615 -- get the assigment action id of the prepayment payroll action id for the current assignment.
7616 OPEN csr_prepay_asg_act_details(asg_rec.assignment_id, l_pre_pact_id);
7617 FETCH csr_prepay_asg_act_details
7618 INTO l_prepay_asg_action_id,
7619 l_prepay_payroll_action_id,
7620 l_prepay_effective_date;
7621 CLOSE csr_prepay_asg_act_details;
7622
7623 -- apply lock
7624 hr_nonrun_asact.insint(lockingactid, l_prepay_asg_action_id);
7625
7626 hr_utility.set_location('Creating other Assignment Action ids for assignment_id '||asg_rec.assignment_id, 50);
7627
7628 /*for c_asg in csr_get_other_asg(asg_rec.assignment_id)
7629 loop*/
7630 /* SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7631 hr_utility.set_location('Creating action for asg '||c_asg.asg_id, 50);
7632 hr_nonrun_asact.insact(lockingactid, c_asg.asg_id, pactid, chunk, NULL );
7633 hr_utility.set_location('Created action for asg '||c_asg.asg_id, 50);*/
7634
7635 hr_utility.set_location('l_person_id:'||l_person_id || ' asg_rec.assignment_id:' ||
7636 asg_rec.assignment_id || ' g_start_year: ' || g_start_year ,50);
7637 hr_utility.set_location(' g_end_year: ' || g_end_year || ' g_first_fps_run_date: '||l_first_fps_run_date, 50);
7638 hr_utility.set_location('asg_rec.assignment_id '||asg_rec.assignment_id, 50);
7639 -- OPEN csr_agg_all_asg_act_creat(l_person_id, asg_rec.assignment_id, g_start_year, g_end_year);
7640 OPEN csr_agg_all_asg_act_creat(l_person_id, asg_rec.assignment_id, asg_rec.asg_act_id, g_start_year, g_end_year);
7641 loop
7642 FETCH csr_agg_all_asg_act_creat
7643 INTO l_asg_id;
7644
7645 EXIT WHEN csr_agg_all_asg_act_creat%NOTFOUND;
7646 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7647 hr_utility.set_location('Creating action for asg '||l_asg_id, 50);
7648 hr_nonrun_asact.insact(lockingactid, l_asg_id, pactid, chunk, NULL );
7649 hr_utility.set_location('Created action for asg '||l_asg_id, 50);
7650
7651 -- new changes
7652 open csr_agg_all_actions_lock(l_person_id, l_asg_id, g_start_year, g_end_year);
7653
7654 loop
7655
7656 FETCH csr_agg_all_actions_lock
7657 -- INTO l_asg_action_id,
7658 -- l_asg_id,
7659 -- l_last_effective_date,
7660 INTO l_pre_pay_asg_action_id;
7661 EXIT WHEN csr_agg_all_actions_lock%NOTFOUND;
7662 -- Apply lock
7663
7664 hr_utility.set_location('lockingactid '||lockingactid, 50);
7665 hr_utility.set_location('l_pre_pay_asg_action_id '||l_pre_pay_asg_action_id, 50);
7666 hr_nonrun_asact.insint(lockingactid, l_pre_pay_asg_action_id);
7667
7668 end loop;
7669 close csr_agg_all_actions_lock;
7670 end loop;
7671 close csr_agg_all_asg_act_creat;
7672
7673 /*open chk_processed_in_prepay(l_cur_asg_action_id);
7674 fetch chk_processed_in_prepay into l_cur_asg_pre_pay_act_id;
7675 close chk_processed_in_prepay;*/
7676 -- lock
7677 -- hr_nonrun_asact.insint(lockingactid, l_cur_asg_pre_pay_act_id);
7678
7679 /*end loop;*/
7680
7681 -- end get the other assigment ids for this person.
7682
7683 else
7684 hr_utility.set_location('Another higher assignment for current employee exists.', 50);
7685 hr_utility.set_location('Hence, not creating assignment action for the current assignment: '||asg_rec.assignment_id, 50);
7686 end if;
7687
7688 ELSIF l_flag1 = 'Y' THEN
7689 -- Create one assignment action for every assignment
7690 hr_utility.set_location('Archiving for assignment_id '||asg_rec.assignment_id, 50);
7691 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7692
7693 -- Insert assignment into pay_assignment_actions
7694 hr_nonrun_asact.insact ( lockingactid, asg_rec.assignment_id, pactid, chunk, NULL );
7695 -- get the assigment action id of the prepayment payroll action id for the current assignment.
7696 OPEN csr_prepay_asg_act_details(asg_rec.assignment_id, l_pre_pact_id);
7697 FETCH csr_prepay_asg_act_details
7698 INTO l_prepay_asg_action_id,
7699 l_prepay_payroll_action_id,
7700 l_prepay_effective_date;
7701 --apply the lock
7702 hr_nonrun_asact.insint(lockingactid, l_prepay_asg_action_id);
7703 CLOSE csr_prepay_asg_act_details;
7704 if l_ni_agg_flag = 'Y' then
7705 hr_utility.set_location('This is NI aggregation case ', 50);
7706 -- Get the RTI NI Reporting asg and effective date.
7707 open csr_ni_rpt_flag(asg_rec.assignment_id);
7708 fetch csr_ni_rpt_flag into l_ni_rti_flag,l_ni_rti_date;
7709 close csr_ni_rpt_flag;
7710 hr_utility.set_location('l_ni_rti_flag: ' || l_ni_rti_flag, 50);
7711 hr_utility.set_location('l_ni_rti_date: ' || l_ni_rti_date, 50);
7712 if nvl(l_ni_rti_flag,'N') <> 'Y' then
7713 hr_utility.set_location('non RTI reporting assigment' || l_ni_rti_date, 50);
7714 open csr_get_ni_rpt_asg(asg_rec.assignment_id);
7715 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
7716 close csr_get_ni_rpt_asg;
7717 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id, 50);
7718 hr_utility.set_location('l_ni_rpt_date: ' || l_ni_rpt_date, 50);
7719
7720 if l_ni_rpt_asg_id is null then
7721 hr_utility.set_location('NO RTI Reporting asg for :'|| l_asg_number, 50);
7722 fnd_file.put_line (fnd_file.LOG,'NO RTI Reporting asg for :'|| l_asg_number);
7723 --raise_application_error(-20001,'NO RTI Reporting asg for :'|| asg_rec.assignment_id);
7724 else
7725 -- check whether the RTI reporting is being processed in the current assignment.
7726 open csr_rti_rpt_proc_prepay(l_ni_rpt_asg_id,l_pre_pact_id);
7727 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag;
7728 close csr_rti_rpt_proc_prepay;
7729
7730 OPEN csr_ni_aggr_max_act_id (l_person_id, l_payroll_id, l_pre_pact_id, l_effective_date);
7731 FETCH csr_ni_aggr_max_act_id INTO l_ni_aggr_max_act_id;
7732 CLOSE csr_ni_aggr_max_act_id;
7733
7734 if nvl(l_rti_ni_proc_flag,'N') <> 'Y' and asg_rec.asg_act_id = l_ni_aggr_max_act_id then
7735 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7736 -- Insert assignment into pay_assignment_actions
7737 hr_nonrun_asact.insact ( lockingactid, l_ni_rpt_asg_id, pactid, chunk, NULL );
7738 /* -- get the assigment action id of the prepayment payroll action id for the current assignment.
7739 OPEN csr_ni_prepay_asg_act_details(asg_rec.asg_act_id);
7740 FETCH csr_ni_prepay_asg_act_details
7741 INTO l_ni_prepay_asg_action_id;
7742 CLOSE csr_ni_prepay_asg_act_details;
7743 hr_utility.trace('l_ni_prepay_asg_action_id: '|| l_ni_prepay_asg_action_id);
7744 --apply the lock
7745 if l_ni_prepay_asg_action_id is not null then
7746 hr_utility.trace('lockingactid: '||lockingactid);
7747 hr_utility.trace('l_ni_prepay_asg_action_id: '|| l_ni_prepay_asg_action_id);
7748 hr_nonrun_asact.insint(lockingactid, l_ni_prepay_asg_action_id);
7749 else
7750 hr_utility.trace('No prepayment for asg_id : '|| );
7751 */
7752 end if;
7753
7754 end if;
7755 else
7756 hr_utility.set_location('Current assignment - ' || asg_rec.assignment_id || ' is RTI NI Reporting assignment.',50);
7757 -- proceed with next assignment
7758 end if;
7759 end if;
7760
7761 END IF; -- IF l_per_agg_flag = 'Y' THEN
7762
7763 END LOOP;
7764 --end if;
7765 hr_utility.set_location('Leaving: '||l_proc,999);
7766 END internal_action_creation_fps;
7767 --
7768 --
7769 --
7770 /*--------------------------------------------------------------------------
7771 Name : action_creation
7772 Purpose : This creates the assignment actions for a specific chunk.
7773 Arguments :
7774 Notes :
7775 --------------------------------------------------------------------------*/
7776 PROCEDURE rti_fps_action_creation(
7777 pactid IN NUMBER,
7778 stperson IN NUMBER,
7779 endperson IN NUMBER,
7780 chunk IN NUMBER)
7781 IS
7782 BEGIN
7783 internal_action_creation_fps(pactid, stperson, endperson, chunk,'GB_RTI_FPS', 'RTI_FPS_REP');
7784 END rti_fps_action_creation;
7785 ---
7786 ---
7787 PROCEDURE reset_flag(
7788 p_type VARCHAR2,
7789 p_reset_flag_type VARCHAR2,
7790 p_assact NUMBER)
7791 IS
7792 l_proc CONSTANT VARCHAR2(50):= g_package||'reset_flag';
7793
7794 CURSOR csr_aei_starter_details
7795 IS
7796 SELECT aei.assignment_extra_info_id,
7797 aei.object_version_number,
7798 aei.aei_information8
7799 FROM pay_assignment_actions paa,
7800 per_assignment_extra_info aei
7801 WHERE paa.assignment_action_id = p_assact
7802 AND aei.assignment_id = paa.assignment_id
7803 AND aei.information_type = p_type;
7804
7805 CURSOR csr_aei_pensioner_details
7806 IS
7807 SELECT aei.assignment_extra_info_id,
7808 aei.object_version_number,
7809 aei.aei_information9
7810 FROM pay_assignment_actions paa,
7811 per_assignment_extra_info aei
7812 WHERE paa.assignment_action_id = p_assact
7813 AND aei.assignment_id = paa.assignment_id
7814 AND aei.information_type = p_type;
7815
7816 CURSOR csr_aei_expat_details
7817 IS
7818 SELECT aei.assignment_extra_info_id,
7819 aei.object_version_number,
7820 aei.aei_information19
7821 FROM pay_assignment_actions paa,
7822 per_assignment_extra_info aei
7823 WHERE paa.assignment_action_id = p_assact
7824 AND aei.assignment_id = paa.assignment_id
7825 AND aei.information_type = p_type;
7826
7827 l_aei_starter_rec csr_aei_starter_details%rowtype;
7828 l_aei_pensioner_rec csr_aei_pensioner_details%rowtype;
7829 l_aei_expat_rec csr_aei_expat_details%rowtype;
7830 l_ovn NUMBER;
7831 l_reset_flag VARCHAR2(30);
7832
7833 BEGIN
7834 IF p_reset_flag_type = 'STARTER' THEN
7835
7836 OPEN csr_aei_starter_details;
7837 FETCH csr_aei_starter_details INTO l_aei_starter_rec;
7838 CLOSE csr_aei_starter_details;
7839
7840 IF l_aei_starter_rec.aei_information8 = 'Y' THEN
7841 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
7842 p_object_version_number => l_ovn,
7843 p_assignment_extra_info_id => l_aei_starter_rec.assignment_extra_info_id,
7844 p_aei_information_category => p_type,
7845 p_aei_information8 => 'N');
7846 END IF;
7847 END IF;
7848
7849 IF p_reset_flag_type = 'PENSIONER' THEN
7850
7851 OPEN csr_aei_pensioner_details;
7852 FETCH csr_aei_pensioner_details INTO l_aei_pensioner_rec;
7853 CLOSE csr_aei_pensioner_details;
7854
7855 IF l_aei_pensioner_rec.aei_information9 = 'Y' THEN
7856 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
7857 p_object_version_number => l_ovn,
7858 p_assignment_extra_info_id => l_aei_pensioner_rec.assignment_extra_info_id,
7859 p_aei_information_category => p_type,
7860 p_aei_information9 => 'N');
7861 END IF;
7862 END IF;
7863
7864 IF p_reset_flag_type = 'EXPAT' THEN
7865
7866 OPEN csr_aei_expat_details;
7867 FETCH csr_aei_expat_details INTO l_aei_expat_rec;
7868 CLOSE csr_aei_expat_details;
7869
7870 IF l_aei_expat_rec.aei_information19 = 'Y' THEN
7871 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
7872 p_object_version_number => l_ovn,
7873 p_assignment_extra_info_id => l_aei_expat_rec.assignment_extra_info_id,
7874 p_aei_information_category => p_type,
7875 p_aei_information19 => 'N');
7876 END IF;
7877 END IF;
7878 END;
7879
7880 /*--------------------------------------------------------------------------
7881 Name : archinit
7882 Purpose : This procedure can be used to perform an initialisation
7883 section and validation of Employer details
7884 Arguments :
7885 Notes :
7886 --------------------------------------------------------------------------*/
7887 PROCEDURE archinit(
7888 p_payroll_action_id IN NUMBER)
7889 IS
7890 error_found EXCEPTION;
7891 l_proc CONSTANT VARCHAR2(50) := g_package || ' archinit';
7892 l_sender_id hr_organization_information.org_information11%TYPE;
7893 l_tax_ref hr_organization_information.org_information1%TYPE;
7894 l_tax_dist hr_organization_information.org_information2%TYPE;
7895 l_employer_addr VARCHAR2(255);
7896 l_employer_name VARCHAR2(150);
7897 l_err BOOLEAN;
7898 l_exp EXCEPTION;
7899 l_rep_typ VARCHAR2(100);
7900 l_effective_date DATE;
7901
7902
7903 CURSOR csr_parameter_info(p_payroll_action_id NUMBER)
7904 IS
7905 SELECT effective_date,
7906 business_group_id,
7907 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PRE_PAY_ID'),1,20) pre_pay_id,
7908 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PAYROLL_ID'),1,20) payroll_id,
7909 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
7910 SUBSTR(pay_gb_eoy_archive.get_parameter (legislative_parameters, 'FIRST_FPS'), 1,1) first_fps
7911
7912 FROM pay_payroll_actions
7913 WHERE payroll_action_id = p_payroll_action_id;
7914
7915 cursor csr_prepayment_date(pre_pay_id number)
7916 is
7917 SELECT
7918 ppa.effective_date
7919 FROM
7920 pay_payroll_actions ppa
7921 WHERE
7922 ppa.payroll_action_id = pre_pay_id;
7923
7924 CURSOR csr_pre_pact_eff_date(p_payroll_action_id NUMBER)
7925 IS
7926 SELECT effective_date
7927 FROM pay_payroll_actions
7928 WHERE payroll_action_id = p_payroll_action_id;
7929
7930 CURSOR csr_payroll_details(pactid NUMBER)
7931 IS
7932 SELECT NVL(UPPER(hoi.org_information11),' ') sender_id,
7933 DECODE(SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TEST=') + 5,1) ,'N',' ','Y','1') test_indicator,
7934 fnd_number.number_to_canonical(pact.request_id) request_id,
7935 NVL(upper(SUBSTR(ltrim(hoi.org_information3),1,35)),' ') employer_name,
7936 NVL(upper(SUBSTR(ltrim(SUBSTR(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
7937 lpad(NVL(SUBSTR(hoi.org_information1,1,3),' '),3,0) tax_office_no,
7938 DECODE(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
7939 NVL(upper(SUBSTR(hoi.org_information6,1,13)),' ') acc_ref_no,
7940 report_type
7941 FROM pay_payroll_actions pact,
7942 hr_organization_information hoi
7943 WHERE pact.payroll_action_id =pactid
7944 AND pact.business_group_id = hoi.organization_id
7945 AND hoi.org_information_context = 'Tax Details References'
7946 AND NVL(hoi.org_information10,'UK') = 'UK'
7947 AND SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8, instr(pact.legislative_parameters
7948 ||' ',' ', instr(pact.legislative_parameters,'TAX_REF=') +8) - instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
7949
7950 CURSOR csr_ni_details
7951 IS
7952 SELECT petf.element_type_id,
7953 input_value_id
7954 FROM pay_element_types_f petf,
7955 pay_input_values_f pivf
7956 WHERE petf.element_name = 'NI'
7957 AND petf.element_type_id = pivf.element_type_id
7958 AND pivf.name = 'Process Type'
7959 AND petf.legislation_code = 'GB'
7960 AND pivf.legislation_code = 'GB'
7961 AND l_effective_date BETWEEN petf.effective_start_date AND petf.effective_end_date
7962 AND l_effective_date BETWEEN pivf.effective_start_date AND pivf.effective_end_date;
7963
7964 CURSOR get_defined_balance_id
7965 IS
7966 SELECT b.balance_name balance_name,
7967 b.balance_type_id balance_type_id,
7968 d.database_item_suffix database_item_suffix,
7969 d.balance_dimension_id balance_dimension_id,
7970 db.defined_balance_id defined_balance_id
7971 FROM pay_defined_balances db,
7972 pay_balance_types b,
7973 pay_balance_dimensions d
7974 WHERE db.balance_type_id = b.balance_type_id
7975 AND db.balance_dimension_id = d.balance_dimension_id
7976 AND ((d.database_item_suffix = '_ASG_TD_YTD'
7977 AND b.balance_name IN ('Taxable Pay','PAYE','Student Loan','SSP Total',
7978 'SMP Total','SPP Adoption Total', 'SPP Birth Total','SAP Total',
7979 'ASPP Adoption Total','ASPP Birth Total','Pre Tax Pension Contributions',
7980 'Post Tax Pension Contributions',
7981 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
7982 'Benefits Taxed Through Payroll Subject to NIC Earnings',
7983 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
7984 'Benefits Taxed Through Payroll Subject to NIC Information',
7985 'Benefits Taxed Through Payroll NOT Subject to NIC Information', 'NI Employer',
7986 'Total Direct Payments'))
7987 OR(d.database_item_suffix = '_ASG_RUN'
7988 AND b.balance_name IN ('Taxable Pay', 'Student Loan', 'PAYE', 'Pre Tax Pension Contributions',
7989 'Post Tax Pension Contributions','NIC able Benefits',
7990 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
7991 'Benefits Taxed Through Payroll Subject to NIC Earnings',
7992 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
7993 'Benefits Taxed Through Payroll Subject to NIC Information',
7994 'Benefits Taxed Through Payroll NOT Subject to NIC Information',
7995 'Gross Pay', 'Total Deductions', 'NI Employer',
7996 'Total Direct Payments','SSP Total',
7997 'SMP Total','SPP Adoption Total', 'SAP Total',
7998 'ASPP Adoption Total','ASPP Birth Total','Pre Tax Deductions'
7999 ,'NIable Deductions Free of Tax'))
8000 /*
8001 OR(d.database_item_suffix = '_ASG_PROC_PTD'
8002 AND b.balance_name IN ('Court Order','Court Order Non Priority'))
8003 */
8004 OR(d.database_item_suffix = '_PER_TD_YTD'
8005 AND b.balance_name IN ('Taxable Pay', 'Student Loan', 'NI Employer', 'Earnings Free of Tax',
8006 'Earnings Free of NI', 'SSP Total', 'SMP Total', 'SPP Adoption Total',
8007 'SPP Birth Total', 'SAP Total', 'ASPP Adoption Total', 'ASPP Birth Total'))
8008
8009 OR(d.database_item_suffix = '_PER_TD_CPE_YTD'
8010 AND b.balance_name IN ('PAYE')))
8011 AND b.legislation_code = 'GB'
8012 AND d.legislation_code = 'GB'
8013 AND db.legislation_code = 'GB';
8014
8015 CURSOR get_aggr_defined_balance_id
8016 IS
8017 SELECT b.balance_name balance_name,
8018 b.balance_type_id balance_type_id,
8019 d.database_item_suffix database_item_suffix,
8020 d.balance_dimension_id balance_dimension_id,
8021 db.defined_balance_id defined_balance_id
8022 FROM pay_defined_balances db,
8023 pay_balance_types b,
8024 pay_balance_dimensions d
8025 WHERE db.balance_type_id = b.balance_type_id
8026 AND db.balance_dimension_id = d.balance_dimension_id
8027 AND ((d.database_item_suffix = '_PER_TD_YTD'
8028 AND b.balance_name IN ('Taxable Pay','PAYE','Student Loan','SSP Total','SMP Total',
8029 'SPP Adoption Total', 'SAP Total','ASPP Adoption Total',
8030 'Pre Tax Pension Contributions','Post Tax Pension Contributions',
8031 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
8032 'Benefits Taxed Through Payroll Subject to NIC Earnings',
8033 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
8034 'Benefits Taxed Through Payroll Subject to NIC Information',
8035 'Benefits Taxed Through Payroll NOT Subject to NIC Information','Total Direct Payments',
8036 'SPP Birth Total','ASPP Birth Total'))
8037 OR(d.database_item_suffix = '_ASG_RUN'
8038 AND b.balance_name IN ('Taxable Pay', 'NIC able Benefits','Student Loan', 'PAYE',
8039 'Pre Tax Pension Contributions','Post Tax Pension Contributions',
8040 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
8041 'Benefits Taxed Through Payroll Subject to NIC Earnings',
8042 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
8043 'Benefits Taxed Through Payroll Subject to NIC Information',
8044 'Benefits Taxed Through Payroll NOT Subject to NIC Information',
8045 'Gross Pay', 'Total Deductions','Total Direct Payments','Pre Tax Deductions'
8046 ,'NIable Deductions Free of Tax'))
8047 /* OR(d.database_item_suffix = '_ASG_PROC_PTD'
8048 AND b.balance_name IN ('Court Order','Court Order Non Priority'))
8049 */
8050 OR(d.database_item_suffix = '_PER_TD_CPE_YTD'
8051 AND b.balance_name IN ('PAYE'))
8052 )
8053 and b.legislation_code = 'GB'
8054 and d.legislation_code = 'GB'
8055 and db.legislation_code = 'GB';
8056
8057 CURSOR get_first_fps_date(c_payroll_id number)
8058 IS
8059 SELECT max (ppa2.effective_date)
8060 FROM pay_payroll_actions ppa2
8061 WHERE ppa2.report_qualifier = 'GB'
8062 AND ppa2.report_type in ('RTI_FPS_REP','RTI_FPS_REP_13')
8063 AND ppa2.action_status = 'C'
8064 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'FIRST_FPS'),1,20) = 'Y'
8065 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'PAYROLL_ID'),1,20) = c_payroll_id; --'4064' --'4065' --ppa1.payroll_id
8066
8067
8068 l_count NUMBER := 1;
8069 l_fps_effective_date VARCHAR2(30);
8070 l_balance_counter NUMBER;
8071 taxable_id NUMBER :=1;
8072 paye_id NUMBER :=2;
8073 student_loan_id NUMBER :=3;
8074 taxable_ptd_id NUMBER :=4;
8075 student_loan_ptd_id NUMBER :=5;
8076 paye_ptd_id NUMBER :=6;
8077 ssp_id NUMBER :=7;
8078 smp_id NUMBER :=8;
8079 ospp_adopt_id NUMBER :=9;
8080 sap_id NUMBER :=10;
8081 aspp_adopt_id NUMBER :=11;
8082 l_dummy NUMBER;
8083 l_pre_pact_effective_date DATE;
8084 l_first_fps_run_date date;
8085
8086 BEGIN
8087 hr_utility.set_location('Entering '|| l_proc, 10);
8088 l_err := FALSE;
8089
8090 OPEN csr_parameter_info(p_payroll_action_id);
8091 FETCH csr_parameter_info
8092 INTO l_effective_date,
8093 g_business_group_id,
8094 g_pre_pact_id,
8095 g_payroll_id,
8096 g_tax_ref,
8097 g_first_fps;
8098 CLOSE csr_parameter_info;
8099
8100 open csr_prepayment_date(g_pre_pact_id);
8101 fetch csr_prepayment_date into g_prepayment_date;
8102 close csr_prepayment_date;
8103
8104 g_fps_effective_date := l_effective_date;
8105 g_payroll_action_id := p_payroll_action_id;
8106
8107 hr_utility.trace('l_effective_date: '||l_effective_date);
8108 hr_utility.trace('g_fps_effective_date: '||g_fps_effective_date);
8109 hr_utility.trace('g_business_group_id: '||g_business_group_id);
8110 hr_utility.trace('g_pre_pact_id: '||g_pre_pact_id);
8111 hr_utility.trace('g_payroll_id: '||g_payroll_id);
8112
8113 OPEN csr_pre_pact_eff_date(g_pre_pact_id);
8114 FETCH csr_pre_pact_eff_date
8115 INTO l_pre_pact_effective_date;
8116 CLOSE csr_pre_pact_eff_date;
8117
8118 OPEN get_first_fps_date(g_payroll_id);
8119 FETCH get_first_fps_date
8120 INTO l_first_fps_run_date;
8121 CLOSE get_first_fps_date;
8122
8123 hr_utility.trace('l_first_fps_run_date: '||l_first_fps_run_date);
8124
8125 g_first_fps_run_date := l_first_fps_run_date;
8126
8127 hr_utility.trace('g_first_fps_run_date: '||g_first_fps_run_date);
8128
8129 SELECT distinct element_type_id
8130 INTO g_paye_element_id
8131 FROM pay_element_types_f
8132 WHERE element_name = 'PAYE'
8133 AND legislation_code = 'GB';
8134
8135 SELECT distinct element_type_id
8136 INTO g_paye_details_id
8137 FROM pay_element_types_f
8138 WHERE element_name = 'PAYE Details'
8139 AND legislation_code = 'GB';
8140
8141 SELECT distinct element_type_id
8142 INTO g_adv_period_id
8143 FROM pay_element_types_f
8144 WHERE element_name = 'Advance Period'
8145 AND legislation_code = 'GB';
8146
8147 hr_utility.trace('g_paye_element_id: '||TO_CHAR(g_paye_element_id));
8148
8149 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
8150 g_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
8151 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') ;
8152 ELSE
8153 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') ;
8154 g_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
8155 END IF;
8156
8157 hr_utility.trace('g_start_year: '||g_start_year);
8158 hr_utility.trace('g_end_year: '||g_end_year);
8159 hr_utility.trace('l_pre_pact_effective_date: '||l_pre_pact_effective_date);
8160
8161 if (g_start_year <= l_pre_pact_effective_date and g_end_year >= l_pre_pact_effective_date) then
8162 hr_utility.trace('Valid Effective Date for FPS Concurrent Program');
8163 else
8164 hr_utility.trace('Invalid Effective Date for FPS Concurrent Program');
8165 fnd_file.put_line(fnd_file.LOG,'FPS Program Effective date must be within the tax year of corresponding Pre-Payment Process Effective Date.');
8166 fnd_file.put_line(fnd_file.output,'FPS Program Effective date must be within the tax year of corresponding Pre-Payment Process Effective Date.');
8167 raise_application_error(-20001,'FPS Program Effective date must be within the tax year of corresponding Pre-Payment Process Effective Date.');
8168 end if;
8169
8170 /*
8171 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS: ');
8172 l_dummy := PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS(g_pre_pact_id, 'FPS');
8173 */
8174
8175 OPEN csr_ni_details;
8176 FETCH csr_ni_details INTO g_ni_pt_eid, g_ni_pt_ivid;
8177 CLOSE csr_ni_details;
8178
8179 --******************************
8180 l_balance_counter := 1;
8181 FOR rec IN get_defined_balance_id
8182 LOOP
8183 g_fps_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
8184 hr_utility.trace('balance_name: '||g_fps_bal_det_tab(l_balance_counter).balance_name);
8185 g_fps_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
8186 hr_utility.trace('balance_type_id: '||g_fps_bal_det_tab(l_balance_counter).balance_type_id);
8187 g_fps_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
8188 hr_utility.trace('database_item_suffix: '||g_fps_bal_det_tab(l_balance_counter).database_item_suffix);
8189 g_fps_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
8190 hr_utility.trace('balance_dimension_id: '||g_fps_bal_det_tab(l_balance_counter).balance_dimension_id);
8191 g_fps_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
8192 hr_utility.trace('defined_balance_id: '||g_fps_bal_det_tab(l_balance_counter).defined_balance_id);
8193 l_balance_counter := l_balance_counter + 1;
8194 hr_utility.trace('Balance Counter: '||l_balance_counter);
8195 END LOOP;
8196
8197 FOR i IN 1..g_fps_bal_det_tab.last
8198 LOOP
8199 g_defined_balance_lst(i).defined_balance_id := g_fps_bal_det_tab(i).defined_balance_id;
8200 END LOOP;
8201
8202 --Aggregation balances starts here
8203 l_balance_counter := 1;
8204 FOR rec IN get_aggr_defined_balance_id
8205 LOOP
8206 g_fps_aggr_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
8207 hr_utility.trace('balance name: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_name);
8208 g_fps_aggr_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
8209 hr_utility.trace('balance_type_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_type_id);
8210 g_fps_aggr_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
8211 hr_utility.trace('database_item_suffix: '||g_fps_aggr_bal_det_tab(l_balance_counter).database_item_suffix);
8212 g_fps_aggr_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
8213 hr_utility.trace('balance_dimension_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_dimension_id);
8214 g_fps_aggr_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
8215 hr_utility.trace('defined_balance_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).defined_balance_id);
8216 l_balance_counter := l_balance_counter + 1;
8217 hr_utility.trace('Balance Counter: '||l_balance_counter);
8218 END LOOP;
8219
8220 FOR i IN 1..g_fps_aggr_bal_det_tab.last
8221 LOOP
8222 g_aggr_defined_balance_lst(i).defined_balance_id := g_fps_aggr_bal_det_tab(i).defined_balance_id;
8223 END LOOP;
8224
8225 --Aggregation balances ends here
8226 hr_utility.set_location('Leaving '|| l_proc, 10);
8227
8228 EXCEPTION
8229 WHEN OTHERS THEN
8230 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
8231 hr_utility.raise_error;
8232 END archinit;
8233 --
8234 procedure add_other_asg_ni_ytd(c_asg_act_id in number , p_archive_tab in out nocopy act_info_rec) is
8235
8236 cursor csr_def_bal_id(c_bal_name varchar2, c_dim_name varchar2) is
8237 select pdb.defined_balance_id from pay_balance_types pbt, pay_balance_dimensions pbd,
8238 pay_defined_balances pdb where
8239 pbt.balance_name = c_bal_name
8240 and pbd.database_item_suffix = c_dim_name
8241 and pdb.balance_type_id = pbt.balance_type_id
8242 and pdb.balance_dimension_id = pbd.balance_dimension_id
8243 and pbd.LEGISLATION_CODE = 'GB'
8244 and pbt.LEGISLATION_CODE = 'GB';
8245 l_def_bal_id number;
8246 begin
8247 hr_utility.trace('Entering : add_other_asg_ni_ytd');
8248 hr_utility.trace('c_asg_act_id: ' || c_asg_act_id);
8249
8250 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able', '_ASG_TD_YTD');
8251 fetch csr_def_bal_id into l_def_bal_id;
8252 hr_utility.trace('l_def_bal_id1: ' || l_def_bal_id);
8253 close csr_def_bal_id;
8254 p_archive_tab.act_info2 := nvl(p_archive_tab.act_info2,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8255
8256 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able LEL', '_ASG_TD_YTD');
8257 fetch csr_def_bal_id into l_def_bal_id;
8258 hr_utility.trace('l_def_bal_id2: ' || l_def_bal_id);
8259 close csr_def_bal_id;
8260 p_archive_tab.act_info3 := nvl(p_archive_tab.act_info3,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8261
8262 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able ET', '_ASG_TD_YTD');
8263 fetch csr_def_bal_id into l_def_bal_id;
8264 hr_utility.trace('l_def_bal_id3: ' || l_def_bal_id);
8265 close csr_def_bal_id;
8266 p_archive_tab.act_info4 := nvl(p_archive_tab.act_info4,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8267
8268 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able UAP', '_ASG_TD_YTD');
8269 fetch csr_def_bal_id into l_def_bal_id;
8270 hr_utility.trace('l_def_bal_id4: ' || l_def_bal_id);
8271 close csr_def_bal_id;
8272 p_archive_tab.act_info5 := nvl(p_archive_tab.act_info5,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8273
8274 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able UEL', '_ASG_TD_YTD');
8275 fetch csr_def_bal_id into l_def_bal_id;
8276 hr_utility.trace('l_def_bal_id5: ' || l_def_bal_id);
8277 close csr_def_bal_id;
8278 p_archive_tab.act_info6 := nvl(p_archive_tab.act_info6,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8279
8280 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Employer', '_ASG_TD_YTD');
8281 fetch csr_def_bal_id into l_def_bal_id;
8282 hr_utility.trace('l_def_bal_id6: ' || l_def_bal_id);
8283 close csr_def_bal_id;
8284 p_archive_tab.act_info7 := nvl(p_archive_tab.act_info7,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8285
8286 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Employee', '_ASG_TD_YTD');
8287 fetch csr_def_bal_id into l_def_bal_id;
8288 hr_utility.trace('l_def_bal_id7: ' || l_def_bal_id);
8289 close csr_def_bal_id;
8290 p_archive_tab.act_info8 := nvl(p_archive_tab.act_info8,0) + nvl(100* hr_dirbal.get_balance(c_asg_act_id, l_def_bal_id),0);
8291
8292 hr_utility.trace('Leaving : add_other_asg_ni_ytd');
8293 end add_other_asg_ni_ytd;
8294
8295 ---
8296 procedure ni_agg_ytd_sum(l_archive_tab in out nocopy action_info_table,
8297 i in out nocopy number,
8298 p_per_ni_a_balance act_info_rec,
8299 p_per_ni_b_balance act_info_rec,
8300 p_per_ni_c_balance act_info_rec,
8301 p_per_ni_d_balance act_info_rec,
8302 p_per_ni_e_balance act_info_rec,
8303 p_per_ni_j_balance act_info_rec,
8304 p_per_ni_l_balance act_info_rec
8305 ) is
8306 l_ni_rpt_asg_id NUMBER;
8307 l_ni_rpt_date DATE;
8308 l_cat number := null;
8309
8310 begin
8311 l_ni_rpt_asg_id := l_archive_tab(3).assignment_id;
8312 --A
8313 if p_per_ni_a_balance.act_info1 is not null then
8314 for k in 4..i
8315 loop
8316 if l_archive_tab(k).act_info1 = p_per_ni_a_balance.act_info1 then
8317 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8318 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8319 l_archive_tab(k).act_info3 := p_per_ni_a_balance.act_info3;
8320 l_archive_tab(k).act_info4 := p_per_ni_a_balance.act_info4;
8321 l_archive_tab(k).act_info5 := p_per_ni_a_balance.act_info5;
8322 l_archive_tab(k).act_info6 := p_per_ni_a_balance.act_info6;
8323 l_archive_tab(k).act_info7 := p_per_ni_a_balance.act_info7;
8324 l_archive_tab(k).act_info8 := p_per_ni_a_balance.act_info8;
8325 l_cat := 1;
8326 end if;
8327 end loop;
8328 if l_cat is null then
8329 i := i+1;
8330 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8331 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8332 l_archive_tab(i).act_info1 := 'A';
8333 l_archive_tab(i).act_info2 := 0;
8334 l_archive_tab(i).act_info3 := p_per_ni_a_balance.act_info3;
8335 l_archive_tab(i).act_info4 := p_per_ni_a_balance.act_info4;
8336 l_archive_tab(i).act_info5 := p_per_ni_a_balance.act_info5;
8337 l_archive_tab(i).act_info6 := p_per_ni_a_balance.act_info6;
8338 l_archive_tab(i).act_info7 := p_per_ni_a_balance.act_info7;
8339 l_archive_tab(i).act_info8 := p_per_ni_a_balance.act_info8;
8340 l_archive_tab(i).act_info9 := 0;
8341 l_archive_tab(i).act_info10 := 0;
8342 end if;
8343
8344 end if;
8345 l_cat := null;
8346 --B
8347 if p_per_ni_b_balance.act_info1 is not null then
8348 for k in 4..i
8349 loop
8350 if l_archive_tab(k).act_info1 = p_per_ni_b_balance.act_info1 then
8351 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8352 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8353 l_archive_tab(k).act_info3 := p_per_ni_b_balance.act_info3;
8354 l_archive_tab(k).act_info4 := p_per_ni_b_balance.act_info4;
8355 l_archive_tab(k).act_info5 := p_per_ni_b_balance.act_info5;
8356 l_archive_tab(k).act_info6 := p_per_ni_b_balance.act_info6;
8357 l_archive_tab(k).act_info7 := p_per_ni_b_balance.act_info7;
8358 l_archive_tab(k).act_info8 := p_per_ni_b_balance.act_info8;
8359 l_cat := 1;
8360 end if;
8361 end loop;
8362 if l_cat is null then
8363 i := i+1;
8364 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8365 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8366 l_archive_tab(i).act_info1 := 'B';
8367 l_archive_tab(i).act_info2 := 0;
8368 l_archive_tab(i).act_info3 := p_per_ni_b_balance.act_info3;
8369 l_archive_tab(i).act_info4 := p_per_ni_b_balance.act_info4;
8370 l_archive_tab(i).act_info5 := p_per_ni_b_balance.act_info5;
8371 l_archive_tab(i).act_info6 := p_per_ni_b_balance.act_info6;
8372 l_archive_tab(i).act_info7 := p_per_ni_b_balance.act_info7;
8373 l_archive_tab(i).act_info8 := p_per_ni_b_balance.act_info8;
8374 l_archive_tab(i).act_info9 := 0;
8375 l_archive_tab(i).act_info10 := 0;
8376 end if;
8377 end if;
8378 l_cat := null;
8379 -- D
8380 if p_per_ni_d_balance.act_info1 is not null then
8381 for k in 4..i
8382 loop
8383 if l_archive_tab(k).act_info1 = p_per_ni_d_balance.act_info1 then
8384 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8385 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8386 l_archive_tab(k).act_info3 := p_per_ni_d_balance.act_info3;
8387 l_archive_tab(k).act_info4 := p_per_ni_d_balance.act_info4;
8388 l_archive_tab(k).act_info5 := p_per_ni_d_balance.act_info5;
8389 l_archive_tab(k).act_info6 := p_per_ni_d_balance.act_info6;
8390 l_archive_tab(k).act_info7 := p_per_ni_d_balance.act_info7;
8391 l_archive_tab(k).act_info8 := p_per_ni_d_balance.act_info8;
8392 l_cat := 1;
8393 end if;
8394 end loop;
8395 if l_cat is null then
8396 i := i + 1;
8397 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8398 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8399 l_archive_tab(i).act_info1 := 'D';
8400 l_archive_tab(i).act_info2 := 0;
8401 l_archive_tab(i).act_info3 := p_per_ni_d_balance.act_info3;
8402 l_archive_tab(i).act_info4 := p_per_ni_d_balance.act_info4;
8403 l_archive_tab(i).act_info5 := p_per_ni_d_balance.act_info5;
8404 l_archive_tab(i).act_info6 := p_per_ni_d_balance.act_info6;
8405 l_archive_tab(i).act_info7 := p_per_ni_d_balance.act_info7;
8406 l_archive_tab(i).act_info8 := p_per_ni_d_balance.act_info8;
8407 l_archive_tab(i).act_info9 := 0;
8408 l_archive_tab(i).act_info10 := 0;
8409 end if;
8410 end if;
8411 l_cat := null;
8412 --C
8413 if p_per_ni_c_balance.act_info1 is not null then
8414 for k in 4..i
8415 loop
8416 if l_archive_tab(k).act_info1 = p_per_ni_c_balance.act_info1 then
8417 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8418 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8419 l_archive_tab(k).act_info3 := p_per_ni_c_balance.act_info3;
8420 l_archive_tab(k).act_info4 := p_per_ni_c_balance.act_info4;
8421 l_archive_tab(k).act_info5 := p_per_ni_c_balance.act_info5;
8422 l_archive_tab(k).act_info6 := p_per_ni_c_balance.act_info6;
8423 l_archive_tab(k).act_info7 := p_per_ni_c_balance.act_info7;
8424 l_archive_tab(k).act_info8 := p_per_ni_c_balance.act_info8;
8425 l_cat := 1;
8426 end if;
8427 end loop;
8428 if l_cat is null then
8429 i := i+1;
8430 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8431 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8432 l_archive_tab(i).act_info1 := 'C';
8433 l_archive_tab(i).act_info2 := 0;
8434 l_archive_tab(i).act_info3 := p_per_ni_c_balance.act_info3;
8435 l_archive_tab(i).act_info4 := p_per_ni_c_balance.act_info4;
8436 l_archive_tab(i).act_info5 := p_per_ni_c_balance.act_info5;
8437 l_archive_tab(i).act_info6 := p_per_ni_c_balance.act_info6;
8438 l_archive_tab(i).act_info7 := p_per_ni_c_balance.act_info7;
8439 l_archive_tab(i).act_info8 := p_per_ni_c_balance.act_info8;
8440 l_archive_tab(i).act_info9 := 0;
8441 l_archive_tab(i).act_info10 := 0;
8442 end if;
8443 end if;
8444 l_cat := null;
8445 --E
8446 if p_per_ni_e_balance.act_info1 is not null then
8447 for k in 4..i
8448 loop
8449 if l_archive_tab(k).act_info1 = p_per_ni_e_balance.act_info1 then
8450 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8451 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8452 l_archive_tab(k).act_info3 := p_per_ni_e_balance.act_info3;
8453 l_archive_tab(k).act_info4 := p_per_ni_e_balance.act_info4;
8454 l_archive_tab(k).act_info5 := p_per_ni_e_balance.act_info5;
8455 l_archive_tab(k).act_info6 := p_per_ni_e_balance.act_info6;
8456 l_archive_tab(k).act_info7 := p_per_ni_e_balance.act_info7;
8457 l_archive_tab(k).act_info8 := p_per_ni_e_balance.act_info8;
8458 l_cat := 1;
8459 end if;
8460 end loop;
8461 if l_cat is null then
8462 i := i+1;
8463 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8464 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8465 l_archive_tab(i).act_info1 := 'E';
8466 l_archive_tab(i).act_info2 := 0;
8467 l_archive_tab(i).act_info3 := p_per_ni_e_balance.act_info3;
8468 l_archive_tab(i).act_info4 := p_per_ni_e_balance.act_info4;
8469 l_archive_tab(i).act_info5 := p_per_ni_e_balance.act_info5;
8470 l_archive_tab(i).act_info6 := p_per_ni_e_balance.act_info6;
8471 l_archive_tab(i).act_info7 := p_per_ni_e_balance.act_info7;
8472 l_archive_tab(i).act_info8 := p_per_ni_e_balance.act_info8;
8473 l_archive_tab(i).act_info9 := 0;
8474 l_archive_tab(i).act_info10 := 0;
8475 end if;
8476 end if;
8477 l_cat := null;
8478 --j
8479 if p_per_ni_j_balance.act_info1 is not null then
8480 for k in 4..i
8481 loop
8482 if l_archive_tab(k).act_info1 = p_per_ni_j_balance.act_info1 then
8483 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8484 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8485 l_archive_tab(k).act_info3 := p_per_ni_j_balance.act_info3;
8486 l_archive_tab(k).act_info4 := p_per_ni_j_balance.act_info4;
8487 l_archive_tab(k).act_info5 := p_per_ni_j_balance.act_info5;
8488 l_archive_tab(k).act_info6 := p_per_ni_j_balance.act_info6;
8489 l_archive_tab(k).act_info7 := p_per_ni_j_balance.act_info7;
8490 l_archive_tab(k).act_info8 := p_per_ni_j_balance.act_info8;
8491 l_cat := 1;
8492 end if;
8493 end loop;
8494 if l_cat is null then
8495 i := i+1;
8496 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8497 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8498 l_archive_tab(i).act_info1 := 'J';
8499 l_archive_tab(i).act_info2 := 0;
8500 l_archive_tab(i).act_info3 := p_per_ni_j_balance.act_info3;
8501 l_archive_tab(i).act_info4 := p_per_ni_j_balance.act_info4;
8502 l_archive_tab(i).act_info5 := p_per_ni_j_balance.act_info5;
8503 l_archive_tab(i).act_info6 := p_per_ni_j_balance.act_info6;
8504 l_archive_tab(i).act_info7 := p_per_ni_j_balance.act_info7;
8505 l_archive_tab(i).act_info8 := p_per_ni_j_balance.act_info8;
8506 l_archive_tab(i).act_info9 := 0;
8507 l_archive_tab(i).act_info10 := 0;
8508 end if;
8509 end if;
8510 l_cat := null;
8511 --l
8512 if p_per_ni_l_balance.act_info1 is not null then
8513 for k in 4..i
8514 loop
8515 if l_archive_tab(k).act_info1 = p_per_ni_l_balance.act_info1 then
8516 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
8517 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
8518 l_archive_tab(k).act_info3 := p_per_ni_l_balance.act_info3;
8519 l_archive_tab(k).act_info4 := p_per_ni_l_balance.act_info4;
8520 l_archive_tab(k).act_info5 := p_per_ni_l_balance.act_info5;
8521 l_archive_tab(k).act_info6 := p_per_ni_l_balance.act_info6;
8522 l_archive_tab(k).act_info7 := p_per_ni_l_balance.act_info7;
8523 l_archive_tab(k).act_info8 := p_per_ni_l_balance.act_info8;
8524 l_cat := 1;
8525 end if;
8526 end loop;
8527 if l_cat is null then
8528 i := i+1;
8529 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
8530 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
8531 l_archive_tab(i).act_info1 := 'L';
8532 l_archive_tab(i).act_info2 := 0;
8533 l_archive_tab(i).act_info3 := p_per_ni_l_balance.act_info3;
8534 l_archive_tab(i).act_info4 := p_per_ni_l_balance.act_info4;
8535 l_archive_tab(i).act_info5 := p_per_ni_l_balance.act_info5;
8536 l_archive_tab(i).act_info6 := p_per_ni_l_balance.act_info6;
8537 l_archive_tab(i).act_info7 := p_per_ni_l_balance.act_info7;
8538 l_archive_tab(i).act_info8 := p_per_ni_l_balance.act_info8;
8539 l_archive_tab(i).act_info9 := 0;
8540 l_archive_tab(i).act_info10 := 0;
8541 end if;
8542 end if;
8543
8544 end ni_agg_ytd_sum;
8545 ---
8546
8547 --added for ni only aggregated case
8548 procedure get_ni_only_asg_details(l_asg_id number,
8549 l_archive_tab_det1 OUT nocopy act_info_rec,
8550 l_archive_tab_det2 OUT nocopy act_info_rec,
8551 l_archive_tab_det3 OUT nocopy act_info_rec,
8552 p_assactid number) is
8553 l_last_asg_action_id number;
8554 l_last_effective_date date;
8555 l_last_asg_action_id_1 number;
8556 l_last_effective_date_1 date;
8557 l_archive_tab_per act_info_rec;
8558 l_asg_eff_start_date date;
8559 l_person_id number;
8560 l_archive_tab_add act_info_rec;
8561 p_starter_set varchar2(1) := 'N';
8562 l_archive_asg_det1 BOOLEAN;
8563 l_archive_asg_det2 BOOLEAN;
8564 l_archive_addr BOOLEAN;
8565 l_archive_person BOOLEAN;
8566
8567 CURSOR csr_asg_basic_details(c_asg_id NUMBER)
8568 IS
8569 SELECT asg.EFFECTIVE_START_DATE asg_eff_start_date,
8570 asg.person_id
8571 FROM per_all_assignments_f asg
8572 WHERE asg.assignment_id = c_asg_id
8573 AND g_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date;
8574
8575 -- for ni only aggregation
8576 -- to get the latest payroll run assignment action id for the given assignment.
8577 cursor csr_get_latest_asg_action (c_asg_id number)
8578 is
8579 SELECT
8580 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
8581 || paa.assignment_action_id),16)) max_asg_act_id
8582 , max(pact.effective_date) effective_date
8583
8584 FROM pay_assignment_actions paa
8585 ,pay_payroll_actions pact
8586 ,per_time_periods ptp
8587 WHERE paa.assignment_id = c_asg_id
8588 AND paa.payroll_action_id = pact.payroll_action_id
8589 AND pact.time_period_id = ptp.time_period_id
8590 AND pact.action_type IN ('Q','R','B','I','V')
8591 AND paa.action_status IN ('C','S')
8592 AND ptp.regular_payment_date BETWEEN g_start_year
8593 AND g_end_year
8594 AND ptp.regular_payment_date <= g_effective_date;
8595
8596 cursor csr_get_latest_asg_action_1 (c_asg_id number)
8597 is
8598 SELECT
8599 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
8600 || paa.assignment_action_id),16)) max_asg_act_id
8601 , max(pact.effective_date) effective_date
8602
8603 FROM pay_assignment_actions paa
8604 ,pay_payroll_actions pact
8605 ,per_time_periods ptp
8606 WHERE paa.assignment_id = c_asg_id
8607 AND paa.payroll_action_id = pact.payroll_action_id
8608 AND pact.time_period_id = ptp.time_period_id
8609 AND pact.action_type IN ('Q','R','B','I','V')
8610 AND paa.action_status IN ('C','S')
8611 AND ptp.regular_payment_date BETWEEN g_start_year
8612 AND g_end_year;
8613
8614 begin
8615
8616 hr_utility.trace('Entering get_ni_only_asg_details for asg_id: ' || l_asg_id);
8617
8618 open csr_get_latest_asg_action(l_asg_id);
8619 fetch csr_get_latest_asg_action into l_last_asg_action_id, l_last_effective_date;
8620 close csr_get_latest_asg_action;
8621 if l_last_asg_action_id is null then
8622 open csr_get_latest_asg_action_1(l_asg_id);
8623 fetch csr_get_latest_asg_action_1 into l_last_asg_action_id_1, l_last_effective_date_1;
8624 close csr_get_latest_asg_action_1;
8625 end if;
8626
8627
8628 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
8629 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
8630 OPEN csr_asg_basic_details(l_asg_id);
8631 hr_utility.trace('l_last_asg_action_id_1: '||l_last_asg_action_id_1);
8632 hr_utility.trace('l_last_effective_date_1: '||l_last_effective_date_1);
8633
8634 FETCH csr_asg_basic_details INTO l_asg_eff_start_date, l_person_id;
8635 CLOSE csr_asg_basic_details;
8636
8637 hr_utility.set_location('Fetching person details ',10);
8638 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab_per);
8639 ---
8640 hr_utility.set_location('Fetching address details ',20);
8641 l_archive_addr := fetch_address_rec(l_archive_tab_per.person_id,
8642 l_archive_tab_per.assignment_id,
8643 g_effective_date,
8644 l_archive_tab_add);
8645 l_person_id := l_archive_tab_per.person_id;
8646 --Fetching assignments details for FPS
8647 hr_utility.set_location('Fetching Assignment details ',30);
8648 if l_last_asg_action_id is not null then
8649 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
8650 g_effective_date,
8651 p_assactid,
8652 l_last_asg_action_id,
8653 'Y',
8654 l_archive_tab_per,
8655 l_archive_tab_det1,
8656 p_starter_set);
8657 else
8658
8659 --fetch_fps_nopay_asg_det1 procedure will be called when there are no payments for the assignment.
8660 l_archive_asg_det1 := fetch_fps_nopay_asg_det1(l_asg_eff_start_date,
8661 g_effective_date,
8662 p_assactid,
8663 l_last_asg_action_id_1,
8664 'Y',
8665 l_archive_tab_per,
8666 l_archive_tab_det1,
8667 p_starter_set);
8668 end if;
8669
8670 l_archive_tab_det2.assignment_id := l_asg_id;
8671
8672 l_archive_tab_det2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
8673 l_archive_tab_det2.act_info1 := 0;
8674 l_archive_tab_det2.act_info2 := 0;
8675 l_archive_tab_det2.act_info3 := 0;
8676 l_archive_tab_det2.act_info4 := 0;
8677 l_archive_tab_det2.act_info5 := 0;
8678 l_archive_tab_det2.act_info6 := 0;
8679 l_archive_tab_det2.act_info7 := 0;
8680 l_archive_tab_det2.act_info8 := 0;
8681 l_archive_tab_det2.act_info9 := 0;
8682 l_archive_tab_det2.act_info10 := 0;
8683 l_archive_tab_det2.act_info11 := 0;
8684 l_archive_tab_det2.act_info12 := 0;
8685 l_archive_tab_det2.act_info13 := 0;
8686 l_archive_tab_det2.act_info14 := 0;
8687 l_archive_tab_det2.act_info15 := 0;
8688 l_archive_tab_det2.act_info16 := 0;
8689 l_archive_tab_det2.act_info17 := 0;
8690 l_archive_tab_det2.act_info18 := 0;
8691 l_archive_tab_det2.act_info19 := 0;
8692 l_archive_tab_det2.act_info20 := 0;
8693 l_archive_tab_det2.act_info21 := 0;
8694 l_archive_tab_det2.act_info22 := 0;
8695 l_archive_tab_det2.act_info23 := 0;
8696 l_archive_tab_det2.act_info24 := 0;
8697 if l_last_asg_action_id is not null then
8698 l_archive_asg_det2 := fetch_first_fps_asg_det2(l_last_asg_action_id,l_asg_id,l_last_effective_date,l_archive_tab_det2);
8699 end if;
8700 hr_utility.trace('after det2');
8701
8702
8703
8704 l_archive_tab_det2.act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
8705 l_archive_tab_det1.act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
8706
8707 end get_ni_only_asg_details;
8708 --
8709
8710 --
8711 --
8712 /*--------------------------------------------------------------------------
8713 Name : archive_data
8714 Purpose : This sets up the contexts needed for the live (non-archive)
8715 database items
8716 Arguments :
8717 Notes : Every possible context for a specific assignment action has to
8718 be added to the PL/SQL table
8719 --------------------------------------------------------------------------*/
8720 --
8721 --
8722 PROCEDURE archive_code(
8723 p_assactid IN NUMBER,
8724 p_effective_date IN DATE)
8725 IS
8726 l_proc CONSTANT VARCHAR2(35):= g_package||'archive_code';
8727 error_found EXCEPTION;
8728 already_processed EXCEPTION;
8729 l_archive_tab action_info_table;
8730 l_archive_tab_det1 action_info_table;
8731 l_archive_tab_det2 action_info_table;
8732 l_archive_tab_det3 action_info_table;
8733 l_archive_tab_ni_det action_info_table;
8734 l_archive_tab_ni_det_1 action_info_table;
8735 l_archive_tab_det1_local action_info_table;
8736 l_archive_tab_det2_local action_info_table;
8737 l_ni_rti_flag varchar(10);
8738 l_ni_rti_date varchar2(30);
8739 l_ni_rpt_asg_id NUMBER;
8740 l_ni_rpt_date DATE;
8741 l_archive_tab_ni_rpt action_info_table;
8742 record_count NUMBER;
8743 l_archive_person BOOLEAN;
8744 l_archive_addr BOOLEAN;
8745 l_archive_asg BOOLEAN;
8746 l_per_addr_val_flag VARCHAR2(1);
8747 l_fps_etext_asg_flag VARCHAR2(1);
8748 l_fps_etext_ni_flag VARCHAR2(1);
8749 l_personaddr_val_err BOOLEAN := False;
8750 l_fps_val_err BOOLEAN := False;
8751 l_fps_ni_val_err BOOLEAN := False;
8752 l_err_log NUMBER;
8753 l_start_date DATE;
8754 l_end_date DATE;
8755 l_archive_asg_det1 BOOLEAN;
8756 l_archive_asg_det2 BOOLEAN;
8757 l_archive_asg_ni_det BOOLEAN;
8758 l_rec_count number;
8759 l_cur_asg_pre_pay_act_id NUMBER;
8760 l_asg_action_id number;
8761 l_assact_id number;
8762 l_oth_min_pre_pay_id number;
8763 l_det3 act_info_rec;
8764 l_bacs_large_asg_id number;
8765 l_ni_emp_run number;
8766 --Below cursor fetches the payment date for the payroll run of the current assignment
8767 CURSOR csr_get_payment_date(p_last_asg_action_id NUMBER)
8768 IS
8769 SELECT ptp.regular_payment_date payment_date
8770 FROM pay_payroll_actions ppa,
8771 pay_assignment_actions paa,
8772 per_time_periods ptp
8773 WHERE assignment_action_id = p_last_asg_action_id
8774 AND ppa.time_period_id = ptp.time_period_id
8775 AND ppa.payroll_id = ptp.payroll_id
8776 AND paa.payroll_action_id = ppa.payroll_action_id;
8777 ---
8778 --Below cursor fetches the minimum assignment_action_id for aggregation case
8779 cursor get_min_asg_actid(p_person_id IN Number,p_assactid IN number)
8780 is
8781 select min(paa2.assignment_action_id) asgactid
8782 from
8783 pay_assignment_actions paa1,
8784 pay_assignment_actions paa2,
8785 per_all_assignments_f asg
8786 where
8787 paa1.assignment_action_id = p_assactid
8788 and paa1.payroll_action_id = paa2.payroll_action_id
8789 and paa2.assignment_id = asg.assignment_id
8790 and asg.person_id = p_person_id ;
8791
8792 --Below cursor fetches the basic details of the current assignment
8793 CURSOR csr_asg_basic_details(c_asg_act_id NUMBER)
8794 IS
8795 SELECT asg.assignment_id,
8796 asg.EFFECTIVE_START_DATE asg_eff_start_date,
8797 asg.person_id,
8798 asg.assignment_number
8799 FROM per_all_assignments_f asg,
8800 pay_assignment_actions paa,
8801 pay_payroll_actions ppa
8802 WHERE paa.assignment_action_id = c_asg_act_id
8803 AND paa.assignment_id = asg.assignment_id
8804 AND ppa.payroll_action_id = g_pre_pact_id
8805 AND ppa.effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date;
8806
8807 ---
8808
8809 --Below cursor fetches the further details of the current assignment
8810 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
8811 IS
8812 SELECT trim(NVL(asg.primary_flag,'N')) asg_primary_flag,
8813 trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
8814 trim(NVL(pap.per_information10,'N')) per_paye_agg_flag,
8815 asg.payroll_id payroll_id
8816 FROM per_all_people_f pap,
8817 per_all_assignments_f asg,
8818 pay_assignment_actions paa
8819 WHERE paa.assignment_action_id = c_asg_act_id
8820 AND paa.assignment_id = asg.assignment_id
8821 AND pap.person_id = asg.person_id
8822 -- and asg.business_group_id = l_business_group_id
8823 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
8824 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
8825 AND pap.per_information_category = 'GB';
8826
8827 --
8828 --Below cursor fetches the latest payroll run details of the current assignment
8829 CURSOR csr_last_payroll_action(p_asgid NUMBER, p_pre_pay_id NUMBER, p_asg_start DATE, p_start_year DATE, p_end_year DATE)
8830 IS
8831 SELECT
8832 /*+ USE_NL(paa, pact, ptp) */
8833 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
8834 || paa.assignment_action_id),16)) max_asg_act_id,
8835 MAX(pact.effective_date) effective_date
8836 FROM pay_assignment_actions paa,
8837 pay_payroll_actions pact,
8838 per_time_periods ptp,
8839 pay_assignment_actions paa1, --Prepayments
8840 pay_payroll_actions ppa1, --Prepayments
8841 pay_action_interlocks pai --Prepayments
8842 WHERE paa.assignment_id = p_asgid
8843 AND paa.payroll_action_id = pact.payroll_action_id
8844 AND pact.time_period_id = ptp.time_period_id
8845 AND pact.action_type IN ('Q','R','I','V','B')
8846 AND paa.action_status IN ('C','S')
8847 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
8848 AND ppa1.payroll_action_id = p_pre_pay_id --1160712
8849 AND ppa1.action_type IN ('P','U')
8850 AND paa1.payroll_action_id = ppa1.payroll_action_id
8851 AND paa1.assignment_action_id = pai.locking_action_id
8852 AND paa.assignment_action_id = pai.locked_action_id;
8853
8854 --Below cursor fetches all the payroll runs details of the current assignment processed in the current prepayment
8855 CURSOR csr_all_payroll_actions(p_asgid NUMBER, p_pre_pay_id NUMBER, p_asg_start DATE, p_start_year DATE, p_end_year DATE)
8856 IS
8857 SELECT
8858 /*+ USE_NL(paa, pact, ptp) */
8859 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
8860 || paa.assignment_action_id),16)) max_asg_act_id,
8861 MAX(pact.effective_date) effective_date
8862 FROM pay_assignment_actions paa,
8863 pay_payroll_actions pact,
8864 per_time_periods ptp,
8865 pay_assignment_actions paa1, --Prepayments
8866 pay_payroll_actions ppa1, --Prepayments
8867 pay_action_interlocks pai --Prepayments
8868 WHERE paa.assignment_id = p_asgid --46959
8869 AND paa.payroll_action_id = pact.payroll_action_id
8870 AND pact.time_period_id = ptp.time_period_id
8871 AND pact.action_type IN ('Q','R','I','V','B')
8872 AND paa.action_status IN ('C','S')
8873 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
8874 AND ppa1.payroll_action_id = p_pre_pay_id --1160712
8875 AND ppa1.action_type IN ('P','U')
8876 AND paa1.payroll_action_id = ppa1.payroll_action_id
8877 AND paa1.assignment_action_id = pai.locking_action_id
8878 AND paa.assignment_action_id = pai.locked_action_id
8879 GROUP BY paa.payroll_action_id
8880 ORDER BY max_asg_act_id;
8881
8882 --Below cursor fetches further details of the current prepayment
8883 CURSOR csr_prepay_asg_act_details(p_asgid NUMBER, p_pre_pay_id NUMBER)
8884 IS
8885 SELECT paa.assignment_action_id,
8886 ppa.payroll_action_id,
8887 ppa.effective_date
8888 FROM pay_assignment_actions paa,
8889 pay_payroll_actions ppa
8890 WHERE paa.assignment_id = p_asgid
8891 AND ppa.payroll_action_id = p_pre_pay_id
8892 AND paa.payroll_action_id = ppa.payroll_action_id;
8893 ---
8894 CURSOR csr_pay_act_details(p_asg_actid NUMBER)
8895 IS
8896 SELECT paa.payroll_action_id
8897 FROM pay_assignment_actions paa
8898 WHERE paa.assignment_action_id = p_asg_actid;
8899
8900 --Below cursor verifies whether current payment for this assignment is already archived
8901 CURSOR csr_earlier_archived(p_last_asg_action_id NUMBER)
8902 IS
8903 SELECT DISTINCT fps_asg_act_id
8904 FROM pay_gb_fps_details
8905 WHERE payroll_asg_act_id = p_last_asg_action_id;
8906
8907 --Below cursor fetches the already archived record for this assignment
8908 CURSOR csr_get_archived_record(p_assignment_action_id NUMBER, p_act_info_cat VARCHAR2)
8909 IS
8910 SELECT action_context_id,
8911 action_context_type,
8912 action_information_category,
8913 action_information1,
8914 action_information2,
8915 action_information3,
8916 action_information4,
8917 action_information5,
8918 action_information6,
8919 action_information7,
8920 action_information8,
8921 action_information9,
8922 action_information10,
8923 action_information11,
8924 action_information12,
8925 action_information13,
8926 action_information14,
8927 action_information15,
8928 action_information16,
8929 action_information17,
8930 action_information18,
8931 action_information19,
8932 action_information20,
8933 action_information21,
8934 action_information22,
8935 action_information23,
8936 action_information24,
8937 action_information25,
8938 action_information26,
8939 action_information27,
8940 action_information28,
8941 action_information29,
8942 action_information30,
8943 effective_date,
8944 assignment_id
8945 FROM pay_action_information pai
8946 WHERE pai.action_context_id = p_assignment_action_id
8947 AND pai.action_context_type = 'AAP'
8948 AND pai.action_information_category = p_act_info_cat;
8949
8950 --Below cursor fetches archived records count
8951 CURSOR csr_archived_records_count(p_assignment_action_id NUMBER)
8952 IS
8953 SELECT COUNT(*)
8954 FROM pay_action_information pai
8955 WHERE pai.action_context_id = p_assignment_action_id;
8956
8957 CURSOR csr_bacs_payment_exists (c_prepay_payroll_action_id NUMBER,
8958 c_prepay_asg_action_id NUMBER)
8959 IS
8960 SELECT 'Y'
8961 FROM pay_pre_payments ppp,
8962 pay_payment_types ppt,
8963 pay_org_payment_methods_f popf,
8964 pay_personal_payment_methods_f pppf,
8965 pay_external_accounts Orgkey,
8966 pay_external_accounts deskey,
8967 PAY_ASSIGNMENT_ACTIONS PAA,
8968 pay_payroll_actions ppa
8969 WHERE popf.ORG_PAYMENT_METHOD_ID = ppp.ORG_PAYMENT_METHOD_ID
8970 AND pppf.personal_payment_method_ID = ppp.personal_payment_method_ID
8971 AND popf.PAYMENT_TYPE_ID = ppt.PAYMENT_TYPE_ID
8972 AND ppt.PAYMENT_TYPE_NAME = 'BACS Tape'
8973 AND popf.defined_balance_id is not null
8974 AND orgkey.external_account_id = popf.external_account_id
8975 AND deskey.external_account_id = pppf.external_account_id
8976 AND ppa.effective_date BETWEEN popf.effective_start_date AND popf.effective_end_date
8977 AND ppa.effective_date BETWEEN pppf.effective_start_date AND pppf.effective_end_date
8978 AND ppp.ASSIGNMENT_ACTION_ID = PAA.ASSIGNMENT_ACTION_ID
8979 AND ppa.PAYROLL_ACTION_ID = PAA.PAYROLL_ACTION_ID
8980 AND PAA.PAYROLL_ACTION_ID = c_prepay_payroll_action_id --1129781
8981 AND PAA.ASSIGNMENT_ACTION_ID = c_prepay_asg_action_id; --9849423
8982
8983 CURSOR csr_total_payment (c_prepay_asg_action_id NUMBER)
8984 IS
8985 select (sum(ppp.value) * 100) amount
8986 from pay_pre_payments ppp,
8987 pay_org_payment_methods_f popmf,
8988 pay_assignment_actions paa,
8989 pay_payroll_actions ppa
8990 where ppp.ASSIGNMENT_ACTION_ID = c_prepay_asg_action_id
8991 and popmf.ORG_PAYMENT_METHOD_ID = ppp.ORG_PAYMENT_METHOD_ID
8992 and popmf.defined_balance_id is not null
8993 and ppa.payroll_action_id = paa.payroll_action_id
8994 and paa.assignment_action_id = ppp.assignment_action_id;
8995
8996 CURSOR csr_total_payment_new(c_prepay_asg_action_id NUMBER)
8997 IS
8998 select (sum(ppp.value) * 100) amount
8999 from pay_pre_payments ppp
9000 where ASSIGNMENT_ACTION_ID = c_prepay_asg_action_id;
9001
9002 --Below cursor fetches the latest payroll run details of the current assignment
9003 CURSOR csr_aggr_last_payroll_action(p_person_id NUMBER, p_pre_pay_id NUMBER, p_asg_start DATE, p_start_year DATE, p_end_year DATE)
9004 IS
9005 SELECT
9006 /*+ USE_NL(paa, pact, ptp) */
9007 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
9008 || paa.assignment_action_id),16)) max_asg_act_id,
9009 MAX(pact.effective_date) effective_date
9010 FROM pay_assignment_actions paa,
9011 per_all_assignments_f paaf,
9012 pay_payroll_actions pact,
9013 per_time_periods ptp,
9014 pay_assignment_actions paa1, --Prepayments
9015 pay_payroll_actions ppa1, --Prepayments
9016 pay_action_interlocks pai --Prepayments
9017 WHERE paa.assignment_id = paaf.assignment_id
9018 AND paaf.person_id = p_person_id
9019 AND paa.payroll_action_id = pact.payroll_action_id
9020 AND pact.time_period_id = ptp.time_period_id
9021 AND pact.action_type IN ('Q','R','B','I','V')
9022 AND paa.action_status IN ('C','S')
9023 AND ptp.regular_payment_date BETWEEN NVL(p_asg_start, p_start_year) AND p_end_year
9024 AND ppa1.payroll_action_id = p_pre_pay_id --1160712
9025 AND ppa1.action_type IN ('P','U')
9026 AND paa1.payroll_action_id = ppa1.payroll_action_id
9027 AND paa1.assignment_action_id = pai.locking_action_id
9028 AND paa.assignment_action_id = pai.locked_action_id
9029 AND exists( select 1
9030 from pay_pre_payments ppp
9031 where ASSIGNMENT_ACTION_ID = paa1.assignment_action_id
9032 and ppp.value <> 0); --For the bug 16542698
9033
9034 /**********************************************************************************************
9035 Below cursor fetches the details of the payroll runs processed for an aggregated employee.
9036 It fetches all the Payroll runs processed for a person provided if
9037 it ran after First FPS run date
9038 and not processed in any earlier FPS.
9039 *********************************************************************************************/
9040 CURSOR csr_aggr_all_payroll_actions(p_person_id NUMBER,
9041 p_asg_id NUMBER,
9042 p_last_asgact_id NUMBER,
9043 p_start_year DATE,
9044 p_end_year DATE,
9045 c_first_fps_eff_date DATE)
9046 IS
9047 SELECT /*+ USE_NL(paa, pact, ptp) */
9048 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
9049 || paa.assignment_action_id),16)) max_asg_act_id
9050 ,max (pact.effective_date) effective_date
9051 FROM pay_assignment_actions paa
9052 ,per_all_assignments_f paaf
9053 ,pay_payroll_actions pact
9054 ,per_time_periods ptp
9055 WHERE paa.assignment_id = paaf.assignment_id
9056 AND paaf.person_id = p_person_id
9057 AND paa.payroll_action_id = pact.payroll_action_id
9058 AND pact.time_period_id = ptp.time_period_id
9059 AND pact.action_type IN ('Q','R','B','I','V')
9060 AND paa.action_status IN ('C','S')
9061 AND ptp.regular_payment_date BETWEEN p_start_year
9062 AND p_end_year
9063 AND (
9064 (
9065 paa.assignment_action_id >
9066 (
9067 SELECT nvl (max (payroll_asg_act_id),paa.assignment_action_id)
9068 FROM pay_gb_fps_details pgfd
9069 WHERE pgfd.person_id = p_person_id
9070 )
9071 AND source_action_id IS NULL
9072 )
9073 OR (
9074 (
9075 SELECT count (*)
9076 FROM pay_gb_fps_details pgfd
9077 WHERE pgfd.person_id = p_person_id
9078 ) = 0
9079 )
9080 )
9081 AND ptp.regular_payment_date >= nvl (g_first_fps_run_date, c_first_fps_eff_date)
9082 AND paa.assignment_action_id <= p_last_asgact_id
9083 GROUP BY paa.payroll_action_id
9084 ORDER BY max_asg_act_id;
9085
9086 CURSOR csr_aggr_sequence_id(c_asg_act_id NUMBER)
9087 IS
9088 SELECT action_sequence
9089 FROM pay_assignment_actions
9090 WHERE assignment_action_id = c_asg_act_id;
9091
9092 CURSOR csr_aggr_locking_asg_act_id(p_person_id NUMBER, p_action_sequence NUMBER)
9093 IS
9094 /*
9095 select null into dummy
9096 from dual
9097 where not exists
9098 (select null
9099 */
9100 SELECT min (act.assignment_action_id)
9101 FROM pay_action_classifications class
9102 ,pay_payroll_actions pact
9103 ,pay_assignment_actions act
9104 ,per_all_assignments_f ass
9105 ,per_periods_of_service pos
9106 WHERE pos.person_id = p_person_id
9107 AND ass.period_of_service_id = pos.period_of_service_id
9108 AND act.assignment_id = ass.assignment_id
9109 AND act.action_sequence > p_action_sequence
9110 AND act.action_status IN ('C','S','M')
9111 AND act.payroll_action_id = pact.payroll_action_id
9112 AND pact.action_type = class.action_type
9113 AND class.classification_name = 'SEQUENCED';
9114
9115 -- CURSOR csr_processed_in_prepayment(c_prepay_asgactid NUMBER, c_payroll_asgactid NUMBER)
9116 CURSOR csr_processed_in_prepayment(c_prepay_asgactid NUMBER, c_payroll_asgactid NUMBER, c_payroll_master_asgactid number)
9117 IS
9118 SELECT 'Y' this_prepayment
9119 FROM pay_action_interlocks pai,
9120 pay_assignment_actions paa,
9121 pay_payroll_actions ppa
9122 WHERE paa.payroll_action_id = ppa.payroll_action_id
9123 AND paa.assignment_action_id = pai.locking_action_id
9124 AND ppa.action_type in ('P','U')
9125 AND ppa.payroll_action_id = g_pre_pact_id
9126 AND (pai.locked_action_id = c_payroll_asgactid
9127 OR pai.locked_action_id = c_payroll_master_asgactid );
9128
9129 /*
9130 SELECT 'Y' this_prepayment
9131 FROM pay_action_interlocks pai
9132 WHERE locking_action_id = c_prepay_asgactid
9133 AND (locked_action_id = c_payroll_asgactid
9134 OR locked_action_id = c_payroll_master_asgactid );
9135 */
9136
9137 cursor csr_get_asg_id(c_asgactid number) is
9138 select distinct assignment_id
9139 from pay_assignment_actions
9140 where assignment_action_id = c_asgactid;
9141 -- Curosr to fetch the RTI Reporting flag and effective date of the assignment
9142 cursor csr_ni_rpt_flag(c_asg_id number) is
9143 select AEI_INFORMATION1, AEI_INFORMATION2 from per_assignment_extra_info where assignment_id = c_asg_id
9144 and AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION';
9145
9146 -- Cursor to fetch the RTI NI Reporting assignment for this person.
9147 cursor csr_get_ni_rpt_asg(c_asg_id number) is
9148 select
9149 paei.assignment_id , fnd_date.canonical_to_date(paei.AEI_INFORMATION2)
9150 from per_all_assignments_f paaf1, per_all_assignments_f paaf2 ,per_assignment_extra_info paei
9151 where paaf1.assignment_id = c_asg_id
9152 and paaf1.person_id = paaf2.person_id
9153 and paaf2.ASSIGNMENT_TYPE = 'E'
9154
9155 and paei.assignment_id = paaf2.assignment_id
9156 and paei.AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION'
9157 and paei. AEI_INFORMATION1 = 'Y'
9158 and p_effective_date between paaf1.effective_start_date and paaf1.effective_end_date
9159 and p_effective_date between paaf2.effective_start_date and paaf2.effective_end_date
9160 order by 2 desc;
9161
9162 -- Cursor to fetch the previously archived details for the NI Reporting assignment.
9163 cursor csr_ni_asg_last_archived(c_asg_id number) is
9164 select
9165 assignment_id
9166 ,null
9167 ,null
9168 ,ACTION_INFORMATION_CATEGORY
9169 ,ACTION_INFORMATION1
9170 ,ACTION_INFORMATION2
9171 ,ACTION_INFORMATION3
9172 ,ACTION_INFORMATION4
9173 ,ACTION_INFORMATION5
9174 ,ACTION_INFORMATION6
9175 ,ACTION_INFORMATION7
9176 ,ACTION_INFORMATION8
9177 ,ACTION_INFORMATION9
9178 ,ACTION_INFORMATION10
9179 ,ACTION_INFORMATION11
9180 ,ACTION_INFORMATION12
9181 ,ACTION_INFORMATION13
9182 ,ACTION_INFORMATION14
9183 ,ACTION_INFORMATION15
9184 ,ACTION_INFORMATION16
9185 ,ACTION_INFORMATION17
9186 ,ACTION_INFORMATION18
9187 ,ACTION_INFORMATION19
9188 ,ACTION_INFORMATION20
9189 ,ACTION_INFORMATION21
9190 ,ACTION_INFORMATION22
9191 ,ACTION_INFORMATION23
9192 ,ACTION_INFORMATION24
9193 ,ACTION_INFORMATION25
9194 ,ACTION_INFORMATION26
9195 ,ACTION_INFORMATION27
9196 ,ACTION_INFORMATION28
9197 ,ACTION_INFORMATION29
9198 ,ACTION_INFORMATION30
9199 from pay_action_information where action_context_id = (select max(FPS_ASG_ACT_ID) from pay_gb_fps_details where assignment_id = c_asg_id
9200 and FPS_PAY_ACT_ID <> g_payroll_action_id) --= 9789749
9201 and ACTION_CONTEXT_TYPE = 'AAP' and
9202 ACTION_INFORMATION_CATEGORY in( 'GB_RTI_FPS_ASG_DET1', 'GB_RTI_FPS_ASG_DET2');
9203
9204
9205 /*** Get the latest assignment_action ids for all the other assignments for this employer
9206 and get the YTD balance value for these action ids.
9207 Sum this with the current assignment NI YTD and then archive.
9208 ***/
9209 cursor csr_asg_act_oth_asgs(c_asg_id number) is
9210 select max(paa.assignment_action_id) asg_act_id from per_all_assignments_f paaf,
9211 per_all_assignments_f paaf1,
9212 pay_assignment_actions paa,
9213 pay_payroll_actions ppa
9214 where paaf.assignment_id = c_asg_id
9215 and paaf1.person_id = paaf.person_id
9216 and paaf1.assignment_id <> c_asg_id
9217 and paaf1.assignment_id = paa.assignment_id
9218 and paa.payroll_action_id = ppa.payroll_action_id
9219 and ppa.effective_date >= g_start_year
9220 and ppa.action_type IN ('Q','R')
9221 and paa.action_status IN ('C','S')
9222 group by paa.assignment_id;
9223
9224 -- First FPS Cursors
9225 -- cursor to check whether this assignment processed in prepayment or not
9226 cursor csr_prepayment_made(pre_pay_id number) is
9227 SELECT paa_pre.assignment_id
9228 FROM pay_assignment_actions paa_pre
9229 , pay_assignment_actions paa_arcv
9230 WHERE paa_arcv.assignment_action_id = p_assactid
9231 AND paa_pre.payroll_action_id = pre_pay_id
9232 AND paa_pre.assignment_id = paa_arcv.assignment_id;
9233
9234 -- cursor to get assignment id using assignment action id parameter
9235 CURSOR csr_asg_id(c_asg_act_id NUMBER) IS
9236 SELECT paa.assignment_id
9237 FROM pay_assignment_actions paa
9238 WHERE paa.assignment_action_id = c_asg_act_id;
9239
9240 -- To fetch First FPS parameter
9241 /*CURSOR csr_parameter_info IS
9242 SELECT substr (pay_gb_eoy_archive.get_parameter (legislative_parameters, 'FIRST_FPS'), 1,1) first_fps,
9243 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref
9244 FROM pay_payroll_actions pact
9245 , pay_assignment_actions paa
9246 WHERE paa.assignment_action_id = p_assactid
9247 AND pact.payroll_action_id = paa.payroll_action_id;
9248 */
9249
9250 -- get the defined balance id for specified balance and dimension
9251 cursor get_defined_balance_id
9252 (p_balance_name VARCHAR2, p_dimension_name VARCHAR2) IS
9253 SELECT defined_balance_id
9254 FROM pay_defined_balances db
9255 , pay_balance_types b
9256 , pay_balance_dimensions d
9257 WHERE b.balance_name = p_balance_name
9258 AND d.dimension_name = p_dimension_name
9259 AND db.balance_type_id = b.balance_type_id
9260 AND db.balance_dimension_id = d.balance_dimension_id
9261 AND b.legislation_code = 'GB'
9262 AND d.legislation_code = 'GB';
9263
9264 -- to fetch last assignment action id for the given assignment
9265 cursor csr_last_action_firstfps(p_asgid NUMBER, p_asg_start DATE,
9266 p_asg_end DATE, p_start_year DATE,
9267 p_end_year DATE, l_payroll number) IS--, p_tax_ref_xfer VARCHAR2) IS
9268 SELECT /*+ USE_NL(paa, pact, ptp) */
9269 to_number (substr (max (lpad (paa.action_sequence, 15
9270 , '0')
9271 || paa.assignment_action_id), 16))
9272 , max (pact.effective_date) effective_date
9273 FROM pay_assignment_actions paa
9274 , pay_payroll_actions pact
9275 , per_time_periods ptp
9276 WHERE paa.assignment_id = p_asgid
9277 AND paa.payroll_action_id = pact.payroll_action_id
9278 AND pact.payroll_id = l_payroll
9279 AND pact.time_period_id = ptp.time_period_id
9280 AND pact.action_type IN ('Q', 'R', 'B'
9281 , 'I', 'V')
9282 AND paa.action_status IN ('C', 'S')
9283 AND ptp.regular_payment_date
9284 BETWEEN g_start_year
9285 AND g_end_year;
9286
9287 -- to fetch last assignment action id for the given assignment
9288 cursor csr_last_action(p_asgid NUMBER, p_asg_start DATE,
9289 p_asg_end DATE, p_start_year DATE,
9290 p_end_year DATE) IS--, p_tax_ref_xfer VARCHAR2) IS
9291 SELECT /*+ USE_NL(paa, pact, ptp) */
9292 to_number (substr (max (lpad (paa.action_sequence, 15
9293 , '0')
9294 || paa.assignment_action_id), 16))
9295 , max (pact.effective_date) effective_date
9296 FROM pay_assignment_actions paa
9297 , pay_payroll_actions pact
9298 , per_time_periods ptp
9299 WHERE paa.assignment_id = p_asgid
9300 AND paa.payroll_action_id = pact.payroll_action_id
9301 AND pact.time_period_id = ptp.time_period_id
9302 AND pact.action_type IN ('Q', 'R', 'B'
9303 , 'I', 'V')
9304 AND paa.action_status IN ('C', 'S')
9305 AND ptp.regular_payment_date
9306 BETWEEN g_start_year
9307 AND g_end_year;
9308
9309 cursor csr_get_asg_no(p_asg_id number,p_effective_date date) is
9310 SELECT assignment_number
9311 FROM per_all_assignments_f
9312 WHERE assignment_id = p_asg_id
9313 AND p_effective_date BETWEEN effective_start_date
9314 AND effective_end_date
9315 ORDER BY effective_start_date;
9316
9317 cursor csr_get_latest_asg_no(p_asg_id number,p_effective_date date) is
9318 SELECT assignment_number
9319 FROM per_all_assignments_f
9320 WHERE assignment_id = p_asg_id
9321 ORDER BY effective_start_date;
9322
9323 cursor csr_asg_act_processed_earlier(c_person_id number,
9324 c_asg_id number,
9325 c_cur_asg_action_id number) is
9326 select count(*)
9327 --into l_asg_act_processed_earlier
9328 from PAY_GB_FPS_DETAILS
9329 where PERSON_ID = c_person_id
9330 and ASSIGNMENT_ID = c_asg_id
9331 and PAYROLL_ASG_ACT_ID = c_cur_asg_action_id;
9332
9333 cursor csr_chk_prepayment_run(c_assignment_action_id number) is
9334 select count(*) from pay_assignment_actions paa, --run
9335 pay_assignment_actions paa1, --Prepayments
9336 pay_payroll_actions ppa1, --Prepayments
9337 pay_action_interlocks pai --Prepayments
9338 where paa.assignment_action_id = c_assignment_action_id --9917796
9339 AND paa.assignment_action_id = pai.locked_action_id
9340 AND paa1.assignment_action_id = pai.locking_action_id
9341 AND paa1.payroll_action_id = ppa1.payroll_action_id
9342 AND ppa1.action_type IN ('P','U');
9343
9344 CURSOR csr_aggr_min_act_id( p_person_id NUMBER,
9345 p_pre_pact_id NUMBER,
9346 c_effective_date DATE)
9347 IS
9348
9349 SELECT count(distinct act.assignment_action_id),
9350 min(act.assignment_action_id) assignment_action_id
9351 FROM pay_payroll_actions ppa, --Current pactid
9352 pay_payroll_actions appa, --Payroll Run
9353 pay_payroll_actions appa2, --Prepayments
9354 pay_assignment_actions act, --Payroll Run
9355 pay_assignment_actions act1, --Prepayments
9356 pay_action_interlocks pai, --Prepayments
9357 per_all_assignments_f as1
9358 WHERE as1.person_id = p_person_id --45885
9359 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
9360 AND act.payroll_action_id = appa.payroll_action_id
9361 AND act.source_action_id IS NULL
9362 AND as1.assignment_id = act.assignment_id
9363 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
9364 AND act.action_status = 'C'
9365 AND act.assignment_action_id = pai.locked_action_id
9366 AND act1.assignment_action_id = pai.locking_action_id
9367 AND act1.action_status = 'C'
9368 AND act1.payroll_action_id = appa2.payroll_action_id
9369 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
9370 AND appa2.payroll_action_id = p_pre_pact_id;
9371
9372 -- source is the above cursor:csr_aggr_min_act_id
9373 CURSOR csr_ni_aggr_max_act_id( p_person_id NUMBER,
9374 p_pre_pact_id NUMBER)
9375 IS
9376
9377 SELECT max(act.assignment_action_id) assignment_action_id
9378 FROM pay_payroll_actions ppa, --Current pactid
9379 pay_payroll_actions appa, --Payroll Run
9380 pay_payroll_actions appa2, --Prepayments
9381 pay_assignment_actions act, --Payroll Run
9382 pay_assignment_actions act1, --Prepayments
9383 pay_action_interlocks pai, --Prepayments
9384 per_all_assignments_f as1
9385 WHERE as1.person_id = p_person_id --45885
9386 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
9387 AND act.payroll_action_id = appa.payroll_action_id
9388 AND act.source_action_id IS NULL
9389 AND as1.assignment_id = act.assignment_id
9390 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
9391 AND act.action_status = 'C'
9392 AND act.assignment_action_id = pai.locked_action_id
9393 AND act1.assignment_action_id = pai.locking_action_id
9394 AND act1.action_status = 'C'
9395 AND act1.payroll_action_id = appa2.payroll_action_id
9396 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
9397 AND appa2.payroll_action_id = p_pre_pact_id;
9398
9399 cursor csr_asg_in_prepay(c_person_id number)
9400 IS
9401 SELECT act.assignment_id assignment_id,
9402 max(act.assignment_action_id) asg_act_id
9403 FROM
9404 pay_payroll_actions ppa, --Current pactid
9405 pay_payroll_actions appa, --Payroll Run
9406 pay_payroll_actions appa2, --Prepayments
9407 pay_assignment_actions act, --Payroll Run
9408 pay_assignment_actions act1, --Prepayments
9409 pay_action_interlocks pai, --Prepayments
9410 per_all_assignments_f as1
9411 WHERE
9412 ppa.payroll_action_id = g_payroll_action_id
9413 AND as1.person_id = c_person_id --BETWEEN stperson AND endperson
9414 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
9415 AND act.payroll_action_id = appa.payroll_action_id
9416 AND act.source_action_id IS NULL
9417 AND as1.assignment_id = act.assignment_id
9418 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
9419 AND act.action_status = 'C'
9420 AND act.assignment_action_id = pai.locked_action_id
9421 AND act1.assignment_action_id = pai.locking_action_id
9422 AND act1.action_status = 'C'
9423 AND act1.payroll_action_id = appa2.payroll_action_id
9424 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
9425 AND appa2.payroll_action_id = g_pre_pact_id
9426 group by act.assignment_id
9427 ORDER BY act.assignment_id;
9428
9429
9430 CURSOR csr_aggr_master_id(c_child_asg_act_id NUMBER)
9431 IS
9432 SELECT assignment_action_id
9433 FROM pay_assignment_actions
9434 WHERE source_action_id = c_child_asg_act_id;
9435
9436 CURSOR csr_aggr_max_act_id( p_person_id NUMBER,
9437 p_pre_pact_id NUMBER,
9438 c_effective_date DATE)
9439 IS
9440
9441 SELECT count(distinct act.assignment_action_id),
9442 max(act.assignment_action_id) assignment_action_id
9443 FROM pay_payroll_actions ppa, --Current pactid
9444 pay_payroll_actions appa, --Payroll Run
9445 pay_payroll_actions appa2, --Prepayments
9446 pay_assignment_actions act, --Payroll Run
9447 pay_assignment_actions act1, --Prepayments
9448 pay_action_interlocks pai, --Prepayments
9449 per_all_assignments_f as1
9450 WHERE as1.person_id = p_person_id --45885
9451 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
9452 AND act.payroll_action_id = appa.payroll_action_id
9453 AND act.source_action_id IS NULL
9454 AND as1.assignment_id = act.assignment_id
9455 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
9456 AND act.action_status = 'C'
9457 AND act.assignment_action_id = pai.locked_action_id
9458 AND act1.assignment_action_id = pai.locking_action_id
9459 AND act1.action_status = 'C'
9460 AND act1.payroll_action_id = appa2.payroll_action_id
9461 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
9462 AND appa2.payroll_action_id = p_pre_pact_id
9463 AND exists( select 1
9464 from pay_pre_payments ppp
9465 where ASSIGNMENT_ACTION_ID = act1.assignment_action_id
9466 and ppp.value <> 0); --For the bug 16542698
9467
9468 l_asg_primary_flag VARCHAR2(1);
9469 l_per_agg_flag VARCHAR2(1);
9470 l_aggr_archive_flag VARCHAR2(1);
9471 l_asg_id NUMBER;
9472 l_effective_start_date DATE;
9473 l_effective_end_date DATE;
9474 l_last_asg_action_id NUMBER;
9475 l_last_effective_date DATE;
9476 l_asg_eff_start_date DATE;
9477 l_payroll_id NUMBER;
9478 l_ni_process_type VARCHAR2(50);
9479 l_dir_nic_calc_method VARCHAR2(30);
9480 l_prepay_asg_action_id NUMBER;
9481 l_prepay_payroll_action_id NUMBER;
9482 l_prepay_effective_date DATE;
9483 l_payroll_pact_id NUMBER;
9484 l_person_id NUMBER;
9485 l_earlier_archived_flag VARCHAR2(1);
9486 l_earlier_fps_asg_act_id NUMBER;
9487 l_action_info_id NUMBER(15);
9488 l_ovn NUMBER;
9489 l_archived_rec_count NUMBER;
9490 l_counter NUMBER;
9491 l_archived_context VARCHAR2(30);
9492 l_payment_date DATE;
9493 l_ni_rpt_assact_id number;
9494 l_get_archived_rec csr_get_archived_record%rowtype;
9495 p_ni_a_balance act_info_rec;
9496 p_ni_b_balance act_info_rec;
9497 p_ni_c_balance act_info_rec;
9498 p_ni_d_balance act_info_rec;
9499 p_ni_e_balance act_info_rec;
9500 p_ni_j_balance act_info_rec;
9501 p_ni_l_balance act_info_rec;
9502
9503 p_per_ni_a_balance act_info_rec;
9504 p_per_ni_b_balance act_info_rec;
9505 p_per_ni_c_balance act_info_rec;
9506 p_per_ni_d_balance act_info_rec;
9507 p_per_ni_e_balance act_info_rec;
9508 p_per_ni_j_balance act_info_rec;
9509 p_per_ni_l_balance act_info_rec;
9510
9511 already_a NUMBER := -1;
9512 already_b NUMBER := -1;
9513 already_c NUMBER := -1;
9514 already_d NUMBER := -1;
9515 already_e NUMBER := -1;
9516 already_j NUMBER := -1;
9517 already_l NUMBER := -1;
9518 already_a1 NUMBER := -1;
9519 already_b1 NUMBER := -1;
9520 already_c1 NUMBER := -1;
9521 already_d1 NUMBER := -1;
9522 already_e1 NUMBER := -1;
9523 already_j1 NUMBER := -1;
9524 already_l1 NUMBER := -1;
9525
9526 l_asact_count_prepayed number;
9527 l_aggr_max_act_id number;
9528 l_report_det1_det2_flag varchar2(1);
9529
9530 i NUMBER;
9531 i_1 NUMBER;
9532 i_2 NUMBER;
9533 ni_contrib NUMBER := 0;
9534 ni_contrib_ytd NUMBER := 0;
9535 ni_contrib_1 NUMBER := 0;
9536 ni_contrib_ytd_1 NUMBER := 0;
9537 ni_contrib_2 NUMBER := 0;
9538 ni_contrib_ytd_2 NUMBER := 0;
9539 l_bacs_payment_exists varchar2(1);
9540 l_hash_code varchar2(100);
9541 l_large_bacs_payment NUMBER := 0;
9542 l_total_payment NUMBER := 0;
9543 l_non_bacs_payment NUMBER := 0;
9544 l_max_prepay_act_id number;
9545 l_count_asg number;
9546 -- Declarations for First FPS
9547
9548 l_assignment_id number;
9549 p_starter_set varchar2(1):= 'N';
9550
9551 l_asg_f_id number;
9552 l_first_fps varchar2(10);
9553 l_first_fps_prepay_asg varchar2(10);
9554 l_temp_asg_id number;
9555 l_asg_val_flag varchar2(1);
9556 l_date_soy date;
9557 l_date_eoy date;
9558 l_tax_ref varchar2(30);
9559 l_effective_date date; -- cp Parameter
9560 l_date_flag boolean;
9561 l_prepayment_date date;
9562 l_assignment_number per_assignments_f.assignment_number%TYPE;
9563 l_per_ni_agg_flag varchar2(1);
9564 l_per_paye_agg_flag varchar2(1);
9565 l_cur_asg_action_id number;
9566 l_cur_last_effective_date date;
9567 l_aggr_sequence_id number;
9568 l_aggr_locking_asg_act_id number;
9569 l_tab_counter number;
9570 l_tab_proc_counter number;
9571 l_tab_not_proc_counter number;
9572 l_processed_in_prepayment varchar2(1);
9573
9574 l_archive_det1_counter number;
9575 l_archive_det2_counter number;
9576 l_archive_ni_det_counter number;
9577 /*l_archive_det1_counter_local number;
9578 l_archive_det2_counter_local number;*/
9579 l_cur_asg_id number;
9580 l_single_payroll_run_exists number;
9581 l_asg_act_processed_earlier number;
9582 l_archive_flag varchar2(1);
9583 l_chk_prepayment_run number;
9584 l_fps_etext_asg_temp_flag VARCHAR2(1);
9585
9586 l_asg_act_count number;
9587 l_aggr_min_act_id number;
9588 l_payroll_master_asgactid number;
9589 l_prepay_master_counter number;
9590 l_retry_req_flag varchar2(1) := 'N';
9591 l_cur_prepay_payroll_action_id number;
9592 l_rti_ni_proc_flag varchar2(1);
9593 l_rti_ni_proc_flag_1 varchar2(1);
9594 l_ni_aggr_max_act_id number;
9595 l_dummy NUMBER;
9596 l_ni_max_asg_act_id number;
9597 l_ni_max_asg_act_date date;
9598 l_asg_primary_flag1 VARCHAR2(1);
9599 l_per_ni_agg_flag1 VARCHAR2(1);
9600 l_per_paye_agg_flag1 VARCHAR2(1);
9601 l_payroll_id1 NUMBER;
9602 l_rti_ni_proc_flag1 varchar2(1);
9603 l_last_asg_id NUMBER;
9604 l_last_asgact_id NUMBER;
9605 l_last_eff_date DATE;
9606
9607 TYPE l_typ_payroll_asg_acts IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
9608 l_payroll_asg_acts l_typ_payroll_asg_acts;
9609 TYPE l_typ_proc_in_prepay IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
9610 l_proc_in_prepay l_typ_proc_in_prepay;
9611 TYPE l_typ_not_proc_in_prepay IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
9612 l_not_proc_in_prepay l_typ_not_proc_in_prepay;
9613
9614 cursor chk_processed_in_prepay(c_cur_asg_action_id number) is
9615 select pai.locking_action_id
9616 from
9617 pay_action_interlocks pai,
9618 pay_payroll_actions ppa,
9619 pay_assignment_actions paa
9620 where pai.locked_action_id = c_cur_asg_action_id
9621 and ppa.action_type in ('P','U')
9622 and paa.payroll_action_id = ppa.payroll_action_id
9623 and paa.assignment_action_id = pai.locking_action_id;
9624
9625 /* cursor csr_is_retry_request is
9626 select 'Y' from fnd_concurrent_programs fcp,
9627 fnd_concurrent_requests fcr,
9628 pay_payroll_actions ppa,
9629 pay_assignment_actions paa
9630 where paa.assignment_action_id = p_assactid
9631 and ppa.payroll_action_id = paa.payroll_action_id
9632 and ppa.request_id = fcr.request_id
9633 and fcr.CONCURRENT_PROGRAM_ID = fcp.CONCURRENT_PROGRAM_ID
9634 and CONCURRENT_PROGRAM_NAME = 'RETRY'; */
9635
9636 -- Modified retry cursor
9637 cursor csr_is_retry_request is
9638 select 'Y' from
9639 pay_assignment_actions
9640 where assignment_action_id = p_assactid
9641 AND ACTION_STATUS = 'M';
9642
9643 /* To get the payroll action id given assignment action id
9644 */
9645 cursor csr_prepay_payrol_act(c_asg_act_id number)
9646 is
9647 select paa.payroll_action_id
9648 from
9649 pay_assignment_actions paa
9650 where paa.assignment_action_id = c_asg_act_id;
9651
9652 -- to check whether the given assignment is processed in given prepay payroll_action id
9653 cursor csr_rti_rpt_proc_prepay(c_ni_rpt_asg_id number,c_pre_pay_action_id number) is
9654 select 'Y' from pay_assignment_actions paa,
9655 pay_payroll_actions ppa
9656 where
9657 ppa.payroll_action_id = c_pre_pay_action_id
9658 and ppa.payroll_action_id = paa.payroll_action_id
9659 and paa.assignment_id = c_ni_rpt_asg_id
9660 and ppa.action_type IN ('P','U')
9661 and paa.action_status IN ('C','S');
9662 -- for ni only aggregation
9663 -- to get the latest payroll run assignment action id for the given assignment.
9664 cursor csr_get_latest_asg_action (c_asg_id number)
9665 is
9666 SELECT
9667 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
9668 || paa.assignment_action_id),16)) max_asg_act_id
9669 , max(pact.effective_date) effective_date
9670
9671 FROM pay_assignment_actions paa
9672 ,pay_payroll_actions pact
9673 ,per_time_periods ptp
9674 WHERE paa.assignment_id = c_asg_id
9675 AND paa.payroll_action_id = pact.payroll_action_id
9676 AND pact.time_period_id = ptp.time_period_id
9677 AND pact.action_type IN ('Q','R','B','I','V')
9678 AND paa.action_status IN ('C','S')
9679 AND ptp.regular_payment_date BETWEEN g_start_year
9680 AND g_end_year
9681 AND ptp.regular_payment_date <= g_effective_date;
9682
9683 CURSOR csr_last_aggr_asg(c_last_asgact_id number) is
9684 select distinct assignment_id
9685 from pay_assignment_actions
9686 where assignment_action_id = c_last_asgact_id;
9687
9688
9689 --Below cursor fetches the number of assignments processed in current prepayment request
9690 CURSOR csr_aggr_asgs_processed(p_person_id NUMBER, p_pre_pay_id NUMBER, p_start_year DATE, p_end_year DATE)
9691 IS
9692 SELECT count(distinct paa1.assignment_id)
9693 FROM pay_assignment_actions paa,
9694 per_all_assignments_f paaf,
9695 pay_payroll_actions pact,
9696 per_time_periods ptp,
9697 pay_assignment_actions paa1, --Prepayments
9698 pay_payroll_actions ppa1, --Prepayments
9699 pay_action_interlocks pai --Prepayments
9700 WHERE paa.assignment_id = paaf.assignment_id
9701 AND paaf.person_id = p_person_id
9702 AND paa.payroll_action_id = pact.payroll_action_id
9703 AND pact.time_period_id = ptp.time_period_id
9704 AND pact.action_type IN ('Q','R','B','I','V')
9705 AND paa.action_status IN ('C','S')
9706 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
9707 AND ppa1.payroll_action_id = p_pre_pay_id
9708 AND ppa1.action_type IN ('P','U')
9709 AND paa1.payroll_action_id = ppa1.payroll_action_id
9710 AND paa1.assignment_action_id = pai.locking_action_id
9711 AND paa.assignment_action_id = pai.locked_action_id;
9712
9713 -- To fetch First FPS parameter
9714 CURSOR csr_parameter_info IS
9715 SELECT fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS_DATE'),1,10)) first_fps_date,
9716 to_number(pay_gb_eoy_archive.get_parameter(legislative_parameters, 'PAYROLL_ID')) payroll_id
9717 FROM pay_payroll_actions pact,
9718 pay_assignment_actions paa
9719 WHERE paa.assignment_action_id = p_assactid
9720 AND pact.payroll_action_id = paa.payroll_action_id;
9721
9722 -- To get maximum assignment action id for the person
9723 cursor csr_get_max_asg_actid_person(person_id number,l_first_fps_eff_date date) is
9724 SELECT /*+ USE_NL(paa, pact, ptp) */
9725 to_number (substr (max (lpad (paa.action_sequence, 15
9726 , '0')
9727 || paa.assignment_action_id), 16))
9728 , max (pact.effective_date) effective_date
9729
9730 FROM per_all_assignments_f paaf,
9731 pay_assignment_actions paa
9732 , pay_payroll_actions pact
9733 , per_time_periods ptp
9734 WHERE paa.assignment_id = paaf.assignment_id
9735 and paaf.person_id = person_id
9736 AND paa.payroll_action_id = pact.payroll_action_id
9737 AND pact.time_period_id = ptp.time_period_id
9738 AND pact.action_type IN ('Q', 'R', 'B'
9739 , 'I', 'V')
9740 AND paa.action_status IN ('C', 'S')
9741 AND ptp.regular_payment_date
9742 BETWEEN g_start_year
9743 AND l_first_fps_eff_date
9744 AND paaf.effective_start_date =
9745 ( select max(asg2.effective_start_date)
9746 from per_all_assignments_f asg2
9747 where asg2.assignment_id = paaf.assignment_id
9748 and asg2.assignment_type = 'E'
9749 and asg2.effective_start_date <= l_prepayment_date
9750 );
9751
9752 --Below cursor fetches the basic details of the current assignment
9753 CURSOR csr_asg_num(c_asg_act_id NUMBER, c_cur_last_effective_date date)
9754 IS
9755 SELECT asg.assignment_number
9756 FROM per_all_assignments_f asg,
9757 pay_assignment_actions paa
9758 WHERE paa.assignment_action_id = c_asg_act_id
9759 AND paa.assignment_id = asg.assignment_id
9760 AND c_cur_last_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date;
9761
9762 CURSOR csr_get_starter_details(p_asg_id NUMBER)
9763 IS
9764 SELECT assignment_extra_info_id l_aei_id,
9765 aei_information8 starter_flag,
9766 aei_information9 pensioner_flag,
9767 aei_information19 expat_flag,
9768 object_version_number l_ovn
9769 FROM per_assignment_extra_info
9770 WHERE assignment_id = p_asg_id
9771 AND information_type = 'GB_RTI_ASG_DETAILS';
9772
9773 cursor csr_fps_check(p_asg_id number) is
9774 select count(*)
9775 from pay_assignment_actions paa,
9776 pay_payroll_actions ppa
9777 where paa.assignment_id = p_asg_id
9778 and paa.action_status ='C'
9779 and paa.assignment_action_id <> p_assactid
9780 and ppa.payroll_action_id = paa.payroll_action_id
9781 and ppa.report_type in ( 'RTI_FPS_REP' , 'RTI_FPS_REP_13');
9782
9783 cursor csr_fps_action_exists(c_cur_asg_id number, c_payroll_action_id number) is
9784 select 'Y'
9785 from pay_assignment_actions paa
9786 where paa.payroll_action_id = c_payroll_action_id
9787 and paa.assignment_id = c_cur_asg_id;
9788
9789 l_aggr_asgs_processed number;
9790 l_first_fps_eff_date date;
9791 l_payroll NUMBER;
9792 l_flag VARCHAR2(1) :='Y';
9793 l_gross number;
9794 l_taxable number;
9795 l_niable number;
9796 l_gross_id number;
9797 l_taxable_id number;
9798 l_niable_id number;
9799 min_asgactid number;
9800 l_pact_id number;
9801 l_new_starter csr_get_starter_details%rowtype;
9802 l_aei_id NUMBER;
9803 l_fps_check NUMBER;
9804 l_fps_action_exists VARCHAR2(1) :='N';
9805
9806 BEGIN
9807
9808 --archive_code begins here
9809 hr_utility.set_location('Entering the debug: '||l_proc,1);
9810 hr_utility.trace('p_assactid: '||p_assactid);
9811 hr_utility.trace('p_effective_date: '||p_effective_date);
9812
9813 l_archive_tab_det3(0).act_info1 := NULL;
9814 l_archive_tab_det3(0).act_info2 := 0;
9815 l_archive_tab_det3(0).act_info3 := NULL;
9816 l_archive_tab_det3(0).act_info4 := 0;
9817 l_archive_tab_det3(0).act_info5 := NULL;
9818 l_archive_tab_det3(0).act_info6 := 0;
9819 l_archive_tab_det3(0).act_info7 := NULL;
9820 l_archive_tab_det3(0).act_info8 := NULL;
9821 l_archive_tab_det3(0).act_info9 := NULL;
9822
9823 -- get the parameter values present in globals to local variables.
9824 l_first_fps := g_first_fps;
9825 l_tax_ref := g_tax_ref;
9826
9827 OPEN csr_parameter_info;
9828 FETCH csr_parameter_info
9829 INTO l_first_fps_eff_date,l_payroll;
9830 CLOSE csr_parameter_info;
9831
9832 hr_utility.trace('l_first_fps_eff_date: '||l_first_fps_eff_date);
9833
9834 OPEN csr_asg_basic_details(p_assactid);
9835 FETCH csr_asg_basic_details INTO l_asg_id, l_asg_eff_start_date, l_person_id, l_assignment_number;
9836 CLOSE csr_asg_basic_details;
9837
9838 hr_utility.trace('l_asg_id: '||l_asg_id);
9839 hr_utility.trace('l_asg_eff_start_date: '||l_asg_eff_start_date);
9840 hr_utility.trace('l_person_id: '||l_person_id);
9841
9842 open csr_is_retry_request;
9843 fetch csr_is_retry_request into l_retry_req_flag;
9844 close csr_is_retry_request;
9845 --RETRY LOGIC
9846 if l_retry_req_flag = 'Y' then
9847
9848 hr_utility.trace('RETRY : l_retry_req_flag: '|| l_retry_req_flag);
9849 open csr_get_starter_details(l_asg_id);
9850 fetch csr_get_starter_details into l_new_starter;
9851 close csr_get_starter_details;
9852
9853 hr_utility.trace('RETRY : l_new_starter.l_aei_id : '|| l_new_starter.l_aei_id);
9854 hr_utility.trace('RETRY : l_new_starter.l_ovn : '|| l_new_starter.l_ovn);
9855 hr_utility.trace('RETRY : l_new_starter.starter_flag : '|| l_new_starter.starter_flag);
9856 hr_utility.trace('RETRY : l_new_starter.pensioner_flag : '|| l_new_starter.pensioner_flag);
9857 hr_utility.trace('RETRY : l_new_starter.expat_flag : '|| l_new_starter.expat_flag);
9858
9859 if l_new_starter.starter_flag = 'Y' OR l_new_starter.pensioner_flag = 'Y' OR l_new_starter.expat_flag = 'Y' THEN
9860
9861 hr_utility.trace('RTI Sent checked.');
9862
9863 open csr_fps_check(l_asg_id);
9864 fetch csr_fps_check into l_fps_check;
9865 close csr_fps_check;
9866
9867 if l_fps_check = 0 then
9868
9869 hr_utility.trace('RETRY : Reset is required.');
9870
9871 --EXPAT Flag
9872 IF l_new_starter.starter_flag = 'Y' THEN
9873 IF l_new_starter.l_ovn IS NOT NULL THEN
9874 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false, p_object_version_number => l_new_starter.l_ovn, p_assignment_extra_info_id => l_new_starter.l_aei_id, p_aei_information_category => 'GB_RTI_ASG_DETAILS',
9875 p_aei_information8 => 'N');
9876 END IF;
9877 END IF;
9878 --PENSIONER Flag
9879 IF l_new_starter.pensioner_flag = 'Y' THEN
9880 IF l_new_starter.l_ovn IS NOT NULL THEN
9881 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false, p_object_version_number => l_new_starter.l_ovn, p_assignment_extra_info_id => l_new_starter.l_aei_id, p_aei_information_category => 'GB_RTI_ASG_DETAILS',
9882 p_aei_information9 => 'N');
9883 END IF;
9884 END IF;
9885 --STARTER Flag
9886 IF l_new_starter.expat_flag = 'Y' THEN
9887 IF l_new_starter.l_ovn IS NOT NULL THEN
9888 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false, p_object_version_number => l_new_starter.l_ovn, p_assignment_extra_info_id => l_new_starter.l_aei_id, p_aei_information_category => 'GB_RTI_ASG_DETAILS',
9889 p_aei_information19 => 'N');
9890 END IF;
9891 END IF;
9892
9893 end if; --l_fps_check
9894
9895 end if;
9896
9897 end if; --l_retry_req_flag
9898
9899 --RETRY Logic ends here
9900
9901 --delete from pay_gb_fps_details in case of retry
9902 if l_retry_req_flag = 'Y' then
9903 hr_utility.trace('RETRY : l_retry_req_flag: '|| l_retry_req_flag);
9904 select payroll_action_id into l_pact_id
9905 from pay_assignment_actions where assignment_action_id = p_assactid;
9906 open get_min_asg_actid(l_person_id,p_assactid);
9907 fetch get_min_asg_actid into min_asgactid;
9908 close get_min_asg_actid;
9909
9910 if min_asgactid = p_assactid then
9911 hr_utility.trace('deleting form pay_gb_fps_details in case of retry ');
9912 delete from pay_gb_fps_details
9913 where person_ID = l_person_id
9914 and FPS_PAY_ACT_ID = l_pact_id;
9915 end if;
9916 end if;
9917
9918 OPEN csr_asg(p_assactid, p_effective_date);
9919 FETCH csr_asg INTO l_asg_primary_flag1, l_per_ni_agg_flag1, l_per_paye_agg_flag1, l_payroll_id1;
9920 CLOSE csr_asg;
9921 hr_utility.trace('l_per_ni_agg_flag1: '|| l_per_ni_agg_flag1);
9922 hr_utility.trace('l_per_paye_agg_flag1: '|| l_per_paye_agg_flag1);
9923
9924 --------------------------------------------------------------------------------------------------------------------
9925
9926 -- First FPS Changes
9927 if l_first_fps = 'Y' then
9928
9929 hr_utility.trace(l_asg_f_id||' First FPS Flag : '||l_first_fps);
9930
9931 -- To get Assignment ID
9932 open csr_asg_id(p_assactid);
9933 fetch csr_asg_id into l_asg_f_id;
9934 close csr_asg_id;
9935
9936 open csr_prepayment_made(g_pre_pact_id);
9937 fetch csr_prepayment_made into l_temp_asg_id;
9938 if csr_prepayment_made%found then
9939 l_first_fps_prepay_asg := 'Y';
9940 else
9941 l_first_fps_prepay_asg := 'N';
9942 end if;
9943 close csr_prepayment_made;
9944
9945 hr_utility.trace(l_asg_f_id||' First FPS Pre Pay Asg : '||l_first_fps_prepay_asg );
9946
9947 -- PAYE Aggr logic starts
9948 /* Below code is to filter out PAYE Aggregated employees as part of First FPS processing logic
9949 if they have any of the assignments processed in current prepayment request id.
9950 That means this employee would be processed in main PAYE Aggregated code itself. */
9951
9952 l_aggr_asgs_processed := 0;
9953 IF l_per_paye_agg_flag1 = 'Y' THEN
9954 hr_utility.trace('PAYE Aggregated Assignment');
9955 hr_utility.trace('l_person_id:'||l_person_id);
9956 hr_utility.trace('g_pre_pact_id:'||g_pre_pact_id);
9957 hr_utility.trace('g_start_year:'||g_start_year);
9958 hr_utility.trace('g_end_year:'||g_end_year);
9959
9960 OPEN csr_aggr_asgs_processed(l_person_id, g_pre_pact_id, g_start_year, g_end_year);
9961 FETCH csr_aggr_asgs_processed
9962 INTO l_aggr_asgs_processed;
9963 hr_utility.trace('l_aggr_asgs_processed:' ||l_aggr_asgs_processed);
9964 CLOSE csr_aggr_asgs_processed;
9965
9966 IF l_aggr_asgs_processed > 0 THEN
9967 l_first_fps_prepay_asg := 'Y';
9968 hr_utility.trace('There is a payment made for one of his asgs in current prepayment request');
9969 END IF;
9970 END IF;
9971
9972 -- PAYE Aggr logic ends
9973
9974 end if; -- First FPS if ends
9975
9976
9977 --for NI only aggregation
9978 l_rti_ni_proc_flag1 := 'Y';
9979
9980 if nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y' then
9981 hr_utility.trace('l_asg_f_id1: '|| l_asg_f_id);
9982 hr_utility.trace('g_pre_pact_id: '|| g_pre_pact_id);
9983
9984 --Check whether the assignment is first fps assignment or not
9985 --If yes process the assignment else skip the assignment
9986
9987 OPEN get_defined_balance_id('Gross Pay','_ASG_TD_YTD');
9988 FETCH get_defined_balance_id INTO l_gross_id;
9989 CLOSE get_defined_balance_id;
9990
9991 OPEN get_defined_balance_id('Taxable Pay','_ASG_TD_YTD');
9992 FETCH get_defined_balance_id INTO l_taxable_id;
9993 CLOSE get_defined_balance_id;
9994
9995 OPEN get_defined_balance_id('NIable Pay','_ASG_TD_YTD');
9996 FETCH get_defined_balance_id INTO l_niable_id;
9997 CLOSE get_defined_balance_id;
9998
9999 -- To get latest assignment action id for the assignment
10000 OPEN csr_last_action_firstfps(l_asg_f_id, l_effective_start_date,
10001 l_effective_end_date, l_date_soy,
10002 l_prepayment_date,l_payroll);
10003 FETCH csr_last_action_firstfps INTO l_last_asg_action_id,
10004 l_last_effective_date;
10005
10006 CLOSE csr_last_action_firstfps;
10007
10008 hr_utility.trace('l_last_asg_action_id: '|| l_last_asg_action_id);
10009 hr_utility.trace('l_last_effective_date: '|| l_last_effective_date);
10010
10011 -- Fetching balances
10012 IF l_last_asg_action_id IS NOT NULL THEN
10013 l_gross := pay_balance_pkg.get_value(l_gross_id,l_last_asg_action_id);
10014 IF l_gross <= 0 THEN
10015 l_taxable := pay_balance_pkg.get_value(l_taxable_id,l_last_asg_action_id);
10016 END IF;
10017
10018 IF l_taxable <= 0 THEN
10019 l_niable := pay_balance_pkg.get_value(l_niable_id,l_last_asg_action_id);
10020 end if;
10021 END IF;
10022
10023 IF l_gross > 0 or l_taxable > 0 or l_niable > 0 THEN
10024 hr_utility.trace('Assignment '||l_asg_f_id||' has YTD values');
10025 ELSE
10026 hr_utility.trace('Assignment '||l_asg_f_id||' has No YTD values.');
10027 l_flag:= 'N';
10028 END IF;
10029
10030 -- Assignment is not First FPS Assignment
10031 if l_flag = 'N' then
10032 -- skip the NI aggregation logic if the current asg is not processed in this
10033 -- pre payments. This would be processed as part of max asg_act_id for this pre payment.
10034 open csr_rti_rpt_proc_prepay(l_asg_f_id,g_pre_pact_id);
10035 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag1;
10036 if csr_rti_rpt_proc_prepay%NOTFOUND then
10037 hr_utility.trace('Not processed in this prepayment.');
10038 l_rti_ni_proc_flag1 := 'N';
10039 end if;
10040 close csr_rti_rpt_proc_prepay;
10041 hr_utility.trace('l_rti_ni_proc_flag1: '|| l_rti_ni_proc_flag1);
10042 end if;
10043
10044 end if; --nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y
10045
10046
10047 if l_first_fps = 'Y' and l_first_fps_prepay_asg = 'N' and nvl(l_rti_ni_proc_flag1,'N') = 'Y' then
10048 l_prepayment_date := g_prepayment_date;
10049
10050 hr_utility.trace(l_asg_f_id||'Entering First FPS Logic');
10051
10052 l_effective_date := l_prepayment_date;
10053 g_effective_date := l_prepayment_date;
10054
10055 -- Tax Year Start and End
10056 If l_effective_date >= to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) Then
10057 l_date_soy := to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
10058 l_date_eoy := to_date('05-04-'||to_char(to_number(substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4))+1 ),'DD-MM-YYYY') ;
10059 Else
10060 l_date_soy := to_date('06-04-'||to_char(to_number(substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4))-1 ),'DD-MM-YYYY') ;
10061 l_date_eoy := to_date('05-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
10062 End If;
10063
10064 hr_utility.trace(l_date_soy||'start tax');
10065 hr_utility.trace(l_date_eoy||'end tax');
10066
10067 -- To get latest assignment action id for the assignment
10068 OPEN csr_last_action(l_asg_f_id, l_effective_start_date,
10069 l_effective_end_date, l_date_soy,
10070 l_prepayment_date);
10071 FETCH csr_last_action INTO l_last_asg_action_id,
10072 l_last_effective_date;
10073
10074 CLOSE csr_last_action;
10075
10076
10077 hr_utility.trace('After csr_last_action, l_last_asg_action_id='||l_last_asg_action_id);
10078 hr_utility.trace('l_last_effective_date='||fnd_date.date_to_displaydate(l_last_effective_date));
10079 --
10080
10081 hr_utility.set_location('Fetching person details ',10);
10082 l_archive_person := fetch_person_rec(p_assactid, l_last_effective_date,l_last_effective_date,l_archive_tab(0));
10083
10084 hr_utility.set_location('Fetching address details ',20);
10085 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
10086 l_archive_tab(0).assignment_id,
10087 l_last_effective_date,
10088 l_archive_tab(1));
10089
10090 hr_utility.set_location('Fetching Assignment details ',30);
10091 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
10092 l_last_effective_date,
10093 p_assactid,
10094 l_last_asg_action_id,
10095 'N',
10096 l_archive_tab(0),
10097 l_archive_tab(2), p_starter_set);
10098
10099 l_date_flag := fetch_start_date(l_asg_f_id,l_effective_date,l_last_effective_date,l_tax_ref,l_date_soy,p_starter_set,l_archive_tab(2));
10100
10101 IF l_per_paye_agg_flag1 = 'Y' THEN
10102 hr_utility.set_location('Calling fetch_first_fps_agg_asg_det2',30);
10103 l_archive_asg_det2 := fetch_first_fps_agg_asg_det2(l_last_asg_action_id,l_asg_f_id,l_last_effective_date,l_archive_tab(3));
10104 ELSE
10105 hr_utility.set_location('Calling fetch_first_fps_asg_det2',30);
10106 l_archive_asg_det2 := fetch_first_fps_asg_det2(l_last_asg_action_id,l_asg_f_id,l_last_effective_date,l_archive_tab(3));
10107 END IF;
10108
10109 hr_utility.set_location('Fetching Details3',30);
10110 l_archive_asg_det1 := fetch_asg_det3( l_archive_tab(0).assignment_id,
10111 l_last_asg_action_id,
10112 l_archive_tab_det3(0),'N');
10113
10114 hr_utility.set_location('End Fetching Details3',30);
10115
10116 i := 3;
10117
10118 -- OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10119 OPEN csr_last_action(l_asg_f_id, l_effective_start_date,
10120 l_effective_end_date, l_date_soy,
10121 l_prepayment_date);
10122 FETCH csr_last_action
10123 INTO l_last_asg_action_id,
10124 l_last_effective_date;
10125
10126 hr_utility.trace(l_asg_f_id||' FIRST FPS ASG Inside NI calculation.');
10127
10128 IF l_per_paye_agg_flag1 = 'Y' THEN
10129 hr_utility.set_location('Calling get_ni_bal_paye_aggr_for_asg',30);
10130 pay_gb_fps_ni_and_others_13.get_ni_bal_paye_aggr_for_asg(l_asg_f_id,
10131 l_last_asg_action_id,
10132 p_ni_a_balance,
10133 p_ni_b_balance,
10134 p_ni_c_balance,
10135 p_ni_d_balance,
10136 p_ni_e_balance,
10137 p_ni_j_balance,
10138 p_ni_l_balance);
10139
10140 --NI only Aggregation
10141 ELSIF nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y' then
10142
10143 --Get NI RTI reporting assignment
10144 open csr_get_ni_rpt_asg(l_asg_f_id);
10145 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
10146 close csr_get_ni_rpt_asg;
10147 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id || ' l_ni_rpt_date: ' || l_ni_rpt_date,1000);
10148 hr_utility.set_location('NI reporting assignment for the assignment: ' || l_asg_f_id || 'is ' ||l_ni_rpt_asg_id ,1000);
10149
10150 if l_ni_rpt_asg_id <> l_asg_f_id then
10151 -- Non RTI reporting assignment
10152 hr_utility.set_location('Calling get_ni_balances_for_asg for non Ni RTI reporting assignment',30);
10153 pay_gb_fps_ni_and_others_13.get_ni_balances_for_asg(l_last_asg_action_id,
10154 p_ni_a_balance,
10155 p_ni_b_balance,
10156 p_ni_c_balance,
10157 p_ni_d_balance,
10158 p_ni_e_balance,
10159 p_ni_j_balance,
10160 p_ni_l_balance);
10161 else
10162 --RTI Reporting Assignment
10163 hr_utility.set_location('Calling get_ni_balances_for_asg for Ni RTI reporting assignment',30);
10164 -- get the max assingment action id prcessed in this prepayment
10165 -- get the YTD values for that assignment action id
10166 open csr_get_max_asg_actid_person(l_archive_tab(0).person_id,l_first_fps_eff_date);
10167 fetch csr_get_max_asg_actid_person INTO l_last_asg_action_id,l_last_effective_date;
10168 close csr_get_max_asg_actid_person;
10169
10170 -- Fetching Person Level YTDs
10171 pay_gb_fps_ni_and_others_13.get_ni_only_bal_rti_rpt(l_last_asg_action_id,
10172 p_ni_a_balance,
10173 p_ni_b_balance,
10174 p_ni_c_balance,
10175 p_ni_d_balance,
10176 p_ni_e_balance,
10177 p_ni_j_balance,
10178 p_ni_l_balance);
10179
10180 END IF;
10181
10182 ELSE
10183 -- Non Aggregation
10184 hr_utility.set_location('Calling get_ni_balances_for_asg',30);
10185 pay_gb_fps_ni_and_others_13.get_ni_balances_for_asg(l_last_asg_action_id,
10186 p_ni_a_balance,
10187 p_ni_b_balance,
10188 p_ni_c_balance,
10189 p_ni_d_balance,
10190 p_ni_e_balance,
10191 p_ni_j_balance,
10192 p_ni_l_balance);
10193
10194 END IF;
10195
10196 IF (p_ni_a_balance.act_info1 IS NOT NULL) THEN
10197 IF already_a = -1 THEN
10198 i := i+1;
10199 already_a := i;
10200 END IF;
10201
10202 l_archive_tab(already_a).assignment_id := l_archive_tab(0).assignment_id;
10203 l_archive_tab(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
10204 l_archive_tab(already_a).act_info1 := p_ni_a_balance.act_info1;
10205 l_archive_tab(already_a).act_info2 := 0;
10206 l_archive_tab(already_a).act_info3 := p_ni_a_balance.act_info3;
10207 l_archive_tab(already_a).act_info4 := p_ni_a_balance.act_info4;
10208 l_archive_tab(already_a).act_info5 := p_ni_a_balance.act_info5;
10209 l_archive_tab(already_a).act_info6 := p_ni_a_balance.act_info6;
10210 l_archive_tab(already_a).act_info7 := p_ni_a_balance.act_info7;
10211 l_archive_tab(already_a).act_info8 := p_ni_a_balance.act_info8;
10212 l_archive_tab(already_a).act_info9 := 0;
10213 l_archive_tab(already_a).act_info10 := 0;
10214 l_archive_tab(already_a).act_info11 := p_ni_a_balance.act_info11;
10215 END IF;
10216 -- For Category B
10217 IF (p_ni_b_balance.act_info1 IS NOT NULL) THEN
10218 IF already_b = -1 THEN
10219 i := i+1;
10220 already_b := i;
10221 END IF;
10222 l_archive_tab(already_b).assignment_id := l_archive_tab(0).assignment_id;
10223 l_archive_tab(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
10224 l_archive_tab(already_b).act_info1 := p_ni_b_balance.act_info1;
10225 l_archive_tab(already_b).act_info2 := 0;
10226 l_archive_tab(already_b).act_info3 := p_ni_b_balance.act_info3;
10227 l_archive_tab(already_b).act_info4 := p_ni_b_balance.act_info4;
10228 l_archive_tab(already_b).act_info5 := p_ni_b_balance.act_info5;
10229 l_archive_tab(already_b).act_info6 := p_ni_b_balance.act_info6;
10230 l_archive_tab(already_b).act_info7 := p_ni_b_balance.act_info7;
10231 l_archive_tab(already_b).act_info8 := p_ni_b_balance.act_info8;
10232 l_archive_tab(already_b).act_info9 := 0;
10233 l_archive_tab(already_b).act_info10 := 0;
10234 l_archive_tab(already_b).act_info11 := p_ni_b_balance.act_info11;
10235 END IF;
10236 -- For Category C
10237 IF (p_ni_c_balance.act_info1 IS NOT NULL) THEN
10238 IF already_c = -1 THEN
10239 i := i+1;
10240 already_c := i;
10241 END IF;
10242 l_archive_tab(already_c).assignment_id := l_archive_tab(0).assignment_id;
10243 l_archive_tab(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
10244 l_archive_tab(already_c).act_info1 := p_ni_c_balance.act_info1;
10245 l_archive_tab(already_c).act_info2 := 0;
10246 l_archive_tab(already_c).act_info3 := p_ni_c_balance.act_info3;
10247 l_archive_tab(already_c).act_info4 := p_ni_c_balance.act_info4;
10248 l_archive_tab(already_c).act_info5 := p_ni_c_balance.act_info5;
10249 l_archive_tab(already_c).act_info6 := p_ni_c_balance.act_info6;
10250 l_archive_tab(already_c).act_info7 := p_ni_c_balance.act_info7;
10251 l_archive_tab(already_c).act_info8 := p_ni_c_balance.act_info8;
10252 l_archive_tab(already_c).act_info9 := 0;
10253 l_archive_tab(already_c).act_info10 := 0;
10254 l_archive_tab(already_c).act_info11 := p_ni_c_balance.act_info11;
10255 END IF;
10256 --For Category D
10257 IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
10258 IF already_d = -1 THEN
10259 i := i+1;
10260 already_d := i;
10261 END IF;
10262 l_archive_tab(already_d).assignment_id := l_archive_tab(0).assignment_id;
10263 l_archive_tab(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
10264 l_archive_tab(already_d).act_info1 := p_ni_d_balance.act_info1;
10265 l_archive_tab(already_d).act_info2 := 0;
10266 l_archive_tab(already_d).act_info3 := p_ni_d_balance.act_info3;
10267 l_archive_tab(already_d).act_info4 := p_ni_d_balance.act_info4;
10268 l_archive_tab(already_d).act_info5 := p_ni_d_balance.act_info5;
10269 l_archive_tab(already_d).act_info6 := p_ni_d_balance.act_info6;
10270 l_archive_tab(already_d).act_info7 := p_ni_d_balance.act_info7;
10271 l_archive_tab(already_d).act_info8 := p_ni_d_balance.act_info8;
10272 l_archive_tab(already_d).act_info9 := 0;
10273 l_archive_tab(already_d).act_info10 := 0;
10274 l_archive_tab(already_d).act_info11 := p_ni_d_balance.act_info11;
10275 END IF;
10276 -- For Category E
10277 IF (p_ni_e_balance.act_info1 IS NOT NULL) THEN
10278 IF already_e = -1 THEN
10279 i := i+1;
10280 already_e := i;
10281 END IF;
10282 l_archive_tab(already_e).assignment_id := l_archive_tab(0).assignment_id;
10283 l_archive_tab(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
10284 l_archive_tab(already_e).act_info1 := p_ni_e_balance.act_info1;
10285 l_archive_tab(already_e).act_info2 := 0;
10286 l_archive_tab(already_e).act_info3 := p_ni_e_balance.act_info3;
10287 l_archive_tab(already_e).act_info4 := p_ni_e_balance.act_info4;
10288 l_archive_tab(already_e).act_info5 := p_ni_e_balance.act_info5;
10289 l_archive_tab(already_e).act_info6 := p_ni_e_balance.act_info6;
10290 l_archive_tab(already_e).act_info7 := p_ni_e_balance.act_info7;
10291 l_archive_tab(already_e).act_info8 := p_ni_e_balance.act_info8;
10292 l_archive_tab(already_e).act_info9 := 0;
10293 l_archive_tab(already_e).act_info10 := 0;
10294 l_archive_tab(already_e).act_info11 := p_ni_e_balance.act_info11;
10295 END IF;
10296 -- For Category J
10297 IF (p_ni_j_balance.act_info1 IS NOT NULL) THEN
10298 IF already_j = -1 THEN
10299 i := i+1;
10300 already_j := i;
10301 END IF;
10302 l_archive_tab(already_j).assignment_id := l_archive_tab(0).assignment_id;
10303 l_archive_tab(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
10304 l_archive_tab(already_j).act_info1 := p_ni_a_balance.act_info1;
10305 l_archive_tab(already_j).act_info2 := 0;
10306 l_archive_tab(already_j).act_info3 := p_ni_a_balance.act_info3;
10307 l_archive_tab(already_j).act_info4 := p_ni_a_balance.act_info4;
10308 l_archive_tab(already_j).act_info5 := p_ni_a_balance.act_info5;
10309 l_archive_tab(already_j).act_info6 := p_ni_a_balance.act_info6;
10310 l_archive_tab(already_j).act_info7 := p_ni_a_balance.act_info7;
10311 l_archive_tab(already_j).act_info8 := p_ni_a_balance.act_info8;
10312 l_archive_tab(already_j).act_info9 := 0;
10313 l_archive_tab(already_j).act_info10 := 0;
10314 l_archive_tab(already_j).act_info11 := p_ni_j_balance.act_info11;
10315 END IF;
10316 -- For Category L
10317 IF (p_ni_l_balance.act_info1 IS NOT NULL) THEN
10318 IF already_l = -1 THEN
10319 i := i+1;
10320 already_l := i;
10321 END IF;
10322 l_archive_tab(already_l).assignment_id := l_archive_tab(0).assignment_id;
10323 l_archive_tab(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
10324 l_archive_tab(already_l).act_info1 := p_ni_l_balance.act_info1;
10325 l_archive_tab(already_l).act_info2 := 0;
10326 l_archive_tab(already_l).act_info3 := p_ni_l_balance.act_info3;
10327 l_archive_tab(already_l).act_info4 := p_ni_l_balance.act_info4;
10328 l_archive_tab(already_l).act_info5 := p_ni_l_balance.act_info5;
10329 l_archive_tab(already_l).act_info6 := p_ni_l_balance.act_info6;
10330 l_archive_tab(already_l).act_info7 := p_ni_l_balance.act_info7;
10331 l_archive_tab(already_l).act_info8 := p_ni_l_balance.act_info8;
10332 l_archive_tab(already_l).act_info9 := 0;
10333 l_archive_tab(already_l).act_info10 := 0;
10334 l_archive_tab(already_l).act_info11 := p_ni_l_balance.act_info11;
10335 END IF;
10336
10337 FOR k IN 4..i
10338 LOOP
10339 IF l_archive_tab(k).act_info10 IS NOT NULL THEN
10340 ni_contrib_ytd := NVL(ni_contrib_ytd,0) + l_archive_tab(k).act_info8;
10341 END IF;
10342 END LOOP;
10343
10344 l_archive_tab(3).act_info5 := NVL(ni_contrib_ytd,0);
10345 l_archive_tab(3).act_info24 := 0;--NVL(ni_contrib,0);
10346
10347 -- In NI only aggregation, non RTI Reporting assignment set the NI YTDs to 0
10348 IF nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y' then
10349 if l_ni_rpt_asg_id <> l_asg_f_id then
10350 FOR k IN 4..i
10351 LOOP
10352 if l_archive_tab(k).act_info1 is not null then
10353 hr_utility.trace('NON RPT act_info1' || l_archive_tab(k).act_info1);
10354 l_archive_tab(k).act_info3 := 0;
10355 l_archive_tab(k).act_info4 := 0;
10356 l_archive_tab(k).act_info5 := 0;
10357 l_archive_tab(k).act_info6 := 0;
10358 l_archive_tab(k).act_info7 := 0;
10359 l_archive_tab(k).act_info8 := 0;
10360 end if;
10361 END LOOP;
10362 end if;
10363 END IF;
10364
10365
10366 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
10367 pay_gb_rti_fps_validate_13.person_address_validations(p_assactid, sysdate, l_archive_tab,l_per_addr_val_flag);
10368 pay_gb_rti_fps_validate_13.assignment_validations(p_assactid, sysdate, l_archive_tab,l_asg_val_flag);
10369 l_fps_etext_ni_flag := 'Y';
10370 l_fps_ni_val_err := FALSE;
10371
10372 FOR i_count IN 4..i
10373 LOOP
10374 hr_utility.set_location ('Calling FPS NI validations', 10);
10375 pay_gb_rti_fps_validate_13.ni_validations(p_assactid, p_effective_date, l_archive_tab,i_count,l_fps_etext_ni_flag);
10376 IF l_fps_etext_ni_flag = 'Y'
10377 THEN
10378 l_fps_ni_val_err := TRUE;
10379 END IF;
10380
10381 END LOOP;
10382
10383 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
10384 IF l_per_addr_val_flag = 'Y' OR l_asg_val_flag = 'Y' OR l_fps_ni_val_err -- If validation fails , that record will not be archived.
10385 THEN
10386 hr_utility.set_location('Validation failed, raise error.',999);
10387 raise error_found;
10388 ELSE
10389 hr_utility.set_location('Validation successful, archive data.',999);
10390 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
10391 insert_archive_row(p_assactid, p_effective_date,l_archive_tab_det3);
10392 END IF;
10393 ELSE
10394 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
10395 raise error_found;
10396 END IF;
10397
10398 hr_utility.trace(l_asg_f_id||'Leaving First FPS Logic');
10399
10400 else -- First Fps and First Fps Prepayment else starts
10401 hr_utility.trace(l_asg_f_id||'Entering FPS Logic');
10402 -- FIRST FPS changes ends
10403
10404 --*****************************************************************************************************
10405 -- Below code is to verify whether current payment for this assignment is already archived while
10406 -- processing any other future payments as part of running some other FPS Archive Process.
10407 -- In that case, fetch those records only and archive the same again.
10408 -- This is to make sure that always we submit the maximum amounts payed in that period.
10409 -- This ensures the correct values at HMRC even if the previous values gets overridden at HMRC.
10410 --*****************************************************************************************************
10411
10412 OPEN csr_last_payroll_action(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10413 FETCH csr_last_payroll_action
10414 INTO l_last_asg_action_id,
10415 l_last_effective_date;
10416 CLOSE csr_last_payroll_action;
10417
10418 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
10419 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
10420 ---
10421
10422 OPEN csr_get_payment_date(l_last_asg_action_id);
10423 FETCH csr_get_payment_date INTO l_payment_date;
10424 CLOSE csr_get_payment_date;
10425
10426 hr_utility.trace('l_payment_date: '||l_payment_date);
10427 g_effective_date := l_payment_date;
10428
10429 OPEN csr_asg(p_assactid, g_effective_date);
10430 FETCH csr_asg INTO l_asg_primary_flag, l_per_ni_agg_flag, l_per_paye_agg_flag, l_payroll_id;
10431 CLOSE csr_asg;
10432
10433 hr_utility.trace('l_asg_primary_flag: '||l_asg_primary_flag);
10434 hr_utility.trace('l_per_paye_agg_flag: '||l_per_paye_agg_flag);
10435 hr_utility.trace('l_per_ni_agg_flag: '||l_per_ni_agg_flag);
10436 hr_utility.trace('l_payroll_id: '||l_payroll_id);
10437
10438 hr_utility.trace('l_asg_id: '||l_asg_id);
10439 hr_utility.trace('l_asg_eff_start_date: '||l_asg_eff_start_date);
10440 hr_utility.trace('l_asg_primary_flag: '||l_asg_primary_flag);
10441 hr_utility.trace('l_per_agg_flag: '||l_per_agg_flag);
10442 hr_utility.trace('l_payroll_id: '||l_payroll_id);
10443 hr_utility.trace('g_start_year: '||g_start_year);
10444 hr_utility.trace('g_end_year: '||g_end_year);
10445 hr_utility.trace('g_pre_pact_id: '||g_pre_pact_id);
10446
10447 --*****************************************************************************************************
10448 -- Below code processes all non-aggregated assignments
10449 --*****************************************************************************************************
10450
10451 IF (l_per_paye_agg_flag <> 'Y' and l_per_ni_agg_flag <> 'Y') THEN
10452
10453 hr_utility.trace('Entered Non-Aggregated Code');
10454
10455 OPEN csr_last_payroll_action(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10456 FETCH csr_last_payroll_action
10457 INTO l_last_asg_action_id,
10458 l_last_effective_date;
10459 CLOSE csr_last_payroll_action;
10460
10461 OPEN csr_prepay_asg_act_details(l_asg_id, g_pre_pact_id);
10462 FETCH csr_prepay_asg_act_details
10463 INTO l_prepay_asg_action_id,
10464 l_prepay_payroll_action_id,
10465 l_prepay_effective_date;
10466 CLOSE csr_prepay_asg_act_details;
10467
10468 hr_utility.trace('l_prepay_asg_action_id: '||l_prepay_asg_action_id);
10469 hr_utility.trace('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id);
10470 hr_utility.trace('l_prepay_effective_date: '||l_prepay_effective_date);
10471
10472 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
10473 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
10474 l_start_date := l_asg_eff_start_date;
10475 l_end_date := g_effective_date;
10476
10477 ---
10478
10479 l_bacs_payment_exists := 'N';
10480
10481 OPEN csr_bacs_payment_exists (l_prepay_payroll_action_id,l_prepay_asg_action_id);
10482 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
10483 CLOSE csr_bacs_payment_exists;
10484
10485 begin
10486 if (l_bacs_payment_exists = 'Y') then
10487 l_hash_code := PAY_GB_FPS_NI_AND_OTHERS_13.fetch_HASH_FPS_ASG(g_pre_pact_id, l_asg_id, l_large_bacs_payment);
10488 else
10489 l_hash_code := null;
10490 end if;
10491 exception
10492 when others then
10493 populate_run_msg(p_assactid, 'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
10494 fnd_file.put_line (fnd_file.LOG,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
10495 raise_application_error(-20001,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
10496 end;
10497
10498 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
10499 hr_utility.trace('l_hash_code: '||l_hash_code);
10500
10501 ---
10502
10503 OPEN csr_total_payment (l_prepay_asg_action_id);
10504 FETCH csr_total_payment INTO l_total_payment;
10505 CLOSE csr_total_payment;
10506
10507 hr_utility.trace('l_total_payment: '||l_total_payment);
10508
10509 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
10510
10511 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
10512 ---
10513
10514 hr_utility.set_location('Fetching person details ',10);
10515 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab(0));
10516 ---
10517 hr_utility.set_location('Fetching address details ',20);
10518 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
10519 l_archive_tab(0).assignment_id,
10520 g_effective_date,
10521 l_archive_tab(1));
10522 l_person_id := l_archive_tab(0).person_id;
10523 --Fetching assignments details for FPS
10524 hr_utility.set_location('Fetching Assignment details ',30);
10525 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
10526 g_effective_date,
10527 p_assactid,
10528 l_last_asg_action_id,
10529 'Y',
10530 l_archive_tab(0),
10531 l_archive_tab(2),
10532 p_starter_set);
10533
10534 hr_utility.set_location('Assignment Hash Code to archive record4',30);
10535 l_archive_tab(2).act_info28 := l_hash_code;
10536
10537 hr_utility.set_location('Fetching Details3',30);
10538 l_archive_asg_det1 := fetch_asg_det3( l_archive_tab(0).assignment_id,
10539 l_last_asg_action_id,
10540 l_archive_tab_det3(0));
10541
10542 hr_utility.set_location('End Fetching Details3',30);
10543
10544 --****************************
10545 i := 3;
10546 l_archive_tab(3).assignment_id := l_asg_id;
10547
10548 OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10549 LOOP
10550 FETCH csr_all_payroll_actions
10551 INTO l_last_asg_action_id,
10552 l_last_effective_date;
10553 EXIT
10554 WHEN csr_all_payroll_actions%NOTFOUND;
10555
10556 pay_gb_fps_ni_and_others_13.get_ni_balances_for_asg(l_last_asg_action_id,
10557 p_ni_a_balance,
10558 p_ni_b_balance,
10559 p_ni_c_balance,
10560 p_ni_d_balance,
10561 p_ni_e_balance,
10562 p_ni_j_balance,
10563 p_ni_l_balance);
10564 IF (p_ni_a_balance.act_info1 IS NOT NULL) THEN
10565 IF already_a = -1 THEN
10566 i := i+1;
10567 already_a := i;
10568 END IF;
10569
10570 l_archive_tab(already_a).assignment_id := l_archive_tab(0).assignment_id;
10571 l_archive_tab(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
10572 l_archive_tab(already_a).act_info1 := p_ni_a_balance.act_info1;
10573 l_archive_tab(already_a).act_info2 := NVL(l_archive_tab(already_a).act_info2,0) + nvl(p_ni_a_balance.act_info2,0);
10574 l_archive_tab(already_a).act_info3 := p_ni_a_balance.act_info3;
10575 l_archive_tab(already_a).act_info4 := p_ni_a_balance.act_info4;
10576 l_archive_tab(already_a).act_info5 := p_ni_a_balance.act_info5;
10577 l_archive_tab(already_a).act_info6 := p_ni_a_balance.act_info6;
10578 l_archive_tab(already_a).act_info7 := p_ni_a_balance.act_info7;
10579 l_archive_tab(already_a).act_info8 := p_ni_a_balance.act_info8;
10580 l_archive_tab(already_a).act_info9 := NVL(l_archive_tab(already_a).act_info9 ,0) + nvl(p_ni_a_balance.act_info9,0);
10581 l_archive_tab(already_a).act_info10 := NVL(l_archive_tab(already_a).act_info10 ,0) + nvl(p_ni_a_balance.act_info10,0);
10582 l_archive_tab(already_a).act_info11 := p_ni_a_balance.act_info11;
10583
10584 END IF;
10585 -- For Category B
10586 IF (p_ni_b_balance.act_info1 IS NOT NULL) THEN
10587 IF already_b = -1 THEN
10588 i := i+1;
10589 already_b := i;
10590 END IF;
10591 l_archive_tab(already_b).assignment_id := l_archive_tab(0).assignment_id;
10592 l_archive_tab(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
10593 l_archive_tab(already_b).act_info1 := p_ni_b_balance.act_info1;
10594 l_archive_tab(already_b).act_info2 := NVL(l_archive_tab(already_b).act_info2,0) + nvl(p_ni_b_balance.act_info2,0);
10595 l_archive_tab(already_b).act_info3 := p_ni_b_balance.act_info3;
10596 l_archive_tab(already_b).act_info4 := p_ni_b_balance.act_info4;
10597 l_archive_tab(already_b).act_info5 := p_ni_b_balance.act_info5;
10598 l_archive_tab(already_b).act_info6 := p_ni_b_balance.act_info6;
10599 l_archive_tab(already_b).act_info7 := p_ni_b_balance.act_info7;
10600 l_archive_tab(already_b).act_info8 := p_ni_b_balance.act_info8;
10601 l_archive_tab(already_b).act_info9 := NVL(l_archive_tab(already_b).act_info9 ,0) +nvl( p_ni_b_balance.act_info9,0);
10602 l_archive_tab(already_b).act_info10 := NVL(l_archive_tab(already_b).act_info10 ,0) + nvl(p_ni_b_balance.act_info10,0);
10603 l_archive_tab(already_b).act_info11 := p_ni_b_balance.act_info11;
10604 END IF;
10605 -- For Category C
10606 IF (p_ni_c_balance.act_info1 IS NOT NULL) THEN
10607 IF already_c = -1 THEN
10608 i := i+1;
10609 already_c := i;
10610 END IF;
10611 l_archive_tab(already_c).assignment_id := l_archive_tab(0).assignment_id;
10612 l_archive_tab(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
10613 l_archive_tab(already_c).act_info1 := p_ni_c_balance.act_info1;
10614 l_archive_tab(already_c).act_info2 := NVL(l_archive_tab(already_c).act_info2,0) + nvl(p_ni_c_balance.act_info2,0);
10615 l_archive_tab(already_c).act_info3 := p_ni_c_balance.act_info3;
10616 l_archive_tab(already_c).act_info4 := p_ni_c_balance.act_info4;
10617 l_archive_tab(already_c).act_info5 := p_ni_c_balance.act_info5;
10618 l_archive_tab(already_c).act_info6 := p_ni_c_balance.act_info6;
10619 l_archive_tab(already_c).act_info7 := p_ni_c_balance.act_info7;
10620 l_archive_tab(already_c).act_info8 := p_ni_c_balance.act_info8;
10621 l_archive_tab(already_c).act_info9 := NVL(l_archive_tab(already_c).act_info9 ,0) + nvl(p_ni_c_balance.act_info9,0);
10622 l_archive_tab(already_c).act_info10 := NVL(l_archive_tab(already_c).act_info10 ,0) + nvl(p_ni_c_balance.act_info10,0);
10623 l_archive_tab(already_c).act_info11 := p_ni_c_balance.act_info11;
10624 END IF;
10625 --For Category D
10626 IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
10627 IF already_d = -1 THEN
10628 i := i+1;
10629 already_d := i;
10630 END IF;
10631 l_archive_tab(already_d).assignment_id := l_archive_tab(0).assignment_id;
10632 l_archive_tab(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
10633 l_archive_tab(already_d).act_info1 := p_ni_d_balance.act_info1;
10634 l_archive_tab(already_d).act_info2 := NVL(l_archive_tab(already_d).act_info2,0) + nvl(p_ni_d_balance.act_info2,0);
10635 l_archive_tab(already_d).act_info3 := p_ni_d_balance.act_info3;
10636 l_archive_tab(already_d).act_info4 := p_ni_d_balance.act_info4;
10637 l_archive_tab(already_d).act_info5 := p_ni_d_balance.act_info5;
10638 l_archive_tab(already_d).act_info6 := p_ni_d_balance.act_info6;
10639 l_archive_tab(already_d).act_info7 := p_ni_d_balance.act_info7;
10640 l_archive_tab(already_d).act_info8 := p_ni_d_balance.act_info8;
10641 l_archive_tab(already_d).act_info9 := NVL(l_archive_tab(already_d).act_info9,0) + nvl(p_ni_d_balance.act_info9,0);
10642 l_archive_tab(already_d).act_info10 := NVL(l_archive_tab(already_d).act_info10,0) + nvl(p_ni_d_balance.act_info10,0);
10643 l_archive_tab(already_d).act_info11 := p_ni_d_balance.act_info11;
10644 END IF;
10645 -- For Category E
10646 IF (p_ni_e_balance.act_info1 IS NOT NULL) THEN
10647 IF already_e = -1 THEN
10648 i := i+1;
10649 already_e := i;
10650 END IF;
10651 l_archive_tab(already_e).assignment_id := l_archive_tab(0).assignment_id;
10652 l_archive_tab(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
10653 l_archive_tab(already_e).act_info1 := p_ni_e_balance.act_info1;
10654 l_archive_tab(already_e).act_info2 := NVL(l_archive_tab(already_e).act_info2,0) + nvl(p_ni_e_balance.act_info2,0);
10655 l_archive_tab(already_e).act_info3 := p_ni_e_balance.act_info3;
10656 l_archive_tab(already_e).act_info4 := p_ni_e_balance.act_info4;
10657 l_archive_tab(already_e).act_info5 := p_ni_e_balance.act_info5;
10658 l_archive_tab(already_e).act_info6 := p_ni_e_balance.act_info6;
10659 l_archive_tab(already_e).act_info7 := p_ni_e_balance.act_info7;
10660 l_archive_tab(already_e).act_info8 := p_ni_e_balance.act_info8;
10661 l_archive_tab(already_e).act_info9 := NVL(l_archive_tab(already_e).act_info9 ,0) + nvl(p_ni_e_balance.act_info9,0);
10662 l_archive_tab(already_e).act_info10 := NVL(l_archive_tab(already_e).act_info10 ,0) + nvl(p_ni_e_balance.act_info10,0);
10663 l_archive_tab(already_e).act_info11 := p_ni_e_balance.act_info11;
10664 END IF;
10665 -- For Category J
10666 IF (p_ni_j_balance.act_info1 IS NOT NULL) THEN
10667 IF already_j = -1 THEN
10668 i := i+1;
10669 already_j := i;
10670 END IF;
10671 l_archive_tab(already_j).assignment_id := l_archive_tab(0).assignment_id;
10672 l_archive_tab(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
10673 l_archive_tab(already_j).act_info1 := p_ni_j_balance.act_info1;
10674 l_archive_tab(already_j).act_info2 := NVL(l_archive_tab(already_j).act_info2,0) + nvl(p_ni_j_balance.act_info2,0);
10675 l_archive_tab(already_j).act_info3 := p_ni_j_balance.act_info3;
10676 l_archive_tab(already_j).act_info4 := p_ni_j_balance.act_info4;
10677 l_archive_tab(already_j).act_info5 := p_ni_j_balance.act_info5;
10678 l_archive_tab(already_j).act_info6 := p_ni_j_balance.act_info6;
10679 l_archive_tab(already_j).act_info7 := p_ni_j_balance.act_info7;
10680 l_archive_tab(already_j).act_info8 := p_ni_j_balance.act_info8;
10681 l_archive_tab(already_j).act_info9 := NVL(l_archive_tab(already_j).act_info9 ,0) + nvl(p_ni_j_balance.act_info9,0);
10682 l_archive_tab(already_j).act_info10 := NVL(l_archive_tab(already_j).act_info10 ,0) + nvl(p_ni_j_balance.act_info10,0);
10683 l_archive_tab(already_j).act_info11 := p_ni_j_balance.act_info11;
10684 END IF;
10685 -- For Category L
10686 IF (p_ni_l_balance.act_info1 IS NOT NULL) THEN
10687 IF already_l = -1 THEN
10688 i := i+1;
10689 already_l := i;
10690 END IF;
10691 l_archive_tab(already_l).assignment_id := l_archive_tab(0).assignment_id;
10692 l_archive_tab(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
10693 l_archive_tab(already_l).act_info1 := p_ni_l_balance.act_info1;
10694 l_archive_tab(already_l).act_info2 := NVL(l_archive_tab(already_l).act_info2,0) + nvl(p_ni_l_balance.act_info2,0);
10695 l_archive_tab(already_l).act_info3 := p_ni_l_balance.act_info3;
10696 l_archive_tab(already_l).act_info4 := p_ni_l_balance.act_info4;
10697 l_archive_tab(already_l).act_info5 := p_ni_l_balance.act_info5;
10698 l_archive_tab(already_l).act_info6 := p_ni_l_balance.act_info6;
10699 l_archive_tab(already_l).act_info7 := p_ni_l_balance.act_info7;
10700 l_archive_tab(already_l).act_info8 := p_ni_l_balance.act_info8;
10701 l_archive_tab(already_l).act_info9 := NVL(l_archive_tab(already_l).act_info9 ,0) + nvl(p_ni_l_balance.act_info9,0);
10702 l_archive_tab(already_l).act_info10 := NVL(l_archive_tab(already_l).act_info10 ,0) + nvl(p_ni_l_balance.act_info10,0);
10703 l_archive_tab(already_l).act_info11 := p_ni_l_balance.act_info11;
10704 END IF;
10705
10706 l_archive_asg_det2 := fetch_fps_asg_det2(l_last_asg_action_id,l_asg_id,l_archive_tab(3));
10707
10708 OPEN csr_pay_act_details(l_last_asg_action_id);
10709 FETCH csr_pay_act_details INTO l_payroll_pact_id;
10710 CLOSE csr_pay_act_details;
10711
10712 INSERT
10713 INTO PAY_GB_FPS_DETAILS
10714 (
10715 ASSIGNMENT_ID,
10716 PERSON_ID,
10717 FPS_ASG_ACT_ID,
10718 FPS_PAY_ACT_ID,
10719 FPS_EFFECTIVE_DATE,
10720 PREPAY_ASG_ACT_ID,
10721 PREPAY_PAY_ACT_ID,
10722 PREPAY_EFFECTIVE_DATE,
10723 PAYROLL_ASG_ACT_ID,
10724 PAYROLL_PAY_ACT_ID,
10725 PAYROLL_EFFECTIVE_DATE
10726 )
10727 VALUES
10728 (
10729 l_asg_id,
10730 l_person_id,
10731 p_assactid,
10732 g_payroll_action_id,
10733 g_fps_effective_date,
10734 l_prepay_asg_action_id,
10735 l_prepay_payroll_action_id,
10736 l_prepay_effective_date,
10737 l_last_asg_action_id,
10738 l_payroll_pact_id,
10739 l_last_effective_date
10740 );
10741
10742 END LOOP;
10743
10744 CLOSE csr_all_payroll_actions;
10745
10746 FOR k IN 4..i
10747 LOOP
10748 IF l_archive_tab(k).act_info10 IS NOT NULL THEN
10749 ni_contrib := NVL(ni_contrib,0) + l_archive_tab(k).act_info10;
10750 ni_contrib_ytd := NVL(ni_contrib_ytd,0) + l_archive_tab(k).act_info8;
10751 END IF;
10752 END LOOP;
10753
10754 hr_utility.trace( 'value of i :' || i);
10755 hr_utility.trace('Assignment id : ' || l_asg_id);
10756 hr_utility.trace('ni_contrib : ' || ni_contrib);
10757 hr_utility.trace('l_archive_tab(3).act_info8 : ' || l_archive_tab(3).act_info8 );
10758 hr_utility.trace('l_archive_tab(3).act_info9 : ' || l_archive_tab(3).act_info9 );
10759
10760 -- Derive the fields 58B and 59
10761 -- 58B
10762 l_archive_tab(3).act_info8 := NVL(l_archive_tab(3).act_info8,0) -- Prev holds Total Deductions
10763 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
10764 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
10765 - NVL(ni_contrib,0) -- NI
10766 + l_non_bacs_payment;
10767 -- 59
10768 l_archive_tab(3).act_info9 := NVL(l_archive_tab(3).act_info9,0)
10769 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
10770 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
10771 - NVL(ni_contrib,0) -- NI
10772 + NVL(l_archive_tab(3).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
10773 l_archive_tab(3).act_info5 := NVL(ni_contrib_ytd,0);
10774 l_archive_tab(3).act_info24 := NVL(ni_contrib,0);
10775 -- l_archive_tab(3).act_info22 := nvl(l_archive_tab(3).act_info22,0) + nvl(g_assp_total,0);
10776 -- l_archive_tab(3).act_info20 := nvl(l_archive_tab(3).act_info20,0) + nvl(g_spp_total,0);
10777
10778 /* g_ssp_total := 0;
10779 g_sap_total := 0;
10780 g_spp_total := 0;
10781 g_assp_total := 0;
10782 g_smp_total := 0;
10783 */
10784 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
10785
10786 -- Validating fetched Person,Address,Assignment details for FPS
10787 hr_utility.set_location('Calling Person Address validations', 10);
10788 pay_gb_rti_fps_validate_13.person_address_validations(p_assactid, p_effective_date, l_archive_tab,l_per_addr_val_flag);
10789 hr_utility.trace('person address' ||l_per_addr_val_flag);
10790
10791 IF l_per_addr_val_flag = 'Y' THEN -- If validation fails
10792 l_personaddr_val_err := TRUE;
10793 END IF;
10794
10795 hr_utility.set_location('Calling FPS validations', 10);
10796 pay_gb_rti_fps_validate_13.assignment_validations(p_assactid, p_effective_date, l_archive_tab,l_fps_etext_asg_flag);
10797
10798 IF l_fps_etext_asg_flag = 'Y' THEN -- If validation fails
10799 l_fps_val_err := TRUE;
10800 END IF;
10801
10802 hr_utility.set_location('After Calling FPS validations', 10);
10803 -- LOOP through all NIs
10804 FOR i_count IN 4..i
10805 LOOP
10806
10807 hr_utility.set_location ('Calling FPS NI validations', 10);
10808
10809 pay_gb_rti_fps_validate_13.ni_validations(p_assactid, p_effective_date, l_archive_tab,i_count,l_fps_etext_ni_flag);
10810
10811 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
10812 l_fps_ni_val_err := TRUE;
10813 END IF;
10814
10815 END LOOP;
10816
10817 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
10818 IF l_personaddr_val_err OR l_fps_val_err OR l_fps_ni_val_err -- If validation fails , that record will not be archived.
10819 THEN
10820 hr_utility.set_location('Validation failed, raise error.',999);
10821 fnd_file.put_line(fnd_file.LOG,'Not Archiving');
10822 raise error_found;
10823 ELSE
10824 hr_utility.set_location('Validation successful, archive data.',999);
10825 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
10826 insert_archive_row(p_assactid, p_effective_date,l_archive_tab_det3);
10827
10828 /* Moved this code to Action creation
10829 -- lock the pre payments action id with current fps assignment action id
10830 begin
10831 hr_nonrun_asact.insint(p_assactid, l_prepay_asg_action_id);
10832 exception
10833 when dup_val_on_index then
10834 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
10835 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_prepay_asg_action_id,60);
10836 end;*/
10837 END IF;
10838 ELSE
10839 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
10840 raise error_found;
10841 END IF;
10842
10843 --
10844
10845 elsif l_per_paye_agg_flag = 'Y' then -- This else is for IF (l_per_paye_agg_flag <> 'Y' and l_per_ni_agg_flag <> 'Y') THEN
10846
10847 hr_utility.trace('PAYE Agg code g_payroll_action_id ' || g_payroll_action_id);
10848 --*****************************************************************************************************
10849 -- Below code processes all aggregated assignments
10850 --*****************************************************************************************************
10851
10852 OPEN csr_aggr_last_payroll_action(l_person_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10853 FETCH csr_aggr_last_payroll_action
10854 INTO l_last_asgact_id,
10855 l_last_eff_date;
10856 CLOSE csr_aggr_last_payroll_action;
10857
10858 hr_utility.trace('l_last_asgact_id:' || l_last_asgact_id);
10859 hr_utility.trace('l_last_eff_date:' || l_last_eff_date);
10860
10861 OPEN csr_last_aggr_asg(l_last_asgact_id);
10862 FETCH csr_last_aggr_asg
10863 INTO l_last_asg_id;
10864 CLOSE csr_last_aggr_asg;
10865
10866 hr_utility.trace('l_last_asg_id:' || l_last_asg_id);
10867
10868 -- should skip the aggregation logic for other assignments
10869 select max(paa.assignment_action_id) into l_asg_action_id
10870 from
10871 pay_assignment_actions paa,
10872 per_all_assignments_f paaf
10873 where
10874 paaf.person_id = l_person_id
10875 and paaf.assignment_id = paa.assignment_id
10876 and paa.payroll_action_id = g_payroll_action_id
10877 and paa.assignment_id = l_last_asg_id;
10878 hr_utility.trace('l_asg_action_id:' || l_asg_action_id || ' p_assactid: '|| p_assactid );
10879
10880 if l_asg_action_id = p_assactid then
10881
10882 hr_utility.trace('Entered Aggregated Code');
10883 l_prepay_master_counter := 1;
10884
10885 OPEN csr_aggr_last_payroll_action(l_person_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10886 FETCH csr_aggr_last_payroll_action
10887 INTO l_last_asg_action_id,
10888 l_last_effective_date;
10889 -- get the flag to check whether the current request is retry.
10890 open csr_is_retry_request;
10891 fetch csr_is_retry_request into l_retry_req_flag;
10892 close csr_is_retry_request;
10893
10894 hr_utility.trace('l_last_asg_action_id: ' ||l_last_asg_action_id);
10895 hr_utility.trace('l_last_effective_date: ' ||l_last_effective_date);
10896 CLOSE csr_aggr_last_payroll_action;
10897
10898 OPEN csr_get_payment_date(l_last_asg_action_id);
10899 FETCH csr_get_payment_date INTO l_payment_date;
10900 CLOSE csr_get_payment_date;
10901
10902 hr_utility.trace('l_payment_date: '||l_payment_date);
10903 g_effective_date := l_payment_date;
10904
10905 OPEN csr_prepay_asg_act_details(l_asg_id, g_pre_pact_id);
10906 FETCH csr_prepay_asg_act_details
10907 INTO l_prepay_asg_action_id,
10908 l_prepay_payroll_action_id,
10909 l_prepay_effective_date;
10910 CLOSE csr_prepay_asg_act_details;
10911
10912 hr_utility.trace('l_prepay_asg_action_id: '||l_prepay_asg_action_id);
10913 hr_utility.trace('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id);
10914 hr_utility.trace('l_prepay_effective_date: '||l_prepay_effective_date);
10915
10916 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
10917 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
10918
10919 --Fix for the bug 16409794 starts here
10920 OPEN csr_total_payment_new(l_prepay_asg_action_id);
10921 FETCH csr_total_payment_new INTO l_total_payment;
10922 CLOSE csr_total_payment_new;
10923 hr_utility.trace('l_total_payment: '||l_total_payment);
10924
10925 if (l_total_payment <> 0) then
10926 --Fix for the bug 16409794 ends here
10927
10928 l_start_date := l_asg_eff_start_date;
10929 l_end_date := g_effective_date;
10930
10931 hr_utility.set_location('Fetching person details ',10);
10932 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab(0));
10933 ---
10934 hr_utility.set_location('Fetching address details ',20);
10935 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
10936 l_archive_tab(0).assignment_id,
10937 g_effective_date,
10938 l_archive_tab(1));
10939 l_person_id := l_archive_tab(0).person_id;
10940
10941
10942 --****************************
10943 OPEN csr_pay_act_details(l_last_asg_action_id);
10944 FETCH csr_pay_act_details INTO l_payroll_pact_id;
10945 CLOSE csr_pay_act_details;
10946
10947
10948
10949 hr_utility.trace('l_asg_id: ' ||l_asg_id);
10950 hr_utility.trace('l_person_id: ' ||l_person_id);
10951 hr_utility.trace('g_pre_pact_id: ' ||g_pre_pact_id);
10952 hr_utility.trace('l_asg_eff_start_date: ' ||l_asg_eff_start_date);
10953 hr_utility.trace('g_start_year: ' ||g_start_year);
10954 hr_utility.trace('g_end_year: ' ||g_end_year);
10955
10956 l_tab_counter := 0;
10957 l_tab_proc_counter := 0;
10958 l_tab_not_proc_counter := 0;
10959 l_archive_det1_counter := 0;
10960 l_archive_det2_counter := 0;
10961 /*l_archive_det1_counter_local := 0;
10962 l_archive_det2_counter_local := 0;*/
10963 -- l_single_payroll_run_exists := 'N';
10964
10965 i_1 := -1;
10966 i_2 := -1;
10967 hr_utility.trace('g_first_fps_run_date: ' ||g_first_fps_run_date);
10968 hr_utility.trace('l_first_fps_eff_date: ' ||l_first_fps_eff_date);
10969
10970 l_single_payroll_run_exists := 1;
10971 OPEN csr_aggr_all_payroll_actions(l_person_id, l_asg_id, l_last_asg_action_id, g_start_year, g_end_year, l_first_fps_eff_date);
10972 FETCH csr_aggr_all_payroll_actions
10973 INTO l_cur_asg_action_id,
10974 l_cur_last_effective_date;
10975
10976 --Raising Exception for the current assignment
10977 if (csr_aggr_all_payroll_actions%NOTFOUND) then
10978 hr_utility.trace('Current Assignment is already processed in an earlier FPS run. Hence, not processing now.');
10979 populate_run_msg(p_assactid, 'Current Assignment '|| l_assignment_number ||' is already processed in an earlier FPS run. Hence, not processing now.','W');
10980 fnd_file.put_line (fnd_file.LOG,'Current Assignment '|| l_assignment_number ||' is already processed in an earlier FPS run. Hence, not processing now.');
10981 raise already_processed;
10982 end if;
10983 --
10984 hr_utility.trace('l_single_payroll_run_exists start point: ' ||l_single_payroll_run_exists);
10985 hr_utility.trace('l_cur_asg_action_id ' ||l_cur_asg_action_id);
10986
10987 l_payroll_asg_acts(l_tab_counter) := l_cur_asg_action_id;
10988 begin
10989 select ppa.payroll_action_id into l_oth_min_pre_pay_id from
10990 pay_action_interlocks pai,
10991 pay_payroll_actions ppa,
10992 pay_assignment_actions paa
10993 where
10994 pai.locked_action_id = l_cur_asg_action_id
10995 and pai.locking_action_id = paa.assignment_action_id
10996 and ppa.payroll_action_id = paa.payroll_action_id
10997 and ppa.action_type in ('P','U');
10998 exception
10999 when others then
11000 hr_utility.trace('error : ' || sqlerrm);
11001 hr_utility.trace('Pre pay is not run for the l_cur_asg_action_id :-' ||l_cur_asg_action_id);
11002 l_oth_min_pre_pay_id := g_pre_pact_id;
11003 end;
11004 hr_utility.trace('l_oth_min_pre_pay_id: ' ||l_oth_min_pre_pay_id);
11005
11006 hr_utility.trace('l_tab_counter: ' ||l_tab_counter);
11007 hr_utility.trace('l_payroll_asg_acts(l_tab_counter): ' ||l_payroll_asg_acts(l_tab_counter));
11008 l_tab_counter := l_tab_counter + 1;
11009
11010 l_proc_in_prepay(l_tab_proc_counter) := l_cur_asg_action_id;
11011 hr_utility.trace('l_tab_proc_counter: ' ||l_tab_proc_counter);
11012 hr_utility.trace('l_proc_in_prepay(l_tab_proc_counter): ' ||l_proc_in_prepay(l_tab_proc_counter));
11013 l_tab_proc_counter := l_tab_proc_counter + 1;
11014
11015 OPEN csr_aggr_min_act_id(l_person_id, l_oth_min_pre_pay_id,g_effective_date);
11016 FETCH csr_aggr_min_act_id
11017 INTO l_asg_act_count,
11018 l_aggr_min_act_id;
11019 CLOSE csr_aggr_min_act_id;
11020
11021 hr_utility.trace('l_asg_act_count: ' ||l_asg_act_count);
11022 hr_utility.trace('l_aggr_min_act_id: ' ||l_aggr_min_act_id);
11023
11024 --if (l_asg_act_count > 1) then
11025 if (l_asg_act_count > 1) and (l_cur_asg_action_id > l_aggr_min_act_id) then
11026 l_cur_asg_action_id := l_aggr_min_act_id;
11027 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
11028 end if;
11029
11030 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
11031 hr_utility.trace('l_cur_last_effective_date: ' ||l_cur_last_effective_date);
11032 loop
11033 hr_utility.trace('Entered Main Loop ');
11034 EXIT WHEN csr_aggr_all_payroll_actions%NOTFOUND;
11035 --prepayment run check starts here
11036 hr_utility.trace('Before csr_aggr_sequence_id');
11037 OPEN csr_chk_prepayment_run(l_cur_asg_action_id);
11038 FETCH csr_chk_prepayment_run
11039 INTO l_chk_prepayment_run;
11040 hr_utility.trace('l_chk_prepayment_run: ' ||l_chk_prepayment_run);
11041 CLOSE csr_chk_prepayment_run;
11042 if(l_chk_prepayment_run is null or l_chk_prepayment_run = 0)then
11043 --raise prepayment error
11044
11045 OPEN csr_asg_num(l_cur_asg_action_id, l_cur_last_effective_date);
11046 FETCH csr_asg_num INTO l_assignment_number;
11047 CLOSE csr_asg_num;
11048
11049 hr_utility.set_location('Pre payment is not run for asg action id: '|| l_cur_asg_action_id,999);
11050 populate_run_msg(p_assactid, ' Pre payment is not run for the assignment '||l_assignment_number||' (asg action id: '|| l_cur_asg_action_id||')');
11051 fnd_file.put_line (fnd_file.LOG,' Pre payment is not run for the assignment '||l_assignment_number||' (asg action id: '|| l_cur_asg_action_id||')');
11052 raise error_found;
11053
11054 --prepayment run check ends here
11055 else
11056
11057 hr_utility.trace('Before csr_aggr_sequence_id');
11058 OPEN csr_aggr_sequence_id(l_cur_asg_action_id);
11059 FETCH csr_aggr_sequence_id
11060 INTO l_aggr_sequence_id;
11061
11062 hr_utility.trace('l_aggr_sequence_id: ' ||l_aggr_sequence_id);
11063 CLOSE csr_aggr_sequence_id;
11064
11065 if (l_asg_act_count > 1) then
11066 if (l_prepay_master_counter = 1) then
11067 OPEN csr_aggr_master_id(l_cur_asg_action_id);
11068 FETCH csr_aggr_master_id
11069 INTO l_payroll_master_asgactid;
11070 CLOSE csr_aggr_master_id;
11071 else
11072 l_payroll_master_asgactid := l_payroll_master_asgactid;
11073 end if;
11074 l_prepay_master_counter := l_prepay_master_counter + 1;
11075 end if;
11076
11077 hr_utility.trace('Before csr_aggr_locking_asg_act_id');
11078
11079 OPEN csr_aggr_locking_asg_act_id(l_person_id, l_aggr_sequence_id);
11080 FETCH csr_aggr_locking_asg_act_id
11081 INTO l_aggr_locking_asg_act_id;
11082 hr_utility.trace('l_aggr_locking_asg_act_id: ' ||l_aggr_locking_asg_act_id);
11083
11084 l_payroll_asg_acts(l_tab_counter) := l_cur_asg_action_id;
11085 hr_utility.trace('l_tab_counter: ' ||l_tab_counter);
11086 hr_utility.trace('l_payroll_asg_acts(l_tab_counter): ' ||l_payroll_asg_acts(l_tab_counter));
11087 l_tab_counter := l_tab_counter + 1;
11088
11089 hr_utility.trace('l_prepay_asg_action_id: ' ||l_prepay_asg_action_id);
11090 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
11091
11092 OPEN csr_get_asg_id(l_cur_asg_action_id);
11093 FETCH csr_get_asg_id
11094 INTO l_cur_asg_id;
11095 CLOSE csr_get_asg_id;
11096
11097 l_processed_in_prepayment := 'N';
11098 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
11099 hr_utility.trace('l_prepay_asg_action_id: ' ||l_prepay_asg_action_id);
11100 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
11101 hr_utility.trace('l_payroll_master_asgactid: ' ||l_payroll_master_asgactid);
11102
11103 OPEN csr_processed_in_prepayment(l_prepay_asg_action_id, l_cur_asg_action_id, l_payroll_master_asgactid);
11104 FETCH csr_processed_in_prepayment
11105 INTO l_processed_in_prepayment;
11106
11107 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
11108
11109 --Fix for the bug 16409794 starts here
11110 l_fps_action_exists := 'N';
11111 OPEN csr_fps_action_exists(l_cur_asg_id,g_payroll_action_id);
11112 FETCH csr_fps_action_exists
11113 INTO l_fps_action_exists;
11114 CLOSE csr_fps_action_exists;
11115
11116 if (l_fps_action_exists = 'Y') then
11117 --Fix for the bug 16409794 ends here
11118
11119 -- get the assignment action id for the current assginment id.
11120 select paa.assignment_action_id into l_assact_id from pay_assignment_actions paa
11121 where paa.payroll_action_id = g_payroll_action_id
11122 and paa.assignment_id = l_cur_asg_id;
11123
11124 if (nvl(l_processed_in_prepayment, 'N') <> 'Y') then
11125
11126 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
11127 l_not_proc_in_prepay(l_tab_not_proc_counter) := l_cur_asg_action_id;
11128 hr_utility.trace('l_tab_not_proc_counter: ' ||l_tab_not_proc_counter);
11129 hr_utility.trace('l_not_proc_in_prepay(l_tab_not_proc_counter): ' ||l_not_proc_in_prepay(l_tab_not_proc_counter));
11130 l_tab_not_proc_counter := l_tab_not_proc_counter + 1;
11131
11132 --Fetching assignments details for FPS
11133 hr_utility.set_location('Fetching Assignment details ',30);
11134 hr_utility.trace('l_asg_eff_start_date: ' ||l_asg_eff_start_date);
11135 hr_utility.trace('g_effective_date: ' ||g_effective_date);
11136 hr_utility.trace('p_assactid: ' ||p_assactid);
11137 hr_utility.trace('l_last_asg_action_id: ' ||l_last_asg_action_id);
11138 --l_archive_det1_counter := l_archive_det1_counter + 1;
11139 --l_archive_det2_counter := l_archive_det2_counter + 1;
11140
11141 open chk_processed_in_prepay(l_cur_asg_action_id);
11142 fetch chk_processed_in_prepay into l_cur_asg_pre_pay_act_id;
11143 close chk_processed_in_prepay;
11144
11145 open csr_prepay_payrol_act(l_cur_asg_pre_pay_act_id);
11146 fetch csr_prepay_payrol_act into l_cur_prepay_payroll_action_id;
11147 close csr_prepay_payrol_act;
11148
11149 hr_utility.set_location('l_cur_asg_action_id: '||l_cur_asg_action_id,999);
11150 hr_utility.set_location('l_cur_asg_pre_pay_act_id: '||l_cur_asg_pre_pay_act_id,999);
11151 hr_utility.set_location('l_cur_prepay_payroll_action_id: '||l_cur_prepay_payroll_action_id,999);
11152 hr_utility.set_location('l_person_id: '||l_person_id,999);
11153 hr_utility.set_location('g_effective_date: '||g_effective_date,999);
11154
11155 l_bacs_payment_exists := 'N';
11156
11157 OPEN csr_bacs_payment_exists (l_cur_prepay_payroll_action_id,l_cur_asg_pre_pay_act_id);
11158 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
11159 CLOSE csr_bacs_payment_exists;
11160
11161 hr_utility.set_location('l_bacs_payment_exists: '||l_bacs_payment_exists,999);
11162 hr_utility.trace('Fetching HASH Code Inside if');
11163 l_hash_code := NULL;
11164
11165 /*
11166 Below we are calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS for any other prepayment.
11167 This may be needed incase if the Prepayment is run prior to 30 days from sysdate.
11168 All Prepayments ran within 30 days are already processed in Range_Cursor to generate the HASH CODE.
11169 */
11170
11171 BEGIN
11172 IF (l_bacs_payment_exists = 'Y') THEN
11173 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS from Archive');
11174 l_dummy := PAY_GB_FPS_NI_AND_OTHERS_13.FPS_BACS_PREPROCESS(l_cur_prepay_payroll_action_id, 'FPS');
11175 hr_utility.trace('After calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS from Archive');
11176 --l_hash_code := pay_gb_fps_ni_and_others.fetch_hash_fps_asg (l_cur_prepay_payroll_action_id, l_cur_asg_id, l_large_bacs_payment);
11177 l_hash_code := pay_gb_fps_ni_and_others_13.fetch_hash_fps_per (l_cur_prepay_payroll_action_id, l_person_id,l_large_bacs_payment,l_bacs_large_asg_id);
11178 ELSE
11179 l_hash_code := NULL;
11180 END IF;
11181 EXCEPTION
11182 WHEN others THEN
11183 populate_run_msg (p_assactid,'Hash error1 '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
11184 fnd_file.put_line (fnd_file.log,'Hash error1 '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
11185 raise_application_error(-20001,'Hash error1 '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
11186 END;
11187
11188 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
11189 hr_utility.trace('l_hash_code: '||l_hash_code);
11190 ---
11191
11192 OPEN csr_total_payment (l_cur_asg_pre_pay_act_id);
11193 FETCH csr_total_payment INTO l_total_payment;
11194 CLOSE csr_total_payment;
11195
11196 hr_utility.trace('l_total_payment: '||l_total_payment);
11197 hr_utility.trace('l_bacs_large_asg_id: '||l_bacs_large_asg_id);
11198 hr_utility.trace('l_cur_asg_id: '||l_cur_asg_id);
11199
11200 if l_bacs_large_asg_id <> l_cur_asg_id then
11201 l_large_bacs_payment := 0;
11202 end if;
11203 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
11204
11205 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
11206
11207 l_archive_asg_det1 := fetch_fps_aggr_asg_det1(l_asg_eff_start_date,
11208 g_effective_date,
11209 p_assactid,
11210 l_cur_asg_action_id,
11211 'Y',
11212 l_archive_tab(0),
11213 l_archive_tab_det1(l_archive_det1_counter));
11214
11215
11216 /*
11217 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
11218 l_archive_tab(0).assignment_id,
11219 g_effective_date,
11220 l_archive_tab_det3(0));*/
11221
11222 hr_utility.set_location('Agg Fetching Details3',30);
11223 l_archive_asg_det1 := fetch_asg_det3( l_archive_tab(0).assignment_id,
11224 l_cur_asg_action_id,
11225 l_archive_tab_det3(0));
11226 hr_utility.set_location('End Agg Fetching Details3',30);
11227
11228 l_archive_tab_det1(l_archive_det1_counter).assignment_id := l_cur_asg_id;
11229 l_archive_tab_det1(l_archive_det1_counter).action_info_category := 'GB_RTI_FPS_ASG_DET1';
11230 hr_utility.trace('l_archive_det1_counter: ' ||l_archive_det1_counter);
11231 hr_utility.trace('l_archive_det2_counter: ' ||l_archive_det2_counter);
11232
11233 hr_utility.set_location('Assignment Hash Code to archive record5',30);
11234 l_archive_tab_det1(l_archive_det1_counter).act_info28 := l_hash_code;
11235 -- fetch assignment details 2 related to balances.
11236 l_archive_tab_det2(l_archive_det2_counter).assignment_id := l_cur_asg_id;
11237 l_archive_tab_det2(l_archive_det2_counter).action_info_category := 'GB_RTI_FPS_ASG_DET2';
11238 l_archive_asg_det2 := fetch_fps_agg_asg_det2(l_cur_asg_action_id,l_cur_asg_id,l_archive_tab_det2(l_archive_det2_counter));
11239
11240 if (l_archive_asg_det1 and l_archive_asg_det2) then
11241
11242 select count(*)
11243 into l_rec_count
11244 from PAY_GB_FPS_DETAILS
11245 where ASSIGNMENT_ID = l_asg_id
11246 and PERSON_ID = l_person_id
11247 and PAYROLL_ASG_ACT_ID = l_cur_asg_action_id;
11248
11249 if l_rec_count = 0 then
11250 hr_utility.set_location('1 inserting',999);
11251 hr_utility.set_location('1 l_cur_asg_id: '||l_cur_asg_id,999);
11252 hr_utility.set_location('1 p_assactid: '||p_assactid,999);
11253 hr_utility.set_location('1 l_cur_asg_action_id: '||l_cur_asg_action_id,999);
11254 hr_utility.set_location('1 inserting',999);
11255
11256 OPEN csr_aggr_max_act_id(l_person_id, l_cur_prepay_payroll_action_id,g_effective_date);
11257 FETCH csr_aggr_max_act_id
11258 INTO l_asact_count_prepayed,
11259 l_aggr_max_act_id;
11260 CLOSE csr_aggr_max_act_id;
11261
11262 hr_utility.trace('l_asact_count_prepayed: ' ||l_asact_count_prepayed);
11263 hr_utility.trace('l_aggr_max_act_id: ' ||l_aggr_max_act_id);
11264
11265 l_report_det1_det2_flag := 'N';
11266
11267 if (l_cur_asg_action_id = l_aggr_max_act_id) then
11268 l_report_det1_det2_flag := 'Y';
11269 hr_utility.trace('l_report_det1_det2_flag: ' ||l_report_det1_det2_flag);
11270 end if;
11271
11272 -- archive the pre pay asg act id
11273 l_archive_tab_det1(l_archive_det1_counter).act_info27 := 'Y';
11274 l_archive_tab_det1(l_archive_det1_counter).act_info29 := l_cur_prepay_payroll_action_id||','||l_cur_asg_action_id;
11275 l_archive_tab_det2(l_archive_det2_counter).act_info29 := l_cur_prepay_payroll_action_id||','||l_cur_asg_action_id;
11276 l_archive_tab_det1(l_archive_det1_counter).act_info30 := l_report_det1_det2_flag;
11277 l_archive_tab_det2(l_archive_det2_counter).act_info30 := l_report_det1_det2_flag;
11278
11279 /* -- lock the pre payments action id with current fps assignment action id
11280 begin
11281 hr_nonrun_asact.insint(p_assactid, l_cur_asg_pre_pay_act_id);
11282 exception
11283 when dup_val_on_index then
11284 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
11285 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_cur_asg_pre_pay_act_id,60);
11286 end;
11287 */
11288 INSERT
11289 INTO PAY_GB_FPS_DETAILS
11290 (
11291 ASSIGNMENT_ID,
11292 PERSON_ID,
11293 FPS_ASG_ACT_ID,
11294 FPS_PAY_ACT_ID,
11295 FPS_EFFECTIVE_DATE,
11296 PREPAY_ASG_ACT_ID,
11297 PREPAY_PAY_ACT_ID,
11298 PREPAY_EFFECTIVE_DATE,
11299 PAYROLL_ASG_ACT_ID,
11300 PAYROLL_PAY_ACT_ID,
11301 PAYROLL_EFFECTIVE_DATE
11302 )
11303 VALUES
11304 (
11305 l_cur_asg_id,
11306 l_person_id,
11307 l_assact_id,
11308 g_payroll_action_id,
11309 g_fps_effective_date,
11310 l_cur_asg_pre_pay_act_id,
11311 l_cur_prepay_payroll_action_id,
11312 l_prepay_effective_date,
11313 l_cur_asg_action_id,
11314 l_payroll_pact_id,
11315 l_last_effective_date
11316 );
11317
11318 end if;
11319 end if;
11320 l_ni_emp_run := 0;
11321 -- for ni balances
11322 pay_gb_fps_ni_and_others_13.get_ni_bal_paye_aggr_for_asg(l_cur_asg_id,
11323 l_cur_asg_action_id,
11324 p_ni_a_balance,
11325 p_ni_b_balance,
11326 p_ni_c_balance,
11327 p_ni_d_balance,
11328 p_ni_e_balance,
11329 p_ni_j_balance,
11330 p_ni_l_balance);
11331 IF (p_ni_a_balance.act_info1 IS NOT NULL and p_ni_a_balance.assignment_id = l_cur_asg_id) THEN
11332 IF already_a = -1 THEN
11333 i_1 := i_1 +1;
11334 already_a := i_1;
11335 END IF;
11336
11337 l_archive_tab_ni_det(already_a).assignment_id := l_cur_asg_id;
11338 l_archive_tab_ni_det(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
11339 l_archive_tab_ni_det(already_a).act_info1 := p_ni_a_balance.act_info1;
11340 l_archive_tab_ni_det(already_a).act_info2 := NVL(l_archive_tab_ni_det(already_a).act_info2 ,0) + p_ni_a_balance.act_info2;
11341 l_archive_tab_ni_det(already_a).act_info3 := p_ni_a_balance.act_info3;
11342 l_archive_tab_ni_det(already_a).act_info4 := p_ni_a_balance.act_info4;
11343 l_archive_tab_ni_det(already_a).act_info5 := p_ni_a_balance.act_info5;
11344 l_archive_tab_ni_det(already_a).act_info6 := p_ni_a_balance.act_info6;
11345 l_archive_tab_ni_det(already_a).act_info7 := p_ni_a_balance.act_info7;
11346 l_archive_tab_ni_det(already_a).act_info8 := p_ni_a_balance.act_info8;
11347 l_archive_tab_ni_det(already_a).act_info9 := NVL(l_archive_tab_ni_det(already_a).act_info9 ,0) + p_ni_a_balance.act_info9;
11348 l_archive_tab_ni_det(already_a).act_info10 := NVL(l_archive_tab_ni_det(already_a).act_info10 ,0) + p_ni_a_balance.act_info10;
11349 l_ni_emp_run := l_ni_emp_run + p_ni_a_balance.act_info10;
11350 l_archive_tab_ni_det(already_a).act_info11 := p_ni_a_balance.act_info11;
11351 l_archive_tab_ni_det(already_a).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11352
11353 END IF;
11354 -- For Category B
11355 IF (p_ni_b_balance.act_info1 IS NOT NULL and p_ni_b_balance.assignment_id = l_cur_asg_id) THEN
11356 IF already_b = -1 THEN
11357 i_1 := i_1 +1;
11358 already_b := i_1;
11359 END IF;
11360 l_archive_tab_ni_det(already_b).assignment_id := l_cur_asg_id;
11361 l_archive_tab_ni_det(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
11362 l_archive_tab_ni_det(already_b).act_info1 := p_ni_b_balance.act_info1;
11363 l_archive_tab_ni_det(already_b).act_info2 := NVL(l_archive_tab_ni_det(already_b).act_info2,0) + p_ni_b_balance.act_info2;
11364 l_archive_tab_ni_det(already_b).act_info3 := p_ni_b_balance.act_info3;
11365 l_archive_tab_ni_det(already_b).act_info4 := p_ni_b_balance.act_info4;
11366 l_archive_tab_ni_det(already_b).act_info5 := p_ni_b_balance.act_info5;
11367 l_archive_tab_ni_det(already_b).act_info6 := p_ni_b_balance.act_info6;
11368 l_archive_tab_ni_det(already_b).act_info7 := p_ni_b_balance.act_info7;
11369 l_archive_tab_ni_det(already_b).act_info8 := p_ni_b_balance.act_info8;
11370 l_archive_tab_ni_det(already_b).act_info9 := NVL(l_archive_tab_ni_det(already_b).act_info9 ,0) + p_ni_b_balance.act_info9;
11371 l_archive_tab_ni_det(already_b).act_info10 := NVL(l_archive_tab_ni_det(already_b).act_info10 ,0) + p_ni_b_balance.act_info10;
11372 l_ni_emp_run := l_ni_emp_run + p_ni_b_balance.act_info10;
11373 l_archive_tab_ni_det(already_b).act_info11 := p_ni_b_balance.act_info11;
11374 l_archive_tab_ni_det(already_b).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11375 END IF;
11376 -- For Category C
11377 IF (p_ni_c_balance.act_info1 IS NOT NULL and p_ni_c_balance.assignment_id = l_cur_asg_id) THEN
11378 IF already_c = -1 THEN
11379 i_1 := i_1 +1;
11380 already_c := i_1;
11381 END IF;
11382 l_archive_tab_ni_det(already_c).assignment_id := l_cur_asg_id;
11383 l_archive_tab_ni_det(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
11384 l_archive_tab_ni_det(already_c).act_info1 := p_ni_c_balance.act_info1;
11385 l_archive_tab_ni_det(already_c).act_info2 := NVL(l_archive_tab_ni_det(already_c).act_info2,0) + p_ni_c_balance.act_info2;
11386 l_archive_tab_ni_det(already_c).act_info3 := p_ni_c_balance.act_info3;
11387 l_archive_tab_ni_det(already_c).act_info4 := p_ni_c_balance.act_info4;
11388 l_archive_tab_ni_det(already_c).act_info5 := p_ni_c_balance.act_info5;
11389 l_archive_tab_ni_det(already_c).act_info6 := p_ni_c_balance.act_info6;
11390 l_archive_tab_ni_det(already_c).act_info7 := p_ni_c_balance.act_info7;
11391 l_archive_tab_ni_det(already_c).act_info8 := p_ni_c_balance.act_info8;
11392 l_archive_tab_ni_det(already_c).act_info9 := NVL(l_archive_tab_ni_det(already_c).act_info9 ,0) + p_ni_c_balance.act_info9;
11393 l_archive_tab_ni_det(already_c).act_info10 := NVL(l_archive_tab_ni_det(already_c).act_info10 ,0) + p_ni_c_balance.act_info10;
11394 l_ni_emp_run := l_ni_emp_run + p_ni_c_balance.act_info10;
11395 l_archive_tab_ni_det(already_c).act_info11 := p_ni_c_balance.act_info11;
11396 l_archive_tab_ni_det(already_c).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11397
11398 END IF;
11399 --For Category D
11400 IF (p_ni_d_balance.act_info1 IS NOT NULL and p_ni_d_balance.assignment_id = l_cur_asg_id) THEN
11401 IF already_d = -1 THEN
11402 i_1 := i_1 +1;
11403 already_d := i_1;
11404 END IF;
11405 l_archive_tab_ni_det(already_d).assignment_id := l_cur_asg_id;
11406 l_archive_tab_ni_det(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
11407 l_archive_tab_ni_det(already_d).act_info1 := p_ni_d_balance.act_info1;
11408 l_archive_tab_ni_det(already_d).act_info2 := NVL(l_archive_tab_ni_det(already_d).act_info2,0) + p_ni_d_balance.act_info2;
11409 l_archive_tab_ni_det(already_d).act_info3 := p_ni_d_balance.act_info3;
11410 l_archive_tab_ni_det(already_d).act_info4 := p_ni_d_balance.act_info4;
11411 l_archive_tab_ni_det(already_d).act_info5 := p_ni_d_balance.act_info5;
11412 l_archive_tab_ni_det(already_d).act_info6 := p_ni_d_balance.act_info6;
11413 l_archive_tab_ni_det(already_d).act_info7 := p_ni_d_balance.act_info7;
11414 l_archive_tab_ni_det(already_d).act_info8 := p_ni_d_balance.act_info8;
11415 l_archive_tab_ni_det(already_d).act_info9 := NVL(l_archive_tab_ni_det(already_d).act_info9,0) + p_ni_d_balance.act_info9;
11416 l_archive_tab_ni_det(already_d).act_info10 := NVL(l_archive_tab_ni_det(already_d).act_info10,0) + p_ni_d_balance.act_info10;
11417 l_ni_emp_run := l_ni_emp_run + p_ni_d_balance.act_info10;
11418 l_archive_tab_ni_det(already_d).act_info11 := p_ni_d_balance.act_info11;
11419 l_archive_tab_ni_det(already_d).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11420 END IF;
11421 -- For Category E
11422 IF (p_ni_e_balance.act_info1 IS NOT NULL and p_ni_e_balance.assignment_id = l_cur_asg_id) THEN
11423 IF already_e = -1 THEN
11424 i_1 := i_1 +1;
11425 already_e := i_1;
11426 END IF;
11427 l_archive_tab_ni_det(already_e).assignment_id := l_cur_asg_id;
11428 l_archive_tab_ni_det(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
11429 l_archive_tab_ni_det(already_e).act_info1 := p_ni_e_balance.act_info1;
11430 l_archive_tab_ni_det(already_e).act_info2 := NVL(l_archive_tab_ni_det(already_e).act_info2,0) + p_ni_e_balance.act_info2;
11431 l_archive_tab_ni_det(already_e).act_info3 := p_ni_e_balance.act_info3;
11432 l_archive_tab_ni_det(already_e).act_info4 := p_ni_e_balance.act_info4;
11433 l_archive_tab_ni_det(already_e).act_info5 := p_ni_e_balance.act_info5;
11434 l_archive_tab_ni_det(already_e).act_info6 := p_ni_e_balance.act_info6;
11435 l_archive_tab_ni_det(already_e).act_info7 := p_ni_e_balance.act_info7;
11436 l_archive_tab_ni_det(already_e).act_info8 := p_ni_e_balance.act_info8;
11437 l_archive_tab_ni_det(already_e).act_info9 := NVL(l_archive_tab_ni_det(already_e).act_info9 ,0) + p_ni_e_balance.act_info9;
11438 l_archive_tab_ni_det(already_e).act_info10 := NVL(l_archive_tab_ni_det(already_e).act_info10 ,0) + p_ni_e_balance.act_info10;
11439 l_ni_emp_run := l_ni_emp_run + p_ni_e_balance.act_info10;
11440 l_archive_tab_ni_det(already_e).act_info11 := p_ni_e_balance.act_info11;
11441 l_archive_tab_ni_det(already_e).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11442 END IF;
11443 -- For Category J
11444 IF (p_ni_j_balance.act_info1 IS NOT NULL and p_ni_j_balance.assignment_id = l_cur_asg_id) THEN
11445 IF already_j = -1 THEN
11446 i_1 := i_1+1;
11447 already_j := i_1;
11448 END IF;
11449 l_archive_tab_ni_det(already_j).assignment_id := l_cur_asg_id;
11450 l_archive_tab_ni_det(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
11451 l_archive_tab_ni_det(already_j).act_info1 := p_ni_j_balance.act_info1;
11452 l_archive_tab_ni_det(already_j).act_info2 := NVL(l_archive_tab_ni_det(already_j).act_info2 ,0) + p_ni_j_balance.act_info2;
11453 l_archive_tab_ni_det(already_j).act_info3 := p_ni_j_balance.act_info3;
11454 l_archive_tab_ni_det(already_j).act_info4 := p_ni_j_balance.act_info4;
11455 l_archive_tab_ni_det(already_j).act_info5 := p_ni_j_balance.act_info5;
11456 l_archive_tab_ni_det(already_j).act_info6 := p_ni_j_balance.act_info6;
11457 l_archive_tab_ni_det(already_j).act_info7 := p_ni_j_balance.act_info7;
11458 l_archive_tab_ni_det(already_j).act_info8 := p_ni_j_balance.act_info8;
11459 l_archive_tab_ni_det(already_j).act_info9 := NVL(l_archive_tab_ni_det(already_j).act_info9 ,0) + p_ni_j_balance.act_info9;
11460 l_archive_tab_ni_det(already_j).act_info10 := NVL(l_archive_tab_ni_det(already_j).act_info10 ,0) + p_ni_j_balance.act_info10;
11461 l_ni_emp_run := l_ni_emp_run + p_ni_j_balance.act_info10;
11462 l_archive_tab_ni_det(already_j).act_info11 := p_ni_j_balance.act_info11;
11463 l_archive_tab_ni_det(already_j).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11464 END IF;
11465 -- For Category L
11466 IF (p_ni_l_balance.act_info1 IS NOT NULL and p_ni_l_balance.assignment_id = l_cur_asg_id) THEN
11467 IF already_l = -1 THEN
11468 i_1 := i_1+1;
11469 already_l := i_1;
11470 END IF;
11471 l_archive_tab_ni_det(already_l).assignment_id := l_cur_asg_id;
11472 l_archive_tab_ni_det(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
11473 l_archive_tab_ni_det(already_l).act_info1 := p_ni_l_balance.act_info1;
11474 l_archive_tab_ni_det(already_l).act_info2 := NVL(l_archive_tab_ni_det(already_l).act_info2,0) + p_ni_l_balance.act_info2;
11475 l_archive_tab_ni_det(already_l).act_info3 := p_ni_l_balance.act_info3;
11476 l_archive_tab_ni_det(already_l).act_info4 := p_ni_l_balance.act_info4;
11477 l_archive_tab_ni_det(already_l).act_info5 := p_ni_l_balance.act_info5;
11478 l_archive_tab_ni_det(already_l).act_info6 := p_ni_l_balance.act_info6;
11479 l_archive_tab_ni_det(already_l).act_info7 := p_ni_l_balance.act_info7;
11480 l_archive_tab_ni_det(already_l).act_info8 := p_ni_l_balance.act_info8;
11481 l_archive_tab_ni_det(already_l).act_info9 := NVL(l_archive_tab_ni_det(already_l).act_info9 ,0) + p_ni_l_balance.act_info9;
11482 l_archive_tab_ni_det(already_l).act_info10 := NVL(l_archive_tab_ni_det(already_l).act_info10 ,0) + p_ni_l_balance.act_info10;
11483 l_ni_emp_run := l_ni_emp_run + p_ni_l_balance.act_info10;
11484 l_archive_tab_ni_det(already_l).act_info11 := p_ni_l_balance.act_info11;
11485 l_archive_tab_ni_det(already_l).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11486 END IF;
11487 --end ni balances
11488
11489 ni_contrib_1 := 0;
11490 ni_contrib_ytd_1 := 0;
11491 FOR k IN 0..i_1
11492 LOOP
11493 hr_utility.trace('k_paye_agg:' || k);
11494 IF l_archive_tab_ni_det(k).act_info10 IS NOT NULL THEN
11495 ni_contrib_1 := NVL(ni_contrib_1,0) + l_archive_tab_ni_det(k).act_info10;
11496 ni_contrib_ytd_1 := NVL(ni_contrib_ytd_1,0) + l_archive_tab_ni_det(k).act_info8;
11497 END IF;
11498 END LOOP;
11499
11500 hr_utility.trace('l_ni_emp_run' ||l_ni_emp_run);
11501 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info8' ||l_archive_tab_det2(l_archive_det2_counter).act_info8);
11502 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info16' ||l_archive_tab_det2(l_archive_det2_counter).act_info16);
11503 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info17' ||l_archive_tab_det2(l_archive_det2_counter).act_info17);
11504 hr_utility.trace('l_non_bacs_payment' ||l_non_bacs_payment);
11505
11506 -- Derive the fields 58B and 59
11507 -- 58B
11508 l_archive_tab_det2(l_archive_det2_counter).act_info8 := NVL(l_archive_tab_det2(l_archive_det2_counter).act_info8,0) -- Prev holds Total Deductions
11509 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
11510 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
11511 - NVL(l_ni_emp_run,0) -- NI
11512 + l_non_bacs_payment;
11513 -- 59
11514 l_archive_tab_det2(l_archive_det2_counter).act_info9 := NVL(l_archive_tab_det2(l_archive_det2_counter).act_info9,0)
11515 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
11516 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
11517 - NVL(l_ni_emp_run,0) -- NI
11518 + NVL(l_archive_tab_det2(l_archive_det2_counter).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
11519 l_archive_tab_det2(l_archive_det2_counter).act_info5 := NVL(ni_contrib_ytd_1,0);
11520 l_archive_tab_det2(l_archive_det2_counter).act_info24 := NVL(ni_contrib_1,0);
11521
11522
11523 --
11524 --Validations needs to be performed for each of the assignments separately
11525 hr_utility.set_location('In PAYE Aggr if Before Calling FPS validations', 10);
11526 pay_gb_rti_fps_validate_13.assignment_validations_aggr(p_assactid,
11527 p_effective_date,
11528 l_archive_tab,
11529 l_archive_tab_det1(l_archive_det1_counter),
11530 l_archive_tab_det2(l_archive_det2_counter),
11531 l_fps_etext_asg_temp_flag);
11532
11533 hr_utility.trace('l_fps_etext_asg_temp_flag' ||l_fps_etext_asg_temp_flag);
11534
11535 IF (l_fps_etext_asg_temp_flag = 'Y' or l_fps_val_err = TRUE) THEN -- If validation fails
11536 l_fps_val_err := TRUE;
11537 END IF;
11538
11539 hr_utility.set_location('In PAYE Aggr if After Calling FPS validations', 10);
11540
11541 --
11542 l_archive_det1_counter := l_archive_det1_counter +1;
11543 l_archive_det2_counter := l_archive_det2_counter + 1;
11544
11545 --
11546 else -- this else is for if (nvl(l_processed_in_prepayment, 'N') <> 'Y') then
11547
11548 hr_utility.trace('Entered Else part of l_processed_in_prepayment: ' ||l_processed_in_prepayment);
11549
11550 l_asg_act_processed_earlier := 0;
11551
11552 hr_utility.trace('l_person_id: ' ||l_person_id);
11553 hr_utility.trace('l_cur_asg_id: ' ||l_cur_asg_id);
11554 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
11555 hr_utility.trace('l_asg_id: ' ||l_asg_id);
11556
11557 OPEN csr_asg_act_processed_earlier(l_person_id, l_cur_asg_id, l_cur_asg_action_id);
11558 FETCH csr_asg_act_processed_earlier
11559 INTO l_asg_act_processed_earlier;
11560 CLOSE csr_asg_act_processed_earlier;
11561
11562 hr_utility.trace('l_asg_act_processed_earlier: ' ||l_asg_act_processed_earlier);
11563
11564 if (nvl(l_asg_act_processed_earlier,-1) <> 0 and l_retry_req_flag is not null ) then
11565 hr_utility.trace('Current Assignment is already processed in an earlier FPS run. Hence, not processing now.');
11566 l_archive_flag := 'N';
11567 populate_run_msg(p_assactid, ' Assignment ' || l_assignment_number|| ' is already processed.','W');
11568 fnd_file.put_line (fnd_file.LOG,' Assignment ' || l_assignment_number|| ' is already processed.');
11569
11570 else --this else is for nvl(l_asg_act_processed_earlier,-1) <> 0
11571
11572 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
11573 l_proc_in_prepay(l_tab_proc_counter) := l_cur_asg_action_id;
11574 hr_utility.trace('l_tab_proc_counter: ' ||l_tab_proc_counter);
11575 hr_utility.trace('l_proc_in_prepay(l_tab_proc_counter): ' ||l_proc_in_prepay(l_tab_proc_counter));
11576 l_tab_proc_counter := l_tab_proc_counter + 1;
11577
11578 --
11579 --Fetching assignments details for FPS
11580 hr_utility.set_location('Fetching Assignment details ',30);
11581
11582 open chk_processed_in_prepay(l_cur_asg_action_id);
11583 fetch chk_processed_in_prepay into l_cur_asg_pre_pay_act_id;
11584 close chk_processed_in_prepay;
11585
11586 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
11587 hr_utility.trace('l_cur_asg_pre_pay_act_id: ' ||l_cur_asg_pre_pay_act_id);
11588
11589 l_bacs_payment_exists := 'N';
11590
11591 OPEN csr_bacs_payment_exists (l_prepay_payroll_action_id,l_cur_asg_pre_pay_act_id);
11592 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
11593 CLOSE csr_bacs_payment_exists;
11594 hr_utility.trace('l_bacs_payment_exists: ' ||l_bacs_payment_exists);
11595 hr_utility.trace('Fetching HASH Code Inside else');
11596 l_hash_code := NULL;
11597 BEGIN
11598 IF (l_bacs_payment_exists = 'Y') THEN
11599 --l_hash_code := pay_gb_fps_ni_and_others.fetch_hash_fps_asg (g_pre_pact_id, l_cur_asg_id, l_large_bacs_payment);
11600 l_hash_code := pay_gb_fps_ni_and_others_13.fetch_hash_fps_per (g_pre_pact_id, l_person_id,l_large_bacs_payment,l_bacs_large_asg_id);
11601 ELSE
11602 l_hash_code := NULL;
11603 END IF;
11604 EXCEPTION
11605 WHEN others THEN
11606 populate_run_msg (p_assactid,'Hash error '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
11607 fnd_file.put_line (fnd_file.log,'Hash error '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
11608 raise_application_error(-20001,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
11609 END;
11610
11611 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
11612 hr_utility.trace('l_hash_code: '||l_hash_code);
11613 ---
11614 OPEN csr_total_payment (l_cur_asg_pre_pay_act_id);
11615 FETCH csr_total_payment INTO l_total_payment;
11616 CLOSE csr_total_payment;
11617
11618 hr_utility.trace('l_total_payment: '||l_total_payment);
11619 hr_utility.trace('l_bacs_large_asg_id: '||l_bacs_large_asg_id);
11620 hr_utility.trace('l_cur_asg_id: '||l_cur_asg_id);
11621
11622 if l_bacs_large_asg_id <> l_cur_asg_id then
11623 l_large_bacs_payment := 0;
11624 end if;
11625 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
11626 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
11627
11628 hr_utility.trace('l_asg_eff_start_date: ' ||l_asg_eff_start_date);
11629 hr_utility.trace('g_effective_date: ' ||g_effective_date);
11630 hr_utility.trace('p_assactid: ' ||p_assactid);
11631 hr_utility.trace('l_last_asg_action_id: ' ||l_last_asg_action_id);
11632 --l_archive_det1_counter := l_archive_det1_counter + 1;
11633 --l_archive_det2_counter := l_archive_det2_counter + 1;
11634 l_archive_asg_det1 := fetch_fps_aggr_asg_det1(l_asg_eff_start_date,
11635 g_effective_date,
11636 p_assactid,
11637 l_cur_asg_action_id,
11638 'Y',
11639 l_archive_tab(0),
11640 l_archive_tab_det1(l_archive_det1_counter));
11641 l_archive_tab_det1(l_archive_det1_counter).assignment_id := l_cur_asg_id;
11642
11643
11644 hr_utility.set_location('one Agg Fetching Details3',30);
11645 l_archive_asg_det1 := fetch_asg_det3( l_archive_tab(0).assignment_id,
11646 l_cur_asg_action_id,
11647 l_archive_tab_det3(0));
11648 hr_utility.set_location('one End Agg Fetching Details3',30);
11649
11650 hr_utility.trace('l_archive_det1_counter: ' ||l_archive_det1_counter);
11651 hr_utility.set_location('Assignment Hash Coode to archive record1',30);
11652 l_archive_tab_det1(l_archive_det1_counter).act_info28 := l_hash_code;
11653 l_archive_tab_det2(l_archive_det2_counter).action_info_category := 'GB_RTI_FPS_ASG_DET2';
11654 l_archive_tab_det2(l_archive_det2_counter).assignment_id := l_cur_asg_id;
11655
11656 hr_utility.trace('test l_archive_det2_counter: ' ||l_archive_det2_counter);
11657
11658 -- l_archive_asg_det2 := fetch_fps_asg_det2(p_assactid,l_asg_id,l_archive_tab_det2_local(l_archive_det2_counter_local));
11659 l_archive_asg_det2 := fetch_fps_agg_asg_det2(l_cur_asg_action_id,l_cur_asg_id,l_archive_tab_det2(l_archive_det2_counter));
11660 hr_utility.trace('2test l_archive_det2_counter: ' ||l_archive_det2_counter);
11661
11662 if (l_archive_asg_det1 and l_archive_asg_det2) then
11663
11664 select count(*)
11665 into l_rec_count
11666 from PAY_GB_FPS_DETAILS
11667 where ASSIGNMENT_ID = l_cur_asg_id
11668 and PERSON_ID = l_person_id
11669 and PAYROLL_ASG_ACT_ID = l_cur_asg_action_id;
11670
11671 if l_rec_count = 0 then
11672 hr_utility.set_location('1 inserting',999);
11673 hr_utility.set_location('1 l_cur_asg_id: '||l_cur_asg_id,999);
11674 hr_utility.set_location('1 p_assactid: '||p_assactid,999);
11675 hr_utility.set_location('1 l_cur_asg_action_id: '||l_cur_asg_action_id,999);
11676 hr_utility.set_location('1 inserting',999);
11677
11678 -- archive the pre pay asg act id
11679 -- l_archive_tab_det1(l_archive_det1_counter).act_info29 := l_prepay_payroll_action_id;
11680 -- l_archive_tab_det2(l_archive_det2_counter).act_info29 := l_prepay_payroll_action_id;
11681
11682 l_archive_tab_det1(l_archive_det1_counter).act_info29 := l_prepay_payroll_action_id||','||l_cur_asg_action_id;
11683 l_archive_tab_det2(l_archive_det2_counter).act_info29 := l_prepay_payroll_action_id||','||l_cur_asg_action_id;
11684
11685 hr_utility.set_location('l_person_id: '||l_person_id,999);
11686 hr_utility.set_location('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id,999);
11687 hr_utility.set_location('g_effective_date: '||g_effective_date,999);
11688
11689 OPEN csr_aggr_max_act_id(l_person_id, l_prepay_payroll_action_id,g_effective_date);
11690 FETCH csr_aggr_max_act_id
11691 INTO l_asact_count_prepayed,
11692 l_aggr_max_act_id;
11693 CLOSE csr_aggr_max_act_id;
11694
11695 hr_utility.trace('l_asact_count_prepayed: ' ||l_asact_count_prepayed);
11696 hr_utility.trace('l_aggr_max_act_id: ' ||l_aggr_max_act_id);
11697
11698 l_report_det1_det2_flag := 'N';
11699
11700 if (l_cur_asg_action_id = l_aggr_max_act_id) then
11701 l_report_det1_det2_flag := 'Y';
11702 hr_utility.trace('l_report_det1_det2_flag: ' ||l_report_det1_det2_flag);
11703 end if;
11704
11705 l_archive_tab_det1(l_archive_det1_counter).act_info27 := 'Y';
11706 l_archive_tab_det1(l_archive_det1_counter).act_info30 := l_report_det1_det2_flag;
11707 l_archive_tab_det2(l_archive_det2_counter).act_info30 := l_report_det1_det2_flag;
11708
11709 /* -- lock the pre payments action id with current fps assignment action id
11710 begin
11711 hr_nonrun_asact.insint(p_assactid, l_cur_asg_pre_pay_act_id);
11712 exception
11713 when dup_val_on_index then
11714 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
11715 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_cur_asg_pre_pay_act_id,60);
11716 end;
11717 */
11718 INSERT
11719 INTO PAY_GB_FPS_DETAILS
11720 (
11721 ASSIGNMENT_ID,
11722 PERSON_ID,
11723 FPS_ASG_ACT_ID,
11724 FPS_PAY_ACT_ID,
11725 FPS_EFFECTIVE_DATE,
11726 PREPAY_ASG_ACT_ID,
11727 PREPAY_PAY_ACT_ID,
11728 PREPAY_EFFECTIVE_DATE,
11729 PAYROLL_ASG_ACT_ID,
11730 PAYROLL_PAY_ACT_ID,
11731 PAYROLL_EFFECTIVE_DATE
11732 )
11733 VALUES
11734 (
11735 l_cur_asg_id,
11736 l_person_id,
11737 l_assact_id,
11738 g_payroll_action_id,
11739 g_fps_effective_date,
11740 l_cur_asg_pre_pay_act_id,
11741 l_prepay_payroll_action_id,
11742 l_prepay_effective_date,
11743 l_cur_asg_action_id,
11744 l_payroll_pact_id,
11745 l_last_effective_date
11746 );
11747
11748 end if;
11749 end if;
11750 l_ni_emp_run := 0;
11751 -- for ni balances
11752 pay_gb_fps_ni_and_others_13.get_ni_bal_paye_aggr_for_asg(l_cur_asg_id,
11753 l_cur_asg_action_id,
11754 p_ni_a_balance,
11755 p_ni_b_balance,
11756 p_ni_c_balance,
11757 p_ni_d_balance,
11758 p_ni_e_balance,
11759 p_ni_j_balance,
11760 p_ni_l_balance);
11761 IF (p_ni_a_balance.act_info1 IS NOT NULL and p_ni_a_balance.assignment_id = l_cur_asg_id) THEN
11762 IF already_a1 = -1 THEN
11763 i_2 := i_2 +1;
11764 already_a1 := i_2;
11765 END IF;
11766
11767 l_archive_tab_ni_det_1(already_a1).assignment_id := l_cur_asg_id;
11768 l_archive_tab_ni_det_1(already_a1).action_info_category := 'GB_RTI_FPS_NI_DET';
11769 l_archive_tab_ni_det_1(already_a1).act_info1 := p_ni_a_balance.act_info1;
11770 l_archive_tab_ni_det_1(already_a1).act_info2 := NVL(l_archive_tab_ni_det_1(already_a1).act_info2,0) + p_ni_a_balance.act_info2;
11771 l_archive_tab_ni_det_1(already_a1).act_info3 := p_ni_a_balance.act_info3;
11772 l_archive_tab_ni_det_1(already_a1).act_info4 := p_ni_a_balance.act_info4;
11773 l_archive_tab_ni_det_1(already_a1).act_info5 := p_ni_a_balance.act_info5;
11774 l_archive_tab_ni_det_1(already_a1).act_info6 := p_ni_a_balance.act_info6;
11775 l_archive_tab_ni_det_1(already_a1).act_info7 := p_ni_a_balance.act_info7;
11776 l_archive_tab_ni_det_1(already_a1).act_info8 := p_ni_a_balance.act_info8;
11777 l_archive_tab_ni_det_1(already_a1).act_info9 := NVL(l_archive_tab_ni_det_1(already_a1).act_info9 ,0) + p_ni_a_balance.act_info9;
11778 l_archive_tab_ni_det_1(already_a1).act_info10 := NVL(l_archive_tab_ni_det_1(already_a1).act_info10 ,0) + p_ni_a_balance.act_info10;
11779 l_ni_emp_run := l_ni_emp_run + p_ni_a_balance.act_info10;
11780 l_archive_tab_ni_det_1(already_a1).act_info11 := p_ni_a_balance.act_info11;
11781 l_archive_tab_ni_det_1(already_a1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11782
11783 END IF;
11784 -- For Category B
11785 IF (p_ni_b_balance.act_info1 IS NOT NULL and p_ni_b_balance.assignment_id = l_cur_asg_id) THEN
11786 IF already_b1 = -1 THEN
11787 i_2 := i_2 +1;
11788 already_b1 := i_2;
11789 END IF;
11790 l_archive_tab_ni_det_1(already_b1).assignment_id := l_cur_asg_id;
11791 l_archive_tab_ni_det_1(already_b1).action_info_category := 'GB_RTI_FPS_NI_DET';
11792 l_archive_tab_ni_det_1(already_b1).act_info1 := p_ni_b_balance.act_info1;
11793 l_archive_tab_ni_det_1(already_b1).act_info2 := NVL(l_archive_tab_ni_det_1(already_b1).act_info2,0) + p_ni_b_balance.act_info2;
11794 l_archive_tab_ni_det_1(already_b1).act_info3 := p_ni_b_balance.act_info3;
11795 l_archive_tab_ni_det_1(already_b1).act_info4 := p_ni_b_balance.act_info4;
11796 l_archive_tab_ni_det_1(already_b1).act_info5 := p_ni_b_balance.act_info5;
11797 l_archive_tab_ni_det_1(already_b1).act_info6 := p_ni_b_balance.act_info6;
11798 l_archive_tab_ni_det_1(already_b1).act_info7 := p_ni_b_balance.act_info7;
11799 l_archive_tab_ni_det_1(already_b1).act_info8 := p_ni_b_balance.act_info8;
11800 l_archive_tab_ni_det_1(already_b1).act_info9 := NVL(l_archive_tab_ni_det_1(already_b1).act_info9 ,0) + p_ni_b_balance.act_info9;
11801 l_archive_tab_ni_det_1(already_b1).act_info10 := NVL(l_archive_tab_ni_det_1(already_b1).act_info10 ,0) + p_ni_b_balance.act_info10;
11802 l_ni_emp_run := l_ni_emp_run + p_ni_b_balance.act_info10;
11803 l_archive_tab_ni_det_1(already_b1).act_info11 := p_ni_b_balance.act_info11;
11804 l_archive_tab_ni_det_1(already_b1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11805 END IF;
11806 -- For Category C
11807 IF (p_ni_c_balance.act_info1 IS NOT NULL and p_ni_c_balance.assignment_id = l_cur_asg_id) THEN
11808 IF already_c1 = -1 THEN
11809 i_2 := i_2 +1;
11810 already_c1 := i_2;
11811 END IF;
11812 l_archive_tab_ni_det_1(already_c1).assignment_id := l_cur_asg_id;
11813 l_archive_tab_ni_det_1(already_c1).action_info_category := 'GB_RTI_FPS_NI_DET';
11814 l_archive_tab_ni_det_1(already_c1).act_info1 := p_ni_c_balance.act_info1;
11815 l_archive_tab_ni_det_1(already_c1).act_info2 := NVL(l_archive_tab_ni_det_1(already_c1).act_info2,0) + p_ni_c_balance.act_info2;
11816 l_archive_tab_ni_det_1(already_c1).act_info3 := p_ni_c_balance.act_info3;
11817 l_archive_tab_ni_det_1(already_c1).act_info4 := p_ni_c_balance.act_info4;
11818 l_archive_tab_ni_det_1(already_c1).act_info5 := p_ni_c_balance.act_info5;
11819 l_archive_tab_ni_det_1(already_c1).act_info6 := p_ni_c_balance.act_info6;
11820 l_archive_tab_ni_det_1(already_c1).act_info7 := p_ni_c_balance.act_info7;
11821 l_archive_tab_ni_det_1(already_c1).act_info8 := p_ni_c_balance.act_info8;
11822 l_archive_tab_ni_det_1(already_c1).act_info9 := NVL(l_archive_tab_ni_det_1(already_c1).act_info9 ,0) + p_ni_c_balance.act_info9;
11823 l_archive_tab_ni_det_1(already_c1).act_info10 := NVL(l_archive_tab_ni_det_1(already_c1).act_info10 ,0) + p_ni_c_balance.act_info10;
11824 l_ni_emp_run := l_ni_emp_run + p_ni_c_balance.act_info10;
11825 l_archive_tab_ni_det_1(already_c1).act_info11 := p_ni_c_balance.act_info11;
11826 l_archive_tab_ni_det_1(already_c1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11827 END IF;
11828 --For Category D
11829
11830 -- IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
11831 IF (p_ni_d_balance.act_info1 IS NOT NULL and p_ni_d_balance.assignment_id = l_cur_asg_id) THEN
11832 IF already_d1 = -1 THEN
11833 i_2 := i_2 +1;
11834 already_d1 := i_2;
11835 END IF;
11836 l_archive_tab_ni_det_1(already_d1).assignment_id := l_cur_asg_id;
11837 l_archive_tab_ni_det_1(already_d1).action_info_category := 'GB_RTI_FPS_NI_DET';
11838 l_archive_tab_ni_det_1(already_d1).act_info1 := p_ni_d_balance.act_info1;
11839 l_archive_tab_ni_det_1(already_d1).act_info2 := NVL(l_archive_tab_ni_det_1(already_d1).act_info2,0) + p_ni_d_balance.act_info2;
11840 l_archive_tab_ni_det_1(already_d1).act_info3 := p_ni_d_balance.act_info3;
11841 l_archive_tab_ni_det_1(already_d1).act_info4 := p_ni_d_balance.act_info4;
11842 l_archive_tab_ni_det_1(already_d1).act_info5 := p_ni_d_balance.act_info5;
11843 l_archive_tab_ni_det_1(already_d1).act_info6 := p_ni_d_balance.act_info6;
11844 l_archive_tab_ni_det_1(already_d1).act_info7 := p_ni_d_balance.act_info7;
11845 l_archive_tab_ni_det_1(already_d1).act_info8 := p_ni_d_balance.act_info8;
11846 l_archive_tab_ni_det_1(already_d1).act_info9 := NVL(l_archive_tab_ni_det_1(already_d1).act_info9,0) + p_ni_d_balance.act_info9;
11847 l_archive_tab_ni_det_1(already_d1).act_info10 := NVL(l_archive_tab_ni_det_1(already_d1).act_info10,0) + p_ni_d_balance.act_info10;
11848 l_ni_emp_run := l_ni_emp_run + p_ni_d_balance.act_info10;
11849 l_archive_tab_ni_det_1(already_d1).act_info11 := p_ni_d_balance.act_info11;
11850 l_archive_tab_ni_det_1(already_d1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11851 END IF;
11852 -- For Category E
11853 IF (p_ni_e_balance.act_info1 IS NOT NULL and p_ni_e_balance.assignment_id = l_cur_asg_id) THEN
11854 IF already_e1 = -1 THEN
11855 i_2 := i_2 +1;
11856 already_e1 := i_2;
11857 END IF;
11858 l_archive_tab_ni_det_1(already_e1).assignment_id := l_cur_asg_id;
11859 l_archive_tab_ni_det_1(already_e1).action_info_category := 'GB_RTI_FPS_NI_DET';
11860 l_archive_tab_ni_det_1(already_e1).act_info1 := p_ni_e_balance.act_info1;
11861 l_archive_tab_ni_det_1(already_e1).act_info2 := NVL(l_archive_tab_ni_det_1(already_e1).act_info2,0) + p_ni_e_balance.act_info2;
11862 l_archive_tab_ni_det_1(already_e1).act_info3 := p_ni_e_balance.act_info3;
11863 l_archive_tab_ni_det_1(already_e1).act_info4 := p_ni_e_balance.act_info4;
11864 l_archive_tab_ni_det_1(already_e1).act_info5 := p_ni_e_balance.act_info5;
11865 l_archive_tab_ni_det_1(already_e1).act_info6 := p_ni_e_balance.act_info6;
11866 l_archive_tab_ni_det_1(already_e1).act_info7 := p_ni_e_balance.act_info7;
11867 l_archive_tab_ni_det_1(already_e1).act_info8 := p_ni_e_balance.act_info8;
11868 l_archive_tab_ni_det_1(already_e1).act_info9 := NVL(l_archive_tab_ni_det_1(already_e1).act_info9 ,0) + p_ni_e_balance.act_info9;
11869 l_archive_tab_ni_det_1(already_e1).act_info10 := NVL(l_archive_tab_ni_det_1(already_e1).act_info10 ,0) + p_ni_e_balance.act_info10;
11870 l_ni_emp_run := l_ni_emp_run + p_ni_e_balance.act_info10;
11871 l_archive_tab_ni_det_1(already_e1).act_info11 := p_ni_e_balance.act_info11;
11872 l_archive_tab_ni_det_1(already_e1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11873 END IF;
11874 -- For Category J
11875 IF (p_ni_j_balance.act_info1 IS NOT NULL and p_ni_j_balance.assignment_id = l_cur_asg_id) THEN
11876 IF already_j1 = -1 THEN
11877 i_2 := i_2+1;
11878 already_j1 := i_2;
11879 END IF;
11880 l_archive_tab_ni_det_1(already_j1).assignment_id := l_cur_asg_id;
11881 l_archive_tab_ni_det_1(already_j1).action_info_category := 'GB_RTI_FPS_NI_DET';
11882 l_archive_tab_ni_det_1(already_j1).act_info1 := p_ni_a_balance.act_info1;
11883 l_archive_tab_ni_det_1(already_j1).act_info2 := NVL(l_archive_tab_ni_det_1(already_j1).act_info2,0) + p_ni_j_balance.act_info2;
11884 l_archive_tab_ni_det_1(already_j1).act_info3 := p_ni_j_balance.act_info3;
11885 l_archive_tab_ni_det_1(already_j1).act_info4 := p_ni_j_balance.act_info4;
11886 l_archive_tab_ni_det_1(already_j1).act_info5 := p_ni_j_balance.act_info5;
11887 l_archive_tab_ni_det_1(already_j1).act_info6 := p_ni_j_balance.act_info6;
11888 l_archive_tab_ni_det_1(already_j1).act_info7 := p_ni_j_balance.act_info7;
11889 l_archive_tab_ni_det_1(already_j1).act_info8 := p_ni_j_balance.act_info8;
11890 l_archive_tab_ni_det_1(already_j1).act_info9 := NVL(l_archive_tab_ni_det_1(already_j1).act_info9 ,0) + p_ni_j_balance.act_info9;
11891 l_archive_tab_ni_det_1(already_j1).act_info10 := NVL(l_archive_tab_ni_det_1(already_j1).act_info10 ,0) + p_ni_j_balance.act_info10;
11892 l_ni_emp_run := l_ni_emp_run + p_ni_j_balance.act_info10;
11893 l_archive_tab_ni_det_1(already_j1).act_info11 := p_ni_j_balance.act_info11;
11894 l_archive_tab_ni_det_1(already_j1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11895 END IF;
11896 -- For Category L
11897 IF (p_ni_l_balance.act_info1 IS NOT NULL and p_ni_l_balance.assignment_id = l_cur_asg_id) THEN
11898 IF already_l1 = -1 THEN
11899 i_2 := i_2+1;
11900 already_l1 := i_2;
11901 END IF;
11902 l_archive_tab_ni_det_1(already_l1).assignment_id := l_cur_asg_id;
11903 l_archive_tab_ni_det_1(already_l1).action_info_category := 'GB_RTI_FPS_NI_DET';
11904 l_archive_tab_ni_det_1(already_l1).act_info1 := p_ni_l_balance.act_info1;
11905 l_archive_tab_ni_det_1(already_l1).act_info2 := NVL(l_archive_tab_ni_det_1(already_l1).act_info2,0) + p_ni_l_balance.act_info2;
11906 l_archive_tab_ni_det_1(already_l1).act_info3 := p_ni_l_balance.act_info3;
11907 l_archive_tab_ni_det_1(already_l1).act_info4 := p_ni_l_balance.act_info4;
11908 l_archive_tab_ni_det_1(already_l1).act_info5 := p_ni_l_balance.act_info5;
11909 l_archive_tab_ni_det_1(already_l1).act_info6 := p_ni_l_balance.act_info6;
11910 l_archive_tab_ni_det_1(already_l1).act_info7 := p_ni_l_balance.act_info7;
11911 l_archive_tab_ni_det_1(already_l1).act_info8 := p_ni_l_balance.act_info8;
11912 l_archive_tab_ni_det_1(already_l1).act_info9 := NVL(l_archive_tab_ni_det_1(already_l1).act_info9 ,0) + p_ni_l_balance.act_info9;
11913 l_archive_tab_ni_det_1(already_l1).act_info10 := NVL(l_archive_tab_ni_det_1(already_l1).act_info10 ,0) + p_ni_l_balance.act_info10;
11914 l_ni_emp_run := l_ni_emp_run + p_ni_l_balance.act_info10;
11915 l_archive_tab_ni_det_1(already_l1).act_info11 := p_ni_l_balance.act_info11;
11916 l_archive_tab_ni_det_1(already_l1).act_info12 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11917 END IF;
11918 --end ni balances
11919 ni_contrib_2 := 0;
11920 ni_contrib_ytd_2 := 0;
11921 FOR k IN 0..i_2
11922 LOOP
11923 hr_utility.trace('k_paye_agg:' || k);
11924 IF l_archive_tab_ni_det_1(k).act_info10 IS NOT NULL THEN
11925 ni_contrib_2 := NVL(ni_contrib_2,0) + l_archive_tab_ni_det_1(k).act_info10;
11926 ni_contrib_ytd_2 := NVL(ni_contrib_ytd_2,0) + l_archive_tab_ni_det_1(k).act_info8;
11927 END IF;
11928 END LOOP;
11929
11930
11931 l_archive_tab_det2(l_archive_det2_counter).action_info_category := 'GB_RTI_FPS_ASG_DET2';
11932 l_archive_tab_det2(l_archive_det2_counter).assignment_id := l_cur_asg_id;
11933 hr_utility.trace('l_ni_emp_run' ||l_ni_emp_run);
11934 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info8' ||l_archive_tab_det2(l_archive_det2_counter).act_info8);
11935 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info16' ||l_archive_tab_det2(l_archive_det2_counter).act_info16);
11936 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info17' ||l_archive_tab_det2(l_archive_det2_counter).act_info17);
11937 hr_utility.trace('l_non_bacs_payment' ||l_non_bacs_payment);
11938 -- Derive the fields 58B and 59
11939 -- 58B
11940 l_archive_tab_det2(l_archive_det2_counter).act_info8 := NVL(l_archive_tab_det2(l_archive_det2_counter).act_info8,0) -- Prev holds Total Deductions
11941 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
11942 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
11943 - NVL(l_ni_emp_run,0) -- NI
11944 + l_non_bacs_payment;
11945 -- 59
11946 l_archive_tab_det2(l_archive_det2_counter).act_info9 := NVL(l_archive_tab_det2(l_archive_det2_counter).act_info9,0)
11947 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
11948 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
11949 - NVL(l_ni_emp_run,0) -- NI
11950 + NVL(l_archive_tab_det2(l_archive_det2_counter).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
11951 l_archive_tab_det2(l_archive_det2_counter).act_info5 := NVL(ni_contrib_ytd_2,0);
11952 l_archive_tab_det2(l_archive_det2_counter).act_info24 := NVL(ni_contrib_2,0);
11953
11954
11955 hr_utility.trace('After Assigning local values to the actual contexts ');
11956 l_archive_det1_counter := l_archive_det1_counter + 1;
11957 l_archive_det2_counter := l_archive_det2_counter + 1;
11958
11959 end if; --nvl(l_asg_act_processed_earlier,-1) <> 0
11960
11961 end if; -- This end if is for if (nvl(l_processed_in_prepayment, 'N') <> 'Y') then
11962 end if; --if (l_fps_action_exists = 'Y') then --Fix for the bug 16409794
11963
11964 --l_archive_det1_counter_local := l_archive_det1_counter_local + 1;
11965 CLOSE csr_processed_in_prepayment;
11966 --
11967 CLOSE csr_aggr_locking_asg_act_id;
11968 hr_utility.trace('After csr_aggr_locking_asg_act_id');
11969 l_single_payroll_run_exists := l_single_payroll_run_exists + 1;
11970 hr_utility.trace('l_single_payroll_run_exists end point: ' ||l_single_payroll_run_exists);
11971 l_cur_asg_action_id := l_aggr_locking_asg_act_id;
11972 -- EXIT WHEN l_aggr_sequence_id > l_last_asg_action_id;
11973 EXIT WHEN nvl(l_aggr_locking_asg_act_id, l_last_asg_action_id + 1) > l_last_asg_action_id;
11974
11975 end if; --csr_chk_prepayment_run
11976 END LOOP;
11977 CLOSE csr_aggr_all_payroll_actions;
11978 --
11979 hr_utility.trace('l_single_payroll_run_exists: ' ||l_single_payroll_run_exists);
11980 if (l_single_payroll_run_exists = 1) then
11981
11982 l_asg_act_processed_earlier := 0;
11983
11984 --
11985 hr_utility.trace(' l_person_id: ' ||l_person_id);
11986 hr_utility.trace(' l_cur_asg_id: ' ||l_cur_asg_id);
11987 hr_utility.trace(' l_last_asg_action_id: ' ||l_last_asg_action_id);
11988 hr_utility.trace(' l_asg_id: ' ||l_asg_id);
11989
11990 -- OPEN csr_asg_act_processed_earlier(l_person_id, l_cur_asg_id, l_last_asg_action_id);
11991 OPEN csr_asg_act_processed_earlier(l_person_id, l_asg_id, l_last_asg_action_id);
11992 FETCH csr_asg_act_processed_earlier
11993 INTO l_asg_act_processed_earlier;
11994 CLOSE csr_asg_act_processed_earlier;
11995
11996 hr_utility.trace('l_asg_act_processed_earlier: ' ||l_asg_act_processed_earlier);
11997
11998 if (nvl(l_asg_act_processed_earlier,-1) <> 0 and l_retry_req_flag is null) then
11999 hr_utility.trace('Current Assignment is already processed in an earlier FPS run. Hence, not processing now.');
12000 l_archive_flag := 'N';
12001 populate_run_msg(p_assactid, ' Assignment ' || l_assignment_number|| ' is already processed.','W');
12002 fnd_file.put_line (fnd_file.LOG,' Assignment ' || l_assignment_number|| ' is already processed.');
12003
12004 end if;
12005
12006 end if;
12007
12008
12009
12010 hr_utility.trace('Aggregated new code ends here');
12011
12012 hr_utility.trace('l_archive_flag: ' ||l_archive_flag);
12013
12014 hr_utility.trace('Before l_archive_det1_counter' ||l_archive_det1_counter);
12015 hr_utility.trace('Before l_archive_det2_counter' ||l_archive_det2_counter);
12016 hr_utility.trace('Before l_archive_det1_counter.count' ||l_archive_tab_det1.count);
12017 hr_utility.trace('Before l_archive_det2_counter.count' ||l_archive_tab_det2.count);
12018
12019 --if (nvl(l_archive_flag,'Y') <> 'N') and (l_archive_tab_det1.count > 0 and l_archive_tab_det2.count > 0) then
12020 if (nvl(l_archive_flag,'Y') <> 'N') then
12021
12022 if ( (l_archive_det1_counter < l_archive_tab_det1.count and
12023 l_archive_tab_det1(l_archive_det1_counter).act_info3 is not null) or l_retry_req_flag is null) then
12024 null;
12025 hr_utility.set_location('inside if', 10);
12026 else
12027 hr_utility.set_location('inside else', 10);
12028 l_archive_det1_counter := l_archive_det1_counter - 1;
12029 l_archive_det2_counter := l_archive_det2_counter - 1;
12030 end if;
12031
12032 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter).assignment_id: ' ||l_archive_tab_det1(l_archive_det1_counter).assignment_id);
12033 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).assignment_id: ' ||l_archive_tab_det2(l_archive_det2_counter).assignment_id);
12034 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter).act_info3: ' ||l_archive_tab_det1(l_archive_det1_counter).act_info3);
12035
12036 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab_det1(l_archive_det1_counter));
12037
12038 -- Validating fetched Person,Address,Assignment details for FPS
12039 hr_utility.set_location('Calling Person Address validations', 10);
12040 -- pay_gb_rti_fps_validate.person_address_validations(p_assactid, p_effective_date, l_archive_tab,l_per_addr_val_flag);
12041 hr_utility.trace('After l_archive_det1_counter' ||l_archive_det1_counter);
12042 hr_utility.trace('After l_archive_det2_counter' ||l_archive_det2_counter);
12043
12044 pay_gb_rti_fps_validate_13.person_addr_validations_aggr(p_assactid,
12045 p_effective_date,
12046 l_archive_tab,
12047 l_archive_tab_det1(l_archive_det1_counter),
12048 l_archive_tab_det2(l_archive_det2_counter),
12049 l_per_addr_val_flag);
12050
12051 hr_utility.trace('person address' ||l_per_addr_val_flag);
12052
12053 --l_per_addr_val_flag := 'N'; --for testing
12054
12055 IF l_per_addr_val_flag = 'Y' THEN -- If validation fails
12056 l_personaddr_val_err := TRUE;
12057 END IF;
12058
12059 hr_utility.set_location('Calling FPS validations', 10);
12060
12061 hr_utility.trace('l_archive_det1_counter' ||l_archive_det1_counter);
12062 hr_utility.trace('l_archive_det2_counter' ||l_archive_det2_counter);
12063
12064 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter)' ||l_archive_tab_det1(l_archive_det1_counter).act_info1);
12065 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter)' ||l_archive_tab_det1(l_archive_det1_counter).act_info2);
12066 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter)' ||l_archive_tab_det1(l_archive_det1_counter).act_info3);
12067
12068
12069 -- pay_gb_rti_fps_validate.assignment_validations(p_assactid, p_effective_date, l_archive_tab,l_fps_etext_asg_flag);
12070 pay_gb_rti_fps_validate_13.assignment_validations_aggr(p_assactid,
12071 p_effective_date,
12072 l_archive_tab,
12073 l_archive_tab_det1(l_archive_det1_counter),
12074 l_archive_tab_det2(l_archive_det2_counter),
12075 l_fps_etext_asg_flag);
12076
12077 --l_fps_etext_asg_flag := 'N'; --for testing
12078 hr_utility.trace('l_fps_etext_asg_flag' ||l_fps_etext_asg_flag);
12079
12080 IF l_fps_etext_asg_flag = 'Y' THEN -- If validation fails
12081 l_fps_val_err := TRUE;
12082 END IF;
12083
12084 hr_utility.set_location('After Calling FPS validations', 10);
12085 -- LOOP through all NIs
12086 --commented below For Loop whole code for testing
12087 FOR i_count IN 0..i_2
12088 LOOP
12089
12090 hr_utility.set_location ('Calling FPS NI validations: i_2', 10);
12091
12092 pay_gb_rti_fps_validate_13.ni_validations(p_assactid, p_effective_date, l_archive_tab_ni_det_1,i_count,l_fps_etext_ni_flag);
12093
12094 -- l_fps_etext_ni_flag := 'N'; --for testing
12095
12096 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
12097 l_fps_ni_val_err := TRUE;
12098 END IF;
12099 END LOOP;
12100
12101 FOR i_count IN 0..i_1
12102 LOOP
12103
12104 hr_utility.set_location ('Calling FPS NI validations : i_1', 10);
12105
12106 pay_gb_rti_fps_validate_13.ni_validations(p_assactid, p_effective_date, l_archive_tab_ni_det,i_count,l_fps_etext_ni_flag);
12107
12108 -- l_fps_etext_ni_flag := 'N'; --for testing
12109
12110 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
12111 l_fps_ni_val_err := TRUE;
12112 END IF;
12113 END LOOP;
12114
12115 hr_utility.set_location('After Calling FPS validations', 10);
12116
12117 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
12118 -- IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 THEN --for testing
12119 -- IF l_personaddr_val_err OR l_fps_val_err OR l_fps_ni_val_err -- If validation fails , that record will not be archived.
12120 IF l_personaddr_val_err OR l_fps_val_err OR l_fps_ni_val_err -- If validation fails , that record will not be archived.
12121 THEN
12122 hr_utility.set_location('Validation failed, raise error.',999);
12123 fnd_file.put_line(fnd_file.LOG,'Not Archiving');
12124 raise error_found;
12125 ELSE
12126
12127 hr_utility.set_location('Validation successful, archive data.',999);
12128 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
12129 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det1);
12130 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det2);
12131 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det3);
12132 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_ni_det);
12133 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_ni_det_1);
12134 /* -- lock the pre payments action id with current fps assignment action id
12135 begin
12136 hr_nonrun_asact.insint(p_assactid, l_prepay_asg_action_id);
12137 exception
12138 when dup_val_on_index then
12139 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
12140 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_prepay_asg_action_id,60);
12141 end;
12142 */
12143
12144 /*select count(*)
12145 into l_rec_count
12146 from PAY_GB_FPS_DETAILS
12147 where ASSIGNMENT_ID = l_asg_id
12148 and PERSON_ID = l_person_id
12149 and PAYROLL_ASG_ACT_ID = l_last_asg_action_id;
12150
12151 if l_rec_count = 0 then
12152 hr_utility.set_location('2 inserting',999);
12153 hr_utility.set_location('2 l_asg_id: '||l_asg_id,999);
12154 hr_utility.set_location('2 p_assactid: '||p_assactid,999);
12155 hr_utility.set_location('2 l_last_asg_action_id: '||l_last_asg_action_id,999);
12156 hr_utility.set_location('2 inserting',999);
12157 INSERT
12158 INTO PAY_GB_FPS_DETAILS
12159 (
12160 ASSIGNMENT_ID,
12161 PERSON_ID,
12162 FPS_ASG_ACT_ID,
12163 FPS_PAY_ACT_ID,
12164 FPS_EFFECTIVE_DATE,
12165 PREPAY_ASG_ACT_ID,
12166 PREPAY_PAY_ACT_ID,
12167 PREPAY_EFFECTIVE_DATE,
12168 PAYROLL_ASG_ACT_ID,
12169 PAYROLL_PAY_ACT_ID,
12170 PAYROLL_EFFECTIVE_DATE
12171 )
12172 VALUES
12173 (
12174 l_asg_id,
12175 l_person_id,
12176 p_assactid,
12177 g_payroll_action_id,
12178 g_fps_effective_date,
12179 l_prepay_asg_action_id,
12180 l_prepay_payroll_action_id,
12181 l_prepay_effective_date,
12182 l_last_asg_action_id,
12183 l_payroll_pact_id,
12184 l_last_effective_date
12185 );
12186
12187 end if; */
12188 END IF;
12189 ELSE
12190 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
12191 raise error_found;
12192 END IF;
12193 end if; -- if l_archive_flag check
12194 end if; -- if (l_total_payment <> 0) then --Fix for the bug 16409794
12195 end if; -- if l_asg_action_id = p_assactid then
12196 --paye aggregation logic ends
12197 hr_utility.trace('Leaving Aggregated Code');
12198
12199 elsif l_per_ni_agg_flag = 'Y' then
12200 hr_utility.trace('Entered NI Only -Aggregated Code');
12201
12202 -- skip the NI aggregation logic if the current asg is not processed in this
12203 -- pre payments. This would be processed as part of max asg_act_id for this pre payment.
12204 open csr_rti_rpt_proc_prepay(l_asg_id,g_pre_pact_id);
12205 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag;
12206 close csr_rti_rpt_proc_prepay;
12207 hr_utility.trace('l_rti_ni_proc_flag: '|| l_rti_ni_proc_flag);
12208 if nvl(l_rti_ni_proc_flag,'N') = 'Y' then
12209 hr_utility.trace('Processing NI Only -Aggregated Code for l_asg_id: ' || l_asg_id);
12210 OPEN csr_last_payroll_action(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
12211 FETCH csr_last_payroll_action
12212 INTO l_last_asg_action_id,
12213 l_last_effective_date;
12214 CLOSE csr_last_payroll_action;
12215
12216 OPEN csr_prepay_asg_act_details(l_asg_id, g_pre_pact_id);
12217 FETCH csr_prepay_asg_act_details
12218 INTO l_prepay_asg_action_id,
12219 l_prepay_payroll_action_id,
12220 l_prepay_effective_date;
12221 CLOSE csr_prepay_asg_act_details;
12222
12223 -- Get the RTI NI Reporting Assignment and effective date.
12224 open csr_ni_rpt_flag(l_asg_id);
12225 fetch csr_ni_rpt_flag into l_ni_rti_flag,l_ni_rti_date;
12226 close csr_ni_rpt_flag;
12227
12228 hr_utility.trace('l_prepay_asg_action_id: '||l_prepay_asg_action_id);
12229 hr_utility.trace('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id);
12230 hr_utility.trace('l_prepay_effective_date: '||l_prepay_effective_date);
12231
12232 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
12233 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
12234 hr_utility.trace('l_ni_rti_flag: '||l_ni_rti_flag);
12235 hr_utility.trace('l_ni_rti_date: '||l_ni_rti_date);
12236
12237 l_start_date := l_asg_eff_start_date;
12238 l_end_date := g_effective_date;
12239
12240 ---
12241
12242 l_bacs_payment_exists := 'N';
12243
12244 OPEN csr_bacs_payment_exists (l_prepay_payroll_action_id,l_prepay_asg_action_id);
12245 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
12246 CLOSE csr_bacs_payment_exists;
12247
12248 begin
12249 if (l_bacs_payment_exists = 'Y') then
12250 l_hash_code := PAY_GB_FPS_NI_AND_OTHERS_13.fetch_HASH_FPS_ASG(g_pre_pact_id, l_asg_id, l_large_bacs_payment);
12251 else
12252 l_hash_code := null;
12253 end if;
12254 exception
12255 when others then
12256 populate_run_msg(p_assactid, 'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
12257 fnd_file.put_line (fnd_file.LOG,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
12258 raise_application_error(-20001,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
12259 end;
12260
12261 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
12262 hr_utility.trace('l_hash_code: '||l_hash_code);
12263
12264 ---
12265
12266 OPEN csr_total_payment (l_prepay_asg_action_id);
12267 FETCH csr_total_payment INTO l_total_payment;
12268 CLOSE csr_total_payment;
12269
12270 hr_utility.trace('l_total_payment: '||l_total_payment);
12271
12272 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
12273
12274 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
12275 ---
12276 hr_utility.set_location('Fetching person details ',10);
12277 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab(0));
12278 ---
12279 hr_utility.set_location('Fetching address details ',20);
12280 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
12281 l_archive_tab(0).assignment_id,
12282 g_effective_date,
12283 l_archive_tab(1));
12284 l_person_id := l_archive_tab(0).person_id;
12285 --Fetching assignments details for FPS
12286 hr_utility.set_location('Fetching Assignment details ',30);
12287 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
12288 g_effective_date,
12289 p_assactid,
12290 l_last_asg_action_id,
12291 'Y',
12292 l_archive_tab(0),
12293 l_archive_tab(2),
12294 p_starter_set);
12295
12296 hr_utility.set_location('Assignment Hash Coode to archive record',30);
12297 l_archive_tab(2).act_info28 := l_hash_code;
12298
12299 hr_utility.set_location('Ni Agg Fetching Details3',30);
12300 l_archive_asg_det1 := fetch_asg_det3( l_archive_tab(0).assignment_id,
12301 l_cur_asg_action_id,
12302 l_archive_tab_det3(0));
12303 hr_utility.set_location('Ni End Agg Fetching Details3',30);
12304
12305 --****************************
12306 i := 3;
12307 l_archive_tab(3).assignment_id := l_asg_id;
12308
12309 OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
12310 LOOP
12311 FETCH csr_all_payroll_actions
12312 INTO l_last_asg_action_id,
12313 l_last_effective_date;
12314 EXIT
12315 WHEN csr_all_payroll_actions%NOTFOUND;
12316
12317
12318 pay_gb_fps_ni_and_others_13.get_ni_only_agg_bal_for_asg(l_last_asg_action_id,
12319 p_ni_a_balance,
12320 p_ni_b_balance,
12321 p_ni_c_balance,
12322 p_ni_d_balance,
12323 p_ni_e_balance,
12324 p_ni_j_balance,
12325 p_ni_l_balance);
12326
12327 IF (p_ni_a_balance.act_info1 IS NOT NULL) THEN
12328 IF already_a = -1 THEN
12329 i := i+1;
12330 already_a := i;
12331 END IF;
12332
12333 l_archive_tab(already_a).assignment_id := l_archive_tab(0).assignment_id;
12334 l_archive_tab(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
12335 l_archive_tab(already_a).act_info1 := p_ni_a_balance.act_info1;
12336 l_archive_tab(already_a).act_info2 := nvl(l_archive_tab(already_a).act_info2,0) + p_ni_a_balance.act_info2;
12337 l_archive_tab(already_a).act_info3 := p_ni_a_balance.act_info3;
12338 l_archive_tab(already_a).act_info4 := p_ni_a_balance.act_info4;
12339 l_archive_tab(already_a).act_info5 := p_ni_a_balance.act_info5;
12340 l_archive_tab(already_a).act_info6 := p_ni_a_balance.act_info6;
12341 l_archive_tab(already_a).act_info7 := p_ni_a_balance.act_info7;
12342 l_archive_tab(already_a).act_info8 := p_ni_a_balance.act_info8;
12343 l_archive_tab(already_a).act_info9 := NVL(l_archive_tab(already_a).act_info9 ,0) + p_ni_a_balance.act_info9;
12344 l_archive_tab(already_a).act_info10 := NVL(l_archive_tab(already_a).act_info10 ,0) + p_ni_a_balance.act_info10;
12345 l_archive_tab(already_a).act_info11 := p_ni_a_balance.act_info11;
12346
12347 END IF;
12348 -- For Category B
12349 IF (p_ni_b_balance.act_info1 IS NOT NULL) THEN
12350 IF already_b = -1 THEN
12351 i := i+1;
12352 already_b := i;
12353 END IF;
12354 l_archive_tab(already_b).assignment_id := l_archive_tab(0).assignment_id;
12355 l_archive_tab(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
12356 l_archive_tab(already_b).act_info1 := p_ni_b_balance.act_info1;
12357 l_archive_tab(already_b).act_info2 := nvl(l_archive_tab(already_b).act_info2,0) + p_ni_b_balance.act_info2;
12358 l_archive_tab(already_b).act_info3 := p_ni_b_balance.act_info3;
12359 l_archive_tab(already_b).act_info4 := p_ni_b_balance.act_info4;
12360 l_archive_tab(already_b).act_info5 := p_ni_b_balance.act_info5;
12361 l_archive_tab(already_b).act_info6 := p_ni_b_balance.act_info6;
12362 l_archive_tab(already_b).act_info7 := p_ni_b_balance.act_info7;
12363 l_archive_tab(already_b).act_info8 := p_ni_b_balance.act_info8;
12364 l_archive_tab(already_b).act_info9 := NVL(l_archive_tab(already_b).act_info9 ,0) + p_ni_b_balance.act_info9;
12365 l_archive_tab(already_b).act_info10 := NVL(l_archive_tab(already_b).act_info10 ,0) + p_ni_b_balance.act_info10;
12366 l_archive_tab(already_b).act_info11 := p_ni_b_balance.act_info11;
12367 END IF;
12368 -- For Category C
12369 IF (p_ni_c_balance.act_info1 IS NOT NULL) THEN
12370 IF already_c = -1 THEN
12371 i := i+1;
12372 already_c := i;
12373 END IF;
12374 l_archive_tab(already_c).assignment_id := l_archive_tab(0).assignment_id;
12375 l_archive_tab(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
12376 l_archive_tab(already_c).act_info1 := p_ni_c_balance.act_info1;
12377 l_archive_tab(already_c).act_info2 := nvl(l_archive_tab(already_c).act_info2,0) + p_ni_c_balance.act_info2;
12378 l_archive_tab(already_c).act_info3 := p_ni_c_balance.act_info3;
12379 l_archive_tab(already_c).act_info4 := p_ni_c_balance.act_info4;
12380 l_archive_tab(already_c).act_info5 := p_ni_c_balance.act_info5;
12381 l_archive_tab(already_c).act_info6 := p_ni_c_balance.act_info6;
12382 l_archive_tab(already_c).act_info7 := p_ni_c_balance.act_info7;
12383 l_archive_tab(already_c).act_info8 := p_ni_c_balance.act_info8;
12384 l_archive_tab(already_c).act_info9 := NVL(l_archive_tab(already_c).act_info9 ,0) + p_ni_c_balance.act_info9;
12385 l_archive_tab(already_c).act_info10 := NVL(l_archive_tab(already_c).act_info10 ,0) + p_ni_c_balance.act_info10;
12386 l_archive_tab(already_c).act_info11 := p_ni_c_balance.act_info11;
12387
12388 END IF;
12389 --For Category D
12390 IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
12391 IF already_d = -1 THEN
12392 i := i+1;
12393 already_d := i;
12394 END IF;
12395 l_archive_tab(already_d).assignment_id := l_archive_tab(0).assignment_id;
12396 l_archive_tab(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
12397 l_archive_tab(already_d).act_info1 := p_ni_d_balance.act_info1;
12398 l_archive_tab(already_d).act_info2 := nvl(l_archive_tab(already_d).act_info2,0) + p_ni_d_balance.act_info2;
12399 l_archive_tab(already_d).act_info3 := p_ni_d_balance.act_info3;
12400 l_archive_tab(already_d).act_info4 := p_ni_d_balance.act_info4;
12401 l_archive_tab(already_d).act_info5 := p_ni_d_balance.act_info5;
12402 l_archive_tab(already_d).act_info6 := p_ni_d_balance.act_info6;
12403 l_archive_tab(already_d).act_info7 := p_ni_d_balance.act_info7;
12404 l_archive_tab(already_d).act_info8 := p_ni_d_balance.act_info8;
12405 l_archive_tab(already_d).act_info9 := NVL(l_archive_tab(already_d).act_info9,0) + p_ni_d_balance.act_info9;
12406 l_archive_tab(already_d).act_info10 := NVL(l_archive_tab(already_d).act_info10,0) + p_ni_d_balance.act_info10;
12407 l_archive_tab(already_d).act_info11 := p_ni_d_balance.act_info11;
12408 END IF;
12409 -- For Category E
12410 IF (p_ni_e_balance.act_info1 IS NOT NULL) THEN
12411 IF already_e = -1 THEN
12412 i := i+1;
12413 already_e := i;
12414 END IF;
12415 l_archive_tab(already_e).assignment_id := l_archive_tab(0).assignment_id;
12416 l_archive_tab(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
12417 l_archive_tab(already_e).act_info1 := p_ni_e_balance.act_info1;
12418 l_archive_tab(already_e).act_info2 := nvl(l_archive_tab(already_e).act_info2,0) + p_ni_e_balance.act_info2;
12419 l_archive_tab(already_e).act_info3 := p_ni_e_balance.act_info3;
12420 l_archive_tab(already_e).act_info4 := p_ni_e_balance.act_info4;
12421 l_archive_tab(already_e).act_info5 := p_ni_e_balance.act_info5;
12422 l_archive_tab(already_e).act_info6 := p_ni_e_balance.act_info6;
12423 l_archive_tab(already_e).act_info7 := p_ni_e_balance.act_info7;
12424 l_archive_tab(already_e).act_info8 := p_ni_e_balance.act_info8;
12425 l_archive_tab(already_e).act_info9 := NVL(l_archive_tab(already_e).act_info9 ,0) + p_ni_e_balance.act_info9;
12426 l_archive_tab(already_e).act_info10 := NVL(l_archive_tab(already_e).act_info10 ,0) + p_ni_e_balance.act_info10;
12427 l_archive_tab(already_e).act_info11 := p_ni_e_balance.act_info11;
12428 END IF;
12429 -- For Category J
12430 IF (p_ni_j_balance.act_info1 IS NOT NULL) THEN
12431 IF already_j = -1 THEN
12432 i := i+1;
12433 already_j := i;
12434 END IF;
12435 l_archive_tab(already_j).assignment_id := l_archive_tab(0).assignment_id;
12436 l_archive_tab(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
12437 l_archive_tab(already_j).act_info1 := p_ni_j_balance.act_info1;
12438 l_archive_tab(already_j).act_info2 := nvl(l_archive_tab(already_j).act_info2,0) + p_ni_j_balance.act_info2;
12439 l_archive_tab(already_j).act_info3 := p_ni_j_balance.act_info3;
12440 l_archive_tab(already_j).act_info4 := p_ni_j_balance.act_info4;
12441 l_archive_tab(already_j).act_info5 := p_ni_j_balance.act_info5;
12442 l_archive_tab(already_j).act_info6 := p_ni_j_balance.act_info6;
12443 l_archive_tab(already_j).act_info7 := p_ni_j_balance.act_info7;
12444 l_archive_tab(already_j).act_info8 := p_ni_j_balance.act_info8;
12445 l_archive_tab(already_j).act_info9 := NVL(l_archive_tab(already_j).act_info9 ,0) + p_ni_j_balance.act_info9;
12446 l_archive_tab(already_j).act_info10 := NVL(l_archive_tab(already_j).act_info10 ,0) + p_ni_j_balance.act_info10;
12447 l_archive_tab(already_j).act_info11 := p_ni_j_balance.act_info11;
12448 END IF;
12449 -- For Category L
12450 IF (p_ni_l_balance.act_info1 IS NOT NULL) THEN
12451 IF already_l = -1 THEN
12452 i := i+1;
12453 already_l := i;
12454 END IF;
12455 l_archive_tab(already_l).assignment_id := l_archive_tab(0).assignment_id;
12456 l_archive_tab(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
12457 l_archive_tab(already_l).act_info1 := p_ni_l_balance.act_info1;
12458 l_archive_tab(already_l).act_info2 := nvl(l_archive_tab(already_l).act_info2,0) + p_ni_l_balance.act_info2;
12459 l_archive_tab(already_l).act_info3 := p_ni_l_balance.act_info3;
12460 l_archive_tab(already_l).act_info4 := p_ni_l_balance.act_info4;
12461 l_archive_tab(already_l).act_info5 := p_ni_l_balance.act_info5;
12462 l_archive_tab(already_l).act_info6 := p_ni_l_balance.act_info6;
12463 l_archive_tab(already_l).act_info7 := p_ni_l_balance.act_info7;
12464 l_archive_tab(already_l).act_info8 := p_ni_l_balance.act_info8;
12465 l_archive_tab(already_l).act_info9 := NVL(l_archive_tab(already_l).act_info9 ,0) + p_ni_l_balance.act_info9;
12466 l_archive_tab(already_l).act_info10 := NVL(l_archive_tab(already_l).act_info10 ,0) + p_ni_l_balance.act_info10;
12467 l_archive_tab(already_l).act_info11 := p_ni_l_balance.act_info11;
12468 END IF;
12469
12470 l_archive_asg_det2 := fetch_fps_asg_det2(l_last_asg_action_id,l_asg_id,l_archive_tab(3));
12471 hr_utility.trace('after det2');
12472 OPEN csr_pay_act_details(l_last_asg_action_id);
12473 FETCH csr_pay_act_details INTO l_payroll_pact_id;
12474 CLOSE csr_pay_act_details;
12475
12476 INSERT
12477 INTO PAY_GB_FPS_DETAILS
12478 (
12479 ASSIGNMENT_ID,
12480 PERSON_ID,
12481 FPS_ASG_ACT_ID,
12482 FPS_PAY_ACT_ID,
12483 FPS_EFFECTIVE_DATE,
12484 PREPAY_ASG_ACT_ID,
12485 PREPAY_PAY_ACT_ID,
12486 PREPAY_EFFECTIVE_DATE,
12487 PAYROLL_ASG_ACT_ID,
12488 PAYROLL_PAY_ACT_ID,
12489 PAYROLL_EFFECTIVE_DATE
12490 )
12491 VALUES
12492 (
12493 l_asg_id,
12494 l_person_id,
12495 p_assactid,
12496 g_payroll_action_id,
12497 g_fps_effective_date,
12498 l_prepay_asg_action_id,
12499 l_prepay_payroll_action_id,
12500 l_prepay_effective_date,
12501 l_last_asg_action_id,
12502 l_payroll_pact_id,
12503 l_last_effective_date
12504 );
12505
12506 END LOOP;
12507
12508 CLOSE csr_all_payroll_actions;
12509 hr_utility.trace('1');
12510 hr_utility.trace('i' || i);
12511
12512
12513
12514 FOR k IN 4..i
12515 LOOP
12516 hr_utility.trace('k:' || k);
12517 IF l_archive_tab(k).act_info10 IS NOT NULL THEN
12518 ni_contrib := NVL(ni_contrib,0) + l_archive_tab(k).act_info10;
12519 ni_contrib_ytd := NVL(ni_contrib_ytd,0) + l_archive_tab(k).act_info8;
12520 END IF;
12521 hr_utility.trace('k:before c_asg_act_id' || k);
12522 if l_archive_tab(k).act_info1 is not null then
12523 FOR c_asg_act_id in csr_asg_act_oth_asgs(l_asg_id)
12524 loop
12525 hr_utility.trace('c_asg_act_id' || c_asg_act_id.asg_act_id);
12526 hr_utility.trace('act_info2' || l_archive_tab(k).act_info2);
12527 hr_utility.trace('act_info1' || l_archive_tab(k).act_info1);
12528 --add_other_asg_ni_ytd(c_asg_act_id.asg_act_id, l_archive_tab(k));
12529 end loop;
12530 end if;
12531 END LOOP;
12532 /*
12533 FOR k IN 4..i
12534 LOOP
12535 IF l_archive_tab(i).act_info1 IS NOT NULL THEN
12536 l_archive_tab(i).act_info7 := NVL(l_archive_tab(3).act_info23,0);
12537 l_archive_tab(i).act_info8 := NVL(l_archive_tab(3).act_info4,0);
12538 l_archive_tab(i).act_info9 := NVL(ni_contrib,0);
12539 l_archive_tab(i).act_info10 := NVL(ni_contrib_ytd,0);
12540 END IF;
12541 END LOOP;
12542 */
12543 hr_utility.trace( 'value of i :' || i);
12544 hr_utility.trace('Assignment id : ' || l_asg_id);
12545 hr_utility.trace('ni_contrib : ' || ni_contrib);
12546 hr_utility.trace('l_archive_tab(3).act_info8 : ' || l_archive_tab(3).act_info8 );
12547 hr_utility.trace('l_archive_tab(3).act_info9 : ' || l_archive_tab(3).act_info9 );
12548
12549 -- Derive the fields 58B and 59
12550 -- 58B
12551 l_archive_tab(3).act_info8 := NVL(l_archive_tab(3).act_info8,0) -- Prev holds Total Deductions
12552 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
12553 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
12554 - NVL(ni_contrib,0) -- NI
12555 + l_non_bacs_payment;
12556 -- 59
12557 l_archive_tab(3).act_info9 := NVL(l_archive_tab(3).act_info9,0)
12558 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
12559 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
12560 - NVL(ni_contrib,0) -- NI
12561 + NVL(l_archive_tab(3).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
12562 l_archive_tab(3).act_info5 := NVL(ni_contrib_ytd,0);
12563 l_archive_tab(3).act_info24 := NVL(ni_contrib,0);
12564 l_archive_tab(3).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
12565 l_archive_tab(2).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
12566 -- get the max assingment action id prcessed in this prepayment
12567 -- get the YTD values for that assignment action id
12568 open csr_aggr_max_act_id(l_person_id,g_pre_pact_id,l_last_effective_date);
12569 fetch csr_aggr_max_act_id into l_count_asg,l_max_prepay_act_id;
12570 close csr_aggr_max_act_id;
12571
12572 pay_gb_fps_ni_and_others_13.get_ni_only_bal_rti_rpt(l_max_prepay_act_id,
12573 p_per_ni_a_balance,
12574 p_per_ni_b_balance,
12575 p_per_ni_c_balance,
12576 p_per_ni_d_balance,
12577 p_per_ni_e_balance,
12578 p_per_ni_j_balance,
12579 p_per_ni_l_balance);
12580 -----
12581 /*FOR l_asg_act_rec in csr_asg_in_prepay(l_person_id)
12582 loop
12583 pay_gb_fps_ni_and_others.get_ni_only_agg_bal_sum_asg(l_asg_act_rec.asg_act_id,
12584 p_per_ni_a_balance,
12585 p_per_ni_b_balance,
12586 p_per_ni_c_balance,
12587 p_per_ni_d_balance,
12588 p_per_ni_e_balance,
12589 p_per_ni_j_balance,
12590 p_per_ni_l_balance);
12591 end loop;
12592 */
12593 -- trace for customer
12594 hr_utility.trace('New Trace messages starts here : ');
12595 hr_utility.trace('p_per_ni_a_balance.assignment_id : ' || p_per_ni_a_balance.assignment_id);
12596 hr_utility.trace('p_per_ni_a_balance.act_info1 : ' || p_per_ni_a_balance.act_info1);
12597 hr_utility.trace('p_per_ni_a_balance.act_info2 : ' || p_per_ni_a_balance.act_info2);
12598 hr_utility.trace('p_per_ni_a_balance.act_info3 : ' || p_per_ni_a_balance.act_info3);
12599 hr_utility.trace('p_per_ni_a_balance.act_info4 : ' || p_per_ni_a_balance.act_info4);
12600 hr_utility.trace('p_per_ni_a_balance.act_info5 : ' || p_per_ni_a_balance.act_info5);
12601 hr_utility.trace('p_per_ni_a_balance.act_info6 : ' || p_per_ni_a_balance.act_info6);
12602 hr_utility.trace('p_per_ni_a_balance.act_info7 : ' || p_per_ni_a_balance.act_info7);
12603 hr_utility.trace('p_per_ni_a_balance.act_info8 : ' || p_per_ni_a_balance.act_info8);
12604 hr_utility.trace('p_per_ni_a_balance.act_info9 : ' || p_per_ni_a_balance.act_info9);
12605 hr_utility.trace('p_per_ni_a_balance.act_info10 : ' || p_per_ni_a_balance.act_info10);
12606 -----
12607 hr_utility.trace('p_per_ni_b_balance.assignment_id : ' || p_per_ni_b_balance.assignment_id);
12608 hr_utility.trace('p_per_ni_b_balance.act_info1 : ' || p_per_ni_b_balance.act_info1);
12609 hr_utility.trace('p_per_ni_b_balance.act_info2 : ' || p_per_ni_b_balance.act_info2);
12610 hr_utility.trace('p_per_ni_b_balance.act_info3 : ' || p_per_ni_b_balance.act_info3);
12611 hr_utility.trace('p_per_ni_b_balance.act_info4 : ' || p_per_ni_b_balance.act_info4);
12612 hr_utility.trace('p_per_ni_b_balance.act_info5 : ' || p_per_ni_b_balance.act_info5);
12613 hr_utility.trace('p_per_ni_b_balance.act_info6 : ' || p_per_ni_b_balance.act_info6);
12614 hr_utility.trace('p_per_ni_b_balance.act_info7 : ' || p_per_ni_b_balance.act_info7);
12615 hr_utility.trace('p_per_ni_b_balance.act_info8 : ' || p_per_ni_b_balance.act_info8);
12616 hr_utility.trace('p_per_ni_b_balance.act_info9 : ' || p_per_ni_b_balance.act_info9);
12617 hr_utility.trace('p_per_ni_b_balance.act_info10 : ' || p_per_ni_b_balance.act_info10);
12618 ---
12619 hr_utility.trace('p_per_ni_c_balance.assignment_id : ' || p_per_ni_c_balance.assignment_id);
12620 hr_utility.trace('p_per_ni_c_balance.act_info1 : ' || p_per_ni_c_balance.act_info1);
12621 hr_utility.trace('p_per_ni_c_balance.act_info2 : ' || p_per_ni_c_balance.act_info2);
12622 hr_utility.trace('p_per_ni_c_balance.act_info3 : ' || p_per_ni_c_balance.act_info3);
12623 hr_utility.trace('p_per_ni_c_balance.act_info4 : ' || p_per_ni_c_balance.act_info4);
12624 hr_utility.trace('p_per_ni_c_balance.act_info5 : ' || p_per_ni_c_balance.act_info5);
12625 hr_utility.trace('p_per_ni_c_balance.act_info6 : ' || p_per_ni_c_balance.act_info6);
12626 hr_utility.trace('p_per_ni_c_balance.act_info7 : ' || p_per_ni_c_balance.act_info7);
12627 hr_utility.trace('p_per_ni_c_balance.act_info8 : ' || p_per_ni_c_balance.act_info8);
12628 hr_utility.trace('p_per_ni_c_balance.act_info9 : ' || p_per_ni_c_balance.act_info9);
12629 hr_utility.trace('p_per_ni_c_balance.act_info10 : ' || p_per_ni_c_balance.act_info10);
12630 ---
12631 hr_utility.trace('p_per_ni_d_balance.assignment_id : ' || p_per_ni_d_balance.assignment_id);
12632 hr_utility.trace('p_per_ni_d_balance.act_info1 : ' || p_per_ni_d_balance.act_info1);
12633 hr_utility.trace('p_per_ni_d_balance.act_info2 : ' || p_per_ni_d_balance.act_info2);
12634 hr_utility.trace('p_per_ni_d_balance.act_info3 : ' || p_per_ni_d_balance.act_info3);
12635 hr_utility.trace('p_per_ni_d_balance.act_info4 : ' || p_per_ni_d_balance.act_info4);
12636 hr_utility.trace('p_per_ni_d_balance.act_info5 : ' || p_per_ni_d_balance.act_info5);
12637 hr_utility.trace('p_per_ni_d_balance.act_info6 : ' || p_per_ni_d_balance.act_info6);
12638 hr_utility.trace('p_per_ni_d_balance.act_info7 : ' || p_per_ni_d_balance.act_info7);
12639 hr_utility.trace('p_per_ni_d_balance.act_info8 : ' || p_per_ni_d_balance.act_info8);
12640 hr_utility.trace('p_per_ni_d_balance.act_info9 : ' || p_per_ni_d_balance.act_info9);
12641 hr_utility.trace('p_per_ni_d_balance.act_info10 : ' || p_per_ni_d_balance.act_info10);
12642
12643 ---
12644 hr_utility.trace('p_per_ni_e_balance.assignment_id : ' || p_per_ni_e_balance.assignment_id);
12645 hr_utility.trace('p_per_ni_e_balance.act_info1 : ' || p_per_ni_e_balance.act_info1);
12646 hr_utility.trace('p_per_ni_e_balance.act_info2 : ' || p_per_ni_e_balance.act_info2);
12647 hr_utility.trace('p_per_ni_e_balance.act_info3 : ' || p_per_ni_e_balance.act_info3);
12648 hr_utility.trace('p_per_ni_e_balance.act_info4 : ' || p_per_ni_e_balance.act_info4);
12649 hr_utility.trace('p_per_ni_e_balance.act_info5 : ' || p_per_ni_e_balance.act_info5);
12650 hr_utility.trace('p_per_ni_e_balance.act_info6 : ' || p_per_ni_e_balance.act_info6);
12651 hr_utility.trace('p_per_ni_e_balance.act_info7 : ' || p_per_ni_e_balance.act_info7);
12652 hr_utility.trace('p_per_ni_e_balance.act_info8 : ' || p_per_ni_e_balance.act_info8);
12653 hr_utility.trace('p_per_ni_e_balance.act_info9 : ' || p_per_ni_e_balance.act_info9);
12654 hr_utility.trace('p_per_ni_e_balance.act_info10 : ' || p_per_ni_e_balance.act_info10);
12655
12656
12657 ---
12658 hr_utility.trace('p_per_ni_j_balance.assignment_id : ' || p_per_ni_j_balance.assignment_id);
12659 hr_utility.trace('p_per_ni_j_balance.act_info1 : ' || p_per_ni_j_balance.act_info1);
12660 hr_utility.trace('p_per_ni_j_balance.act_info2 : ' || p_per_ni_j_balance.act_info2);
12661 hr_utility.trace('p_per_ni_j_balance.act_info3 : ' || p_per_ni_j_balance.act_info3);
12662 hr_utility.trace('p_per_ni_j_balance.act_info4 : ' || p_per_ni_j_balance.act_info4);
12663 hr_utility.trace('p_per_ni_j_balance.act_info5 : ' || p_per_ni_j_balance.act_info5);
12664 hr_utility.trace('p_per_ni_j_balance.act_info6 : ' || p_per_ni_j_balance.act_info6);
12665 hr_utility.trace('p_per_ni_j_balance.act_info7 : ' || p_per_ni_j_balance.act_info7);
12666 hr_utility.trace('p_per_ni_j_balance.act_info8 : ' || p_per_ni_j_balance.act_info8);
12667 hr_utility.trace('p_per_ni_j_balance.act_info9 : ' || p_per_ni_j_balance.act_info9);
12668 hr_utility.trace('p_per_ni_j_balance.act_info10 : ' || p_per_ni_j_balance.act_info10);
12669
12670
12671 ---
12672 hr_utility.trace('p_per_ni_l_balance.assignment_id : ' || p_per_ni_l_balance.assignment_id);
12673 hr_utility.trace('p_per_ni_l_balance.act_info1 : ' || p_per_ni_l_balance.act_info1);
12674 hr_utility.trace('p_per_ni_l_balance.act_info2 : ' || p_per_ni_l_balance.act_info2);
12675 hr_utility.trace('p_per_ni_l_balance.act_info3 : ' || p_per_ni_l_balance.act_info3);
12676 hr_utility.trace('p_per_ni_l_balance.act_info4 : ' || p_per_ni_l_balance.act_info4);
12677 hr_utility.trace('p_per_ni_l_balance.act_info5 : ' || p_per_ni_l_balance.act_info5);
12678 hr_utility.trace('p_per_ni_l_balance.act_info6 : ' || p_per_ni_l_balance.act_info6);
12679 hr_utility.trace('p_per_ni_l_balance.act_info7 : ' || p_per_ni_l_balance.act_info7);
12680 hr_utility.trace('p_per_ni_l_balance.act_info8 : ' || p_per_ni_l_balance.act_info8);
12681 hr_utility.trace('p_per_ni_l_balance.act_info9 : ' || p_per_ni_l_balance.act_info9);
12682 hr_utility.trace('p_per_ni_l_balance.act_info10 : ' || p_per_ni_l_balance.act_info10);
12683
12684
12685
12686 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
12687
12688 -- Validating fetched Person,Address,Assignment details for FPS
12689 hr_utility.set_location('Calling Person Address validations', 10);
12690 pay_gb_rti_fps_validate_13.person_address_validations(p_assactid, p_effective_date, l_archive_tab,l_per_addr_val_flag);
12691 hr_utility.trace('person address' ||l_per_addr_val_flag);
12692
12693 --l_per_addr_val_flag := 'N'; --for testing
12694
12695 IF l_per_addr_val_flag = 'Y' THEN -- If validation fails
12696 l_personaddr_val_err := TRUE;
12697 END IF;
12698
12699 hr_utility.set_location('Calling FPS validations', 10);
12700 pay_gb_rti_fps_validate_13.assignment_validations(p_assactid, p_effective_date, l_archive_tab,l_fps_etext_asg_flag);
12701
12702 IF l_fps_etext_asg_flag = 'Y' THEN -- If validation fails
12703 l_fps_val_err := TRUE;
12704 END IF;
12705
12706 hr_utility.set_location('After Calling FPS validations', 10);
12707 -- LOOP through all NIs
12708 --commented below For Loop whole code for testing
12709 FOR i_count IN 4..i
12710 LOOP
12711
12712 hr_utility.set_location ('C7alling FPS NI validations', 10);
12713
12714 pay_gb_rti_fps_validate_13.ni_validations(p_assactid, p_effective_date, l_archive_tab,i_count,l_fps_etext_ni_flag);
12715
12716 -- l_fps_etext_ni_flag := 'N'; --for testing
12717
12718 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
12719 l_fps_ni_val_err := TRUE;
12720 END IF;
12721 END LOOP;
12722
12723
12724 hr_utility.set_location('After Calling FPS validations', 10);
12725
12726 -- IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
12727 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 THEN --for testing
12728 -- IF l_personaddr_val_err OR l_fps_val_err OR l_fps_ni_val_err -- If validation fails , that record will not be archived.
12729 IF l_personaddr_val_err OR l_fps_val_err OR l_fps_ni_val_err -- If validation fails , that record will not be archived.
12730 THEN
12731 hr_utility.set_location('Validation failed, raise error.',999);
12732 fnd_file.put_line(fnd_file.LOG,'Not Archiving');
12733 raise error_found;
12734 ELSE
12735 hr_utility.set_location('Validation successful, archive data.',999);
12736 if l_ni_rti_flag = 'Y' then
12737 ni_agg_ytd_sum(l_archive_tab,i,p_per_ni_a_balance,p_per_ni_b_balance,
12738 p_per_ni_c_balance,p_per_ni_d_balance,p_per_ni_e_balance,p_per_ni_j_balance,p_per_ni_l_balance);
12739 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
12740 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det3);
12741 /* moved this code to action creation
12742 -- lock the pre payments action id with current fps assignment action id
12743 begin
12744 hr_nonrun_asact.insint(p_assactid, l_prepay_asg_action_id);
12745 exception
12746 when dup_val_on_index then
12747 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
12748 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_prepay_asg_action_id,60);
12749 end; */
12750 else
12751 hr_utility.set_location('Non NI Reporting asg: ' || l_asg_id, 999);
12752
12753 hr_utility.set_location('Retrieve the ni reporting assignment for ' || l_asg_id ,1000);
12754
12755 open csr_get_ni_rpt_asg(l_asg_id);
12756 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
12757 close csr_get_ni_rpt_asg;
12758 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id || ' l_ni_rpt_date: ' || l_ni_rpt_date,1000);
12759 hr_utility.set_location('NI reporting assignment for the assignment: ' || l_asg_id || 'is ' ||l_ni_rpt_asg_id ,1000);
12760
12761 if l_ni_rpt_asg_id is not null then
12762 hr_utility.set_location(' l_ni_rpt_asg_id:' || l_ni_rpt_asg_id || ' g_pre_pact_id:' ||g_pre_pact_id ,1000);
12763 -- check whether the RTI reporting assignment is processed in the current prepayment.
12764 open csr_rti_rpt_proc_prepay(l_ni_rpt_asg_id,g_pre_pact_id);
12765 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag_1;
12766 close csr_rti_rpt_proc_prepay;
12767 hr_utility.set_location('l_rti_ni_proc_flag_1: ' || l_rti_ni_proc_flag_1,1000);
12768 -- check whether the current asg_act_id is the max id
12769 -- so that RTI asg is archived only ones when multiple non-rti asgs exists.
12770 OPEN csr_ni_aggr_max_act_id (l_person_id, g_pre_pact_id);
12771 FETCH csr_ni_aggr_max_act_id INTO l_ni_aggr_max_act_id;
12772 CLOSE csr_ni_aggr_max_act_id;
12773 hr_utility.set_location('l_ni_aggr_max_act_id: ' || l_ni_aggr_max_act_id ,1000);
12774 hr_utility.set_location('l_last_asg_action_id: ' || l_last_asg_action_id ,1000);
12775 if l_ni_aggr_max_act_id = l_last_asg_action_id and nvl(l_rti_ni_proc_flag_1,'N') <> 'Y' then
12776 -- 0. Get the RTI NI Reporting assignment for the period.
12777 -- 1. Store the NI YTD values of current Assignment in a temp variable.
12778 -- 2. Make the NI YTD values 0.
12779 -- 3. Get all the Previously archived values of NI Reporting assignment.
12780 -- 4. Make the Period balances 0.
12781 -- 5. Replace the NI YTD with the current processing NI YTD values.
12782 -- 6. Archive this record.
12783 hr_utility.set_location('fetching the rti rpt asg values: ',1000);
12784 open csr_ni_asg_last_archived(l_ni_rpt_asg_id);
12785 fetch csr_ni_asg_last_archived BULK COLLECT INTO l_archive_tab_ni_rpt;
12786 close csr_ni_asg_last_archived;
12787 record_count := l_archive_tab_ni_rpt.count;
12788 hr_utility.set_location('record_count: ' || record_count ,1000);
12789 if l_archive_tab_ni_rpt.count > 0 then
12790
12791 for counter in 1..l_archive_tab_ni_rpt.count
12792 loop
12793 if l_archive_tab_ni_rpt(counter).action_info_category = 'GB_RTI_FPS_ASG_DET2' then
12794 -- set 0 for other Run level balances in details 2 context.
12795 l_archive_tab_ni_rpt(counter).act_info6 := 0;
12796 l_archive_tab_ni_rpt(counter).act_info8 := 0;
12797 l_archive_tab_ni_rpt(counter).act_info9 := 0;
12798 l_archive_tab_ni_rpt(counter).act_info10 := 0;
12799 l_archive_tab_ni_rpt(counter).act_info11 := 0;
12800 l_archive_tab_ni_rpt(counter).act_info12 := 0;
12801 l_archive_tab_ni_rpt(counter).act_info13 := 0;
12802 l_archive_tab_ni_rpt(counter).act_info15 := 0;
12803 l_archive_tab_ni_rpt(counter).act_info16 := 0;
12804 l_archive_tab_ni_rpt(counter).act_info17 := 0;
12805 l_archive_tab_ni_rpt(counter).act_info23 := 0;
12806 l_archive_tab(counter).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
12807 end if;
12808 if l_archive_tab_ni_rpt(counter).action_info_category = 'GB_RTI_FPS_ASG_DET1' then
12809 l_archive_tab(counter).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
12810 end if;
12811 end loop;
12812 else --l_archive_tab_ni_rpt.count > 0
12813 /*open csr_get_latest_asg_action(l_ni_rpt_asg_id);
12814 fetch csr_get_latest_asg_action into l_ni_max_asg_act_id, l_ni_max_asg_act_date;
12815 close csr_get_latest_asg_action;
12816 */
12817 select paa.assignment_action_id into l_ni_rpt_assact_id from pay_assignment_actions paa
12818 where paa.payroll_action_id = g_payroll_action_id
12819 and paa.assignment_id = l_ni_rpt_asg_id;
12820 hr_utility.set_location('Calling get_ni_only_asg_details:',1000);
12821 get_ni_only_asg_details(l_ni_rpt_asg_id,
12822 l_archive_tab_ni_rpt(1),
12823 l_archive_tab_ni_rpt(2),
12824 l_archive_tab_det3(0),
12825 l_ni_rpt_assact_id);
12826 -- after this make record_count := 2 as the next row in the table should store NI Values.
12827 record_count := 2;
12828 end if; --l_archive_tab_ni_rpt.count > 0
12829 hr_utility.set_location('p_per_ni_a_balance.act_info1: ' ||p_per_ni_a_balance.act_info1,1000);
12830 -- NI A
12831 if p_per_ni_a_balance.act_info1 is not null then
12832 record_count := record_count +1;
12833 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12834 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12835 l_archive_tab_ni_rpt(record_count).act_info1 := 'A';
12836 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12837 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_a_balance.act_info3;
12838 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_a_balance.act_info4;
12839 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_a_balance.act_info5;
12840 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_a_balance.act_info6;
12841 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_a_balance.act_info7;
12842 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_a_balance.act_info8;
12843 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12844 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12845 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_a_balance.act_info11;
12846 end if;
12847 hr_utility.set_location('record_count: ' || record_count ,1000);
12848 -- NI D
12849 hr_utility.set_location('p_per_ni_d_balance.act_info1: ' || p_per_ni_d_balance.act_info1 ,1000);
12850 if p_per_ni_d_balance.act_info1 is not null then
12851 record_count := record_count + 1;
12852 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12853 l_archive_tab_ni_rpt(record_count).act_info1 := 'D';
12854 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12855 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12856 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_d_balance.act_info3;
12857 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_d_balance.act_info4;
12858 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_d_balance.act_info5;
12859 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_d_balance.act_info6;
12860 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_d_balance.act_info7;
12861 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_d_balance.act_info8;
12862 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12863 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12864 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_d_balance.act_info11;
12865 end if;
12866 hr_utility.set_location('record_count: ' || record_count ,1000);
12867
12868 -- NI B
12869 hr_utility.set_location('p_per_ni_b_balance.act_info1: ' || p_per_ni_b_balance.act_info1 ,1000);
12870 if p_per_ni_b_balance.act_info1 is not null then
12871 record_count := record_count + 1;
12872 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12873 l_archive_tab_ni_rpt(record_count).act_info1 := 'B';
12874 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12875 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12876 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_b_balance.act_info3;
12877 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_b_balance.act_info4;
12878 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_b_balance.act_info5;
12879 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_b_balance.act_info6;
12880 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_b_balance.act_info7;
12881 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_b_balance.act_info8;
12882 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12883 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12884 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_b_balance.act_info11;
12885 end if;
12886 hr_utility.set_location('record_count: ' || record_count ,1000);
12887 -- NI C
12888 hr_utility.set_location('p_per_ni_c_balance.act_info1: ' || p_per_ni_c_balance.act_info1 ,1000);
12889 if p_per_ni_c_balance.act_info1 is not null then
12890 record_count := record_count + 1;
12891 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12892 l_archive_tab_ni_rpt(record_count).act_info1 := 'C';
12893 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12894 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12895 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_c_balance.act_info3;
12896 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_c_balance.act_info4;
12897 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_c_balance.act_info5;
12898 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_c_balance.act_info6;
12899 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_c_balance.act_info7;
12900 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_c_balance.act_info8;
12901 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12902 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12903 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_c_balance.act_info11;
12904 end if;
12905 hr_utility.set_location('record_count: ' || record_count ,1000);
12906
12907 -- NI E
12908 hr_utility.set_location('p_per_ni_e_balance.act_info1: ' || p_per_ni_e_balance.act_info1 ,1000);
12909 if p_per_ni_e_balance.act_info1 is not null then
12910 record_count := record_count + 1;
12911 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12912 l_archive_tab_ni_rpt(record_count).act_info1 := 'E';
12913 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12914 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12915 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_e_balance.act_info3;
12916 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_e_balance.act_info4;
12917 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_e_balance.act_info5;
12918 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_e_balance.act_info6;
12919 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_e_balance.act_info7;
12920 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_e_balance.act_info8;
12921 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12922 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12923 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_e_balance.act_info11;
12924 end if;
12925 hr_utility.set_location('record_count: ' || record_count ,1000);
12926
12927 -- NI J
12928 hr_utility.set_location('p_per_ni_j_balance.act_info1: ' || p_per_ni_j_balance.act_info1 ,1000);
12929 if p_per_ni_j_balance.act_info1 is not null then
12930 record_count := record_count + 1;
12931 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12932 l_archive_tab_ni_rpt(record_count).act_info1 := 'J';
12933 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12934 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12935 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_j_balance.act_info3;
12936 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_j_balance.act_info4;
12937 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_j_balance.act_info5;
12938 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_j_balance.act_info6;
12939 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_j_balance.act_info7;
12940 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_j_balance.act_info8;
12941 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12942 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12943 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_j_balance.act_info11; end if;
12944 hr_utility.set_location('record_count: ' || record_count ,1000);
12945
12946 -- NI L
12947 hr_utility.set_location('p_per_ni_l_balance.act_info1: ' || p_per_ni_l_balance.act_info1 ,1000);
12948 if p_per_ni_l_balance.act_info1 is not null then
12949 record_count := record_count + 1;
12950 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12951 l_archive_tab_ni_rpt(record_count).act_info1 := 'L';
12952 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12953 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12954 l_archive_tab_ni_rpt(record_count).act_info3 := nvl(l_archive_tab_ni_rpt(record_count).act_info3,0) + p_per_ni_l_balance.act_info3;
12955 l_archive_tab_ni_rpt(record_count).act_info4 := nvl(l_archive_tab_ni_rpt(record_count).act_info4,0) + p_per_ni_l_balance.act_info4;
12956 l_archive_tab_ni_rpt(record_count).act_info5 := nvl(l_archive_tab_ni_rpt(record_count).act_info5,0) + p_per_ni_l_balance.act_info5;
12957 l_archive_tab_ni_rpt(record_count).act_info6 := nvl(l_archive_tab_ni_rpt(record_count).act_info6,0) + p_per_ni_l_balance.act_info6;
12958 l_archive_tab_ni_rpt(record_count).act_info7 := nvl(l_archive_tab_ni_rpt(record_count).act_info7,0) + p_per_ni_l_balance.act_info7;
12959 l_archive_tab_ni_rpt(record_count).act_info8 := nvl(l_archive_tab_ni_rpt(record_count).act_info8,0) + p_per_ni_l_balance.act_info8;
12960 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12961 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12962 l_archive_tab_ni_rpt(record_count).act_info11 := nvl(l_archive_tab_ni_rpt(record_count).act_info11,0) + p_per_ni_l_balance.act_info11;
12963 end if;
12964 hr_utility.set_location('record_count: ' || record_count ,1000);
12965 /* else -- else for l_archive_tab_ni_rpt.count > 0
12966 -- get the latest prepayment and the payroll details.
12967 select * from pay_payroll_actions ppa,
12968 get_ni_only_asg_details(l_ni_rpt_asg_id,l_archive_tab_ni_rpt,
12969 end if; -- end if for l_archive_tab_ni_rpt.count > 0
12970 */
12971
12972 select paa.assignment_action_id into l_ni_rpt_assact_id from pay_assignment_actions paa
12973 where paa.payroll_action_id = g_payroll_action_id
12974 and paa.assignment_id = l_ni_rpt_asg_id;
12975 hr_utility.set_location('l_ni_rpt_assact_id: ' || l_ni_rpt_assact_id ,1000);
12976 -- insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
12977
12978
12979 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_ni_rpt);
12980 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det3);
12981 INSERT
12982 INTO PAY_GB_FPS_DETAILS
12983 (
12984 ASSIGNMENT_ID,
12985 PERSON_ID,
12986 FPS_ASG_ACT_ID,
12987 FPS_PAY_ACT_ID,
12988 FPS_EFFECTIVE_DATE,
12989 PREPAY_ASG_ACT_ID,
12990 PREPAY_PAY_ACT_ID,
12991 PREPAY_EFFECTIVE_DATE,
12992 PAYROLL_ASG_ACT_ID,
12993 PAYROLL_PAY_ACT_ID,
12994 PAYROLL_EFFECTIVE_DATE
12995 )
12996 VALUES
12997 (
12998 l_ni_rpt_asg_id,
12999 l_person_id,
13000 l_ni_rpt_assact_id,
13001 g_payroll_action_id,
13002 g_fps_effective_date,
13003 l_prepay_asg_action_id,
13004 l_prepay_payroll_action_id,
13005 l_prepay_effective_date,
13006 l_last_asg_action_id,
13007 l_payroll_pact_id,
13008 l_last_effective_date
13009 );
13010 end if; --l_ni_aggr_max_act_id = l_last_asg_action_id
13011 else
13012 hr_utility.set_location('No NI reporting assignment for the assignment: ' || l_asg_id ,1000);
13013 fnd_file.put_line(fnd_file.LOG,'No NI reporting assignment for the assignment: ' || l_asg_id);
13014 populate_run_msg(p_assactid, 'No NI reporting assignment for the assignment: '||l_assignment_number);
13015 raise error_found;
13016 end if; -- l_ni_rpt_asg_id is not null
13017 -- make the NI YTD to 0.
13018 FOR k IN 4..i
13019 LOOP
13020 if l_archive_tab(k).act_info1 is not null then
13021 hr_utility.trace('NON RPT act_info1' || l_archive_tab(k).act_info1);
13022 l_archive_tab(k).act_info3 := 0;
13023 l_archive_tab(k).act_info4 := 0;
13024 l_archive_tab(k).act_info5 := 0;
13025 l_archive_tab(k).act_info6 := 0;
13026 l_archive_tab(k).act_info7 := 0;
13027 l_archive_tab(k).act_info8 := 0;
13028 end if;
13029 END LOOP;
13030 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
13031 insert_archive_row(p_assactid, p_effective_date,l_archive_tab_det3);
13032 end if;
13033 END IF;
13034 ELSE
13035 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
13036 raise error_found;
13037 END IF;
13038 /* else -- this else is for if l_ni_rti_flag = 'Y'
13039 g_ni_values(l_person_id).act_info_1 := l_archive_tab(i_count).act_info1;
13040 g_ni_values(l_person_id).act_info_2 := l_archive_tab(i_count).act_info2;
13041 g_ni_values(l_person_id).act_info_3 := l_archive_tab(i_count).act_info3;
13042 g_ni_values(l_person_id).act_info_4 := l_archive_tab(i_count).act_info4;
13043 g_ni_values(l_person_id).act_info_5 := l_archive_tab(i_count).act_info5;
13044 g_ni_values(l_person_id).act_info_6 := l_archive_tab(i_count).act_info6;
13045 g_ni_values(l_person_id).act_info_7 := l_archive_tab(i_count).act_info7;
13046 g_ni_values(l_person_id).act_info_8 := l_archive_tab(i_count).act_info8;
13047 g_ni_values(l_person_id).act_info_9 := l_archive_tab(i_count).act_info9;
13048 g_ni_values(l_person_id).act_info_10 := l_archive_tab(i_count).act_info10;
13049
13050 end if;
13051 */
13052 end if; --nvl(l_rti_ni_proc_flag,'N') = 'Y'
13053 end if; -- NI only Aggregation Logic ends here ; l_per_ni_agg_flag <> 'Y'
13054
13055
13056 hr_utility.set_location('Leaving: '||l_proc,999);
13057 end if; -- First Fps and First Fps Prepayment if ends
13058
13059 EXCEPTION
13060 WHEN error_found THEN
13061 reset_flag('GB_RTI_ASG_DETAILS',g_reset_flag_type, p_assactid);
13062 fnd_file.put_line(fnd_file.LOG,'Errors found while archiving data.');
13063 raise_application_error(-20001,'Errors found while archiving data.');
13064
13065 WHEN already_processed THEN
13066 fnd_file.put_line (fnd_file.LOG,'Current Assignment '|| l_assignment_number ||' is already processed in an earlier FPS run. Hence, not processing now.');
13067
13068 WHEN OTHERS THEN
13069 fnd_file.put_line(fnd_file.LOG,'An error encountered was - '||SQLERRM);
13070 raise_application_error(-20001,'An error encountered was - '||SQLERRM);
13071 END archive_code;
13072 --
13073 --
13074 PROCEDURE deinitialization_code
13075 (
13076 pactid IN NUMBER
13077 )
13078 IS
13079 l_proc CONSTANT VARCHAR2(50) := g_package || 'deinitialization_code';
13080 l_counter NUMBER;
13081 l_flag VARCHAR2(1);
13082 l_exp EXCEPTION;
13083 errbuf varchar2(100);
13084 retcode number;
13085 l_econ varchar2(100);
13086 l_person_count number :=0;
13087 l_error_flag VARCHAR2(1);
13088 date_scheme date;
13089 CURSOR csr_is_etext_report
13090 IS
13091 SELECT report_type
13092 FROM pay_payroll_actions pact
13093 WHERE pact.payroll_action_id = pactid;
13094 l_is_etext_report VARCHAR2(50);
13095 l_request_id fnd_concurrent_requests.request_id%TYPE;
13096 xml_layout BOOLEAN;
13097
13098 -- Cursor to fetch Employer details
13099 CURSOR csr_payroll_details(pactid NUMBER)
13100 IS
13101 SELECT NVL(UPPER(hoi.org_information11),' ') sender_id,
13102 hoi.org_information1 paye_ref,
13103 hoi.organization_id orgid,
13104 DECODE(SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TEST=') + 5,1) ,'N',' ','Y','1') test_indicator,
13105 fnd_number.number_to_canonical(pact.request_id) request_id,
13106 NVL(upper(SUBSTR(ltrim(hoi.org_information3),1,35)),' ') employer_name,
13107 NVL(upper(SUBSTR(ltrim(SUBSTR(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
13108 lpad(SUBSTR(hoi.ORG_INFORMATION1,0,instr(hoi.ORG_INFORMATION1,'/')-1),3,0) tax_office_no,
13109 DECODE(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
13110 (lpad(SUBSTR(hoi.ORG_INFORMATION6,0,instr(hoi.ORG_INFORMATION6,'P')-1),3,0)
13111 || 'P'
13112 || SUBSTR(hoi.ORG_INFORMATION6,instr(hoi.ORG_INFORMATION6,'P') +1,1)
13113 || lpad(SUBSTR(hoi.ORG_INFORMATION6,instr(hoi.ORG_INFORMATION6,'P')+2,LENGTH(hoi.ORG_INFORMATION6)-3-(instr(hoi.ORG_INFORMATION6,'P')-1)),7,0)
13114 || SUBSTR(hoi.ORG_INFORMATION6,LENGTH(hoi.ORG_INFORMATION6),1) ) AS acc_ref_no,
13115 hoi.org_information7 econ_number,
13116 pact.business_group_id bus_grp_id,
13117 pact.action_parameter_group_id act_param_grp_id,
13118 org_information19 service_company
13119 FROM pay_payroll_actions pact,
13120 hr_organization_information hoi
13121 WHERE pact.payroll_action_id =pactid
13122 AND pact.business_group_id = hoi.organization_id
13123 AND hoi.org_information_context = 'Tax Details References'
13124 AND NVL(hoi.org_information10,'UK') = 'UK'
13125 AND SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8, instr(pact.legislative_parameters
13126 ||' ',' ', instr(pact.legislative_parameters,'TAX_REF=') +8) - instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
13127
13128 cursor csr_payroll_details_2(paye_ref VARCHAR2,orgid number) is
13129 select
13130 hoi.org_information2 sautr,
13131 hoi.org_information3 cotaxref
13132 from hr_organization_information hoi
13133 where hoi.organization_id = orgid
13134 and hoi.org_information_context = 'Tax Details References Cont'
13135 and hoi.org_information1 = paye_ref;
13136
13137 CURSOR csr_parameter_info
13138 IS
13139 SELECT effective_date,
13140 business_group_id,
13141 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters, 'TAX_REF'),1,3) tax_dist,
13142 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
13143 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'SPLIT'),1,20) split,
13144 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PRE_PAY_ID'),1,20) pre_pay_id,
13145 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS'),1,20) first_fps,
13146 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIN_SUB'),1,20) final_submission,
13147 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_PMT_MADE'),1,20) free_tax_payments_made,
13148 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'THIRD_PARTY'),1,20) pay_to_third_party,
13149 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'EXP_BEN_OTHER'),1,20) expenses_benefits_others,
13150 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'OUTSIDE_UK'),1,20) employed_outside_uk,
13151 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'P11D_DUE'),1,20) p11d_due,
13152 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'HMRC_ADVAN'),1,20) hmrc_advance_received,
13153 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'CIS_DEDUCT'),1,20) cis_deductions,
13154 substr(legislative_parameters,instr(legislative_parameters,'VERSION=')+8) version,
13155 fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'DATE_SCHEME'),1,10)) date_scheme
13156 FROM pay_payroll_actions
13157 WHERE payroll_action_id = pactid;
13158
13159 l_payroll_rec csr_payroll_details%rowtype;
13160 l_tax_details csr_payroll_details_2%rowtype;
13161
13162 l_action_info_id NUMBER(15);
13163 l_ovn NUMBER;
13164 l_final_submission_ceased VARCHAR2(1);
13165 l_final_submission_year VARCHAR2(1);
13166 l_final_submission VARCHAR2(50);
13167 l_negative_payment VARCHAR2(10);
13168 l_parameter_info_rec csr_parameter_info%rowtype;
13169 ---------------------
13170 ---------------------
13171
13172 PROCEDURE write_header(
13173 report_type VARCHAR2)
13174 IS
13175 l_token VARCHAR2(255);
13176 l_addr1 VARCHAR2(255);
13177 l_addr2 VARCHAR2(255);
13178 l_addr3 VARCHAR2(255);
13179 l_addr4 VARCHAR2(255);
13180 l_form VARCHAR2(40);
13181 l_tax_ref VARCHAR2(20);
13182 l_urgent VARCHAR2(2);
13183 l_test VARCHAR2(2);
13184 l_temp NUMBER;
13185 l_form_name VARCHAR2(100);
13186 l_payroll_name VARCHAR2(100);
13187 l_prepay_eff_date date;
13188
13189 CURSOR csr_leg_param
13190 IS
13191 SELECT legislative_parameters para,
13192 fnd_number.number_to_canonical(request_id) control_id,
13193 report_type,
13194 business_group_id
13195 FROM pay_payroll_actions pact
13196 WHERE payroll_action_id = pactid;
13197
13198 CURSOR csr_header_det(p_bus_id NUMBER, p_tax_ref VARCHAR2)
13199 IS
13200 SELECT NVL(hoi.org_information11,' ') sender_id,
13201 NVL(upper(hoi.org_information2),' ') hrmc_office,
13202 NVL(upper(hoi.org_information4),' ') er_addr,
13203 NVL(upper(hoi.org_information3),' ') er_name
13204 FROM hr_organization_information hoi
13205 WHERE hoi.organization_id = p_bus_id
13206 AND hoi.org_information_context = 'Tax Details References'
13207 AND NVL(hoi.org_information10,'UK') = 'UK'
13208 AND upper(hoi.org_information1) = upper(p_tax_ref);
13209
13210 CURSOR csr_payroll_details
13211 IS
13212 SELECT ppf.PAYROLL_NAME , ppapre.EFFECTIVE_DATE
13213 from pay_payrolls_f ppf,pay_payroll_actions ppapre,pay_payroll_actions ppa
13214 WHERE ppa.payroll_action_id = pactid
13215 and ppf.payroll_id = SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'PAYROLL_ID'),1,20)
13216 and ppapre.payroll_action_id = SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'PRE_PAY_ID'),1,20);
13217
13218 -- Cursor to fetch Errored Records
13219 CURSOR get_asg_action_id_error
13220 IS
13221 SELECT DISTINCT paa.assignment_action_id asg_action_id,
13222 assignment_id
13223 FROM pay_payroll_actions ppa,
13224 pay_assignment_actions paa
13225 WHERE ppa.payroll_action_id = pactid -- pact_id
13226 AND paa.payroll_action_id = ppa.payroll_action_id
13227 AND paa.action_status = 'E';
13228
13229
13230 --CURSOR csr_err_msg(asg_action_id NUMBER)
13231 CURSOR csr_prepay_err_msg(asg_action_id NUMBER)
13232 IS
13233 SELECT DISTINCT line_text
13234 FROM pay_message_lines
13235 WHERE source_id = asg_action_id --9919881 --asg_action_id
13236 AND message_level <> 'W'-- p_message_level
13237 AND line_text like '%Pre payment is not run%'
13238 AND payroll_id = 100;
13239
13240 l_param csr_leg_param%rowtype;
13241 l_det csr_header_det%rowtype;
13242 l_start_date DATE;
13243 l_end_date DATE;
13244 l_err_msg varchar2(100);
13245 BEGIN
13246 OPEN csr_leg_param;
13247 FETCH csr_leg_param INTO l_param;
13248 CLOSE csr_leg_param;
13249
13250 open csr_payroll_details;
13251 fetch csr_payroll_details into l_payroll_name,l_prepay_eff_date;
13252 close csr_payroll_details;
13253
13254 l_token := 'TAX_REF';
13255 l_temp := instr(l_param.para,l_token);
13256 l_tax_ref := SUBSTR(l_param.para, l_temp + LENGTH(l_token) + 1, instr(l_param.para||' ',' ',l_temp)
13257 - (l_temp + LENGTH(l_token) + 1));
13258 l_token := 'TEST';
13259 l_temp := instr(l_param.para,l_token);
13260 l_test := SUBSTR(l_param.para, l_temp + LENGTH(l_token) + 1, instr(l_param.para||' ',' ',l_temp)
13261 - (l_temp + LENGTH(l_token) + 1));
13262
13263 OPEN csr_header_det(l_param.business_group_id, l_tax_ref);
13264 FETCH csr_header_det INTO l_det;
13265 CLOSE csr_header_det;
13266
13267 l_addr1 := l_det.er_addr;
13268 IF LENGTH(l_addr1) > 35 THEN
13269 l_temp := instr(l_addr1, ',', 34 - LENGTH(l_addr1));
13270 IF l_temp = 0 THEN
13271 l_temp := 35;
13272 END IF;
13273 l_addr2 := ltrim(SUBSTR(l_addr1, 1 + l_temp),' ,');
13274 l_addr1 := SUBSTR(l_addr1,1,l_temp);
13275 END IF;
13276 IF LENGTH(l_addr2) > 35 THEN
13277 l_temp := instr(l_addr2, ',', 34 - LENGTH(l_addr2));
13278 IF l_temp = 0 THEN
13279 l_temp := 35;
13280 END IF;
13281 l_addr3 := ltrim(SUBSTR(l_addr2, 1 + l_temp),' ,');
13282 l_addr2 := SUBSTR(l_addr2,1,l_temp);
13283 END IF;
13284 IF LENGTH(l_addr3) > 35 THEN
13285 l_temp := instr(l_addr3, ',', 34 - LENGTH(l_addr3));
13286 IF l_temp = 0 THEN
13287 l_temp := 35;
13288 END IF;
13289 l_addr3 := ltrim(SUBSTR(l_addr3, 1 + l_temp),' ,');
13290 l_addr4 := SUBSTR(l_addr3,1,l_temp);
13291 END IF;
13292
13293 l_form := 'RTI_FPS_REP';
13294 l_form_name :='Full Payment Submission';
13295
13296 FOR action_id IN get_asg_action_id_error
13297 LOOP
13298 OPEN csr_prepay_err_msg(action_id.asg_action_id);
13299 FETCH csr_prepay_err_msg INTO l_err_msg;
13300 exit when csr_prepay_err_msg%notfound;
13301
13302 fnd_file.put_line(fnd_file.output,'Pre-Payments is not run for few errored employments. Must Rollback this FPS, Complete Pre-Payments and then Re-Submit FPS.');
13303 -- exit when csr_prepay_err_msg%found;
13304 CLOSE csr_prepay_err_msg;
13305 END loop;
13306
13307 fnd_file.put_line(fnd_file.output,' ');
13308 fnd_file.put_line(fnd_file.output,'EDI Transmission Report:');
13309 fnd_file.put_line(fnd_file.output,' ');
13310 fnd_file.put_line(fnd_file.output,rpad('Form Type : ',32) || l_form_name);
13311 fnd_file.put_line(fnd_file.output,rpad('Sender : ',32) || l_det.sender_id);
13312 fnd_file.put_line(fnd_file.output,rpad('Date : ',32) || TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS'));
13313 fnd_file.put_line(fnd_file.output,rpad('Interchange Control Reference : ',32) || l_param.control_id);
13314 fnd_file.put_line(fnd_file.output,rpad('Test Transmission : ',32) || l_test);
13315 fnd_file.put_line(fnd_file.output,rpad('-',80,'-'));
13316 fnd_file.put_line(fnd_file.output,rpad('Employers PAYE Reference : ',32) || l_tax_ref);
13317 fnd_file.put_line(fnd_file.output,rpad('HRMC Office : ',32) || l_det.hrmc_office);
13318 fnd_file.put_line(fnd_file.output,rpad('Employer Name : ',32) || l_det.er_name);
13319 fnd_file.put_line(fnd_file.output,rpad('Employer Address : ',32) || l_addr1);
13320
13321 IF LENGTH(l_addr2) > 0 THEN
13322 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr2);
13323 END IF;
13324 IF LENGTH(l_addr3) > 0 THEN
13325 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr3);
13326 END IF;
13327 IF LENGTH(l_addr4) > 0 THEN
13328 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr4);
13329 END IF;
13330
13331 fnd_file.put_line(fnd_file.output,rpad('Payroll : ',32) || l_payroll_name);
13332 fnd_file.put_line(fnd_file.output,rpad('Prepayment Effective Date : ',32) || l_prepay_eff_date);
13333
13334 END write_header;
13335 ---
13336 PROCEDURE write_sub_header(
13337 p_type VARCHAR2,
13338 report_type VARCHAR2)
13339 IS
13340 BEGIN
13341 fnd_file.put_line(fnd_file.output,NULL);
13342 IF p_type = 'E' THEN
13343 fnd_file.put_line(fnd_file.output,'The following employments have completed with error');
13344 ELSIF p_type = 'W' THEN
13345 fnd_file.put_line(fnd_file.output,'The following employments have completed with warning');
13346 ELSE
13347 fnd_file.put_line(fnd_file.output,'The following employments have completed successfully');
13348 END IF;
13349
13350 IF p_type = 'W' THEN -- warning records
13351 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51)
13352 || rpad('Warning Messages',30));
13353 ELSIF p_type <> 'E' THEN --Completed records
13354 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51));
13355 ELSE -- errored records
13356 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51)
13357 || rpad('Error Messages',30));
13358 END IF;
13359
13360 IF p_type = 'W' THEN -- warning records
13361 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-') || ' '
13362 || rpad('-',30,'-'));
13363 ELSIF p_type <> 'E' THEN -- Completed records
13364 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-'));
13365 ELSE -- errored records
13366 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-') || ' '
13367 || rpad('-',30,'-'));
13368 END IF;
13369 END write_sub_header;
13370 ---
13371 PROCEDURE write_body(
13372 p_type VARCHAR2,
13373 pactid IN NUMBER,
13374 report_type VARCHAR2)
13375 IS
13376 l_count NUMBER;
13377 i NUMBER;
13378 l_temp VARCHAR2(255);
13379 l_emp_count NUMBER;
13380 l_number VARCHAR2(30);
13381 l_start_date DATE;
13382 l_end_date DATE;
13383 l_count_warns number;
13384 l_effective_date date;
13385
13386 -- Cursor to fetch Completed records
13387 CURSOR get_asg_action_id
13388 IS
13389 SELECT DISTINCT paa.assignment_action_id asg_action_id,
13390 assignment_id
13391 FROM pay_payroll_actions ppa,
13392 pay_assignment_actions paa
13393 WHERE ppa.payroll_action_id = pactid -- pact_id
13394 AND paa.payroll_action_id = ppa.payroll_action_id
13395 AND paa.action_status = 'C';
13396
13397 -- Cursor to fetch Errored Records
13398 CURSOR get_asg_action_id_error
13399 IS
13400 SELECT DISTINCT paa.assignment_action_id asg_action_id,
13401 assignment_id
13402 FROM pay_payroll_actions ppa,
13403 pay_assignment_actions paa
13404 WHERE ppa.payroll_action_id = pactid -- pact_id
13405 AND paa.payroll_action_id = ppa.payroll_action_id
13406 AND paa.action_status = 'E';
13407
13408 CURSOR get_person_details(c_assignment_id NUMBER)
13409 IS
13410 SELECT DISTINCT pap.first_name f_name ,
13411 pap.middle_names m_name,
13412 pap.last_name l_name,
13413 pap.title title,
13414 paa.assignment_number emp_no,
13415 NVL(pap.national_identifier,' ')ni_no,
13416 NVL(pap.employee_number,' ') employee_number,
13417 TO_CHAR(paa.EFFECTIVE_START_DATE,'DD-MON-RRRR') start_date,
13418 paa.EFFECTIVE_END_DATE end_date, --to_char(paa.EFFECTIVE_END_DATE,'DD-MON-RRRR') end_date
13419 pap.person_id
13420 FROM per_all_assignments_f paa,
13421 per_assignment_status_types past,
13422 per_all_people_f pap
13423 WHERE paa.person_id = pap.person_id
13424 AND paa.assignment_id = c_assignment_id
13425 AND past.ASSIGNMENT_STATUS_TYPE_ID = paa.ASSIGNMENT_STATUS_TYPE_ID
13426 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN') -- Added for Bug#13626488
13427 and pap.effective_start_date =
13428 ( select max(pap2.effective_start_date) from
13429 per_all_people_f pap2
13430 where pap2.person_id = pap.person_id
13431 and pap2.effective_start_date <= l_effective_date
13432 )
13433 and paa.effective_start_date =
13434 ( select max(asg2.effective_start_date)
13435 from per_all_assignments_f asg2
13436 where asg2.assignment_id = paa.assignment_id
13437 and asg2.assignment_type = 'E'
13438 and ASSIGNMENT_STATUS_TYPE_ID = paa.ASSIGNMENT_STATUS_TYPE_ID
13439 and asg2.effective_start_date <= l_effective_date
13440 )
13441
13442 ORDER BY end_date DESC;
13443
13444 -- Cursor to fetch error Messages from pay_message lines table
13445 --CURSOR csr_err_msg(asg_action_id NUMBER)
13446 CURSOR csr_err_msg(asg_action_id NUMBER)
13447 IS
13448 SELECT DISTINCT line_text
13449 FROM pay_message_lines
13450 WHERE source_id = asg_action_id
13451 AND message_level <> 'W'-- p_message_level
13452 AND payroll_id = 100;
13453
13454 --CURSOR csr_warn_msg(asg_action_id NUMBER)
13455 CURSOR csr_warn_msg(asg_action_id NUMBER)
13456 IS
13457 SELECT DISTINCT line_text
13458 FROM pay_message_lines
13459 WHERE source_id = asg_action_id
13460 AND message_level = 'W'
13461 AND payroll_id = 100;
13462
13463 cursor csr_get_prepayment_date(p_pre_pact_id number) is
13464 select EFFECTIVE_DATE from pay_payroll_actions where payroll_action_id = p_pre_pact_id;
13465
13466 err_msg varchar2(255);--csr_err_msg%rowtype;
13467 et_asg_rec get_person_details%rowtype;
13468 asg_rec get_person_details%rowtype;
13469 l_et_temp VARCHAR2(255);
13470 BEGIN
13471 l_count := 0;
13472 l_count_warns := 0;
13473 open csr_get_prepayment_date(g_pre_pact_id);
13474 fetch csr_get_prepayment_date into l_effective_date;
13475 close csr_get_prepayment_date;
13476 fnd_file.put_line(fnd_file.LOG, 'l_effective_date: ' || l_effective_date);
13477 --Completed Records
13478 IF p_type = 'ET'THEN
13479 FOR action_id IN get_asg_action_id
13480 LOOP
13481 OPEN get_person_details(action_id.assignment_id);
13482 FETCH get_person_details INTO et_asg_rec;
13483 CLOSE get_person_details;
13484 l_et_temp := et_asg_rec.l_name || ', '|| et_asg_rec.title || ' ' || et_asg_rec.f_name || ' ' || et_asg_rec.m_name;
13485 IF et_asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
13486 fnd_file.put_line(fnd_file.output,rpad(et_asg_rec.emp_no, 18) || ' ' || rpad(et_asg_rec.ni_no ,10) || ' '
13487 || rpad(l_et_temp,50) );
13488 ELSE
13489 fnd_file.put_line(fnd_file.output,rpad(et_asg_rec.emp_no, 18) || ' ' || rpad(et_asg_rec.ni_no ,10) || ' '
13490 || rpad(l_et_temp,50));
13491 END IF;
13492 l_count := l_count + 1;
13493 END LOOP;
13494 END IF;
13495
13496 -- Errored Records
13497 IF p_type = 'E'THEN
13498 FOR action_id IN get_asg_action_id_error
13499 LOOP
13500 err_msg := ' ';
13501 -- Fetching details
13502 OPEN get_person_details(action_id.assignment_id);
13503 FETCH get_person_details INTO asg_rec;
13504 CLOSE get_person_details;
13505
13506 OPEN csr_err_msg(action_id.asg_action_id);
13507 FETCH csr_err_msg INTO err_msg;
13508 if csr_err_msg%notfound then
13509 SELECT LINE_TEXT into err_msg FROM pay_message_lines WHERE source_id = action_id.asg_action_id and rownum <=1;
13510 end if;
13511
13512 l_error_flag := 'Y';
13513
13514 l_temp := asg_rec.l_name || ', '|| asg_rec.title || ' ' || asg_rec.f_name || ' ' || asg_rec.m_name;
13515 IF asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
13516 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
13517 || ' ' || rpad(err_msg,120) ); -- error message
13518 ELSE
13519 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
13520 || ' ' || rpad(err_msg,120) ); -- error message
13521 END IF;
13522
13523 -- To print remaining error messgaes if any
13524 LOOP
13525 FETCH csr_err_msg INTO err_msg;
13526 EXIT
13527 WHEN csr_err_msg%notfound;
13528 fnd_file.put_line(fnd_file.output,rpad(' ',81,' ')||rpad(err_msg,120));
13529 END LOOP;
13530
13531 CLOSE csr_err_msg;
13532 l_count := l_count + 1;
13533 END LOOP;
13534 END IF;
13535 fnd_file.put_line(fnd_file.output,NULL);
13536
13537 -- Warning Records
13538 IF p_type = 'W'THEN
13539
13540 FOR action_id IN get_asg_action_id
13541 LOOP
13542 err_msg := ' ';
13543 -- Fetching details
13544 OPEN get_person_details(action_id.assignment_id);
13545 FETCH get_person_details INTO asg_rec;
13546 CLOSE get_person_details;
13547
13548 -- fnd_file.put_line(fnd_file.LOG,'action_id.asg_action_id: '||action_id.asg_action_id);
13549
13550 OPEN csr_warn_msg(action_id.asg_action_id);
13551 FETCH csr_warn_msg INTO err_msg;
13552
13553 -- fnd_file.put_line(fnd_file.LOG,'action_id.asg_action_id: '||action_id.asg_action_id);
13554
13555 /* if csr_err_msg%notfound then
13556 SELECT LINE_TEXT into err_msg FROM pay_message_lines WHERE source_id = action_id.asg_action_id
13557 AND MESSAGE_LEVEL = 'W' and rownum <=1;
13558 end if;
13559 */
13560
13561 IF csr_warn_msg%NOTFOUND THEN
13562 NULL;
13563 ELSE
13564 l_temp := asg_rec.l_name || ', '|| asg_rec.title || ' ' || asg_rec.f_name || ' ' || asg_rec.m_name;
13565 IF asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
13566 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
13567 || ' ' || rpad(err_msg,100) );
13568 ELSE
13569 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
13570 || ' ' || rpad(err_msg,100) );
13571 END IF;
13572 l_count_warns := l_count_warns + 1;
13573 END IF;
13574 CLOSE csr_warn_msg;
13575
13576 END LOOP;
13577
13578 END IF;
13579 fnd_file.put_line(fnd_file.output,NULL);
13580
13581 IF p_type = 'E' THEN
13582 fnd_file.put_line(fnd_file.output,'Total Number of employments completed with error : ' || l_count);
13583 ELSIF p_type = 'W' THEN
13584 fnd_file.put_line(fnd_file.output,'Total Number of employments completed with warning : ' || l_count_warns);
13585 ELSE
13586 fnd_file.put_line(fnd_file.output,'Total Number of employments completed successfully :' || l_count);
13587 END IF;
13588 l_counter := l_counter + l_count;
13589 END write_body;
13590 ---
13591 PROCEDURE write_footer
13592 IS
13593
13594 CURSOR get_person_count
13595 IS
13596 SELECT COUNT(DISTINCT(paaf.person_id))
13597 FROM pay_payroll_actions ppa,
13598 pay_assignment_actions paa,
13599 per_all_assignments_f paaf
13600 WHERE ppa.payroll_action_id = pactid -- pact_id
13601 AND paa.payroll_action_id = ppa.payroll_action_id
13602 AND paa.action_status = 'C'
13603 AND paaf.assignment_id = paa.assignment_id;
13604
13605 --l_person_count NUMBER;
13606
13607 BEGIN
13608 OPEN get_person_count;
13609 FETCH get_person_count INTO l_person_count;
13610 CLOSE get_person_count;
13611
13612 fnd_file.put_line(fnd_file.output,NULL);
13613 fnd_file.put_line(fnd_file.output,'Total Number of employments : ' || l_counter);
13614 fnd_file.put_line(fnd_file.output,NULL);
13615 fnd_file.put_line(fnd_file.output,'Total Number of employees successfully processed : ' || l_person_count);
13616 END write_footer;
13617 ---------------------
13618 BEGIN
13619 hr_utility.trace('Entering deinit: '||l_proc);
13620
13621 -- To avoid re-archiving while Retry
13622 delete from pay_action_information pai
13623 where pai.action_context_id = pactid
13624 and pai.action_context_type = 'PA'
13625 and pai.action_information_category in ('RTI PAYROLL INFO');
13626
13627 delete from pay_action_information pai
13628 where pai.action_context_id = pactid
13629 and pai.action_context_type = 'PA'
13630 and pai.action_information_category in ('GB_RTI_FPS_EXTRA_DET');
13631
13632 OPEN csr_payroll_details(pactid);
13633 FETCH csr_payroll_details INTO l_payroll_rec;
13634 CLOSE csr_payroll_details;
13635
13636 open csr_payroll_details_2(l_payroll_rec.paye_ref,l_payroll_rec.orgid);
13637 fetch csr_payroll_details_2 into l_tax_details;
13638 close csr_payroll_details_2;
13639
13640 OPEN csr_parameter_info;
13641 FETCH csr_parameter_info INTO l_parameter_info_rec;
13642 CLOSE csr_parameter_info;
13643
13644 l_final_submission_year := NULL;
13645 l_final_submission_ceased := NULL;
13646
13647 IF(l_parameter_info_rec.final_submission = 'YYEAR') THEN
13648 l_final_submission_year := 'Y';
13649 l_final_submission := 'Yes - Final for the Year';
13650 elsif(l_parameter_info_rec.final_submission = 'YCEAS') THEN
13651 l_final_submission_ceased := 'Y';
13652 l_final_submission := 'Yes - Final for Ceased PAYE Ref';
13653 else l_final_submission := 'NO';
13654 END IF;
13655
13656 l_econ := l_payroll_rec.econ_number;
13657
13658 --Footer Validations
13659 pay_gb_rti_fps_validate_13.footer_validations(l_payroll_rec.econ_number,l_final_submission,l_flag);
13660
13661 pay_balance_pkg.set_context('PAYROLL_ACTION_ID',pactid);
13662 hr_utility.set_location('l_payroll_rec.bus_grp_id = ' || l_payroll_rec.bus_grp_id,10);
13663 hr_utility.set_location('l_payroll_rec.act_param_grp_id = ' || l_payroll_rec.act_param_grp_id,20);
13664 hr_utility.set_location('l_sender_id = '||l_payroll_rec.sender_id,30);
13665 hr_utility.set_location('l_test_indicator = '||l_payroll_rec.test_indicator,40);
13666 hr_utility.set_location('l_request_id = '||l_payroll_rec.request_id,50);
13667 hr_utility.set_location('g_start_year = '||g_start_year,60);
13668
13669 hr_utility.set_location('Archiving RTI PAYROLL INFO',60);
13670
13671 pay_action_information_api.create_action_information ( p_action_information_id => l_action_info_id ,
13672 p_action_context_id => pactid ,
13673 p_action_context_type => 'PA' ,
13674 p_object_version_number => l_ovn ,
13675 p_source_id => NULL ,
13676 p_source_text => NULL ,
13677 p_action_information_category => 'RTI PAYROLL INFO' ,
13678 p_action_information1 => pactid ,
13679 p_action_information3 => NULL ,
13680 p_action_information4 => l_payroll_rec.employer_name ,
13681 p_action_information6 => l_payroll_rec.tax_office_no ,
13682 p_action_information7 => l_payroll_rec.tax_ref_no ,
13683 p_action_information8 => l_payroll_rec.payroll_ver ,
13684 p_action_information11 => l_payroll_rec.acc_ref_no ,
13685 p_action_information12 => l_payroll_rec.sender_id ,
13686 p_action_information13 => l_payroll_rec.test_indicator ,
13687 p_action_information14 => TO_CHAR(l_payroll_rec.request_id),
13688 p_action_information15 => to_char(g_end_year,'RRRR'),
13689 p_action_information16 => l_tax_details.sautr,
13690 p_action_information17 => l_tax_details.cotaxref);
13691 ---
13692 pay_action_information_api.create_action_information ( p_action_information_id => l_action_info_id ,
13693 p_action_context_id => pactid ,
13694 p_action_context_type => 'PA' ,
13695 p_object_version_number => l_ovn ,
13696 p_source_id => NULL ,
13697 p_source_text => NULL ,
13698 p_action_information_category => 'GB_RTI_FPS_EXTRA_DET' ,
13699 p_action_information1 => l_final_submission_ceased ,
13700 p_action_information2 => l_final_submission_year ,
13701 p_action_information3 => l_econ ,
13702 p_action_information4 => l_parameter_info_rec.free_tax_payments_made ,
13703 p_action_information5 => l_parameter_info_rec.expenses_benefits_others ,
13704 p_action_information6 => l_parameter_info_rec.employed_outside_uk ,
13705 p_action_information7 => l_parameter_info_rec.pay_to_third_party ,
13706 p_action_information8 => l_parameter_info_rec.p11d_due ,
13707 p_action_information9 => l_payroll_rec.service_company,
13708 p_action_information10 => fnd_date.date_to_canonical(l_parameter_info_rec.date_scheme));
13709 ---
13710 OPEN csr_is_etext_report;
13711 FETCH csr_is_etext_report INTO l_is_etext_report;
13712 CLOSE csr_is_etext_report;
13713
13714 l_counter := 0;
13715 write_header(l_is_etext_report);
13716 write_sub_header('C',l_is_etext_report);
13717 write_body('ET',pactid,l_is_etext_report);
13718 write_sub_header('E',l_is_etext_report);
13719 write_body('E',pactid,l_is_etext_report);
13720 write_sub_header('W',l_is_etext_report);
13721 write_body('W',pactid,l_is_etext_report);
13722 write_footer;
13723 --Footer Validations
13724 if l_flag = 'Y' then
13725 PAY_GB_FPS_NI_AND_OTHERS_13.restored(pactid);
13726 raise l_exp;
13727 end if;
13728
13729 if l_parameter_info_rec.version = 'Pre October' then
13730 l_negative_payment := 'N';
13731 else
13732 l_negative_payment := 'Y';
13733 end if;
13734
13735 /*if(l_error_flag = 'Y') then
13736 raise_application_error(-20001,'Errored assignments exists while processing FPS Process.');
13737 end if;
13738 */
13739 -- For Spawning the output Concurrent Program
13740 hr_utility.set_location('Spawning RTI FPS output process',1);
13741 xml_layout := FND_REQUEST.ADD_LAYOUT('PAY','PYGBRTIFPSOP13','en','US','ETEXT');
13742
13743
13744 IF xml_layout = true and g_validation_check = 'Y' and l_person_count <> 0 THEN
13745 l_request_id := fnd_request.submit_request (application => 'PAY'
13746 ,program => 'PYGBRTIFPSOP13'
13747 ,argument1 => pactid --Process Name
13748 );
13749 COMMIT;
13750 --check for process submit error
13751 IF l_request_id = 0 THEN
13752 hr_utility.set_location('Error spawning output process',1);
13753 END IF;
13754
13755 END IF;
13756 hr_utility.set_location('Leaving: '||l_proc,999);
13757
13758
13759
13760 -- For Spawning the Reconciliation Concurrent Program
13761 hr_utility.set_location('Spawning RTI FPS Reconciliation process',1);
13762 xml_layout := FND_REQUEST.ADD_LAYOUT('PAY','PYGBFPSREC','en','US','PDF');
13763
13764
13765 IF xml_layout = true and g_validation_check = 'Y' and l_person_count <> 0 THEN
13766 l_request_id := fnd_request.submit_request (application => 'PAY'
13767 ,program => 'PYGBFPSREC'
13768 ,argument1 => pactid --Process Name
13769 -- ,argument2 => l_negative_payment
13770 );
13771 COMMIT;
13772 --check for process submit error
13773 IF l_request_id = 0 THEN
13774 hr_utility.set_location('Error spawning Reconciliation process',1);
13775 END IF;
13776
13777 END IF;
13778
13779 hr_utility.set_location('Leaving: '||l_proc,999);
13780 /*if(l_error_flag = 'Y') then
13781 raise_application_error(-20001,'Errored assignments exists while processing FPS Process.');
13782 end if;
13783 */
13784 EXCEPTION
13785 When l_exp then
13786 fnd_file.put_line(fnd_file.LOG,'Errors found while archiving data.');
13787 raise_application_error(-20001,'Errors found while archiving data.');
13788 END deinitialization_code;
13789 --
13790 END PAY_GB_RTI_FPS_ARCHIVE;