[Home] [Help]
PACKAGE BODY: APPS.PAY_GB_RTI_FPS
Source
1 PACKAGE BODY PAY_GB_RTI_FPS AS
2 /* $Header: pygbrtifps.pkb 120.1.12020000.134 2013/03/29 13:37:12 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
10 Purpose:
11 It fetches the live data and archives it for RTI Processes.
12 This is a UK Specific payroll package.
13 History:
14 4-May-2012 krreddy 115.0 13918120 Created.
15 8-May-2012 krreddy 115.1 13918120 Corrected the GSCC Errors.
16 9-May-2012 krreddy 115.2 13918120 Modified code related to Config Values and Periods Covered.
17 4-Jun-2012 krreddy 115.3 13918120 Modified to implement the below:
18 Multithreading issue
19 BACS changes
20 ASG_RUN logic
21 Negative Payments
22 Passport Number - Document of Reference
23 7-Jun-2012 krreddy 115.4 13918120 Modified to implement the below:
24 First FPS changes
25 Payroll Frequency changes
26 8-Jun-2012 ssarap 115.5 13918120 Modified the changes for advanced pay and some balances.
27 11-Jun-2012 rajganga 115.6 14177802 Modified.
28 13-Jun-2012 rajganga 115.7 14177802 Modified.
29 13-Jun-2012 krreddy 115.8 13918120 Modified to update Starter Declaration field to address
30 new changes in the requirement.
31 14-Jun-2012 krreddy 115.9 13918120 Modified to implement appropriate Effective Date check.
32 15-Jun-2012 rajganga 115.10 14184141 Modified to include rollback when exp occurs in econ val.
33 15-Jun-2012 rajganga 115.10 14184141 Modified rollback to restored procedure.
34 15-Jun-2012 krreddy 115.11 13918120 Modified to update Pensioner values.
35 21-Jun-2012 rajganga 115.12 13918120 Modified Econ reporting and First Fps Balance calc.
36 21-JUN-2012 ssarap 115.13 13918120 Incorporated the hours worked changes of picking from various other sources.
37 25-Jun-2012 rajganga 115.14 14231920 Modified the submit_request date argument.
38 27-Jun-2012 rajganga 115.15 14231920 Modified to get Person Middle name for second forename.
39 06-Jul-2012 ssarap Removed the negative value changes.
40 06-Jul-2012 ssarap Fixed the hours worked issue.
41 07-Jul-2012 rajganga 115.16 14231920 Fixed the empty asg no and inappropriate error msg.
42 11-Jul-2012 rajganga 115.17 14231920 XML Generation Architecture changed to XDODTEXE and -ve payment changes.
43 13-Jul-2012 ssarap 115.18 Summed up SPP Adoption Total, SPP Adoption Total
44 and ASPP Adoption Total ,ASPP Adoption Total.
45 18-Jul-2012 ssarap Fixing balance related bug.
46 18-Jul-2012 rajganga 115.19 14309887 Fixed incorrect validation errors and payroll check.
47 19-Jul-2012 rajganga 115.20 14347577 Fixed Cap and NHS issues.
48 20-Jul-2012 rajganga 115.21 14347577 Increased Error msg length in the EDI output.
49 20-Jul-2012 ssarap 115.21 14347577 Code changes for hours worked, NI balances, Tax code issues.
50 30-Jul-2012 rajganga 115.22 14086377 Fixed issues of number conversion , no data found.
51 30-Jul-2012 rajganga 115.22 14086377 Output cp will not be spawned if emps count is zero and header error occurs.
52 31-Jul-2012 krreddy 115.23 14393796 Implemented the below for PAYE Aggregation and NI Only Aggregation:
53 Categorized the Archive Code flow into Non-Aggregated, PAYE Aggregated and NI Only Aggregated sections.
54 Implemented the Logic to process PAYE Aggregated employees.
55 Modified the First FPS logic so that it processes aggregated employees as well.
56 Modified the Output logic to capture and display warning messages.
57
58 ssarap Modified to implement NI Only Aggregation.
59 PAYE Aggregation - Balances fetching and reporting in output.
60 5-Aug-2012 krreddy 115.24 14393796 Implemented the below modifications for PAYE Aggregation:
61 Created new validation procedures for Aggregated Scenarios.
62 Created new procedure for Det1 context for Aggregated Scenarios.
63 Modified the warning messages logic.
64 Resolved the XML program spawning issue.
65 Implemented the logic for checking Prepayment and error out the employee.
66 5-Aug-2012 krreddy 115.25 14393796 Arcsed in the correct file.
67 5-Aug-2012 krreddy 115.26 14393796 Removed the additional cursor opening which is incorrect.
68 7-Aug-2012 ssarap 115.37 14393796 Made changes for validation related balances, corrected aggregated balances, merged
69 with Raj changes.
70 8-Aug-2012 ssarap 115.38 14461582 Fix for the bug 14461582. Corrected the NI balance related index.
71 9-Aug-2012 ssarap 115.39 14393796 Implemented the code review comments. Added distinct keyword in select into statement
72 in archinit procedure.
73 10-Aug-2012 ssarap 115.43 Implemented the bugs reported.
74 10-Aug-2012 ssarap 115.46 Implement Passport number changes similar to hours worked.
75 13-Aug-2012 ssarap 115.43 Implemented the review comment ID#32 reported.
76 17-Aug-2012 ssarap 115.49 Implemented the review comment ID#34,35 reported.
77 22-Aug-2012 ssarap 115.50 14461582 Removed the usage of g_effective_date in write_body.
78 Added the counter check to avoid the PLSQL table no data found issue.
79 23-Aug-2012 krreddy 115.51 14531479 Fixed Cap Balances issue by making use of max child action id.
80 26-Aug-2012 krreddy 115.52 14530108 Modified the processing logic to fix incorrect output issue.
81 27-Aug-2012 rajganga 115.53 14503452 Modified csr_ni_info , csr_asg_details and oneoff payment issues.
82 28-Aug-2012 ssarap 115.54 14549289 Fixed NI mismatch issues.
83 31-Aug-2012 rajganga 115.55 14549289 Fixed Payment after leaving indicator, added errors to the LOG file
84 Removed current emp flag check.
85 03-Sep-2012 rajganga 115.56 14577359 Fixed Termination logic and output file.
86 05-Sep-2012 ssarap 115.57 14549289 Fixed the NI Mismatch issue. Removed the swapping logic for archived values of NI context.
87 07-Sep-2012 rajganga 115.58 14576477 Removed unused pay_payrolls_f and added not null check for balances.
88 13-Sep-2012 ssarap 115.41 14365199 Fix for Interlocks, fix for balance doubling, fix for Retry.
89 14-Sep-2012 ssarap 115.42 14365199 Modified to raise an error when First FPS is already ran.
90 17-Sep-2012 rajganga 115.43 14365199 Modified to fix no data found issue.
91 17-Sep-2012 rajganga 115.44 14365199 Modified to fix no data found issue, added one more condition check
92 26-Sep-2012 krreddy 115.46 14313532 Leafproged and fixed the Tax Code Error.
93 27-Sep-2012 rajganga 115.47 14650604 Spawning Reconciliation Process.
94 03-Oct-2012 rajganga 115.48 14650604 New Starter RTI Sent flag check for Starter Declaration.
95 05-Oct-2012 rajganga 115.49 14683498 Fixed Econ issue.
96 05-Oct-2012 rajganga 115.50 14711819 Added the legislation code condition in the cursors get_defined_balance_id,
97 get_aggr_defined_balance_id, get_defined_balance_id_ni,get_aggr_defined_balance_id_ni.
98 08-Oct-2012 krreddy 115.51 14704814 Modified to error the program even if one asg error exists.
99 08-Oct-2012 rajganga 115.52 14704814 Modified address archiving ,End date and First FPS RTI sent logics.
100 09-Oct-2012 rajganga 115.53 14733866 Fixed the address issues.
101 10-Oct-2012 krredy 115.54 14709614 Fixed the start date issue for terminated asg.
102 10-Oct-2012 krredy 115.55 14709614 Further refined the fix for start date issue.
103 10-Oct-2012 krredy 115.56 14709614 Added few more conditions to the fix for start date issue.
104 11-Oct-2012 krredy 115.57 14737182 Removed a parameter while Spawning FPS Recon Report.
105 12-Oct-2012 rajganga 115.58 14737182 Fix re archiving during retry.
106 22-Oct-2012 ssarap On top of latest issues merged action creation code.
107 25-Oct-2012 krreddy 115.70 Latest code modified to archive two more columns for accomodating
108 Aggregation - Action Creation Logic.
109 25-Oct-2012 krreddy 115.71 Updated to accomodate NI Only Aggr changes in output logic.
110 25-Oct-2012 rajganga 115.72 14737182 Fixed No data and buffer small issue.
111 26-Oct-2012 ssarap 115.73 14737182 NI only aggregation and fixed the PAYE agg issues.
112 26-Oct-2012 ssarap 115.75 14737182 Fixed QA logged issues for PAYE aggregation.
113 26-Oct-2012 rajganga 115.76 14737182 Fixed det1 and det2 issue.
114 31-Oct-2012 ssarap 115.77 14827248 NI aggregation issue and interlock changes.
115 31-Oct-2012 krreddy 115.81 14827248 Fixed PAYE Aggregation issues on NI Records.
116 2-NOV -2012 ssarap 115.81 14827248 Fixed NI only aggregation issues from NHS.
117 9-Nov-2012 krreddy 115.87 14827248 This version includes the below changes on top of Action Creation Logic(115.81)
118 - PAYE Aggregation Errors occured as a result of new actions created.
119 - NI Only Aggregation Errors occured as a result of new actions created.
120 - BACS Error - Occuring for PAYE Aggregation scenarios.
121 9-Nov-2012 ssarap 115.88 14827248 NI Only aggregation case customer case fix.
122 12-Nov-2012 ssarap 115.88 14827248 NI Only aggregation case customer case fix.
123 16-Nov-2012 ssarap 115.91 14827248 NI Only aggregation case changes and non aggregation NI balance summed up change.
124 21-Nov-2012 rajganga 115.92 14827248 Added Reversal and Balance Adjustments.
125 22-Nov-2012 rajganga 115.93 14827248 Fixed Bacs no data found issue.
126 22-Nov-2012 krreddy 115.94 14827248 Modified to resolve the issue of incorrect actions getting created.
127 23-Nov-2012 krreddy 115.95 14827248 Modified to resolve further issues related to incorrect actions getting created.
128 28-Nov-2012 rajganga 115.96 15903486 Modified to fetch all details for the RTI reporting asg where no payroll exist.
129 30-Nov-2012 rajganga 115.97 15903486 Modified to fetch RTI Payroll ID for PAYE Aggregation.
130 03-Dec-2012 rajganga 115.99 15903486 Modified to fix Date of Leaving issue and Director check.
131 04-Dec-2012 krreddy 115.100 Leapfroged and modified on top of version 98 for Date of Leaving issue.
132 12-Dec-2012 krreddy 115.101 Leapfroged and modified on top of version 99 to implement
133 - additional logic for processing PAYE Aggr in First FPS.
134 14-Dec-2012 rajganga 115.102 15951186 Modified to show error msg if no NI RTI reporting asg is found.
135 14-Dec-2012 krreddy 115.103 15951186 Modified to use correct asg_id in fetch_fps_aggr_asg_det1.
136 14-Dec-2012 rajganga 115.104 15951186 Modified to add additional logic for processing NI Only Aggr in First FPS.
137 24-DEC-2012 achandwa 115.105 16034919 Modified the value of annual pension value to be reported in pens and trimmerd the value
138 while fetching
139 03-JAN-2013 ssarap 115.106 Hours worked changes for PAYE aggregation case.
140 03-JAN-2013 ssarap 115.107 Corrected the typo for category J.
141 10-JAN-2013 rajganga 115.108 Corrected duplicate actions for same asg.
142 10-JAN-2013 rajganga 115.108 Removed continue statement.
143 31-JAN-2013 krreddy 115.110 16164625 Modified to check if really payment made in current tax year.
144 07-FEB-2013 ssarap 115.111 16276411 Fix for Mckesson reported issues.
145 08-FEB-2013 ssarap 115.113 16276411 Assignment number data type is modified.
146 09-FEB-2013 ssarap 115.114 16276411 NHS issues for validation.
147 12-FEB-2013 sampmand 115.116 16276411 Added logic to delete from pay_gb_fps_details in case of retry.
148 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.
149 14-FEB-2013 sampmand 115.118 16276411 Modified Tax Code Fetch logic to fix Mckesson issue.
150 Included 'TERM_ASSIGN' in get_eff_start_date cursor
151 to set first fps starter date correctly.
152 21-FEB-2013 sampmand 115.119 16328672 Modified starter flag checks in fetch_fps_asg_det1.
153 21-FEB-2013 ssarap 115.120 16345058 Initialiazed variable l_flag1 to 'Y' each time at
154 the start of the loop in action creation code.
155 04-Mar-2013 sampmand 115.121 16386622 Modified Retry Cursor,Ni reporting cursor.
156 11-Mar-2013 krreddy 115.122 16396194 Modified the below two procedures for correcting the balance values if they contain
157 Process Separate elements in the run:
158 fetch_fps_asg_det2 and fetch_fps_agg_asg_det2.
159 13-Mar-2013 ssarap 115.123 16414987 Hours worked fix for multiple assignments.
160 15-Mar-2013 ssarap 115.124 16469649 Changed the global variable usage in action creation.
161 15-Mar-2013 rajganga 115.125 16386622 Modified for Retry.
162 18-Mar-2013 sampmand 115.127 Modified Partner sur-name fetching logic for SR 3-6903967467.
163 20-Mar-2013 rajganga 115.129 16501443 Added sysdate+30 condition to Termination date.
164 20-Mar-2013 sampmand 115.130 16505555 Modified decode logic of tax_basis in procedure fetch_tax_code_basis.
165 22-Mar-2013 krreddy 115.131 16409794 Resolved the issue of incorrect picking of actions when no payment exists.
166 25-Mar-2013 krreddy 115.132 16542698 Resolved the NI Only and PAYE Aggr issues with No Payment Exist scenarios.
167 26-Mar-2013 krreddy 115.133 16459087 Modified two cursor queries in internal_action_creation to improve performance.
168 16503199 Updated the Starter Declaration validation logic.
169 26-Mar-2013 ssarap 115.128 16306737 Added a third party prepayment check for pay_pre_payments tables. Removed
170 the balances Pre Tax Deductions and NIable Deductions Free of Tax from 58B.
171 29-Mar-2013 ssarap 115.35 16555308 Changes to 58B calculation. Used the updated procedure fetch_HASH_FPS_PER.
172 Fetched the correct NI Employee values .
173 ============================================================================*/
174 --
175 --
176 g_package CONSTANT VARCHAR2(20) := 'pay_gb_rti_fps.';
177 c_contract_table_name CONSTANT pay_user_tables.user_table_name%TYPE := 'PQP_CONTRACT_TYPES';
178 g_start_year DATE;
179 g_end_year DATE;
180 g_effective_date DATE;
181 g_fps_effective_date DATE;
182 g_fps_start_year DATE;
183 g_fps_end_year DATE;
184 g_business_group_id hr_organization_units.business_group_id%TYPE;
185 g_legislation_code VARCHAR2(2) := 'GB';
186 g_permit_number VARCHAR2(12);
187 g_tax_district_reference VARCHAR2(3);
188 g_tax_reference_number VARCHAR2(10); --4011263: length 10 chars
189 g_split VARCHAR2(1);
190 g_pre_pact_id NUMBER;
191 g_first_fps VARCHAR2(1);
192 g_paye_element_id NUMBER:= -1;
193 g_paye_details_id NUMBER:= -1;
194 g_payroll_action_id NUMBER;
195 g_date_paid DATE;
196 g_asg_primary_flag VARCHAR2(1);
197 g_per_agg_flag VARCHAR2(1);
198 g_reset_flag_type VARCHAR2(30);
199 g_taxable_id pay_defined_balances.defined_balance_id%TYPE;
200 g_paye_id pay_defined_balances.defined_balance_id%TYPE;
201 g_student_loan_id pay_defined_balances.defined_balance_id%TYPE;
202 g_taxable_ptd_id pay_defined_balances.defined_balance_id%TYPE;
203 g_student_loan_ptd_id pay_defined_balances.defined_balance_id%TYPE;
204 g_paye_ptd_id pay_defined_balances.defined_balance_id%TYPE;
205 g_ssp_id pay_defined_balances.defined_balance_id%TYPE;
206 g_smp_id pay_defined_balances.defined_balance_id%TYPE;
207 g_ospp_adopt_id pay_defined_balances.defined_balance_id%TYPE;
208 g_sap_id pay_defined_balances.defined_balance_id%TYPE;
209 g_aspp_adopt_id pay_defined_balances.defined_balance_id%TYPE;
210 g_final_submission VARCHAR2(100);
211 g_free_tax_payments_made VARCHAR2(100);
212 g_expenses_benefits_others VARCHAR2(100);
213 g_employed_outside_uk VARCHAR2(100);
214 g_pay_to_third_party VARCHAR2(100);
215 g_p11d_due VARCHAR2(100);
216 g_hmrc_advance_received VARCHAR2(100);
217 g_cis_deductions VARCHAR2(100);
218 g_econ VARCHAR2(100);
219 g_service_company VARCHAR2(100);
220 g_ni_pt_eid NUMBER:=0;
221 g_ni_pt_ivid NUMBER:=0;
222 g_fps_bal_det_tab t_fps_bal_det_tab;
223 g_fps_aggr_bal_det_tab t_fps_bal_det_tab;
224 g_defined_balance_lst pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of normal balances
225 g_aggr_defined_balance_lst pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of aggregation balances
226 g_aggr_defined_balance_lst_ni pay_balance_pkg.t_balance_value_tab; -- used for batch balance retrieval of ni aggregation balances
227 --
228 g_tax_ref VARCHAR2(20);
229 --
230 g_paye_eid NUMBER :=0 ;
231 g_ni_eid NUMBER :=0;
232 g_tax_ivid NUMBER :=0;
233 g_taxbasis_ivid NUMBER :=0;
234 g_pt_ivid NUMBER :=0;
235 --
236 --
237 g_ssp_total NUMBER;
238 g_smp_total NUMBER;
239 g_assp_total NUMBER;
240 g_sap_total NUMBER;
241 g_spp_total NUMBER;
242
243 g_payroll_id NUMBER;
244 g_first_fps_run_date date;
245
246 first_fps_indicator_error EXCEPTION;
247 first_fps_ran_already_error EXCEPTION;
248 --
249 g_adv_period_id NUMBER;
250 g_validation_check VARCHAR2(1) := 'Y';
251 g_prepayment_date date;
252
253 -- Function to fetch address details (CONTEXT - ADDRESS DETAILS)
254 FUNCTION fetch_address_rec(
255 p_person_id IN NUMBER,
256 p_assignment_id IN NUMBER,
257 p_effective_date IN DATE,
258 p_addr_rec OUT nocopy act_info_rec)
259 RETURN BOOLEAN
260 IS
261 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_address_rec';
262 l_arch BOOLEAN;
263 --address details
264 l_address_line1 per_addresses.address_line1%TYPE;
265 l_address_line2 per_addresses.address_line2%TYPE;
266 l_address_line3 per_addresses.address_line3%TYPE;
267 l_address_line4 per_addresses.address_line3%TYPE;
268
269 CURSOR csr_address
270 IS
271 SELECT upper(SUBSTR(trim(addr.address_line1),1,35)) addr1,
272 upper(SUBSTR(trim(addr.address_line2),1,35)) addr2,
273 upper(SUBSTR(trim(addr.address_line3),1,35)) addr3,
274 SUBSTR(addr.postal_code,1,10) post_code,
275 upper(SUBSTR(trim(addr.town_or_city),1,35)) addr4,
276 upper(SUBSTR(trim(addr.country),1,35)) country
277 FROM per_addresses addr
278 WHERE addr.person_id = p_person_id
279 AND ( addr.primary_flag = 'Y'
280 OR addr.primary_flag IS NULL)
281 AND p_effective_date
282 BETWEEN NVL(addr.date_from,fnd_date.canonical_to_date('0001/01/01 00:00:00'))
283 AND NVL(addr.date_to, fnd_date.canonical_to_date('4712/12/31 00:00:00'));
284
285 l_addr_rec csr_address%rowtype;
286
287 BEGIN
288 hr_utility.set_location('Entering : '||l_proc,1);
289 l_arch := true;
290
291 OPEN csr_address;
292 FETCH csr_address INTO l_addr_rec;
293 CLOSE csr_address;
294
295 l_address_line1 := l_addr_rec.addr1;
296 l_address_line2 := l_addr_rec.addr2;
297 l_address_line3 := l_addr_rec.addr3;
298 l_address_line4 := l_addr_rec.addr4;
299 -- Swapping from Address line4 to line2
300
301 IF l_address_line3 = ' ' THEN
302 l_address_line3 := l_address_line4;
303 l_address_line4 := ' ';
304 END IF;
305
306 IF l_address_line2 = ' ' THEN
307 l_address_line2 := l_address_line3;
308 l_address_line3 := l_address_line4;
309 l_address_line4 := ' ';
310 END IF;
311
312 IF LENGTH(TRIM(l_address_line4)) > 0 THEN
313 l_address_line4 := l_address_line4;
314 ELSE
315 l_address_line4 := ' ';
316 END IF;
317
318 IF LENGTH(TRIM(l_address_line3)) > 0 THEN
319 l_address_line3 := l_address_line3;
320 ELSE
321 l_address_line3 := l_address_line4;
322 l_address_line4 := ' ';
323 END IF;
324
325 IF LENGTH(TRIM(l_address_line2)) > 0 THEN
326 l_address_line2 := l_address_line2;
327 ELSE
328 l_address_line2 := l_address_line3;
329 l_address_line3 := l_address_line4;
330 l_address_line4 := ' ';
331 END IF;
332 -- For Foreign Country, postal code will not be reported , where as Country will be reported
333 -- For GB , postal code will be reported
334
335 IF l_addr_rec.country = 'GB' THEN
336 IF l_addr_rec.post_code <> ' ' OR l_addr_rec.post_code IS NOT NULL THEN
337 l_addr_rec.country := ' ';
338 END IF;
339 ELSE
340 l_addr_rec.post_code:= ' ';
341 END IF;
342
343 hr_utility.trace('line 1'||l_address_line1);
344 hr_utility.trace('line 2'||l_address_line2);
345 hr_utility.trace('line 3'||l_address_line3);
346 hr_utility.trace('line 4'||l_address_line4);
347
348 p_addr_rec.assignment_id := p_assignment_id;
349 p_addr_rec.action_info_category := 'ADDRESS DETAILS';
350 p_addr_rec.act_info5 := l_address_line1;
351 p_addr_rec.act_info6 := l_address_line2;
352 p_addr_rec.act_info7 := l_address_line3;
353 p_addr_rec.act_info8 := l_address_line4;
354 p_addr_rec.act_info12 := l_addr_rec.post_code;
355 p_addr_rec.act_info13 := l_addr_rec.country;
356 hr_utility.set_location('Leaving: '||l_proc,999);
357 RETURN l_arch;
358 END fetch_address_rec;
359
360 --
361 /*
362 Returns the hours worked value for the person from the source configured in Configuration
363 values page for this BG.
364 */
365 FUNCTION get_hours_worked(
366 p_assignment_id NUMBER)
367 RETURN VARCHAR2
368 IS
369 l_config_values PQP_UTILITIES.t_config_values;
370 g_bon_bal_type_id NUMBER;
371 l_source_name VARCHAR2(100);
372 l_context_name VARCHAR2(100);
373 l_column_name VARCHAR2(100);
374 l_function_name VARCHAR2(100);
375 l_sqlstr VARCHAR2(1000);
376 l_hours_worked VARCHAR2(20) := NULL;
377 l_package VARCHAR2(100);
378 l_frequency VARCHAR2(20);
379 l_working_hours VARCHAR2(20);
380 l_effective_date date;
381 l_paye_agg_flag varchar2(100);
382 l_hours_worked_asg number;
383 l_asg_eff_date date;
384 l_irregular varchar2(2):= 'N';
385 cursor csr_normal_hours is
386 select AEI_INFORMATION2 from per_assignment_extra_info
387 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
388 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
389
390 cursor csr_stnd_cond(c_asg_id number) is
391 select FREQUENCY , NORMAL_HOURS from per_all_assignments_f where assignment_id = c_asg_id and
392 l_effective_date between effective_start_date and effective_end_date;
393
394 cursor csr_asg_start_date(c_asg_id number) is
395 select max(effective_start_date) from per_all_assignments_f
396 where assignment_id = c_asg_id
397 and assignment_type = 'E'
398 and effective_start_date <= g_effective_date;
399
400 -- to get the agg flag.
401 cursor csr_agg_flag(c_asg_id number) is
402 SELECT trim(nvl(pap.per_information10,'N')) per_agg_flag
403 FROM per_all_people_f pap,
404 per_all_assignments_f asg
405 WHERE asg.assignment_id = c_asg_id
406 AND pap.person_id = asg.person_id
407 AND asg.business_group_id = g_business_group_id
408 AND l_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
409 AND l_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
410
411 cursor csr_asg is
412 select paaf.assignment_id
413 from per_all_assignments_f paaf,
414 pay_payrolls_f pay,
415 hr_soft_coding_keyflex sck
416 where paaf.person_id = (select distinct person_id from per_all_assignments_f where ASSIGNMENT_ID =p_assignment_id)
417 and pay.payroll_id = paaf.payroll_id
418 and pay.SOFT_CODING_KEYFLEX_ID = sck.SOFT_CODING_KEYFLEX_ID
419 and sck.SEGMENT1 = g_tax_ref
420 and paaf.EFFECTIVE_START_DATE =
421 ( select max(paaf1.effective_start_date)
422 from per_all_assignments_f paaf1
423 where paaf1.assignment_id = paaf.assignment_id
424 and paaf1.assignment_type = 'E'
425 and paaf1.effective_start_date <= l_effective_date
426 )
427 and l_effective_date between pay.EFFECTIVE_START_DATE and pay.EFFECTIVE_END_DATE;
428
429
430 BEGIN
431 hr_utility.trace('Entering get_hours_worked');
432 hr_utility.trace('g_effective_date in hours worked : ' || g_effective_date);
433 open csr_asg_start_date(p_assignment_id);
434 fetch csr_asg_start_date into l_effective_date;
435 close csr_asg_start_date;
436 hr_utility.trace('l_effective_date in hours worked : ' || l_effective_date);
437
438 open csr_agg_flag(p_assignment_id);
439 fetch csr_agg_flag into l_paye_agg_flag;
440 close csr_agg_flag;
441 hr_utility.trace('l_paye_agg_flag: ' || l_paye_agg_flag);
442 -- Source 1
443
444 -- First check the hours worked from normal hours in the assignment form
445 -- Assignment EIT Context='RTI Information' and segment 'Normal Hours Band'
446
447 open csr_normal_hours;
448 fetch csr_normal_hours into l_hours_worked;
449 close csr_normal_hours;
450
451 -- Source 2
452 -- Configuration values
453 if l_hours_worked is null then
454 hr_utility.trace('in config ');
455 -- Use below API to get the config values for the given context in the business group
456 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_HOURS_WORKED' ,
457 p_business_group_id => g_business_group_id ,
458 p_legislation_code => g_legislation_code ,
459 p_tab_config_values => l_config_values );
460
461 IF l_config_values.COUNT > 0 THEN -- Source is hours worked.
462 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
463 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
464 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
465 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
466 hr_utility.trace('l_source_name: ' || l_source_name);
467 hr_utility.trace('l_context_name: ' || l_context_name);
468 hr_utility.trace('l_column_name: ' || l_column_name);
469 hr_utility.trace('l_function_name: ' || l_function_name);
470
471 /**
472 Source for deriving the hours worked can be
473 - Assignment ==> Extra details
474 - Assignment ==> DFF
475 - Formula Function
476 **/
477 IF l_source_name = 'Assignment Developer DF' THEN
478 l_sqlstr := 'select ' || l_column_name ||
479 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
480 begin
481 EXECUTE immediate l_sqlstr INTO l_hours_worked USING p_assignment_id,l_context_name;
482 exception
483 WHEN OTHERS THEN
484 hr_utility.trace('Exception in get hours worked.Assignment Developer DFF.');
485 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
486 end;
487 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
488 l_sqlstr := 'select ' || l_column_name ||
489 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
490 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
491 begin
492 EXECUTE immediate l_sqlstr INTO l_hours_worked USING p_assignment_id,l_context_name;
493 exception
494 WHEN OTHERS THEN
495 hr_utility.trace('Exception in get hours worked.PER_ASSIGNMENTS.');
496 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
497 end;
498 elsif l_source_name = 'Function' THEN
499 begin
500 SELECT definition
501 INTO l_package
502 FROM ff_functions
503 WHERE name = l_function_name
504 and business_group_id = g_business_group_id;
505
506 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_hours_worked' USING OUT l_hours_worked;
507 hr_utility.trace('l_package'||l_package);
508
509 if l_paye_agg_flag = 'Y' then
510 --get all asg for PAYE agg
511 hr_utility.trace('Agg Person . Hours worked.');
512 for asg_rec in csr_asg loop
513 open csr_asg_start_date(asg_rec.assignment_id);
514 fetch csr_asg_start_date into l_asg_eff_date;
515 close csr_asg_start_date;
516 l_sqlstr :=
517 'SELECT '
518 || l_package
519 || ' (:p_assignment_id,:p_eff_date) '
520 || 'FROM DUAL';
521 EXECUTE IMMEDIATE l_sqlstr into l_hours_worked_asg USING asg_rec.assignment_id,l_asg_eff_date;
522 l_hours_worked := nvl(l_hours_worked,0) + l_hours_worked_asg;
523 end loop;
524 else
525 l_sqlstr :=
526 'SELECT '
527 || l_package
528 || ' (:p_assignment_id,:p_eff_date) '
529 || 'FROM DUAL';
530 EXECUTE IMMEDIATE l_sqlstr into l_hours_worked USING p_assignment_id,l_effective_date;
531 end if; -- end paye agg
532 if l_hours_worked = 0 then
533 l_hours_worked := 'D';
534 end if;
535 hr_utility.trace('Function value l_hours_worked '||l_hours_worked);
536 exception
537 WHEN OTHERS THEN
538 hr_utility.trace('Exception in get hours worked.Function.');
539 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
540 end;
541 END IF;
542
543 END IF;
544 END IF;--source 2 end
545
546 -- Source 3
547 --Assignment Standard Conditions
548 if l_hours_worked is null then
549 hr_utility.trace('in standard ');
550
551 if l_paye_agg_flag = 'Y' then
552 --get all asg for PAYE agg
553 hr_utility.trace('Agg Person . Hours worked.');
554 for asg_rec in csr_asg loop
555 open csr_stnd_cond(asg_rec.assignment_id);
556 fetch csr_stnd_cond into l_frequency, l_working_hours;
557 close csr_stnd_cond;
558 if l_frequency is not null and l_working_hours is not null then
559
560 if l_frequency = 'W' then
561 l_hours_worked := nvl(l_hours_worked,0) + l_working_hours;
562 elsif l_frequency = 'M' then
563 l_hours_worked := nvl(l_hours_worked,0) + round(l_working_hours *12/52,2);
564 elsif l_frequency = 'D' then
565 l_hours_worked := nvl(l_hours_worked,0) + round(l_working_hours *5,2);
566 elsif l_frequency = 'Y' then
567 l_hours_worked := nvl(l_hours_worked,0) + round(l_working_hours/52,2);
568 elsif l_frequency = 'H' then
569 l_irregular := 'Y';
570 end if;
571 end if;
572 end loop;
573 if l_irregular = 'Y' and l_hours_worked is null then
574 l_hours_worked := 'D';
575 end if;
576
577 else -- else paye agg
578 open csr_stnd_cond(p_assignment_id);
579 fetch csr_stnd_cond into l_frequency, l_working_hours;
580 close csr_stnd_cond;
581 if l_frequency is not null and l_working_hours is not null then
582
583 if l_frequency = 'W' then
584 l_hours_worked := l_working_hours;
585 elsif l_frequency = 'M' then
586 l_hours_worked := round(l_working_hours *12/52,2);
587 elsif l_frequency = 'D' then
588 l_hours_worked := round(l_working_hours *5,2);
589 elsif l_frequency = 'Y' then
590 l_hours_worked := round(l_working_hours/52,2);
591 elsif l_frequency = 'H' then
592 l_hours_worked := 'D';
593 end if;
594 end if;
595 end if; -- end for PAYE agg
596 end if; -- Soruce 3 end
597
598 hr_utility.trace(' l_hours_worked : ' || l_hours_worked);
599
600 -- Convert hours worked into Grades.
601 IF l_hours_worked IS NOT NULL AND LENGTH(TRIM(TRANSLATE (l_hours_worked, ' +-.0123456789',' '))) IS NULL THEN
602 IF to_number(l_hours_worked) <= 15.99 THEN
603 RETURN 'A';
604 elsif to_number(l_hours_worked) <= 29.99 THEN
605 RETURN 'B';
606 ELSE
607 RETURN 'C';
608 END IF;
609 ELSE
610 RETURN l_hours_worked;
611 END IF;
612 hr_utility.trace('Leaving get_hours_worked');
613 EXCEPTION
614 WHEN OTHERS THEN
615 hr_utility.trace('Exception in get hours worked end of function block.');
616 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
617 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
618 return null;
619 END get_hours_worked;
620
621 /*
622 Returns get_periods_covered value for the person from the source configured in Configuration
623 values page for this BG.
624 */
625 FUNCTION get_periods_covered(
626 p_assignment_id NUMBER)
627 RETURN VARCHAR2
628 IS
629 l_config_values PQP_UTILITIES.t_config_values;
630 g_bon_bal_type_id NUMBER;
631 l_source_name VARCHAR2(100);
632 l_context_name VARCHAR2(100);
633 l_column_name VARCHAR2(100);
634 l_function_name VARCHAR2(100);
635 l_sqlstr VARCHAR2(1000);
636 l_periods_covered VARCHAR2(20) := NULL;
637 l_package VARCHAR2(100);
638 l_frequency VARCHAR2(20);
639 l_effective_date date;
640
641 cursor csr_periods_covered_eit is
642 select AEI_INFORMATION1 from per_assignment_extra_info
643 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
644 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
645
646 cursor csr_asg_start_date is
647 select max(effective_start_date) from per_all_assignments_f
648 where assignment_id = p_assignment_id
649 and assignment_type = 'E'
650 and effective_start_date <= g_effective_date;
651
652 BEGIN
653
654 hr_utility.trace('Entering get_periods_covered');
655 hr_utility.trace('g_effective_date in get_periods_covered : ' || g_effective_date);
656 open csr_asg_start_date;
657 fetch csr_asg_start_date into l_effective_date;
658 close csr_asg_start_date;
659 hr_utility.trace('l_effective_date in get_periods_covered : ' || l_effective_date);
660
661 -- Source 1
662
663 -- First check in the assignment form
664 -- Assignment EIT Context='RTI Information'
665
666 open csr_periods_covered_eit;
667 fetch csr_periods_covered_eit into l_periods_covered;
668 close csr_periods_covered_eit;
669
670 -- Source 2
671 -- Configuration values
672 if l_periods_covered is null then
673 hr_utility.trace('in config ');
674
675 -- Use below API to get the config values for the given context in the business group
676 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_PERIODS_COVERED' ,
677 p_business_group_id => g_business_group_id ,
678 p_legislation_code => g_legislation_code ,
679 p_tab_config_values => l_config_values );
680
681 IF l_config_values.COUNT > 0 THEN
682 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
683 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
684 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
685 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
686
687 hr_utility.trace('l_source_name: ' || l_source_name);
688 hr_utility.trace('l_context_name: ' || l_context_name);
689 hr_utility.trace('l_column_name: ' || l_column_name);
690 hr_utility.trace('l_function_name: ' || l_function_name);
691
692 /**
693
694 - Assignment ==> Extra details
695 - Assignment ==> DFF
696 - Formula Function
697 **/
698 IF l_source_name = 'Assignment Developer DF' THEN
699 l_sqlstr := 'select ' || l_column_name ||
700 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
701 begin
702
703 hr_utility.trace('string '||l_sqlstr);
704 EXECUTE immediate l_sqlstr INTO l_periods_covered USING p_assignment_id,l_context_name;
705
706 exception
707 WHEN OTHERS THEN
708 hr_utility.trace('Exception in get_periods_covered.Assignment Developer DFF.');
709 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
710 return null;
711 end;
712
713 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
714
715 l_sqlstr := 'select ' || l_column_name ||
716 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
717 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
718 begin
719 EXECUTE immediate l_sqlstr INTO l_periods_covered USING p_assignment_id,l_context_name;
720
721 exception
722 WHEN OTHERS THEN
723 hr_utility.trace('Exception in get_periods_covered.PER_ASSIGNMENTS.');
724 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
725 return null;
726 end;
727
728 elsif l_source_name = 'Function' THEN
729
730 begin
731 SELECT definition
732 INTO l_package
733 FROM ff_functions
734 WHERE name = l_function_name
735 and business_group_id = g_business_group_id;
736
737 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_periods_covered' USING OUT l_periods_covered;
738 hr_utility.trace('l_package'||l_package);
739
740 l_sqlstr :=
741 'SELECT '
742 || l_package
743 || ' (:p_assignment_id,:p_eff_date) '
744 || 'FROM DUAL';
745 EXECUTE IMMEDIATE l_sqlstr into l_periods_covered USING p_assignment_id,l_effective_date;
746
747 hr_utility.trace('Function value l_periods_covered '||l_periods_covered);
748
749 exception
750 WHEN OTHERS THEN
751 hr_utility.trace('Exception in get_periods_covered.Function.');
752 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
753 return null;
754 end;
755
756 END IF;
757
758 END IF;
759 END IF;--source 2 end
760
761 hr_utility.trace(' l_periods_covered : ' || l_periods_covered);
762 hr_utility.trace('Leaving get_periods_covered');
763
764 return l_periods_covered;
765
766 EXCEPTION
767 WHEN OTHERS THEN
768 hr_utility.trace('Exception in get_periods_covered end of function block.');
769 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
770 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
771 return null;
772 END get_periods_covered;
773
774
775 /*
776 Returns get_irregular_payment value for the person from the source configured in Configuration
777 values page for this BG.
778 */
779 FUNCTION get_irregular_payment(
780 p_assignment_id NUMBER)
781 RETURN VARCHAR2
782 IS
783 l_config_values PQP_UTILITIES.t_config_values;
784 g_bon_bal_type_id NUMBER;
785 l_source_name VARCHAR2(100);
786 l_context_name VARCHAR2(100);
787 l_column_name VARCHAR2(100);
788 l_function_name VARCHAR2(100);
789 l_sqlstr VARCHAR2(1000);
790 l_irregular_payment VARCHAR2(20) := NULL;
791 l_package VARCHAR2(100);
792 l_frequency VARCHAR2(20);
793 l_effective_date date;
794
795 cursor csr_irregular_payment_eit is
796 select AEI_INFORMATION3 from per_assignment_extra_info
797 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
798 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
799
800 cursor csr_asg_start_date is
801 select max(effective_start_date) from per_all_assignments_f
802 where assignment_id = p_assignment_id
803 and assignment_type = 'E'
804 and effective_start_date <= g_effective_date;
805
806 BEGIN
807
808 hr_utility.trace('Entering get_irregular_payment');
809 hr_utility.trace('g_effective_date in get_irregular_payment : ' || g_effective_date);
810 open csr_asg_start_date;
811 fetch csr_asg_start_date into l_effective_date;
812 close csr_asg_start_date;
813 hr_utility.trace('l_effective_date in get_irregular_payment : ' || l_effective_date);
814
815 -- Source 1
816
817 -- First check in the assignment form
818 -- Assignment EIT Context='RTI Information'
819
820 open csr_irregular_payment_eit;
821 fetch csr_irregular_payment_eit into l_irregular_payment;
822 close csr_irregular_payment_eit;
823
824 -- Source 2
825 -- Configuration values
826 if l_irregular_payment is null then
827 hr_utility.trace('in config ');
828
829 -- Use below API to get the config values for the given context in the business group
830 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_IRREGULAR_PAYMENT' ,
831 p_business_group_id => g_business_group_id ,
832 p_legislation_code => g_legislation_code ,
833 p_tab_config_values => l_config_values );
834
835 IF l_config_values.COUNT > 0 THEN
836 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
837 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
838 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
839 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
840
841 hr_utility.trace('l_source_name: ' || l_source_name);
842 hr_utility.trace('l_context_name: ' || l_context_name);
843 hr_utility.trace('l_column_name: ' || l_column_name);
844 hr_utility.trace('l_function_name: ' || l_function_name);
845
846 /**
847
848 - Assignment ==> Extra details
849 - Assignment ==> DFF
850 - Formula Function
851 **/
852 IF l_source_name = 'Assignment Developer DF' THEN
853 l_sqlstr := 'select ' || l_column_name ||
854 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
855 begin
856
857 hr_utility.trace('string '||l_sqlstr);
858 EXECUTE immediate l_sqlstr INTO l_irregular_payment USING p_assignment_id,l_context_name;
859
860 exception
861 WHEN OTHERS THEN
862 hr_utility.trace('Exception in get_irregular_payment Assignment Developer DFF.');
863 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
864 return null;
865 end;
866
867 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
868
869 l_sqlstr := 'select ' || l_column_name ||
870 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
871 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
872 begin
873 EXECUTE immediate l_sqlstr INTO l_irregular_payment USING p_assignment_id,l_context_name;
874
875 exception
876 WHEN OTHERS THEN
877 hr_utility.trace('Exception in get_irregular_payment PER_ASSIGNMENTS.');
878 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
879 return null;
880 end;
881
882 elsif l_source_name = 'Function' THEN
883
884 begin
885 SELECT definition
886 INTO l_package
887 FROM ff_functions
888 WHERE name = l_function_name
889 and business_group_id = g_business_group_id;
890
891 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_periods_covered' USING OUT l_irregular_payment;
892
893 hr_utility.trace('l_package'||l_package);
894
895 l_sqlstr :=
896 'SELECT '
897 || l_package
898 || ' (:p_assignment_id,:p_eff_date) '
899 || 'FROM DUAL';
900
901 EXECUTE IMMEDIATE l_sqlstr into l_irregular_payment USING p_assignment_id,l_effective_date;
902
903 hr_utility.trace('Function value l_irregular_payment '||l_irregular_payment);
904
905 exception
906 WHEN OTHERS THEN
907 hr_utility.trace('Exception in get_irregular_payment Function.');
908 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
909 return null;
910 end;
911
912 END IF;
913
914 END IF;
915 END IF;--source 2 end
916
917 hr_utility.trace(' l_irregular_payment : ' || l_irregular_payment);
918 hr_utility.trace('Leaving get_irregular_payment');
919
920 return l_irregular_payment;
921
922 EXCEPTION
923 WHEN OTHERS THEN
924 hr_utility.trace('Exception in get_irregular_payment end of function block.');
925 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
926 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
927 return null;
928 END get_irregular_payment;
929
930
931 /*
932 Returns get_oneoff_payment value for the person from the source configured in Configuration
933 values page for this BG.
934 */
935 FUNCTION get_oneoff_payment(
936 p_assignment_id NUMBER)
937 RETURN VARCHAR2
938 IS
939 l_config_values PQP_UTILITIES.t_config_values;
940 g_bon_bal_type_id NUMBER;
941 l_source_name VARCHAR2(100);
942 l_context_name VARCHAR2(100);
943 l_column_name VARCHAR2(100);
944 l_function_name VARCHAR2(100);
945 l_sqlstr VARCHAR2(1000);
946 l_oneoff_payment VARCHAR2(20) := NULL;
947 l_package VARCHAR2(100);
948 l_frequency VARCHAR2(20);
949 l_effective_date date;
950
951 cursor csr_oneoff_payment_eit is
952 select AEI_INFORMATION4 from per_assignment_extra_info
953 where assignment_id = p_assignment_id and INFORMATION_TYPE = 'GB_PAY_RTI'
954 and AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI';
955
956 cursor csr_asg_start_date is
957 select max(effective_start_date) from per_all_assignments_f
958 where assignment_id = p_assignment_id
959 and assignment_type = 'E'
960 and effective_start_date <= g_effective_date;
961
962 BEGIN
963
964 hr_utility.trace('Entering get_oneoff_payment');
965 hr_utility.trace('g_effective_date in get_oneoff_payment : ' || g_effective_date);
966 open csr_asg_start_date;
967 fetch csr_asg_start_date into l_effective_date;
968 close csr_asg_start_date;
969 hr_utility.trace('l_effective_date in get_oneoff_payment : ' || l_effective_date);
970
971 -- Source 1
972
973 -- First check in the assignment form
974 -- Assignment EIT Context='RTI Information'
975
976 open csr_oneoff_payment_eit;
977 fetch csr_oneoff_payment_eit into l_oneoff_payment;
978 close csr_oneoff_payment_eit;
979
980 -- Source 2
981 -- Configuration values
982 if l_oneoff_payment is null then
983 hr_utility.trace('in config ');
984
985 -- Use below API to get the config values for the given context in the business group
986 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_ONEOFF_PAYMENT' ,
987 p_business_group_id => g_business_group_id ,
988 p_legislation_code => g_legislation_code ,
989 p_tab_config_values => l_config_values );
990
991 IF l_config_values.COUNT > 0 THEN
992 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
993 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
994 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
995 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
996
997 hr_utility.trace('l_source_name: ' || l_source_name);
998 hr_utility.trace('l_context_name: ' || l_context_name);
999 hr_utility.trace('l_column_name: ' || l_column_name);
1000 hr_utility.trace('l_function_name: ' || l_function_name);
1001
1002 /**
1003
1004 - Assignment ==> Extra details
1005 - Assignment ==> DFF
1006 - Formula Function
1007 **/
1008 IF l_source_name = 'Assignment Developer DF' THEN
1009 l_sqlstr := 'select ' || l_column_name ||
1010 ' from per_assignment_extra_info where assignment_id = :assignment_id and AEI_INFORMATION_CATEGORY = :l_context_name';
1011 begin
1012
1013 hr_utility.trace('string '||l_sqlstr);
1014 EXECUTE immediate l_sqlstr INTO l_oneoff_payment USING p_assignment_id,l_context_name;
1015
1016 exception
1017 WHEN OTHERS THEN
1018 hr_utility.trace('Exception in get_oneoff_payment Assignment Developer DFF.');
1019 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1020 return null;
1021 end;
1022
1023 elsif l_source_name = 'PER_ASSIGNMENTS' THEN
1024
1025 l_sqlstr := 'select ' || l_column_name ||
1026 ' from per_all_assignments_f where assignment_id = :assignment_id and ASS_ATTRIBUTE_CATEGORY = :l_context_name'||
1027 ' and '||l_effective_date||' between effective_start_date and effective_end_date' ;
1028 begin
1029 EXECUTE immediate l_sqlstr INTO l_oneoff_payment USING p_assignment_id,l_context_name;
1030
1031 exception
1032 WHEN OTHERS THEN
1033 hr_utility.trace('Exception in get_oneoff_payment.PER_ASSIGNMENTS.');
1034 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1035 return null;
1036 end;
1037
1038 elsif l_source_name = 'Function' THEN
1039
1040 begin
1041 SELECT definition
1042 INTO l_package
1043 FROM ff_functions
1044 WHERE name = l_function_name
1045 and business_group_id = g_business_group_id;
1046
1047 hr_utility.trace('l_package'||l_package);
1048
1049 l_sqlstr :=
1050 'SELECT '
1051 || l_package
1052 || ' (:p_assignment_id,:p_eff_date) '
1053 || 'FROM DUAL';
1054 EXECUTE IMMEDIATE l_sqlstr into l_oneoff_payment USING p_assignment_id,l_effective_date;
1055
1056 hr_utility.trace('Function value l_oneoff_payment '||l_oneoff_payment);
1057 --EXECUTE IMMEDIATE 'CALL ' || l_package || '() INTO :l_periods_covered' USING OUT l_oneoff_payment;
1058
1059 exception
1060 WHEN OTHERS THEN
1061 hr_utility.trace('Exception in get_oneoff_payment.Function.');
1062 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1063 return null;
1064 end;
1065
1066 END IF;
1067
1068 END IF;
1069 END IF;--source 2 end
1070
1071 hr_utility.trace(' l_oneoff_payment : ' || l_oneoff_payment);
1072 hr_utility.trace('Leaving get_oneoff_payment');
1073
1074 return l_oneoff_payment;
1075
1076 EXCEPTION
1077 WHEN OTHERS THEN
1078 hr_utility.trace('Exception in get_oneoff_payment end of function block.');
1079 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1080 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
1081 return null;
1082 END get_oneoff_payment;
1083 /*
1084 Returns the passport number for the person from the source configured in Configuration
1085 values page for this BG.
1086 */
1087 FUNCTION get_passport_number(
1088 p_person_id VARCHAR2)
1089 RETURN VARCHAR2
1090 IS
1091 l_config_values PQP_UTILITIES.t_config_values;
1092 g_bon_bal_type_id NUMBER;
1093 l_source_name VARCHAR2(100);
1094 l_context_name VARCHAR2(100);
1095 l_column_name VARCHAR2(100);
1096 l_function_name VARCHAR2(100);
1097 l_passport_number VARCHAR2(100) := NULL;
1098 sqlstr VARCHAR2(1000);
1099 l_proc CONSTANT VARCHAR2(50):= g_package||'get_passport_number';
1100 l_package VARCHAR2(100);
1101 l_effective_date date;
1102 cursor csr_doc_of_rec
1103 is
1104 select hdei.document_number from hr_document_types hdt,hr_document_extra_info hdei
1105 where hdt.category_code = 'PPT_INFO'
1106 and hdt.document_type_id = hdei.document_type_id
1107 and hdei.person_id = p_person_id;
1108
1109 CURSOR csr_per_all_people
1110 IS
1111 SELECT l_column_name
1112 FROM per_all_people_f
1113 WHERE person_id = p_person_id
1114 AND ATTRIBUTE_CATEGORY = l_context_name
1115 ORDER BY effective_start_date,
1116 effective_end_date;
1117
1118 CURSOR csr_per_extra_people_info
1119 IS
1120 SELECT l_column_name
1121 FROM per_people_extra_info
1122 WHERE person_id = p_person_id
1123 AND PEI_INFORMATION_CATEGORY = l_context_name;
1124
1125 cursor csr_per_start_date is
1126 select max(effective_start_date) from per_all_people_f
1127 where person_id = p_person_id
1128 and effective_start_date <= g_effective_date;
1129
1130 BEGIN
1131 hr_utility.set_location('Entering: '||l_proc,1);
1132 hr_utility.trace('g_effective_date in get_passport_number : ' || g_effective_date);
1133
1134 open csr_per_start_date;
1135 fetch csr_per_start_date into l_effective_date;
1136 close csr_per_start_date;
1137
1138 hr_utility.trace('l_effective_date in get_oneoff_payment : ' || l_effective_date);
1139 -- Use below API to get the config values for the given context in the business group
1140 PQP_UTILITIES.get_config_type_values( p_configuration_type => 'PAY_GB_FPS_PASSPORT_NO' ,
1141 p_business_group_id => g_business_group_id ,
1142 p_legislation_code => g_legislation_code ,
1143 p_tab_config_values => l_config_values );
1144
1145 IF l_config_values.COUNT > 0 THEN
1146 l_source_name := l_config_values(l_config_values.FIRST).pcv_information1;
1147 l_context_name := l_config_values(l_config_values.FIRST).pcv_information4;
1148 l_column_name := l_config_values(l_config_values.FIRST).pcv_information5;
1149 l_function_name := l_config_values(l_config_values.FIRST).pcv_information6;
1150 hr_utility.set_location('l_source_name' || l_source_name,1);
1151 hr_utility.set_location('l_context_name' || l_context_name,1);
1152 hr_utility.set_location('l_column_name' || l_column_name,1);
1153 hr_utility.set_location('l_function_name' || l_function_name,1);
1154
1155 /** The source can be either from Others--> Extra information of the person
1156 or from the descriptive flex field on the person form.
1157 **/
1158 IF l_source_name = 'Extra Person Info DDF' THEN
1159 hr_utility.set_location('into Extra Person Info DDF',1);
1160 sqlstr := 'select ' || l_column_name ||
1161 ' from per_people_extra_info where person_id = :p_person_id and PEI_INFORMATION_CATEGORY = :l_context_name';
1162 hr_utility.set_location(sqlstr,1);
1163 begin
1164 EXECUTE immediate sqlstr INTO l_passport_number USING p_person_id,l_context_name;
1165 Exception
1166 when others then
1167 hr_utility.set_location('Exception in extra info : ' || sqlerrm,1);
1168 end;
1169
1170 elsif l_source_name = 'PER_PEOPLE' THEN
1171 hr_utility.set_location('into PER_PEOPLE',1);
1172 sqlstr := 'select ' || l_column_name ||
1173 ' from per_all_people_f where person_id = :p_person_id and ATTRIBUTE_CATEGORY = :l_context_name' ||
1174 ' and :l_effective_date between effective_start_date and effective_end_date' ;
1175 hr_utility.trace(sqlstr);
1176 begin
1177 EXECUTE immediate sqlstr INTO l_passport_number USING p_person_id,l_context_name,l_effective_date;
1178 exception
1179 when others then
1180 hr_utility.trace('Exception in per_people: ' || sqlerrm);
1181 end;
1182
1183 elsif l_source_name = 'Function' THEN
1184
1185 begin
1186 SELECT definition
1187 INTO l_package
1188 FROM ff_functions
1189 WHERE name = l_function_name
1190 and business_group_id = g_business_group_id;
1191
1192 hr_utility.trace('l_package'||l_package);
1193
1194 sqlstr :=
1195 'SELECT '
1196 || l_package
1197 || ' (:p_person_id,:p_eff_date) '
1198 || 'FROM DUAL';
1199 hr_utility.set_location(sqlstr,1);
1200 EXECUTE IMMEDIATE sqlstr into l_passport_number USING p_person_id,l_effective_date;
1201 hr_utility.trace('Function value l_passport_number '||l_passport_number);
1202 exception
1203 WHEN OTHERS THEN
1204 hr_utility.trace('Exception in get_passport_number.Function.');
1205 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
1206 return null;
1207 end;
1208
1209 END IF;
1210 ELSE
1211 -- GEt the passport number from Documents of record, if it null then get from config values.
1212 open csr_doc_of_rec;
1213 fetch csr_doc_of_rec into l_passport_number;
1214 close csr_doc_of_rec;
1215
1216 END IF;
1217 hr_utility.set_location('l_passport_number: '||l_passport_number,1);
1218 hr_utility.set_location('Leaving: '||l_proc,1);
1219
1220 RETURN l_passport_number;
1221
1222 EXCEPTION
1223 WHEN OTHERS THEN
1224 RETURN l_passport_number;
1225 return null;
1226 END get_passport_number;
1227
1228 -- Function to fetch person details (CONTEXT - GB RTI EMPLOYEE DETAILS)
1229 FUNCTION fetch_person_rec(
1230 p_assactid IN NUMBER,
1231 p_start_date IN DATE,
1232 p_end_date IN DATE,
1233 p_person_rec OUT nocopy act_info_rec)
1234 RETURN BOOLEAN
1235 IS
1236 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_person_rec';
1237 l_arch BOOLEAN;
1238 l_partner_name VARCHAR2(50);
1239 l_partner_ni VARCHAR2(30);
1240 l_partner_surname VARCHAR2(50);
1241 l_partner_first_name VARCHAR2(50);
1242 l_partner_second_name VARCHAR2(50);
1243
1244 CURSOR csr_person_details
1245 IS
1246 SELECT rownum Number_of_employee,
1247 pap.person_id p_person_id,
1248 paa.assignment_id,
1249 SUBSTR(trim(pap.last_name), 1,35) last_name,
1250 SUBSTR(trim(pap.first_name), 1,least(DECODE(instr(trim(pap.first_name),' '),0,35,instr(trim(pap.first_name),' ')),35)) first_name,
1251 SUBSTR(trim(pap.middle_names), 1,least(decode(instr(trim(pap.middle_names),' '),0,35,instr(trim(pap.middle_names),' ')),35)) middle_name,
1252 pap.title title,
1253 SUBSTR(pap.national_identifier,1,9) national_identifier,
1254 pap.date_of_birth date_of_birth,
1255 SUBSTR(pap.sex,1,1) sex ,
1256 DECODE(pap.per_information10,'Y','Y',NULL) agg_paye_flag,
1257 DECODE(pap.per_information9,'Y','Y',NULL) multiple_asg_flag
1258 FROM pay_assignment_actions act,
1259 per_all_assignments_f paa,
1260 per_all_people_f pap
1261 WHERE act.assignment_action_id = p_assactid
1262 AND act.assignment_id = paa.assignment_id
1263 AND paa.person_id = pap.person_id
1264 AND p_end_date between pap.effective_start_date and pap.effective_end_date
1265 AND paa.effective_start_date =
1266 (
1267 SELECT MAX(paa2.effective_start_date)
1268 FROM per_all_assignments_f paa2
1269 WHERE paa2.assignment_id = paa.assignment_id
1270 AND paa2.assignment_type = 'E'
1271 AND paa2.effective_start_date <= p_end_date
1272 );
1273
1274
1275 CURSOR csr_partner_details(c_person_id NUMBER)
1276 IS
1277 SELECT NVL(partner_name,''),
1278 partner_ni_number
1279 FROM ssp_medicals
1280 WHERE maternity_id IN
1281 (SELECT MAX(maternity_id)
1282 FROM per_absence_attendances
1283 WHERE person_id = c_person_id
1284 AND ABSENCE_ATTENDANCE_TYPE_ID IN
1285 (SELECT ABSENCE_ATTENDANCE_TYPE_ID
1286 FROM per_absence_attendance_types
1287 WHERE ABSENCE_CATEGORY IN ('GB_ADDL_PAT_ADOPT', 'GB_ADDL_PAT_BIRTH')
1288 )
1289 )
1290 AND EVIDENCE_STATUS = 'CURRENT';
1291 l_person_rec csr_person_details%rowtype;
1292
1293 BEGIN
1294 hr_utility.set_location('Entering: '||l_proc,1);
1295 l_arch := true;
1296 hr_utility.trace('p_assactid: '||p_assactid);
1297 hr_utility.trace('p_start_date: '||TO_CHAR(p_start_date));
1298 hr_utility.trace('p_end_date: '||TO_CHAR(p_end_date));
1299
1300 OPEN csr_person_details;
1301 FETCH csr_person_details INTO l_person_rec;
1302 CLOSE csr_person_details;
1303
1304 p_person_rec.person_id := l_person_rec.p_person_id;
1305 p_person_rec.assignment_id := l_person_rec.assignment_id;
1306 p_person_rec.action_info_category := 'GB RTI EMPLOYEE DETAILS';
1307 p_person_rec.act_info3 := l_person_rec.last_name;
1308 p_person_rec.act_info4 := l_person_rec.first_name;
1309 p_person_rec.act_info5 := l_person_rec.middle_name;
1310 p_person_rec.act_info6 := l_person_rec.title;
1311 p_person_rec.act_info7 := l_person_rec.national_identifier;
1312 p_person_rec.act_info8 := TO_CHAR(l_person_rec.date_of_birth,'YYYY-MM-DD');
1313 p_person_rec.act_info9 := l_person_rec.sex;
1314 p_person_rec.act_info10 := l_person_rec.agg_paye_flag;
1315 p_person_rec.act_info11 := l_person_rec.multiple_asg_flag;
1316 p_person_rec.act_info16 := get_passport_number(l_person_rec.p_person_id);
1317
1318 OPEN csr_partner_details(l_person_rec.p_person_id);
1319 FETCH csr_partner_details INTO l_partner_name, l_partner_ni;
1320 CLOSE csr_partner_details;
1321
1322 if instr(l_partner_name,' ') <> 0 then
1323 l_partner_surname := trim(SUBSTR(l_partner_name,1,instr(l_partner_name,' ')));
1324 else
1325 l_partner_surname := l_partner_name;
1326 end if;
1327 l_partner_first_name := trim(SUBSTR(l_partner_name,LENGTH(l_partner_surname) +1,instr(l_partner_name,' ',LENGTH(l_partner_surname))));
1328 l_partner_second_name := trim(SUBSTR(l_partner_name,LENGTH(l_partner_surname||l_partner_first_name)+2,(instr(l_partner_name,' ',
1329 LENGTH(l_partner_surname||l_partner_first_name)+3)) - (LENGTH(l_partner_surname||l_partner_first_name)+2) ));
1330 p_person_rec.act_info12 := l_partner_surname;
1331 p_person_rec.act_info13 := l_partner_first_name;
1332 p_person_rec.act_info14 := l_partner_second_name;
1333 p_person_rec.act_info15 := l_partner_ni;
1334 hr_utility.set_location('Leaving: '||l_proc,999);
1335 RETURN l_arch;
1336 END fetch_person_rec;
1337 --
1338
1339 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET1)
1340 FUNCTION fetch_fps_asg_det1(
1341 p_start_date IN DATE,
1342 p_end_date IN DATE,
1343 p_assactid IN NUMBER,
1344 p_last_asg_action_id IN NUMBER,
1345 p_fps IN varchar2,
1346 p_person_rec IN act_info_rec,
1347 p_fps_rec1 OUT nocopy act_info_rec,
1348 p_starter_set out nocopy varchar2)
1349 RETURN BOOLEAN
1350 IS
1351 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_asg_det1';
1352 l_arch BOOLEAN;
1353
1354 --Below cursor fetches the asg extra details of the current assignment
1355 CURSOR csr_fetch_other_fields
1356 IS
1357 SELECT AEI_INFORMATION1 periods_worked,
1358 AEI_INFORMATION3 irr_payment ,
1359 AEI_INFORMATION4 "One-Off Payment",
1360 ASSIGNMENT_EXTRA_INFO_ID,
1361 object_version_number
1362 FROM PER_ASSIGNMENT_EXTRA_INFO
1363 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
1364 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
1365 AND assignment_id = p_person_rec.assignment_id;
1366
1367 --Below cursor fetches the starter details of the current assignment
1368 CURSOR csr_get_starter_details(p_asg_id NUMBER)
1369 IS
1370 SELECT assignment_extra_info_id,
1371 aei_information1 starter_decl,
1372 aei_information2 prev_emp_paye_ref,
1373 aei_information3 prev_tax_code,
1374 aei_information4 date_left_prev_employer,
1375 aei_information5 prev_tax_basis,
1376 aei_information6 last_payment_period_type,
1377 aei_information7 last_payment_period,
1378 aei_information8 starter_flag,
1379 aei_information10 continue_with_student_loan,
1380 aei_information8 not_paid_between,
1381 object_version_number object_version_number
1382 FROM per_assignment_extra_info
1383 WHERE assignment_id = p_asg_id
1384 AND information_type = 'GB_RTI_ASG_DETAILS';
1385
1386 --Below cursor fetches the pension details of the current assignment
1387 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
1388 IS
1389 SELECT assignment_extra_info_id,
1390 aei_information9 pensioner_flag,
1391 aei_information12 date_pension_started,
1392 trim(aei_information13) annual_pension,
1393 aei_information14 recently_bereaved,
1394 object_version_number object_version_number
1395 FROM per_assignment_extra_info
1396 WHERE assignment_id = p_asg_id
1397 AND information_type = 'GB_RTI_ASG_DETAILS';
1398
1399 --Below cursor fetches the expat details of the current assignment
1400 CURSOR csr_get_expat_details(p_asg_id NUMBER)
1401 IS
1402 SELECT assignment_extra_info_id,
1403 aei_information15 expat_statement,
1404 aei_information16 date_emp_start_uk,
1405 aei_information17 eea_cw_citizen,
1406 aei_information18 epm6_scheme,
1407 aei_information19 expat_flag,
1408 object_version_number object_version_number
1409 FROM per_assignment_extra_info
1410 WHERE assignment_id = p_asg_id
1411 AND information_type = 'GB_RTI_ASG_DETAILS';
1412
1413 --Below cursor fetches the assignment numbers of the current assignment
1414 CURSOR csr_get_asg_numbers
1415 IS
1416 SELECT paaf.assignment_number assignment_number,
1417 paaf_old.assignment_number old_assignment_number
1418 FROM per_all_assignments_f paaf,
1419 per_all_assignments_f paaf_old
1420 WHERE paaf.assignment_id = p_person_rec.assignment_id
1421 AND ((paaf_old.assignment_id = paaf.assignment_id
1422 AND paaf_old.effective_start_date < paaf.effective_start_date
1423 AND paaf.effective_start_date > g_start_year
1424 AND paaf_old.effective_end_date > g_start_year)
1425 OR (paaf.assignment_number = paaf_old.assignment_number));
1426
1427 --Below cursor fetches further payment details of the current assignment
1428 CURSOR csr_get_more_payment_details
1429 IS
1430 SELECT ptp.regular_payment_date,
1431 ptp.period_num,
1432 ptp.period_type
1433 FROM pay_payroll_actions ppa,
1434 pay_assignment_actions paa,
1435 per_time_periods ptp
1436 WHERE assignment_action_id = p_last_asg_action_id
1437 AND ppa.time_period_id = ptp.time_period_id
1438 AND ppa.payroll_id = ptp.payroll_id
1439 AND paa.payroll_action_id = ppa.payroll_action_id;
1440
1441 --Below cursor fetches further period type details of the current assignment
1442 CURSOR csr_period_type_info(p_period_type VARCHAR2)
1443 IS
1444 SELECT ptpt.number_per_fiscal_year
1445 FROM per_time_period_types ptpt
1446 WHERE p_period_type = ptpt.period_type;
1447
1448 --Below cursor fetches basic ni details of the current assignment
1449 CURSOR csr_ni_info(c_asg_id NUMBER, c_asg_eff_start_date DATE)
1450 IS
1451 SELECT peevf.screen_entry_value screen_value
1452 FROM
1453 pay_element_entries_f peef,
1454 pay_element_entry_values_f peevf
1455 WHERE peef.assignment_id = c_asg_id
1456 AND peef.element_entry_id = peevf.element_entry_id
1457 AND peevf.input_value_id = g_ni_pt_ivid
1458 AND peef.element_type_id = g_ni_pt_eid
1459 AND c_asg_eff_start_date between peef.effective_start_date and peef.effective_end_date
1460 AND c_asg_eff_start_date between peevf.effective_start_date and peevf.effective_end_date;
1461 /*
1462 AND peef.effective_start_date <= g_effective_date
1463 AND peef.effective_end_date >= c_asg_eff_start_date
1464 AND peevf.effective_start_date <= g_effective_date
1465 AND peevf.effective_end_date >= c_asg_eff_start_date;
1466 */
1467
1468 --Below cursor fetches further ni details of the current assignment
1469 CURSOR csr_cat_NI_Details
1470 IS
1471 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
1472 FROM pay_assignment_actions paa ,
1473 pay_run_results prr,
1474 pay_run_result_values prrv,
1475 pay_element_types_f petf ,
1476 pay_input_values_f pivf
1477 WHERE paa.source_action_id = p_last_asg_action_id
1478 AND paa.assignment_action_id = prr.assignment_action_id
1479 AND prr.element_type_id = petf.element_type_id
1480 AND petf.element_name = 'NI DETAILS'
1481 AND prr.run_result_id = prrv.run_result_id
1482 AND prrv.input_value_id = pivf.input_value_id
1483 AND p_start_date between petf.effective_start_date and petf.effective_end_date
1484 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
1485
1486 --Below cursor fetches further ni details of the current assignment
1487 CURSOR csr_cat_NI
1488 IS
1489 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
1490 FROM pay_assignment_actions paa ,
1491 pay_run_results prr,
1492 pay_run_result_values prrv,
1493 pay_element_types_f petf ,
1494 pay_input_values_f pivf
1495 WHERE paa.source_action_id = p_last_asg_action_id
1496 AND paa.assignment_action_id = prr.assignment_action_id
1497 AND prr.element_type_id = petf.element_type_id
1498 AND petf.element_name = 'NI'
1499 AND prr.run_result_id = prrv.run_result_id
1500 AND prrv.input_value_id = pivf.input_value_id
1501 AND p_start_date between petf.effective_start_date and petf.effective_end_date
1502 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
1503
1504 --Below cursor fetches asg details of the current assignment
1505 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
1506 IS
1507 SELECT trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
1508 trim(NVL(pap.per_information10,'N')) per_agg_flag,
1509 asg.assignment_number assignment_number
1510 FROM per_all_people_f pap,
1511 per_all_assignments_f asg,
1512 pay_assignment_actions paa
1513 WHERE paa.assignment_action_id = c_asg_act_id
1514 AND paa.assignment_id = asg.assignment_id
1515 AND pap.person_id = asg.person_id
1516 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
1517 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
1518 AND pap.per_information_category = 'GB';
1519 /*AND asg.EFFECTIVE_START_DATE =
1520 (SELECT MAX(EFFECTIVE_START_DATE)
1521 FROM per_all_assignments_f paaf
1522 WHERE paaf.assignment_id = asg.assignment_id
1523 );*/
1524
1525 --Below cursor fetches the period start and end dates of payrolls processed in the current prepayment
1526 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)
1527 IS
1528 SELECT
1529 /*+ USE_NL(paa, pact, ptp) */
1530 MIN(ptp.start_date) payroll_period_start_date,
1531 MAX(ptp.end_date) payroll_period_end_date
1532 FROM pay_assignment_actions paa,
1533 pay_payroll_actions pact,
1534 per_time_periods ptp,
1535 pay_assignment_actions paa1, --Prepayments
1536 pay_payroll_actions ppa1, --Prepayments
1537 pay_action_interlocks pai --Prepayments
1538 WHERE paa.assignment_id = p_asgid
1539 AND paa.payroll_action_id = pact.payroll_action_id
1540 AND pact.time_period_id = ptp.time_period_id
1541 AND pact.action_type IN ('Q','R','B','I','V')
1542 AND paa.action_status IN ('C','S')
1543 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
1544 AND ppa1.payroll_action_id = p_pre_pay_id
1545 AND ppa1.action_type IN ('P','U')
1546 AND paa1.payroll_action_id = ppa1.payroll_action_id
1547 AND paa1.assignment_action_id = pai.locking_action_id
1548 AND paa.assignment_action_id = pai.locked_action_id;
1549
1550 -- Cursor to fetch Termination date
1551 cursor csr_terminated_date is
1552 select serv.actual_termination_date actual_termination_date
1553 from
1554 per_all_assignments_f asg,
1555 per_periods_of_service serv
1556 where asg.assignment_id = p_person_rec.assignment_id
1557 and asg.period_of_service_id = serv.period_of_service_id
1558 and p_end_date between asg.effective_start_date and asg.effective_end_date
1559 and actual_termination_date <= g_effective_date
1560 and actual_termination_date <= sysdate + 30 ;
1561
1562 --Below cursor fetches the termination date of the current assignment
1563 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
1564 IS
1565 SELECT min(paaf.effective_start_date) min_active_start_date
1566 FROM per_all_assignments_f paaf,
1567 per_assignment_status_types past,
1568 pay_all_payrolls_f pay,
1569 hr_soft_coding_keyflex sck
1570 WHERE paaf.assignment_id = p_asg_id
1571 AND paaf.assignment_status_type_id = past.assignment_status_type_id
1572 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN')
1573 AND paaf.payroll_id = pay.payroll_id
1574 AND pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
1575 AND upper(g_tax_ref) = upper(sck.segment1); --Modified for the bug 16503199
1576
1577 --Below cursor fetches the Last Pre-Payment id
1578 CURSOR csr_last_pre_pay_id (c_asg_id NUMBER)
1579 IS
1580 select ppa_prev.payroll_action_id
1581 from pay_payroll_actions ppa_prev,
1582 pay_payroll_actions ppa_current
1583 where ppa_prev.action_type IN ('P','U')
1584 and ppa_prev.payroll_id = ppa_current.payroll_id
1585 and ppa_prev.payroll_action_id < ppa_current.payroll_action_id
1586 and ppa_current.payroll_action_id = g_pre_pact_id
1587 and ppa_prev.payroll_action_id =
1588 (select max(ppa_max.payroll_action_id)
1589 from pay_payroll_actions ppa_max,
1590 pay_assignment_actions paa_max
1591 where ppa_max.payroll_id = ppa_current.payroll_id
1592 and ppa_max.payroll_action_id < ppa_current.payroll_action_id
1593 and ppa_max.action_type IN ('P','U')
1594 and ppa_max.payroll_action_id = paa_max.payroll_action_id
1595 and paa_max.assignment_id = c_asg_id );
1596
1597 --Below cursor fetches the Previous run FPS assignment_action_id
1598 CURSOR csr_last_fps_asg_act_id (c_last_pre_pay_id NUMBER, c_asg_id NUMBER)
1599 IS
1600 select paa_fps.assignment_action_id
1601 from pay_assignment_actions paa_prepay,
1602 pay_payroll_actions ppa_prepay,
1603 pay_assignment_actions paa_fps,
1604 pay_payroll_actions ppa_fps,
1605 pay_action_interlocks pai
1606 where ppa_prepay.payroll_action_id = c_last_pre_pay_id
1607 and ppa_prepay.payroll_action_id = paa_prepay.payroll_action_id
1608 and paa_prepay.assignment_action_id = pai.locked_action_id
1609 and paa_fps.assignment_action_id = pai.locking_action_id
1610 and paa_fps.payroll_action_id = ppa_fps.payroll_action_id
1611 and ppa_fps.action_type = 'X'
1612 and paa_fps.assignment_id = c_asg_id;
1613
1614 --Below cursor fetches the New Asg Number reported in Last FPS
1615 CURSOR csr_last_asg_num_submitted(c_last_fps_asg_act_id NUMBER, c_asg_id NUMBER)
1616 IS
1617 select ACTION_INFORMATION13
1618 from pay_action_information
1619 where action_context_id = c_last_fps_asg_act_id
1620 and action_information_category = 'GB_RTI_FPS_ASG_DET1'
1621 and assignment_id = c_asg_id;
1622
1623
1624 cursor csr_advance_pay_dates
1625 is
1626 select fnd_date.canonical_to_date(max(decode(pivf.name,'Start Date',peevf.screen_entry_value,null))) start_date,
1627 fnd_date.canonical_to_date(max(decode(pivf.name,'End Date',peevf.screen_entry_value,null))) end_date
1628 from pay_element_entries_f peef,
1629 pay_element_entry_values_f peevf ,
1630 pay_input_values_f pivf
1631 where
1632 peef.assignment_id = p_person_rec.assignment_id
1633 and peef.ELEMENT_TYPE_ID = g_adv_period_id
1634 and peef.element_entry_id = peevf.element_entry_id
1635 and peevf.input_value_id = pivf.input_value_id
1636 and pivf.element_type_id = peef.ELEMENT_TYPE_ID
1637 and g_effective_date between peevf.effective_start_date and peevf.effective_end_date
1638 and g_effective_date between pivf.effective_start_date and pivf.effective_end_date
1639 and g_effective_date between peef.effective_start_date and peef.effective_end_date;
1640
1641 -- Cursor to fetch Director details for the person
1642 cursor csr_director is
1643 select PER_INFORMATION2 from per_all_people_f papf
1644 where person_id = p_person_rec.person_id
1645 and effective_start_date =
1646 (select max(effective_start_date)
1647 from per_all_people_f where person_id = papf.person_id and effective_start_date <= g_effective_date);
1648
1649
1650 l_starter_rec csr_get_starter_details%rowtype;
1651 l_pensioner_rec csr_get_pensioner_details%rowtype;
1652 l_expat_rec csr_get_expat_details%rowtype;
1653 l_stay_over_6_months VARCHAR2(1);
1654 l_stay_less_6_months VARCHAR2(1);
1655 l_working_in_out_UK VARCHAR2(1);
1656 l_asg_number VARCHAR2(30);
1657 l_asg_number_old VARCHAR2(30);
1658 l_irr_payment_ind VARCHAR2(10);
1659 l_periods_covered VARCHAR2(10);
1660 l_one_off_pay VARCHAR2(10);
1661 l_payroll_id_changed_indicator VARCHAR2(1) := 'N';
1662 l_payment_date DATE;
1663 l_period_num NUMBER;
1664 l_period_type VARCHAR2(30);
1665 l_number_per_fiscal_yr NUMBER;
1666 l_payment_month_number NUMBER;
1667 l_payment_week_number NUMBER;
1668 l_ni_process_type VARCHAR2(10);
1669 l_dir_nic_calc_method VARCHAR2(30);
1670 l_dir_tax_week_num NUMBER;
1671 l_per_ni_agg_flag VARCHAR2(1);
1672 l_per_agg_flag VARCHAR2(1);
1673 l_aggr_earnings VARCHAR2(1);
1674 l_starter_decl VARCHAR2(30);
1675 l_continue_with_student_loan VARCHAR2(30);
1676 l_ovn NUMBER;
1677 l_starter_flag VARCHAR2(1);
1678 l_pensioner_flag VARCHAR2(1);
1679 l_expat_flag VARCHAR2(1);
1680 l_recently_bereaved VARCHAR2(30);
1681 l_annual_pension VARCHAR2(30);
1682 l_eea_cw_citizen VARCHAR2(30);
1683 l_epm6_scheme VARCHAR2(30);
1684 l_asg_eff_start_date DATE;
1685 l_frequency VARCHAR2(30);
1686 l_payroll_period_start_date DATE;
1687 l_payroll_period_end_date DATE;
1688 l_person_actual_term_date DATE;
1689 l_asg_effective_end_date DATE;
1690 l_payment_after_leaving VARCHAR2(1);
1691 l_date_of_leaving DATE;
1692 l_ovn_extra_info NUMBER;
1693 l_asg_info_id NUMBER;
1694 l_start_date DATE;
1695 l_end_date DATE;
1696 l_last_pre_pay_id NUMBER;
1697 l_last_fps_asg_act_id NUMBER;
1698 l_last_asg_num_submitted VARCHAR2(30);
1699 l_person_id number;
1700 l_min_active_start_date DATE;
1701 l_director VARCHAR2(1);
1702
1703 BEGIN
1704 hr_utility.set_location('Entering: '||l_proc,1);
1705 l_arch := true;
1706 p_starter_set := 'N';
1707 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
1708 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
1709 hr_utility.trace('Calling csr_get_starter_details');
1710 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
1711
1712 OPEN csr_get_starter_details(p_person_rec.assignment_id);
1713 FETCH csr_get_starter_details INTO l_starter_rec;
1714 CLOSE csr_get_starter_details;
1715
1716 l_starter_decl := NULL;
1717 l_continue_with_student_loan := NULL;
1718 l_starter_flag := l_starter_rec.starter_flag;
1719 g_reset_flag_type := NULL;
1720 hr_utility.trace('Calling csr_get_starter_details1');
1721 hr_utility.trace('l_starter_flag: '||l_starter_flag);
1722 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
1723 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
1724
1725 IF (l_starter_flag = 'N'
1726 AND (l_starter_rec.starter_decl IS NOT NULL
1727 OR NVL(l_starter_rec.continue_with_student_loan ,'N') = 'Y' )) THEN
1728 hr_utility.trace('Calling csr_get_starter_details2');
1729 l_starter_decl := l_starter_rec.starter_decl;
1730 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
1731 l_ovn := l_starter_rec.object_version_number;
1732 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
1733 p_object_version_number => l_ovn,
1734 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
1735 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
1736 p_aei_information8 => 'Y');
1737 p_starter_set := 'Y';
1738 g_reset_flag_type := 'STARTER';
1739 hr_utility.trace('Calling csr_get_starter_details3');
1740 END IF;
1741 ---
1742 hr_utility.trace('Calling csr_get_pensioner_details');
1743
1744 OPEN csr_get_pensioner_details(p_person_rec.assignment_id);
1745 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
1746 CLOSE csr_get_pensioner_details;
1747
1748 l_recently_bereaved := NULL;
1749 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
1750 l_annual_pension := NULL;
1751 g_reset_flag_type := NULL;
1752
1753 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
1754 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
1755 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
1756 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
1757
1758 IF (l_pensioner_flag = 'N'
1759 AND (NVL(l_pensioner_rec.recently_bereaved,'N') = 'Y'
1760 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
1761 l_starter_decl := 'B';
1762 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
1763 if l_pensioner_rec.annual_pension is not null then
1764 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
1765 end if;
1766 l_ovn := l_pensioner_rec.object_version_number;
1767 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
1768 p_object_version_number => l_ovn,
1769 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
1770 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
1771 p_aei_information9 => 'Y');
1772 g_reset_flag_type := 'PENSIONER';
1773 END IF;
1774 ---
1775 hr_utility.trace('Calling csr_get_expat_details');
1776
1777 OPEN csr_get_expat_details(p_person_rec.assignment_id);
1778 FETCH csr_get_expat_details INTO l_expat_rec;
1779 CLOSE csr_get_expat_details;
1780
1781 l_eea_cw_citizen := NULL;
1782 l_epm6_scheme := NULL;
1783 l_stay_over_6_months := NULL;
1784 l_stay_less_6_months := NULL;
1785 l_working_in_out_UK := NULL;
1786 l_expat_flag := l_expat_rec.expat_flag;
1787
1788 hr_utility.trace('Calling csr_get_expat_details1');
1789 hr_utility.trace('l_expat_flag: '||l_expat_flag);
1790 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
1791 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
1792 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
1793
1794 g_reset_flag_type := NULL;
1795
1796 IF (l_expat_flag = 'N'
1797 AND (NVL(l_expat_rec.eea_cw_citizen,'N') = 'Y'
1798 OR NVL(l_expat_rec.epm6_scheme,'N') = 'Y'
1799 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
1800 hr_utility.trace('Calling csr_get_expat_details2');
1801 IF l_expat_rec.expat_statement = 'A' THEN
1802 l_stay_over_6_months := 'Y';
1803 elsif l_expat_rec.expat_statement = 'B' THEN
1804 l_stay_less_6_months := 'Y';
1805 elsif l_expat_rec.expat_statement = 'C' THEN
1806 l_working_in_out_UK := 'Y';
1807 END IF;
1808
1809 hr_utility.trace('Calling csr_get_expat_details3');
1810 l_starter_decl := l_expat_rec.expat_statement;
1811 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
1812 l_epm6_scheme := l_expat_rec.epm6_scheme;
1813 l_ovn := l_expat_rec.object_version_number;
1814 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
1815 p_object_version_number => l_ovn,
1816 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
1817 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
1818 p_aei_information19 => 'Y');
1819 g_reset_flag_type := 'EXPAT';
1820 END IF;
1821
1822 hr_utility.trace('g_tax_ref: '||g_tax_ref);
1823 OPEN csr_get_term_asg_info (p_person_rec.assignment_id );
1824 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
1825 CLOSE csr_get_term_asg_info;
1826
1827
1828 ---
1829 IF (l_starter_rec.starter_flag = 'N') THEN
1830 IF((l_starter_rec.starter_decl IS NOT NULL
1831 OR NVL(l_starter_rec.continue_with_student_loan,'N') = 'Y')
1832 AND l_starter_rec.starter_flag = 'N')
1833
1834 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
1835 OR l_pensioner_rec.annual_pension IS NOT NULL
1836 OR NVL(l_pensioner_rec.recently_bereaved,'N') = 'Y')
1837 AND l_pensioner_rec.pensioner_flag = 'N')
1838
1839 OR ((l_expat_rec.expat_statement IS NOT NULL
1840 OR l_expat_rec.date_emp_start_uk IS NOT NULL
1841 OR NVL(l_expat_rec.eea_cw_citizen,'N') = 'Y'
1842 OR NVL(l_expat_rec.epm6_scheme,'N') = 'Y')
1843 AND l_expat_rec.expat_flag = 'N') THEN
1844 -- l_asg_eff_start_date := p_start_date;
1845 if(l_min_active_start_date >= g_start_year) then
1846 l_asg_eff_start_date := l_min_active_start_date;
1847 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
1848 end if;
1849
1850 ELSE
1851 l_asg_eff_start_date := NULL;
1852 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
1853 END IF;
1854 END IF;
1855 ---
1856
1857 --Fix for the bug 16503199 starts here
1858 IF ((nvl(l_starter_rec.starter_flag,'N') = 'N') AND
1859 (nvl(l_pensioner_rec.pensioner_flag,'N') = 'N') AND
1860 (nvl(l_expat_rec.expat_flag,'N') = 'N') AND
1861 (l_min_active_start_date >= g_start_year)) THEN
1862 l_asg_eff_start_date := l_min_active_start_date;
1863 hr_utility.trace('New Starter l_asg_eff_start_date: '||l_asg_eff_start_date);
1864 END IF;
1865 --Fix for the bug 16503199 ends here
1866
1867 OPEN csr_get_more_payment_details;
1868 FETCH csr_get_more_payment_details
1869 INTO l_payment_date,
1870 l_period_num,
1871 l_period_type;
1872 CLOSE csr_get_more_payment_details;
1873
1874 hr_utility.trace('l_payment_date :'||l_payment_date);
1875 hr_utility.trace('l_period_num :'||l_period_num);
1876 hr_utility.trace('l_period_type :'||l_period_type);
1877 g_date_paid:= l_payment_date;
1878
1879 ---
1880 if (l_period_type = 'Week') then
1881 l_frequency := 'W1';
1882 elsif (l_period_type = 'Bi-Month' or l_period_type = 'Bi-Week') then
1883 l_frequency := 'W2';
1884 elsif (l_period_type = 'Lunar Month') then
1885 l_frequency := 'W4';
1886 elsif (l_period_type = 'Calendar Month' or l_period_type = 'Semi-Month') then
1887 l_frequency := 'M1';
1888 elsif (l_period_type = 'Quarter') then
1889 l_frequency := 'M3';
1890 elsif (l_period_type = 'Semi-Year') then
1891 l_frequency := 'M6';
1892 elsif (l_period_type = 'Year') then
1893 l_frequency := 'MA';
1894 end if;
1895 ---
1896
1897 -- OPEN csr_asg(p_assactid, g_date_paid);
1898 OPEN csr_asg(p_last_asg_action_id, g_date_paid);
1899 FETCH csr_asg INTO l_per_ni_agg_flag, l_per_agg_flag, l_asg_number;
1900 CLOSE csr_asg;
1901
1902 hr_utility.trace('l_per_ni_agg_flag :'||l_per_ni_agg_flag);
1903 hr_utility.trace('l_per_agg_flag :'||l_per_agg_flag);
1904 hr_utility.trace('l_frequency :'||l_frequency);
1905
1906 IF l_per_ni_agg_flag = 'Y' OR l_per_agg_flag = 'Y' THEN
1907 l_aggr_earnings := 'Y';
1908 ELSE
1909 l_aggr_earnings:= 'N';
1910 END IF;
1911
1912 OPEN csr_period_type_info(l_period_type);
1913 FETCH csr_period_type_info INTO l_number_per_fiscal_yr;
1914 CLOSE csr_period_type_info;
1915
1916 hr_utility.trace('l_number_per_fiscal_yr :'||l_number_per_fiscal_yr);
1917 l_payment_month_number := NULL;
1918 l_payment_week_number := NULL;
1919
1920 IF l_number_per_fiscal_yr IN (1,2,4,6,12,24) THEN
1921 l_payment_month_number := l_period_num;
1922 ELSE
1923 l_payment_week_number := l_period_num;
1924 END IF;
1925
1926 hr_utility.trace('l_payment_month_number :'||l_payment_month_number);
1927 hr_utility.trace('l_payment_week_number :'||l_payment_week_number);
1928 ---
1929 --New Asg Number and Old Asg Number logic starts below
1930 hr_utility.trace('p_person_rec.assignment_id :'||p_person_rec.assignment_id);
1931
1932 OPEN csr_last_pre_pay_id(p_person_rec.assignment_id);
1933 FETCH csr_last_pre_pay_id INTO l_last_pre_pay_id;
1934 CLOSE csr_last_pre_pay_id;
1935 hr_utility.trace('l_last_pre_pay_id :'||l_last_pre_pay_id);
1936
1937 OPEN csr_last_fps_asg_act_id(l_last_pre_pay_id, p_person_rec.assignment_id);
1938 FETCH csr_last_fps_asg_act_id INTO l_last_fps_asg_act_id;
1939 CLOSE csr_last_fps_asg_act_id;
1940 hr_utility.trace('l_last_fps_asg_act_id :'||l_last_fps_asg_act_id);
1941
1942 OPEN csr_last_asg_num_submitted(l_last_fps_asg_act_id, p_person_rec.assignment_id);
1943 FETCH csr_last_asg_num_submitted INTO l_last_asg_num_submitted;
1944 CLOSE csr_last_asg_num_submitted;
1945 hr_utility.trace('l_last_asg_num_submitted :'||l_last_asg_num_submitted);
1946 hr_utility.trace('l_asg_number :'||l_asg_number);
1947
1948 if (l_asg_number <> l_last_asg_num_submitted)
1949 then
1950 hr_utility.trace('Inside if asg number is changed');
1951 l_asg_number_old := l_last_asg_num_submitted;
1952 l_payroll_id_changed_indicator := 'Y';
1953 else
1954 hr_utility.trace('Inside else asg number is not changed');
1955 l_asg_number_old := NULL;
1956 l_payroll_id_changed_indicator := NULL;
1957 end if;
1958 --New Asg Number and Old Asg Number logic ends below
1959 ---
1960 OPEN csr_ni_info(p_person_rec.assignment_id, p_start_date);
1961 FETCH csr_ni_info INTO l_ni_process_type;
1962 CLOSE csr_ni_info;
1963
1964 hr_utility.trace('l_ni_process_type: '||l_ni_process_type);
1965
1966 IF (l_ni_process_type = 'DY') THEN --Director
1967 l_dir_nic_calc_method := 'AN';
1968 elsif ((l_ni_process_type = 'DN') --Director Normal
1969 OR (l_ni_process_type = 'DP') --Director Pro Rate
1970 OR (l_ni_process_type = 'DR') --Director Pro Rate Normal
1971 OR (l_ni_process_type = 'PY')) THEN --Pensioner Director
1972 l_dir_nic_calc_method := 'AL';
1973 END IF;
1974 ---
1975 open csr_director;
1976 fetch csr_director into l_director;
1977 close csr_director;
1978
1979 if l_director = 'Y' then
1980 OPEN csr_cat_NI_Details;
1981 FETCH csr_cat_NI_Details INTO l_dir_tax_week_num;
1982 CLOSE csr_cat_NI_Details;
1983
1984 IF l_dir_tax_week_num IS NULL THEN
1985 OPEN csr_cat_NI;
1986 FETCH csr_cat_NI INTO l_dir_tax_week_num;
1987 CLOSE csr_cat_NI;
1988 END IF;
1989
1990 end if;
1991
1992 -- Get the Irregular payment indicator, periods covered and one-off payment.
1993 OPEN csr_fetch_other_fields;
1994 FETCH csr_fetch_other_fields
1995 INTO l_periods_covered,
1996 l_irr_payment_ind,
1997 l_one_off_pay,
1998 l_asg_info_id,
1999 l_ovn_extra_info;
2000 CLOSE csr_fetch_other_fields;
2001
2002 hr_utility.trace('l_periods_covered '||l_periods_covered);
2003 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
2004 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
2005 hr_utility.trace('l_asg_info_id '||l_asg_info_id);
2006 hr_utility.trace('l_ovn_extra_info '||l_ovn_extra_info);
2007
2008 if l_periods_covered is null then
2009 l_periods_covered := get_periods_covered(p_person_rec.assignment_id);
2010 end if;
2011
2012 if l_irr_payment_ind is null then
2013 l_irr_payment_ind := get_irregular_payment(p_person_rec.assignment_id);
2014 end if;
2015
2016 if l_one_off_pay is null then
2017 l_one_off_pay := get_oneoff_payment(p_person_rec.assignment_id);
2018 end if;
2019
2020 hr_utility.trace('l_periods_covered '||l_periods_covered);
2021 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
2022 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
2023
2024 open csr_advance_pay_dates;
2025 fetch csr_advance_pay_dates into l_start_date, l_end_date;
2026 close csr_advance_pay_dates;
2027 hr_utility.trace('l_start_date : ' || l_start_date);
2028 hr_utility.trace('l_end_date : ' || l_end_date);
2029
2030 if l_start_date is not null and l_end_date is not null then
2031 hr_utility.trace('test3');
2032 select
2033 pay_advance_pay_pkg.advanced_periods(
2034 p_person_rec.assignment_id,
2035 l_start_date,
2036 l_end_date
2037 ) into l_periods_covered from dual;
2038 hr_utility.trace('test4');
2039 -- reset the periods covered value to 1
2040 elsif l_periods_covered IS NOT NULL AND l_periods_covered <> 1 THEN
2041 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2042 p_object_version_number => l_ovn_extra_info,
2043 p_assignment_extra_info_id => l_asg_info_id,
2044 p_aei_information_category => 'GB_PAY_RTI',
2045 p_aei_information1 => 1);
2046 else
2047 l_periods_covered := 1;
2048 end if;
2049 hr_utility.trace('l_periods_covered : ' || l_periods_covered);
2050 hr_utility.trace('l_dir_tax_week_num : '|| l_dir_tax_week_num);
2051 ---
2052
2053 IF (l_irr_payment_ind = 'Y') THEN
2054 l_frequency := 'IR';
2055 elsif (l_one_off_pay = 'Y') THEN
2056 l_frequency := 'IO';
2057 END IF;
2058
2059 OPEN csr_all_payroll_actions(p_person_rec.assignment_id, g_pre_pact_id, p_start_date, g_start_year,g_end_year);
2060 FETCH csr_all_payroll_actions
2061 INTO l_payroll_period_start_date,
2062 l_payroll_period_end_date;
2063 CLOSE csr_all_payroll_actions;
2064
2065 open csr_terminated_date;
2066 fetch csr_terminated_date into l_person_actual_term_date;
2067 close csr_terminated_date;
2068 ---
2069 hr_utility.trace('p_end_date : '|| p_end_date);
2070 hr_utility.trace('l_person_actual_term_date : '|| l_person_actual_term_date);
2071
2072 IF p_fps = 'Y' and l_person_actual_term_date is not null THEN
2073 IF l_person_actual_term_date >= l_payroll_period_start_date and l_person_actual_term_date <= l_payroll_period_end_date THEN
2074 l_payment_after_leaving := 'N';
2075 ELSE
2076 l_payment_after_leaving := 'Y';
2077 END IF;
2078 ELSE
2079 l_payment_after_leaving := 'N';
2080 END IF;
2081
2082 /*
2083 IF (l_asg_effective_end_date > l_payroll_period_start_date
2084 AND l_asg_effective_end_date < l_payroll_period_end_date ) THEN
2085 l_date_of_leaving := l_asg_effective_end_date;
2086 ELSE
2087 l_date_of_leaving := NULL;
2088 END IF;*/
2089
2090 /*
2091 IF l_payment_after_leaving = 'Y' THEN
2092 l_date_of_leaving := l_person_actual_term_date;
2093 ELSE
2094 l_date_of_leaving := NULL;
2095 END IF;
2096 */
2097
2098 l_date_of_leaving := l_person_actual_term_date;
2099
2100
2101 -- If Date of Leaving is less then Start of the Previous Tax Year
2102 -- Updating it to Payment Date as Validation rule will fail
2103 if l_date_of_leaving is not null and l_date_of_leaving < (add_months(g_end_year,-24)+1) then
2104 l_date_of_leaving := l_payment_date;
2105 end if;
2106
2107
2108 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
2109 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
2110 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
2111 ---
2112 hr_utility.trace('Assigning values to p_fps_rec1');
2113
2114 p_fps_rec1.assignment_id := p_person_rec.assignment_id;
2115 p_fps_rec1.action_info_category := 'GB_RTI_FPS_ASG_DET1';
2116 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
2117 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
2118 p_fps_rec1.act_info3 := to_char(l_payment_date,'YYYY-MM-DD');
2119 p_fps_rec1.act_info4 := l_starter_decl;
2120 p_fps_rec1.act_info5 := l_continue_with_student_loan;
2121 p_fps_rec1.act_info6 := l_stay_over_6_months;
2122 p_fps_rec1.act_info7 := l_stay_less_6_months;
2123 p_fps_rec1.act_info8 := l_working_in_out_UK;
2124 p_fps_rec1.act_info9 := l_eea_cw_citizen;
2125 p_fps_rec1.act_info10 := l_epm6_scheme;
2126 p_fps_rec1.act_info11 := NULL; -- Recently Bereaved spouse / Civil Partner (State Pension) Not applicable
2127 p_fps_rec1.act_info12 := l_recently_bereaved;
2128 p_fps_rec1.act_info13 := l_asg_number;
2129 p_fps_rec1.act_info14 := l_payroll_id_changed_indicator;
2130 p_fps_rec1.act_info15 := l_asg_number_old;
2131 p_fps_rec1.act_info16 := l_irr_payment_ind;
2132 p_fps_rec1.act_info17 := l_frequency;
2133 p_fps_rec1.act_info18 := l_payment_week_number;
2134 p_fps_rec1.act_info19 := l_payment_month_number;
2135 p_fps_rec1.act_info20 := l_periods_covered;
2136 p_fps_rec1.act_info21 := l_aggr_earnings;
2137 p_fps_rec1.act_info22 := l_payment_after_leaving;
2138 p_fps_rec1.act_info23 := get_hours_worked(p_person_rec.assignment_id);
2139 p_fps_rec1.act_info24 := l_dir_nic_calc_method;
2140 p_fps_rec1.act_info25 := l_dir_tax_week_num;
2141 p_fps_rec1.act_info26 := l_annual_pension;
2142 p_fps_rec1.act_info27 := NULL; -- State Pension Not applicable
2143
2144 hr_utility.set_location('Leaving: '||l_proc,999);
2145 RETURN l_arch;
2146
2147 EXCEPTION
2148 WHEN OTHERS THEN
2149 hr_utility.set_location('Error in function fetch_fps_asg_det1 ', 15);
2150 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
2151 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
2152 RAISE;
2153 END fetch_fps_asg_det1;
2154 --
2155
2156 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET1)
2157 -- When there are no payments for the assignment this function will be called for Ni only Agg asgs
2158 FUNCTION fetch_fps_nopay_asg_det1(
2159 p_start_date IN DATE,
2160 p_end_date IN DATE,
2161 p_assactid IN NUMBER,
2162 p_last_asg_action_id IN NUMBER,
2163 p_fps IN varchar2,
2164 p_person_rec IN act_info_rec,
2165 p_fps_rec1 OUT nocopy act_info_rec,
2166 p_starter_set out nocopy varchar2)
2167 RETURN BOOLEAN
2168 IS
2169 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_asg_det1';
2170 l_arch BOOLEAN;
2171
2172 --Below cursor fetches the asg extra details of the current assignment
2173 CURSOR csr_fetch_other_fields
2174 IS
2175 SELECT AEI_INFORMATION1 periods_worked,
2176 AEI_INFORMATION3 irr_payment ,
2177 AEI_INFORMATION4 "One-Off Payment",
2178 ASSIGNMENT_EXTRA_INFO_ID,
2179 object_version_number
2180 FROM PER_ASSIGNMENT_EXTRA_INFO
2181 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
2182 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
2183 AND assignment_id = p_person_rec.assignment_id;
2184
2185 --Below cursor fetches the starter details of the current assignment
2186 CURSOR csr_get_starter_details(p_asg_id NUMBER)
2187 IS
2188 SELECT assignment_extra_info_id,
2189 aei_information1 starter_decl,
2190 aei_information2 prev_emp_paye_ref,
2191 aei_information3 prev_tax_code,
2192 aei_information4 date_left_prev_employer,
2193 aei_information5 prev_tax_basis,
2194 aei_information6 last_payment_period_type,
2195 aei_information7 last_payment_period,
2196 aei_information8 starter_flag,
2197 aei_information10 continue_with_student_loan,
2198 aei_information8 not_paid_between,
2199 object_version_number object_version_number
2200 FROM per_assignment_extra_info
2201 WHERE assignment_id = p_asg_id
2202 AND information_type = 'GB_RTI_ASG_DETAILS';
2203
2204 --Below cursor fetches the pension details of the current assignment
2205 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
2206 IS
2207 SELECT assignment_extra_info_id,
2208 aei_information9 pensioner_flag,
2209 aei_information12 date_pension_started,
2210 trim(aei_information13) annual_pension,
2211 aei_information14 recently_bereaved,
2212 object_version_number object_version_number
2213 FROM per_assignment_extra_info
2214 WHERE assignment_id = p_asg_id
2215 AND information_type = 'GB_RTI_ASG_DETAILS';
2216
2217 --Below cursor fetches the expat details of the current assignment
2218 CURSOR csr_get_expat_details(p_asg_id NUMBER)
2219 IS
2220 SELECT assignment_extra_info_id,
2221 aei_information15 expat_statement,
2222 aei_information16 date_emp_start_uk,
2223 aei_information17 eea_cw_citizen,
2224 aei_information18 epm6_scheme,
2225 aei_information19 expat_flag,
2226 object_version_number object_version_number
2227 FROM per_assignment_extra_info
2228 WHERE assignment_id = p_asg_id
2229 AND information_type = 'GB_RTI_ASG_DETAILS';
2230
2231 --Below cursor fetches the assignment numbers of the current assignment
2232 CURSOR csr_get_asg_numbers
2233 IS
2234 SELECT paaf.assignment_number assignment_number,
2235 paaf_old.assignment_number old_assignment_number
2236 FROM per_all_assignments_f paaf,
2237 per_all_assignments_f paaf_old
2238 WHERE paaf.assignment_id = p_person_rec.assignment_id
2239 AND ((paaf_old.assignment_id = paaf.assignment_id
2240 AND paaf_old.effective_start_date < paaf.effective_start_date
2241 AND paaf.effective_start_date > g_start_year
2242 AND paaf_old.effective_end_date > g_start_year)
2243 OR (paaf.assignment_number = paaf_old.assignment_number));
2244
2245 --Below cursor fetches further payment details of the current assignment
2246 CURSOR csr_get_more_payment_details(l_last_asg_action_id number)
2247 IS
2248 SELECT ptp.regular_payment_date,
2249 ptp.period_num,
2250 ptp.period_type
2251 FROM pay_payroll_actions ppa,
2252 pay_assignment_actions paa,
2253 per_time_periods ptp
2254 WHERE assignment_action_id = l_last_asg_action_id
2255 AND ppa.time_period_id = ptp.time_period_id
2256 AND ppa.payroll_id = ptp.payroll_id
2257 AND paa.payroll_action_id = ppa.payroll_action_id;
2258
2259 --Below cursor fetches further period type details of the current assignment
2260 CURSOR csr_period_type_info(p_period_type VARCHAR2)
2261 IS
2262 SELECT ptpt.number_per_fiscal_year
2263 FROM per_time_period_types ptpt
2264 WHERE p_period_type = ptpt.period_type;
2265
2266 --Below cursor fetches basic ni details of the current assignment
2267 CURSOR csr_ni_info(c_asg_id NUMBER, c_asg_eff_start_date DATE)
2268 IS
2269 SELECT peevf.screen_entry_value screen_value
2270 FROM
2271 pay_element_entries_f peef,
2272 pay_element_entry_values_f peevf
2273 WHERE peef.assignment_id = c_asg_id
2274 AND peef.element_entry_id = peevf.element_entry_id
2275 AND peevf.input_value_id = g_ni_pt_ivid
2276 AND peef.element_type_id = g_ni_pt_eid
2277 AND c_asg_eff_start_date between peef.effective_start_date and peef.effective_end_date
2278 AND c_asg_eff_start_date between peevf.effective_start_date and peevf.effective_end_date;
2279
2280
2281 --Below cursor fetches further ni details of the current assignment
2282 CURSOR csr_cat_NI_Details
2283 IS
2284 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
2285 FROM pay_assignment_actions paa ,
2286 pay_run_results prr,
2287 pay_run_result_values prrv,
2288 pay_element_types_f petf ,
2289 pay_input_values_f pivf
2290 WHERE paa.source_action_id = p_last_asg_action_id
2291 AND paa.assignment_action_id = prr.assignment_action_id
2292 AND prr.element_type_id = petf.element_type_id
2293 AND petf.element_name = 'NI DETAILS'
2294 AND prr.run_result_id = prrv.run_result_id
2295 AND prrv.input_value_id = pivf.input_value_id
2296 AND p_start_date between petf.effective_start_date and petf.effective_end_date
2297 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
2298
2299 --Below cursor fetches further ni details of the current assignment
2300 CURSOR csr_cat_NI
2301 IS
2302 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
2303 FROM pay_assignment_actions paa ,
2304 pay_run_results prr,
2305 pay_run_result_values prrv,
2306 pay_element_types_f petf ,
2307 pay_input_values_f pivf
2308 WHERE paa.source_action_id = p_last_asg_action_id
2309 AND paa.assignment_action_id = prr.assignment_action_id
2310 AND prr.element_type_id = petf.element_type_id
2311 AND petf.element_name = 'NI'
2312 AND prr.run_result_id = prrv.run_result_id
2313 AND prrv.input_value_id = pivf.input_value_id
2314 AND p_start_date between petf.effective_start_date and petf.effective_end_date
2315 AND p_start_date between pivf.effective_start_date and pivf.effective_end_date;
2316
2317
2318 --Below cursor fetches asg details of the current assignment
2319 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
2320 IS
2321 SELECT trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
2322 trim(NVL(pap.per_information10,'N')) per_agg_flag,
2323 asg.assignment_number assignment_number
2324 FROM per_all_people_f pap,
2325 per_all_assignments_f asg
2326 WHERE asg.assignment_id = c_asg_act_id
2327 AND pap.person_id = asg.person_id
2328 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
2329 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
2330 AND pap.per_information_category = 'GB';
2331
2332
2333 --Below cursor fetches the period start and end dates of payrolls processed in the current prepayment
2334 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)
2335 IS
2336 SELECT
2337 /*+ USE_NL(paa, pact, ptp) */
2338 MIN(ptp.start_date) payroll_period_start_date,
2339 MAX(ptp.end_date) payroll_period_end_date
2340 FROM pay_assignment_actions paa,
2341 pay_payroll_actions pact,
2342 per_time_periods ptp,
2343 pay_assignment_actions paa1, --Prepayments
2344 pay_payroll_actions ppa1, --Prepayments
2345 pay_action_interlocks pai --Prepayments
2346 WHERE paa.assignment_id = p_asgid
2347 AND paa.payroll_action_id = pact.payroll_action_id
2348 AND pact.time_period_id = ptp.time_period_id
2349 AND pact.action_type IN ('Q','R','B','I','V')
2350 AND paa.action_status IN ('C','S')
2351 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
2352 AND ppa1.payroll_action_id = p_pre_pay_id
2353 AND ppa1.action_type IN ('P','U')
2354 AND paa1.payroll_action_id = ppa1.payroll_action_id
2355 AND paa1.assignment_action_id = pai.locking_action_id
2356 AND paa.assignment_action_id = pai.locked_action_id;
2357
2358 -- Cursor to fetch Termination date
2359 cursor csr_terminated_date is
2360 select serv.actual_termination_date actual_termination_date
2361 from
2362 per_all_assignments_f asg,
2363 per_periods_of_service serv
2364 where asg.assignment_id = p_person_rec.assignment_id
2365 and asg.period_of_service_id = serv.period_of_service_id
2366 and p_end_date between asg.effective_start_date and asg.effective_end_date
2367 and actual_termination_date <= g_effective_date
2368 and actual_termination_date <= sysdate + 30 ;
2369
2370 --Below cursor fetches the termination date of the current assignment
2371 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
2372 IS
2373 SELECT min(paaf.effective_start_date) min_active_start_date
2374 FROM per_all_assignments_f paaf,
2375 per_assignment_status_types past,
2376 pay_all_payrolls_f pay,
2377 hr_soft_coding_keyflex sck
2378 WHERE paaf.assignment_id = p_asg_id
2379 AND paaf.assignment_status_type_id = past.assignment_status_type_id
2380 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN')
2381 AND paaf.payroll_id = pay.payroll_id
2382 AND pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
2383 AND upper(g_tax_ref) = upper(sck.segment1); --Modified for the bug 16503199
2384
2385 --Below cursor fetches the Last Pre-Payment id
2386 CURSOR csr_last_pre_pay_id (c_asg_id NUMBER)
2387 IS
2388 select ppa_prev.payroll_action_id
2389 from pay_payroll_actions ppa_prev,
2390 pay_payroll_actions ppa_current
2391 where ppa_prev.action_type IN ('P','U')
2392 and ppa_prev.payroll_id = ppa_current.payroll_id
2393 and ppa_prev.payroll_action_id < ppa_current.payroll_action_id
2394 and ppa_current.payroll_action_id = g_pre_pact_id
2395 and ppa_prev.payroll_action_id =
2396 (select max(ppa_max.payroll_action_id)
2397 from pay_payroll_actions ppa_max,
2398 pay_assignment_actions paa_max
2399 where ppa_max.payroll_id = ppa_current.payroll_id
2400 and ppa_max.payroll_action_id < ppa_current.payroll_action_id
2401 and ppa_max.action_type IN ('P','U')
2402 and ppa_max.payroll_action_id = paa_max.payroll_action_id
2403 and paa_max.assignment_id = c_asg_id );
2404
2405 --Below cursor fetches the Previous run FPS assignment_action_id
2406 CURSOR csr_last_fps_asg_act_id (c_last_pre_pay_id NUMBER, c_asg_id NUMBER)
2407 IS
2408 select paa_fps.assignment_action_id
2409 from pay_assignment_actions paa_prepay,
2410 pay_payroll_actions ppa_prepay,
2411 pay_assignment_actions paa_fps,
2412 pay_payroll_actions ppa_fps,
2413 pay_action_interlocks pai
2414 where ppa_prepay.payroll_action_id = c_last_pre_pay_id
2415 and ppa_prepay.payroll_action_id = paa_prepay.payroll_action_id
2416 and paa_prepay.assignment_action_id = pai.locked_action_id
2417 and paa_fps.assignment_action_id = pai.locking_action_id
2418 and paa_fps.payroll_action_id = ppa_fps.payroll_action_id
2419 and ppa_fps.action_type = 'X'
2420 and paa_fps.assignment_id = c_asg_id;
2421
2422 --Below cursor fetches the New Asg Number reported in Last FPS
2423 CURSOR csr_last_asg_num_submitted(c_last_fps_asg_act_id NUMBER, c_asg_id NUMBER)
2424 IS
2425 select ACTION_INFORMATION13
2426 from pay_action_information
2427 where action_context_id = c_last_fps_asg_act_id
2428 and action_information_category = 'GB_RTI_FPS_ASG_DET1'
2429 and assignment_id = c_asg_id;
2430
2431
2432 cursor csr_advance_pay_dates
2433 is
2434 select fnd_date.canonical_to_date(max(decode(pivf.name,'Start Date',peevf.screen_entry_value,null))) start_date,
2435 fnd_date.canonical_to_date(max(decode(pivf.name,'End Date',peevf.screen_entry_value,null))) end_date
2436 from pay_element_entries_f peef,
2437 pay_element_entry_values_f peevf ,
2438 pay_input_values_f pivf
2439 where
2440 peef.assignment_id = p_person_rec.assignment_id
2441 and peef.ELEMENT_TYPE_ID = g_adv_period_id
2442 and peef.element_entry_id = peevf.element_entry_id
2443 and peevf.input_value_id = pivf.input_value_id
2444 and pivf.element_type_id = peef.ELEMENT_TYPE_ID
2445 and g_effective_date between peevf.effective_start_date and peevf.effective_end_date
2446 and g_effective_date between pivf.effective_start_date and pivf.effective_end_date
2447 and g_effective_date between peef.effective_start_date and peef.effective_end_date;
2448
2449 cursor csr_asg_act_id is
2450 SELECT
2451 /*+ USE_NL(paa, pact, ptp) */
2452 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
2453 || paa.assignment_action_id),16)) max_asg_act_id,
2454 MAX(pact.effective_date) effective_date
2455 FROM per_all_assignments_f paaf,
2456 pay_assignment_actions paa,
2457 pay_payroll_actions pact,
2458 per_time_periods ptp,
2459 pay_assignment_actions paa1, --Prepayments
2460 pay_payroll_actions ppa1, --Prepayments
2461 pay_action_interlocks pai --Prepayments
2462 WHERE paaf.person_id = p_person_rec.person_id--59437
2463 AND sysdate between paaf.effective_start_date and paaf.effective_end_date
2464 AND paa.assignment_id = paaf.assignment_id
2465 AND paa.payroll_action_id = pact.payroll_action_id
2466 AND pact.time_period_id = ptp.time_period_id
2467 AND pact.action_type IN ('Q','R','I','V','B')
2468 AND paa.action_status IN ('C','S')
2469 AND ptp.regular_payment_date BETWEEN g_start_year AND g_end_year--p_start_year AND p_end_year
2470 AND ppa1.payroll_action_id = g_pre_pact_id --1160712
2471 AND ppa1.action_type IN ('P','U')
2472 AND paa1.payroll_action_id = ppa1.payroll_action_id
2473 AND paa1.assignment_action_id = pai.locking_action_id
2474 AND paa.assignment_action_id = pai.locked_action_id;
2475
2476
2477 l_starter_rec csr_get_starter_details%rowtype;
2478 l_pensioner_rec csr_get_pensioner_details%rowtype;
2479 l_expat_rec csr_get_expat_details%rowtype;
2480 l_stay_over_6_months VARCHAR2(1);
2481 l_stay_less_6_months VARCHAR2(1);
2482 l_working_in_out_UK VARCHAR2(1);
2483 l_asg_number VARCHAR2(30);
2484 l_asg_number_old VARCHAR2(30);
2485 l_irr_payment_ind VARCHAR2(10);
2486 l_periods_covered VARCHAR2(10);
2487 l_one_off_pay VARCHAR2(10);
2488 l_payroll_id_changed_indicator VARCHAR2(1) := 'N';
2489 l_payment_date DATE;
2490 l_period_num NUMBER;
2491 l_period_type VARCHAR2(30);
2492 l_number_per_fiscal_yr NUMBER;
2493 l_payment_month_number NUMBER;
2494 l_payment_week_number NUMBER;
2495 l_ni_process_type VARCHAR2(10);
2496 l_dir_nic_calc_method VARCHAR2(30);
2497 l_dir_tax_week_num NUMBER;
2498 l_per_ni_agg_flag VARCHAR2(1);
2499 l_per_agg_flag VARCHAR2(1);
2500 l_aggr_earnings VARCHAR2(1);
2501 l_starter_decl VARCHAR2(30);
2502 l_continue_with_student_loan VARCHAR2(30);
2503 l_ovn NUMBER;
2504 l_starter_flag VARCHAR2(1);
2505 l_pensioner_flag VARCHAR2(1);
2506 l_expat_flag VARCHAR2(1);
2507 l_recently_bereaved VARCHAR2(30);
2508 l_annual_pension VARCHAR2(30);
2509 l_eea_cw_citizen VARCHAR2(30);
2510 l_epm6_scheme VARCHAR2(30);
2511 l_asg_eff_start_date DATE;
2512 l_frequency VARCHAR2(30);
2513 l_payroll_period_start_date DATE;
2514 l_payroll_period_end_date DATE;
2515 l_person_actual_term_date DATE;
2516 l_asg_effective_end_date DATE;
2517 l_payment_after_leaving VARCHAR2(1);
2518 l_date_of_leaving DATE;
2519 l_ovn_extra_info NUMBER;
2520 l_asg_info_id NUMBER;
2521 l_start_date DATE;
2522 l_end_date DATE;
2523 l_last_pre_pay_id NUMBER;
2524 l_last_fps_asg_act_id NUMBER;
2525 l_last_asg_num_submitted VARCHAR2(30);
2526 l_person_id number;
2527 l_min_active_start_date DATE;
2528 l_last_asg_action_id NUMBER;
2529 l_last_effective_date DATE;
2530
2531 BEGIN
2532 hr_utility.set_location('Entering: '||l_proc,1);
2533 l_arch := true;
2534 p_starter_set := 'N';
2535 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
2536 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
2537 hr_utility.trace('Calling csr_get_starter_details');
2538 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
2539
2540 OPEN csr_get_starter_details(p_person_rec.assignment_id);
2541 FETCH csr_get_starter_details INTO l_starter_rec;
2542 CLOSE csr_get_starter_details;
2543
2544 l_starter_decl := NULL;
2545 l_continue_with_student_loan := NULL;
2546 l_starter_flag := l_starter_rec.starter_flag;
2547 g_reset_flag_type := NULL;
2548 hr_utility.trace('Calling csr_get_starter_details1');
2549 hr_utility.trace('l_starter_flag: '||l_starter_flag);
2550 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
2551 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
2552
2553 IF (l_starter_flag = 'N'
2554 AND (l_starter_rec.starter_decl IS NOT NULL
2555 OR l_starter_rec.continue_with_student_loan IS NOT NULL )) THEN
2556 hr_utility.trace('Calling csr_get_starter_details2');
2557 l_starter_decl := l_starter_rec.starter_decl;
2558 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
2559 l_ovn := l_starter_rec.object_version_number;
2560 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2561 p_object_version_number => l_ovn,
2562 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
2563 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
2564 p_aei_information8 => 'Y');
2565 p_starter_set := 'Y';
2566 g_reset_flag_type := 'STARTER';
2567 hr_utility.trace('Calling csr_get_starter_details3');
2568 END IF;
2569 ---
2570 hr_utility.trace('Calling csr_get_pensioner_details');
2571
2572 OPEN csr_get_pensioner_details(p_person_rec.assignment_id);
2573 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
2574 CLOSE csr_get_pensioner_details;
2575
2576 l_recently_bereaved := NULL;
2577 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
2578 l_annual_pension := NULL;
2579 g_reset_flag_type := NULL;
2580
2581 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
2582 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
2583 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
2584 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
2585
2586 IF (l_pensioner_flag = 'N'
2587 AND (l_pensioner_rec.recently_bereaved IS NOT NULL
2588 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
2589 l_starter_decl := 'B';
2590 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
2591 if l_pensioner_rec.annual_pension is not null then
2592 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
2593 end if;
2594 l_ovn := l_pensioner_rec.object_version_number;
2595 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2596 p_object_version_number => l_ovn,
2597 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
2598 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
2599 p_aei_information9 => 'Y');
2600 g_reset_flag_type := 'PENSIONER';
2601 END IF;
2602 ---
2603 hr_utility.trace('Calling csr_get_expat_details');
2604
2605 OPEN csr_get_expat_details(p_person_rec.assignment_id);
2606 FETCH csr_get_expat_details INTO l_expat_rec;
2607 CLOSE csr_get_expat_details;
2608
2609 l_eea_cw_citizen := NULL;
2610 l_epm6_scheme := NULL;
2611 l_stay_over_6_months := NULL;
2612 l_stay_less_6_months := NULL;
2613 l_working_in_out_UK := NULL;
2614 l_expat_flag := l_expat_rec.expat_flag;
2615
2616 hr_utility.trace('Calling csr_get_expat_details1');
2617 hr_utility.trace('l_expat_flag: '||l_expat_flag);
2618 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
2619 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
2620 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
2621
2622 g_reset_flag_type := NULL;
2623
2624 IF (l_expat_flag = 'N'
2625 AND (l_expat_rec.eea_cw_citizen IS NOT NULL
2626 OR l_expat_rec.epm6_scheme IS NOT NULL
2627 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
2628 hr_utility.trace('Calling csr_get_expat_details2');
2629 IF l_expat_rec.expat_statement = 'A' THEN
2630 l_stay_over_6_months := 'Y';
2631 elsif l_expat_rec.expat_statement = 'B' THEN
2632 l_stay_less_6_months := 'Y';
2633 elsif l_expat_rec.expat_statement = 'C' THEN
2634 l_working_in_out_UK := 'Y';
2635 END IF;
2636
2637 hr_utility.trace('Calling csr_get_expat_details3');
2638 l_starter_decl := l_expat_rec.expat_statement;
2639 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
2640 l_epm6_scheme := l_expat_rec.epm6_scheme;
2641 l_ovn := l_expat_rec.object_version_number;
2642 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2643 p_object_version_number => l_ovn,
2644 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
2645 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
2646 p_aei_information19 => 'Y');
2647 g_reset_flag_type := 'EXPAT';
2648 END IF;
2649
2650 OPEN csr_get_term_asg_info (p_person_rec.assignment_id );
2651 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
2652 CLOSE csr_get_term_asg_info;
2653
2654 ---
2655 IF (l_starter_rec.starter_flag = 'N') THEN
2656 IF((l_starter_rec.starter_decl IS NOT NULL
2657 OR l_starter_rec.continue_with_student_loan IS NOT NULL)
2658 AND l_starter_rec.starter_flag = 'N')
2659
2660 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
2661 OR l_pensioner_rec.annual_pension IS NOT NULL
2662 OR l_pensioner_rec.recently_bereaved IS NOT NULL)
2663 AND l_pensioner_rec.pensioner_flag = 'N')
2664
2665 OR ((l_expat_rec.expat_statement IS NOT NULL
2666 OR l_expat_rec.date_emp_start_uk IS NOT NULL
2667 OR l_expat_rec.eea_cw_citizen IS NOT NULL
2668 OR l_expat_rec.epm6_scheme IS NOT NULL)
2669 AND l_expat_rec.expat_flag = 'N') THEN
2670 -- l_asg_eff_start_date := p_start_date;
2671 if(l_min_active_start_date >= g_start_year) then
2672 l_asg_eff_start_date := l_min_active_start_date;
2673 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
2674 end if;
2675
2676 ELSE
2677 l_asg_eff_start_date := NULL;
2678 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
2679 END IF;
2680 END IF;
2681 ---
2682
2683 --Fix for the bug 16503199 starts here
2684 IF ((nvl(l_starter_rec.starter_flag,'N') = 'N') AND
2685 (nvl(l_pensioner_rec.pensioner_flag,'N') = 'N') AND
2686 (nvl(l_expat_rec.expat_flag,'N') = 'N') AND
2687 (l_min_active_start_date >= g_start_year)) THEN
2688 l_asg_eff_start_date := l_min_active_start_date;
2689 hr_utility.trace('New Starter l_asg_eff_start_date: '||l_asg_eff_start_date);
2690 END IF;
2691 --Fix for the bug 16503199 ends here
2692
2693 OPEN csr_get_more_payment_details(p_last_asg_action_id);
2694 FETCH csr_get_more_payment_details
2695 INTO l_payment_date,
2696 l_period_num,
2697 l_period_type;
2698 CLOSE csr_get_more_payment_details;
2699
2700 -- If there is no payment fetch details from the other assignments of the person
2701 -- Latest assignment action which is locked by the prepayment
2702 if l_payment_date is null then
2703 open csr_asg_act_id;
2704 fetch csr_asg_act_id into l_last_asg_action_id, l_last_effective_date;
2705 close csr_asg_act_id;
2706
2707 OPEN csr_get_more_payment_details(l_last_asg_action_id);
2708 FETCH csr_get_more_payment_details
2709 INTO l_payment_date,
2710 l_period_num,
2711 l_period_type;
2712 CLOSE csr_get_more_payment_details;
2713
2714 end if;
2715
2716 hr_utility.trace('l_payment_date :'||l_payment_date);
2717 hr_utility.trace('l_period_num :'||l_period_num);
2718 hr_utility.trace('l_period_type :'||l_period_type);
2719 g_date_paid:= l_payment_date;
2720
2721 ---
2722 if (l_period_type = 'Week') then
2723 l_frequency := 'W1';
2724 elsif (l_period_type = 'Bi-Month' or l_period_type = 'Bi-Week') then
2725 l_frequency := 'W2';
2726 elsif (l_period_type = 'Lunar Month') then
2727 l_frequency := 'W4';
2728 elsif (l_period_type = 'Calendar Month' or l_period_type = 'Semi-Month') then
2729 l_frequency := 'M1';
2730 elsif (l_period_type = 'Quarter') then
2731 l_frequency := 'M3';
2732 elsif (l_period_type = 'Semi-Year') then
2733 l_frequency := 'M6';
2734 elsif (l_period_type = 'Year') then
2735 l_frequency := 'MA';
2736 end if;
2737 ---
2738
2739 hr_utility.trace('p_person_rec.assignment_id :'||p_person_rec.assignment_id);
2740 hr_utility.trace('g_date_paid :'||g_date_paid);
2741 hr_utility.trace('g_effective_date :'||g_effective_date);
2742
2743 OPEN csr_asg(p_person_rec.assignment_id, g_effective_date);
2744 FETCH csr_asg INTO l_per_ni_agg_flag, l_per_agg_flag, l_asg_number;
2745 CLOSE csr_asg;
2746
2747 hr_utility.trace('l_per_ni_agg_flag :'||l_per_ni_agg_flag);
2748 hr_utility.trace('l_per_agg_flag :'||l_per_agg_flag);
2749 hr_utility.trace('l_frequency :'||l_frequency);
2750
2751 IF l_per_ni_agg_flag = 'Y' OR l_per_agg_flag = 'Y' THEN
2752 l_aggr_earnings := 'Y';
2753 ELSE
2754 l_aggr_earnings:= 'N';
2755 END IF;
2756
2757 OPEN csr_period_type_info(l_period_type);
2758 FETCH csr_period_type_info INTO l_number_per_fiscal_yr;
2759 CLOSE csr_period_type_info;
2760
2761 hr_utility.trace('l_number_per_fiscal_yr :'||l_number_per_fiscal_yr);
2762 l_payment_month_number := NULL;
2763 l_payment_week_number := NULL;
2764
2765 IF l_number_per_fiscal_yr IN (1,2,4,6,12,24) THEN
2766 l_payment_month_number := l_period_num;
2767 ELSE
2768 l_payment_week_number := l_period_num;
2769 END IF;
2770
2771 hr_utility.trace('l_payment_month_number :'||l_payment_month_number);
2772 hr_utility.trace('l_payment_week_number :'||l_payment_week_number);
2773 ---
2774 --New Asg Number and Old Asg Number logic starts below
2775 hr_utility.trace('p_person_rec.assignment_id :'||p_person_rec.assignment_id);
2776
2777 OPEN csr_last_pre_pay_id(p_person_rec.assignment_id);
2778 FETCH csr_last_pre_pay_id INTO l_last_pre_pay_id;
2779 CLOSE csr_last_pre_pay_id;
2780 hr_utility.trace('l_last_pre_pay_id :'||l_last_pre_pay_id);
2781
2782 OPEN csr_last_fps_asg_act_id(l_last_pre_pay_id, p_person_rec.assignment_id);
2783 FETCH csr_last_fps_asg_act_id INTO l_last_fps_asg_act_id;
2784 CLOSE csr_last_fps_asg_act_id;
2785 hr_utility.trace('l_last_fps_asg_act_id :'||l_last_fps_asg_act_id);
2786
2787 OPEN csr_last_asg_num_submitted(l_last_fps_asg_act_id, p_person_rec.assignment_id);
2788 FETCH csr_last_asg_num_submitted INTO l_last_asg_num_submitted;
2789 CLOSE csr_last_asg_num_submitted;
2790 hr_utility.trace('l_last_asg_num_submitted :'||l_last_asg_num_submitted);
2791 hr_utility.trace('l_asg_number :'||l_asg_number);
2792
2793 if (l_asg_number <> l_last_asg_num_submitted)
2794 then
2795 hr_utility.trace('Inside if asg number is changed');
2796 l_asg_number_old := l_last_asg_num_submitted;
2797 l_payroll_id_changed_indicator := 'Y';
2798 else
2799 hr_utility.trace('Inside else asg number is not changed');
2800 l_asg_number_old := NULL;
2801 l_payroll_id_changed_indicator := NULL;
2802 end if;
2803 --New Asg Number and Old Asg Number logic ends below
2804 ---
2805 OPEN csr_ni_info(p_person_rec.assignment_id, p_start_date);
2806 FETCH csr_ni_info INTO l_ni_process_type;
2807 CLOSE csr_ni_info;
2808
2809 hr_utility.trace('l_ni_process_type: '||l_ni_process_type);
2810
2811 IF (l_ni_process_type = 'DY') THEN --Director
2812 l_dir_nic_calc_method := 'AN';
2813 elsif ((l_ni_process_type = 'DN') --Director Normal
2814 OR (l_ni_process_type = 'DP') --Director Pro Rate
2815 OR (l_ni_process_type = 'DR') --Director Pro Rate Normal
2816 OR (l_ni_process_type = 'PY')) THEN --Pensioner Director
2817 l_dir_nic_calc_method := 'AL';
2818 END IF;
2819 ---
2820 OPEN csr_cat_NI_Details;
2821 FETCH csr_cat_NI_Details INTO l_dir_tax_week_num;
2822 CLOSE csr_cat_NI_Details;
2823
2824 IF l_dir_tax_week_num IS NULL THEN
2825 OPEN csr_cat_NI;
2826 FETCH csr_cat_NI INTO l_dir_tax_week_num;
2827 CLOSE csr_cat_NI;
2828 END IF;
2829 -- Get the Irregular payment indicator, periods covered and one-off payment.
2830 OPEN csr_fetch_other_fields;
2831 FETCH csr_fetch_other_fields
2832 INTO l_periods_covered,
2833 l_irr_payment_ind,
2834 l_one_off_pay,
2835 l_asg_info_id,
2836 l_ovn_extra_info;
2837 CLOSE csr_fetch_other_fields;
2838
2839 hr_utility.trace('l_periods_covered '||l_periods_covered);
2840 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
2841 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
2842 hr_utility.trace('l_asg_info_id '||l_asg_info_id);
2843 hr_utility.trace('l_ovn_extra_info '||l_ovn_extra_info);
2844
2845 if l_periods_covered is null then
2846 l_periods_covered := get_periods_covered(p_person_rec.assignment_id);
2847 end if;
2848
2849 if l_irr_payment_ind is null then
2850 l_irr_payment_ind := get_irregular_payment(p_person_rec.assignment_id);
2851 end if;
2852
2853 if l_one_off_pay is null then
2854 l_one_off_pay := get_oneoff_payment(p_person_rec.assignment_id);
2855 end if;
2856
2857 hr_utility.trace('l_periods_covered '||l_periods_covered);
2858 hr_utility.trace('l_irr_payment_ind '||l_irr_payment_ind);
2859 hr_utility.trace('l_one_off_pay '||l_one_off_pay);
2860
2861 open csr_advance_pay_dates;
2862 fetch csr_advance_pay_dates into l_start_date, l_end_date;
2863 close csr_advance_pay_dates;
2864 hr_utility.trace('l_start_date : ' || l_start_date);
2865 hr_utility.trace('l_end_date : ' || l_end_date);
2866
2867 if l_start_date is not null and l_end_date is not null then
2868 hr_utility.trace('test3');
2869 select
2870 pay_advance_pay_pkg.advanced_periods(
2871 p_person_rec.assignment_id,
2872 l_start_date,
2873 l_end_date
2874 ) into l_periods_covered from dual;
2875 hr_utility.trace('test4');
2876 -- reset the periods covered value to 1
2877 elsif l_periods_covered IS NOT NULL AND l_periods_covered <> 1 THEN
2878 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
2879 p_object_version_number => l_ovn_extra_info,
2880 p_assignment_extra_info_id => l_asg_info_id,
2881 p_aei_information_category => 'GB_PAY_RTI',
2882 p_aei_information1 => 1);
2883 else
2884 l_periods_covered := 1;
2885 end if;
2886 hr_utility.trace('l_periods_covered : ' || l_periods_covered);
2887 hr_utility.trace('l_dir_tax_week_num : '|| l_dir_tax_week_num);
2888 ---
2889
2890 IF (l_irr_payment_ind = 'Y') THEN
2891 l_frequency := 'IR';
2892 elsif (l_one_off_pay = 'Y') THEN
2893 l_frequency := 'IO';
2894 END IF;
2895
2896 OPEN csr_all_payroll_actions(p_person_rec.assignment_id, g_pre_pact_id, p_start_date, g_start_year,g_end_year);
2897 FETCH csr_all_payroll_actions
2898 INTO l_payroll_period_start_date,
2899 l_payroll_period_end_date;
2900 CLOSE csr_all_payroll_actions;
2901
2902 open csr_terminated_date;
2903 fetch csr_terminated_date into l_person_actual_term_date;
2904 close csr_terminated_date;
2905 ---
2906 hr_utility.trace('p_end_date : '|| p_end_date);
2907 hr_utility.trace('l_person_actual_term_date : '|| l_person_actual_term_date);
2908
2909 IF p_fps = 'Y' and l_person_actual_term_date is not null THEN
2910 IF l_person_actual_term_date >= l_payroll_period_start_date and l_person_actual_term_date <= l_payroll_period_end_date THEN
2911 l_payment_after_leaving := 'N';
2912 ELSE
2913 l_payment_after_leaving := 'Y';
2914 END IF;
2915 ELSE
2916 l_payment_after_leaving := 'N';
2917 END IF;
2918
2919 l_date_of_leaving := l_person_actual_term_date;
2920
2921
2922
2923 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
2924 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
2925 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
2926 ---
2927 hr_utility.trace('Assigning values to p_fps_rec1');
2928
2929 p_fps_rec1.assignment_id := p_person_rec.assignment_id;
2930 p_fps_rec1.action_info_category := 'GB_RTI_FPS_ASG_DET1';
2931 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
2932 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
2933 p_fps_rec1.act_info3 := to_char(l_payment_date,'YYYY-MM-DD');
2934 p_fps_rec1.act_info4 := l_starter_decl;
2935 p_fps_rec1.act_info5 := l_continue_with_student_loan;
2936 p_fps_rec1.act_info6 := l_stay_over_6_months;
2937 p_fps_rec1.act_info7 := l_stay_less_6_months;
2938 p_fps_rec1.act_info8 := l_working_in_out_UK;
2939 p_fps_rec1.act_info9 := l_eea_cw_citizen;
2940 p_fps_rec1.act_info10 := l_epm6_scheme;
2941 p_fps_rec1.act_info11 := NULL; -- Recently Bereaved spouse / Civil Partner (State Pension) Not applicable
2942 p_fps_rec1.act_info12 := l_recently_bereaved;
2943 p_fps_rec1.act_info13 := l_asg_number;
2944 p_fps_rec1.act_info14 := l_payroll_id_changed_indicator;
2945 p_fps_rec1.act_info15 := l_asg_number_old;
2946 p_fps_rec1.act_info16 := l_irr_payment_ind;
2947 p_fps_rec1.act_info17 := l_frequency;
2948 p_fps_rec1.act_info18 := l_payment_week_number;
2949 p_fps_rec1.act_info19 := l_payment_month_number;
2950 p_fps_rec1.act_info20 := l_periods_covered;
2951 p_fps_rec1.act_info21 := l_aggr_earnings;
2952 p_fps_rec1.act_info22 := l_payment_after_leaving;
2953 p_fps_rec1.act_info23 := get_hours_worked(p_person_rec.assignment_id);
2954 p_fps_rec1.act_info24 := l_dir_nic_calc_method;
2955 p_fps_rec1.act_info25 := l_dir_tax_week_num;
2956 p_fps_rec1.act_info26 := l_annual_pension;
2957 p_fps_rec1.act_info27 := NULL; -- State Pension Not applicable
2958
2959 hr_utility.set_location('Leaving: '||l_proc,999);
2960 RETURN l_arch;
2961
2962 EXCEPTION
2963 WHEN OTHERS THEN
2964 hr_utility.set_location('Error in function fetch_fps_asg_det1 ', 15);
2965 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
2966 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
2967 RAISE;
2968 END fetch_fps_nopay_asg_det1;
2969
2970 -- Function to fetch Assignment details for Aggregated employees (CONTEXT - GB_RTI_FPS_ASG_DET1)
2971 FUNCTION fetch_fps_aggr_asg_det1(
2972 p_start_date IN DATE,
2973 p_end_date IN DATE,
2974 p_assactid IN NUMBER,
2975 p_last_asg_action_id IN NUMBER,
2976 p_fps IN varchar2,
2977 p_person_rec IN act_info_rec,
2978 p_fps_rec1 OUT nocopy act_info_rec)
2979 RETURN BOOLEAN
2980 IS
2981 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_aggr_asg_det1';
2982 l_arch BOOLEAN;
2983 l_asg_id NUMBER;
2984
2985 --Below cursor fetches the asg extra details of the current assignment
2986 CURSOR csr_fetch_other_fields
2987 IS
2988 SELECT AEI_INFORMATION1 periods_worked,
2989 AEI_INFORMATION3 irr_payment ,
2990 AEI_INFORMATION4 "One-Off Payment",
2991 ASSIGNMENT_EXTRA_INFO_ID,
2992 object_version_number
2993 FROM PER_ASSIGNMENT_EXTRA_INFO
2994 WHERE INFORMATION_TYPE = 'GB_PAY_RTI'
2995 AND AEI_INFORMATION_CATEGORY = 'GB_PAY_RTI'
2996 AND assignment_id = l_asg_id;
2997
2998 --Below cursor fetches the starter details of the current assignment
2999 CURSOR csr_get_starter_details(p_asg_id NUMBER)
3000 IS
3001 SELECT assignment_extra_info_id,
3002 aei_information1 starter_decl,
3003 aei_information2 prev_emp_paye_ref,
3004 aei_information3 prev_tax_code,
3005 aei_information4 date_left_prev_employer,
3006 aei_information5 prev_tax_basis,
3007 aei_information6 last_payment_period_type,
3008 aei_information7 last_payment_period,
3009 aei_information8 starter_flag,
3010 aei_information10 continue_with_student_loan,
3011 aei_information8 not_paid_between,
3012 object_version_number object_version_number
3013 FROM per_assignment_extra_info
3014 WHERE assignment_id = p_asg_id
3015 AND information_type = 'GB_RTI_ASG_DETAILS';
3016
3017 --Below cursor fetches the pension details of the current assignment
3018 CURSOR csr_get_pensioner_details(p_asg_id NUMBER)
3019 IS
3020 SELECT assignment_extra_info_id,
3021 aei_information9 pensioner_flag,
3022 aei_information12 date_pension_started,
3023 trim(aei_information13) annual_pension,
3024 aei_information14 recently_bereaved,
3025 object_version_number object_version_number
3026 FROM per_assignment_extra_info
3027 WHERE assignment_id = p_asg_id
3028 AND information_type = 'GB_RTI_ASG_DETAILS';
3029
3030 --Below cursor fetches the expat details of the current assignment
3031 CURSOR csr_get_expat_details(p_asg_id NUMBER)
3032 IS
3033 SELECT assignment_extra_info_id,
3034 aei_information15 expat_statement,
3035 aei_information16 date_emp_start_uk,
3036 aei_information17 eea_cw_citizen,
3037 aei_information18 epm6_scheme,
3038 aei_information19 expat_flag,
3039 object_version_number object_version_number
3040 FROM per_assignment_extra_info
3041 WHERE assignment_id = p_asg_id
3042 AND information_type = 'GB_RTI_ASG_DETAILS';
3043
3044 --Below cursor fetches the assignment numbers of the current assignment
3045 CURSOR csr_get_asg_numbers
3046 IS
3047 SELECT paaf.assignment_number assignment_number,
3048 paaf_old.assignment_number old_assignment_number
3049 FROM per_all_assignments_f paaf,
3050 per_all_assignments_f paaf_old
3051 WHERE paaf.assignment_id = l_asg_id
3052 AND ((paaf_old.assignment_id = paaf.assignment_id
3053 AND paaf_old.effective_start_date < paaf.effective_start_date
3054 AND paaf.effective_start_date > g_start_year
3055 AND paaf_old.effective_end_date > g_start_year)
3056 OR (paaf.assignment_number = paaf_old.assignment_number));
3057
3058 --Below cursor fetches further payment details of the current assignment
3059 CURSOR csr_get_more_payment_details
3060 IS
3061 SELECT ptp.regular_payment_date,
3062 ptp.period_num,
3063 ptp.period_type
3064 FROM pay_payroll_actions ppa,
3065 pay_assignment_actions paa,
3066 per_time_periods ptp
3067 WHERE assignment_action_id = p_last_asg_action_id
3068 AND ppa.time_period_id = ptp.time_period_id
3069 AND ppa.payroll_id = ptp.payroll_id
3070 AND paa.payroll_action_id = ppa.payroll_action_id;
3071
3072 --Below cursor fetches further period type details of the current assignment
3073 CURSOR csr_period_type_info(p_period_type VARCHAR2)
3074 IS
3075 SELECT ptpt.number_per_fiscal_year
3076 FROM per_time_period_types ptpt
3077 WHERE p_period_type = ptpt.period_type;
3078
3079 --Below cursor fetches basic ni details of the current assignment
3080 CURSOR csr_ni_info(c_asg_id NUMBER, c_asg_eff_start_date DATE)
3081 IS
3082 SELECT peevf.screen_entry_value screen_value
3083 FROM
3084 pay_element_entries_f peef,
3085 pay_element_entry_values_f peevf
3086 WHERE peef.assignment_id = c_asg_id
3087 AND peef.element_entry_id = peevf.element_entry_id
3088 AND peevf.input_value_id = g_ni_pt_ivid
3089 AND peef.element_type_id = g_ni_pt_eid
3090 AND c_asg_eff_start_date between peef.effective_start_date and peef.effective_end_date
3091 AND c_asg_eff_start_date between peevf.effective_start_date and peevf.effective_end_date;
3092
3093 --Below cursor fetches further ni details of the current assignment
3094 CURSOR csr_cat_NI_Details
3095 IS
3096 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
3097 FROM pay_assignment_actions paa ,
3098 pay_run_results prr,
3099 pay_run_result_values prrv,
3100 pay_element_types_f petf ,
3101 pay_input_values_f pivf
3102 WHERE paa.source_action_id = p_last_asg_action_id
3103 AND paa.assignment_action_id = prr.assignment_action_id
3104 AND prr.element_type_id = petf.element_type_id
3105 AND petf.element_name = 'NI DETAILS'
3106 AND prr.run_result_id = prrv.run_result_id
3107 AND prrv.input_value_id = pivf.input_value_id;
3108
3109 --Below cursor fetches further ni details of the current assignment
3110 CURSOR csr_cat_NI
3111 IS
3112 SELECT MAX(DECODE(name,'Periods',result_value,NULL))
3113 FROM pay_assignment_actions paa ,
3114 pay_run_results prr,
3115 pay_run_result_values prrv,
3116 pay_element_types_f petf ,
3117 pay_input_values_f pivf
3118 WHERE paa.source_action_id = p_last_asg_action_id
3119 AND paa.assignment_action_id = prr.assignment_action_id
3120 AND prr.element_type_id = petf.element_type_id
3121 AND petf.element_name = 'NI'
3122 AND prr.run_result_id = prrv.run_result_id
3123 AND prrv.input_value_id = pivf.input_value_id;
3124
3125 --Below cursor fetches asg details of the current assignment
3126 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
3127 IS
3128 SELECT trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
3129 trim(NVL(pap.per_information10,'N')) per_agg_flag,
3130 asg.assignment_number assignment_number,
3131 asg.assignment_id assignment_id
3132 FROM per_all_people_f pap,
3133 per_all_assignments_f asg,
3134 pay_assignment_actions paa
3135 WHERE paa.assignment_action_id = c_asg_act_id
3136 AND paa.assignment_id = asg.assignment_id
3137 AND pap.person_id = asg.person_id
3138 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
3139 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
3140 AND pap.per_information_category = 'GB';
3141 /*AND asg.EFFECTIVE_START_DATE =
3142 (SELECT MAX(EFFECTIVE_START_DATE)
3143 FROM per_all_assignments_f paaf
3144 WHERE paaf.assignment_id = asg.assignment_id
3145 );*/
3146
3147 --Below cursor fetches the period start and end dates of payrolls processed in the current prepayment
3148 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)
3149 IS
3150 SELECT
3151 /*+ USE_NL(paa, pact, ptp) */
3152 MIN(ptp.start_date) payroll_period_start_date,
3153 MAX(ptp.end_date) payroll_period_end_date
3154 FROM pay_assignment_actions paa,
3155 pay_payroll_actions pact,
3156 per_time_periods ptp,
3157 pay_assignment_actions paa1, --Prepayments
3158 pay_payroll_actions ppa1, --Prepayments
3159 pay_action_interlocks pai --Prepayments
3160 WHERE paa.assignment_id = p_asgid
3161 AND paa.payroll_action_id = pact.payroll_action_id
3162 AND pact.time_period_id = ptp.time_period_id
3163 AND pact.action_type IN ('Q','R','B','I','V')
3164 AND paa.action_status IN ('C','S')
3165 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
3166 AND ppa1.payroll_action_id = p_pre_pay_id
3167 AND ppa1.action_type IN ('P','U')
3168 AND paa1.payroll_action_id = ppa1.payroll_action_id
3169 AND paa1.assignment_action_id = pai.locking_action_id
3170 AND paa.assignment_action_id = pai.locked_action_id;
3171
3172 -- Cursor to fetch Termination date
3173 cursor csr_terminated_date is
3174 select serv.actual_termination_date actual_termination_date
3175 from
3176 per_all_assignments_f asg,
3177 per_periods_of_service serv
3178 where asg.assignment_id = l_asg_id
3179 and asg.period_of_service_id = serv.period_of_service_id
3180 and p_end_date between asg.effective_start_date and asg.effective_end_date
3181 and actual_termination_date <= g_effective_date
3182 and actual_termination_date <= sysdate + 30 ;
3183
3184 --Below cursor fetches the termination date of the current assignment
3185 CURSOR csr_get_term_asg_info (p_asg_id NUMBER)
3186 IS
3187 SELECT min(paaf.effective_start_date) min_active_start_date
3188 FROM per_all_assignments_f paaf,
3189 per_assignment_status_types past,
3190 pay_all_payrolls_f pay,
3191 hr_soft_coding_keyflex sck
3192 WHERE paaf.assignment_id = p_asg_id
3193 AND paaf.assignment_status_type_id = past.assignment_status_type_id
3194 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN')
3195 AND paaf.payroll_id = pay.payroll_id
3196 AND pay.soft_coding_keyflex_id = sck.soft_coding_keyflex_id
3197 AND upper(g_tax_ref) = upper(sck.segment1); --Modified for the bug 16503199
3198
3199 --Below cursor fetches the Last Pre-Payment id
3200 CURSOR csr_last_pre_pay_id (c_asg_id NUMBER)
3201 IS
3202 select ppa_prev.payroll_action_id
3203 from pay_payroll_actions ppa_prev,
3204 pay_payroll_actions ppa_current
3205 where ppa_prev.action_type IN ('P','U')
3206 and ppa_prev.payroll_id = ppa_current.payroll_id
3207 and ppa_prev.payroll_action_id < ppa_current.payroll_action_id
3208 and ppa_current.payroll_action_id = g_pre_pact_id
3209 and ppa_prev.payroll_action_id =
3210 (select max(ppa_max.payroll_action_id)
3211 from pay_payroll_actions ppa_max,
3212 pay_assignment_actions paa_max
3213 where ppa_max.payroll_id = ppa_current.payroll_id
3214 and ppa_max.payroll_action_id < ppa_current.payroll_action_id
3215 and ppa_max.action_type IN ('P','U')
3216 and ppa_max.payroll_action_id = paa_max.payroll_action_id
3217 and paa_max.assignment_id = c_asg_id );
3218
3219 --Below cursor fetches the Previous run FPS assignment_action_id
3220 CURSOR csr_last_fps_asg_act_id (c_last_pre_pay_id NUMBER, c_asg_id NUMBER)
3221 IS
3222 select paa_fps.assignment_action_id
3223 from pay_assignment_actions paa_prepay,
3224 pay_payroll_actions ppa_prepay,
3225 pay_assignment_actions paa_fps,
3226 pay_payroll_actions ppa_fps,
3227 pay_action_interlocks pai
3228 where ppa_prepay.payroll_action_id = c_last_pre_pay_id
3229 and ppa_prepay.payroll_action_id = paa_prepay.payroll_action_id
3230 and paa_prepay.assignment_action_id = pai.locked_action_id
3231 and paa_fps.assignment_action_id = pai.locking_action_id
3232 and paa_fps.payroll_action_id = ppa_fps.payroll_action_id
3233 and ppa_fps.action_type = 'X'
3234 and paa_fps.assignment_id = c_asg_id;
3235
3236 --Below cursor fetches the New Asg Number reported in Last FPS
3237 CURSOR csr_last_asg_num_submitted(c_last_fps_asg_act_id NUMBER, c_asg_id NUMBER)
3238 IS
3239 select ACTION_INFORMATION13
3240 from pay_action_information
3241 where action_context_id = c_last_fps_asg_act_id
3242 and action_information_category = 'GB_RTI_FPS_ASG_DET1'
3243 and assignment_id = c_asg_id;
3244
3245
3246 cursor csr_advance_pay_dates
3247 is
3248 select fnd_date.canonical_to_date(max(decode(pivf.name,'Start Date',peevf.screen_entry_value,null))) start_date,
3249 fnd_date.canonical_to_date(max(decode(pivf.name,'End Date',peevf.screen_entry_value,null))) end_date
3250 from pay_element_entries_f peef,
3251 pay_element_entry_values_f peevf ,
3252 pay_input_values_f pivf
3253 where
3254 peef.assignment_id = l_asg_id
3255 and peef.ELEMENT_TYPE_ID = g_adv_period_id
3256 and peef.element_entry_id = peevf.element_entry_id
3257 and peevf.input_value_id = pivf.input_value_id
3258 and pivf.element_type_id = peef.ELEMENT_TYPE_ID;
3259
3260 --Cursor to fetch RTI Payroll ID for the assignment
3261 CURSOR csr_rti_payroll_id(cp_assignment_id NUMBER)
3262 IS
3263 SELECT aei_information3 rti_payroll_id
3264 FROM per_assignment_extra_info
3265 WHERE assignment_id = cp_assignment_id
3266 AND aei_information_category = 'GB_RTI_AGGREGATION';
3267
3268 -- Cursor to fetch Director details for the person
3269 cursor csr_director is
3270 select PER_INFORMATION2 from per_all_people_f papf
3271 where person_id = p_person_rec.person_id
3272 and effective_start_date =
3273 (select max(effective_start_date)
3274 from per_all_people_f where person_id = papf.person_id and effective_start_date <= g_effective_date);
3275
3276 l_starter_rec csr_get_starter_details%rowtype;
3277 l_pensioner_rec csr_get_pensioner_details%rowtype;
3278 l_expat_rec csr_get_expat_details%rowtype;
3279 l_stay_over_6_months VARCHAR2(1);
3280 l_stay_less_6_months VARCHAR2(1);
3281 l_working_in_out_UK VARCHAR2(1);
3282 l_asg_number VARCHAR2(30);
3283 l_asg_number_old VARCHAR2(30);
3284 l_irr_payment_ind VARCHAR2(10);
3285 l_periods_covered VARCHAR2(10);
3286 l_one_off_pay VARCHAR2(10);
3287 l_payroll_id_changed_indicator VARCHAR2(1) := 'N';
3288 l_payment_date DATE;
3289 l_period_num NUMBER;
3290 l_period_type VARCHAR2(30);
3291 l_number_per_fiscal_yr NUMBER;
3292 l_payment_month_number NUMBER;
3293 l_payment_week_number NUMBER;
3294 l_ni_process_type VARCHAR2(10);
3295 l_dir_nic_calc_method VARCHAR2(30);
3296 l_dir_tax_week_num NUMBER;
3297 l_per_ni_agg_flag VARCHAR2(1);
3298 l_per_agg_flag VARCHAR2(1);
3299 l_aggr_earnings VARCHAR2(1);
3300 l_starter_decl VARCHAR2(30);
3301 l_continue_with_student_loan VARCHAR2(30);
3302 l_ovn NUMBER;
3303 l_starter_flag VARCHAR2(1);
3304 l_pensioner_flag VARCHAR2(1);
3305 l_expat_flag VARCHAR2(1);
3306 l_recently_bereaved VARCHAR2(30);
3307 l_annual_pension VARCHAR2(30);
3308 l_eea_cw_citizen VARCHAR2(30);
3309 l_epm6_scheme VARCHAR2(30);
3310 l_asg_eff_start_date DATE;
3311 l_frequency VARCHAR2(30);
3312 l_payroll_period_start_date DATE;
3313 l_payroll_period_end_date DATE;
3314 l_person_actual_term_date DATE;
3315 l_asg_effective_end_date DATE;
3316 l_payment_after_leaving VARCHAR2(1);
3317 l_date_of_leaving DATE;
3318 l_ovn_extra_info NUMBER;
3319 l_asg_info_id NUMBER;
3320 l_start_date DATE;
3321 l_end_date DATE;
3322 l_last_pre_pay_id NUMBER;
3323 l_last_fps_asg_act_id NUMBER;
3324 l_last_asg_num_submitted VARCHAR2(30);
3325 l_person_id NUMBER;
3326 l_min_active_start_date DATE;
3327 l_rti_payroll_id VARCHAR2(30);
3328 l_director VARCHAR2(1);
3329
3330 BEGIN
3331 hr_utility.set_location('Entering: '||l_proc,1);
3332 l_arch := true;
3333 -- p_starter_set := 'N';
3334 hr_utility.trace('Start Year: '||TO_CHAR(g_start_year));
3335 hr_utility.trace('End Year: '||TO_CHAR(g_end_year));
3336 hr_utility.trace('Calling csr_get_starter_details');
3337 hr_utility.trace('p_person_rec.assignment_id: '||p_person_rec.assignment_id);
3338 --
3339
3340 OPEN csr_get_more_payment_details;
3341 FETCH csr_get_more_payment_details
3342 INTO l_payment_date,
3343 l_period_num,
3344 l_period_type;
3345 CLOSE csr_get_more_payment_details;
3346
3347 hr_utility.trace('l_payment_date :'||l_payment_date);
3348 hr_utility.trace('l_period_num :'||l_period_num);
3349 hr_utility.trace('l_period_type :'||l_period_type);
3350 g_date_paid:= l_payment_date;
3351
3352 OPEN csr_asg(p_last_asg_action_id, g_date_paid);
3353 FETCH csr_asg INTO l_per_ni_agg_flag, l_per_agg_flag, l_asg_number, l_asg_id;
3354 CLOSE csr_asg;
3355
3356 hr_utility.trace('l_per_ni_agg_flag :'||l_per_ni_agg_flag);
3357 hr_utility.trace('l_per_agg_flag :'||l_per_agg_flag);
3358 hr_utility.trace('l_asg_number :'||l_asg_number);
3359 hr_utility.trace('l_asg_id :'||l_asg_id);
3360
3361 --
3362
3363 OPEN csr_get_starter_details(l_asg_id);
3364 FETCH csr_get_starter_details INTO l_starter_rec;
3365 CLOSE csr_get_starter_details;
3366
3367 l_starter_decl := NULL;
3368 l_continue_with_student_loan := NULL;
3369 l_starter_flag := l_starter_rec.starter_flag;
3370 g_reset_flag_type := NULL;
3371 hr_utility.trace('Calling csr_get_starter_details1');
3372 hr_utility.trace('l_starter_flag: '||l_starter_flag);
3373 hr_utility.trace('l_starter_rec.starter_decl: '||l_starter_rec.starter_decl);
3374 hr_utility.trace(' l_starter_rec.continue_with_student_loan: '|| l_starter_rec.continue_with_student_loan);
3375
3376 IF (l_starter_flag = 'N'
3377 AND (l_starter_rec.starter_decl IS NOT NULL
3378 OR l_starter_rec.continue_with_student_loan IS NOT NULL )) THEN
3379 hr_utility.trace('Calling csr_get_starter_details2');
3380 l_starter_decl := l_starter_rec.starter_decl;
3381 l_continue_with_student_loan := l_starter_rec.continue_with_student_loan;
3382 l_ovn := l_starter_rec.object_version_number;
3383 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3384 p_object_version_number => l_ovn,
3385 p_assignment_extra_info_id => l_starter_rec.assignment_extra_info_id,
3386 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3387 p_aei_information8 => 'Y');
3388 g_reset_flag_type := 'STARTER';
3389 hr_utility.trace('Calling csr_get_starter_details3');
3390 END IF;
3391 ---
3392 hr_utility.trace('Calling csr_get_pensioner_details');
3393
3394 OPEN csr_get_pensioner_details(l_asg_id);
3395 FETCH csr_get_pensioner_details INTO l_pensioner_rec;
3396 CLOSE csr_get_pensioner_details;
3397
3398 l_recently_bereaved := NULL;
3399 l_pensioner_flag := l_pensioner_rec.pensioner_flag;
3400 l_annual_pension := NULL;
3401 g_reset_flag_type := NULL;
3402
3403 hr_utility.trace('l_pensioner_flag: '||l_pensioner_flag);
3404 hr_utility.trace('l_pensioner_rec.pensioner_flag: '||l_pensioner_rec.pensioner_flag);
3405 hr_utility.trace('l_pensioner_rec.recently_bereaved: '||l_pensioner_rec.recently_bereaved);
3406 hr_utility.trace('l_pensioner_rec.annual_pension: '||l_pensioner_rec.annual_pension);
3407
3408 IF (l_pensioner_flag = 'N'
3409 AND (l_pensioner_rec.recently_bereaved IS NOT NULL
3410 OR l_pensioner_rec.annual_pension IS NOT NULL)) THEN
3411 l_starter_decl := 'B';
3412 l_recently_bereaved := l_pensioner_rec.recently_bereaved;
3413 if l_pensioner_rec.annual_pension is not null then
3414 l_annual_pension := (l_pensioner_rec.annual_pension)*100;
3415 end if;
3416 l_ovn := l_pensioner_rec.object_version_number;
3417 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3418 p_object_version_number => l_ovn,
3419 p_assignment_extra_info_id => l_pensioner_rec.assignment_extra_info_id,
3420 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3421 p_aei_information9 => 'Y');
3422 g_reset_flag_type := 'PENSIONER';
3423 END IF;
3424 ---
3425 hr_utility.trace('Calling csr_get_expat_details');
3426
3427 OPEN csr_get_expat_details(l_asg_id);
3428 FETCH csr_get_expat_details INTO l_expat_rec;
3429 CLOSE csr_get_expat_details;
3430
3431 l_eea_cw_citizen := NULL;
3432 l_epm6_scheme := NULL;
3433 l_stay_over_6_months := NULL;
3434 l_stay_less_6_months := NULL;
3435 l_working_in_out_UK := NULL;
3436 l_expat_flag := l_expat_rec.expat_flag;
3437
3438 hr_utility.trace('Calling csr_get_expat_details1');
3439 hr_utility.trace('l_expat_flag: '||l_expat_flag);
3440 hr_utility.trace('l_expat_rec.eea_cw_citizen: '||l_expat_rec.eea_cw_citizen);
3441 hr_utility.trace(' l_expat_rec.epm6_scheme: '|| l_expat_rec.epm6_scheme);
3442 hr_utility.trace(' l_expat_rec.expat_statement: '|| l_expat_rec.expat_statement);
3443
3444 g_reset_flag_type := NULL;
3445
3446 IF (l_expat_flag = 'N'
3447 AND (l_expat_rec.eea_cw_citizen IS NOT NULL
3448 OR l_expat_rec.epm6_scheme IS NOT NULL
3449 OR l_expat_rec.expat_statement IS NOT NULL)) THEN
3450 hr_utility.trace('Calling csr_get_expat_details2');
3451 IF l_expat_rec.expat_statement = 'A' THEN
3452 l_stay_over_6_months := 'Y';
3453 elsif l_expat_rec.expat_statement = 'B' THEN
3454 l_stay_less_6_months := 'Y';
3455 elsif l_expat_rec.expat_statement = 'C' THEN
3456 l_working_in_out_UK := 'Y';
3457 END IF;
3458
3459 hr_utility.trace('Calling csr_get_expat_details3');
3460 l_starter_decl := l_expat_rec.expat_statement;
3461 l_eea_cw_citizen := l_expat_rec.eea_cw_citizen;
3462 l_epm6_scheme := l_expat_rec.epm6_scheme;
3463 l_ovn := l_expat_rec.object_version_number;
3464 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3465 p_object_version_number => l_ovn,
3466 p_assignment_extra_info_id => l_expat_rec.assignment_extra_info_id,
3467 p_aei_information_category => 'GB_RTI_ASG_DETAILS',
3468 p_aei_information19 => 'Y');
3469 g_reset_flag_type := 'EXPAT';
3470 END IF;
3471
3472 OPEN csr_get_term_asg_info (l_asg_id);
3473 FETCH csr_get_term_asg_info INTO l_min_active_start_date;
3474 CLOSE csr_get_term_asg_info;
3475
3476 ---
3477 IF (l_starter_rec.starter_flag = 'N') THEN
3478 IF((l_starter_rec.starter_decl IS NOT NULL
3479 OR l_starter_rec.continue_with_student_loan IS NOT NULL)
3480 AND l_starter_rec.starter_flag = 'N')
3481
3482 OR ((l_pensioner_rec.date_pension_started IS NOT NULL
3483 OR l_pensioner_rec.annual_pension IS NOT NULL
3484 OR l_pensioner_rec.recently_bereaved IS NOT NULL)
3485 AND l_pensioner_rec.pensioner_flag = 'N')
3486
3487 OR ((l_expat_rec.expat_statement IS NOT NULL
3488 OR l_expat_rec.date_emp_start_uk IS NOT NULL
3489 OR l_expat_rec.eea_cw_citizen IS NOT NULL
3490 OR l_expat_rec.epm6_scheme IS NOT NULL)
3491 AND l_expat_rec.expat_flag = 'N') THEN
3492 --l_asg_eff_start_date := p_start_date;
3493 if(l_min_active_start_date >= g_start_year) then
3494 l_asg_eff_start_date := l_min_active_start_date;
3495 hr_utility.trace('l_asg_eff_start_date assigned: '||l_asg_eff_start_date);
3496 end if;
3497 ELSE
3498 l_asg_eff_start_date := NULL;
3499 hr_utility.trace('l_asg_eff_start_date'||l_asg_eff_start_date);
3500 END IF;
3501 END IF;
3502 ---
3503
3504 --Fix for the bug 16503199 starts here
3505 IF ((nvl(l_starter_rec.starter_flag,'N') = 'N') AND
3506 (nvl(l_pensioner_rec.pensioner_flag,'N') = 'N') AND
3507 (nvl(l_expat_rec.expat_flag,'N') = 'N') AND
3508 (l_min_active_start_date >= g_start_year)) THEN
3509 l_asg_eff_start_date := l_min_active_start_date;
3510 hr_utility.trace('New Starter l_asg_eff_start_date: '||l_asg_eff_start_date);
3511 END IF;
3512 --Fix for the bug 16503199 ends here
3513
3514 if (l_period_type = 'Week') then
3515 l_frequency := 'W1';
3516 elsif (l_period_type = 'Bi-Month' or l_period_type = 'Bi-Week') then
3517 l_frequency := 'W2';
3518 elsif (l_period_type = 'Lunar Month') then
3519 l_frequency := 'W4';
3520 elsif (l_period_type = 'Calendar Month' or l_period_type = 'Semi-Month') then
3521 l_frequency := 'M1';
3522 elsif (l_period_type = 'Quarter') then
3523 l_frequency := 'M3';
3524 elsif (l_period_type = 'Semi-Year') then
3525 l_frequency := 'M6';
3526 elsif (l_period_type = 'Year') then
3527 l_frequency := 'MA';
3528 end if;
3529 ---
3530
3531 hr_utility.trace('l_frequency :'||l_frequency);
3532
3533
3534 -- PAYE aggregation should be reported on rti payroll id which should be the primary assignment
3535 IF l_per_agg_flag = 'Y'
3536 THEN
3537 hr_utility.trace('Fetching RTI Payroll ID for the assignment : '||l_asg_id);
3538 hr_utility.trace('Assignment Number : ' || l_asg_number);
3539 OPEN csr_rti_payroll_id(l_asg_id);
3540 FETCH csr_rti_payroll_id INTO l_rti_payroll_id;
3541 IF csr_rti_payroll_id%FOUND
3542 THEN
3543 l_asg_number := l_rti_payroll_id;
3544 hr_utility.trace('RTI Payroll ID : ' || l_asg_number);
3545 ELSE
3546 hr_utility.trace('Unable to fetch the rti payroll id for assignment number ' || l_asg_number);
3547 END IF;
3548 CLOSE csr_rti_payroll_id;
3549 END IF;
3550
3551 IF l_per_ni_agg_flag = 'Y' OR l_per_agg_flag = 'Y' THEN
3552 l_aggr_earnings := 'Y';
3553 ELSE
3554 l_aggr_earnings:= 'N';
3555 END IF;
3556
3557 OPEN csr_period_type_info(l_period_type);
3558 FETCH csr_period_type_info INTO l_number_per_fiscal_yr;
3559 CLOSE csr_period_type_info;
3560
3561 hr_utility.trace('l_number_per_fiscal_yr :'||l_number_per_fiscal_yr);
3562 l_payment_month_number := NULL;
3563 l_payment_week_number := NULL;
3564
3565 IF l_number_per_fiscal_yr IN (1,2,4,6,12,24) THEN
3566 l_payment_month_number := l_period_num;
3567 ELSE
3568 l_payment_week_number := l_period_num;
3569 END IF;
3570
3571 hr_utility.trace('l_payment_month_number :'||l_payment_month_number);
3572 hr_utility.trace('l_payment_week_number :'||l_payment_week_number);
3573 ---
3574 --New Asg Number and Old Asg Number logic starts below
3575 hr_utility.trace('l_asg_id :'||l_asg_id);
3576
3577 OPEN csr_last_pre_pay_id(l_asg_id);
3578 FETCH csr_last_pre_pay_id INTO l_last_pre_pay_id;
3579 CLOSE csr_last_pre_pay_id;
3580 hr_utility.trace('l_last_pre_pay_id :'||l_last_pre_pay_id);
3581
3582 OPEN csr_last_fps_asg_act_id(l_last_pre_pay_id, l_asg_id);
3583 FETCH csr_last_fps_asg_act_id INTO l_last_fps_asg_act_id;
3584 CLOSE csr_last_fps_asg_act_id;
3585 hr_utility.trace('l_last_fps_asg_act_id :'||l_last_fps_asg_act_id);
3586
3587 OPEN csr_last_asg_num_submitted(l_last_fps_asg_act_id, l_asg_id);
3588 FETCH csr_last_asg_num_submitted INTO l_last_asg_num_submitted;
3589 CLOSE csr_last_asg_num_submitted;
3590 hr_utility.trace('l_last_asg_num_submitted :'||l_last_asg_num_submitted);
3591 hr_utility.trace('l_asg_number :'||l_asg_number);
3592
3593 if (l_asg_number <> l_last_asg_num_submitted)
3594 then
3595 hr_utility.trace('Inside if asg number is changed');
3596 l_asg_number_old := l_last_asg_num_submitted;
3597 l_payroll_id_changed_indicator := 'Y';
3598 else
3599 hr_utility.trace('Inside else asg number is not changed');
3600 l_asg_number_old := NULL;
3601 l_payroll_id_changed_indicator := NULL;
3602 end if;
3603 --New Asg Number and Old Asg Number logic ends below
3604 ---
3605 OPEN csr_ni_info(l_asg_id, p_start_date);
3606 FETCH csr_ni_info INTO l_ni_process_type;
3607 CLOSE csr_ni_info;
3608
3609 hr_utility.trace('l_ni_process_type: '||l_ni_process_type);
3610
3611 IF (l_ni_process_type = 'DY') THEN --Director
3612 l_dir_nic_calc_method := 'AN';
3613 elsif ((l_ni_process_type = 'DN') --Director Normal
3614 OR (l_ni_process_type = 'DP') --Director Pro Rate
3615 OR (l_ni_process_type = 'DR') --Director Pro Rate Normal
3616 OR (l_ni_process_type = 'PY')) THEN --Pensioner Director
3617 l_dir_nic_calc_method := 'AL';
3618 END IF;
3619
3620 open csr_director;
3621 fetch csr_director into l_director;
3622 close csr_director;
3623
3624 if l_director = 'Y' then
3625 OPEN csr_cat_NI_Details;
3626 FETCH csr_cat_NI_Details INTO l_dir_tax_week_num;
3627 CLOSE csr_cat_NI_Details;
3628
3629 IF l_dir_tax_week_num IS NULL THEN
3630 OPEN csr_cat_NI;
3631 FETCH csr_cat_NI INTO l_dir_tax_week_num;
3632 CLOSE csr_cat_NI;
3633 END IF;
3634
3635 end if;
3636
3637
3638 -- Get the Irregular payment indicator, periods covered and one-off payment.
3639 OPEN csr_fetch_other_fields;
3640 FETCH csr_fetch_other_fields
3641 INTO l_periods_covered,
3642 l_irr_payment_ind,
3643 l_one_off_pay,
3644 l_asg_info_id,
3645 l_ovn_extra_info;
3646 CLOSE csr_fetch_other_fields;
3647
3648 open csr_advance_pay_dates;
3649 fetch csr_advance_pay_dates into l_start_date, l_end_date;
3650 close csr_advance_pay_dates;
3651 hr_utility.trace('l_start_date : ' || l_start_date);
3652 hr_utility.trace('l_end_date : ' || l_end_date);
3653
3654 if l_start_date is not null and l_end_date is not null then
3655 hr_utility.trace('test3');
3656 select
3657 pay_advance_pay_pkg.advanced_periods(
3658 l_asg_id,
3659 l_start_date,
3660 l_end_date
3661 ) into l_periods_covered from dual;
3662 hr_utility.trace('test4');
3663 -- reset the periods covered value to 1
3664 elsif l_periods_covered IS NOT NULL AND l_periods_covered <> 1 THEN
3665 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
3666 p_object_version_number => l_ovn_extra_info,
3667 p_assignment_extra_info_id => l_asg_info_id,
3668 p_aei_information_category => 'GB_PAY_RTI',
3669 p_aei_information1 => 1);
3670 else
3671 l_periods_covered := 1;
3672 end if;
3673 hr_utility.trace('l_periods_covered : ' || l_periods_covered);
3674 hr_utility.trace('l_dir_tax_week_num : '|| l_dir_tax_week_num);
3675 ---
3676
3677 IF (l_irr_payment_ind = 'Y') THEN
3678 l_frequency := 'IR';
3679 elsif (l_one_off_pay = 'Y') THEN
3680 l_frequency := 'IO';
3681 END IF;
3682
3683 OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, p_start_date, g_start_year,g_end_year);
3684 FETCH csr_all_payroll_actions
3685 INTO l_payroll_period_start_date,
3686 l_payroll_period_end_date;
3687 CLOSE csr_all_payroll_actions;
3688
3689 OPEN csr_terminated_date;
3690 FETCH csr_terminated_date INTO l_person_actual_term_date;
3691 CLOSE csr_terminated_date;
3692 ---
3693
3694 IF p_fps = 'Y' and l_person_actual_term_date is not null THEN
3695 IF l_person_actual_term_date >= l_payroll_period_start_date and l_person_actual_term_date <= l_payroll_period_end_date THEN
3696 l_payment_after_leaving := 'N';
3697 ELSE
3698 l_payment_after_leaving := 'Y';
3699 END IF;
3700 ELSE
3701 l_payment_after_leaving := 'N';
3702 END IF;
3703
3704 /*
3705 IF (l_asg_effective_end_date > l_payroll_period_start_date
3706 AND l_asg_effective_end_date < l_payroll_period_end_date ) THEN
3707 l_date_of_leaving := l_asg_effective_end_date;
3708 ELSE
3709 l_date_of_leaving := NULL;
3710 END IF;
3711 */
3712 /*
3713 IF l_payment_after_leaving = 'Y' THEN
3714 l_date_of_leaving := l_person_actual_term_date;
3715 ELSE
3716 l_date_of_leaving := NULL;
3717 END IF;
3718 */
3719
3720 l_date_of_leaving := l_person_actual_term_date;
3721
3722
3723 -- If Date of Leaving is less then Start of the Previous Tax Year
3724 -- Updating it to Payment Date as Validation rule will fail
3725 if l_date_of_leaving is not null and l_date_of_leaving < (add_months(g_end_year,-24)+1) then
3726 l_date_of_leaving := l_payment_date;
3727 end if;
3728
3729
3730 hr_utility.trace('l_date_of_leaving : '|| l_date_of_leaving);
3731 hr_utility.trace('l_starter_decl : '|| l_starter_decl);
3732 hr_utility.trace('l_asg_eff_start_date : '|| l_asg_eff_start_date);
3733 ---
3734 hr_utility.trace('Assigning values to p_fps_rec1');
3735
3736 p_fps_rec1.assignment_id := l_asg_id;
3737 p_fps_rec1.action_info_category := 'GB_RTI_FPS_ASG_DET1';
3738 p_fps_rec1.act_info1 := to_char(l_asg_eff_start_date,'YYYY-MM-DD');
3739 p_fps_rec1.act_info2 := to_char(l_date_of_leaving,'YYYY-MM-DD');
3740 p_fps_rec1.act_info3 := to_char(l_payment_date,'YYYY-MM-DD');
3741 p_fps_rec1.act_info4 := l_starter_decl;
3742 p_fps_rec1.act_info5 := l_continue_with_student_loan;
3743 p_fps_rec1.act_info6 := l_stay_over_6_months;
3744 p_fps_rec1.act_info7 := l_stay_less_6_months;
3745 p_fps_rec1.act_info8 := l_working_in_out_UK;
3746 p_fps_rec1.act_info9 := l_eea_cw_citizen;
3747 p_fps_rec1.act_info10 := l_epm6_scheme;
3748 p_fps_rec1.act_info11 := NULL; -- Recently Bereaved spouse / Civil Partner (State Pension) Not applicable
3749 p_fps_rec1.act_info12 := l_recently_bereaved;
3750 p_fps_rec1.act_info13 := l_asg_number;
3751 p_fps_rec1.act_info14 := l_payroll_id_changed_indicator;
3752 p_fps_rec1.act_info15 := l_asg_number_old;
3753 p_fps_rec1.act_info16 := l_irr_payment_ind;
3754 p_fps_rec1.act_info17 := l_frequency;
3755 p_fps_rec1.act_info18 := l_payment_week_number;
3756 p_fps_rec1.act_info19 := l_payment_month_number;
3757 p_fps_rec1.act_info20 := l_periods_covered;
3758 p_fps_rec1.act_info21 := l_aggr_earnings;
3759 p_fps_rec1.act_info22 := l_payment_after_leaving;
3760 p_fps_rec1.act_info23 := get_hours_worked(l_asg_id);
3761 p_fps_rec1.act_info24 := l_dir_nic_calc_method;
3762 p_fps_rec1.act_info25 := l_dir_tax_week_num;
3763 p_fps_rec1.act_info26 := l_annual_pension;
3764 p_fps_rec1.act_info27 := NULL; -- State Pension Not applicable
3765
3766 hr_utility.set_location('Leaving: '||l_proc,999);
3767 RETURN l_arch;
3768
3769 EXCEPTION
3770 WHEN OTHERS THEN
3771 hr_utility.set_location('Error in function fetch_fps_aggr_asg_det1 ', 15);
3772 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
3773 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
3774 RAISE;
3775 END fetch_fps_aggr_asg_det1;
3776 --
3777
3778 function get_eff_start_date (asg_id number,eff_date date,l_tax_ref varchar2)
3779 return date is
3780 l_eff_date date;
3781 cursor csr_get_start_date is
3782 select paaf.effective_start_date from
3783 per_all_assignments_f paaf,
3784 pay_all_payrolls_f papf ,
3785 hr_soft_coding_keyflex flex,
3786 per_assignment_status_types past
3787 where paaf.assignment_id = asg_id and paaf.effective_end_date = eff_date - 1
3788 and papf.payroll_id = paaf.payroll_id
3789 and flex.SOFT_CODING_KEYFLEX_ID = papf.SOFT_CODING_KEYFLEX_ID
3790 and upper(l_tax_ref) = upper(flex.segment1)
3791 and paaf.assignment_status_type_id = past.assignment_status_type_id
3792 and past.per_system_status in ('ACTIVE_ASSIGN', 'SUSP_ASSIGN', 'TERM_ASSIGN'); --Bug: 16276411
3793 begin
3794 open csr_get_start_date;
3795 fetch csr_get_start_date into l_eff_date;
3796 if csr_get_start_date%notfound then
3797 close csr_get_start_date;
3798 return eff_date;
3799 else
3800 close csr_get_start_date;
3801 l_eff_date := get_eff_start_date(asg_id,l_eff_date,l_tax_ref);
3802 return l_eff_date;
3803 end if;
3804 end;
3805
3806 procedure fetch_tax_code_basis(
3807 p_last_asg_action_id IN NUMBER,
3808 p_tax_code OUT nocopy varchar2,
3809 p_tax_basis OUT nocopy varchar2)
3810
3811 IS
3812
3813 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_tax_code_basis';
3814 l_paye_rr_id number;
3815 l_paye_details_rr_id number;
3816
3817
3818 CURSOR csr_max_run_result(p_assignment_action_id number,p_element_id number) IS
3819 SELECT max(prr.RUN_RESULT_ID)
3820 FROM pay_run_results prr
3821 WHERE prr.ASSIGNMENT_ACTION_ID = p_assignment_action_id
3822 AND prr.ELEMENT_TYPE_ID = p_element_id
3823 AND prr.status in ('P','PA');
3824
3825
3826 CURSOR csr_run_result(p_run_result_id number,p_element_type_id number) IS
3827 SELECT max(decode(name,'Tax Code',result_value,NULL)) tax_code,
3828 MAX(DECODE(name,'Tax Basis',DECODE(result_value,'N','Y',NULL),NULL)) tax_basis
3829 FROM pay_input_values_f v,
3830 pay_run_result_values rrv
3831 WHERE rrv.run_result_id = p_run_result_id
3832 AND v.input_value_id = rrv.input_value_id
3833 AND v.element_type_id = p_element_type_id;
3834
3835
3836 BEGIN
3837
3838 hr_utility.set_location('Entering: '||l_proc,1);
3839 hr_utility.set_location('Assignment_action_id :' || p_last_asg_action_id,15);
3840
3841 ---
3842
3843 open csr_max_run_result(p_last_asg_action_id,g_paye_element_id);
3844 fetch csr_max_run_result into l_paye_rr_id;
3845 close csr_max_run_result;
3846
3847 open csr_max_run_result(p_last_asg_action_id,g_paye_details_id);
3848 fetch csr_max_run_result into l_paye_details_rr_id;
3849 close csr_max_run_result;
3850
3851 hr_utility.trace('Fetching run result 1');
3852 -- 1. First we try to fetch it from the latest PAYE run results
3853 open csr_run_result(l_paye_rr_id, g_paye_element_id);
3854 fetch csr_run_result into p_tax_code,p_tax_basis;
3855 close csr_run_result;
3856 -- 2. Tax code is not found, fetch from the latest PAYE Details run results
3857 if p_tax_code is null then
3858 hr_utility.trace('Fetching run result 2');
3859 open csr_run_result(l_paye_details_rr_id, g_paye_details_id);
3860 fetch csr_run_result into p_tax_code,p_tax_basis;
3861 close csr_run_result;
3862
3863 end if;
3864
3865 hr_utility.trace('Tax Code '||p_tax_code||' Tax Basis '||p_tax_basis);
3866
3867 exception
3868 when others then
3869 hr_utility.trace(SQLCODE || ' - ' || sqlerrm );
3870 end fetch_tax_code_basis;
3871
3872 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)
3873 return boolean
3874 is
3875
3876 cursor csr_terminated_emp is
3877 select serv.actual_termination_date actual_termination_date
3878 from
3879 per_all_assignments_f asg,
3880 per_periods_of_service serv
3881 where asg.assignment_id = p_asg_id
3882 and serv.actual_termination_date is not null
3883 and asg.period_of_service_id = serv.period_of_service_id
3884 and p_payment_date between asg.effective_start_date and asg.effective_end_date;
3885
3886 cursor csr_get_start_date is
3887 select paaf.effective_start_date,paaf.effective_end_date
3888 from per_all_assignments_f paaf
3889 where paaf.assignment_id = p_asg_id
3890 and p_payment_date between paaf.effective_start_date and paaf.effective_end_date;
3891
3892 cursor csr_get_starter is
3893 SELECT aei_information8 starter_flag , aei_information1 starter_decl
3894 FROM per_assignment_extra_info
3895 WHERE assignment_id = p_asg_id
3896 AND information_type = 'GB_RTI_ASG_DETAILS';
3897
3898 l_eff_start_date date;
3899 l_eff_end_date date;
3900 l_termination_date date;
3901 l_starter_flag varchar2(1);
3902 l_starter_declaration varchar2(1);
3903
3904 begin
3905 hr_utility.trace('Fetching First FPS Details');
3906
3907 open csr_get_starter;
3908 fetch csr_get_starter into l_starter_flag,l_starter_declaration;
3909 hr_utility.trace('Fetching First FPS Details l_starter_flag: '||l_starter_flag);
3910 hr_utility.trace('Fetching First FPS Details l_starter_declaration: '||l_starter_declaration);
3911 close csr_get_starter;
3912
3913 if l_starter_flag = 'Y' and p_starter_set = 'N' then
3914 hr_utility.trace('RTI Sent flag is already set.');
3915 p_fps_rec1.act_info1 := NULL;
3916 p_fps_rec1.act_info4 := NULL;
3917
3918 else
3919
3920 open csr_get_start_date;
3921 fetch csr_get_start_date into l_eff_start_date,l_eff_end_date;
3922 close csr_get_start_date;
3923
3924 l_eff_start_date := get_eff_start_date(p_asg_id,l_eff_start_date,p_tax_ref);
3925
3926 if l_eff_start_date >= p_tax_year_start and l_eff_start_date <= p_effective_date then
3927 p_fps_rec1.act_info1 := to_char(l_eff_start_date,'YYYY-MM-DD');
3928 p_fps_rec1.act_info4 := l_starter_declaration;
3929 else p_fps_rec1.act_info1 := NULL;
3930 end if;
3931
3932 end if; --Starter_flag check ends
3933
3934 open csr_terminated_emp;
3935 fetch csr_terminated_emp into l_termination_date;
3936 close csr_terminated_emp;
3937
3938 if l_termination_date is not null then
3939 if l_termination_date >= p_tax_year_start and l_termination_date <= p_effective_date then
3940 p_fps_rec1.act_info2 := to_char(l_termination_date,'YYYY-MM-DD');
3941 else
3942 p_fps_rec1.act_info2 := to_char(p_payment_date,'YYYY-MM-DD');
3943 end if;
3944 end if;
3945
3946 hr_utility.trace('l_eff_start_date = '||l_eff_start_date);
3947 hr_utility.trace('l_eff_end_date = '||l_eff_end_date);
3948 hr_utility.trace('p_fps_rec1.act_info1 = '||p_fps_rec1.act_info1);
3949 hr_utility.trace('p_fps_rec1.act_info2 = '||p_fps_rec1.act_info2);
3950 return true;
3951 end;
3952
3953 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2)
3954 FUNCTION fetch_first_fps_asg_det2(
3955 p_last_asg_action_id IN NUMBER,
3956 p_asg_id IN NUMBER,
3957 p_effective_date in date,
3958 p_fps_bal_context_2 OUT nocopy act_info_rec )
3959 RETURN BOOLEAN
3960 IS
3961
3962 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
3963 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
3964 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_first_fps_asg_det2';
3965 l_asg_primary_flag VARCHAR2(1);
3966 l_per_agg_flag VARCHAR2(1);
3967 l_aggr_archive_flag VARCHAR2(1);
3968 l_last_chld_act_id NUMBER;
3969 l_arch BOOLEAN;
3970
3971 CURSOR csr_asg(c_asg_id NUMBER)
3972 IS
3973 SELECT trim(asg.primary_flag) asg_primary_flag,
3974 trim(pap.per_information10) per_agg_flag
3975 FROM per_all_people_f pap,
3976 per_all_assignments_f asg
3977 WHERE asg.assignment_id = c_asg_id
3978 AND pap.person_id = asg.person_id
3979 AND p_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
3980 AND p_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
3981
3982 cursor csr_tax_code_basis is
3983 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)),
3984 decode(max(decode(iv.name,'Tax Basis',screen_entry_value)),'N','Y',NULL)
3985 FROM pay_element_entries_f e,
3986 pay_element_entry_values_f v,
3987 pay_input_values_f iv,
3988 pay_element_links_f link
3989 WHERE e.assignment_id = p_asg_id
3990 AND link.element_type_id = g_paye_details_id
3991 AND e.element_link_id = link.element_link_id
3992 AND e.element_entry_id = v.element_entry_id
3993 AND iv.input_value_id = v.input_value_id
3994 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
3995 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
3996 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
3997 AND e.effective_end_date = (select max(e1.effective_end_date)
3998 from pay_element_entries_f e1,
3999 pay_element_links_f link1
4000 where link1.element_type_id = g_paye_details_id
4001 and e1.assignment_id = p_asg_id
4002 and e1.element_link_id = link1.element_link_id);
4003
4004 CURSOR csr_child_act_id(c_lst_act_id NUMBER) -- kvinayku
4005 IS
4006 SELECT NVL(MAX(ASSIGNMENT_ACTION_ID),c_lst_act_id)
4007 FROM pay_assignment_actions
4008 WHERE SOURCE_ACTION_ID = c_lst_act_id;
4009
4010 CURSOR csr_tax_paye_result(p_action_id NUMBER) -- kvinayku
4011 IS
4012 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
4013 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
4014 FROM pay_run_results prr ,
4015 pay_run_result_values prrv ,
4016 pay_input_values_f pivf
4017 WHERE prr.assignment_action_id = p_action_id
4018 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
4019 AND prrv.run_result_id = prr.run_result_id
4020 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
4021
4022 l_tax_code varchar2(10);
4023 l_tax_basis varchar2(1);
4024
4025 BEGIN
4026 l_arch := true;
4027
4028 hr_utility.set_location('Entering: '||l_proc,1);
4029 l_context_lst(1).tax_unit_id :=NULL;
4030 l_context_lst(1).jurisdiction_code :=NULL;
4031 l_context_lst(1).source_id :=NULL;
4032 l_context_lst(1).source_text :=NULL;
4033 l_context_lst(1).source_number :=NULL;
4034 l_context_lst(1).source_text2 :=NULL;
4035 l_context_lst(1).time_def_id :=NULL;
4036 l_context_lst(1).balance_date :=NULL;
4037 l_context_lst(1).local_unit_id :=NULL;
4038 l_context_lst(1).source_number2 :=NULL;
4039 l_context_lst(1).organization_id :=NULL;
4040
4041 hr_utility.set_location('Assignment_id :' || p_asg_id,15);
4042 l_asg_primary_flag := 'N';
4043 l_per_agg_flag := 'N';
4044 l_aggr_archive_flag := 'N';
4045
4046 OPEN csr_asg(p_asg_id);
4047 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
4048 CLOSE csr_asg;
4049
4050 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
4051 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
4052 /*
4053 IF NVL(l_per_agg_flag,'N') = 'Y' THEN
4054 IF NVL(l_asg_primary_flag,'N') = 'Y' THEN
4055 hr_utility.trace('Aggregation Found.');
4056 l_aggr_archive_flag := 'Y';
4057 END IF;
4058 END IF;
4059 */
4060 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
4061 ---
4062
4063 -- IF (l_aggr_archive_flag = 'N' AND NVL(l_per_agg_flag,'N') = 'N') THEN
4064 hr_utility.trace('l_aggr_archive_flag = N');
4065 -- Get the child assignment action id to Archive Tax code and Tax basis.
4066 -- As the run results are generated with child assignment action id.
4067
4068 -- added by kvinayku start
4069 OPEN csr_child_act_id(p_last_asg_action_id);
4070 FETCH csr_child_act_id INTO l_last_chld_act_id;
4071 CLOSE csr_child_act_id;
4072
4073 --Tax code fix start
4074 /* OPEN csr_tax_paye_result(l_last_chld_act_id);
4075 FETCH csr_tax_paye_result
4076 INTO p_fps_bal_context_2.act_info25,
4077 p_fps_bal_context_2.act_info27;
4078 CLOSE csr_tax_paye_result;
4079
4080 if p_fps_bal_context_2.act_info27 is null then
4081 open csr_tax_code_basis;
4082 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4083 p_fps_bal_context_2.act_info27;
4084 close csr_tax_code_basis;
4085 end if; */
4086
4087 fetch_tax_code_basis(l_last_chld_act_id,
4088 p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
4089
4090 if p_fps_bal_context_2.act_info25 is null then
4091 open csr_tax_code_basis;
4092 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4093 p_fps_bal_context_2.act_info27;
4094 close csr_tax_code_basis;
4095 end if;
4096
4097 --Tax code fix end
4098
4099 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
4100
4101 --p_fps_bal_context_2.act_info25 := l_tax_code;
4102 --p_fps_bal_context_2.act_info27 := l_tax_basis;
4103
4104 -- added by kvinayku end
4105
4106 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
4107 p_defined_balance_lst => g_defined_balance_lst ,
4108 p_context_lst => l_context_lst ,
4109 p_output_table => l_output_table );
4110 hr_utility.trace('After invoking get_value');
4111 p_fps_bal_context_2.assignment_id := p_asg_id;
4112 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
4113 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
4114
4115 FOR outer_rec IN 1..l_output_table.count
4116 LOOP
4117
4118 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4119
4120 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4121 LOOP
4122 IF (g_fps_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id) THEN
4123 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
4124 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD' ) THEN
4125 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4126 p_fps_bal_context_2.act_info1 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4127 END IF;
4128 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
4129 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4130 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4131 p_fps_bal_context_2.act_info2 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4132 END IF;
4133 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
4134 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4135 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4136 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4137 END IF;
4138 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
4139 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4140 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4141 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4142 END IF;
4143 -- This is for newly created balances
4144 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
4145 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4146 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4147 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);
4148 END IF;
4149 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of NI' THEN
4150 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4151 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4152 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);
4153 END IF;
4154 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
4155 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4156 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4157 p_fps_bal_context_2.act_info18 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4158 END IF;
4159 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
4160 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4161 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4162 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4163 END IF;
4164 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
4165 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4166 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4167 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);
4168 END IF;
4169 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
4170 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4171 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4172 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);
4173 END IF;
4174
4175 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
4176 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4177 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4178 p_fps_bal_context_2.act_info21 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4179 END IF;
4180 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
4181 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4182 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4183 p_fps_bal_context_2.act_info22 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4184 END IF;
4185 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
4186 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4187 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4188 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);
4189 END IF;
4190
4191 END IF;
4192 END IF;
4193 END LOOP;
4194 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
4195 END IF; --Not null check ends
4196 END LOOP;
4197 p_fps_bal_context_2.act_info17 := 0; -- Tax Deducted refunded
4198 -- END IF;
4199
4200 hr_utility.trace(p_asg_id||'Leaving asg2 details function ');
4201
4202 RETURN l_arch;
4203
4204 EXCEPTION
4205 WHEN OTHERS THEN
4206 hr_utility.set_location('Error in function fetch_fps_asg_det2 ', 15);
4207 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
4208 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
4209 RAISE;
4210
4211 END fetch_first_fps_asg_det2;
4212
4213 -- Below function is to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2).
4214 -- This function is used for PAYE Aggregated scenarios processed as part of First FPS.
4215
4216 FUNCTION fetch_first_fps_agg_asg_det2(
4217 p_last_asg_action_id IN NUMBER,
4218 p_asg_id IN NUMBER,
4219 p_effective_date in date,
4220 p_fps_bal_context_2 OUT nocopy act_info_rec )
4221 RETURN BOOLEAN
4222 IS
4223
4224 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
4225 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
4226 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_first_fps_agg_asg_det2';
4227 l_asg_primary_flag VARCHAR2(1);
4228 l_per_agg_flag VARCHAR2(1);
4229 l_aggr_archive_flag VARCHAR2(1);
4230 l_last_chld_act_id NUMBER;
4231 l_arch BOOLEAN;
4232
4233 CURSOR csr_asg(c_asg_id NUMBER)
4234 IS
4235 SELECT trim(asg.primary_flag) asg_primary_flag,
4236 trim(pap.per_information10) per_agg_flag
4237 FROM per_all_people_f pap,
4238 per_all_assignments_f asg
4239 WHERE asg.assignment_id = c_asg_id
4240 AND pap.person_id = asg.person_id
4241 AND p_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
4242 AND p_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
4243
4244 cursor csr_tax_code_basis is
4245 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)),
4246 decode(max(decode(iv.name,'Tax Basis',screen_entry_value)),'N','Y',NULL)
4247 FROM pay_element_entries_f e,
4248 pay_element_entry_values_f v,
4249 pay_input_values_f iv,
4250 pay_element_links_f link
4251 WHERE e.assignment_id = p_asg_id
4252 AND link.element_type_id = g_paye_details_id
4253 AND e.element_link_id = link.element_link_id
4254 AND e.element_entry_id = v.element_entry_id
4255 AND iv.input_value_id = v.input_value_id
4256 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
4257 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
4258 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
4259 AND e.effective_end_date = (select max(e1.effective_end_date)
4260 from pay_element_entries_f e1,
4261 pay_element_links_f link1
4262 where link1.element_type_id = g_paye_details_id
4263 and e1.assignment_id = p_asg_id
4264 and e1.element_link_id = link1.element_link_id);
4265
4266 CURSOR csr_child_act_id(c_lst_act_id NUMBER) -- kvinayku
4267 IS
4268 SELECT NVL(MAX(ASSIGNMENT_ACTION_ID),c_lst_act_id)
4269 FROM pay_assignment_actions
4270 WHERE SOURCE_ACTION_ID = c_lst_act_id;
4271
4272 CURSOR csr_tax_paye_result(p_action_id NUMBER) -- kvinayku
4273 IS
4274 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
4275 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
4276 FROM pay_run_results prr ,
4277 pay_run_result_values prrv ,
4278 pay_input_values_f pivf
4279 WHERE prr.assignment_action_id = p_action_id
4280 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
4281 AND prrv.run_result_id = prr.run_result_id
4282 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
4283
4284 l_tax_code varchar2(10);
4285 l_tax_basis varchar2(1);
4286
4287 BEGIN
4288 l_arch := true;
4289
4290 hr_utility.set_location('Entering: '||l_proc,1);
4291 l_context_lst(1).tax_unit_id :=NULL;
4292 l_context_lst(1).jurisdiction_code :=NULL;
4293 l_context_lst(1).source_id :=NULL;
4294 l_context_lst(1).source_text :=NULL;
4295 l_context_lst(1).source_number :=NULL;
4296 l_context_lst(1).source_text2 :=NULL;
4297 l_context_lst(1).time_def_id :=NULL;
4298 l_context_lst(1).balance_date :=NULL;
4299 l_context_lst(1).local_unit_id :=NULL;
4300 l_context_lst(1).source_number2 :=NULL;
4301 l_context_lst(1).organization_id :=NULL;
4302
4303 hr_utility.set_location('Assignment_id :' || p_asg_id,15);
4304 l_asg_primary_flag := 'N';
4305 l_per_agg_flag := 'N';
4306 l_aggr_archive_flag := 'N';
4307
4308 OPEN csr_asg(p_asg_id);
4309 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
4310 CLOSE csr_asg;
4311
4312 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
4313 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
4314
4315 OPEN csr_child_act_id(p_last_asg_action_id);
4316 FETCH csr_child_act_id INTO l_last_chld_act_id;
4317 CLOSE csr_child_act_id;
4318
4319 --Tax code fix start
4320 /* OPEN csr_tax_paye_result(l_last_chld_act_id);
4321 FETCH csr_tax_paye_result
4322 INTO p_fps_bal_context_2.act_info25,
4323 p_fps_bal_context_2.act_info27;
4324 CLOSE csr_tax_paye_result;
4325
4326 if p_fps_bal_context_2.act_info27 is null then
4327 open csr_tax_code_basis;
4328 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4329 p_fps_bal_context_2.act_info27;
4330 close csr_tax_code_basis;
4331 end if; */
4332
4333 fetch_tax_code_basis(l_last_chld_act_id,
4334 p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
4335
4336 if p_fps_bal_context_2.act_info25 is null then
4337 open csr_tax_code_basis;
4338 fetch csr_tax_code_basis into p_fps_bal_context_2.act_info25,
4339 p_fps_bal_context_2.act_info27;
4340 close csr_tax_code_basis;
4341 end if;
4342 --Tax code fix end
4343
4344 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
4345
4346 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
4347 p_defined_balance_lst => g_defined_balance_lst ,
4348 p_context_lst => l_context_lst ,
4349 p_output_table => l_output_table );
4350 hr_utility.trace('After invoking get_value');
4351 p_fps_bal_context_2.assignment_id := p_asg_id;
4352 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
4353 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
4354
4355 FOR outer_rec IN 1..l_output_table.count
4356 LOOP
4357
4358 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4359
4360 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4361 LOOP
4362 IF (g_fps_bal_det_tab(inner_rec).defined_balance_id = l_output_table(outer_rec).defined_balance_id) THEN
4363 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
4364 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
4365 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4366 p_fps_bal_context_2.act_info1 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4367 END IF;
4368 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
4369 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
4370 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4371 p_fps_bal_context_2.act_info2 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4372 END IF;
4373 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
4374 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4375 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4376 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4377 END IF;
4378 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
4379 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4380 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4381 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4382 END IF;
4383 -- This is for newly created balances
4384 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
4385 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4386 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4387 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);
4388 END IF;
4389 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of NI' THEN
4390 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4391 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4392 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);
4393 END IF;
4394 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
4395 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4396 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4397 p_fps_bal_context_2.act_info18 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4398 END IF;
4399 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
4400 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4401 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4402 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4403 END IF;
4404 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
4405 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4406 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4407 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);
4408 END IF;
4409 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
4410 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4411 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4412 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);
4413 END IF;
4414
4415 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
4416 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4417 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4418 p_fps_bal_context_2.act_info21 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4419 END IF;
4420 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
4421 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4422 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4423 p_fps_bal_context_2.act_info22 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4424 END IF;
4425 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
4426 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
4427 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4428 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);
4429 END IF;
4430
4431 END IF;
4432 END IF;
4433 END LOOP;
4434 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
4435 END IF; --Not null check ends
4436 END LOOP;
4437 p_fps_bal_context_2.act_info17 := 0; -- Tax Deducted refunded
4438
4439 hr_utility.trace(p_asg_id||'Leaving fetch_first_fps_agg_asg_det2 details function');
4440
4441 RETURN l_arch;
4442
4443 EXCEPTION
4444 WHEN OTHERS THEN
4445 hr_utility.set_location('Error in function fetch_first_fps_agg_asg_det2 ', 15);
4446 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
4447 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
4448 RAISE;
4449
4450 END fetch_first_fps_agg_asg_det2;
4451
4452 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2)
4453 FUNCTION fetch_fps_asg_det2(
4454 p_last_asg_action_id IN NUMBER,
4455 p_asg_id IN NUMBER,
4456 p_fps_bal_context_2 IN OUT nocopy act_info_rec )
4457 RETURN BOOLEAN
4458 IS
4459 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
4460 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
4461 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_asg_det2';
4462 l_asg_primary_flag VARCHAR2(1);
4463 l_per_agg_flag VARCHAR2(1);
4464 l_aggr_archive_flag VARCHAR2(1);
4465 l_last_chld_act_id NUMBER;
4466 l_tax_pay_val number;
4467 l_tax_pay_def_bal_id number;
4468 l_child_exists VARCHAR2(1);
4469 l_chld_act_id NUMBER;
4470 l_max_chld_act_id NUMBER;
4471
4472 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
4473 IS
4474 SELECT trim(asg.primary_flag) asg_primary_flag,
4475 trim(pap.per_information10) per_agg_flag
4476 FROM per_all_people_f pap,
4477 per_all_assignments_f asg
4478 WHERE asg.assignment_id = c_asg_id
4479 AND pap.person_id = asg.person_id
4480 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
4481 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
4482
4483 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
4484 IS
4485 SELECT assignment_action_id
4486 FROM pay_assignment_actions
4487 WHERE source_action_id = c_lst_act_id;
4488
4489 CURSOR csr_tax_paye_result(p_action_id NUMBER)
4490 IS
4491 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
4492 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
4493 FROM pay_run_results prr ,
4494 pay_run_result_values prrv ,
4495 pay_input_values_f pivf
4496 WHERE prr.assignment_action_id = p_action_id
4497 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
4498 AND prrv.run_result_id = prr.run_result_id
4499 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
4500
4501 CURSOR csr_paye_details(p_assignment_id NUMBER) IS
4502 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)) tax_code,
4503 max(decode(iv.name,'Tax Basis',DECODE(screen_entry_value,'N','Y',NULL),NULL)) tax_basis -- kvinayku bug no 14774165
4504 FROM pay_element_entries_f e,
4505 pay_element_entry_values_f v,
4506 pay_input_values_f iv,
4507 pay_element_links_f link
4508 WHERE e.assignment_id = p_asg_id
4509 AND link.element_type_id = g_paye_details_id
4510 AND e.element_link_id = link.element_link_id
4511 AND e.element_entry_id = v.element_entry_id
4512 AND iv.input_value_id = v.input_value_id
4513 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
4514 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
4515 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
4516 AND e.effective_end_date = (select max(e1.effective_end_date)
4517 from pay_element_entries_f e1,
4518 pay_element_links_f link1
4519 where link1.element_type_id = g_paye_details_id
4520 and e1.assignment_id = p_asg_id
4521 and e1.element_link_id = link1.element_link_id);
4522
4523 cursor csr_get_taxable_pay(c_balance_name varchar2, c_dim_name varchar2) is
4524 select pdb.defined_balance_id from pay_defined_balances pdb,
4525 pay_balance_dimensions pbd,
4526 pay_balance_types pbt
4527 where pbt.balance_name = c_balance_name
4528 and pbd.database_item_suffix = c_dim_name
4529 and pbt.balance_type_id= pdb.balance_type_id
4530 and pbd.balance_dimension_id = pdb.balance_dimension_id and
4531 pbt.legislation_code = 'GB';
4532
4533 cursor csr_tax_pay_value(p_last_asg_action_id number,l_tax_pay_def_bal_id number)
4534 is
4535 select hr_dirbal.get_balance(p_last_asg_action_id,l_tax_pay_def_bal_id) from dual;
4536
4537 CURSOR csr_max_child_act_id(c_lst_act_id NUMBER)
4538 IS
4539 SELECT max(assignment_action_id)
4540 FROM pay_assignment_actions
4541 WHERE source_action_id = c_lst_act_id;
4542
4543 BEGIN
4544 hr_utility.set_location('Entering: '||l_proc,1);
4545 l_context_lst(1).tax_unit_id :=NULL;
4546 l_context_lst(1).jurisdiction_code :=NULL;
4547 l_context_lst(1).source_id :=NULL;
4548 l_context_lst(1).source_text :=NULL;
4549 l_context_lst(1).source_number :=NULL;
4550 l_context_lst(1).source_text2 :=NULL;
4551 l_context_lst(1).time_def_id :=NULL;
4552 l_context_lst(1).balance_date :=NULL;
4553 l_context_lst(1).local_unit_id :=NULL;
4554 l_context_lst(1).source_number2 :=NULL;
4555 l_context_lst(1).organization_id :=NULL;
4556 hr_utility.set_location('assignment_id :' || p_asg_id,15);
4557 l_asg_primary_flag := 'N';
4558 l_per_agg_flag := 'N';
4559 l_aggr_archive_flag := 'N';
4560
4561 OPEN csr_asg(p_asg_id, g_effective_date);
4562 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
4563 CLOSE csr_asg;
4564
4565 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
4566 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
4567
4568 IF NVL(l_per_agg_flag,'N') = 'Y' THEN
4569 IF NVL(l_asg_primary_flag,'N') = 'Y' THEN
4570 hr_utility.trace('Aggregation Found.');
4571 l_aggr_archive_flag := 'Y';
4572 END IF;
4573 END IF;
4574 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
4575 ---
4576
4577 IF (l_aggr_archive_flag = 'N' AND NVL(l_per_agg_flag,'N') = 'N') THEN
4578 hr_utility.trace('l_aggr_archive_flag = N');
4579 -- Get the child assignment action id to Archive Tax code and Tax basis.
4580 -- As the run results are generated with child assignment action id.
4581
4582 open csr_get_taxable_pay('Taxable Pay', '_ASG_RUN');
4583 fetch csr_get_taxable_pay into l_tax_pay_def_bal_id;
4584 close csr_get_taxable_pay;
4585
4586 open csr_tax_pay_value(p_last_asg_action_id,l_tax_pay_def_bal_id);
4587 fetch csr_tax_pay_value into l_tax_pay_val;
4588 close csr_tax_pay_value;
4589 hr_utility.set_location('l_tax_pay_val :' ||l_tax_pay_val ,15);
4590
4591 IF l_tax_pay_val = 0 THEN
4592 OPEN csr_child_act_id(p_last_asg_action_id);
4593 FETCH csr_child_act_id INTO l_chld_act_id;
4594 CLOSE csr_child_act_id;
4595 l_child_exists := 'Y';
4596 ELSE
4597 l_chld_act_id := p_last_asg_action_id;
4598 l_child_exists := 'N';
4599 END IF;
4600
4601 IF l_chld_act_id IS NULL THEN
4602 l_chld_act_id := p_last_asg_action_id;
4603 l_child_exists := 'N';
4604 END IF;
4605
4606 OPEN csr_max_child_act_id(p_last_asg_action_id);
4607 FETCH csr_max_child_act_id INTO l_max_chld_act_id;
4608 CLOSE csr_max_child_act_id;
4609
4610 hr_utility.trace('l_max_chld_act_id : '||l_max_chld_act_id);
4611
4612 fetch_tax_code_basis(l_max_chld_act_id,
4613 p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
4614
4615 if p_fps_bal_context_2.act_info25 is null then
4616 open csr_paye_details(p_asg_id);
4617 fetch csr_paye_details
4618 into p_fps_bal_context_2.act_info25,
4619 p_fps_bal_context_2.act_info27;
4620 close csr_paye_details;
4621 end if;
4622
4623 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
4624
4625 --Check whether we need to get balances with master asg action id or child asg action id
4626 if l_child_exists = 'N' then
4627 --We need to get balances with master asg action id
4628 hr_utility.trace('Processing with Master Action ID:'||p_last_asg_action_id);
4629
4630 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
4631 p_defined_balance_lst => g_defined_balance_lst ,
4632 p_context_lst => l_context_lst ,
4633 p_output_table => l_output_table );
4634
4635 hr_utility.trace('After invoking get_value');
4636 p_fps_bal_context_2.assignment_id := p_asg_id;
4637 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
4638 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
4639
4640 --Get all balances with master asg action id
4641 FOR outer_rec IN 1..l_output_table.count
4642 LOOP
4643
4644 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4645
4646 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4647 LOOP
4648 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
4649 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
4650 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD' ) THEN
4651 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4652 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
4653 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4654 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;
4655 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
4656 END IF;
4657 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
4658 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4659 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4660 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
4661 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4662 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;
4663 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
4664 END IF;
4665 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
4666 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4667 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4668 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4669 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4670 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;
4671 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
4672 END IF;
4673 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
4674 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4675 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4676 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4677 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4678 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;
4679 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
4680 END IF;
4681 -- This is for newly created balances
4682 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
4683 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
4684 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4685 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
4686 END IF;
4687 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
4688 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
4689 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4690 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
4691 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4692 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;
4693 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
4694 end if;
4695 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
4696 if g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4697 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;
4698 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
4699 end if;
4700 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
4701 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4702 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;
4703 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
4704 END IF;
4705 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
4706 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4707 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;
4708 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
4709 END IF;
4710 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
4711 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4712 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;
4713 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
4714 END IF;
4715 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
4716 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4717 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;
4718 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
4719 END IF;
4720 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
4721 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4722 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;
4723 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4724 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
4725 END IF;
4726 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
4727 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4728 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;
4729 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4730 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
4731 END IF;
4732 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
4733 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4734 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;
4735 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
4736 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4737 END IF;
4738 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
4739 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4740 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;
4741 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
4742 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4743 END IF;
4744 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
4745 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4746 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;
4747 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
4748 END IF;
4749 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
4750 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4751 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;
4752 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
4753 END IF;
4754 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
4755 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4756 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4757 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
4758 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4759 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
4760 END IF;
4761 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP 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_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4765 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4766 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
4767 END IF;
4768 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
4769 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4770 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4771 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
4772 END IF;
4773 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' 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 * l_output_table(outer_rec).balance_value;
4776 --g_spp_total := 100 * l_output_table(outer_rec).balance_value;
4777 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
4778 END IF;
4779 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
4780 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4781 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4782 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
4783 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4784 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
4785 END IF;
4786 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
4787 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4788 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4789 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
4790 END IF;
4791 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
4792 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4793 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4794 --g_assp_total := 100 * l_output_table(outer_rec).balance_value;
4795 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
4796 END IF;
4797 END IF;
4798 END IF;
4799 END LOOP;
4800 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
4801 END IF;
4802 END LOOP;
4803
4804 ELSE -- for if l_child_exists = 'N' then
4805 --We need to get balances with child asg action id
4806 hr_utility.trace('Processing with Child Action IDs of:'||p_last_asg_action_id);
4807
4808 FOR rec IN csr_child_act_id(p_last_asg_action_id)
4809 LOOP
4810 --Loop for getting the balances for all child asg action id's
4811 l_chld_act_id := rec.assignment_action_id;
4812 hr_utility.trace('l_chld_act_id:'||l_chld_act_id);
4813 pay_balance_pkg.get_value(p_assignment_action_id => l_chld_act_id ,
4814 p_defined_balance_lst => g_defined_balance_lst ,
4815 p_context_lst => l_context_lst ,
4816 p_output_table => l_output_table );
4817
4818 hr_utility.trace('After invoking get_value');
4819 p_fps_bal_context_2.assignment_id := p_asg_id;
4820 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
4821 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
4822 --Check whether this is the latest child asg action id
4823 IF (l_chld_act_id = l_max_chld_act_id) then
4824 --It is the latest child asg action id
4825 --Get all the balances with this latest child asg action id
4826 hr_utility.trace('in side if l_chld_act_id = l_max_chld_act_id');
4827 FOR outer_rec IN 1..l_output_table.count
4828 LOOP
4829 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4830
4831 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4832 LOOP
4833 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
4834 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
4835 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD' ) THEN
4836 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4837 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
4838 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4839 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;
4840 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
4841 END IF;
4842 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
4843 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4844 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4845 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
4846 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4847 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;
4848 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
4849 END IF;
4850 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
4851 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4852 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4853 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4854 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4855 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;
4856 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
4857 END IF;
4858 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
4859 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4860 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4861 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4862 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4863 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;
4864 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
4865 END IF;
4866 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
4867 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
4868 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4869 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
4870 END IF;
4871 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
4872 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
4873 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4874 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
4875 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4876 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;
4877 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
4878 end if;
4879 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
4880 if g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4881 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;
4882 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
4883 end if;
4884 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
4885 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4886 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;
4887 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
4888 END IF;
4889 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
4890 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4891 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;
4892 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
4893 END IF;
4894 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
4895 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4896 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;
4897 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
4898 END IF;
4899 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
4900 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4901 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;
4902 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
4903 END IF;
4904 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
4905 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4906 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;
4907 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4908 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
4909 END IF;
4910 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
4911 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4912 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;
4913 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4914 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
4915 END IF;
4916 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
4917 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4918 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;
4919 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
4920 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4921 END IF;
4922 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
4923 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4924 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;
4925 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
4926 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
4927 END IF;
4928 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
4929 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4930 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;
4931 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
4932 END IF;
4933 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
4934 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4935 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;
4936 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
4937 END IF;
4938 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
4939 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4940 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4941 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
4942 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4943 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
4944 END IF;
4945 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
4946 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4947 g_fps_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4948 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
4949 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4950 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
4951
4952 END IF;
4953 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
4954 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4955 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4956 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
4957 END IF;
4958 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
4959 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4960 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4961 --g_spp_total := 100 * l_output_table(outer_rec).balance_value;
4962 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
4963 END IF;
4964 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
4965 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4966 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4967 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
4968 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
4969 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
4970 END IF;
4971 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
4972 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4973 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4974 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
4975 END IF;
4976 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
4977 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_TD_YTD') THEN
4978 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
4979 --g_assp_total := 100 * l_output_table(outer_rec).balance_value;
4980 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
4981 END IF;
4982 END IF;
4983 END IF;
4984 END LOOP;
4985 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
4986 END IF;
4987 END LOOP;
4988
4989 ELSE --for IF (l_chld_act_id = l_max_chld_act_id) then
4990 --It is not the latest child asg action id
4991 --Get only the RUN balances with this child asg action id
4992 hr_utility.trace('in side else l_chld_act_id = l_max_chld_act_id');
4993 FOR outer_rec IN 1..l_output_table.count
4994 LOOP
4995 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
4996
4997 FOR inner_rec IN 1..g_fps_bal_det_tab.last
4998 LOOP
4999 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
5000 IF g_fps_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5001 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5002 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;
5003 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5004 END IF;
5005 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5006 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5007 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;
5008 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5009 END IF;
5010 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5011 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5012 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;
5013 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5014 END IF;
5015 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5016 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5017 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;
5018 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5019 END IF;
5020 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5021 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5022 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5023 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5024 END IF;
5025 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5026 IF (g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5027 g_fps_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5028 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5029 elsif g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5030 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;
5031 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5032 end if;
5033 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5034 if g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5035 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;
5036 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5037 end if;
5038 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5039 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5040 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;
5041 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5042 END IF;
5043 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5044 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5045 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;
5046 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5047 END IF;
5048 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5049 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5050 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;
5051 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5052 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5053 END IF;
5054 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5055 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5056 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;
5057 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5058 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5059 END IF;
5060 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5061 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5062 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;
5063 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5064 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5065 END IF;
5066 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5067 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5068 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;
5069 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5070 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5071 END IF;
5072 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5073 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5074 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;
5075 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5076 END IF;
5077 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5078 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5079 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;
5080 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5081 END IF;
5082 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5083 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5084 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5085 END IF;
5086 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5087 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5088 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5089 END IF;
5090 elsif g_fps_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5091 IF g_fps_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5092 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5093 END IF;
5094 END IF;
5095 END IF;
5096 END LOOP;
5097 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5098 END IF;
5099 END LOOP;
5100
5101 END IF;
5102
5103 END LOOP;
5104 END IF; --for if l_child_exists = 'N' then
5105 END IF;
5106 RETURN true;
5107
5108 EXCEPTION
5109 WHEN OTHERS THEN
5110 hr_utility.set_location('Error in function fetch_fps_asg_det2 ', 15);
5111 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
5112 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
5113 RAISE;
5114 END fetch_fps_asg_det2;
5115 --
5116 --
5117 --
5118 -- Function to fetch Assignment details (CONTEXT - GB_RTI_FPS_ASG_DET2) for PAYE aggregated cases
5119 FUNCTION fetch_fps_agg_asg_det2(
5120 p_last_asg_action_id IN NUMBER,
5121 p_asg_id IN NUMBER,
5122 p_fps_bal_context_2 IN OUT nocopy act_info_rec )
5123 RETURN BOOLEAN
5124 IS
5125 l_context_lst pay_balance_pkg.t_context_tab; -- used for batch balance retrieval
5126 l_output_table pay_balance_pkg.t_detailed_bal_out_tab; -- output of batch balance retrieval
5127 l_proc CONSTANT VARCHAR2(50):= g_package||'fetch_fps_agg_asg_det2';
5128 l_asg_primary_flag VARCHAR2(1);
5129 l_per_agg_flag VARCHAR2(1);
5130 l_aggr_archive_flag VARCHAR2(1);
5131 l_last_chld_act_id NUMBER;
5132 l_tax_pay_val number;
5133 l_tax_pay_def_bal_id number;
5134 l_child_exists VARCHAR2(1);
5135 l_chld_act_id NUMBER;
5136 l_max_chld_act_id NUMBER;
5137
5138 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
5139 IS
5140 SELECT trim(asg.primary_flag) asg_primary_flag,
5141 trim(pap.per_information10) per_agg_flag
5142 FROM per_all_people_f pap,
5143 per_all_assignments_f asg
5144 WHERE asg.assignment_id = c_asg_id
5145 AND pap.person_id = asg.person_id
5146 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
5147 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
5148
5149 CURSOR csr_child_act_id(c_lst_act_id NUMBER)
5150 IS
5151 SELECT ASSIGNMENT_ACTION_ID
5152 FROM pay_assignment_actions
5153 WHERE SOURCE_ACTION_ID = c_lst_act_id;
5154
5155 CURSOR csr_tax_paye_result(p_action_id NUMBER)
5156 IS
5157 SELECT MAX(DECODE(name,'Tax Code',prrv.result_value,NULL)),
5158 MAX(DECODE(name,'Tax Basis',DECODE(prrv.result_value,'N','Y',NULL),NULL))
5159 FROM pay_run_results prr ,
5160 pay_run_result_values prrv ,
5161 pay_input_values_f pivf
5162 WHERE prr.assignment_action_id = p_action_id
5163 AND prr.ELEMENT_TYPE_ID = g_paye_element_id
5164 AND prrv.run_result_id = prr.run_result_id
5165 AND pivf.INPUT_VALUE_ID = prrv.INPUT_VALUE_ID;
5166
5167 CURSOR csr_paye_details(p_assignment_id NUMBER) IS
5168 SELECT max(decode(iv.name,'Tax Code',screen_entry_value)) tax_code,
5169 max(decode(iv.name,'Tax Basis',decode(screen_entry_value,'N','Y',NULL),NULL)) tax_basis -- added by kvinayku 14774165
5170 FROM pay_element_entries_f e,
5171 pay_element_entry_values_f v,
5172 pay_input_values_f iv,
5173 pay_element_links_f link
5174 WHERE e.assignment_id = p_asg_id
5175 AND link.element_type_id = g_paye_details_id
5176 AND e.element_link_id = link.element_link_id
5177 AND e.element_entry_id = v.element_entry_id
5178 AND iv.input_value_id = v.input_value_id
5179 AND e.effective_end_date BETWEEN link.effective_start_date AND link.effective_end_date
5180 AND e.effective_end_date BETWEEN iv.effective_start_date AND iv.effective_end_date
5181 AND e.effective_end_date BETWEEN v.effective_start_date AND v.effective_end_date
5182 AND e.effective_end_date = (select max(e1.effective_end_date)
5183 from pay_element_entries_f e1,
5184 pay_element_links_f link1
5185 where link1.element_type_id = g_paye_details_id
5186 and e1.assignment_id = p_asg_id
5187 and e1.element_link_id = link1.element_link_id);
5188
5189
5190 cursor csr_get_taxable_pay(c_balance_name varchar2, c_dim_name varchar2) is
5191 select pdb.defined_balance_id from pay_defined_balances pdb,
5192 pay_balance_dimensions pbd,
5193 pay_balance_types pbt
5194 where pbt.balance_name = c_balance_name
5195 and pbd.database_item_suffix = c_dim_name
5196 and pbt.balance_type_id= pdb.balance_type_id
5197 and pbd.balance_dimension_id = pdb.balance_dimension_id and
5198 pbt.legislation_code = 'GB';
5199
5200 cursor csr_tax_pay_value(p_last_asg_action_id number,l_tax_pay_def_bal_id number)
5201 is
5202 select hr_dirbal.get_balance(p_last_asg_action_id,l_tax_pay_def_bal_id) from dual;
5203
5204 CURSOR csr_max_child_act_id(c_lst_act_id NUMBER)
5205 IS
5206 SELECT max(assignment_action_id)
5207 FROM pay_assignment_actions
5208 WHERE source_action_id = c_lst_act_id;
5209
5210 BEGIN
5211 hr_utility.set_location('Entering: '||l_proc,1);
5212 l_context_lst(1).tax_unit_id :=NULL;
5213 l_context_lst(1).jurisdiction_code :=NULL;
5214 l_context_lst(1).source_id :=NULL;
5215 l_context_lst(1).source_text :=NULL;
5216 l_context_lst(1).source_number :=NULL;
5217 l_context_lst(1).source_text2 :=NULL;
5218 l_context_lst(1).time_def_id :=NULL;
5219 l_context_lst(1).balance_date :=NULL;
5220 l_context_lst(1).local_unit_id :=NULL;
5221 l_context_lst(1).source_number2 :=NULL;
5222 l_context_lst(1).organization_id :=NULL;
5223 hr_utility.set_location('assignment_id :' || p_asg_id,15);
5224 l_asg_primary_flag := 'N';
5225 l_per_agg_flag := 'N';
5226 l_aggr_archive_flag := 'N';
5227
5228 OPEN csr_asg(p_asg_id, g_effective_date);
5229 FETCH csr_asg INTO l_asg_primary_flag, l_per_agg_flag;
5230 CLOSE csr_asg;
5231
5232 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,15);
5233 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,15);
5234 hr_utility.set_location('l_aggr_archive_flag :' || l_aggr_archive_flag,15);
5235 ---
5236
5237 open csr_get_taxable_pay('Taxable Pay', '_ASG_RUN');
5238 fetch csr_get_taxable_pay into l_tax_pay_def_bal_id;
5239 close csr_get_taxable_pay;
5240
5241 open csr_tax_pay_value(p_last_asg_action_id,l_tax_pay_def_bal_id);
5242 fetch csr_tax_pay_value into l_tax_pay_val;
5243 close csr_tax_pay_value;
5244 hr_utility.set_location('l_tax_pay_val :' ||l_tax_pay_val ,15);
5245 -- Test whether we can get run level value with parent action id.
5246 -- If not pass the child assignment action id.
5247
5248 if l_tax_pay_val = 0 then
5249
5250 OPEN csr_child_act_id(p_last_asg_action_id);
5251 FETCH csr_child_act_id INTO l_chld_act_id;
5252 CLOSE csr_child_act_id;
5253
5254 l_child_exists := 'Y';
5255 ELSE
5256 l_chld_act_id := p_last_asg_action_id;
5257 l_child_exists := 'N';
5258 END IF;
5259
5260 IF l_chld_act_id IS NULL THEN
5261 l_chld_act_id := p_last_asg_action_id;
5262 l_child_exists := 'N';
5263 END IF;
5264
5265 OPEN csr_max_child_act_id(p_last_asg_action_id);
5266 FETCH csr_max_child_act_id INTO l_max_chld_act_id;
5267 CLOSE csr_max_child_act_id;
5268
5269 hr_utility.trace('l_max_chld_act_id : '||l_max_chld_act_id);
5270
5271 fetch_tax_code_basis(l_max_chld_act_id, p_fps_bal_context_2.act_info25,p_fps_bal_context_2.act_info27);
5272
5273 if p_fps_bal_context_2.act_info25 is null then
5274 open csr_paye_details(p_asg_id);
5275 fetch csr_paye_details
5276 INTO p_fps_bal_context_2.act_info25,
5277 p_fps_bal_context_2.act_info27;
5278 close csr_paye_details;
5279 end if;
5280 hr_utility.trace('Tax Code '||p_fps_bal_context_2.act_info25||' Tax Basis '||p_fps_bal_context_2.act_info27);
5281
5282 --Check whether we need to get balances with master asg action id or child asg action id
5283 if l_child_exists = 'N' then
5284 --We need to get balances with master asg action id
5285 hr_utility.trace('Processing with Master Action ID:'||p_last_asg_action_id);
5286 --
5287 pay_balance_pkg.get_value(p_assignment_action_id => p_last_asg_action_id ,
5288 p_defined_balance_lst => g_aggr_defined_balance_lst ,
5289 p_context_lst => l_context_lst ,
5290 p_output_table => l_output_table );
5291
5292 hr_utility.trace('After invoking get_value');
5293 p_fps_bal_context_2.assignment_id := p_asg_id;
5294 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
5295 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
5296
5297 --Get all the balances with master asg action id
5298 FOR outer_rec IN 1..l_output_table.count
5299 LOOP
5300
5301 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5302
5303 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
5304 LOOP
5305 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
5306 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5307 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
5308 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5309 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
5310 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5311 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;
5312 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5313 END IF;
5314 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5315 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
5316 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5317 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
5318 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5319 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;
5320 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5321 END IF;
5322 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5323 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5324 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5325 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5326 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5327 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;
5328 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5329 END IF;
5330 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5331 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5332 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5333 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5334 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5335 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;
5336 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5337 END IF;
5338 -- This is for newly created balances
5339 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5340 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5341 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5342 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5343 END IF;
5344 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5345 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5346 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5347 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5348 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5349 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;
5350 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5351 end if;
5352 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5353 if g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5354 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;
5355 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5356 end if;
5357 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5358 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5359 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;
5360 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5361 END IF;
5362 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
5363 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5364 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;
5365 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5366 END IF;
5367 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
5368 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5369 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;
5370 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5371 END IF;
5372 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5373 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5374 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;
5375 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5376 END IF;
5377 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5378 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5379 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;
5380 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5381 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5382 END IF;
5383 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5384 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5385 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;
5386 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5387 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5388 END IF;
5389 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5390 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5391 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;
5392 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5393 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5394 END IF;
5395 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5396 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5397 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;
5398 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5399 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5400 END IF;
5401 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5402 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5403 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;
5404 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5405 END IF;
5406 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5407 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5408 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;
5409 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5410 END IF;
5411 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5412 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5413 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5414 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
5415 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5416 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5417 END IF;
5418 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5419 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5420 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5421 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5422 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5423 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5424
5425 END IF;
5426 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
5427 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5428 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5429 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5430 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5431 g_spp_total := NVL(g_spp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5432 END IF;
5433 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
5434 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5435 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5436 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5437 END IF;
5438 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5439 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5440 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5441 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
5442 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5443 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5444
5445 END IF;
5446 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
5447 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5448 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5449 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5450 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5451 g_assp_total := NVL(g_assp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5452 END IF;
5453 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
5454 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5455 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5456 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5457 END IF;
5458 END IF;
5459 END IF;
5460 END LOOP;
5461 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5462 END IF; --Not null check ends
5463 END LOOP;
5464
5465 ELSE --For if l_child_exists = 'N' then
5466 --We need to get balances with child asg action id
5467 hr_utility.trace('Processing with Child Action IDs of:'||p_last_asg_action_id);
5468
5469 FOR rec IN csr_child_act_id(p_last_asg_action_id)
5470 LOOP
5471
5472 --Loop for getting the balances for all child asg action id's
5473 l_chld_act_id := rec.assignment_action_id;
5474 hr_utility.trace('l_chld_act_id:'||l_chld_act_id);
5475
5476 pay_balance_pkg.get_value(p_assignment_action_id => l_chld_act_id,
5477 p_defined_balance_lst => g_aggr_defined_balance_lst ,
5478 p_context_lst => l_context_lst ,
5479 p_output_table => l_output_table );
5480
5481 hr_utility.trace('After invoking get_value');
5482 p_fps_bal_context_2.assignment_id := p_asg_id;
5483 p_fps_bal_context_2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
5484 hr_utility.trace('Before entering for i in 1..g_fps_bal_det_tab.last loop');
5485
5486 --Check whether this is the latest child asg action id
5487 IF (l_chld_act_id = l_max_chld_act_id) then
5488 --It is the latest child asg action id
5489 --Get all the balances with this latest child asg action id
5490 FOR outer_rec IN 1..l_output_table.count
5491 LOOP
5492
5493 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5494
5495 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
5496 LOOP
5497 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
5498 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5499 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD' ) THEN
5500 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5501 p_fps_bal_context_2.act_info1 := 100 * l_output_table(outer_rec).balance_value;
5502 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5503 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;
5504 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5505 END IF;
5506 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5507 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_CPE_YTD') THEN
5508 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5509 p_fps_bal_context_2.act_info2 := 100 * l_output_table(outer_rec).balance_value;
5510 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5511 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;
5512 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5513 END IF;
5514 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5515 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5516 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5517 p_fps_bal_context_2.act_info3 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5518 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5519 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;
5520 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5521 END IF;
5522 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5523 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5524 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5525 p_fps_bal_context_2.act_info4 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5526 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5527 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;
5528 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5529 END IF;
5530 -- This is for newly created balances
5531 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5532 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5533 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5534 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5535 END IF;
5536 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5537 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5538 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5539 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5540 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5541 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;
5542 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5543 end if;
5544 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5545 if g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5546 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;
5547 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5548 end if;
5549 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5550 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5551 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;
5552 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5553 END IF;
5554 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NIable Deductions Free of Tax' THEN
5555 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5556 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;
5557 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5558 END IF;
5559 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Deductions' THEN
5560 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5561 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;
5562 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) - 100 * l_output_table(outer_rec).balance_value;
5563 END IF;
5564 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5565 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5566 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;
5567 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5568 END IF;
5569 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5570 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5571 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;
5572 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5573 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5574 END IF;
5575 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5576 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5577 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;
5578 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5579 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5580 END IF;
5581 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5582 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5583 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;
5584 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5585 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5586 END IF;
5587 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5588 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5589 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;
5590 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5591 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5592 END IF;
5593 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5594 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5595 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;
5596 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5597 END IF;
5598 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5599 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5600 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;
5601 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5602 END IF;
5603 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5604 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5605 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5606 p_fps_bal_context_2.act_info18 := 100 * l_output_table(outer_rec).balance_value;
5607 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5608 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5609 END IF;
5610 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5611 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5612 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5613 p_fps_bal_context_2.act_info19 := 100 * NVL(l_output_table(outer_rec).balance_value,0);
5614 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5615 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5616
5617 END IF;
5618 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
5619 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5620 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5621 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5622 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5623 g_spp_total := NVL(g_spp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5624 END IF;
5625 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Birth Total' THEN
5626 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5627 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5628 p_fps_bal_context_2.act_info20 := nvl(p_fps_bal_context_2.act_info20,0) + 100 * l_output_table(outer_rec).balance_value;
5629 END IF;
5630 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5631 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5632 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5633 p_fps_bal_context_2.act_info21 := 100 * l_output_table(outer_rec).balance_value;
5634 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5635 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5636
5637 END IF;
5638 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
5639 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5640 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5641 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5642 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5643 g_assp_total := NVL(g_assp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5644 END IF;
5645 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Birth Total' THEN
5646 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_PER_TD_YTD') THEN
5647 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5648 p_fps_bal_context_2.act_info22 := nvl(p_fps_bal_context_2.act_info22,0) + 100 * l_output_table(outer_rec).balance_value;
5649 END IF;
5650 END IF;
5651 END IF;
5652 END LOOP;
5653 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5654 END IF; --Not null check ends
5655 END LOOP;
5656
5657 ELSE --IF (l_chld_act_id = l_max_chld_act_id) then
5658 --It is not the latest child asg action id
5659 --Get only the RUN balances with this child asg action id
5660
5661 FOR outer_rec IN 1..l_output_table.count
5662 LOOP
5663
5664 IF l_output_table(outer_rec).balance_value is not null then -- Null Check
5665
5666 FOR inner_rec IN 1..g_fps_aggr_bal_det_tab.last
5667 LOOP
5668 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
5669 IF g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Taxable Pay' THEN
5670 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5671 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;
5672 p_fps_bal_context_2.act_info6 := NVL(p_fps_bal_context_2.act_info6,0) + 100 * l_output_table(outer_rec).balance_value;
5673 END IF;
5674 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'PAYE' THEN
5675 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5676 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;
5677 p_fps_bal_context_2.act_info17 := NVL(p_fps_bal_context_2.act_info17,0) + 100 * l_output_table(outer_rec).balance_value;
5678 END IF;
5679 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Student Loan' THEN
5680 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5681 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;
5682 p_fps_bal_context_2.act_info16 := NVL(p_fps_bal_context_2.act_info16,0) + 100 * l_output_table(outer_rec).balance_value;
5683 END IF;
5684 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'NI Employer' THEN
5685 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5686 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;
5687 p_fps_bal_context_2.act_info23 := NVL(p_fps_bal_context_2.act_info23,0) + 100 * l_output_table(outer_rec).balance_value;
5688 END IF;
5689 -- This is for newly created balances
5690 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Direct Payments' THEN
5691 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5692 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5693 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5694 END IF;
5695 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax and NI' THEN
5696 IF (g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN') THEN
5697 g_fps_aggr_bal_det_tab(inner_rec).balance_value := 100 * l_output_table(outer_rec).balance_value;
5698 p_fps_bal_context_2.act_info7 := NVL(p_fps_bal_context_2.act_info7,0) + 100 * l_output_table(outer_rec).balance_value;
5699 elsif g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5700 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;
5701 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) - 100 * l_output_table(outer_rec).balance_value;
5702 end if;
5703 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Earnings Free of Tax' THEN
5704 if g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5705 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;
5706 p_fps_bal_context_2.act_info14 := NVL(p_fps_bal_context_2.act_info14,0) + 100 * l_output_table(outer_rec).balance_value;
5707 end if;
5708 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Total Deductions' THEN
5709 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5710 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;
5711 p_fps_bal_context_2.act_info8 := NVL( p_fps_bal_context_2.act_info8,0) + 100 * l_output_table(outer_rec).balance_value;
5712 END IF;
5713 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Gross Pay' THEN
5714 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5715 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;
5716 p_fps_bal_context_2.act_info9 := NVL(p_fps_bal_context_2.act_info9,0) + 100 * l_output_table(outer_rec).balance_value;
5717 END IF;
5718 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Earnings' THEN
5719 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5720 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;
5721 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5722 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5723 END IF;
5724 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll Subject to NIC Information' THEN
5725 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5726 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;
5727 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5728 p_fps_bal_context_2.act_info11 := NVL(p_fps_bal_context_2.act_info11,0) + 100 * l_output_table(outer_rec).balance_value;
5729 END IF;
5730 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings' THEN
5731 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5732 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;
5733 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5734 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5735 END IF;
5736 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Benefits Taxed Through Payroll NOT Subject to NIC Information' THEN
5737 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5738 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;
5739 p_fps_bal_context_2.act_info12 := NVL(p_fps_bal_context_2.act_info12,0) + 100 * l_output_table(outer_rec).balance_value;
5740 p_fps_bal_context_2.act_info10 := NVL( p_fps_bal_context_2.act_info10,0) + 100 * l_output_table(outer_rec).balance_value;
5741 END IF;
5742 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Pre Tax Pension Contributions' THEN
5743 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5744 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;
5745 p_fps_bal_context_2.act_info13 := NVL(p_fps_bal_context_2.act_info13,0) + 100 * l_output_table(outer_rec).balance_value;
5746 END IF;
5747 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'Post Tax Pension Contributions' THEN
5748 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5749 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;
5750 p_fps_bal_context_2.act_info15 := NVL(p_fps_bal_context_2.act_info15,0) + 100 * l_output_table(outer_rec).balance_value;
5751 END IF;
5752 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SSP Total' THEN
5753 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5754 g_ssp_total := NVL(g_ssp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5755 END IF;
5756 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SMP Total' THEN
5757 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5758 g_smp_total := NVL(g_smp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5759
5760 END IF;
5761 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SPP Adoption Total' THEN
5762 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5763 g_spp_total := NVL(g_spp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5764 END IF;
5765 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'SAP Total' THEN
5766 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5767 g_sap_total := NVL(g_sap_total,0) + 100 * l_output_table(outer_rec).balance_value;
5768
5769 END IF;
5770 elsif g_fps_aggr_bal_det_tab(inner_rec).balance_name = 'ASPP Adoption Total' THEN
5771 IF g_fps_aggr_bal_det_tab(inner_rec).database_item_suffix = '_ASG_RUN' THEN
5772 g_assp_total := NVL(g_assp_total,0) + 100 * l_output_table(outer_rec).balance_value;
5773 END IF;
5774 END IF;
5775 END IF;
5776 END LOOP;
5777 hr_utility.trace('After for i in 1..g_fps_bal_det_tab.last loop');
5778 END IF; --Not null check ends
5779 END LOOP;
5780 END IF; --IF (l_chld_act_id = l_max_chld_act_id) then
5781
5782 END LOOP;
5783 END IF; --For if l_child_exists = 'N' then
5784
5785
5786 RETURN true;
5787
5788 EXCEPTION
5789 WHEN OTHERS THEN
5790 hr_utility.set_location('Error in function fetch_fps_agg_asg_det2 ', 15);
5791 hr_utility.trace('Exception:' || SQLCODE || ' - ' || SQLERRM );
5792 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
5793 RAISE;
5794 END fetch_fps_agg_asg_det2;
5795
5796 PROCEDURE populate_run_msg(
5797 p_assignment_action_id IN NUMBER ,
5798 p_message_text IN VARCHAR2,
5799 p_message_level IN VARCHAR2 DEFAULT 'F')
5800 IS
5801 PRAGMA AUTONOMOUS_TRANSACTION;
5802 BEGIN
5803 hr_utility.set_location(' Entering: populate_run_msg',111);
5804
5805 INSERT
5806 INTO pay_message_lines
5807 (
5808 line_sequence,
5809 payroll_id,
5810 message_level,
5811 source_id,
5812 source_type,
5813 line_text
5814 )
5815 VALUES
5816 (
5817 pay_message_lines_s.nextval ,
5818 100 ,
5819 p_message_level, --'F' ,
5820 p_assignment_action_id ,
5821 'A' ,
5822 SUBSTR(p_message_text,1,240)
5823 );
5824 hr_utility.set_location(' Leaving: populate_run_msg',999);
5825 COMMIT;
5826
5827 EXCEPTION
5828 WHEN OTHERS THEN
5829 hr_utility.trace('Error occured in populate_run_msg');
5830 RAISE;
5831 END populate_run_msg;
5832
5833 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 )
5834 is
5835 begin
5836 hr_utility.trace('Entering set_address_fields');
5837
5838 --Address Fields are mandatory when nino is not known or on starter
5839 if p_asg_det.act_info1 is null then
5840 if p_person_rec.act_info7 is not null then
5841 p_addr_rec.act_info5 := NULL;
5842 p_addr_rec.act_info6 := NULL;
5843 p_addr_rec.act_info7 := NULL;
5844 p_addr_rec.act_info8 := NULL;
5845 p_addr_rec.act_info12 := NULL;
5846 p_addr_rec.act_info13 := NULL;
5847 hr_utility.trace('Address details will not be reported.');
5848 end if;
5849 end if;
5850
5851 hr_utility.trace('Leaving set_address_fields');
5852 end set_address_fields;
5853
5854 -- Procedure to insert data to the archive table pay_action_information
5855 PROCEDURE insert_archive_row
5856 (
5857 p_assactid IN NUMBER,
5858 p_effective_date IN DATE,
5859 p_tab_rec_data IN action_info_table
5860 )
5861 IS
5862 l_proc CONSTANT VARCHAR2(50):= g_package||'insert_archive_row';
5863 l_ovn NUMBER;
5864 l_action_id NUMBER;
5865 BEGIN
5866 hr_utility.set_location('Entering: '||l_proc,1);
5867
5868 IF p_tab_rec_data.count > 0 THEN
5869 FOR i IN p_tab_rec_data.first .. p_tab_rec_data.last
5870 LOOP
5871 hr_utility.trace
5872 (
5873 'Defining category '|| p_tab_rec_data(i).action_info_category
5874 )
5875 ;
5876 hr_utility.trace('action_context_id = '|| p_assactid);
5877 IF p_tab_rec_data(i).action_info_category IS NOT NULL THEN
5878 pay_action_information_api.create_action_information( p_action_information_id => l_action_id,
5879 p_object_version_number => l_ovn,
5880 p_action_information_category => p_tab_rec_data(i).action_info_category,
5881 p_action_context_id => p_assactid,
5882 p_action_context_type => 'AAP',
5883 p_assignment_id => p_tab_rec_data(i).assignment_id,
5884 p_effective_date => p_effective_date,
5885 p_action_information1 => p_tab_rec_data(i).act_info1,
5886 p_action_information2 => p_tab_rec_data(i).act_info2,
5887 p_action_information3 => p_tab_rec_data(i).act_info3,
5888 p_action_information4 => p_tab_rec_data(i).act_info4,
5889 p_action_information5 => p_tab_rec_data(i).act_info5,
5890 p_action_information6 => p_tab_rec_data(i).act_info6,
5891 p_action_information7 => p_tab_rec_data(i).act_info7,
5892 p_action_information8 => p_tab_rec_data(i).act_info8,
5893 p_action_information9 => p_tab_rec_data(i).act_info9,
5894 p_action_information10 => p_tab_rec_data(i).act_info10,
5895 p_action_information11 => p_tab_rec_data(i).act_info11,
5896 p_action_information12 => p_tab_rec_data(i).act_info12,
5897 p_action_information13 => p_tab_rec_data(i).act_info13,
5898 p_action_information14 => p_tab_rec_data(i).act_info14,
5899 p_action_information15 => p_tab_rec_data(i).act_info15,
5900 p_action_information16 => p_tab_rec_data(i).act_info16,
5901 p_action_information17 => p_tab_rec_data(i).act_info17,
5902 p_action_information18 => p_tab_rec_data(i).act_info18,
5903 p_action_information19 => p_tab_rec_data(i).act_info19,
5904 p_action_information20 => p_tab_rec_data(i).act_info20,
5905 p_action_information21 => p_tab_rec_data(i).act_info21,
5906 p_action_information22 => p_tab_rec_data(i).act_info22,
5907 p_action_information23 => p_tab_rec_data(i).act_info23,
5908 p_action_information24 => p_tab_rec_data(i).act_info24,
5909 p_action_information25 => p_tab_rec_data(i).act_info25,
5910 p_action_information26 => p_tab_rec_data(i).act_info26,
5911 p_action_information27 => p_tab_rec_data(i).act_info27,
5912 p_action_information28 => p_tab_rec_data(i).act_info28,
5913 p_action_information29 => p_tab_rec_data(i).act_info29,
5914 p_action_information30 => p_tab_rec_data(i).act_info30 );
5915 END IF;
5916 END LOOP;
5917 END IF;
5918 hr_utility.set_location('Leaving: '||l_proc,999);
5919 END insert_archive_row;
5920 -- Procedure to insert data to the archive table pay_action_information.
5921 -- This is used in PAYE aggregation case inaddition to the procedure insert_archive_row
5922 PROCEDURE insert_archive_row_agg
5923 (
5924 p_assactid IN NUMBER,
5925 p_effective_date IN DATE,
5926 p_tab_rec_data IN action_info_table
5927 )
5928 IS
5929 l_proc CONSTANT VARCHAR2(50):= g_package||'insert_archive_row_agg';
5930 l_ovn NUMBER;
5931 l_action_id NUMBER;
5932 l_assact_id number;
5933 BEGIN
5934 hr_utility.set_location('Entering: '||l_proc,1);
5935
5936 IF p_tab_rec_data.count > 0 THEN
5937 FOR i IN p_tab_rec_data.first .. p_tab_rec_data.last
5938 LOOP
5939 hr_utility.trace
5940 (
5941 'Defining category '|| p_tab_rec_data(i).action_info_category
5942 )
5943 ;
5944 hr_utility.trace('action_context_id = '|| p_assactid);
5945 IF p_tab_rec_data(i).action_info_category IS NOT NULL THEN
5946 -- get the assignment action id for the each assignment which are created in action creation
5947 select paa.assignment_action_id into l_assact_id from pay_assignment_actions paa
5948 where paa.payroll_action_id = g_payroll_action_id
5949 and paa.assignment_id = p_tab_rec_data(i).assignment_id;
5950
5951 pay_action_information_api.create_action_information( p_action_information_id => l_action_id,
5952 p_object_version_number => l_ovn,
5953 p_action_information_category => p_tab_rec_data(i).action_info_category,
5954 p_action_context_id => l_assact_id,
5955 p_action_context_type => 'AAP',
5956 p_assignment_id => p_tab_rec_data(i).assignment_id,
5957 p_effective_date => p_effective_date,
5958 p_action_information1 => p_tab_rec_data(i).act_info1,
5959 p_action_information2 => p_tab_rec_data(i).act_info2,
5960 p_action_information3 => p_tab_rec_data(i).act_info3,
5961 p_action_information4 => p_tab_rec_data(i).act_info4,
5962 p_action_information5 => p_tab_rec_data(i).act_info5,
5963 p_action_information6 => p_tab_rec_data(i).act_info6,
5964 p_action_information7 => p_tab_rec_data(i).act_info7,
5965 p_action_information8 => p_tab_rec_data(i).act_info8,
5966 p_action_information9 => p_tab_rec_data(i).act_info9,
5967 p_action_information10 => p_tab_rec_data(i).act_info10,
5968 p_action_information11 => p_tab_rec_data(i).act_info11,
5969 p_action_information12 => p_tab_rec_data(i).act_info12,
5970 p_action_information13 => p_tab_rec_data(i).act_info13,
5971 p_action_information14 => p_tab_rec_data(i).act_info14,
5972 p_action_information15 => p_tab_rec_data(i).act_info15,
5973 p_action_information16 => p_tab_rec_data(i).act_info16,
5974 p_action_information17 => p_tab_rec_data(i).act_info17,
5975 p_action_information18 => p_tab_rec_data(i).act_info18,
5976 p_action_information19 => p_tab_rec_data(i).act_info19,
5977 p_action_information20 => p_tab_rec_data(i).act_info20,
5978 p_action_information21 => p_tab_rec_data(i).act_info21,
5979 p_action_information22 => p_tab_rec_data(i).act_info22,
5980 p_action_information23 => p_tab_rec_data(i).act_info23,
5981 p_action_information24 => p_tab_rec_data(i).act_info24,
5982 p_action_information25 => p_tab_rec_data(i).act_info25,
5983 p_action_information26 => p_tab_rec_data(i).act_info26,
5984 p_action_information27 => p_tab_rec_data(i).act_info27,
5985 p_action_information28 => p_tab_rec_data(i).act_info28,
5986 p_action_information29 => p_tab_rec_data(i).act_info29,
5987 p_action_information30 => p_tab_rec_data(i).act_info30 );
5988 END IF;
5989 END LOOP;
5990 END IF;
5991 hr_utility.set_location('Leaving: '||l_proc,999);
5992 END insert_archive_row_agg;
5993
5994 --
5995 --
5996 /*------------ PUBLIC PROCEDURES --------------*/
5997 /*--------------------------------------------------------------------------
5998 Name : range_cursor
5999 Purpose : This returns the select statement that is used to create the
6000 range rows.
6001 Arguments :
6002 Notes : The range cursor determines which people should be processed.
6003 The normal practice is to include everyone, and then limit
6004 the list during the assignment action creation.
6005 --------------------------------------------------------------------------*/
6006 PROCEDURE range_cursor
6007 (
6008 pactid IN NUMBER,
6009 sqlstr OUT NOCOPY VARCHAR2
6010 )
6011 IS
6012
6013 CURSOR csr_parameter_info
6014 IS
6015 SELECT SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PRE_PAY_ID'),1,20) pre_pay_id,
6016 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS'),1,20) first_fps,
6017 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
6018 fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS_DATE'),1,10)) first_fps_date
6019 FROM pay_payroll_actions
6020 WHERE payroll_action_id = pactid;
6021
6022 CURSOR csr_get_payroll_id(c_pre_pact_id NUMBER)
6023 IS
6024 SELECT payroll_id
6025 FROM pay_payroll_actions
6026 WHERE payroll_action_id = c_pre_pact_id;
6027
6028 -- cursor to check whether first fps is run for this payroll or not
6029 cursor c_first_fps_ran(c_payroll_id number) is
6030 select 'Y' from pay_payroll_actions ppa
6031 where c_payroll_id = pay_gb_eoy_archive.get_parameter(legislative_parameters,'PAYROLL_ID')
6032 and pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS') = 'Y'
6033 and ACTION_STATUS = 'C'
6034 and exists (select 1 from pay_gb_fps_details where PAYROLL_ACTION_ID = ppa.payroll_action_id);
6035
6036 cursor csr_other_prepay_pactid(c_tax_ref varchar2) is
6037 select distinct ppa.payroll_action_id
6038 from pay_payroll_actions ppa
6039 where ppa.effective_date >= sysdate - 30
6040 and ppa.action_type in ('P','U')
6041 and ppa.action_status ='C'
6042 and ppa.payroll_id in (select distinct payroll_id
6043 from pay_all_payrolls_f papf,
6044 hr_soft_coding_keyflex flex
6045 where upper(flex.segment1) = c_tax_ref
6046 and flex.SOFT_CODING_KEYFLEX_ID = papf.SOFT_CODING_KEYFLEX_ID)
6047 minus
6048 select distinct pre_payment_payroll_action_id from pay_gb_bacs_fps;
6049
6050 l_report_type VARCHAR2(15);
6051 l_payroll_id NUMBER;
6052 l_proc CONSTANT VARCHAR2(35):= g_package||'range_cursor';
6053 l_first_fps_ind varchar2(10);
6054 l_first_fps_date date;
6055 l_frst_fps_ran char;
6056 l_dummy number;
6057 l_other_prepay_pactid number;
6058 l_tax_ref varchar2(30);
6059
6060 BEGIN
6061 hr_utility.set_location('Entering: '||l_proc,1);
6062
6063 OPEN csr_parameter_info;
6064 FETCH csr_parameter_info INTO g_pre_pact_id,l_first_fps_ind,l_tax_ref,l_first_fps_date;
6065 CLOSE csr_parameter_info;
6066 hr_utility.trace('g_pre_pact_id: '||g_pre_pact_id);
6067 hr_utility.trace('l_tax_ref: '||l_tax_ref);
6068 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS: ');
6069 l_dummy := PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS(g_pre_pact_id, 'FPS');
6070
6071 /*Below code generates the HASH CODE for All Prepayments ran within 30 days.
6072 This will avoid generating duplicate records when it is called from Archive Code*/
6073
6074 OPEN csr_other_prepay_pactid(l_tax_ref);
6075 LOOP
6076 FETCH csr_other_prepay_pactid INTO l_other_prepay_pactid;
6077 EXIT WHEN csr_other_prepay_pactid%notfound;
6078 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS for: '||l_other_prepay_pactid);
6079 l_dummy := PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS(l_other_prepay_pactid, 'FPS');
6080 hr_utility.trace('After calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS for: '||l_other_prepay_pactid);
6081 END LOOP;
6082 CLOSE csr_other_prepay_pactid;
6083
6084 OPEN csr_get_payroll_id(g_pre_pact_id);
6085 FETCH csr_get_payroll_id INTO l_payroll_id;
6086 CLOSE csr_get_payroll_id;
6087
6088 hr_utility.trace(' Payroll : '||l_payroll_id);
6089 hr_utility.trace(' l_first_fps_ind : '||l_first_fps_ind);
6090 hr_utility.trace(' l_first_fps_date : '||l_first_fps_date);
6091
6092 -- This blocks checks whether First FPS is already ran for this payroll.
6093 if l_first_fps_ind is not null and l_first_fps_ind = 'Y' then
6094 open c_first_fps_ran(l_payroll_id);
6095 fetch c_first_fps_ran into l_frst_fps_ran;
6096 close c_first_fps_ran;
6097
6098 if l_frst_fps_ran = 'Y' then
6099 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.');
6100 raise first_fps_ran_already_error;
6101 end if;
6102 end if;
6103
6104 if l_first_fps_ind is not null and l_first_fps_ind <> 'Y'
6105 and l_first_fps_date is not null then
6106 fnd_file.put_line (fnd_file.LOG,'Error : First FPS date should not be entered when First FPS Indicator is not Yes.');
6107 RAISE first_fps_indicator_error;
6108 end if;
6109
6110 if l_first_fps_ind = 'Y' and l_first_fps_date is null then
6111 fnd_file.put_line (fnd_file.LOG,'Error : Enter the First FPS date when First FPS Indicator is Yes.');
6112 RAISE first_fps_indicator_error;
6113 end if;
6114
6115 sqlstr := 'select distinct PERSON_ID '|| 'from per_all_assignments_f paaf, '
6116 || 'pay_payroll_actions ppa '|| 'where ppa.payroll_action_id = :payroll_action_id '
6117 || 'and ppa.business_group_id = paaf.business_group_id '|| ' and paaf.payroll_id = '
6118 ||''''||l_payroll_id||''''|| ' order by person_id';
6119
6120 hr_utility.trace(' Range Cursor Statement : '||sqlstr);
6121 -- Header validations
6122 pay_gb_rti_fps_validate.header_validations(pactid,g_validation_check);
6123
6124 hr_utility.set_location(' Leaving: '||l_proc,100);
6125
6126 EXCEPTION
6127 when first_fps_indicator_error then
6128 hr_utility.raise_error;
6129 when first_fps_ran_already_error then
6130 hr_utility.set_location('First FPS already ran for the payroll id '||l_payroll_id,1);
6131 hr_utility.raise_error;
6132 WHEN OTHERS THEN
6133 hr_utility.raise_error;
6134 END range_cursor;
6135 --
6136 --
6137 --
6138 PROCEDURE internal_action_creation_fps(
6139 pactid IN NUMBER,
6140 stperson IN NUMBER,
6141 endperson IN NUMBER,
6142 chunk IN NUMBER,
6143 p_info_type IN VARCHAR2,
6144 p_rep_type IN VARCHAR2)
6145 IS
6146 l_proc CONSTANT VARCHAR2(90):= g_package||'internal_action_creation_fps';
6147 l_payroll_id NUMBER;
6148 l_tax_ref VARCHAR2(20);
6149 l_business_group_id NUMBER;
6150 l_end_date DATE;
6151 l_start_date DATE;
6152 l_ass_act_id NUMBER;
6153 l_assignment_id NUMBER;
6154 l_arch BOOLEAN;
6155 lockingactid NUMBER;
6156 l_locked_action_id NUMBER;
6157 l_exist NUMBER;
6158 l_first_fps VARCHAR2(1);
6159 l_first_fps_run_date date;
6160 l_first_fps_eff_date date;
6161 l_asg_number per_all_assignments_f.assignment_number%type;
6162 CURSOR csr_parameter_info
6163 IS
6164 SELECT to_number(pay_gb_eoy_archive.get_parameter(legislative_parameters, 'PAYROLL_ID')) payroll_id,
6165 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
6166 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS'),1,1) first_fps,
6167 effective_date,
6168 business_group_id,
6169 fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS_DATE'),1,10)) first_fps_date
6170 FROM pay_payroll_actions pact
6171 WHERE payroll_action_id = pactid;
6172
6173 CURSOR csr_asg(c_asg_id NUMBER, c_effective_date DATE)
6174 IS
6175 SELECT asg.person_id person_id,
6176 trim(asg.primary_flag) asg_primary_flag,
6177 trim(nvl(pap.per_information10,'N')) per_agg_flag,
6178 trim(nvl(pap.per_information9,'N')) ni_agg_flag,
6179 asg.assignment_number
6180 FROM per_all_people_f pap,
6181 per_all_assignments_f asg
6182 WHERE asg.assignment_id = c_asg_id
6183 AND pap.person_id = asg.person_id
6184 AND asg.business_group_id = l_business_group_id
6185 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
6186 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date;
6187
6188 CURSOR csr_get_assignments( pactid NUMBER,
6189 stperson NUMBER,
6190 endperson NUMBER,
6191 p_payroll_id NUMBER,
6192 p_pre_pact_id NUMBER,
6193 c_effective_date DATE)
6194 IS
6195 SELECT DISTINCT act.assignment_id assignment_id,
6196 act.assignment_action_id asg_act_id
6197 FROM --pay_payroll_actions ppa, --Current pactid
6198 pay_payroll_actions appa, --Payroll Run
6199 pay_payroll_actions appa2, --Prepayments
6200 pay_assignment_actions act, --Payroll Run
6201 pay_assignment_actions act1, --Prepayments
6202 pay_action_interlocks pai, --Prepayments
6203 per_all_assignments_f as1
6204 WHERE --ppa.payroll_action_id = pactid
6205 as1.person_id BETWEEN stperson AND endperson
6206 AND appa.action_type IN ('R','Q','V','B') -- Payroll Run or Quickpay Run
6207 AND act.payroll_action_id = appa.payroll_action_id
6208 AND act.source_action_id IS NULL
6209 AND as1.assignment_id = act.assignment_id
6210 AND appa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
6211 AND act.action_status = 'C'
6212 AND act.assignment_action_id = pai.locked_action_id
6213 AND act1.assignment_action_id = pai.locking_action_id
6214 AND act1.action_status = 'C'
6215 AND act1.payroll_action_id = appa2.payroll_action_id
6216 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
6217 AND as1.payroll_id = p_payroll_id
6218 --OR p_payroll_id IS NULL)
6219 AND appa2.payroll_action_id = p_pre_pact_id
6220 AND exists( select 1
6221 from pay_pre_payments ppp
6222 where ASSIGNMENT_ACTION_ID = act1.assignment_action_id
6223 and ppp.value <> 0)
6224 ORDER BY act.assignment_id;
6225
6226 l_flag VARCHAR2(1) :='Y';
6227 l_prev_person NUMBER :=0;
6228 --
6229 l_effective_date DATE;
6230 l_asg_primary_flag VARCHAR2(1);
6231 l_per_agg_flag VARCHAR2(1);
6232 l_ni_agg_flag VARCHAR2(1);
6233 l_pre_pact_id NUMBER;
6234
6235
6236 -- First FPS Cursors
6237 cursor csr_get_prepayment_date(p_pre_pact_id number) is
6238 select effective_date, payroll_id, business_group_id
6239 from pay_payroll_actions
6240 where payroll_action_id = p_pre_pact_id;
6241
6242 cursor csr_asg_details(p_prepay_id number,p_prepayment_date date, l_prl_id number, l_bus_grp_id number) is
6243 select distinct paaf.assignment_id assignment_id,
6244 trim(paaf.primary_flag) asg_primary_flag,
6245 trim(pap.per_information10) per_agg_flag,
6246 pap.person_id
6247 from per_all_people_f pap,
6248 per_all_assignments_f paaf,
6249 per_assignment_status_types past --,
6250 --pay_payroll_actions paa
6251 where pap.person_id between stperson and endperson
6252 -- and paa.payroll_Action_id = p_prepay_id
6253 and pap.person_id = paaf.person_id
6254 and paaf.assignment_type = 'E'
6255 and paaf.assignment_status_type_id = past.assignment_status_type_id
6256 and past.per_system_status in ('ACTIVE_ASSIGN', 'SUSP_ASSIGN','TERM_ASSIGN')
6257 and paaf.business_group_id = l_bus_grp_id --paa.business_group_id
6258 and paaf.payroll_id = l_prl_id --paa.payroll_id
6259 and pap.effective_start_date =
6260 ( select max(pap2.effective_start_date) from
6261 per_all_people_f pap2
6262 where pap2.person_id = pap.person_id
6263 and pap2.effective_start_date <= p_prepayment_date
6264 )
6265 and paaf.effective_start_date =
6266 ( select max(asg2.effective_start_date)
6267 from per_all_assignments_f asg2
6268 where asg2.assignment_id = paaf.assignment_id
6269 and asg2.assignment_type = 'E'
6270 and asg2.effective_start_date <= p_prepayment_date
6271 )
6272 order by pap.person_id;
6273
6274 -- cursor to check whether this assignment processed in prepayment or not
6275 cursor csr_prepayment_made(pre_pay_id number,p_asg_id number) is
6276 SELECT paa_pre.assignment_id
6277 FROM pay_assignment_actions paa_pre
6278 , pay_assignment_actions paa_arcv
6279 WHERE paa_arcv.assignment_id = p_asg_id
6280 AND paa_pre.payroll_action_id = pre_pay_id
6281 AND paa_pre.assignment_id = paa_arcv.assignment_id;
6282
6283 -- get the defined balance id for specified balance and dimension
6284 cursor get_defined_balance_id
6285 (p_balance_name VARCHAR2, p_dimension_name VARCHAR2) IS
6286 SELECT defined_balance_id
6287 FROM pay_defined_balances db
6288 , pay_balance_types b
6289 , pay_balance_dimensions d
6290 WHERE b.balance_name = p_balance_name
6291 AND d.dimension_name = p_dimension_name
6292 AND db.balance_type_id = b.balance_type_id
6293 AND db.balance_dimension_id = d.balance_dimension_id
6294 AND b.legislation_code = 'GB'
6295 AND d.legislation_code = 'GB';
6296
6297 -- to fetch last assignment action id for the given assignment
6298 cursor csr_last_action(p_asgid NUMBER, p_start_year DATE,p_end_year DATE) IS
6299 SELECT
6300 to_number (substr (max (lpad (paa.action_sequence, 15
6301 , '0')
6302 || paa.assignment_action_id), 16))
6303 , max (pact.effective_date) effective_date
6304 FROM pay_assignment_actions paa
6305 , pay_payroll_actions pact
6306 , per_time_periods ptp
6307 WHERE paa.assignment_id = p_asgid
6308 AND paa.payroll_action_id = pact.payroll_action_id
6309 AND pact.payroll_id = l_payroll_id
6310 AND pact.time_period_id = ptp.time_period_id
6311 AND pact.action_type IN ('Q', 'R', 'B'
6312 , 'I', 'V')
6313 AND paa.action_status IN ('C', 'S')
6314 AND ptp.regular_payment_date
6315 BETWEEN p_start_year
6316 AND p_end_year;
6317
6318 CURSOR csr_aggr_min_act_id( p_person_id NUMBER,
6319 p_payroll_id NUMBER,
6320 p_pre_pact_id NUMBER,
6321 c_effective_date DATE)
6322 IS
6323
6324 SELECT max (act.assignment_action_id) assignment_id
6325 -- SELECT min (act.assignment_action_id) assignment_id
6326 -- SELECT max (act.assignment_id) assignment_id
6327 FROM pay_payroll_actions ppa, --Current pactid
6328 pay_payroll_actions appa, --Payroll Run
6329 pay_payroll_actions appa2, --Prepayments
6330 pay_assignment_actions act, --Payroll Run
6331 pay_assignment_actions act1, --Prepayments
6332 pay_action_interlocks pai, --Prepayments
6333 per_all_assignments_f as1
6334 WHERE as1.person_id = p_person_id --45885
6335 AND appa.action_type IN ('R','Q','V','B') -- Payroll Run or Quickpay Run
6336 AND act.payroll_action_id = appa.payroll_action_id
6337 AND act.source_action_id IS NULL
6338 AND as1.assignment_id = act.assignment_id
6339 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
6340 AND act.action_status = 'C'
6341 AND act.assignment_action_id = pai.locked_action_id
6342 AND act1.assignment_action_id = pai.locking_action_id
6343 AND act1.action_status = 'C'
6344 AND act1.payroll_action_id = appa2.payroll_action_id
6345 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
6346 AND (as1.payroll_id = p_payroll_id
6347 OR p_payroll_id IS NULL)
6348 AND appa2.payroll_action_id = p_pre_pact_id
6349 AND exists( select 1
6350 from pay_pre_payments ppp
6351 where ASSIGNMENT_ACTION_ID = act1.assignment_action_id
6352 and ppp.value <> 0); --For the bug 16542698
6353
6354
6355 CURSOR csr_ni_aggr_max_act_id( p_person_id NUMBER,
6356 p_payroll_id NUMBER,
6357 p_pre_pact_id NUMBER,
6358 c_effective_date DATE)
6359 IS
6360
6361 SELECT max (act.assignment_action_id) assignment_id
6362 -- SELECT max (act.assignment_id) assignment_id
6363 FROM pay_payroll_actions ppa, --Current pactid
6364 pay_payroll_actions appa, --Payroll Run
6365 pay_payroll_actions appa2, --Prepayments
6366 pay_assignment_actions act, --Payroll Run
6367 pay_assignment_actions act1, --Prepayments
6368 pay_action_interlocks pai, --Prepayments
6369 per_all_assignments_f as1
6370 WHERE as1.person_id = p_person_id --45885
6371 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
6372 AND act.payroll_action_id = appa.payroll_action_id
6373 AND act.source_action_id IS NULL
6374 AND as1.assignment_id = act.assignment_id
6375 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
6376 AND act.action_status = 'C'
6377 AND act.assignment_action_id = pai.locked_action_id
6378 AND act1.assignment_action_id = pai.locking_action_id
6379 AND act1.action_status = 'C'
6380 AND act1.payroll_action_id = appa2.payroll_action_id
6381 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
6382 AND (as1.payroll_id = p_payroll_id
6383 OR p_payroll_id IS NULL)
6384 AND appa2.payroll_action_id = p_pre_pact_id;
6385
6386 l_person_id number;
6387 cursor csr_get_other_asg(c_asg_id number) is
6388 select paaf.assignment_id asg_id from per_all_assignments_f paaf where
6389 paaf.person_id = l_person_id
6390 and paaf.assignment_id <> c_asg_id
6391 and l_effective_date between paaf.effective_start_date and paaf.effective_end_date;
6392
6393
6394 -- new agg changes
6395 cursor csr_agg_all_asg_act_creat(p_person_id NUMBER,
6396 p_asg_id NUMBER,
6397 p_asg_act_id NUMBER,
6398 p_start_year DATE,
6399 p_end_year DATE) is
6400 SELECT
6401 /* to_number (substr (max (lpad (paa.action_sequence ,15,'0')
6402 || paa.assignment_action_id),16)) max_asg_act_id*/
6403 distinct paa.assignment_id
6404 /* ,max (pact.effective_date) effective_date
6405 ,max(paa1.assignment_action_id)*/
6406 FROM pay_assignment_actions paa
6407 ,pay_assignment_actions paa1
6408 ,per_all_assignments_f paaf
6409 ,pay_payroll_actions pact
6410 ,pay_payroll_actions pact1
6411 ,per_time_periods ptp
6412 ,pay_action_interlocks pai
6413 WHERE paa.assignment_id = paaf.assignment_id
6414 AND paa.assignment_id <> p_asg_id
6415 AND paaf.person_id = p_person_id
6416 AND paa.payroll_action_id = pact.payroll_action_id
6417 AND paa1.payroll_action_id = pact1.payroll_action_id
6418 AND pai.locked_action_id = paa.assignment_action_id
6419 and pai.locking_action_id = paa1.assignment_action_id
6420 AND pact1.action_type IN ('P','U')
6421 AND pact.time_period_id = ptp.time_period_id
6422 AND pact.action_type IN ('Q','R','B','I','V')
6423 AND paa.action_status IN ('C','S')
6424 AND paa1.action_status IN ('C','S')
6425 AND ptp.regular_payment_date BETWEEN p_start_year
6426 AND p_end_year
6427 AND (
6428 (
6429 paa.assignment_action_id >
6430 (
6431 SELECT nvl (max (payroll_asg_act_id),paa.assignment_action_id)
6432 FROM pay_gb_fps_details pgfd
6433 WHERE pgfd.person_id = p_person_id
6434 )
6435 AND paa.source_action_id IS NULL
6436 )
6437 OR (
6438 (
6439 SELECT count (*)
6440 FROM pay_gb_fps_details pgfd
6441 WHERE pgfd.person_id = p_person_id
6442 ) = 0
6443 )
6444 )
6445 AND ptp.regular_payment_date >= nvl (l_first_fps_run_date, l_first_fps_eff_date)
6446 AND paa.assignment_action_id < p_asg_act_id
6447 AND exists( select 1
6448 from pay_pre_payments ppp
6449 where ASSIGNMENT_ACTION_ID = paa1.assignment_action_id
6450 and ppp.value <> 0)
6451 GROUP BY paa.payroll_action_id,paa.assignment_id ;
6452 -- ORDER BY max_asg_act_id;
6453
6454 cursor csr_agg_all_actions_lock(p_person_id NUMBER,
6455 p_asg_id NUMBER,
6456 p_start_year DATE,
6457 p_end_year DATE)is
6458 SELECT /*+ USE_NL(paa, pact, ptp) */
6459 /* to_number (substr (max (lpad (paa.action_sequence ,15,'0')
6460 || paa.assignment_action_id),16)) max_asg_act_id
6461 ,max(paa.assignment_id)
6462 ,max (pact.effective_date) effective_date*/
6463 distinct max(paa1.assignment_action_id) max_pre_act_id
6464 FROM pay_assignment_actions paa
6465 ,pay_assignment_actions paa1
6466 ,per_all_assignments_f paaf
6467 ,pay_payroll_actions pact
6468 ,pay_payroll_actions pact1
6469 ,per_time_periods ptp
6470 ,pay_action_interlocks pai
6471 WHERE paa.assignment_id = paaf.assignment_id
6472 AND paa.assignment_id = p_asg_id
6473 AND paaf.person_id = p_person_id
6474 AND paa.payroll_action_id = pact.payroll_action_id
6475 AND paa1.payroll_action_id = pact1.payroll_action_id
6476 AND pai.locked_action_id = paa.assignment_action_id
6477 and pai.locking_action_id = paa1.assignment_action_id
6478 AND pact1.action_type IN ('P','U')
6479 AND pact.time_period_id = ptp.time_period_id
6480 AND pact.action_type IN ('Q','R','B','I','V')
6481 AND paa.action_status IN ('C','S')
6482 AND paa1.action_status IN ('C','S')
6483 AND ptp.regular_payment_date BETWEEN p_start_year
6484 AND p_end_year
6485 AND (
6486 (
6487 paa.assignment_action_id >
6488 (
6489 SELECT nvl (max (payroll_asg_act_id),paa.assignment_action_id)
6490 FROM pay_gb_fps_details pgfd
6491 WHERE pgfd.person_id = p_person_id
6492 -- AND pgfd.assignment_id = p_asg_id
6493 )
6494 AND paa.source_action_id IS NULL
6495 )
6496 OR (
6497 (
6498 SELECT count (*)
6499 FROM pay_gb_fps_details pgfd
6500 WHERE pgfd.person_id = p_person_id
6501 AND pgfd.assignment_id = p_asg_id
6502 ) = 0
6503 )
6504 )
6505 AND ptp.regular_payment_date >= nvl (l_first_fps_run_date, l_first_fps_eff_date)
6506 GROUP BY paa.payroll_action_id
6507 ORDER BY max_pre_act_id;
6508
6509 cursor chk_processed_in_prepay(c_cur_asg_action_id number) is
6510 select pai.locking_action_id
6511 from
6512 pay_action_interlocks pai,
6513 pay_payroll_actions ppa,
6514 pay_assignment_actions paa
6515 where pai.locked_action_id = c_cur_asg_action_id
6516 and ppa.action_type in ('P','U')
6517 and paa.payroll_action_id = ppa.payroll_action_id
6518 and paa.assignment_action_id = pai.locking_action_id;
6519
6520 CURSOR csr_prepay_asg_act_details(p_asgid NUMBER, p_pre_pay_id NUMBER)
6521 IS
6522 SELECT paa.assignment_action_id,
6523 ppa.payroll_action_id,
6524 ppa.effective_date
6525 FROM pay_assignment_actions paa,
6526 pay_payroll_actions ppa
6527 WHERE paa.assignment_id = p_asgid
6528 AND ppa.payroll_action_id = p_pre_pay_id
6529 AND paa.payroll_action_id = ppa.payroll_action_id;
6530
6531 CURSOR get_first_fps_date(c_payroll_id number)
6532 IS
6533 SELECT max (ppa2.effective_date)
6534 FROM pay_payroll_actions ppa2
6535 WHERE ppa2.report_qualifier = 'GB'
6536 AND ppa2.report_type = 'RTI_FPS_REP'
6537 AND ppa2.action_status = 'C'
6538 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'FIRST_FPS'),1,20) = 'Y'
6539 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'PAYROLL_ID'),1,20) = c_payroll_id;
6540
6541 -- Curosr to fetch the RTI Reporting flag and effective date of the assignment
6542 cursor csr_ni_rpt_flag(c_asg_id number) is
6543 select AEI_INFORMATION1, AEI_INFORMATION2 from per_assignment_extra_info where assignment_id = c_asg_id
6544 and AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION';
6545
6546 -- Cursor to fetch the RTI NI Reporting assignment for this person.
6547 cursor csr_get_ni_rpt_asg(c_asg_id number) is
6548 select
6549 paei.assignment_id , fnd_date.canonical_to_date(paei.AEI_INFORMATION2)
6550 from per_all_assignments_f paaf1, per_all_assignments_f paaf2 ,per_assignment_extra_info paei
6551 where paaf1.assignment_id = c_asg_id
6552 and paaf1.person_id = paaf2.person_id
6553 and paaf2.ASSIGNMENT_TYPE = 'E'
6554 and paei.assignment_id = paaf2.assignment_id
6555 and paei.AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION'
6556 and paei. AEI_INFORMATION1 = 'Y'
6557 and l_effective_date between paaf1.effective_start_date and paaf1.effective_end_date
6558 and l_effective_date between paaf2.effective_start_date and paaf2.effective_end_date
6559 order by 2 desc;
6560
6561 -- cursor to fetch the prepayment asg_action id for the given payroll asg_action id
6562 cursor csr_ni_prepay_asg_act_details(c_payroll_asg_act_id number) is
6563 select pai.locking_action_id prepay_asg_act_id from
6564 pay_action_interlocks pai,
6565 pay_assignment_actions paa,
6566 pay_payroll_actions ppa
6567 where pai.locked_action_id = c_payroll_asg_act_id
6568 and pai.locking_action_id = paa.assignment_action_id
6569 and paa.action_status in ('C','S')
6570 and ppa.action_type in ('P','U')
6571 and paa.payroll_action_id = ppa.payroll_action_id;
6572
6573 -- to check whether the given assignment is processed in given prepay payroll_action id
6574 cursor csr_rti_rpt_proc_prepay(c_ni_rpt_asg_id number,c_pre_pay_action_id number) is
6575 select 'Y' from pay_assignment_actions paa,
6576 pay_payroll_actions ppa
6577 where
6578 ppa.payroll_action_id = c_pre_pay_action_id
6579 and ppa.payroll_action_id = paa.payroll_action_id
6580 and paa.assignment_id = c_ni_rpt_asg_id
6581 and ppa.action_type IN ('P','U')
6582 and paa.action_status IN ('C','S')
6583 AND exists( select 1
6584 from pay_pre_payments ppp
6585 where ASSIGNMENT_ACTION_ID = paa.assignment_action_id
6586 and ppp.value <> 0); --For the bug 16542698
6587
6588 CURSOR csr_chk_earlier_processed (c_person_id number, c_cur_asg_action_id number) is
6589 SELECT count (*)
6590 FROM pay_gb_fps_details pgfd
6591 WHERE pgfd.person_id = c_person_id
6592 AND pgfd.payroll_asg_act_id = c_cur_asg_action_id;
6593
6594 --Below cursor fetches the latest payroll run details of the current assignment
6595 CURSOR csr_aggr_asgs_processed(p_person_id NUMBER, p_pre_pay_id NUMBER, p_start_year DATE, p_end_year DATE)
6596 IS
6597 SELECT count(distinct paa1.assignment_id)
6598 FROM pay_assignment_actions paa,
6599 per_all_assignments_f paaf,
6600 pay_payroll_actions pact,
6601 per_time_periods ptp,
6602 pay_assignment_actions paa1, --Prepayments
6603 pay_payroll_actions ppa1, --Prepayments
6604 pay_action_interlocks pai --Prepayments
6605 WHERE paa.assignment_id = paaf.assignment_id
6606 AND paaf.person_id = p_person_id
6607 AND paa.payroll_action_id = pact.payroll_action_id
6608 AND pact.time_period_id = ptp.time_period_id
6609 AND pact.action_type IN ('Q','R','B','I','V')
6610 AND paa.action_status IN ('C','S')
6611 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
6612 AND ppa1.payroll_action_id = p_pre_pay_id
6613 AND ppa1.action_type IN ('P','U')
6614 AND paa1.payroll_action_id = ppa1.payroll_action_id
6615 AND paa1.assignment_action_id = pai.locking_action_id
6616 AND paa.assignment_action_id = pai.locked_action_id;
6617
6618 CURSOR csr_aggr_max_act_id( p_person_id NUMBER)
6619 IS
6620 SELECT max(act.assignment_action_id) assignment_action_id
6621 FROM pay_payroll_actions appa, --Payroll Run
6622 pay_payroll_actions appa2, --Prepayments
6623 pay_assignment_actions act, --Payroll Run
6624 pay_assignment_actions act1, --Prepayments
6625 pay_action_interlocks pai, --Prepayments
6626 per_all_assignments_f as1,
6627 pay_all_payrolls_f papf ,
6628 hr_soft_coding_keyflex flex
6629 WHERE as1.person_id = p_person_id --58105
6630 AND appa.action_type IN ('R','Q','V','B') -- Payroll Run or Quickpay Run
6631 AND act.payroll_action_id = appa.payroll_action_id
6632 AND act.source_action_id IS NULL
6633 AND as1.assignment_id = act.assignment_id
6634 AND act.action_status = 'C'
6635 AND act.assignment_action_id = pai.locked_action_id
6636 AND act1.assignment_action_id = pai.locking_action_id
6637 AND act1.action_status = 'C'
6638 AND act1.payroll_action_id = appa2.payroll_action_id
6639 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
6640 AND appa2.effective_date between g_start_year and l_first_fps_eff_date
6641 AND appa2.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
6642 AND papf.payroll_id = as1.payroll_id
6643 AND flex.SOFT_CODING_KEYFLEX_ID = papf.SOFT_CODING_KEYFLEX_ID
6644 AND upper(flex.segment1) = upper(l_tax_ref);
6645
6646 CURSOR csr_asg_id(c_aggr_max_act_id number)
6647 IS
6648 SELECT assignment_id
6649 FROM pay_assignment_actions
6650 WHERE assignment_action_id = c_aggr_max_act_id;
6651
6652 -- Declarations for First FPS
6653 l_last_asg_action_id number;
6654
6655 l_gross number;
6656 l_taxable number;
6657 l_niable number;
6658 l_gross_id number;
6659 l_taxable_id number;
6660 l_niable_id number;
6661
6662 l_first_fps_prepay_asg varchar2(10);
6663 l_temp_asg_id number;
6664 l_date_soy date;
6665 l_date_eoy date;
6666 l_pre_id number;
6667 l_prepayment_date date;
6668
6669 l_asg_action_id number;
6670 l_asg_id number;
6671 l_pre_pay_asg_action_id number;
6672 l_last_effective_date date;
6673 l_aggr_max_asg_id number;
6674 l_aggr_min_act_id number;
6675 l_prepay_asg_action_id number;
6676 l_prepay_payroll_action_id number;
6677 l_prepay_effective_date date;
6678 l_cur_asg_pre_pay_act_id number;
6679 l_ni_rpt_asg_id number;
6680 l_ni_rti_flag varchar2(1);
6681 l_ni_rpt_date date;
6682 l_ni_rti_date varchar2(30);
6683 l_ni_prepay_asg_action_id number;
6684 l_rti_ni_proc_flag varchar2(1);
6685 l_ni_aggr_max_act_id number;
6686 l_earlier_processed number;
6687 l_aggr_asgs_processed number;
6688 l_aggr_max_act_id number;
6689 l_latest_first_fps_asg_id number;
6690 l_prev_asg_id number := 0;
6691 l_flag1 VARCHAR2(1) :='Y';
6692 l_prl_id number;
6693 l_bus_grp_id number;
6694
6695 BEGIN
6696 hr_utility.set_location('Entering: '||l_proc,1);
6697
6698 OPEN csr_parameter_info;
6699 FETCH csr_parameter_info
6700 INTO l_payroll_id,
6701 l_tax_ref,
6702 l_first_fps,
6703 l_effective_date,
6704 l_business_group_id,
6705 l_first_fps_eff_date;
6706 CLOSE csr_parameter_info;
6707
6708
6709 OPEN get_first_fps_date(l_payroll_id);
6710 FETCH get_first_fps_date
6711 INTO l_first_fps_run_date;
6712 CLOSE get_first_fps_date;
6713
6714 hr_utility.set_location('process start date'||l_start_date,20);
6715 hr_utility.set_location('process end date'||l_end_date,20);
6716 hr_utility.set_location('pactid: '||pactid,20);
6717 hr_utility.set_location('stperson: '||stperson,20);
6718 hr_utility.set_location('endperson: '||endperson,20);
6719 hr_utility.set_location('l_payroll_id: '||l_payroll_id,20);
6720 hr_utility.set_location('l_tax_ref: '||l_tax_ref,20);
6721 hr_utility.set_location('l_effective_date: '||l_effective_date,20);
6722 hr_utility.set_location('l_business_group_id: '||l_business_group_id,20);
6723 hr_utility.set_location('g_start_year: '||g_start_year,20);
6724 hr_utility.set_location('l_first_fps_run_date: '||l_first_fps_run_date,20);
6725 hr_utility.set_location('l_first_fps_eff_date: '||l_first_fps_eff_date,20);
6726
6727 PAY_GB_P11D_ARCHIVE_SS.get_parameters( p_payroll_action_id => pactid,
6728 p_token_name => 'PRE_PAY_ID',
6729 p_token_value => l_pre_pact_id);
6730
6731 hr_utility.trace(' Payroll : '||l_payroll_id);
6732 hr_utility.trace(' Pre Payment Payroll_Action_ID Entered : '||to_number(l_pre_pact_id));
6733
6734 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
6735 g_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
6736 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') ;
6737 ELSE
6738 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') ;
6739 g_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
6740 END IF;
6741
6742 -- hr_utility.set_location('Before csr_get_assignments cursor',10);
6743 hr_utility.set_location('pactid :' || pactid,15);
6744 hr_utility.set_location('stperson :' || stperson,15);
6745 hr_utility.set_location('endperson :' || endperson,15);
6746 hr_utility.set_location('l_payroll_id :' || l_payroll_id,15);
6747 hr_utility.set_location('l_pre_pact_id :' || l_pre_pact_id,15);
6748 hr_utility.set_location('l_effective_date :' || l_effective_date,15);
6749
6750 l_pre_id := to_number(l_pre_pact_id);
6751
6752 hr_utility.set_location('l_first_fps : '||l_first_fps,20);
6753 if l_first_fps = 'Y' then
6754
6755 open csr_get_prepayment_date(l_pre_id);
6756 fetch csr_get_prepayment_date into l_prepayment_date, l_prl_id, l_bus_grp_id;
6757 close csr_get_prepayment_date;
6758
6759 FOR asg_record IN csr_asg_details(l_pre_pact_id,l_prepayment_date, l_prl_id, l_bus_grp_id)
6760 LOOP
6761 l_flag := 'Y';
6762
6763 --PAYE Aggr logic starts here
6764 /* Below code is to filter out PAYE Aggregated employees as part of First FPS processing logic
6765 if they have any of the assignments processed in current prepayment request id.
6766 That means this employee would be processed in main PAYE Aggregated code itself.
6767 Hence, skip the action creation in First FPS logic. */
6768
6769 l_aggr_asgs_processed := 0;
6770 IF asg_record.per_agg_flag = 'Y' THEN
6771 hr_utility.trace('PAYE Aggregated Assignment');
6772
6773 OPEN csr_aggr_asgs_processed(asg_record.person_id, l_pre_pact_id, g_start_year, g_end_year);
6774 FETCH csr_aggr_asgs_processed
6775 INTO l_aggr_asgs_processed;
6776
6777 hr_utility.trace('l_aggr_asgs_processed:' ||l_aggr_asgs_processed);
6778
6779 CLOSE csr_aggr_asgs_processed;
6780
6781 IF l_aggr_asgs_processed > 0 THEN
6782 l_flag:= 'N';
6783 hr_utility.trace('There is a payment made for one of his asgs in current prepayment request');
6784
6785 ELSIF l_aggr_asgs_processed = 0 THEN --l_aggr_asgs_processed > 0 THEN
6786
6787 OPEN csr_aggr_max_act_id(asg_record.person_id);
6788 FETCH csr_aggr_max_act_id
6789 INTO l_aggr_max_act_id;
6790 CLOSE csr_aggr_max_act_id;
6791
6792 hr_utility.set_location('l_aggr_max_act_id : '||l_aggr_max_act_id,20);
6793
6794 OPEN csr_asg_id(l_aggr_max_act_id);
6795 FETCH csr_asg_id
6796 INTO l_latest_first_fps_asg_id;
6797 CLOSE csr_asg_id;
6798
6799 hr_utility.set_location('l_latest_first_fps_asg_id : '||l_latest_first_fps_asg_id,20);
6800 hr_utility.set_location('asg_record.assignment_id : '||asg_record.assignment_id,20);
6801
6802 IF (nvl(l_latest_first_fps_asg_id,-999) <> asg_record.assignment_id) THEN
6803 l_flag:= 'N';
6804 END IF;
6805
6806 END IF; --l_aggr_asgs_processed > 0 THEN
6807
6808 END IF; --IF asg_record.per_agg_flag = 'Y' THEN
6809 hr_utility.set_location('l_flag: '||l_flag,20);
6810 --PAYE Aggr logic ends here
6811
6812 if (l_flag = 'Y') then
6813
6814 -- Added to check YTD balances
6815 open csr_prepayment_made(l_pre_pact_id,asg_record.assignment_id);
6816 fetch csr_prepayment_made into l_temp_asg_id;
6817 if csr_prepayment_made%found then
6818 l_first_fps_prepay_asg := 'Y';
6819 else
6820 l_first_fps_prepay_asg := 'N';
6821 end if;
6822 close csr_prepayment_made;
6823
6824 hr_utility.trace(asg_record.assignment_id||' First FPS Pre Pay Asg : '||l_first_fps_prepay_asg );
6825
6826 if l_first_fps_prepay_asg = 'N' then
6827
6828 hr_utility.trace(asg_record.assignment_id||'Entering First FPS Logic');
6829
6830 OPEN get_defined_balance_id('Gross Pay','_ASG_TD_YTD');
6831 FETCH get_defined_balance_id INTO l_gross_id;
6832 CLOSE get_defined_balance_id;
6833
6834 OPEN get_defined_balance_id('Taxable Pay','_ASG_TD_YTD');
6835 FETCH get_defined_balance_id INTO l_taxable_id;
6836 CLOSE get_defined_balance_id;
6837
6838 OPEN get_defined_balance_id('NIable Pay','_ASG_TD_YTD');
6839 FETCH get_defined_balance_id INTO l_niable_id;
6840 CLOSE get_defined_balance_id;
6841
6842 l_effective_date := l_prepayment_date;
6843
6844 -- Tax Year Start and End
6845 If l_effective_date >= to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) Then
6846 l_date_soy := to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
6847 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') ;
6848 Else
6849 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') ;
6850 l_date_eoy := to_date('05-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
6851 End If;
6852
6853 -- To get latest assignment action id for the assignment
6854 OPEN csr_last_action(asg_record.assignment_id,l_date_soy,l_prepayment_date);
6855 FETCH csr_last_action INTO l_last_asg_action_id,l_last_effective_date;
6856
6857 -- If there are no assignment action ids, no payment has been made for the assignment
6858 -- This assignment will not be archived.
6859 IF l_last_asg_action_id is null then
6860 fnd_file.put_line (fnd_file.LOG,'No Payment has been made for assignment ' || asg_record.assignment_id|| '.');
6861 l_flag:= 'N';
6862 end if;
6863 CLOSE csr_last_action;
6864
6865 -- Fetching balances
6866 IF l_last_asg_action_id IS NOT NULL THEN
6867 l_gross := pay_balance_pkg.get_value(l_gross_id,l_last_asg_action_id);
6868 IF l_gross <= 0 THEN
6869 l_taxable := pay_balance_pkg.get_value(l_taxable_id,l_last_asg_action_id);
6870 END IF;
6871
6872 IF l_taxable <= 0 THEN
6873 l_niable := pay_balance_pkg.get_value(l_niable_id,l_last_asg_action_id);
6874 end if;
6875 END IF;
6876
6877 IF l_gross > 0 or l_taxable > 0 or l_niable > 0 THEN
6878 hr_utility.trace('Assignment '||asg_record.assignment_id||' has YTD values');
6879 ELSE
6880 hr_utility.trace('Assignment '||asg_record.assignment_id||' has No YTD values.');
6881 l_flag:= 'N';
6882 END IF;
6883
6884 end if;
6885 end if; --if (l_flag = 'Y') then
6886
6887 if l_flag = 'Y' and l_first_fps_prepay_asg = 'N' Then
6888 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
6889 -- Insert assignment into pay_assignment_actions
6890 hr_nonrun_asact.insact ( lockingactid, asg_record.assignment_id, pactid, chunk, NULL );
6891 End if;
6892
6893 END LOOP;
6894 end if; -- First FPS logic ends
6895 --else
6896 hr_utility.set_location('Before csr_get_assignments cursor',10);
6897 FOR asg_rec IN csr_get_assignments (pactid, stperson, endperson, l_payroll_id, l_pre_pact_id, l_effective_date)
6898 LOOP
6899 l_flag1 := 'Y';
6900 hr_utility.set_location('Assignment ID :' || asg_rec.assignment_id,15);
6901 hr_utility.set_location('asg_rec.asg_act_id:' || asg_rec.asg_act_id,15);
6902
6903 --Modifications for the bug 16164625 starts here
6904
6905 IF asg_rec.asg_act_id IS NOT NULL THEN
6906 OPEN get_defined_balance_id('Gross Pay','_ASG_TD_YTD');
6907 FETCH get_defined_balance_id INTO l_gross_id;
6908 CLOSE get_defined_balance_id;
6909
6910 OPEN get_defined_balance_id('Taxable Pay','_ASG_TD_YTD');
6911 FETCH get_defined_balance_id INTO l_taxable_id;
6912 CLOSE get_defined_balance_id;
6913
6914 OPEN get_defined_balance_id('NIable Pay','_ASG_TD_YTD');
6915 FETCH get_defined_balance_id INTO l_niable_id;
6916 CLOSE get_defined_balance_id;
6917
6918 l_gross := pay_balance_pkg.get_value(l_gross_id,asg_rec.asg_act_id);
6919 IF l_gross <= 0 THEN
6920 l_taxable := pay_balance_pkg.get_value(l_taxable_id,asg_rec.asg_act_id);
6921 END IF;
6922 IF l_taxable <= 0 THEN
6923 l_niable := pay_balance_pkg.get_value(l_niable_id,asg_rec.asg_act_id);
6924 END IF;
6925 END IF;
6926
6927 IF l_gross > 0 or l_taxable > 0 or l_niable > 0 THEN
6928 hr_utility.trace('Assignment '||asg_rec.assignment_id||' has YTD values');
6929 ELSE
6930 hr_utility.trace('Assignment '||asg_rec.assignment_id||' has No YTD values.');
6931 l_flag1:= 'N';
6932 END IF;
6933
6934 --Modifications for the bug 16164625 ends here
6935
6936 --Ignore the same assignment ids (Prepayment would have processed same assignment's payroll, Quickpay)
6937 if l_prev_asg_id = asg_rec.assignment_id then
6938 l_flag1 := 'N';
6939 else
6940 l_prev_asg_id := asg_rec.assignment_id;
6941 end if;
6942
6943 l_arch := false;
6944 -- hr_utility.set_location('Before CSR_ASG cursor l_effective_date '|| to_char(l_effective_date),10);
6945 hr_utility.set_location('Before CSR_ASG cursor',10);
6946
6947 OPEN csr_asg(asg_rec.assignment_id, l_effective_date);
6948 FETCH csr_asg INTO l_person_id, l_asg_primary_flag, l_per_agg_flag,l_ni_agg_flag,l_asg_number;
6949 CLOSE csr_asg;
6950
6951 hr_utility.set_location('l_person_id :' || l_person_id,20);
6952 hr_utility.set_location('l_asg_primary_flag :' || l_asg_primary_flag,20);
6953 hr_utility.set_location('l_per_agg_flag :' || l_per_agg_flag,20);
6954 hr_utility.set_location('l_ni_agg_flag :' || l_ni_agg_flag,20);
6955 hr_utility.set_location('l_payroll_id :' || l_payroll_id,20);
6956 hr_utility.set_location('l_pre_pact_id :' || l_pre_pact_id,20);
6957 hr_utility.set_location('l_effective_date :' || l_effective_date,20);
6958
6959 hr_utility.set_location('Assignment ID :' || asg_rec.assignment_id,20);
6960 l_arch := false;
6961 -- If Aggregate flag is set then ignore non primary assignments
6962 IF l_per_agg_flag = 'Y' and l_flag1 = 'Y' THEN
6963
6964 OPEN csr_aggr_min_act_id (l_person_id, l_payroll_id, l_pre_pact_id, l_effective_date);
6965 FETCH csr_aggr_min_act_id INTO l_aggr_min_act_id;
6966 CLOSE csr_aggr_min_act_id;
6967
6968 l_earlier_processed := 0;
6969 OPEN csr_chk_earlier_processed(l_person_id, asg_rec.asg_act_id);
6970 FETCH csr_chk_earlier_processed
6971 INTO l_earlier_processed;
6972 CLOSE csr_chk_earlier_processed;
6973
6974 hr_utility.set_location('asg_rec.asg_act_id: '||asg_rec.asg_act_id, 50);
6975 hr_utility.set_location('l_earlier_processed :' || l_earlier_processed,20);
6976 hr_utility.set_location('l_aggr_min_act_id :' || l_aggr_min_act_id,20);
6977
6978 if ((asg_rec.asg_act_id = l_aggr_min_act_id) and (l_earlier_processed = 0)) then
6979 hr_utility.set_location('Creating Assignment Action for assignment_id '||asg_rec.assignment_id, 50);
6980
6981 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
6982 hr_nonrun_asact.insact ( lockingactid, asg_rec.assignment_id, pactid, chunk, NULL );
6983 -- get the assigment action id of the prepayment payroll action id for the current assignment.
6984 OPEN csr_prepay_asg_act_details(asg_rec.assignment_id, l_pre_pact_id);
6985 FETCH csr_prepay_asg_act_details
6986 INTO l_prepay_asg_action_id,
6987 l_prepay_payroll_action_id,
6988 l_prepay_effective_date;
6989 CLOSE csr_prepay_asg_act_details;
6990
6991 -- apply lock
6992 hr_nonrun_asact.insint(lockingactid, l_prepay_asg_action_id);
6993
6994 hr_utility.set_location('Creating other Assignment Action ids for assignment_id '||asg_rec.assignment_id, 50);
6995
6996 /*for c_asg in csr_get_other_asg(asg_rec.assignment_id)
6997 loop*/
6998 /* SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
6999 hr_utility.set_location('Creating action for asg '||c_asg.asg_id, 50);
7000 hr_nonrun_asact.insact(lockingactid, c_asg.asg_id, pactid, chunk, NULL );
7001 hr_utility.set_location('Created action for asg '||c_asg.asg_id, 50);*/
7002
7003 hr_utility.set_location('l_person_id:'||l_person_id || ' asg_rec.assignment_id:' ||
7004 asg_rec.assignment_id || ' g_start_year: ' || g_start_year ,50);
7005 hr_utility.set_location(' g_end_year: ' || g_end_year || ' g_first_fps_run_date: '||l_first_fps_run_date, 50);
7006 hr_utility.set_location('asg_rec.assignment_id '||asg_rec.assignment_id, 50);
7007 -- OPEN csr_agg_all_asg_act_creat(l_person_id, asg_rec.assignment_id, g_start_year, g_end_year);
7008 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);
7009 loop
7010 FETCH csr_agg_all_asg_act_creat
7011 INTO l_asg_id;
7012
7013 EXIT WHEN csr_agg_all_asg_act_creat%NOTFOUND;
7014 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7015 hr_utility.set_location('Creating action for asg '||l_asg_id, 50);
7016 hr_nonrun_asact.insact(lockingactid, l_asg_id, pactid, chunk, NULL );
7017 hr_utility.set_location('Created action for asg '||l_asg_id, 50);
7018
7019 -- new changes
7020 open csr_agg_all_actions_lock(l_person_id, l_asg_id, g_start_year, g_end_year);
7021
7022 loop
7023
7024 FETCH csr_agg_all_actions_lock
7025 -- INTO l_asg_action_id,
7026 -- l_asg_id,
7027 -- l_last_effective_date,
7028 INTO l_pre_pay_asg_action_id;
7029 EXIT WHEN csr_agg_all_actions_lock%NOTFOUND;
7030 -- Apply lock
7031
7032 hr_utility.set_location('lockingactid '||lockingactid, 50);
7033 hr_utility.set_location('l_pre_pay_asg_action_id '||l_pre_pay_asg_action_id, 50);
7034 hr_nonrun_asact.insint(lockingactid, l_pre_pay_asg_action_id);
7035
7036 end loop;
7037 close csr_agg_all_actions_lock;
7038 end loop;
7039 close csr_agg_all_asg_act_creat;
7040
7041 /*open chk_processed_in_prepay(l_cur_asg_action_id);
7042 fetch chk_processed_in_prepay into l_cur_asg_pre_pay_act_id;
7043 close chk_processed_in_prepay;*/
7044 -- lock
7045 -- hr_nonrun_asact.insint(lockingactid, l_cur_asg_pre_pay_act_id);
7046
7047 /*end loop;*/
7048
7049 -- end get the other assigment ids for this person.
7050
7051 else
7052 hr_utility.set_location('Another higher assignment for current employee exists.', 50);
7053 hr_utility.set_location('Hence, not creating assignment action for the current assignment: '||asg_rec.assignment_id, 50);
7054 end if;
7055
7056 ELSIF l_flag1 = 'Y' THEN
7057 -- Create one assignment action for every assignment
7058 hr_utility.set_location('Archiving for assignment_id '||asg_rec.assignment_id, 50);
7059 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7060
7061 -- Insert assignment into pay_assignment_actions
7062 hr_nonrun_asact.insact ( lockingactid, asg_rec.assignment_id, pactid, chunk, NULL );
7063 -- get the assigment action id of the prepayment payroll action id for the current assignment.
7064 OPEN csr_prepay_asg_act_details(asg_rec.assignment_id, l_pre_pact_id);
7065 FETCH csr_prepay_asg_act_details
7066 INTO l_prepay_asg_action_id,
7067 l_prepay_payroll_action_id,
7068 l_prepay_effective_date;
7069 --apply the lock
7070 hr_nonrun_asact.insint(lockingactid, l_prepay_asg_action_id);
7071 CLOSE csr_prepay_asg_act_details;
7072 if l_ni_agg_flag = 'Y' then
7073 hr_utility.set_location('This is NI aggregation case ', 50);
7074 -- Get the RTI NI Reporting asg and effective date.
7075 open csr_ni_rpt_flag(asg_rec.assignment_id);
7076 fetch csr_ni_rpt_flag into l_ni_rti_flag,l_ni_rti_date;
7077 close csr_ni_rpt_flag;
7078 hr_utility.set_location('l_ni_rti_flag: ' || l_ni_rti_flag, 50);
7079 hr_utility.set_location('l_ni_rti_date: ' || l_ni_rti_date, 50);
7080 if nvl(l_ni_rti_flag,'N') <> 'Y' then
7081 hr_utility.set_location('non RTI reporting assigment' || l_ni_rti_date, 50);
7082 open csr_get_ni_rpt_asg(asg_rec.assignment_id);
7083 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
7084 close csr_get_ni_rpt_asg;
7085 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id, 50);
7086 hr_utility.set_location('l_ni_rpt_date: ' || l_ni_rpt_date, 50);
7087
7088 if l_ni_rpt_asg_id is null then
7089
7090 hr_utility.set_location('NO RTI Reporting asg for :'|| l_asg_number, 50);
7091 fnd_file.put_line (fnd_file.LOG,'NO RTI Reporting asg for :'|| l_asg_number);
7092 --raise_application_error(-20001,'NO RTI Reporting asg for :'|| asg_rec.assignment_id);
7093 else
7094 -- check whether the RTI reporting is being processed in the current assignment.
7095 open csr_rti_rpt_proc_prepay(l_ni_rpt_asg_id,l_pre_pact_id);
7096 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag;
7097 close csr_rti_rpt_proc_prepay;
7098 hr_utility.set_location('l_rti_ni_proc_flag:'|| l_rti_ni_proc_flag, 50);
7099 OPEN csr_ni_aggr_max_act_id (l_person_id, l_payroll_id, l_pre_pact_id, l_effective_date);
7100 FETCH csr_ni_aggr_max_act_id INTO l_ni_aggr_max_act_id;
7101 CLOSE csr_ni_aggr_max_act_id;
7102 hr_utility.set_location('l_ni_aggr_max_act_id:'|| l_ni_aggr_max_act_id , 50);
7103 hr_utility.set_location('asg_rec.asg_act_id:'|| asg_rec.asg_act_id , 50);
7104 if nvl(l_rti_ni_proc_flag,'N') <> 'Y' and asg_rec.asg_act_id = l_ni_aggr_max_act_id then
7105 hr_utility.set_location('Creating action for rti rpt asg:'|| l_ni_rpt_asg_id, 50);
7106 SELECT pay_assignment_actions_s.nextval INTO lockingactid FROM dual;
7107 -- Insert assignment into pay_assignment_actions
7108 hr_nonrun_asact.insact ( lockingactid, l_ni_rpt_asg_id, pactid, chunk, NULL );
7109 /* -- get the assigment action id of the prepayment payroll action id for the current assignment.
7110 OPEN csr_ni_prepay_asg_act_details(asg_rec.asg_act_id);
7111 FETCH csr_ni_prepay_asg_act_details
7112 INTO l_ni_prepay_asg_action_id;
7113 CLOSE csr_ni_prepay_asg_act_details;
7114 hr_utility.trace('l_ni_prepay_asg_action_id: '|| l_ni_prepay_asg_action_id);
7115 --apply the lock
7116 if l_ni_prepay_asg_action_id is not null then
7117 hr_utility.trace('lockingactid: '||lockingactid);
7118 hr_utility.trace('l_ni_prepay_asg_action_id: '|| l_ni_prepay_asg_action_id);
7119 hr_nonrun_asact.insint(lockingactid, l_ni_prepay_asg_action_id);
7120 else
7121 hr_utility.trace('No prepayment for asg_id : '|| );
7122 */
7123 end if;
7124
7125 end if;
7126 else
7127 hr_utility.set_location('Current assignment - ' || asg_rec.assignment_id || ' is RTI NI Reporting assignment.',50);
7128 -- proceed with next assignment
7129 end if;
7130 end if;
7131
7132 END IF; -- IF l_per_agg_flag = 'Y' THEN
7133
7134 END LOOP;
7135 --end if;
7136 hr_utility.set_location('Leaving: '||l_proc,999);
7137 END internal_action_creation_fps;
7138 --
7139 --
7140 --
7141 /*--------------------------------------------------------------------------
7142 Name : action_creation
7143 Purpose : This creates the assignment actions for a specific chunk.
7144 Arguments :
7145 Notes :
7146 --------------------------------------------------------------------------*/
7147 PROCEDURE rti_fps_action_creation(
7148 pactid IN NUMBER,
7149 stperson IN NUMBER,
7150 endperson IN NUMBER,
7151 chunk IN NUMBER)
7152 IS
7153 BEGIN
7154 internal_action_creation_fps(pactid, stperson, endperson, chunk,'GB_RTI_FPS', 'RTI_FPS_REP');
7155 END rti_fps_action_creation;
7156 ---
7157 ---
7158 PROCEDURE reset_flag(
7159 p_type VARCHAR2,
7160 p_reset_flag_type VARCHAR2,
7161 p_assact NUMBER)
7162 IS
7163 l_proc CONSTANT VARCHAR2(50):= g_package||'reset_flag';
7164
7165 CURSOR csr_aei_starter_details
7166 IS
7167 SELECT aei.assignment_extra_info_id,
7168 aei.object_version_number,
7169 aei.aei_information8
7170 FROM pay_assignment_actions paa,
7171 per_assignment_extra_info aei
7172 WHERE paa.assignment_action_id = p_assact
7173 AND aei.assignment_id = paa.assignment_id
7174 AND aei.information_type = p_type;
7175
7176 CURSOR csr_aei_pensioner_details
7177 IS
7178 SELECT aei.assignment_extra_info_id,
7179 aei.object_version_number,
7180 aei.aei_information9
7181 FROM pay_assignment_actions paa,
7182 per_assignment_extra_info aei
7183 WHERE paa.assignment_action_id = p_assact
7184 AND aei.assignment_id = paa.assignment_id
7185 AND aei.information_type = p_type;
7186
7187 CURSOR csr_aei_expat_details
7188 IS
7189 SELECT aei.assignment_extra_info_id,
7190 aei.object_version_number,
7191 aei.aei_information19
7192 FROM pay_assignment_actions paa,
7193 per_assignment_extra_info aei
7194 WHERE paa.assignment_action_id = p_assact
7195 AND aei.assignment_id = paa.assignment_id
7196 AND aei.information_type = p_type;
7197
7198 l_aei_starter_rec csr_aei_starter_details%rowtype;
7199 l_aei_pensioner_rec csr_aei_pensioner_details%rowtype;
7200 l_aei_expat_rec csr_aei_expat_details%rowtype;
7201 l_ovn NUMBER;
7202 l_reset_flag VARCHAR2(30);
7203
7204 BEGIN
7205 IF p_reset_flag_type = 'STARTER' THEN
7206
7207 OPEN csr_aei_starter_details;
7208 FETCH csr_aei_starter_details INTO l_aei_starter_rec;
7209 CLOSE csr_aei_starter_details;
7210
7211 IF l_aei_starter_rec.aei_information8 = 'Y' THEN
7212 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
7213 p_object_version_number => l_ovn,
7214 p_assignment_extra_info_id => l_aei_starter_rec.assignment_extra_info_id,
7215 p_aei_information_category => p_type,
7216 p_aei_information8 => 'N');
7217 END IF;
7218 END IF;
7219
7220 IF p_reset_flag_type = 'PENSIONER' THEN
7221
7222 OPEN csr_aei_pensioner_details;
7223 FETCH csr_aei_pensioner_details INTO l_aei_pensioner_rec;
7224 CLOSE csr_aei_pensioner_details;
7225
7226 IF l_aei_pensioner_rec.aei_information9 = 'Y' THEN
7227 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
7228 p_object_version_number => l_ovn,
7229 p_assignment_extra_info_id => l_aei_pensioner_rec.assignment_extra_info_id,
7230 p_aei_information_category => p_type,
7231 p_aei_information9 => 'N');
7232 END IF;
7233 END IF;
7234
7235 IF p_reset_flag_type = 'EXPAT' THEN
7236
7237 OPEN csr_aei_expat_details;
7238 FETCH csr_aei_expat_details INTO l_aei_expat_rec;
7239 CLOSE csr_aei_expat_details;
7240
7241 IF l_aei_expat_rec.aei_information19 = 'Y' THEN
7242 hr_assignment_extra_info_api.update_assignment_extra_info (p_validate => false,
7243 p_object_version_number => l_ovn,
7244 p_assignment_extra_info_id => l_aei_expat_rec.assignment_extra_info_id,
7245 p_aei_information_category => p_type,
7246 p_aei_information19 => 'N');
7247 END IF;
7248 END IF;
7249 END;
7250
7251 /*--------------------------------------------------------------------------
7252 Name : archinit
7253 Purpose : This procedure can be used to perform an initialisation
7254 section and validation of Employer details
7255 Arguments :
7256 Notes :
7257 --------------------------------------------------------------------------*/
7258 PROCEDURE archinit(
7259 p_payroll_action_id IN NUMBER)
7260 IS
7261 error_found EXCEPTION;
7262 l_proc CONSTANT VARCHAR2(50) := g_package || ' archinit';
7263 l_sender_id hr_organization_information.org_information11%TYPE;
7264 l_tax_ref hr_organization_information.org_information1%TYPE;
7265 l_tax_dist hr_organization_information.org_information2%TYPE;
7266 l_employer_addr VARCHAR2(255);
7267 l_employer_name VARCHAR2(150);
7268 l_err BOOLEAN;
7269 l_exp EXCEPTION;
7270 l_rep_typ VARCHAR2(100);
7271 l_effective_date DATE;
7272
7273
7274 CURSOR csr_parameter_info(p_payroll_action_id NUMBER)
7275 IS
7276 SELECT effective_date,
7277 business_group_id,
7278 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PRE_PAY_ID'),1,20) pre_pay_id,
7279 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PAYROLL_ID'),1,20) payroll_id,
7280 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
7281 SUBSTR(pay_gb_eoy_archive.get_parameter (legislative_parameters, 'FIRST_FPS'), 1,1) first_fps
7282
7283 FROM pay_payroll_actions
7284 WHERE payroll_action_id = p_payroll_action_id;
7285
7286 cursor csr_prepayment_date(pre_pay_id number)
7287 is
7288 SELECT
7289 ppa.effective_date
7290 FROM
7291 pay_payroll_actions ppa
7292 WHERE
7293 ppa.payroll_action_id = pre_pay_id;
7294
7295 CURSOR csr_pre_pact_eff_date(p_payroll_action_id NUMBER)
7296 IS
7297 SELECT effective_date
7298 FROM pay_payroll_actions
7299 WHERE payroll_action_id = p_payroll_action_id;
7300
7301 CURSOR csr_payroll_details(pactid NUMBER)
7302 IS
7303 SELECT NVL(UPPER(hoi.org_information11),' ') sender_id,
7304 DECODE(SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TEST=') + 5,1) ,'N',' ','Y','1') test_indicator,
7305 fnd_number.number_to_canonical(pact.request_id) request_id,
7306 NVL(upper(SUBSTR(ltrim(hoi.org_information3),1,35)),' ') employer_name,
7307 NVL(upper(SUBSTR(ltrim(SUBSTR(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
7308 lpad(NVL(SUBSTR(hoi.org_information1,1,3),' '),3,0) tax_office_no,
7309 DECODE(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
7310 NVL(upper(SUBSTR(hoi.org_information6,1,13)),' ') acc_ref_no,
7311 report_type
7312 FROM pay_payroll_actions pact,
7313 hr_organization_information hoi
7314 WHERE pact.payroll_action_id =pactid
7315 AND pact.business_group_id = hoi.organization_id
7316 AND hoi.org_information_context = 'Tax Details References'
7317 AND NVL(hoi.org_information10,'UK') = 'UK'
7318 AND SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8, instr(pact.legislative_parameters
7319 ||' ',' ', instr(pact.legislative_parameters,'TAX_REF=') +8) - instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
7320
7321 CURSOR csr_ni_details
7322 IS
7323 SELECT petf.element_type_id,
7324 input_value_id
7325 FROM pay_element_types_f petf,
7326 pay_input_values_f pivf
7327 WHERE petf.element_name = 'NI'
7328 AND petf.element_type_id = pivf.element_type_id
7329 AND pivf.name = 'Process Type'
7330 AND petf.legislation_code = 'GB'
7331 AND pivf.legislation_code = 'GB'
7332 AND l_effective_date BETWEEN petf.effective_start_date AND petf.effective_end_date
7333 AND l_effective_date BETWEEN pivf.effective_start_date AND pivf.effective_end_date;
7334
7335 CURSOR get_defined_balance_id
7336 IS
7337 SELECT b.balance_name balance_name,
7338 b.balance_type_id balance_type_id,
7339 d.database_item_suffix database_item_suffix,
7340 d.balance_dimension_id balance_dimension_id,
7341 db.defined_balance_id defined_balance_id
7342 FROM pay_defined_balances db,
7343 pay_balance_types b,
7344 pay_balance_dimensions d
7345 WHERE db.balance_type_id = b.balance_type_id
7346 AND db.balance_dimension_id = d.balance_dimension_id
7347 AND ((d.database_item_suffix = '_ASG_TD_YTD'
7348 AND b.balance_name IN ('Taxable Pay','PAYE','Student Loan','SSP Total',
7349 'SMP Total','SPP Adoption Total', 'SPP Birth Total','SAP Total',
7350 'ASPP Adoption Total','ASPP Birth Total','Pre Tax Pension Contributions',
7351 'Post Tax Pension Contributions',
7352 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
7353 'Benefits Taxed Through Payroll Subject to NIC Earnings',
7354 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
7355 'Benefits Taxed Through Payroll Subject to NIC Information',
7356 'Benefits Taxed Through Payroll NOT Subject to NIC Information', 'NI Employer',
7357 'Total Direct Payments'))
7358 OR(d.database_item_suffix = '_ASG_RUN'
7359 AND b.balance_name IN ('Taxable Pay', 'Student Loan', 'PAYE', 'Pre Tax Pension Contributions',
7360 'Post Tax Pension Contributions','NIC able Benefits',
7361 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
7362 'Benefits Taxed Through Payroll Subject to NIC Earnings',
7363 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
7364 'Benefits Taxed Through Payroll Subject to NIC Information',
7365 'Benefits Taxed Through Payroll NOT Subject to NIC Information',
7366 'Gross Pay', 'Total Deductions', 'NI Employer',
7367 'Total Direct Payments','SSP Total',
7368 'SMP Total','SPP Adoption Total', 'SAP Total',
7369 'ASPP Adoption Total','ASPP Birth Total','Pre Tax Deductions'
7370 ,'NIable Deductions Free of Tax'))
7371 /*
7372 OR(d.database_item_suffix = '_ASG_PROC_PTD'
7373 AND b.balance_name IN ('Court Order','Court Order Non Priority'))
7374 */
7375 OR(d.database_item_suffix = '_PER_TD_YTD'
7376 AND b.balance_name IN ('Taxable Pay', 'Student Loan', 'NI Employer', 'Earnings Free of Tax',
7377 'Earnings Free of NI', 'SSP Total', 'SMP Total', 'SPP Adoption Total',
7378 'SPP Birth Total', 'SAP Total', 'ASPP Adoption Total', 'ASPP Birth Total'))
7379
7380 OR(d.database_item_suffix = '_PER_TD_CPE_YTD'
7381 AND b.balance_name IN ('PAYE')))
7382 AND b.legislation_code = 'GB'
7383 AND d.legislation_code = 'GB'
7384 AND db.legislation_code = 'GB';
7385
7386 CURSOR get_aggr_defined_balance_id
7387 IS
7388 SELECT b.balance_name balance_name,
7389 b.balance_type_id balance_type_id,
7390 d.database_item_suffix database_item_suffix,
7391 d.balance_dimension_id balance_dimension_id,
7392 db.defined_balance_id defined_balance_id
7393 FROM pay_defined_balances db,
7394 pay_balance_types b,
7395 pay_balance_dimensions d
7396 WHERE db.balance_type_id = b.balance_type_id
7397 AND db.balance_dimension_id = d.balance_dimension_id
7398 AND ((d.database_item_suffix = '_PER_TD_YTD'
7399 AND b.balance_name IN ('Taxable Pay','PAYE','Student Loan','SSP Total','SMP Total',
7400 'SPP Adoption Total', 'SAP Total','ASPP Adoption Total',
7401 'Pre Tax Pension Contributions','Post Tax Pension Contributions',
7402 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
7403 'Benefits Taxed Through Payroll Subject to NIC Earnings',
7404 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
7405 'Benefits Taxed Through Payroll Subject to NIC Information',
7406 'Benefits Taxed Through Payroll NOT Subject to NIC Information','Total Direct Payments',
7407 'SPP Birth Total','ASPP Birth Total'))
7408 OR(d.database_item_suffix = '_ASG_RUN'
7409 AND b.balance_name IN ('Taxable Pay', 'NIC able Benefits','Student Loan', 'PAYE',
7410 'Pre Tax Pension Contributions','Post Tax Pension Contributions',
7411 'Earnings Free of Tax','Earnings Free of NI','Earnings Free of Tax and NI',
7412 'Benefits Taxed Through Payroll Subject to NIC Earnings',
7413 'Benefits Taxed Through Payroll NOT Subject to NIC Earnings',
7414 'Benefits Taxed Through Payroll Subject to NIC Information',
7415 'Benefits Taxed Through Payroll NOT Subject to NIC Information',
7416 'Gross Pay', 'Total Deductions','Total Direct Payments','Pre Tax Deductions'
7417 ,'NIable Deductions Free of Tax'))
7418 /* OR(d.database_item_suffix = '_ASG_PROC_PTD'
7419 AND b.balance_name IN ('Court Order','Court Order Non Priority'))
7420 */
7421 OR(d.database_item_suffix = '_PER_TD_CPE_YTD'
7422 AND b.balance_name IN ('PAYE'))
7423 )
7424 and b.legislation_code = 'GB'
7425 and d.legislation_code = 'GB'
7426 and db.legislation_code = 'GB';
7427
7428 CURSOR get_first_fps_date(c_payroll_id number)
7429 IS
7430 SELECT max (ppa2.effective_date)
7431 FROM pay_payroll_actions ppa2
7432 WHERE ppa2.report_qualifier = 'GB'
7433 AND ppa2.report_type = 'RTI_FPS_REP'
7434 AND ppa2.action_status = 'C'
7435 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'FIRST_FPS'),1,20) = 'Y'
7436 AND substr (pay_gb_eoy_archive.get_parameter (ppa2.legislative_parameters,'PAYROLL_ID'),1,20) = c_payroll_id; --'4064' --'4065' --ppa1.payroll_id
7437
7438
7439 l_count NUMBER := 1;
7440 l_fps_effective_date VARCHAR2(30);
7441 l_balance_counter NUMBER;
7442 taxable_id NUMBER :=1;
7443 paye_id NUMBER :=2;
7444 student_loan_id NUMBER :=3;
7445 taxable_ptd_id NUMBER :=4;
7446 student_loan_ptd_id NUMBER :=5;
7447 paye_ptd_id NUMBER :=6;
7448 ssp_id NUMBER :=7;
7449 smp_id NUMBER :=8;
7450 ospp_adopt_id NUMBER :=9;
7451 sap_id NUMBER :=10;
7452 aspp_adopt_id NUMBER :=11;
7453 l_dummy NUMBER;
7454 l_pre_pact_effective_date DATE;
7455 l_first_fps_run_date date;
7456
7457 BEGIN
7458 hr_utility.set_location('Entering '|| l_proc, 10);
7459 l_err := FALSE;
7460
7461 OPEN csr_parameter_info(p_payroll_action_id);
7462 FETCH csr_parameter_info
7463 INTO l_effective_date,
7464 g_business_group_id,
7465 g_pre_pact_id,
7466 g_payroll_id,
7467 g_tax_ref,
7468 g_first_fps;
7469 CLOSE csr_parameter_info;
7470
7471 open csr_prepayment_date(g_pre_pact_id);
7472 fetch csr_prepayment_date into g_prepayment_date;
7473 close csr_prepayment_date;
7474
7475 g_fps_effective_date := l_effective_date;
7476 g_payroll_action_id := p_payroll_action_id;
7477
7478 hr_utility.trace('l_effective_date: '||l_effective_date);
7479 hr_utility.trace('g_fps_effective_date: '||g_fps_effective_date);
7480 hr_utility.trace('g_business_group_id: '||g_business_group_id);
7481 hr_utility.trace('g_pre_pact_id: '||g_pre_pact_id);
7482 hr_utility.trace('g_payroll_id: '||g_payroll_id);
7483
7484 OPEN csr_pre_pact_eff_date(g_pre_pact_id);
7485 FETCH csr_pre_pact_eff_date
7486 INTO l_pre_pact_effective_date;
7487 CLOSE csr_pre_pact_eff_date;
7488
7489 OPEN get_first_fps_date(g_payroll_id);
7490 FETCH get_first_fps_date
7491 INTO l_first_fps_run_date;
7492 CLOSE get_first_fps_date;
7493
7494 hr_utility.trace('l_first_fps_run_date: '||l_first_fps_run_date);
7495
7496 g_first_fps_run_date := l_first_fps_run_date;
7497
7498 hr_utility.trace('g_first_fps_run_date: '||g_first_fps_run_date);
7499
7500 SELECT distinct element_type_id
7501 INTO g_paye_element_id
7502 FROM pay_element_types_f
7503 WHERE element_name = 'PAYE'
7504 AND legislation_code = 'GB';
7505
7506 SELECT distinct element_type_id
7507 INTO g_paye_details_id
7508 FROM pay_element_types_f
7509 WHERE element_name = 'PAYE Details'
7510 AND legislation_code = 'GB';
7511
7512 SELECT distinct element_type_id
7513 INTO g_adv_period_id
7514 FROM pay_element_types_f
7515 WHERE element_name = 'Advance Period'
7516 AND legislation_code = 'GB';
7517
7518 hr_utility.trace('g_paye_element_id: '||TO_CHAR(g_paye_element_id));
7519
7520 IF l_effective_date >= to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) THEN
7521 g_start_year := to_date('06-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
7522 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') ;
7523 ELSE
7524 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') ;
7525 g_end_year := to_date('05-04-'||SUBSTR(TO_CHAR(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
7526 END IF;
7527
7528 hr_utility.trace('g_start_year: '||g_start_year);
7529 hr_utility.trace('g_end_year: '||g_end_year);
7530 hr_utility.trace('l_pre_pact_effective_date: '||l_pre_pact_effective_date);
7531
7532 if (g_start_year <= l_pre_pact_effective_date and g_end_year >= l_pre_pact_effective_date) then
7533 hr_utility.trace('Valid Effective Date for FPS Concurrent Program');
7534 else
7535 hr_utility.trace('Invalid Effective Date for FPS Concurrent Program');
7536 fnd_file.put_line(fnd_file.LOG,'FPS Program Effective date must be within the tax year of corresponding Pre-Payment Process Effective Date.');
7537 fnd_file.put_line(fnd_file.output,'FPS Program Effective date must be within the tax year of corresponding Pre-Payment Process Effective Date.');
7538 raise_application_error(-20001,'FPS Program Effective date must be within the tax year of corresponding Pre-Payment Process Effective Date.');
7539 end if;
7540
7541 /*
7542 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS: ');
7543 l_dummy := PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS(g_pre_pact_id, 'FPS');
7544 */
7545
7546 OPEN csr_ni_details;
7547 FETCH csr_ni_details INTO g_ni_pt_eid, g_ni_pt_ivid;
7548 CLOSE csr_ni_details;
7549
7550 --******************************
7551 l_balance_counter := 1;
7552 FOR rec IN get_defined_balance_id
7553 LOOP
7554 g_fps_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
7555 hr_utility.trace('balance_name: '||g_fps_bal_det_tab(l_balance_counter).balance_name);
7556 g_fps_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
7557 hr_utility.trace('balance_type_id: '||g_fps_bal_det_tab(l_balance_counter).balance_type_id);
7558 g_fps_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
7559 hr_utility.trace('database_item_suffix: '||g_fps_bal_det_tab(l_balance_counter).database_item_suffix);
7560 g_fps_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
7561 hr_utility.trace('balance_dimension_id: '||g_fps_bal_det_tab(l_balance_counter).balance_dimension_id);
7562 g_fps_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
7563 hr_utility.trace('defined_balance_id: '||g_fps_bal_det_tab(l_balance_counter).defined_balance_id);
7564 l_balance_counter := l_balance_counter + 1;
7565 hr_utility.trace('Balance Counter: '||l_balance_counter);
7566 END LOOP;
7567
7568 FOR i IN 1..g_fps_bal_det_tab.last
7569 LOOP
7570 g_defined_balance_lst(i).defined_balance_id := g_fps_bal_det_tab(i).defined_balance_id;
7571 END LOOP;
7572
7573 --Aggregation balances starts here
7574 l_balance_counter := 1;
7575 FOR rec IN get_aggr_defined_balance_id
7576 LOOP
7577 g_fps_aggr_bal_det_tab(l_balance_counter).balance_name := rec.balance_name;
7578 hr_utility.trace('balance name: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_name);
7579 g_fps_aggr_bal_det_tab(l_balance_counter).balance_type_id := rec.balance_type_id;
7580 hr_utility.trace('balance_type_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_type_id);
7581 g_fps_aggr_bal_det_tab(l_balance_counter).database_item_suffix := rec.database_item_suffix;
7582 hr_utility.trace('database_item_suffix: '||g_fps_aggr_bal_det_tab(l_balance_counter).database_item_suffix);
7583 g_fps_aggr_bal_det_tab(l_balance_counter).balance_dimension_id := rec.balance_dimension_id;
7584 hr_utility.trace('balance_dimension_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).balance_dimension_id);
7585 g_fps_aggr_bal_det_tab(l_balance_counter).defined_balance_id := rec.defined_balance_id;
7586 hr_utility.trace('defined_balance_id: '||g_fps_aggr_bal_det_tab(l_balance_counter).defined_balance_id);
7587 l_balance_counter := l_balance_counter + 1;
7588 hr_utility.trace('Balance Counter: '||l_balance_counter);
7589 END LOOP;
7590
7591 FOR i IN 1..g_fps_aggr_bal_det_tab.last
7592 LOOP
7593 g_aggr_defined_balance_lst(i).defined_balance_id := g_fps_aggr_bal_det_tab(i).defined_balance_id;
7594 END LOOP;
7595
7596 --Aggregation balances ends here
7597 hr_utility.set_location('Leaving '|| l_proc, 10);
7598
7599 EXCEPTION
7600 WHEN OTHERS THEN
7601 fnd_file.put_line(fnd_file.LOG,'Exception:' || SQLCODE || ' - ' || SQLERRM);
7602 hr_utility.raise_error;
7603 END archinit;
7604 --
7605 procedure add_other_asg_ni_ytd(c_asg_act_id in number , p_archive_tab in out nocopy act_info_rec) is
7606
7607 cursor csr_def_bal_id(c_bal_name varchar2, c_dim_name varchar2) is
7608 select pdb.defined_balance_id from pay_balance_types pbt, pay_balance_dimensions pbd,
7609 pay_defined_balances pdb where
7610 pbt.balance_name = c_bal_name
7611 and pbd.database_item_suffix = c_dim_name
7612 and pdb.balance_type_id = pbt.balance_type_id
7613 and pdb.balance_dimension_id = pbd.balance_dimension_id
7614 and pbd.LEGISLATION_CODE = 'GB'
7615 and pbt.LEGISLATION_CODE = 'GB';
7616 l_def_bal_id number;
7617 begin
7618 hr_utility.trace('Entering : add_other_asg_ni_ytd');
7619 hr_utility.trace('c_asg_act_id: ' || c_asg_act_id);
7620
7621 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able', '_ASG_TD_YTD');
7622 fetch csr_def_bal_id into l_def_bal_id;
7623 hr_utility.trace('l_def_bal_id1: ' || l_def_bal_id);
7624 close csr_def_bal_id;
7625 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);
7626
7627 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able LEL', '_ASG_TD_YTD');
7628 fetch csr_def_bal_id into l_def_bal_id;
7629 hr_utility.trace('l_def_bal_id2: ' || l_def_bal_id);
7630 close csr_def_bal_id;
7631 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);
7632
7633 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able ET', '_ASG_TD_YTD');
7634 fetch csr_def_bal_id into l_def_bal_id;
7635 hr_utility.trace('l_def_bal_id3: ' || l_def_bal_id);
7636 close csr_def_bal_id;
7637 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);
7638
7639 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able UAP', '_ASG_TD_YTD');
7640 fetch csr_def_bal_id into l_def_bal_id;
7641 hr_utility.trace('l_def_bal_id4: ' || l_def_bal_id);
7642 close csr_def_bal_id;
7643 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);
7644
7645 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Able UEL', '_ASG_TD_YTD');
7646 fetch csr_def_bal_id into l_def_bal_id;
7647 hr_utility.trace('l_def_bal_id5: ' || l_def_bal_id);
7648 close csr_def_bal_id;
7649 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);
7650
7651 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Employer', '_ASG_TD_YTD');
7652 fetch csr_def_bal_id into l_def_bal_id;
7653 hr_utility.trace('l_def_bal_id6: ' || l_def_bal_id);
7654 close csr_def_bal_id;
7655 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);
7656
7657 open csr_def_bal_id('NI ' || p_archive_tab.act_info1 || ' Employee', '_ASG_TD_YTD');
7658 fetch csr_def_bal_id into l_def_bal_id;
7659 hr_utility.trace('l_def_bal_id7: ' || l_def_bal_id);
7660 close csr_def_bal_id;
7661 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);
7662
7663 hr_utility.trace('Leaving : add_other_asg_ni_ytd');
7664 end add_other_asg_ni_ytd;
7665
7666 ---
7667 procedure ni_agg_ytd_sum(l_archive_tab in out nocopy action_info_table,
7668 i in out nocopy number,
7669 p_per_ni_a_balance act_info_rec,
7670 p_per_ni_b_balance act_info_rec,
7671 p_per_ni_c_balance act_info_rec,
7672 p_per_ni_d_balance act_info_rec,
7673 p_per_ni_e_balance act_info_rec,
7674 p_per_ni_j_balance act_info_rec,
7675 p_per_ni_l_balance act_info_rec
7676 ) is
7677 l_ni_rpt_asg_id NUMBER;
7678 l_cat number := null;
7679
7680 begin
7681 l_ni_rpt_asg_id := l_archive_tab(3).assignment_id;
7682 --A
7683 if p_per_ni_a_balance.act_info1 is not null then
7684 for k in 4..i
7685 loop
7686 if l_archive_tab(k).act_info1 = p_per_ni_a_balance.act_info1 then
7687 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7688 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7689 l_archive_tab(k).act_info3 := p_per_ni_a_balance.act_info3;
7690 l_archive_tab(k).act_info4 := p_per_ni_a_balance.act_info4;
7691 l_archive_tab(k).act_info5 := p_per_ni_a_balance.act_info5;
7692 l_archive_tab(k).act_info6 := p_per_ni_a_balance.act_info6;
7693 l_archive_tab(k).act_info7 := p_per_ni_a_balance.act_info7;
7694 l_archive_tab(k).act_info8 := p_per_ni_a_balance.act_info8;
7695 l_cat := 1;
7696 end if;
7697 end loop;
7698 if l_cat is null then
7699 i := i+1;
7700 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7701 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7702 l_archive_tab(i).act_info1 := 'A';
7703 l_archive_tab(i).act_info2 := 0;
7704 l_archive_tab(i).act_info3 := p_per_ni_a_balance.act_info3;
7705 l_archive_tab(i).act_info4 := p_per_ni_a_balance.act_info4;
7706 l_archive_tab(i).act_info5 := p_per_ni_a_balance.act_info5;
7707 l_archive_tab(i).act_info6 := p_per_ni_a_balance.act_info6;
7708 l_archive_tab(i).act_info7 := p_per_ni_a_balance.act_info7;
7709 l_archive_tab(i).act_info8 := p_per_ni_a_balance.act_info8;
7710 l_archive_tab(i).act_info9 := 0;
7711 l_archive_tab(i).act_info10 := 0;
7712 end if;
7713
7714 end if;
7715 l_cat := null;
7716 --B
7717 if p_per_ni_b_balance.act_info1 is not null then
7718 for k in 4..i
7719 loop
7720 if l_archive_tab(k).act_info1 = p_per_ni_b_balance.act_info1 then
7721 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7722 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7723 l_archive_tab(k).act_info3 := p_per_ni_b_balance.act_info3;
7724 l_archive_tab(k).act_info4 := p_per_ni_b_balance.act_info4;
7725 l_archive_tab(k).act_info5 := p_per_ni_b_balance.act_info5;
7726 l_archive_tab(k).act_info6 := p_per_ni_b_balance.act_info6;
7727 l_archive_tab(k).act_info7 := p_per_ni_b_balance.act_info7;
7728 l_archive_tab(k).act_info8 := p_per_ni_b_balance.act_info8;
7729 l_cat := 1;
7730 end if;
7731 end loop;
7732 if l_cat is null then
7733 i := i+1;
7734 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7735 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7736 l_archive_tab(i).act_info1 := 'B';
7737 l_archive_tab(i).act_info2 := 0;
7738 l_archive_tab(i).act_info3 := p_per_ni_b_balance.act_info3;
7739 l_archive_tab(i).act_info4 := p_per_ni_b_balance.act_info4;
7740 l_archive_tab(i).act_info5 := p_per_ni_b_balance.act_info5;
7741 l_archive_tab(i).act_info6 := p_per_ni_b_balance.act_info6;
7742 l_archive_tab(i).act_info7 := p_per_ni_b_balance.act_info7;
7743 l_archive_tab(i).act_info8 := p_per_ni_b_balance.act_info8;
7744 l_archive_tab(i).act_info9 := 0;
7745 l_archive_tab(i).act_info10 := 0;
7746 end if;
7747 end if;
7748 l_cat := null;
7749 -- D
7750 if p_per_ni_d_balance.act_info1 is not null then
7751 for k in 4..i
7752 loop
7753 if l_archive_tab(k).act_info1 = p_per_ni_d_balance.act_info1 then
7754 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7755 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7756 l_archive_tab(k).act_info3 := p_per_ni_d_balance.act_info3;
7757 l_archive_tab(k).act_info4 := p_per_ni_d_balance.act_info4;
7758 l_archive_tab(k).act_info5 := p_per_ni_d_balance.act_info5;
7759 l_archive_tab(k).act_info6 := p_per_ni_d_balance.act_info6;
7760 l_archive_tab(k).act_info7 := p_per_ni_d_balance.act_info7;
7761 l_archive_tab(k).act_info8 := p_per_ni_d_balance.act_info8;
7762 l_cat := 1;
7763 end if;
7764 end loop;
7765 if l_cat is null then
7766 i := i + 1;
7767 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7768 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7769 l_archive_tab(i).act_info1 := 'D';
7770 l_archive_tab(i).act_info2 := 0;
7771 l_archive_tab(i).act_info3 := p_per_ni_d_balance.act_info3;
7772 l_archive_tab(i).act_info4 := p_per_ni_d_balance.act_info4;
7773 l_archive_tab(i).act_info5 := p_per_ni_d_balance.act_info5;
7774 l_archive_tab(i).act_info6 := p_per_ni_d_balance.act_info6;
7775 l_archive_tab(i).act_info7 := p_per_ni_d_balance.act_info7;
7776 l_archive_tab(i).act_info8 := p_per_ni_d_balance.act_info8;
7777 l_archive_tab(i).act_info9 := 0;
7778 l_archive_tab(i).act_info10 := 0;
7779 end if;
7780 end if;
7781 l_cat := null;
7782 --C
7783 if p_per_ni_c_balance.act_info1 is not null then
7784 for k in 4..i
7785 loop
7786 if l_archive_tab(k).act_info1 = p_per_ni_c_balance.act_info1 then
7787 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7788 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7789 l_archive_tab(k).act_info3 := p_per_ni_c_balance.act_info3;
7790 l_archive_tab(k).act_info4 := p_per_ni_c_balance.act_info4;
7791 l_archive_tab(k).act_info5 := p_per_ni_c_balance.act_info5;
7792 l_archive_tab(k).act_info6 := p_per_ni_c_balance.act_info6;
7793 l_archive_tab(k).act_info7 := p_per_ni_c_balance.act_info7;
7794 l_archive_tab(k).act_info8 := p_per_ni_c_balance.act_info8;
7795 l_cat := 1;
7796 end if;
7797 end loop;
7798 if l_cat is null then
7799 i := i+1;
7800 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7801 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7802 l_archive_tab(i).act_info1 := 'C';
7803 l_archive_tab(i).act_info2 := 0;
7804 l_archive_tab(i).act_info3 := p_per_ni_c_balance.act_info3;
7805 l_archive_tab(i).act_info4 := p_per_ni_c_balance.act_info4;
7806 l_archive_tab(i).act_info5 := p_per_ni_c_balance.act_info5;
7807 l_archive_tab(i).act_info6 := p_per_ni_c_balance.act_info6;
7808 l_archive_tab(i).act_info7 := p_per_ni_c_balance.act_info7;
7809 l_archive_tab(i).act_info8 := p_per_ni_c_balance.act_info8;
7810 l_archive_tab(i).act_info9 := 0;
7811 l_archive_tab(i).act_info10 := 0;
7812 end if;
7813 end if;
7814 l_cat := null;
7815 --E
7816 if p_per_ni_e_balance.act_info1 is not null then
7817 for k in 4..i
7818 loop
7819 if l_archive_tab(k).act_info1 = p_per_ni_e_balance.act_info1 then
7820 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7821 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7822 l_archive_tab(k).act_info3 := p_per_ni_e_balance.act_info3;
7823 l_archive_tab(k).act_info4 := p_per_ni_e_balance.act_info4;
7824 l_archive_tab(k).act_info5 := p_per_ni_e_balance.act_info5;
7825 l_archive_tab(k).act_info6 := p_per_ni_e_balance.act_info6;
7826 l_archive_tab(k).act_info7 := p_per_ni_e_balance.act_info7;
7827 l_archive_tab(k).act_info8 := p_per_ni_e_balance.act_info8;
7828 l_cat := 1;
7829 end if;
7830 end loop;
7831 if l_cat is null then
7832 i := i+1;
7833 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7834 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7835 l_archive_tab(i).act_info1 := 'E';
7836 l_archive_tab(i).act_info2 := 0;
7837 l_archive_tab(i).act_info3 := p_per_ni_e_balance.act_info3;
7838 l_archive_tab(i).act_info4 := p_per_ni_e_balance.act_info4;
7839 l_archive_tab(i).act_info5 := p_per_ni_e_balance.act_info5;
7840 l_archive_tab(i).act_info6 := p_per_ni_e_balance.act_info6;
7841 l_archive_tab(i).act_info7 := p_per_ni_e_balance.act_info7;
7842 l_archive_tab(i).act_info8 := p_per_ni_e_balance.act_info8;
7843 l_archive_tab(i).act_info9 := 0;
7844 l_archive_tab(i).act_info10 := 0;
7845 end if;
7846 end if;
7847 l_cat := null;
7848 --j
7849 if p_per_ni_j_balance.act_info1 is not null then
7850 for k in 4..i
7851 loop
7852 if l_archive_tab(k).act_info1 = p_per_ni_j_balance.act_info1 then
7853 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7854 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7855 l_archive_tab(k).act_info3 := p_per_ni_j_balance.act_info3;
7856 l_archive_tab(k).act_info4 := p_per_ni_j_balance.act_info4;
7857 l_archive_tab(k).act_info5 := p_per_ni_j_balance.act_info5;
7858 l_archive_tab(k).act_info6 := p_per_ni_j_balance.act_info6;
7859 l_archive_tab(k).act_info7 := p_per_ni_j_balance.act_info7;
7860 l_archive_tab(k).act_info8 := p_per_ni_j_balance.act_info8;
7861 l_cat := 1;
7862 end if;
7863 end loop;
7864 if l_cat is null then
7865 i := i+1;
7866 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7867 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7868 l_archive_tab(i).act_info1 := 'J';
7869 l_archive_tab(i).act_info2 := 0;
7870 l_archive_tab(i).act_info3 := p_per_ni_j_balance.act_info3;
7871 l_archive_tab(i).act_info4 := p_per_ni_j_balance.act_info4;
7872 l_archive_tab(i).act_info5 := p_per_ni_j_balance.act_info5;
7873 l_archive_tab(i).act_info6 := p_per_ni_j_balance.act_info6;
7874 l_archive_tab(i).act_info7 := p_per_ni_j_balance.act_info7;
7875 l_archive_tab(i).act_info8 := p_per_ni_j_balance.act_info8;
7876 l_archive_tab(i).act_info9 := 0;
7877 l_archive_tab(i).act_info10 := 0;
7878 end if;
7879 end if;
7880 l_cat := null;
7881 --l
7882 if p_per_ni_l_balance.act_info1 is not null then
7883 for k in 4..i
7884 loop
7885 if l_archive_tab(k).act_info1 = p_per_ni_l_balance.act_info1 then
7886 l_archive_tab(k).action_info_category := 'GB_RTI_FPS_NI_DET';
7887 l_archive_tab(k).assignment_id := l_ni_rpt_asg_id;
7888 l_archive_tab(k).act_info3 := p_per_ni_l_balance.act_info3;
7889 l_archive_tab(k).act_info4 := p_per_ni_l_balance.act_info4;
7890 l_archive_tab(k).act_info5 := p_per_ni_l_balance.act_info5;
7891 l_archive_tab(k).act_info6 := p_per_ni_l_balance.act_info6;
7892 l_archive_tab(k).act_info7 := p_per_ni_l_balance.act_info7;
7893 l_archive_tab(k).act_info8 := p_per_ni_l_balance.act_info8;
7894 l_cat := 1;
7895 end if;
7896 end loop;
7897 if l_cat is null then
7898 i := i+1;
7899 l_archive_tab(i).action_info_category := 'GB_RTI_FPS_NI_DET';
7900 l_archive_tab(i).assignment_id := l_ni_rpt_asg_id;
7901 l_archive_tab(i).act_info1 := 'L';
7902 l_archive_tab(i).act_info2 := 0;
7903 l_archive_tab(i).act_info3 := p_per_ni_l_balance.act_info3;
7904 l_archive_tab(i).act_info4 := p_per_ni_l_balance.act_info4;
7905 l_archive_tab(i).act_info5 := p_per_ni_l_balance.act_info5;
7906 l_archive_tab(i).act_info6 := p_per_ni_l_balance.act_info6;
7907 l_archive_tab(i).act_info7 := p_per_ni_l_balance.act_info7;
7908 l_archive_tab(i).act_info8 := p_per_ni_l_balance.act_info8;
7909 l_archive_tab(i).act_info9 := 0;
7910 l_archive_tab(i).act_info10 := 0;
7911 end if;
7912 end if;
7913
7914 end ni_agg_ytd_sum;
7915 ---
7916
7917 --added for ni only aggregated case
7918 procedure get_ni_only_asg_details(l_asg_id number,
7919 l_archive_tab_det1 OUT nocopy act_info_rec,
7920 l_archive_tab_det2 OUT nocopy act_info_rec, p_assactid number) is
7921 l_last_asg_action_id number;
7922 l_last_effective_date date;
7923 l_last_asg_action_id_1 number;
7924 l_last_effective_date_1 date;
7925 l_archive_tab_per act_info_rec;
7926 l_asg_eff_start_date date;
7927 l_person_id number;
7928 l_archive_tab_add act_info_rec;
7929 p_starter_set varchar2(1) := 'N';
7930 l_archive_asg_det1 BOOLEAN;
7931 l_archive_asg_det2 BOOLEAN;
7932 l_archive_addr BOOLEAN;
7933 l_archive_person BOOLEAN;
7934
7935 CURSOR csr_asg_basic_details(c_asg_id NUMBER)
7936 IS
7937 SELECT asg.EFFECTIVE_START_DATE asg_eff_start_date,
7938 asg.person_id
7939 FROM per_all_assignments_f asg
7940 WHERE asg.assignment_id = c_asg_id
7941 AND g_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date;
7942
7943 -- for ni only aggregation
7944 -- to get the latest payroll run assignment action id for the given assignment.
7945 cursor csr_get_latest_asg_action (c_asg_id number)
7946 is
7947 SELECT
7948 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
7949 || paa.assignment_action_id),16)) max_asg_act_id
7950 , max(pact.effective_date) effective_date
7951
7952 FROM pay_assignment_actions paa
7953 ,pay_payroll_actions pact
7954 ,per_time_periods ptp
7955 WHERE paa.assignment_id = c_asg_id
7956 AND paa.payroll_action_id = pact.payroll_action_id
7957 AND pact.time_period_id = ptp.time_period_id
7958 AND pact.action_type IN ('Q','R','B','I','V')
7959 AND paa.action_status IN ('C','S')
7960 AND ptp.regular_payment_date BETWEEN g_start_year
7961 AND g_end_year
7962 AND ptp.regular_payment_date <= g_effective_date;
7963
7964 cursor csr_get_latest_asg_action_1 (c_asg_id number)
7965 is
7966 SELECT
7967 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
7968 || paa.assignment_action_id),16)) max_asg_act_id
7969 , max(pact.effective_date) effective_date
7970
7971 FROM pay_assignment_actions paa
7972 ,pay_payroll_actions pact
7973 ,per_time_periods ptp
7974 WHERE paa.assignment_id = c_asg_id
7975 AND paa.payroll_action_id = pact.payroll_action_id
7976 AND pact.time_period_id = ptp.time_period_id
7977 AND pact.action_type IN ('Q','R','B','I','V')
7978 AND paa.action_status IN ('C','S')
7979 AND ptp.regular_payment_date BETWEEN g_start_year
7980 AND g_end_year;
7981
7982 begin
7983
7984 hr_utility.trace('Entering get_ni_only_asg_details for asg_id: ' || l_asg_id);
7985
7986 open csr_get_latest_asg_action(l_asg_id);
7987 fetch csr_get_latest_asg_action into l_last_asg_action_id, l_last_effective_date;
7988 close csr_get_latest_asg_action;
7989 if l_last_asg_action_id is null then
7990 open csr_get_latest_asg_action_1(l_asg_id);
7991 fetch csr_get_latest_asg_action_1 into l_last_asg_action_id_1, l_last_effective_date_1;
7992 close csr_get_latest_asg_action_1;
7993 end if;
7994
7995
7996 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
7997 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
7998 OPEN csr_asg_basic_details(l_asg_id);
7999 hr_utility.trace('l_last_asg_action_id_1: '||l_last_asg_action_id_1);
8000 hr_utility.trace('l_last_effective_date_1: '||l_last_effective_date_1);
8001
8002 FETCH csr_asg_basic_details INTO l_asg_eff_start_date, l_person_id;
8003 CLOSE csr_asg_basic_details;
8004
8005 hr_utility.set_location('Fetching person details ',10);
8006 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab_per);
8007 ---
8008 hr_utility.set_location('Fetching address details ',20);
8009 l_archive_addr := fetch_address_rec(l_archive_tab_per.person_id,
8010 l_archive_tab_per.assignment_id,
8011 g_effective_date,
8012 l_archive_tab_add);
8013 l_person_id := l_archive_tab_per.person_id;
8014 --Fetching assignments details for FPS
8015 hr_utility.set_location('Fetching Assignment details ',30);
8016 if l_last_asg_action_id is not null then
8017 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
8018 g_effective_date,
8019 p_assactid,
8020 l_last_asg_action_id,
8021 'Y',
8022 l_archive_tab_per,
8023 l_archive_tab_det1,
8024 p_starter_set);
8025 else
8026
8027 --fetch_fps_nopay_asg_det1 procedure will be called when there are no payments for the assignment.
8028 l_archive_asg_det1 := fetch_fps_nopay_asg_det1(l_asg_eff_start_date,
8029 g_effective_date,
8030 p_assactid,
8031 l_last_asg_action_id_1,
8032 'Y',
8033 l_archive_tab_per,
8034 l_archive_tab_det1,
8035 p_starter_set);
8036 end if;
8037
8038 l_archive_tab_det2.assignment_id := l_asg_id;
8039
8040 l_archive_tab_det2.action_info_category := 'GB_RTI_FPS_ASG_DET2';
8041 l_archive_tab_det2.act_info1 := 0;
8042 l_archive_tab_det2.act_info2 := 0;
8043 l_archive_tab_det2.act_info3 := 0;
8044 l_archive_tab_det2.act_info4 := 0;
8045 l_archive_tab_det2.act_info5 := 0;
8046 l_archive_tab_det2.act_info6 := 0;
8047 l_archive_tab_det2.act_info7 := 0;
8048 l_archive_tab_det2.act_info8 := 0;
8049 l_archive_tab_det2.act_info9 := 0;
8050 l_archive_tab_det2.act_info10 := 0;
8051 l_archive_tab_det2.act_info11 := 0;
8052 l_archive_tab_det2.act_info12 := 0;
8053 l_archive_tab_det2.act_info13 := 0;
8054 l_archive_tab_det2.act_info14 := 0;
8055 l_archive_tab_det2.act_info15 := 0;
8056 l_archive_tab_det2.act_info16 := 0;
8057 l_archive_tab_det2.act_info17 := 0;
8058 l_archive_tab_det2.act_info18 := 0;
8059 l_archive_tab_det2.act_info19 := 0;
8060 l_archive_tab_det2.act_info20 := 0;
8061 l_archive_tab_det2.act_info21 := 0;
8062 l_archive_tab_det2.act_info22 := 0;
8063 l_archive_tab_det2.act_info23 := 0;
8064 l_archive_tab_det2.act_info24 := 0;
8065 if l_last_asg_action_id is not null then
8066 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);
8067 end if;
8068 hr_utility.trace('after det2');
8069
8070
8071
8072 l_archive_tab_det2.act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
8073 l_archive_tab_det1.act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
8074
8075 end get_ni_only_asg_details;
8076 --
8077
8078 --
8079 --
8080 /*--------------------------------------------------------------------------
8081 Name : archive_data
8082 Purpose : This sets up the contexts needed for the live (non-archive)
8083 database items
8084 Arguments :
8085 Notes : Every possible context for a specific assignment action has to
8086 be added to the PL/SQL table
8087 --------------------------------------------------------------------------*/
8088 --
8089 --
8090 PROCEDURE archive_code(
8091 p_assactid IN NUMBER,
8092 p_effective_date IN DATE)
8093 IS
8094 l_proc CONSTANT VARCHAR2(35):= g_package||'archive_code';
8095 error_found EXCEPTION;
8096 already_processed EXCEPTION;
8097 l_archive_tab action_info_table;
8098 l_archive_tab_det1 action_info_table;
8099 l_archive_tab_det2 action_info_table;
8100 l_archive_tab_ni_det action_info_table;
8101 l_archive_tab_ni_det_1 action_info_table;
8102 l_archive_tab_det1_local action_info_table;
8103 l_archive_tab_det2_local action_info_table;
8104 l_ni_rti_flag varchar(10);
8105 l_ni_rti_date varchar2(30);
8106 l_ni_rpt_asg_id NUMBER;
8107 l_ni_rpt_date DATE;
8108 l_archive_tab_ni_rpt action_info_table;
8109 record_count NUMBER;
8110 l_archive_person BOOLEAN;
8111 l_archive_addr BOOLEAN;
8112 l_archive_asg BOOLEAN;
8113 l_per_addr_val_flag VARCHAR2(1);
8114 l_fps_etext_asg_flag VARCHAR2(1);
8115 l_fps_etext_ni_flag VARCHAR2(1);
8116 l_personaddr_val_err BOOLEAN := False;
8117 l_fps_val_err BOOLEAN := False;
8118 l_fps_ni_val_err BOOLEAN := False;
8119 l_err_log NUMBER;
8120 l_start_date DATE;
8121 l_end_date DATE;
8122 l_archive_asg_det1 BOOLEAN;
8123 l_archive_asg_det2 BOOLEAN;
8124 l_archive_asg_ni_det BOOLEAN;
8125 l_rec_count number;
8126 l_cur_asg_pre_pay_act_id NUMBER;
8127 l_asg_action_id number;
8128 l_assact_id number;
8129 l_oth_min_pre_pay_id number;
8130 l_bacs_large_asg_id number;
8131 l_ni_emp_run number;
8132 --Below cursor fetches the payment date for the payroll run of the current assignment
8133 CURSOR csr_get_payment_date(p_last_asg_action_id NUMBER)
8134 IS
8135 SELECT ptp.regular_payment_date payment_date
8136 FROM pay_payroll_actions ppa,
8137 pay_assignment_actions paa,
8138 per_time_periods ptp
8139 WHERE assignment_action_id = p_last_asg_action_id
8140 AND ppa.time_period_id = ptp.time_period_id
8141 AND ppa.payroll_id = ptp.payroll_id
8142 AND paa.payroll_action_id = ppa.payroll_action_id;
8143 ---
8144 --Below cursor fetches the minimum assignment_action_id for aggregation case
8145 cursor get_min_asg_actid(p_person_id IN Number,p_assactid IN number)
8146 is
8147 select min(paa2.assignment_action_id) asgactid
8148 from
8149 pay_assignment_actions paa1,
8150 pay_assignment_actions paa2,
8151 per_all_assignments_f asg
8152 where
8153 paa1.assignment_action_id = p_assactid
8154 and paa1.payroll_action_id = paa2.payroll_action_id
8155 and paa2.assignment_id = asg.assignment_id
8156 and asg.person_id = p_person_id ;
8157
8158 --Below cursor fetches the basic details of the current assignment
8159 CURSOR csr_asg_basic_details(c_asg_act_id NUMBER)
8160 IS
8161 SELECT asg.assignment_id,
8162 asg.EFFECTIVE_START_DATE asg_eff_start_date,
8163 asg.person_id,
8164 asg.assignment_number
8165 FROM per_all_assignments_f asg,
8166 pay_assignment_actions paa,
8167 pay_payroll_actions ppa
8168 WHERE paa.assignment_action_id = c_asg_act_id
8169 AND paa.assignment_id = asg.assignment_id
8170 AND ppa.payroll_action_id = g_pre_pact_id
8171 AND ppa.effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date;
8172
8173 ---
8174
8175 --Below cursor fetches the further details of the current assignment
8176 CURSOR csr_asg(c_asg_act_id NUMBER, c_effective_date DATE)
8177 IS
8178 SELECT trim(NVL(asg.primary_flag,'N')) asg_primary_flag,
8179 trim(NVL(pap.per_information9,'N')) per_ni_agg_flag,
8180 trim(NVL(pap.per_information10,'N')) per_paye_agg_flag,
8181 asg.payroll_id payroll_id
8182 FROM per_all_people_f pap,
8183 per_all_assignments_f asg,
8184 pay_assignment_actions paa
8185 WHERE paa.assignment_action_id = c_asg_act_id
8186 AND paa.assignment_id = asg.assignment_id
8187 AND pap.person_id = asg.person_id
8188 -- and asg.business_group_id = l_business_group_id
8189 AND c_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
8190 AND c_effective_date BETWEEN pap.effective_start_date AND pap.effective_end_date
8191 AND pap.per_information_category = 'GB';
8192
8193 --
8194 --Below cursor fetches the latest payroll run details of the current assignment
8195 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)
8196 IS
8197 SELECT
8198 /*+ USE_NL(paa, pact, ptp) */
8199 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
8200 || paa.assignment_action_id),16)) max_asg_act_id,
8201 MAX(pact.effective_date) effective_date
8202 FROM pay_assignment_actions paa,
8203 pay_payroll_actions pact,
8204 per_time_periods ptp,
8205 pay_assignment_actions paa1, --Prepayments
8206 pay_payroll_actions ppa1, --Prepayments
8207 pay_action_interlocks pai --Prepayments
8208 WHERE paa.assignment_id = p_asgid
8209 AND paa.payroll_action_id = pact.payroll_action_id
8210 AND pact.time_period_id = ptp.time_period_id
8211 AND pact.action_type IN ('Q','R','I','V','B')
8212 AND paa.action_status IN ('C','S')
8213 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
8214 AND ppa1.payroll_action_id = p_pre_pay_id --1160712
8215 AND ppa1.action_type IN ('P','U')
8216 AND paa1.payroll_action_id = ppa1.payroll_action_id
8217 AND paa1.assignment_action_id = pai.locking_action_id
8218 AND paa.assignment_action_id = pai.locked_action_id;
8219
8220 --Below cursor fetches all the payroll runs details of the current assignment processed in the current prepayment
8221 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)
8222 IS
8223 SELECT
8224 /*+ USE_NL(paa, pact, ptp) */
8225 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
8226 || paa.assignment_action_id),16)) max_asg_act_id,
8227 MAX(pact.effective_date) effective_date
8228 FROM pay_assignment_actions paa,
8229 pay_payroll_actions pact,
8230 per_time_periods ptp,
8231 pay_assignment_actions paa1, --Prepayments
8232 pay_payroll_actions ppa1, --Prepayments
8233 pay_action_interlocks pai --Prepayments
8234 WHERE paa.assignment_id = p_asgid --46959
8235 AND paa.payroll_action_id = pact.payroll_action_id
8236 AND pact.time_period_id = ptp.time_period_id
8237 AND pact.action_type IN ('Q','R','I','V','B')
8238 AND paa.action_status IN ('C','S')
8239 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
8240 AND ppa1.payroll_action_id = p_pre_pay_id --1160712
8241 AND ppa1.action_type IN ('P','U')
8242 AND paa1.payroll_action_id = ppa1.payroll_action_id
8243 AND paa1.assignment_action_id = pai.locking_action_id
8244 AND paa.assignment_action_id = pai.locked_action_id
8245 GROUP BY paa.payroll_action_id
8246 ORDER BY max_asg_act_id;
8247
8248 --Below cursor fetches further details of the current prepayment
8249 CURSOR csr_prepay_asg_act_details(p_asgid NUMBER, p_pre_pay_id NUMBER)
8250 IS
8251 SELECT paa.assignment_action_id,
8252 ppa.payroll_action_id,
8253 ppa.effective_date
8254 FROM pay_assignment_actions paa,
8255 pay_payroll_actions ppa
8256 WHERE paa.assignment_id = p_asgid
8257 AND ppa.payroll_action_id = p_pre_pay_id
8258 AND paa.payroll_action_id = ppa.payroll_action_id;
8259 ---
8260 CURSOR csr_pay_act_details(p_asg_actid NUMBER)
8261 IS
8262 SELECT paa.payroll_action_id
8263 FROM pay_assignment_actions paa
8264 WHERE paa.assignment_action_id = p_asg_actid;
8265
8266 --Below cursor verifies whether current payment for this assignment is already archived
8267 CURSOR csr_earlier_archived(p_last_asg_action_id NUMBER)
8268 IS
8269 SELECT DISTINCT fps_asg_act_id
8270 FROM pay_gb_fps_details
8271 WHERE payroll_asg_act_id = p_last_asg_action_id;
8272
8273 --Below cursor fetches the already archived record for this assignment
8274 CURSOR csr_get_archived_record(p_assignment_action_id NUMBER, p_act_info_cat VARCHAR2)
8275 IS
8276 SELECT action_context_id,
8277 action_context_type,
8278 action_information_category,
8279 action_information1,
8280 action_information2,
8281 action_information3,
8282 action_information4,
8283 action_information5,
8284 action_information6,
8285 action_information7,
8286 action_information8,
8287 action_information9,
8288 action_information10,
8289 action_information11,
8290 action_information12,
8291 action_information13,
8292 action_information14,
8293 action_information15,
8294 action_information16,
8295 action_information17,
8296 action_information18,
8297 action_information19,
8298 action_information20,
8299 action_information21,
8300 action_information22,
8301 action_information23,
8302 action_information24,
8303 action_information25,
8304 action_information26,
8305 action_information27,
8306 action_information28,
8307 action_information29,
8308 action_information30,
8309 effective_date,
8310 assignment_id
8311 FROM pay_action_information pai
8312 WHERE pai.action_context_id = p_assignment_action_id
8313 AND pai.action_context_type = 'AAP'
8314 AND pai.action_information_category = p_act_info_cat;
8315
8316 --Below cursor fetches archived records count
8317 CURSOR csr_archived_records_count(p_assignment_action_id NUMBER)
8318 IS
8319 SELECT COUNT(*)
8320 FROM pay_action_information pai
8321 WHERE pai.action_context_id = p_assignment_action_id;
8322
8323 CURSOR csr_bacs_payment_exists (c_prepay_payroll_action_id NUMBER,
8324 c_prepay_asg_action_id NUMBER)
8325 IS
8326 SELECT 'Y'
8327 FROM pay_pre_payments ppp,
8328 pay_payment_types ppt,
8329 pay_org_payment_methods_f popf,
8330 pay_personal_payment_methods_f pppf,
8331 pay_external_accounts Orgkey,
8332 pay_external_accounts deskey,
8333 PAY_ASSIGNMENT_ACTIONS PAA,
8334 pay_payroll_actions ppa
8335 WHERE popf.ORG_PAYMENT_METHOD_ID = ppp.ORG_PAYMENT_METHOD_ID
8336 AND pppf.personal_payment_method_ID = ppp.personal_payment_method_ID
8337 AND popf.PAYMENT_TYPE_ID = ppt.PAYMENT_TYPE_ID
8338 AND ppt.PAYMENT_TYPE_NAME = 'BACS Tape'
8339 AND popf.defined_balance_id is not null
8340 AND orgkey.external_account_id = popf.external_account_id
8341 AND deskey.external_account_id = pppf.external_account_id
8342 AND ppa.effective_date BETWEEN popf.effective_start_date AND popf.effective_end_date
8343 AND ppa.effective_date BETWEEN pppf.effective_start_date AND pppf.effective_end_date
8344 AND ppp.ASSIGNMENT_ACTION_ID = PAA.ASSIGNMENT_ACTION_ID
8345 AND ppa.PAYROLL_ACTION_ID = PAA.PAYROLL_ACTION_ID
8346 AND PAA.PAYROLL_ACTION_ID = c_prepay_payroll_action_id --1129781
8347 AND PAA.ASSIGNMENT_ACTION_ID = c_prepay_asg_action_id; --9849423
8348
8349 CURSOR csr_total_payment (c_prepay_asg_action_id NUMBER)
8350 IS
8351 select (sum(ppp.value) * 100) amount
8352 from pay_pre_payments ppp,
8353 pay_org_payment_methods_f popmf,
8354 pay_assignment_actions paa,
8355 pay_payroll_actions ppa
8356 where ppp.ASSIGNMENT_ACTION_ID = c_prepay_asg_action_id
8357 and popmf.ORG_PAYMENT_METHOD_ID = ppp.ORG_PAYMENT_METHOD_ID
8358 and popmf.defined_balance_id is not null
8359 and ppa.payroll_action_id = paa.payroll_action_id
8360 and paa.assignment_action_id = ppp.assignment_action_id;
8361
8362 CURSOR csr_total_payment_new(c_prepay_asg_action_id NUMBER)
8363 IS
8364 select (sum(ppp.value) * 100) amount
8365 from pay_pre_payments ppp
8366 where ASSIGNMENT_ACTION_ID = c_prepay_asg_action_id;
8367
8368 --Below cursor fetches the latest payroll run details of the current assignment
8369 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)
8370 IS
8371 SELECT
8372 /*+ USE_NL(paa, pact, ptp) */
8373 to_number(SUBSTR(MAX(lpad(paa.action_sequence,15,'0')
8374 || paa.assignment_action_id),16)) max_asg_act_id,
8375 MAX(pact.effective_date) effective_date
8376 FROM pay_assignment_actions paa,
8377 per_all_assignments_f paaf,
8378 pay_payroll_actions pact,
8379 per_time_periods ptp,
8380 pay_assignment_actions paa1, --Prepayments
8381 pay_payroll_actions ppa1, --Prepayments
8382 pay_action_interlocks pai --Prepayments
8383 WHERE paa.assignment_id = paaf.assignment_id
8384 AND paaf.person_id = p_person_id
8385 AND paa.payroll_action_id = pact.payroll_action_id
8386 AND pact.time_period_id = ptp.time_period_id
8387 AND pact.action_type IN ('Q','R','B','I','V')
8388 AND paa.action_status IN ('C','S')
8389 AND ptp.regular_payment_date BETWEEN NVL(p_asg_start, p_start_year) AND p_end_year
8390 AND ppa1.payroll_action_id = p_pre_pay_id --1160712
8391 AND ppa1.action_type IN ('P','U')
8392 AND paa1.payroll_action_id = ppa1.payroll_action_id
8393 AND paa1.assignment_action_id = pai.locking_action_id
8394 AND paa.assignment_action_id = pai.locked_action_id
8395 AND exists( select 1
8396 from pay_pre_payments ppp
8397 where ASSIGNMENT_ACTION_ID = paa1.assignment_action_id
8398 and ppp.value <> 0); --For the bug 16542698
8399
8400 /**********************************************************************************************
8401 Below cursor fetches the details of the payroll runs processed for an aggregated employee.
8402 It fetches all the Payroll runs processed for a person provided if
8403 it ran after First FPS run date
8404 and not processed in any earlier FPS.
8405 *********************************************************************************************/
8406 CURSOR csr_aggr_all_payroll_actions(p_person_id NUMBER,
8407 p_asg_id NUMBER,
8408 p_last_asgact_id NUMBER,
8409 p_start_year DATE,
8410 p_end_year DATE,
8411 c_first_fps_eff_date DATE)
8412 IS
8413 SELECT /*+ USE_NL(paa, pact, ptp) */
8414 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
8415 || paa.assignment_action_id),16)) max_asg_act_id
8416 ,max (pact.effective_date) effective_date
8417 FROM pay_assignment_actions paa
8418 ,per_all_assignments_f paaf
8419 ,pay_payroll_actions pact
8420 ,per_time_periods ptp
8421 WHERE paa.assignment_id = paaf.assignment_id
8422 AND paaf.person_id = p_person_id
8423 AND paa.payroll_action_id = pact.payroll_action_id
8424 AND pact.time_period_id = ptp.time_period_id
8425 AND pact.action_type IN ('Q','R','B','I','V')
8426 AND paa.action_status IN ('C','S')
8427 AND ptp.regular_payment_date BETWEEN p_start_year
8428 AND p_end_year
8429 AND (
8430 (
8431 paa.assignment_action_id >
8432 (
8433 SELECT nvl (max (payroll_asg_act_id),paa.assignment_action_id)
8434 FROM pay_gb_fps_details pgfd
8435 WHERE pgfd.person_id = p_person_id
8436 )
8437 AND source_action_id IS NULL
8438 )
8439 OR (
8440 (
8441 SELECT count (*)
8442 FROM pay_gb_fps_details pgfd
8443 WHERE pgfd.person_id = p_person_id
8444 ) = 0
8445 )
8446 )
8447 AND ptp.regular_payment_date >= nvl (g_first_fps_run_date, c_first_fps_eff_date)
8448 AND paa.assignment_action_id <= p_last_asgact_id
8449 GROUP BY paa.payroll_action_id
8450 ORDER BY max_asg_act_id;
8451
8452 CURSOR csr_aggr_sequence_id(c_asg_act_id NUMBER)
8453 IS
8454 SELECT action_sequence
8455 FROM pay_assignment_actions
8456 WHERE assignment_action_id = c_asg_act_id;
8457
8458 CURSOR csr_aggr_locking_asg_act_id(p_person_id NUMBER, p_action_sequence NUMBER)
8459 IS
8460 /*
8461 select null into dummy
8462 from dual
8463 where not exists
8464 (select null
8465 */
8466 SELECT min (act.assignment_action_id)
8467 FROM pay_action_classifications class
8468 ,pay_payroll_actions pact
8469 ,pay_assignment_actions act
8470 ,per_all_assignments_f ass
8471 ,per_periods_of_service pos
8472 WHERE pos.person_id = p_person_id
8473 AND ass.period_of_service_id = pos.period_of_service_id
8474 AND act.assignment_id = ass.assignment_id
8475 AND act.action_sequence > p_action_sequence
8476 AND act.action_status IN ('C','S','M')
8477 AND act.payroll_action_id = pact.payroll_action_id
8478 AND pact.action_type = class.action_type
8479 AND class.classification_name = 'SEQUENCED';
8480
8481 -- CURSOR csr_processed_in_prepayment(c_prepay_asgactid NUMBER, c_payroll_asgactid NUMBER)
8482 CURSOR csr_processed_in_prepayment(c_prepay_asgactid NUMBER, c_payroll_asgactid NUMBER, c_payroll_master_asgactid number)
8483 IS
8484 SELECT 'Y' this_prepayment
8485 FROM pay_action_interlocks pai,
8486 pay_assignment_actions paa,
8487 pay_payroll_actions ppa
8488 WHERE paa.payroll_action_id = ppa.payroll_action_id
8489 AND paa.assignment_action_id = pai.locking_action_id
8490 AND ppa.action_type in ('P','U')
8491 AND ppa.payroll_action_id = g_pre_pact_id
8492 AND (pai.locked_action_id = c_payroll_asgactid
8493 OR pai.locked_action_id = c_payroll_master_asgactid );
8494
8495 /*
8496 SELECT 'Y' this_prepayment
8497 FROM pay_action_interlocks pai
8498 WHERE locking_action_id = c_prepay_asgactid
8499 AND (locked_action_id = c_payroll_asgactid
8500 OR locked_action_id = c_payroll_master_asgactid );
8501 */
8502
8503 cursor csr_get_asg_id(c_asgactid number) is
8504 select distinct assignment_id
8505 from pay_assignment_actions
8506 where assignment_action_id = c_asgactid;
8507 -- Curosr to fetch the RTI Reporting flag and effective date of the assignment
8508 cursor csr_ni_rpt_flag(c_asg_id number) is
8509 select AEI_INFORMATION1, AEI_INFORMATION2 from per_assignment_extra_info where assignment_id = c_asg_id
8510 and AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION';
8511
8512 -- Cursor to fetch the RTI NI Reporting assignment for this person.
8513 cursor csr_get_ni_rpt_asg(c_asg_id number) is
8514 select
8515 paei.assignment_id , fnd_date.canonical_to_date(paei.AEI_INFORMATION2)
8516 from per_all_assignments_f paaf1, per_all_assignments_f paaf2 ,per_assignment_extra_info paei
8517 where paaf1.assignment_id = c_asg_id
8518 and paaf1.person_id = paaf2.person_id
8519 and paaf2.ASSIGNMENT_TYPE = 'E'
8520 and paei.assignment_id = paaf2.assignment_id
8521 and paei.AEI_INFORMATION_CATEGORY = 'GB_RTI_AGGREGATION'
8522 and paei. AEI_INFORMATION1 = 'Y'
8523 and p_effective_date between paaf1.effective_start_date and paaf1.effective_end_date
8524 and p_effective_date between paaf2.effective_start_date and paaf2.effective_end_date
8525 order by 2 desc;
8526
8527 -- Cursor to fetch the previously archived details for the NI Reporting assignment.
8528 cursor csr_ni_asg_last_archived(c_asg_id number) is
8529 select
8530 assignment_id
8531 ,null
8532 ,null
8533 ,ACTION_INFORMATION_CATEGORY
8534 ,ACTION_INFORMATION1
8535 ,ACTION_INFORMATION2
8536 ,ACTION_INFORMATION3
8537 ,ACTION_INFORMATION4
8538 ,ACTION_INFORMATION5
8539 ,ACTION_INFORMATION6
8540 ,ACTION_INFORMATION7
8541 ,ACTION_INFORMATION8
8542 ,ACTION_INFORMATION9
8543 ,ACTION_INFORMATION10
8544 ,ACTION_INFORMATION11
8545 ,ACTION_INFORMATION12
8546 ,ACTION_INFORMATION13
8547 ,ACTION_INFORMATION14
8548 ,ACTION_INFORMATION15
8549 ,ACTION_INFORMATION16
8550 ,ACTION_INFORMATION17
8551 ,ACTION_INFORMATION18
8552 ,ACTION_INFORMATION19
8553 ,ACTION_INFORMATION20
8554 ,ACTION_INFORMATION21
8555 ,ACTION_INFORMATION22
8556 ,ACTION_INFORMATION23
8557 ,ACTION_INFORMATION24
8558 ,ACTION_INFORMATION25
8559 ,ACTION_INFORMATION26
8560 ,ACTION_INFORMATION27
8561 ,ACTION_INFORMATION28
8562 ,ACTION_INFORMATION29
8563 ,ACTION_INFORMATION30
8564 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
8565 and FPS_PAY_ACT_ID <> g_payroll_action_id) --= 9789749
8566 and ACTION_CONTEXT_TYPE = 'AAP' and
8567 ACTION_INFORMATION_CATEGORY in( 'GB_RTI_FPS_ASG_DET1', 'GB_RTI_FPS_ASG_DET2');
8568
8569
8570 /*** Get the latest assignment_action ids for all the other assignments for this employer
8571 and get the YTD balance value for these action ids.
8572 Sum this with the current assignment NI YTD and then archive.
8573 ***/
8574 cursor csr_asg_act_oth_asgs(c_asg_id number) is
8575 select max(paa.assignment_action_id) asg_act_id from per_all_assignments_f paaf,
8576 per_all_assignments_f paaf1,
8577 pay_assignment_actions paa,
8578 pay_payroll_actions ppa
8579 where paaf.assignment_id = c_asg_id
8580 and paaf1.person_id = paaf.person_id
8581 and paaf1.assignment_id <> c_asg_id
8582 and paaf1.assignment_id = paa.assignment_id
8583 and paa.payroll_action_id = ppa.payroll_action_id
8584 and ppa.effective_date >= g_start_year
8585 and ppa.action_type IN ('Q','R')
8586 and paa.action_status IN ('C','S')
8587 group by paa.assignment_id;
8588
8589 -- First FPS Cursors
8590 -- cursor to check whether this assignment processed in prepayment or not
8591 cursor csr_prepayment_made(pre_pay_id number) is
8592 SELECT paa_pre.assignment_id
8593 FROM pay_assignment_actions paa_pre
8594 , pay_assignment_actions paa_arcv
8595 WHERE paa_arcv.assignment_action_id = p_assactid
8596 AND paa_pre.payroll_action_id = pre_pay_id
8597 AND paa_pre.assignment_id = paa_arcv.assignment_id;
8598
8599 -- cursor to get assignment id using assignment action id parameter
8600 CURSOR csr_asg_id(c_asg_act_id NUMBER) IS
8601 SELECT paa.assignment_id
8602 FROM pay_assignment_actions paa
8603 WHERE paa.assignment_action_id = c_asg_act_id;
8604
8605 -- To fetch First FPS parameter
8606 /*CURSOR csr_parameter_info IS
8607 SELECT substr (pay_gb_eoy_archive.get_parameter (legislative_parameters, 'FIRST_FPS'), 1,1) first_fps,
8608 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref
8609 FROM pay_payroll_actions pact
8610 , pay_assignment_actions paa
8611 WHERE paa.assignment_action_id = p_assactid
8612 AND pact.payroll_action_id = paa.payroll_action_id;
8613 */
8614 -- get the defined balance id for specified balance and dimension
8615 cursor get_defined_balance_id
8616 (p_balance_name VARCHAR2, p_dimension_name VARCHAR2) IS
8617 SELECT defined_balance_id
8618 FROM pay_defined_balances db
8619 , pay_balance_types b
8620 , pay_balance_dimensions d
8621 WHERE b.balance_name = p_balance_name
8622 AND d.dimension_name = p_dimension_name
8623 AND db.balance_type_id = b.balance_type_id
8624 AND db.balance_dimension_id = d.balance_dimension_id
8625 AND b.legislation_code = 'GB'
8626 AND d.legislation_code = 'GB';
8627
8628 -- to fetch last assignment action id for the given assignment
8629 cursor csr_last_action_firstfps(p_asgid NUMBER, p_asg_start DATE,
8630 p_asg_end DATE, p_start_year DATE,
8631 p_end_year DATE, l_payroll number) IS--, p_tax_ref_xfer VARCHAR2) IS
8632 SELECT /*+ USE_NL(paa, pact, ptp) */
8633 to_number (substr (max (lpad (paa.action_sequence, 15
8634 , '0')
8635 || paa.assignment_action_id), 16))
8636 , max (pact.effective_date) effective_date
8637 FROM pay_assignment_actions paa
8638 , pay_payroll_actions pact
8639 , per_time_periods ptp
8640 WHERE paa.assignment_id = p_asgid
8641 AND paa.payroll_action_id = pact.payroll_action_id
8642 AND pact.payroll_id = l_payroll
8643 AND pact.time_period_id = ptp.time_period_id
8644 AND pact.action_type IN ('Q', 'R', 'B'
8645 , 'I', 'V')
8646 AND paa.action_status IN ('C', 'S')
8647 AND ptp.regular_payment_date
8648 BETWEEN g_start_year
8649 AND g_end_year;
8650
8651 -- to fetch last assignment action id for the given assignment
8652 cursor csr_last_action(p_asgid NUMBER, p_asg_start DATE,
8653 p_asg_end DATE, p_start_year DATE,
8654 p_end_year DATE) IS--, p_tax_ref_xfer VARCHAR2) IS
8655 SELECT /*+ USE_NL(paa, pact, ptp) */
8656 to_number (substr (max (lpad (paa.action_sequence, 15
8657 , '0')
8658 || paa.assignment_action_id), 16))
8659 , max (pact.effective_date) effective_date
8660 FROM pay_assignment_actions paa
8661 , pay_payroll_actions pact
8662 , per_time_periods ptp
8663 WHERE paa.assignment_id = p_asgid
8664 AND paa.payroll_action_id = pact.payroll_action_id
8665 AND pact.time_period_id = ptp.time_period_id
8666 AND pact.action_type IN ('Q', 'R', 'B'
8667 , 'I', 'V')
8668 AND paa.action_status IN ('C', 'S')
8669 AND ptp.regular_payment_date
8670 BETWEEN g_start_year
8671 AND g_end_year;
8672
8673
8674 cursor csr_get_asg_no(p_asg_id number,p_effective_date date) is
8675 SELECT assignment_number
8676 FROM per_all_assignments_f
8677 WHERE assignment_id = p_asg_id
8678 AND p_effective_date BETWEEN effective_start_date
8679 AND effective_end_date
8680 ORDER BY effective_start_date;
8681
8682 cursor csr_get_latest_asg_no(p_asg_id number,p_effective_date date) is
8683 SELECT assignment_number
8684 FROM per_all_assignments_f
8685 WHERE assignment_id = p_asg_id
8686 ORDER BY effective_start_date;
8687
8688 cursor csr_asg_act_processed_earlier(c_person_id number,
8689 c_asg_id number,
8690 c_cur_asg_action_id number) is
8691 select count(*)
8692 --into l_asg_act_processed_earlier
8693 from PAY_GB_FPS_DETAILS
8694 where PERSON_ID = c_person_id
8695 and ASSIGNMENT_ID = c_asg_id
8696 and PAYROLL_ASG_ACT_ID = c_cur_asg_action_id;
8697
8698 cursor csr_chk_prepayment_run(c_assignment_action_id number) is
8699 select count(*) from pay_assignment_actions paa, --run
8700 pay_assignment_actions paa1, --Prepayments
8701 pay_payroll_actions ppa1, --Prepayments
8702 pay_action_interlocks pai --Prepayments
8703 where paa.assignment_action_id = c_assignment_action_id --9917796
8704 AND paa.assignment_action_id = pai.locked_action_id
8705 AND paa1.assignment_action_id = pai.locking_action_id
8706 AND paa1.payroll_action_id = ppa1.payroll_action_id
8707 AND ppa1.action_type IN ('P','U');
8708
8709 CURSOR csr_aggr_min_act_id( p_person_id NUMBER,
8710 p_pre_pact_id NUMBER,
8711 c_effective_date DATE)
8712 IS
8713
8714 SELECT count(distinct act.assignment_action_id),
8715 min(act.assignment_action_id) assignment_action_id
8716 FROM pay_payroll_actions ppa, --Current pactid
8717 pay_payroll_actions appa, --Payroll Run
8718 pay_payroll_actions appa2, --Prepayments
8719 pay_assignment_actions act, --Payroll Run
8720 pay_assignment_actions act1, --Prepayments
8721 pay_action_interlocks pai, --Prepayments
8722 per_all_assignments_f as1
8723 WHERE as1.person_id = p_person_id --45885
8724 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
8725 AND act.payroll_action_id = appa.payroll_action_id
8726 AND act.source_action_id IS NULL
8727 AND as1.assignment_id = act.assignment_id
8728 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
8729 AND act.action_status = 'C'
8730 AND act.assignment_action_id = pai.locked_action_id
8731 AND act1.assignment_action_id = pai.locking_action_id
8732 AND act1.action_status = 'C'
8733 AND act1.payroll_action_id = appa2.payroll_action_id
8734 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
8735 AND appa2.payroll_action_id = p_pre_pact_id;
8736
8737 -- source is the above cursor:csr_aggr_min_act_id
8738 CURSOR csr_ni_aggr_max_act_id( p_person_id NUMBER,
8739 p_pre_pact_id NUMBER)
8740 IS
8741
8742 SELECT max(act.assignment_action_id) assignment_action_id
8743 FROM pay_payroll_actions ppa, --Current pactid
8744 pay_payroll_actions appa, --Payroll Run
8745 pay_payroll_actions appa2, --Prepayments
8746 pay_assignment_actions act, --Payroll Run
8747 pay_assignment_actions act1, --Prepayments
8748 pay_action_interlocks pai, --Prepayments
8749 per_all_assignments_f as1
8750 WHERE as1.person_id = p_person_id --45885
8751 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
8752 AND act.payroll_action_id = appa.payroll_action_id
8753 AND act.source_action_id IS NULL
8754 AND as1.assignment_id = act.assignment_id
8755 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
8756 AND act.action_status = 'C'
8757 AND act.assignment_action_id = pai.locked_action_id
8758 AND act1.assignment_action_id = pai.locking_action_id
8759 AND act1.action_status = 'C'
8760 AND act1.payroll_action_id = appa2.payroll_action_id
8761 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
8762 AND appa2.payroll_action_id = p_pre_pact_id;
8763
8764 cursor csr_asg_in_prepay(c_person_id number)
8765 IS
8766 SELECT act.assignment_id assignment_id,
8767 max(act.assignment_action_id) asg_act_id
8768 FROM
8769 pay_payroll_actions ppa, --Current pactid
8770 pay_payroll_actions appa, --Payroll Run
8771 pay_payroll_actions appa2, --Prepayments
8772 pay_assignment_actions act, --Payroll Run
8773 pay_assignment_actions act1, --Prepayments
8774 pay_action_interlocks pai, --Prepayments
8775 per_all_assignments_f as1
8776 WHERE
8777 ppa.payroll_action_id = g_payroll_action_id
8778 AND as1.person_id = c_person_id --BETWEEN stperson AND endperson
8779 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
8780 AND act.payroll_action_id = appa.payroll_action_id
8781 AND act.source_action_id IS NULL
8782 AND as1.assignment_id = act.assignment_id
8783 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
8784 AND act.action_status = 'C'
8785 AND act.assignment_action_id = pai.locked_action_id
8786 AND act1.assignment_action_id = pai.locking_action_id
8787 AND act1.action_status = 'C'
8788 AND act1.payroll_action_id = appa2.payroll_action_id
8789 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
8790 AND appa2.payroll_action_id = g_pre_pact_id
8791 group by act.assignment_id
8792 ORDER BY act.assignment_id;
8793
8794
8795 CURSOR csr_aggr_master_id(c_child_asg_act_id NUMBER)
8796 IS
8797 SELECT assignment_action_id
8798 FROM pay_assignment_actions
8799 WHERE source_action_id = c_child_asg_act_id;
8800
8801 CURSOR csr_aggr_max_act_id( p_person_id NUMBER,
8802 p_pre_pact_id NUMBER,
8803 c_effective_date DATE)
8804 IS
8805
8806 SELECT count(distinct act.assignment_action_id),
8807 max(act.assignment_action_id) assignment_action_id
8808 FROM pay_payroll_actions ppa, --Current pactid
8809 pay_payroll_actions appa, --Payroll Run
8810 pay_payroll_actions appa2, --Prepayments
8811 pay_assignment_actions act, --Payroll Run
8812 pay_assignment_actions act1, --Prepayments
8813 pay_action_interlocks pai, --Prepayments
8814 per_all_assignments_f as1
8815 WHERE as1.person_id = p_person_id --45885
8816 AND appa.action_type IN ('R','Q') -- Payroll Run or Quickpay Run
8817 AND act.payroll_action_id = appa.payroll_action_id
8818 AND act.source_action_id IS NULL
8819 AND as1.assignment_id = act.assignment_id
8820 AND ppa.effective_date BETWEEN as1.effective_start_date AND as1.effective_end_date
8821 AND act.action_status = 'C'
8822 AND act.assignment_action_id = pai.locked_action_id
8823 AND act1.assignment_action_id = pai.locking_action_id
8824 AND act1.action_status = 'C'
8825 AND act1.payroll_action_id = appa2.payroll_action_id
8826 AND appa2.action_type IN ('P','U') -- Prepayments or Quickpay Prepayments
8827 AND appa2.payroll_action_id = p_pre_pact_id
8828 AND exists( select 1
8829 from pay_pre_payments ppp
8830 where ASSIGNMENT_ACTION_ID = act1.assignment_action_id
8831 and ppp.value <> 0); --For the bug 16542698
8832
8833 l_asg_primary_flag VARCHAR2(1);
8834 l_per_agg_flag VARCHAR2(1);
8835 l_aggr_archive_flag VARCHAR2(1);
8836 l_asg_id NUMBER;
8837 l_effective_start_date DATE;
8838 l_effective_end_date DATE;
8839 l_last_asg_action_id NUMBER;
8840 l_last_effective_date DATE;
8841 l_asg_eff_start_date DATE;
8842 l_payroll_id NUMBER;
8843 l_ni_process_type VARCHAR2(50);
8844 l_dir_nic_calc_method VARCHAR2(30);
8845 l_prepay_asg_action_id NUMBER;
8846 l_prepay_payroll_action_id NUMBER;
8847 l_prepay_effective_date DATE;
8848 l_payroll_pact_id NUMBER;
8849 l_person_id NUMBER;
8850 l_earlier_archived_flag VARCHAR2(1);
8851 l_earlier_fps_asg_act_id NUMBER;
8852 l_action_info_id NUMBER(15);
8853 l_ovn NUMBER;
8854 l_archived_rec_count NUMBER;
8855 l_counter NUMBER;
8856 l_archived_context VARCHAR2(30);
8857 l_payment_date DATE;
8858 l_ni_rpt_assact_id number;
8859 l_get_archived_rec csr_get_archived_record%rowtype;
8860 p_ni_a_balance act_info_rec;
8861 p_ni_b_balance act_info_rec;
8862 p_ni_c_balance act_info_rec;
8863 p_ni_d_balance act_info_rec;
8864 p_ni_e_balance act_info_rec;
8865 p_ni_j_balance act_info_rec;
8866 p_ni_l_balance act_info_rec;
8867
8868 p_per_ni_a_balance act_info_rec;
8869 p_per_ni_b_balance act_info_rec;
8870 p_per_ni_c_balance act_info_rec;
8871 p_per_ni_d_balance act_info_rec;
8872 p_per_ni_e_balance act_info_rec;
8873 p_per_ni_j_balance act_info_rec;
8874 p_per_ni_l_balance act_info_rec;
8875
8876 already_a NUMBER := -1;
8877 already_b NUMBER := -1;
8878 already_c NUMBER := -1;
8879 already_d NUMBER := -1;
8880 already_e NUMBER := -1;
8881 already_j NUMBER := -1;
8882 already_l NUMBER := -1;
8883 already_a1 NUMBER := -1;
8884 already_b1 NUMBER := -1;
8885 already_c1 NUMBER := -1;
8886 already_d1 NUMBER := -1;
8887 already_e1 NUMBER := -1;
8888 already_j1 NUMBER := -1;
8889 already_l1 NUMBER := -1;
8890
8891 l_asact_count_prepayed number;
8892 l_aggr_max_act_id number;
8893 l_report_det1_det2_flag varchar2(1);
8894
8895 i NUMBER;
8896 i_1 NUMBER;
8897 i_2 NUMBER;
8898 ni_contrib NUMBER := 0;
8899 ni_contrib_ytd NUMBER := 0;
8900 ni_contrib_1 NUMBER := 0;
8901 ni_contrib_ytd_1 NUMBER := 0;
8902 ni_contrib_2 NUMBER := 0;
8903 ni_contrib_ytd_2 NUMBER := 0;
8904 l_bacs_payment_exists varchar2(1);
8905 l_hash_code varchar2(100);
8906 l_large_bacs_payment NUMBER := 0;
8907 l_total_payment NUMBER := 0;
8908 l_non_bacs_payment NUMBER := 0;
8909 l_max_prepay_act_id number;
8910 l_count_asg number;
8911 -- Declarations for First FPS
8912
8913 l_assignment_id number;
8914 p_starter_set varchar2(1):= 'N';
8915
8916 l_asg_f_id number;
8917 l_first_fps varchar2(10);
8918 l_first_fps_prepay_asg varchar2(10);
8919 l_temp_asg_id number;
8920 l_asg_val_flag varchar2(1);
8921 l_date_soy date;
8922 l_date_eoy date;
8923 l_tax_ref varchar2(30);
8924 l_effective_date date; -- cp Parameter
8925 l_date_flag boolean;
8926 l_prepayment_date date;
8927 l_assignment_number per_assignments_f.assignment_number%TYPE;
8928 l_per_ni_agg_flag varchar2(1);
8929 l_per_paye_agg_flag varchar2(1);
8930 l_cur_asg_action_id number;
8931 l_cur_last_effective_date date;
8932 l_aggr_sequence_id number;
8933 l_aggr_locking_asg_act_id number;
8934 l_tab_counter number;
8935 l_tab_proc_counter number;
8936 l_tab_not_proc_counter number;
8937 l_processed_in_prepayment varchar2(1);
8938
8939 l_archive_det1_counter number;
8940 l_archive_det2_counter number;
8941 l_archive_ni_det_counter number;
8942 /*l_archive_det1_counter_local number;
8943 l_archive_det2_counter_local number;*/
8944 l_cur_asg_id number;
8945 l_single_payroll_run_exists number;
8946 l_asg_act_processed_earlier number;
8947 l_archive_flag varchar2(1);
8948 l_chk_prepayment_run number;
8949 l_fps_etext_asg_temp_flag VARCHAR2(1);
8950
8951 l_asg_act_count number;
8952 l_aggr_min_act_id number;
8953 l_payroll_master_asgactid number;
8954 l_prepay_master_counter number;
8955 l_retry_req_flag varchar2(1) := 'N';
8956 l_cur_prepay_payroll_action_id number;
8957 l_rti_ni_proc_flag varchar2(1);
8958 l_rti_ni_proc_flag_1 varchar2(1);
8959 l_ni_aggr_max_act_id number;
8960 l_dummy NUMBER;
8961 l_ni_max_asg_act_id number;
8962 l_ni_max_asg_act_date date;
8963 l_asg_primary_flag1 VARCHAR2(1);
8964 l_per_ni_agg_flag1 VARCHAR2(1);
8965 l_per_paye_agg_flag1 VARCHAR2(1);
8966 l_payroll_id1 NUMBER;
8967 l_rti_ni_proc_flag1 varchar2(1);
8968 l_last_asg_id NUMBER;
8969 l_last_asgact_id NUMBER;
8970 l_last_eff_date DATE;
8971
8972 TYPE l_typ_payroll_asg_acts IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8973 l_payroll_asg_acts l_typ_payroll_asg_acts;
8974 TYPE l_typ_proc_in_prepay IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8975 l_proc_in_prepay l_typ_proc_in_prepay;
8976 TYPE l_typ_not_proc_in_prepay IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
8977 l_not_proc_in_prepay l_typ_not_proc_in_prepay;
8978
8979 cursor chk_processed_in_prepay(c_cur_asg_action_id number) is
8980 select pai.locking_action_id
8981 from
8982 pay_action_interlocks pai,
8983 pay_payroll_actions ppa,
8984 pay_assignment_actions paa
8985 where pai.locked_action_id = c_cur_asg_action_id
8986 and ppa.action_type in ('P','U')
8987 and paa.payroll_action_id = ppa.payroll_action_id
8988 and paa.assignment_action_id = pai.locking_action_id;
8989
8990 /* cursor csr_is_retry_request is
8991 select 'Y' from fnd_concurrent_programs fcp,
8992 fnd_concurrent_requests fcr,
8993 pay_payroll_actions ppa,
8994 pay_assignment_actions paa
8995 where paa.assignment_action_id = p_assactid
8996 and ppa.payroll_action_id = paa.payroll_action_id
8997 and ppa.request_id = fcr.request_id
8998 and fcr.CONCURRENT_PROGRAM_ID = fcp.CONCURRENT_PROGRAM_ID
8999 and CONCURRENT_PROGRAM_NAME = 'RETRY'; */
9000
9001 -- Modified retry cursor
9002 cursor csr_is_retry_request is
9003 select 'Y' from
9004 pay_assignment_actions
9005 where assignment_action_id = p_assactid
9006 AND ACTION_STATUS = 'M';
9007
9008 /* To get the payroll action id given assignment action id
9009 */
9010 cursor csr_prepay_payrol_act(c_asg_act_id number)
9011 is
9012 select paa.payroll_action_id
9013 from
9014 pay_assignment_actions paa
9015 where paa.assignment_action_id = c_asg_act_id;
9016
9017 -- to check whether the given assignment is processed in given prepay payroll_action id
9018 cursor csr_rti_rpt_proc_prepay(c_ni_rpt_asg_id number,c_pre_pay_action_id number) is
9019 select 'Y' from pay_assignment_actions paa,
9020 pay_payroll_actions ppa
9021 where
9022 ppa.payroll_action_id = c_pre_pay_action_id
9023 and ppa.payroll_action_id = paa.payroll_action_id
9024 and paa.assignment_id = c_ni_rpt_asg_id
9025 and ppa.action_type IN ('P','U')
9026 and paa.action_status IN ('C','S');
9027 -- for ni only aggregation
9028 -- to get the latest payroll run assignment action id for the given assignment.
9029 cursor csr_get_latest_asg_action (c_asg_id number)
9030 is
9031 SELECT
9032 to_number (substr (max (lpad (paa.action_sequence ,15,'0')
9033 || paa.assignment_action_id),16)) max_asg_act_id
9034 , max(pact.effective_date) effective_date
9035
9036 FROM pay_assignment_actions paa
9037 ,pay_payroll_actions pact
9038 ,per_time_periods ptp
9039 WHERE paa.assignment_id = c_asg_id
9040 AND paa.payroll_action_id = pact.payroll_action_id
9041 AND pact.time_period_id = ptp.time_period_id
9042 AND pact.action_type IN ('Q','R','B','I','V')
9043 AND paa.action_status IN ('C','S')
9044 AND ptp.regular_payment_date BETWEEN g_start_year
9045 AND g_end_year
9046 AND ptp.regular_payment_date <= g_effective_date;
9047
9048 CURSOR csr_last_aggr_asg(c_last_asgact_id number) is
9049 select distinct assignment_id
9050 from pay_assignment_actions
9051 where assignment_action_id = c_last_asgact_id;
9052
9053 --Below cursor fetches the number of assignments processed in current prepayment request
9054 CURSOR csr_aggr_asgs_processed(p_person_id NUMBER, p_pre_pay_id NUMBER, p_start_year DATE, p_end_year DATE)
9055 IS
9056 SELECT count(distinct paa1.assignment_id)
9057 FROM pay_assignment_actions paa,
9058 per_all_assignments_f paaf,
9059 pay_payroll_actions pact,
9060 per_time_periods ptp,
9061 pay_assignment_actions paa1, --Prepayments
9062 pay_payroll_actions ppa1, --Prepayments
9063 pay_action_interlocks pai --Prepayments
9064 WHERE paa.assignment_id = paaf.assignment_id
9065 AND paaf.person_id = p_person_id
9066 AND paa.payroll_action_id = pact.payroll_action_id
9067 AND pact.time_period_id = ptp.time_period_id
9068 AND pact.action_type IN ('Q','R','B','I','V')
9069 AND paa.action_status IN ('C','S')
9070 AND ptp.regular_payment_date BETWEEN p_start_year AND p_end_year
9071 AND ppa1.payroll_action_id = p_pre_pay_id
9072 AND ppa1.action_type IN ('P','U')
9073 AND paa1.payroll_action_id = ppa1.payroll_action_id
9074 AND paa1.assignment_action_id = pai.locking_action_id
9075 AND paa.assignment_action_id = pai.locked_action_id;
9076
9077 -- To fetch First FPS parameter
9078 CURSOR csr_parameter_info IS
9079 SELECT fnd_date.canonical_to_date(SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS_DATE'),1,10)) first_fps_date,
9080 to_number(pay_gb_eoy_archive.get_parameter(legislative_parameters, 'PAYROLL_ID')) payroll_id
9081 FROM pay_payroll_actions pact,
9082 pay_assignment_actions paa
9083 WHERE paa.assignment_action_id = p_assactid
9084 AND pact.payroll_action_id = paa.payroll_action_id;
9085
9086 -- To get maximum assignment action id for the person
9087 cursor csr_get_max_asg_actid_person(person_id number,l_first_fps_eff_date date) is
9088 SELECT /*+ USE_NL(paa, pact, ptp) */
9089 to_number (substr (max (lpad (paa.action_sequence, 15
9090 , '0')
9091 || paa.assignment_action_id), 16))
9092 , max (pact.effective_date) effective_date
9093
9094 FROM per_all_assignments_f paaf,
9095 pay_assignment_actions paa
9096 , pay_payroll_actions pact
9097 , per_time_periods ptp
9098 WHERE paa.assignment_id = paaf.assignment_id
9099 and paaf.person_id = person_id
9100 AND paa.payroll_action_id = pact.payroll_action_id
9101 AND pact.time_period_id = ptp.time_period_id
9102 AND pact.action_type IN ('Q', 'R', 'B'
9103 , 'I', 'V')
9104 AND paa.action_status IN ('C', 'S')
9105 AND ptp.regular_payment_date
9106 BETWEEN g_start_year
9107 AND l_first_fps_eff_date
9108 AND paaf.effective_start_date =
9109 ( select max(asg2.effective_start_date)
9110 from per_all_assignments_f asg2
9111 where asg2.assignment_id = paaf.assignment_id
9112 and asg2.assignment_type = 'E'
9113 and asg2.effective_start_date <= l_prepayment_date
9114 );
9115
9116 --Below cursor fetches the basic details of the current assignment
9117 CURSOR csr_asg_num(c_asg_act_id NUMBER, c_cur_last_effective_date date)
9118 IS
9119 SELECT asg.assignment_number
9120 FROM per_all_assignments_f asg,
9121 pay_assignment_actions paa
9122 WHERE paa.assignment_action_id = c_asg_act_id
9123 AND paa.assignment_id = asg.assignment_id
9124 AND c_cur_last_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date;
9125
9126 CURSOR csr_get_starter_details(p_asg_id NUMBER)
9127 IS
9128 SELECT assignment_extra_info_id l_aei_id,
9129 aei_information8 starter_flag,
9130 aei_information9 pensioner_flag,
9131 aei_information19 expat_flag,
9132 object_version_number l_ovn
9133 FROM per_assignment_extra_info
9134 WHERE assignment_id = p_asg_id
9135 AND information_type = 'GB_RTI_ASG_DETAILS';
9136
9137 cursor csr_fps_check(p_asg_id number) is
9138 select count(*)
9139 from pay_assignment_actions paa,
9140 pay_payroll_actions ppa
9141 where paa.assignment_id = p_asg_id
9142 and paa.action_status ='C'
9143 and paa.assignment_action_id <> p_assactid
9144 and ppa.payroll_action_id = paa.payroll_action_id
9145 and ppa.report_type in ( 'RTI_FPS_REP' , 'RTI_FPS_REP_13');
9146
9147 cursor csr_fps_action_exists(c_cur_asg_id number, c_payroll_action_id number) is
9148 select 'Y'
9149 from pay_assignment_actions paa
9150 where paa.payroll_action_id = c_payroll_action_id
9151 and paa.assignment_id = c_cur_asg_id;
9152
9153 l_aggr_asgs_processed number;
9154 l_first_fps_eff_date date;
9155 l_payroll NUMBER;
9156 l_flag VARCHAR2(1) :='Y';
9157 l_gross number;
9158 l_taxable number;
9159 l_niable number;
9160 l_gross_id number;
9161 l_taxable_id number;
9162 l_niable_id number;
9163 min_asgactid number;
9164 l_pact_id number;
9165 l_new_starter csr_get_starter_details%rowtype;
9166 l_aei_id NUMBER;
9167 l_fps_check NUMBER;
9168 l_fps_action_exists VARCHAR2(1) :='N';
9169 BEGIN
9170 --archive_code begins here
9171 hr_utility.set_location('Entering the debug: '||l_proc,1);
9172 hr_utility.trace('p_assactid: '||p_assactid);
9173 hr_utility.trace('p_effective_date: '||p_effective_date);
9174
9175 -- get the parameter values present in globals to local variables.
9176 l_first_fps := g_first_fps;
9177 l_tax_ref := g_tax_ref;
9178
9179 OPEN csr_parameter_info;
9180 FETCH csr_parameter_info
9181 INTO l_first_fps_eff_date,l_payroll;
9182 CLOSE csr_parameter_info;
9183
9184 hr_utility.trace('l_first_fps_eff_date: '||l_first_fps_eff_date);
9185
9186 OPEN csr_asg_basic_details(p_assactid);
9187 FETCH csr_asg_basic_details INTO l_asg_id, l_asg_eff_start_date, l_person_id, l_assignment_number;
9188 CLOSE csr_asg_basic_details;
9189
9190 hr_utility.trace('l_asg_id: '||l_asg_id);
9191 hr_utility.trace('l_asg_eff_start_date: '||l_asg_eff_start_date);
9192 hr_utility.trace('l_person_id: '||l_person_id);
9193
9194 open csr_is_retry_request;
9195 fetch csr_is_retry_request into l_retry_req_flag;
9196 close csr_is_retry_request;
9197
9198 --RETRY LOGIC
9199 if l_retry_req_flag = 'Y' then
9200
9201 hr_utility.trace('RETRY : l_retry_req_flag: '|| l_retry_req_flag);
9202 open csr_get_starter_details(l_asg_id);
9203 fetch csr_get_starter_details into l_new_starter;
9204 close csr_get_starter_details;
9205
9206 hr_utility.trace('RETRY : l_new_starter.l_aei_id : '|| l_new_starter.l_aei_id);
9207 hr_utility.trace('RETRY : l_new_starter.l_ovn : '|| l_new_starter.l_ovn);
9208 hr_utility.trace('RETRY : l_new_starter.starter_flag : '|| l_new_starter.starter_flag);
9209 hr_utility.trace('RETRY : l_new_starter.pensioner_flag : '|| l_new_starter.pensioner_flag);
9210 hr_utility.trace('RETRY : l_new_starter.expat_flag : '|| l_new_starter.expat_flag);
9211
9212 if l_new_starter.starter_flag = 'Y' OR l_new_starter.pensioner_flag = 'Y' OR l_new_starter.expat_flag = 'Y' THEN
9213
9214 hr_utility.trace('RTI Sent checked.');
9215
9216 open csr_fps_check(l_asg_id);
9217 fetch csr_fps_check into l_fps_check;
9218 close csr_fps_check;
9219
9220 if l_fps_check = 0 then
9221
9222 hr_utility.trace('RETRY : Reset is required.');
9223
9224 --EXPAT Flag
9225 IF l_new_starter.starter_flag = 'Y' THEN
9226 IF l_new_starter.l_ovn IS NOT NULL THEN
9227 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',
9228 p_aei_information8 => 'N');
9229 END IF;
9230 END IF;
9231 --PENSIONER Flag
9232 IF l_new_starter.pensioner_flag = 'Y' THEN
9233 IF l_new_starter.l_ovn IS NOT NULL THEN
9234 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',
9235 p_aei_information9 => 'N');
9236 END IF;
9237 END IF;
9238 --STARTER Flag
9239 IF l_new_starter.expat_flag = 'Y' THEN
9240 IF l_new_starter.l_ovn IS NOT NULL THEN
9241 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',
9242 p_aei_information19 => 'N');
9243 END IF;
9244 END IF;
9245
9246 end if; --l_fps_check
9247
9248 end if;
9249
9250 end if; --l_retry_req_flag
9251
9252 --RETRY Logic ends here
9253
9254 --delete from pay_gb_fps_details in case of retry
9255 if l_retry_req_flag = 'Y' then
9256 hr_utility.trace('RETRY : l_retry_req_flag: '|| l_retry_req_flag);
9257 select payroll_action_id into l_pact_id
9258 from pay_assignment_actions where assignment_action_id = p_assactid;
9259 open get_min_asg_actid(l_person_id,p_assactid);
9260 fetch get_min_asg_actid into min_asgactid;
9261 close get_min_asg_actid;
9262
9263 if min_asgactid = p_assactid then
9264 hr_utility.trace('deleting form pay_gb_fps_details in case of retry ');
9265 delete from pay_gb_fps_details
9266 where person_ID = l_person_id
9267 and FPS_PAY_ACT_ID = l_pact_id;
9268 end if;
9269 end if;
9270
9271
9272 OPEN csr_asg(p_assactid, p_effective_date);
9273 FETCH csr_asg INTO l_asg_primary_flag1, l_per_ni_agg_flag1, l_per_paye_agg_flag1, l_payroll_id1;
9274 CLOSE csr_asg;
9275 hr_utility.trace('l_per_ni_agg_flag1: '|| l_per_ni_agg_flag1);
9276 hr_utility.trace('l_per_paye_agg_flag1: '|| l_per_paye_agg_flag1);
9277
9278 --------------------------------------------------------------------------------------------------------------------
9279
9280 -- First FPS Changes
9281 if l_first_fps = 'Y' then
9282
9283 hr_utility.trace(l_asg_f_id||' First FPS Flag : '||l_first_fps);
9284
9285 -- To get Assignment ID
9286 open csr_asg_id(p_assactid);
9287 fetch csr_asg_id into l_asg_f_id;
9288 close csr_asg_id;
9289
9290 open csr_prepayment_made(g_pre_pact_id);
9291 fetch csr_prepayment_made into l_temp_asg_id;
9292 if csr_prepayment_made%found then
9293 l_first_fps_prepay_asg := 'Y';
9294 else
9295 l_first_fps_prepay_asg := 'N';
9296 end if;
9297 close csr_prepayment_made;
9298
9299 hr_utility.trace(l_asg_f_id||' First FPS Pre Pay Asg : '||l_first_fps_prepay_asg );
9300
9301 -- PAYE Aggr logic starts
9302 /* Below code is to filter out PAYE Aggregated employees as part of First FPS processing logic
9303 if they have any of the assignments processed in current prepayment request id.
9304 That means this employee would be processed in main PAYE Aggregated code itself. */
9305
9306 l_aggr_asgs_processed := 0;
9307 IF l_per_paye_agg_flag1 = 'Y' THEN
9308 hr_utility.trace('PAYE Aggregated Assignment');
9309 hr_utility.trace('l_person_id:'||l_person_id);
9310 hr_utility.trace('g_pre_pact_id:'||g_pre_pact_id);
9311 hr_utility.trace('g_start_year:'||g_start_year);
9312 hr_utility.trace('g_end_year:'||g_end_year);
9313
9314 OPEN csr_aggr_asgs_processed(l_person_id, g_pre_pact_id, g_start_year, g_end_year);
9315 FETCH csr_aggr_asgs_processed
9316 INTO l_aggr_asgs_processed;
9317 hr_utility.trace('l_aggr_asgs_processed:' ||l_aggr_asgs_processed);
9318 CLOSE csr_aggr_asgs_processed;
9319
9320 IF l_aggr_asgs_processed > 0 THEN
9321 l_first_fps_prepay_asg := 'Y';
9322 hr_utility.trace('There is a payment made for one of his asgs in current prepayment request');
9323 END IF;
9324 END IF;
9325
9326 -- PAYE Aggr logic ends
9327
9328 end if; -- First FPS if ends
9329
9330 --for NI only aggregation
9331 l_rti_ni_proc_flag1 := 'Y';
9332
9333 if nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y' then
9334 hr_utility.trace('l_asg_f_id1: '|| l_asg_f_id);
9335 hr_utility.trace('g_pre_pact_id: '|| g_pre_pact_id);
9336
9337 --Check whether the assignment is first fps assignment or not
9338 --If yes process the assignment else skip the assignment
9339
9340 OPEN get_defined_balance_id('Gross Pay','_ASG_TD_YTD');
9341 FETCH get_defined_balance_id INTO l_gross_id;
9342 CLOSE get_defined_balance_id;
9343
9344 OPEN get_defined_balance_id('Taxable Pay','_ASG_TD_YTD');
9345 FETCH get_defined_balance_id INTO l_taxable_id;
9346 CLOSE get_defined_balance_id;
9347
9348 OPEN get_defined_balance_id('NIable Pay','_ASG_TD_YTD');
9349 FETCH get_defined_balance_id INTO l_niable_id;
9350 CLOSE get_defined_balance_id;
9351
9352 -- To get latest assignment action id for the assignment
9353 OPEN csr_last_action_firstfps(l_asg_f_id, l_effective_start_date,
9354 l_effective_end_date, l_date_soy,
9355 l_prepayment_date,l_payroll);
9356 FETCH csr_last_action_firstfps INTO l_last_asg_action_id,
9357 l_last_effective_date;
9358
9359 CLOSE csr_last_action_firstfps;
9360
9361 hr_utility.trace('l_last_asg_action_id: '|| l_last_asg_action_id);
9362 hr_utility.trace('l_last_effective_date: '|| l_last_effective_date);
9363
9364 -- Fetching balances
9365 IF l_last_asg_action_id IS NOT NULL THEN
9366 l_gross := pay_balance_pkg.get_value(l_gross_id,l_last_asg_action_id);
9367 IF l_gross <= 0 THEN
9368 l_taxable := pay_balance_pkg.get_value(l_taxable_id,l_last_asg_action_id);
9369 END IF;
9370
9371 IF l_taxable <= 0 THEN
9372 l_niable := pay_balance_pkg.get_value(l_niable_id,l_last_asg_action_id);
9373 end if;
9374 END IF;
9375
9376 IF l_gross > 0 or l_taxable > 0 or l_niable > 0 THEN
9377 hr_utility.trace('Assignment '||l_asg_f_id||' has YTD values');
9378 ELSE
9379 hr_utility.trace('Assignment '||l_asg_f_id||' has No YTD values.');
9380 l_flag:= 'N';
9381 END IF;
9382
9383 -- Assignment is not First FPS Assignment
9384 if l_flag = 'N' then
9385 -- skip the NI aggregation logic if the current asg is not processed in this
9386 -- pre payments. This would be processed as part of max asg_act_id for this pre payment.
9387 open csr_rti_rpt_proc_prepay(l_asg_f_id,g_pre_pact_id);
9388 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag1;
9389 if csr_rti_rpt_proc_prepay%NOTFOUND then
9390 hr_utility.trace('Not processed in this prepayment.');
9391 l_rti_ni_proc_flag1 := 'N';
9392 end if;
9393 close csr_rti_rpt_proc_prepay;
9394 hr_utility.trace('l_rti_ni_proc_flag1: '|| l_rti_ni_proc_flag1);
9395 end if;
9396
9397 end if; --nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y
9398
9399
9400 if l_first_fps = 'Y' and l_first_fps_prepay_asg = 'N' and nvl(l_rti_ni_proc_flag1,'N') = 'Y' then
9401 l_prepayment_date := g_prepayment_date;
9402
9403 hr_utility.trace(l_asg_f_id||'Entering First FPS Logic');
9404
9405 l_effective_date := l_prepayment_date;
9406 g_effective_date := l_prepayment_date;
9407
9408 -- Tax Year Start and End
9409 If l_effective_date >= to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) Then
9410 l_date_soy := to_date('06-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY' ) ;
9411 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') ;
9412 Else
9413 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') ;
9414 l_date_eoy := to_date('05-04-'||substr(to_char(l_effective_date,'YYYY/MON/DD'),1,4),'DD-MM-YYYY') ;
9415 End If;
9416
9417 hr_utility.trace(l_date_soy||'start tax');
9418 hr_utility.trace(l_date_eoy||'end tax');
9419
9420 -- To get latest assignment action id for the assignment
9421 OPEN csr_last_action(l_asg_f_id, l_effective_start_date,
9422 l_effective_end_date, l_date_soy,
9423 l_prepayment_date);
9424 FETCH csr_last_action INTO l_last_asg_action_id,
9425 l_last_effective_date;
9426
9427 CLOSE csr_last_action;
9428
9429
9430 hr_utility.trace('After csr_last_action, l_last_asg_action_id='||l_last_asg_action_id);
9431 hr_utility.trace('l_last_effective_date='||fnd_date.date_to_displaydate(l_last_effective_date));
9432 --
9433
9434 hr_utility.set_location('Fetching person details ',10);
9435 l_archive_person := fetch_person_rec(p_assactid, l_last_effective_date,l_last_effective_date,l_archive_tab(0));
9436
9437 hr_utility.set_location('Fetching address details ',20);
9438 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
9439 l_archive_tab(0).assignment_id,
9440 l_last_effective_date,
9441 l_archive_tab(1));
9442
9443 hr_utility.set_location('Fetching Assignment details ',30);
9444 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
9445 l_last_effective_date,
9446 p_assactid,
9447 l_last_asg_action_id,
9448 'N',
9449 l_archive_tab(0),
9450 l_archive_tab(2), p_starter_set);
9451
9452 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));
9453
9454 IF l_per_paye_agg_flag1 = 'Y' THEN
9455 hr_utility.set_location('Calling fetch_first_fps_agg_asg_det2',30);
9456 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));
9457 ELSE
9458 hr_utility.set_location('Calling fetch_first_fps_asg_det2',30);
9459 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));
9460 END IF;
9461 i := 3;
9462
9463 -- OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
9464 OPEN csr_last_action(l_asg_f_id, l_effective_start_date,
9465 l_effective_end_date, l_date_soy,
9466 l_prepayment_date);
9467 FETCH csr_last_action
9468 INTO l_last_asg_action_id,
9469 l_last_effective_date;
9470
9471 hr_utility.trace(l_asg_f_id||' FIRST FPS ASG Inside NI calculation.');
9472
9473 IF l_per_paye_agg_flag1 = 'Y' THEN
9474 hr_utility.set_location('Calling get_ni_bal_paye_aggr_for_asg',30);
9475 pay_gb_fps_ni_and_others.get_ni_bal_paye_aggr_for_asg(l_asg_f_id,
9476 l_last_asg_action_id,
9477 p_ni_a_balance,
9478 p_ni_b_balance,
9479 p_ni_c_balance,
9480 p_ni_d_balance,
9481 p_ni_e_balance,
9482 p_ni_j_balance,
9483 p_ni_l_balance);
9484
9485 --NI only Aggregation
9486 ELSIF nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y' then
9487
9488 --Get NI RTI reporting assignment
9489 open csr_get_ni_rpt_asg(l_asg_f_id);
9490 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
9491 close csr_get_ni_rpt_asg;
9492 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id || ' l_ni_rpt_date: ' || l_ni_rpt_date,1000);
9493 hr_utility.set_location('NI reporting assignment for the assignment: ' || l_asg_f_id || 'is ' ||l_ni_rpt_asg_id ,1000);
9494
9495 if l_ni_rpt_asg_id <> l_asg_f_id then
9496 -- Non RTI reporting assignment
9497 hr_utility.set_location('Calling get_ni_balances_for_asg for non Ni RTI reporting assignment',30);
9498 pay_gb_fps_ni_and_others.get_ni_balances_for_asg(l_last_asg_action_id,
9499 p_ni_a_balance,
9500 p_ni_b_balance,
9501 p_ni_c_balance,
9502 p_ni_d_balance,
9503 p_ni_e_balance,
9504 p_ni_j_balance,
9505 p_ni_l_balance);
9506 else
9507 --RTI Reporting Assignment
9508 hr_utility.set_location('Calling get_ni_balances_for_asg for Ni RTI reporting assignment',30);
9509 -- get the max assingment action id prcessed in this prepayment
9510 -- get the YTD values for that assignment action id
9511 open csr_get_max_asg_actid_person(l_archive_tab(0).person_id,l_first_fps_eff_date);
9512 fetch csr_get_max_asg_actid_person INTO l_last_asg_action_id,l_last_effective_date;
9513 close csr_get_max_asg_actid_person;
9514
9515 -- Fetching Person Level YTDs
9516 pay_gb_fps_ni_and_others.get_ni_only_bal_rti_rpt(l_last_asg_action_id,
9517 p_ni_a_balance,
9518 p_ni_b_balance,
9519 p_ni_c_balance,
9520 p_ni_d_balance,
9521 p_ni_e_balance,
9522 p_ni_j_balance,
9523 p_ni_l_balance);
9524
9525 END IF;
9526
9527 ELSE
9528 -- Non Aggregation
9529 hr_utility.set_location('Calling get_ni_balances_for_asg',30);
9530 pay_gb_fps_ni_and_others.get_ni_balances_for_asg(l_last_asg_action_id,
9531 p_ni_a_balance,
9532 p_ni_b_balance,
9533 p_ni_c_balance,
9534 p_ni_d_balance,
9535 p_ni_e_balance,
9536 p_ni_j_balance,
9537 p_ni_l_balance);
9538
9539 END IF;
9540
9541 IF (p_ni_a_balance.act_info1 IS NOT NULL) THEN
9542 IF already_a = -1 THEN
9543 i := i+1;
9544 already_a := i;
9545 END IF;
9546
9547 l_archive_tab(already_a).assignment_id := l_archive_tab(0).assignment_id;
9548 l_archive_tab(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
9549 l_archive_tab(already_a).act_info1 := p_ni_a_balance.act_info1;
9550 l_archive_tab(already_a).act_info2 := 0;
9551 l_archive_tab(already_a).act_info3 := p_ni_a_balance.act_info3;
9552 l_archive_tab(already_a).act_info4 := p_ni_a_balance.act_info4;
9553 l_archive_tab(already_a).act_info5 := p_ni_a_balance.act_info5;
9554 l_archive_tab(already_a).act_info6 := p_ni_a_balance.act_info6;
9555 l_archive_tab(already_a).act_info7 := p_ni_a_balance.act_info7;
9556 l_archive_tab(already_a).act_info8 := p_ni_a_balance.act_info8;
9557 l_archive_tab(already_a).act_info9 := 0;
9558 l_archive_tab(already_a).act_info10 := 0;
9559
9560 END IF;
9561 -- For Category B
9562 IF (p_ni_b_balance.act_info1 IS NOT NULL) THEN
9563 IF already_b = -1 THEN
9564 i := i+1;
9565 already_b := i;
9566 END IF;
9567 l_archive_tab(already_b).assignment_id := l_archive_tab(0).assignment_id;
9568 l_archive_tab(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
9569 l_archive_tab(already_b).act_info1 := p_ni_b_balance.act_info1;
9570 l_archive_tab(already_b).act_info2 := 0;
9571 l_archive_tab(already_b).act_info3 := p_ni_b_balance.act_info3;
9572 l_archive_tab(already_b).act_info4 := p_ni_b_balance.act_info4;
9573 l_archive_tab(already_b).act_info5 := p_ni_b_balance.act_info5;
9574 l_archive_tab(already_b).act_info6 := p_ni_b_balance.act_info6;
9575 l_archive_tab(already_b).act_info7 := p_ni_b_balance.act_info7;
9576 l_archive_tab(already_b).act_info8 := p_ni_b_balance.act_info8;
9577 l_archive_tab(already_b).act_info9 := 0;
9578 l_archive_tab(already_b).act_info10 := 0;
9579 END IF;
9580 -- For Category C
9581 IF (p_ni_c_balance.act_info1 IS NOT NULL) THEN
9582 IF already_c = -1 THEN
9583 i := i+1;
9584 already_c := i;
9585 END IF;
9586 l_archive_tab(already_c).assignment_id := l_archive_tab(0).assignment_id;
9587 l_archive_tab(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
9588 l_archive_tab(already_c).act_info1 := p_ni_c_balance.act_info1;
9589 l_archive_tab(already_c).act_info2 := 0;
9590 l_archive_tab(already_c).act_info3 := p_ni_c_balance.act_info3;
9591 l_archive_tab(already_c).act_info4 := p_ni_c_balance.act_info4;
9592 l_archive_tab(already_c).act_info5 := p_ni_c_balance.act_info5;
9593 l_archive_tab(already_c).act_info6 := p_ni_c_balance.act_info6;
9594 l_archive_tab(already_c).act_info7 := p_ni_c_balance.act_info7;
9595 l_archive_tab(already_c).act_info8 := p_ni_c_balance.act_info8;
9596 l_archive_tab(already_c).act_info9 := 0;
9597 l_archive_tab(already_c).act_info10 := 0;
9598 END IF;
9599 --For Category D
9600 IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
9601 IF already_d = -1 THEN
9602 i := i+1;
9603 already_d := i;
9604 END IF;
9605 l_archive_tab(already_d).assignment_id := l_archive_tab(0).assignment_id;
9606 l_archive_tab(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
9607 l_archive_tab(already_d).act_info1 := p_ni_d_balance.act_info1;
9608 l_archive_tab(already_d).act_info2 := 0;
9609 l_archive_tab(already_d).act_info3 := p_ni_d_balance.act_info3;
9610 l_archive_tab(already_d).act_info4 := p_ni_d_balance.act_info4;
9611 l_archive_tab(already_d).act_info5 := p_ni_d_balance.act_info5;
9612 l_archive_tab(already_d).act_info6 := p_ni_d_balance.act_info6;
9613 l_archive_tab(already_d).act_info7 := p_ni_d_balance.act_info7;
9614 l_archive_tab(already_d).act_info8 := p_ni_d_balance.act_info8;
9615 l_archive_tab(already_d).act_info9 := 0;
9616 l_archive_tab(already_d).act_info10 := 0;
9617 END IF;
9618 -- For Category E
9619 IF (p_ni_e_balance.act_info1 IS NOT NULL) THEN
9620 IF already_e = -1 THEN
9621 i := i+1;
9622 already_e := i;
9623 END IF;
9624 l_archive_tab(already_e).assignment_id := l_archive_tab(0).assignment_id;
9625 l_archive_tab(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
9626 l_archive_tab(already_e).act_info1 := p_ni_e_balance.act_info1;
9627 l_archive_tab(already_e).act_info2 := 0;
9628 l_archive_tab(already_e).act_info3 := p_ni_e_balance.act_info3;
9629 l_archive_tab(already_e).act_info4 := p_ni_e_balance.act_info4;
9630 l_archive_tab(already_e).act_info5 := p_ni_e_balance.act_info5;
9631 l_archive_tab(already_e).act_info6 := p_ni_e_balance.act_info6;
9632 l_archive_tab(already_e).act_info7 := p_ni_e_balance.act_info7;
9633 l_archive_tab(already_e).act_info8 := p_ni_e_balance.act_info8;
9634 l_archive_tab(already_e).act_info9 := 0;
9635 l_archive_tab(already_e).act_info10 := 0;
9636 END IF;
9637 -- For Category J
9638 IF (p_ni_j_balance.act_info1 IS NOT NULL) THEN
9639 IF already_j = -1 THEN
9640 i := i+1;
9641 already_j := i;
9642 END IF;
9643 l_archive_tab(already_j).assignment_id := l_archive_tab(0).assignment_id;
9644 l_archive_tab(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
9645 l_archive_tab(already_j).act_info1 := p_ni_a_balance.act_info1;
9646 l_archive_tab(already_j).act_info2 := 0;
9647 l_archive_tab(already_j).act_info3 := p_ni_a_balance.act_info3;
9648 l_archive_tab(already_j).act_info4 := p_ni_a_balance.act_info4;
9649 l_archive_tab(already_j).act_info5 := p_ni_a_balance.act_info5;
9650 l_archive_tab(already_j).act_info6 := p_ni_a_balance.act_info6;
9651 l_archive_tab(already_j).act_info7 := p_ni_a_balance.act_info7;
9652 l_archive_tab(already_j).act_info8 := p_ni_a_balance.act_info8;
9653 l_archive_tab(already_j).act_info9 := 0;
9654 l_archive_tab(already_j).act_info10 := 0;
9655 END IF;
9656 -- For Category L
9657 IF (p_ni_l_balance.act_info1 IS NOT NULL) THEN
9658 IF already_l = -1 THEN
9659 i := i+1;
9660 already_l := i;
9661 END IF;
9662 l_archive_tab(already_l).assignment_id := l_archive_tab(0).assignment_id;
9663 l_archive_tab(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
9664 l_archive_tab(already_l).act_info1 := p_ni_l_balance.act_info1;
9665 l_archive_tab(already_l).act_info2 := 0;
9666 l_archive_tab(already_l).act_info3 := p_ni_l_balance.act_info3;
9667 l_archive_tab(already_l).act_info4 := p_ni_l_balance.act_info4;
9668 l_archive_tab(already_l).act_info5 := p_ni_l_balance.act_info5;
9669 l_archive_tab(already_l).act_info6 := p_ni_l_balance.act_info6;
9670 l_archive_tab(already_l).act_info7 := p_ni_l_balance.act_info7;
9671 l_archive_tab(already_l).act_info8 := p_ni_l_balance.act_info8;
9672 l_archive_tab(already_l).act_info9 := 0;
9673 l_archive_tab(already_l).act_info10 := 0;
9674 END IF;
9675
9676 FOR k IN 4..i
9677 LOOP
9678 IF l_archive_tab(k).act_info10 IS NOT NULL THEN
9679 ni_contrib_ytd := NVL(ni_contrib_ytd,0) + l_archive_tab(k).act_info8;
9680 END IF;
9681 END LOOP;
9682
9683 l_archive_tab(3).act_info5 := NVL(ni_contrib_ytd,0);
9684 l_archive_tab(3).act_info24 := 0;--NVL(ni_contrib,0);
9685
9686 -- In NI only aggregation, non RTI Reporting assignment set the NI YTDs to 0
9687 IF nvl(l_per_ni_agg_flag1,'N') = 'Y' and nvl(l_per_paye_agg_flag1,'N') <> 'Y' then
9688 if l_ni_rpt_asg_id <> l_asg_f_id then
9689 FOR k IN 4..i
9690 LOOP
9691 if l_archive_tab(k).act_info1 is not null then
9692 hr_utility.trace('NON RPT act_info1' || l_archive_tab(k).act_info1);
9693 l_archive_tab(k).act_info3 := 0;
9694 l_archive_tab(k).act_info4 := 0;
9695 l_archive_tab(k).act_info5 := 0;
9696 l_archive_tab(k).act_info6 := 0;
9697 l_archive_tab(k).act_info7 := 0;
9698 l_archive_tab(k).act_info8 := 0;
9699 end if;
9700 END LOOP;
9701 end if;
9702 END IF;
9703
9704 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
9705 pay_gb_rti_fps_validate.person_address_validations(p_assactid, sysdate, l_archive_tab,l_per_addr_val_flag);
9706 pay_gb_rti_fps_validate.assignment_validations(p_assactid, sysdate, l_archive_tab,l_asg_val_flag);
9707
9708 l_fps_ni_val_err := FALSE;
9709 l_fps_etext_ni_flag := 'Y';
9710
9711 FOR i_count IN 4..i
9712 LOOP
9713 hr_utility.set_location ('Calling FPS NI validations', 10);
9714 pay_gb_rti_fps_validate.ni_validations(p_assactid, p_effective_date, l_archive_tab,i_count,l_fps_etext_ni_flag);
9715 IF l_fps_etext_ni_flag = 'Y'
9716 THEN
9717 l_fps_ni_val_err := TRUE;
9718 END IF;
9719
9720 END LOOP;
9721
9722 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
9723 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.
9724 THEN
9725 hr_utility.set_location('Validation failed, raise error.',999);
9726 raise error_found;
9727 ELSE
9728 hr_utility.set_location('Validation successful, archive data.',999);
9729 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
9730 END IF;
9731 ELSE
9732 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
9733 raise error_found;
9734 END IF;
9735
9736 hr_utility.trace(l_asg_f_id||'Leaving First FPS Logic');
9737
9738 else -- First Fps and First Fps Prepayment else starts
9739 hr_utility.trace(l_asg_f_id||'Entering FPS Logic');
9740 -- FIRST FPS changes ends
9741
9742 --*****************************************************************************************************
9743 -- Below code is to verify whether current payment for this assignment is already archived while
9744 -- processing any other future payments as part of running some other FPS Archive Process.
9745 -- In that case, fetch those records only and archive the same again.
9746 -- This is to make sure that always we submit the maximum amounts payed in that period.
9747 -- This ensures the correct values at HMRC even if the previous values gets overridden at HMRC.
9748 --*****************************************************************************************************
9749
9750 OPEN csr_last_payroll_action(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
9751 FETCH csr_last_payroll_action
9752 INTO l_last_asg_action_id,
9753 l_last_effective_date;
9754 CLOSE csr_last_payroll_action;
9755
9756 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
9757 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
9758 ---
9759
9760 OPEN csr_get_payment_date(l_last_asg_action_id);
9761 FETCH csr_get_payment_date INTO l_payment_date;
9762 CLOSE csr_get_payment_date;
9763
9764 hr_utility.trace('l_payment_date: '||l_payment_date);
9765 g_effective_date := l_payment_date;
9766
9767 OPEN csr_asg(p_assactid, g_effective_date);
9768 FETCH csr_asg INTO l_asg_primary_flag, l_per_ni_agg_flag, l_per_paye_agg_flag, l_payroll_id;
9769 CLOSE csr_asg;
9770
9771 hr_utility.trace('l_asg_primary_flag: '||l_asg_primary_flag);
9772 hr_utility.trace('l_per_paye_agg_flag: '||l_per_paye_agg_flag);
9773 hr_utility.trace('l_per_ni_agg_flag: '||l_per_ni_agg_flag);
9774 hr_utility.trace('l_payroll_id: '||l_payroll_id);
9775
9776 hr_utility.trace('l_asg_id: '||l_asg_id);
9777 hr_utility.trace('l_asg_eff_start_date: '||l_asg_eff_start_date);
9778 hr_utility.trace('l_asg_primary_flag: '||l_asg_primary_flag);
9779 hr_utility.trace('l_per_agg_flag: '||l_per_agg_flag);
9780 hr_utility.trace('l_payroll_id: '||l_payroll_id);
9781 hr_utility.trace('g_start_year: '||g_start_year);
9782 hr_utility.trace('g_end_year: '||g_end_year);
9783 hr_utility.trace('g_pre_pact_id: '||g_pre_pact_id);
9784
9785 --*****************************************************************************************************
9786 -- Below code processes all non-aggregated assignments
9787 --*****************************************************************************************************
9788
9789 IF (l_per_paye_agg_flag <> 'Y' and l_per_ni_agg_flag <> 'Y') THEN
9790
9791 hr_utility.trace('Entered Non-Aggregated Code');
9792
9793 OPEN csr_last_payroll_action(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
9794 FETCH csr_last_payroll_action
9795 INTO l_last_asg_action_id,
9796 l_last_effective_date;
9797 CLOSE csr_last_payroll_action;
9798
9799 OPEN csr_prepay_asg_act_details(l_asg_id, g_pre_pact_id);
9800 FETCH csr_prepay_asg_act_details
9801 INTO l_prepay_asg_action_id,
9802 l_prepay_payroll_action_id,
9803 l_prepay_effective_date;
9804 CLOSE csr_prepay_asg_act_details;
9805
9806 hr_utility.trace('l_prepay_asg_action_id: '||l_prepay_asg_action_id);
9807 hr_utility.trace('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id);
9808 hr_utility.trace('l_prepay_effective_date: '||l_prepay_effective_date);
9809
9810 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
9811 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
9812 l_start_date := l_asg_eff_start_date;
9813 l_end_date := g_effective_date;
9814
9815 ---
9816
9817 l_bacs_payment_exists := 'N';
9818
9819 OPEN csr_bacs_payment_exists (l_prepay_payroll_action_id,l_prepay_asg_action_id);
9820 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
9821 CLOSE csr_bacs_payment_exists;
9822
9823 begin
9824 if (l_bacs_payment_exists = 'Y') then
9825 l_hash_code := PAY_GB_FPS_NI_AND_OTHERS.fetch_HASH_FPS_ASG(g_pre_pact_id, l_asg_id, l_large_bacs_payment);
9826 else
9827 l_hash_code := null;
9828 end if;
9829 exception
9830 when others then
9831 populate_run_msg(p_assactid, 'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
9832 fnd_file.put_line (fnd_file.LOG,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
9833 raise_application_error(-20001,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
9834 end;
9835
9836 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
9837 hr_utility.trace('l_hash_code: '||l_hash_code);
9838
9839 ---
9840
9841 OPEN csr_total_payment (l_prepay_asg_action_id);
9842 FETCH csr_total_payment INTO l_total_payment;
9843 CLOSE csr_total_payment;
9844
9845 hr_utility.trace('l_total_payment: '||l_total_payment);
9846
9847 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
9848
9849 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
9850 ---
9851
9852 hr_utility.set_location('Fetching person details ',10);
9853 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab(0));
9854 ---
9855 hr_utility.set_location('Fetching address details ',20);
9856 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
9857 l_archive_tab(0).assignment_id,
9858 g_effective_date,
9859 l_archive_tab(1));
9860 l_person_id := l_archive_tab(0).person_id;
9861 --Fetching assignments details for FPS
9862 hr_utility.set_location('Fetching Assignment details ',30);
9863 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
9864 g_effective_date,
9865 p_assactid,
9866 l_last_asg_action_id,
9867 'Y',
9868 l_archive_tab(0),
9869 l_archive_tab(2),
9870 p_starter_set);
9871
9872 hr_utility.set_location('Assignment Hash Code to archive record4',30);
9873 l_archive_tab(2).act_info28 := l_hash_code;
9874 --****************************
9875 i := 3;
9876 l_archive_tab(3).assignment_id := l_asg_id;
9877
9878 OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
9879 LOOP
9880 FETCH csr_all_payroll_actions
9881 INTO l_last_asg_action_id,
9882 l_last_effective_date;
9883 EXIT
9884 WHEN csr_all_payroll_actions%NOTFOUND;
9885
9886 pay_gb_fps_ni_and_others.get_ni_balances_for_asg(l_last_asg_action_id,
9887 p_ni_a_balance,
9888 p_ni_b_balance,
9889 p_ni_c_balance,
9890 p_ni_d_balance,
9891 p_ni_e_balance,
9892 p_ni_j_balance,
9893 p_ni_l_balance);
9894 IF (p_ni_a_balance.act_info1 IS NOT NULL) THEN
9895 IF already_a = -1 THEN
9896 i := i+1;
9897 already_a := i;
9898 END IF;
9899
9900 l_archive_tab(already_a).assignment_id := l_archive_tab(0).assignment_id;
9901 l_archive_tab(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
9902 l_archive_tab(already_a).act_info1 := p_ni_a_balance.act_info1;
9903 l_archive_tab(already_a).act_info2 := NVL(l_archive_tab(already_a).act_info2,0) + nvl(p_ni_a_balance.act_info2,0);
9904 l_archive_tab(already_a).act_info3 := p_ni_a_balance.act_info3;
9905 l_archive_tab(already_a).act_info4 := p_ni_a_balance.act_info4;
9906 l_archive_tab(already_a).act_info5 := p_ni_a_balance.act_info5;
9907 l_archive_tab(already_a).act_info6 := p_ni_a_balance.act_info6;
9908 l_archive_tab(already_a).act_info7 := p_ni_a_balance.act_info7;
9909 l_archive_tab(already_a).act_info8 := p_ni_a_balance.act_info8;
9910 l_archive_tab(already_a).act_info9 := NVL(l_archive_tab(already_a).act_info9 ,0) + nvl(p_ni_a_balance.act_info9,0);
9911 l_archive_tab(already_a).act_info10 := NVL(l_archive_tab(already_a).act_info10 ,0) + nvl(p_ni_a_balance.act_info10,0);
9912
9913 END IF;
9914 -- For Category B
9915 IF (p_ni_b_balance.act_info1 IS NOT NULL) THEN
9916 IF already_b = -1 THEN
9917 i := i+1;
9918 already_b := i;
9919 END IF;
9920 l_archive_tab(already_b).assignment_id := l_archive_tab(0).assignment_id;
9921 l_archive_tab(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
9922 l_archive_tab(already_b).act_info1 := p_ni_b_balance.act_info1;
9923 l_archive_tab(already_b).act_info2 := NVL(l_archive_tab(already_b).act_info2,0) + nvl(p_ni_b_balance.act_info2,0);
9924 l_archive_tab(already_b).act_info3 := p_ni_b_balance.act_info3;
9925 l_archive_tab(already_b).act_info4 := p_ni_b_balance.act_info4;
9926 l_archive_tab(already_b).act_info5 := p_ni_b_balance.act_info5;
9927 l_archive_tab(already_b).act_info6 := p_ni_b_balance.act_info6;
9928 l_archive_tab(already_b).act_info7 := p_ni_b_balance.act_info7;
9929 l_archive_tab(already_b).act_info8 := p_ni_b_balance.act_info8;
9930 l_archive_tab(already_b).act_info9 := NVL(l_archive_tab(already_b).act_info9 ,0) +nvl( p_ni_b_balance.act_info9,0);
9931 l_archive_tab(already_b).act_info10 := NVL(l_archive_tab(already_b).act_info10 ,0) + nvl(p_ni_b_balance.act_info10,0);
9932 END IF;
9933 -- For Category C
9934 IF (p_ni_c_balance.act_info1 IS NOT NULL) THEN
9935 IF already_c = -1 THEN
9936 i := i+1;
9937 already_c := i;
9938 END IF;
9939 l_archive_tab(already_c).assignment_id := l_archive_tab(0).assignment_id;
9940 l_archive_tab(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
9941 l_archive_tab(already_c).act_info1 := p_ni_c_balance.act_info1;
9942 l_archive_tab(already_c).act_info2 := NVL(l_archive_tab(already_c).act_info2,0) + nvl(p_ni_c_balance.act_info2,0);
9943 l_archive_tab(already_c).act_info3 := p_ni_c_balance.act_info3;
9944 l_archive_tab(already_c).act_info4 := p_ni_c_balance.act_info4;
9945 l_archive_tab(already_c).act_info5 := p_ni_c_balance.act_info5;
9946 l_archive_tab(already_c).act_info6 := p_ni_c_balance.act_info6;
9947 l_archive_tab(already_c).act_info7 := p_ni_c_balance.act_info7;
9948 l_archive_tab(already_c).act_info8 := p_ni_c_balance.act_info8;
9949 l_archive_tab(already_c).act_info9 := NVL(l_archive_tab(already_c).act_info9 ,0) + nvl(p_ni_c_balance.act_info9,0);
9950 l_archive_tab(already_c).act_info10 := NVL(l_archive_tab(already_c).act_info10 ,0) + nvl(p_ni_c_balance.act_info10,0);
9951 END IF;
9952 --For Category D
9953 IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
9954 IF already_d = -1 THEN
9955 i := i+1;
9956 already_d := i;
9957 END IF;
9958 l_archive_tab(already_d).assignment_id := l_archive_tab(0).assignment_id;
9959 l_archive_tab(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
9960 l_archive_tab(already_d).act_info1 := p_ni_d_balance.act_info1;
9961 l_archive_tab(already_d).act_info2 := NVL(l_archive_tab(already_d).act_info2,0) + nvl(p_ni_d_balance.act_info2,0);
9962 l_archive_tab(already_d).act_info3 := p_ni_d_balance.act_info3;
9963 l_archive_tab(already_d).act_info4 := p_ni_d_balance.act_info4;
9964 l_archive_tab(already_d).act_info5 := p_ni_d_balance.act_info5;
9965 l_archive_tab(already_d).act_info6 := p_ni_d_balance.act_info6;
9966 l_archive_tab(already_d).act_info7 := p_ni_d_balance.act_info7;
9967 l_archive_tab(already_d).act_info8 := p_ni_d_balance.act_info8;
9968 l_archive_tab(already_d).act_info9 := NVL(l_archive_tab(already_d).act_info9,0) + nvl(p_ni_d_balance.act_info9,0);
9969 l_archive_tab(already_d).act_info10 := NVL(l_archive_tab(already_d).act_info10,0) + nvl(p_ni_d_balance.act_info10,0);
9970 END IF;
9971 -- For Category E
9972 IF (p_ni_e_balance.act_info1 IS NOT NULL) THEN
9973 IF already_e = -1 THEN
9974 i := i+1;
9975 already_e := i;
9976 END IF;
9977 l_archive_tab(already_e).assignment_id := l_archive_tab(0).assignment_id;
9978 l_archive_tab(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
9979 l_archive_tab(already_e).act_info1 := p_ni_e_balance.act_info1;
9980 l_archive_tab(already_e).act_info2 := NVL(l_archive_tab(already_e).act_info2,0) + nvl(p_ni_e_balance.act_info2,0);
9981 l_archive_tab(already_e).act_info3 := p_ni_e_balance.act_info3;
9982 l_archive_tab(already_e).act_info4 := p_ni_e_balance.act_info4;
9983 l_archive_tab(already_e).act_info5 := p_ni_e_balance.act_info5;
9984 l_archive_tab(already_e).act_info6 := p_ni_e_balance.act_info6;
9985 l_archive_tab(already_e).act_info7 := p_ni_e_balance.act_info7;
9986 l_archive_tab(already_e).act_info8 := p_ni_e_balance.act_info8;
9987 l_archive_tab(already_e).act_info9 := NVL(l_archive_tab(already_e).act_info9 ,0) + nvl(p_ni_e_balance.act_info9,0);
9988 l_archive_tab(already_e).act_info10 := NVL(l_archive_tab(already_e).act_info10 ,0) + nvl(p_ni_e_balance.act_info10,0);
9989 END IF;
9990 -- For Category J
9991 IF (p_ni_j_balance.act_info1 IS NOT NULL) THEN
9992 IF already_j = -1 THEN
9993 i := i+1;
9994 already_j := i;
9995 END IF;
9996 l_archive_tab(already_j).assignment_id := l_archive_tab(0).assignment_id;
9997 l_archive_tab(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
9998 l_archive_tab(already_j).act_info1 := p_ni_j_balance.act_info1;
9999 l_archive_tab(already_j).act_info2 := NVL(l_archive_tab(already_j).act_info2,0) + nvl(p_ni_j_balance.act_info2,0);
10000 l_archive_tab(already_j).act_info3 := p_ni_j_balance.act_info3;
10001 l_archive_tab(already_j).act_info4 := p_ni_j_balance.act_info4;
10002 l_archive_tab(already_j).act_info5 := p_ni_j_balance.act_info5;
10003 l_archive_tab(already_j).act_info6 := p_ni_j_balance.act_info6;
10004 l_archive_tab(already_j).act_info7 := p_ni_j_balance.act_info7;
10005 l_archive_tab(already_j).act_info8 := p_ni_j_balance.act_info8;
10006 l_archive_tab(already_j).act_info9 := NVL(l_archive_tab(already_j).act_info9 ,0) + nvl(p_ni_j_balance.act_info9,0);
10007 l_archive_tab(already_j).act_info10 := NVL(l_archive_tab(already_j).act_info10 ,0) + nvl(p_ni_j_balance.act_info10,0);
10008 END IF;
10009 -- For Category L
10010 IF (p_ni_l_balance.act_info1 IS NOT NULL) THEN
10011 IF already_l = -1 THEN
10012 i := i+1;
10013 already_l := i;
10014 END IF;
10015 l_archive_tab(already_l).assignment_id := l_archive_tab(0).assignment_id;
10016 l_archive_tab(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
10017 l_archive_tab(already_l).act_info1 := p_ni_l_balance.act_info1;
10018 l_archive_tab(already_l).act_info2 := NVL(l_archive_tab(already_l).act_info2,0) + nvl(p_ni_l_balance.act_info2,0);
10019 l_archive_tab(already_l).act_info3 := p_ni_l_balance.act_info3;
10020 l_archive_tab(already_l).act_info4 := p_ni_l_balance.act_info4;
10021 l_archive_tab(already_l).act_info5 := p_ni_l_balance.act_info5;
10022 l_archive_tab(already_l).act_info6 := p_ni_l_balance.act_info6;
10023 l_archive_tab(already_l).act_info7 := p_ni_l_balance.act_info7;
10024 l_archive_tab(already_l).act_info8 := p_ni_l_balance.act_info8;
10025 l_archive_tab(already_l).act_info9 := NVL(l_archive_tab(already_l).act_info9 ,0) + nvl(p_ni_l_balance.act_info9,0);
10026 l_archive_tab(already_l).act_info10 := NVL(l_archive_tab(already_l).act_info10 ,0) + nvl(p_ni_l_balance.act_info10,0);
10027 END IF;
10028
10029 l_archive_asg_det2 := fetch_fps_asg_det2(l_last_asg_action_id,l_asg_id,l_archive_tab(3));
10030
10031 OPEN csr_pay_act_details(l_last_asg_action_id);
10032 FETCH csr_pay_act_details INTO l_payroll_pact_id;
10033 CLOSE csr_pay_act_details;
10034
10035 INSERT
10036 INTO PAY_GB_FPS_DETAILS
10037 (
10038 ASSIGNMENT_ID,
10039 PERSON_ID,
10040 FPS_ASG_ACT_ID,
10041 FPS_PAY_ACT_ID,
10042 FPS_EFFECTIVE_DATE,
10043 PREPAY_ASG_ACT_ID,
10044 PREPAY_PAY_ACT_ID,
10045 PREPAY_EFFECTIVE_DATE,
10046 PAYROLL_ASG_ACT_ID,
10047 PAYROLL_PAY_ACT_ID,
10048 PAYROLL_EFFECTIVE_DATE
10049 )
10050 VALUES
10051 (
10052 l_asg_id,
10053 l_person_id,
10054 p_assactid,
10055 g_payroll_action_id,
10056 g_fps_effective_date,
10057 l_prepay_asg_action_id,
10058 l_prepay_payroll_action_id,
10059 l_prepay_effective_date,
10060 l_last_asg_action_id,
10061 l_payroll_pact_id,
10062 l_last_effective_date
10063 );
10064
10065 END LOOP;
10066
10067 CLOSE csr_all_payroll_actions;
10068
10069 FOR k IN 4..i
10070 LOOP
10071 IF l_archive_tab(k).act_info10 IS NOT NULL THEN
10072 ni_contrib := NVL(ni_contrib,0) + l_archive_tab(k).act_info10;
10073 ni_contrib_ytd := NVL(ni_contrib_ytd,0) + l_archive_tab(k).act_info8;
10074 END IF;
10075 END LOOP;
10076
10077 hr_utility.trace( 'value of i :' || i);
10078 hr_utility.trace('Assignment id : ' || l_asg_id);
10079 hr_utility.trace('ni_contrib : ' || ni_contrib);
10080 hr_utility.trace('l_archive_tab(3).act_info8 : ' || l_archive_tab(3).act_info8 );
10081 hr_utility.trace('l_archive_tab(3).act_info9 : ' || l_archive_tab(3).act_info9 );
10082
10083 -- Derive the fields 58B and 59
10084 -- 58B
10085 l_archive_tab(3).act_info8 := NVL(l_archive_tab(3).act_info8,0) -- Prev holds Total Deductions
10086 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
10087 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
10088 - NVL(ni_contrib,0) -- NI
10089 + l_non_bacs_payment;
10090 -- 59
10091 l_archive_tab(3).act_info9 := NVL(l_archive_tab(3).act_info9,0)
10092 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
10093 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
10094 - NVL(ni_contrib,0) -- NI
10095 + NVL(l_archive_tab(3).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
10096 l_archive_tab(3).act_info5 := NVL(ni_contrib_ytd,0);
10097 l_archive_tab(3).act_info24 := NVL(ni_contrib,0);
10098 -- l_archive_tab(3).act_info22 := nvl(l_archive_tab(3).act_info22,0) + nvl(g_assp_total,0);
10099 -- l_archive_tab(3).act_info20 := nvl(l_archive_tab(3).act_info20,0) + nvl(g_spp_total,0);
10100
10101 /* g_ssp_total := 0;
10102 g_sap_total := 0;
10103 g_spp_total := 0;
10104 g_assp_total := 0;
10105 g_smp_total := 0;
10106 */
10107 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
10108
10109 -- Validating fetched Person,Address,Assignment details for FPS
10110 hr_utility.set_location('Calling Person Address validations', 10);
10111 pay_gb_rti_fps_validate.person_address_validations(p_assactid, p_effective_date, l_archive_tab,l_per_addr_val_flag);
10112 hr_utility.trace('person address' ||l_per_addr_val_flag);
10113
10114 IF l_per_addr_val_flag = 'Y' THEN -- If validation fails
10115 l_personaddr_val_err := TRUE;
10116 END IF;
10117
10118 hr_utility.set_location('Calling FPS validations', 10);
10119 pay_gb_rti_fps_validate.assignment_validations(p_assactid, p_effective_date, l_archive_tab,l_fps_etext_asg_flag);
10120
10121 IF l_fps_etext_asg_flag = 'Y' THEN -- If validation fails
10122 l_fps_val_err := TRUE;
10123 END IF;
10124
10125 hr_utility.set_location('After Calling FPS validations', 10);
10126 -- LOOP through all NIs
10127 FOR i_count IN 4..i
10128 LOOP
10129
10130 hr_utility.set_location ('Calling FPS NI validations', 10);
10131
10132 pay_gb_rti_fps_validate.ni_validations(p_assactid, p_effective_date, l_archive_tab,i_count,l_fps_etext_ni_flag);
10133
10134 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
10135 l_fps_ni_val_err := TRUE;
10136 END IF;
10137
10138 END LOOP;
10139
10140 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
10141 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.
10142 THEN
10143 hr_utility.set_location('Validation failed, raise error.',999);
10144 fnd_file.put_line(fnd_file.LOG,'Not Archiving');
10145 raise error_found;
10146 ELSE
10147 hr_utility.set_location('Validation successful, archive data.',999);
10148 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
10149
10150 /* Moved this code to Action creation
10151 -- lock the pre payments action id with current fps assignment action id
10152 begin
10153 hr_nonrun_asact.insint(p_assactid, l_prepay_asg_action_id);
10154 exception
10155 when dup_val_on_index then
10156 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
10157 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_prepay_asg_action_id,60);
10158 end;*/
10159 END IF;
10160 ELSE
10161 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
10162 raise error_found;
10163 END IF;
10164
10165 --
10166
10167 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
10168
10169 hr_utility.trace('PAYE Agg code g_payroll_action_id ' || g_payroll_action_id);
10170 --*****************************************************************************************************
10171 -- Below code processes all aggregated assignments
10172 --*****************************************************************************************************
10173
10174 OPEN csr_aggr_last_payroll_action(l_person_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10175 FETCH csr_aggr_last_payroll_action
10176 INTO l_last_asgact_id,
10177 l_last_eff_date;
10178 CLOSE csr_aggr_last_payroll_action;
10179
10180 hr_utility.trace('l_last_asgact_id:' || l_last_asgact_id);
10181 hr_utility.trace('l_last_eff_date:' || l_last_eff_date);
10182
10183 OPEN csr_last_aggr_asg(l_last_asgact_id);
10184 FETCH csr_last_aggr_asg
10185 INTO l_last_asg_id;
10186 CLOSE csr_last_aggr_asg;
10187
10188 hr_utility.trace('l_last_asg_id:' || l_last_asg_id);
10189
10190 -- should skip the aggregation logic for other assignments
10191 select max(paa.assignment_action_id) into l_asg_action_id
10192 from
10193 pay_assignment_actions paa,
10194 per_all_assignments_f paaf
10195 where
10196 paaf.person_id = l_person_id
10197 and paaf.assignment_id = paa.assignment_id
10198 and paa.payroll_action_id = g_payroll_action_id
10199 and paa.assignment_id = l_last_asg_id;
10200 hr_utility.trace('l_asg_action_id:' || l_asg_action_id || ' p_assactid: '|| p_assactid );
10201
10202 if l_asg_action_id = p_assactid then
10203
10204 hr_utility.trace('Entered Aggregated Code');
10205 l_prepay_master_counter := 1;
10206
10207 OPEN csr_aggr_last_payroll_action(l_person_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
10208 FETCH csr_aggr_last_payroll_action
10209 INTO l_last_asg_action_id,
10210 l_last_effective_date;
10211 -- get the flag to check whether the current request is retry.
10212 open csr_is_retry_request;
10213 fetch csr_is_retry_request into l_retry_req_flag;
10214 close csr_is_retry_request;
10215
10216 hr_utility.trace('l_last_asg_action_id: ' ||l_last_asg_action_id);
10217 hr_utility.trace('l_last_effective_date: ' ||l_last_effective_date);
10218 CLOSE csr_aggr_last_payroll_action;
10219
10220 OPEN csr_get_payment_date(l_last_asg_action_id);
10221 FETCH csr_get_payment_date INTO l_payment_date;
10222 CLOSE csr_get_payment_date;
10223
10224 hr_utility.trace('l_payment_date: '||l_payment_date);
10225 g_effective_date := l_payment_date;
10226
10227 OPEN csr_prepay_asg_act_details(l_asg_id, g_pre_pact_id);
10228 FETCH csr_prepay_asg_act_details
10229 INTO l_prepay_asg_action_id,
10230 l_prepay_payroll_action_id,
10231 l_prepay_effective_date;
10232 CLOSE csr_prepay_asg_act_details;
10233
10234 hr_utility.trace('l_prepay_asg_action_id: '||l_prepay_asg_action_id);
10235 hr_utility.trace('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id);
10236 hr_utility.trace('l_prepay_effective_date: '||l_prepay_effective_date);
10237
10238 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
10239 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
10240
10241 --Fix for the bug 16409794 starts here
10242 OPEN csr_total_payment_new(l_prepay_asg_action_id);
10243 FETCH csr_total_payment_new INTO l_total_payment;
10244 CLOSE csr_total_payment_new;
10245 hr_utility.trace('l_total_payment: '||l_total_payment);
10246
10247 if (l_total_payment <> 0) then
10248 --Fix for the bug 16409794 ends here
10249
10250 l_start_date := l_asg_eff_start_date;
10251 l_end_date := g_effective_date;
10252
10253 hr_utility.set_location('Fetching person details ',10);
10254 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab(0));
10255 ---
10256 hr_utility.set_location('Fetching address details ',20);
10257 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
10258 l_archive_tab(0).assignment_id,
10259 g_effective_date,
10260 l_archive_tab(1));
10261 l_person_id := l_archive_tab(0).person_id;
10262
10263
10264 --****************************
10265 OPEN csr_pay_act_details(l_last_asg_action_id);
10266 FETCH csr_pay_act_details INTO l_payroll_pact_id;
10267 CLOSE csr_pay_act_details;
10268
10269
10270
10271 hr_utility.trace('l_asg_id: ' ||l_asg_id);
10272 hr_utility.trace('l_person_id: ' ||l_person_id);
10273 hr_utility.trace('g_pre_pact_id: ' ||g_pre_pact_id);
10274 hr_utility.trace('l_asg_eff_start_date: ' ||l_asg_eff_start_date);
10275 hr_utility.trace('g_start_year: ' ||g_start_year);
10276 hr_utility.trace('g_end_year: ' ||g_end_year);
10277
10278 l_tab_counter := 0;
10279 l_tab_proc_counter := 0;
10280 l_tab_not_proc_counter := 0;
10281 l_archive_det1_counter := 0;
10282 l_archive_det2_counter := 0;
10283 /*l_archive_det1_counter_local := 0;
10284 l_archive_det2_counter_local := 0;*/
10285 -- l_single_payroll_run_exists := 'N';
10286
10287 i_1 := -1;
10288 i_2 := -1;
10289 hr_utility.trace('g_first_fps_run_date: ' ||g_first_fps_run_date);
10290 hr_utility.trace('l_first_fps_eff_date: ' ||l_first_fps_eff_date);
10291
10292 l_single_payroll_run_exists := 1;
10293 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);
10294 FETCH csr_aggr_all_payroll_actions
10295 INTO l_cur_asg_action_id,
10296 l_cur_last_effective_date;
10297
10298 --Raising Exception for the current assignment
10299 if (csr_aggr_all_payroll_actions%NOTFOUND) then
10300 hr_utility.trace('Current Assignment is already processed in an earlier FPS run. Hence, not processing now.');
10301 populate_run_msg(p_assactid, 'Current Assignment '|| l_assignment_number ||' is already processed in an earlier FPS run. Hence, not processing now.','W');
10302 fnd_file.put_line (fnd_file.LOG,'Current Assignment '|| l_assignment_number ||' is already processed in an earlier FPS run. Hence, not processing now.');
10303 raise already_processed;
10304 end if;
10305 --
10306 hr_utility.trace('l_single_payroll_run_exists start point: ' ||l_single_payroll_run_exists);
10307 hr_utility.trace('l_cur_asg_action_id ' ||l_cur_asg_action_id);
10308
10309 l_payroll_asg_acts(l_tab_counter) := l_cur_asg_action_id;
10310 begin
10311 select ppa.payroll_action_id into l_oth_min_pre_pay_id from
10312 pay_action_interlocks pai,
10313 pay_payroll_actions ppa,
10314 pay_assignment_actions paa
10315 where
10316 pai.locked_action_id = l_cur_asg_action_id
10317 and pai.locking_action_id = paa.assignment_action_id
10318 and ppa.payroll_action_id = paa.payroll_action_id
10319 and ppa.action_type in ('P','U');
10320 exception
10321 when others then
10322 hr_utility.trace('error : ' || sqlerrm);
10323 hr_utility.trace('Pre pay is not run for the l_cur_asg_action_id :-' ||l_cur_asg_action_id);
10324 l_oth_min_pre_pay_id := g_pre_pact_id;
10325 end;
10326 hr_utility.trace('l_oth_min_pre_pay_id: ' ||l_oth_min_pre_pay_id);
10327
10328 hr_utility.trace('l_tab_counter: ' ||l_tab_counter);
10329 hr_utility.trace('l_payroll_asg_acts(l_tab_counter): ' ||l_payroll_asg_acts(l_tab_counter));
10330 l_tab_counter := l_tab_counter + 1;
10331
10332 l_proc_in_prepay(l_tab_proc_counter) := l_cur_asg_action_id;
10333 hr_utility.trace('l_tab_proc_counter: ' ||l_tab_proc_counter);
10334 hr_utility.trace('l_proc_in_prepay(l_tab_proc_counter): ' ||l_proc_in_prepay(l_tab_proc_counter));
10335 l_tab_proc_counter := l_tab_proc_counter + 1;
10336
10337 OPEN csr_aggr_min_act_id(l_person_id, l_oth_min_pre_pay_id,g_effective_date);
10338 FETCH csr_aggr_min_act_id
10339 INTO l_asg_act_count,
10340 l_aggr_min_act_id;
10341 CLOSE csr_aggr_min_act_id;
10342
10343 hr_utility.trace('l_asg_act_count: ' ||l_asg_act_count);
10344 hr_utility.trace('l_aggr_min_act_id: ' ||l_aggr_min_act_id);
10345
10346 --if (l_asg_act_count > 1) then
10347 if (l_asg_act_count > 1) and (l_cur_asg_action_id > l_aggr_min_act_id) then
10348 l_cur_asg_action_id := l_aggr_min_act_id;
10349 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
10350 end if;
10351
10352 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
10353 hr_utility.trace('l_cur_last_effective_date: ' ||l_cur_last_effective_date);
10354 loop
10355 hr_utility.trace('Entered Main Loop ');
10356 EXIT WHEN csr_aggr_all_payroll_actions%NOTFOUND;
10357 --prepayment run check starts here
10358 hr_utility.trace('Before csr_aggr_sequence_id');
10359 OPEN csr_chk_prepayment_run(l_cur_asg_action_id);
10360 FETCH csr_chk_prepayment_run
10361 INTO l_chk_prepayment_run;
10362 hr_utility.trace('l_chk_prepayment_run: ' ||l_chk_prepayment_run);
10363 CLOSE csr_chk_prepayment_run;
10364
10365 if(l_chk_prepayment_run is null or l_chk_prepayment_run = 0)then
10366 --raise prepayment error
10367
10368 OPEN csr_asg_num(l_cur_asg_action_id, l_cur_last_effective_date);
10369 FETCH csr_asg_num INTO l_assignment_number;
10370 CLOSE csr_asg_num;
10371
10372 hr_utility.set_location('Pre payment is not run for asg action id: '|| l_cur_asg_action_id,999);
10373 populate_run_msg(p_assactid, ' Pre payment is not run for the assignment '||l_assignment_number||' (asg action id: '|| l_cur_asg_action_id||')');
10374 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||')');
10375 raise error_found;
10376
10377 --prepayment run check ends here
10378 else
10379
10380 hr_utility.trace('Before csr_aggr_sequence_id');
10381 OPEN csr_aggr_sequence_id(l_cur_asg_action_id);
10382 FETCH csr_aggr_sequence_id
10383 INTO l_aggr_sequence_id;
10384
10385 hr_utility.trace('l_aggr_sequence_id: ' ||l_aggr_sequence_id);
10386 CLOSE csr_aggr_sequence_id;
10387
10388 if (l_asg_act_count > 1) then
10389 if (l_prepay_master_counter = 1) then
10390 OPEN csr_aggr_master_id(l_cur_asg_action_id);
10391 FETCH csr_aggr_master_id
10392 INTO l_payroll_master_asgactid;
10393 CLOSE csr_aggr_master_id;
10394 else
10395 l_payroll_master_asgactid := l_payroll_master_asgactid;
10396 end if;
10397 l_prepay_master_counter := l_prepay_master_counter + 1;
10398 end if;
10399
10400 hr_utility.trace('Before csr_aggr_locking_asg_act_id');
10401
10402 OPEN csr_aggr_locking_asg_act_id(l_person_id, l_aggr_sequence_id);
10403 FETCH csr_aggr_locking_asg_act_id
10404 INTO l_aggr_locking_asg_act_id;
10405 hr_utility.trace('l_aggr_locking_asg_act_id: ' ||l_aggr_locking_asg_act_id);
10406
10407 l_payroll_asg_acts(l_tab_counter) := l_cur_asg_action_id;
10408 hr_utility.trace('l_tab_counter: ' ||l_tab_counter);
10409 hr_utility.trace('l_payroll_asg_acts(l_tab_counter): ' ||l_payroll_asg_acts(l_tab_counter));
10410 l_tab_counter := l_tab_counter + 1;
10411
10412 hr_utility.trace('l_prepay_asg_action_id: ' ||l_prepay_asg_action_id);
10413 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
10414
10415 OPEN csr_get_asg_id(l_cur_asg_action_id);
10416 FETCH csr_get_asg_id
10417 INTO l_cur_asg_id;
10418 CLOSE csr_get_asg_id;
10419
10420 l_processed_in_prepayment := 'N';
10421 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
10422 hr_utility.trace('l_prepay_asg_action_id: ' ||l_prepay_asg_action_id);
10423 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
10424 hr_utility.trace('l_payroll_master_asgactid: ' ||l_payroll_master_asgactid);
10425
10426 OPEN csr_processed_in_prepayment(l_prepay_asg_action_id, l_cur_asg_action_id, l_payroll_master_asgactid);
10427 FETCH csr_processed_in_prepayment
10428 INTO l_processed_in_prepayment;
10429
10430 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
10431
10432 --Fix for the bug 16409794 starts here
10433 l_fps_action_exists := 'N';
10434 OPEN csr_fps_action_exists(l_cur_asg_id,g_payroll_action_id);
10435 FETCH csr_fps_action_exists
10436 INTO l_fps_action_exists;
10437 CLOSE csr_fps_action_exists;
10438
10439 if (l_fps_action_exists = 'Y') then
10440 --Fix for the bug 16409794 ends here
10441
10442 -- get the assignment action id for the current assginment id.
10443 select paa.assignment_action_id into l_assact_id from pay_assignment_actions paa
10444 where paa.payroll_action_id = g_payroll_action_id
10445 and paa.assignment_id = l_cur_asg_id;
10446
10447 if (nvl(l_processed_in_prepayment, 'N') <> 'Y') then
10448
10449 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
10450 l_not_proc_in_prepay(l_tab_not_proc_counter) := l_cur_asg_action_id;
10451 hr_utility.trace('l_tab_not_proc_counter: ' ||l_tab_not_proc_counter);
10452 hr_utility.trace('l_not_proc_in_prepay(l_tab_not_proc_counter): ' ||l_not_proc_in_prepay(l_tab_not_proc_counter));
10453 l_tab_not_proc_counter := l_tab_not_proc_counter + 1;
10454
10455 --Fetching assignments details for FPS
10456 hr_utility.set_location('Fetching Assignment details ',30);
10457 hr_utility.trace('l_asg_eff_start_date: ' ||l_asg_eff_start_date);
10458 hr_utility.trace('g_effective_date: ' ||g_effective_date);
10459 hr_utility.trace('p_assactid: ' ||p_assactid);
10460 hr_utility.trace('l_last_asg_action_id: ' ||l_last_asg_action_id);
10461 --l_archive_det1_counter := l_archive_det1_counter + 1;
10462 --l_archive_det2_counter := l_archive_det2_counter + 1;
10463
10464 open chk_processed_in_prepay(l_cur_asg_action_id);
10465 fetch chk_processed_in_prepay into l_cur_asg_pre_pay_act_id;
10466 close chk_processed_in_prepay;
10467
10468 open csr_prepay_payrol_act(l_cur_asg_pre_pay_act_id);
10469 fetch csr_prepay_payrol_act into l_cur_prepay_payroll_action_id;
10470 close csr_prepay_payrol_act;
10471
10472 hr_utility.set_location('l_cur_asg_action_id: '||l_cur_asg_action_id,999);
10473 hr_utility.set_location('l_cur_asg_pre_pay_act_id: '||l_cur_asg_pre_pay_act_id,999);
10474 hr_utility.set_location('l_cur_prepay_payroll_action_id: '||l_cur_prepay_payroll_action_id,999);
10475 hr_utility.set_location('l_person_id: '||l_person_id,999);
10476 hr_utility.set_location('g_effective_date: '||g_effective_date,999);
10477
10478 l_bacs_payment_exists := 'N';
10479
10480 OPEN csr_bacs_payment_exists (l_cur_prepay_payroll_action_id,l_cur_asg_pre_pay_act_id);
10481 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
10482 CLOSE csr_bacs_payment_exists;
10483
10484 hr_utility.set_location('l_bacs_payment_exists: '||l_bacs_payment_exists,999);
10485 hr_utility.trace('Fetching HASH Code Inside if');
10486 l_hash_code := NULL;
10487
10488 /*
10489 Below we are calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS for any other prepayment.
10490 This may be needed incase if the Prepayment is run prior to 30 days from sysdate.
10491 All Prepayments ran within 30 days are already processed in Range_Cursor to generate the HASH CODE.
10492 */
10493
10494 BEGIN
10495 IF (l_bacs_payment_exists = 'Y') THEN
10496 hr_utility.trace('Before calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS from Archive');
10497 l_dummy := PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS(l_cur_prepay_payroll_action_id, 'FPS');
10498 hr_utility.trace('After calling PAY_GB_FPS_NI_AND_OTHERS.FPS_BACS_PREPROCESS from Archive');
10499 --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);
10500 l_hash_code := pay_gb_fps_ni_and_others.fetch_hash_fps_per (l_cur_prepay_payroll_action_id, l_person_id,l_large_bacs_payment,l_bacs_large_asg_id);
10501 ELSE
10502 l_hash_code := NULL;
10503 END IF;
10504 EXCEPTION
10505 WHEN others THEN
10506 populate_run_msg (p_assactid,'Hash error1 '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
10507 fnd_file.put_line (fnd_file.log,'Hash error1 '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
10508 raise_application_error(-20001,'Hash error1 '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
10509 END;
10510
10511 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
10512 hr_utility.trace('l_hash_code: '||l_hash_code);
10513 ---
10514
10515 OPEN csr_total_payment (l_cur_asg_pre_pay_act_id);
10516 FETCH csr_total_payment INTO l_total_payment;
10517 CLOSE csr_total_payment;
10518
10519 hr_utility.trace('l_total_payment: '||l_total_payment);
10520 hr_utility.trace('l_bacs_large_asg_id: '||l_bacs_large_asg_id);
10521 hr_utility.trace('l_cur_asg_id: '||l_cur_asg_id);
10522
10523 if l_bacs_large_asg_id <> l_cur_asg_id then
10524 l_large_bacs_payment := 0;
10525 end if;
10526 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
10527 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
10528
10529 l_archive_asg_det1 := fetch_fps_aggr_asg_det1(l_asg_eff_start_date,
10530 g_effective_date,
10531 p_assactid,
10532 l_cur_asg_action_id,
10533 'Y',
10534 l_archive_tab(0),
10535 l_archive_tab_det1(l_archive_det1_counter));
10536
10537 l_archive_tab_det1(l_archive_det1_counter).assignment_id := l_cur_asg_id;
10538 l_archive_tab_det1(l_archive_det1_counter).action_info_category := 'GB_RTI_FPS_ASG_DET1';
10539 hr_utility.trace('l_archive_det1_counter: ' ||l_archive_det1_counter);
10540 hr_utility.trace('l_archive_det2_counter: ' ||l_archive_det2_counter);
10541
10542 hr_utility.set_location('Assignment Hash Code to archive record5',30);
10543 l_archive_tab_det1(l_archive_det1_counter).act_info28 := l_hash_code;
10544 -- fetch assignment details 2 related to balances.
10545 l_archive_tab_det2(l_archive_det2_counter).assignment_id := l_cur_asg_id;
10546 l_archive_tab_det2(l_archive_det2_counter).action_info_category := 'GB_RTI_FPS_ASG_DET2';
10547 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));
10548
10549 if (l_archive_asg_det1 and l_archive_asg_det2) then
10550
10551 select count(*)
10552 into l_rec_count
10553 from PAY_GB_FPS_DETAILS
10554 where ASSIGNMENT_ID = l_asg_id
10555 and PERSON_ID = l_person_id
10556 and PAYROLL_ASG_ACT_ID = l_cur_asg_action_id;
10557
10558 if l_rec_count = 0 then
10559 hr_utility.set_location('1 inserting',999);
10560 hr_utility.set_location('1 l_cur_asg_id: '||l_cur_asg_id,999);
10561 hr_utility.set_location('1 p_assactid: '||p_assactid,999);
10562 hr_utility.set_location('1 l_cur_asg_action_id: '||l_cur_asg_action_id,999);
10563 hr_utility.set_location('1 inserting',999);
10564
10565 OPEN csr_aggr_max_act_id(l_person_id, l_cur_prepay_payroll_action_id,g_effective_date);
10566 FETCH csr_aggr_max_act_id
10567 INTO l_asact_count_prepayed,
10568 l_aggr_max_act_id;
10569 CLOSE csr_aggr_max_act_id;
10570
10571 hr_utility.trace('l_asact_count_prepayed: ' ||l_asact_count_prepayed);
10572 hr_utility.trace('l_aggr_max_act_id: ' ||l_aggr_max_act_id);
10573
10574 l_report_det1_det2_flag := 'N';
10575
10576 if (l_cur_asg_action_id = l_aggr_max_act_id) then
10577 l_report_det1_det2_flag := 'Y';
10578 hr_utility.trace('l_report_det1_det2_flag: ' ||l_report_det1_det2_flag);
10579 end if;
10580
10581 -- archive the pre pay asg act id
10582 l_archive_tab_det1(l_archive_det1_counter).act_info27 := 'Y';
10583 l_archive_tab_det1(l_archive_det1_counter).act_info29 := l_cur_prepay_payroll_action_id||','||l_cur_asg_action_id;
10584 l_archive_tab_det2(l_archive_det2_counter).act_info29 := l_cur_prepay_payroll_action_id||','||l_cur_asg_action_id;
10585 l_archive_tab_det1(l_archive_det1_counter).act_info30 := l_report_det1_det2_flag;
10586 l_archive_tab_det2(l_archive_det2_counter).act_info30 := l_report_det1_det2_flag;
10587
10588 /* -- lock the pre payments action id with current fps assignment action id
10589 begin
10590 hr_nonrun_asact.insint(p_assactid, l_cur_asg_pre_pay_act_id);
10591 exception
10592 when dup_val_on_index then
10593 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
10594 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_cur_asg_pre_pay_act_id,60);
10595 end;
10596 */
10597 INSERT
10598 INTO PAY_GB_FPS_DETAILS
10599 (
10600 ASSIGNMENT_ID,
10601 PERSON_ID,
10602 FPS_ASG_ACT_ID,
10603 FPS_PAY_ACT_ID,
10604 FPS_EFFECTIVE_DATE,
10605 PREPAY_ASG_ACT_ID,
10606 PREPAY_PAY_ACT_ID,
10607 PREPAY_EFFECTIVE_DATE,
10608 PAYROLL_ASG_ACT_ID,
10609 PAYROLL_PAY_ACT_ID,
10610 PAYROLL_EFFECTIVE_DATE
10611 )
10612 VALUES
10613 (
10614 l_cur_asg_id,
10615 l_person_id,
10616 l_assact_id,
10617 g_payroll_action_id,
10618 g_fps_effective_date,
10619 l_cur_asg_pre_pay_act_id,
10620 l_cur_prepay_payroll_action_id,
10621 l_prepay_effective_date,
10622 l_cur_asg_action_id,
10623 l_payroll_pact_id,
10624 l_last_effective_date
10625 );
10626
10627 end if;
10628 end if;
10629 l_ni_emp_run := 0;
10630 -- for ni balances
10631 pay_gb_fps_ni_and_others.get_ni_bal_paye_aggr_for_asg(l_cur_asg_id,
10632 l_cur_asg_action_id,
10633 p_ni_a_balance,
10634 p_ni_b_balance,
10635 p_ni_c_balance,
10636 p_ni_d_balance,
10637 p_ni_e_balance,
10638 p_ni_j_balance,
10639 p_ni_l_balance);
10640 IF (p_ni_a_balance.act_info1 IS NOT NULL and p_ni_a_balance.assignment_id = l_cur_asg_id) THEN
10641 IF already_a = -1 THEN
10642 i_1 := i_1 +1;
10643 already_a := i_1;
10644 END IF;
10645
10646 l_archive_tab_ni_det(already_a).assignment_id := l_cur_asg_id;
10647 l_archive_tab_ni_det(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
10648 l_archive_tab_ni_det(already_a).act_info1 := p_ni_a_balance.act_info1;
10649 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;
10650 l_archive_tab_ni_det(already_a).act_info3 := p_ni_a_balance.act_info3;
10651 l_archive_tab_ni_det(already_a).act_info4 := p_ni_a_balance.act_info4;
10652 l_archive_tab_ni_det(already_a).act_info5 := p_ni_a_balance.act_info5;
10653 l_archive_tab_ni_det(already_a).act_info6 := p_ni_a_balance.act_info6;
10654 l_archive_tab_ni_det(already_a).act_info7 := p_ni_a_balance.act_info7;
10655 l_archive_tab_ni_det(already_a).act_info8 := p_ni_a_balance.act_info8;
10656 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;
10657 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;
10658 l_ni_emp_run := l_ni_emp_run + p_ni_a_balance.act_info10;
10659 l_archive_tab_ni_det(already_a).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10660
10661 END IF;
10662 -- For Category B
10663 IF (p_ni_b_balance.act_info1 IS NOT NULL and p_ni_b_balance.assignment_id = l_cur_asg_id) THEN
10664 IF already_b = -1 THEN
10665 i_1 := i_1 +1;
10666 already_b := i_1;
10667 END IF;
10668 l_archive_tab_ni_det(already_b).assignment_id := l_cur_asg_id;
10669 l_archive_tab_ni_det(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
10670 l_archive_tab_ni_det(already_b).act_info1 := p_ni_b_balance.act_info1;
10671 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;
10672 l_archive_tab_ni_det(already_b).act_info3 := p_ni_b_balance.act_info3;
10673 l_archive_tab_ni_det(already_b).act_info4 := p_ni_b_balance.act_info4;
10674 l_archive_tab_ni_det(already_b).act_info5 := p_ni_b_balance.act_info5;
10675 l_archive_tab_ni_det(already_b).act_info6 := p_ni_b_balance.act_info6;
10676 l_archive_tab_ni_det(already_b).act_info7 := p_ni_b_balance.act_info7;
10677 l_archive_tab_ni_det(already_b).act_info8 := p_ni_b_balance.act_info8;
10678 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;
10679 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;
10680 l_ni_emp_run := l_ni_emp_run + p_ni_b_balance.act_info10;
10681 l_archive_tab_ni_det(already_b).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10682 END IF;
10683 -- For Category C
10684 IF (p_ni_c_balance.act_info1 IS NOT NULL and p_ni_c_balance.assignment_id = l_cur_asg_id) THEN
10685 IF already_c = -1 THEN
10686 i_1 := i_1 +1;
10687 already_c := i_1;
10688 END IF;
10689 l_archive_tab_ni_det(already_c).assignment_id := l_cur_asg_id;
10690 l_archive_tab_ni_det(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
10691 l_archive_tab_ni_det(already_c).act_info1 := p_ni_c_balance.act_info1;
10692 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;
10693 l_archive_tab_ni_det(already_c).act_info3 := p_ni_c_balance.act_info3;
10694 l_archive_tab_ni_det(already_c).act_info4 := p_ni_c_balance.act_info4;
10695 l_archive_tab_ni_det(already_c).act_info5 := p_ni_c_balance.act_info5;
10696 l_archive_tab_ni_det(already_c).act_info6 := p_ni_c_balance.act_info6;
10697 l_archive_tab_ni_det(already_c).act_info7 := p_ni_c_balance.act_info7;
10698 l_archive_tab_ni_det(already_c).act_info8 := p_ni_c_balance.act_info8;
10699 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;
10700 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;
10701 l_ni_emp_run := l_ni_emp_run + p_ni_c_balance.act_info10;
10702 l_archive_tab_ni_det(already_c).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10703 END IF;
10704 --For Category D
10705 IF (p_ni_d_balance.act_info1 IS NOT NULL and p_ni_d_balance.assignment_id = l_cur_asg_id) THEN
10706 IF already_d = -1 THEN
10707 i_1 := i_1 +1;
10708 already_d := i_1;
10709 END IF;
10710 l_archive_tab_ni_det(already_d).assignment_id := l_cur_asg_id;
10711 l_archive_tab_ni_det(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
10712 l_archive_tab_ni_det(already_d).act_info1 := p_ni_d_balance.act_info1;
10713 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;
10714 l_archive_tab_ni_det(already_d).act_info3 := p_ni_d_balance.act_info3;
10715 l_archive_tab_ni_det(already_d).act_info4 := p_ni_d_balance.act_info4;
10716 l_archive_tab_ni_det(already_d).act_info5 := p_ni_d_balance.act_info5;
10717 l_archive_tab_ni_det(already_d).act_info6 := p_ni_d_balance.act_info6;
10718 l_archive_tab_ni_det(already_d).act_info7 := p_ni_d_balance.act_info7;
10719 l_archive_tab_ni_det(already_d).act_info8 := p_ni_d_balance.act_info8;
10720 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;
10721 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;
10722 l_ni_emp_run := l_ni_emp_run + p_ni_d_balance.act_info10;
10723 l_archive_tab_ni_det(already_d).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10724 END IF;
10725 -- For Category E
10726 IF (p_ni_e_balance.act_info1 IS NOT NULL and p_ni_e_balance.assignment_id = l_cur_asg_id) THEN
10727 IF already_e = -1 THEN
10728 i_1 := i_1 +1;
10729 already_e := i_1;
10730 END IF;
10731 l_archive_tab_ni_det(already_e).assignment_id := l_cur_asg_id;
10732 l_archive_tab_ni_det(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
10733 l_archive_tab_ni_det(already_e).act_info1 := p_ni_e_balance.act_info1;
10734 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;
10735 l_archive_tab_ni_det(already_e).act_info3 := p_ni_e_balance.act_info3;
10736 l_archive_tab_ni_det(already_e).act_info4 := p_ni_e_balance.act_info4;
10737 l_archive_tab_ni_det(already_e).act_info5 := p_ni_e_balance.act_info5;
10738 l_archive_tab_ni_det(already_e).act_info6 := p_ni_e_balance.act_info6;
10739 l_archive_tab_ni_det(already_e).act_info7 := p_ni_e_balance.act_info7;
10740 l_archive_tab_ni_det(already_e).act_info8 := p_ni_e_balance.act_info8;
10741 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;
10742 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;
10743 l_ni_emp_run := l_ni_emp_run + p_ni_e_balance.act_info10;
10744 l_archive_tab_ni_det(already_e).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10745 END IF;
10746 -- For Category J
10747 IF (p_ni_j_balance.act_info1 IS NOT NULL and p_ni_j_balance.assignment_id = l_cur_asg_id) THEN
10748 IF already_j = -1 THEN
10749 i_1 := i_1+1;
10750 already_j := i_1;
10751 END IF;
10752 l_archive_tab_ni_det(already_j).assignment_id := l_cur_asg_id;
10753 l_archive_tab_ni_det(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
10754 l_archive_tab_ni_det(already_j).act_info1 := p_ni_j_balance.act_info1;
10755 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;
10756 l_archive_tab_ni_det(already_j).act_info3 := p_ni_j_balance.act_info3;
10757 l_archive_tab_ni_det(already_j).act_info4 := p_ni_j_balance.act_info4;
10758 l_archive_tab_ni_det(already_j).act_info5 := p_ni_j_balance.act_info5;
10759 l_archive_tab_ni_det(already_j).act_info6 := p_ni_j_balance.act_info6;
10760 l_archive_tab_ni_det(already_j).act_info7 := p_ni_j_balance.act_info7;
10761 l_archive_tab_ni_det(already_j).act_info8 := p_ni_j_balance.act_info8;
10762 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;
10763 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;
10764 l_ni_emp_run := l_ni_emp_run + p_ni_j_balance.act_info10;
10765 l_archive_tab_ni_det(already_j).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10766 END IF;
10767 -- For Category L
10768 IF (p_ni_l_balance.act_info1 IS NOT NULL and p_ni_l_balance.assignment_id = l_cur_asg_id) THEN
10769 IF already_l = -1 THEN
10770 i_1 := i_1+1;
10771 already_l := i_1;
10772 END IF;
10773 l_archive_tab_ni_det(already_l).assignment_id := l_cur_asg_id;
10774 l_archive_tab_ni_det(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
10775 l_archive_tab_ni_det(already_l).act_info1 := p_ni_l_balance.act_info1;
10776 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;
10777 l_archive_tab_ni_det(already_l).act_info3 := p_ni_l_balance.act_info3;
10778 l_archive_tab_ni_det(already_l).act_info4 := p_ni_l_balance.act_info4;
10779 l_archive_tab_ni_det(already_l).act_info5 := p_ni_l_balance.act_info5;
10780 l_archive_tab_ni_det(already_l).act_info6 := p_ni_l_balance.act_info6;
10781 l_archive_tab_ni_det(already_l).act_info7 := p_ni_l_balance.act_info7;
10782 l_archive_tab_ni_det(already_l).act_info8 := p_ni_l_balance.act_info8;
10783 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;
10784 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;
10785 l_ni_emp_run := l_ni_emp_run + p_ni_l_balance.act_info10;
10786 l_archive_tab_ni_det(already_l).act_info11 := l_cur_prepay_payroll_action_id||','||l_aggr_max_act_id;
10787 END IF;
10788 --end ni balances
10789 ni_contrib_1 := 0;
10790 ni_contrib_ytd_1 := 0;
10791 FOR k IN 0..i_1
10792 LOOP
10793 hr_utility.trace('k_paye_agg:' || k);
10794 IF l_archive_tab_ni_det(k).act_info10 IS NOT NULL THEN
10795 ni_contrib_1 := NVL(ni_contrib_1,0) + l_archive_tab_ni_det(k).act_info10;
10796 ni_contrib_ytd_1 := NVL(ni_contrib_ytd_1,0) + l_archive_tab_ni_det(k).act_info8;
10797 END IF;
10798 END LOOP;
10799
10800 hr_utility.trace('l_ni_emp_run' ||l_ni_emp_run);
10801 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info8' ||l_archive_tab_det2(l_archive_det2_counter).act_info8);
10802 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info16' ||l_archive_tab_det2(l_archive_det2_counter).act_info16);
10803 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info17' ||l_archive_tab_det2(l_archive_det2_counter).act_info17);
10804 hr_utility.trace('l_non_bacs_payment' ||l_non_bacs_payment);
10805
10806 -- Derive the fields 58B and 59
10807 -- 58B
10808 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
10809 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
10810 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
10811 - NVL(l_ni_emp_run,0) -- NI
10812 + l_non_bacs_payment;
10813 -- 59
10814 l_archive_tab_det2(l_archive_det2_counter).act_info9 := NVL(l_archive_tab_det2(l_archive_det2_counter).act_info9,0)
10815 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
10816 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
10817 - NVL(l_ni_emp_run,0) -- NI
10818 + NVL(l_archive_tab_det2(l_archive_det2_counter).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
10819 l_archive_tab_det2(l_archive_det2_counter).act_info5 := NVL(ni_contrib_ytd_1,0);
10820 l_archive_tab_det2(l_archive_det2_counter).act_info24 := NVL(ni_contrib_1,0);
10821
10822
10823 --
10824 --Validations needs to be performed for each of the assignments separately
10825 hr_utility.set_location('In PAYE Aggr if Before Calling FPS validations', 10);
10826 pay_gb_rti_fps_validate.assignment_validations_aggr(p_assactid,
10827 p_effective_date,
10828 l_archive_tab,
10829 l_archive_tab_det1(l_archive_det1_counter),
10830 l_archive_tab_det2(l_archive_det2_counter),
10831 l_fps_etext_asg_temp_flag);
10832
10833 hr_utility.trace('l_fps_etext_asg_temp_flag' ||l_fps_etext_asg_temp_flag);
10834
10835 IF (l_fps_etext_asg_temp_flag = 'Y' or l_fps_val_err = TRUE) THEN -- If validation fails
10836 l_fps_val_err := TRUE;
10837 END IF;
10838
10839 hr_utility.set_location('In PAYE Aggr if After Calling FPS validations', 10);
10840
10841 --
10842 l_archive_det1_counter := l_archive_det1_counter +1;
10843 l_archive_det2_counter := l_archive_det2_counter + 1;
10844
10845 --
10846 else -- this else is for if (nvl(l_processed_in_prepayment, 'N') <> 'Y') then
10847
10848 hr_utility.trace('Entered Else part of l_processed_in_prepayment: ' ||l_processed_in_prepayment);
10849
10850 l_asg_act_processed_earlier := 0;
10851
10852 hr_utility.trace('l_person_id: ' ||l_person_id);
10853 hr_utility.trace('l_cur_asg_id: ' ||l_cur_asg_id);
10854 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
10855 hr_utility.trace('l_asg_id: ' ||l_asg_id);
10856
10857 OPEN csr_asg_act_processed_earlier(l_person_id, l_cur_asg_id, l_cur_asg_action_id);
10858 FETCH csr_asg_act_processed_earlier
10859 INTO l_asg_act_processed_earlier;
10860 CLOSE csr_asg_act_processed_earlier;
10861
10862 hr_utility.trace('l_asg_act_processed_earlier: ' ||l_asg_act_processed_earlier);
10863
10864 if (nvl(l_asg_act_processed_earlier,-1) <> 0 and l_retry_req_flag is not null ) then
10865 hr_utility.trace('Current Assignment is already processed in an earlier FPS run. Hence, not processing now.');
10866 l_archive_flag := 'N';
10867 populate_run_msg(p_assactid, ' Assignment ' || l_assignment_number|| ' is already processed.','W');
10868 fnd_file.put_line (fnd_file.LOG,' Assignment ' || l_assignment_number|| ' is already processed.');
10869
10870 else --this else is for nvl(l_asg_act_processed_earlier,-1) <> 0
10871
10872 hr_utility.trace('l_processed_in_prepayment: ' ||l_processed_in_prepayment);
10873 l_proc_in_prepay(l_tab_proc_counter) := l_cur_asg_action_id;
10874 hr_utility.trace('l_tab_proc_counter: ' ||l_tab_proc_counter);
10875 hr_utility.trace('l_proc_in_prepay(l_tab_proc_counter): ' ||l_proc_in_prepay(l_tab_proc_counter));
10876 l_tab_proc_counter := l_tab_proc_counter + 1;
10877
10878 --
10879 --Fetching assignments details for FPS
10880 hr_utility.set_location('Fetching Assignment details ',30);
10881
10882 open chk_processed_in_prepay(l_cur_asg_action_id);
10883 fetch chk_processed_in_prepay into l_cur_asg_pre_pay_act_id;
10884 close chk_processed_in_prepay;
10885
10886 hr_utility.trace('l_cur_asg_action_id: ' ||l_cur_asg_action_id);
10887 hr_utility.trace('l_cur_asg_pre_pay_act_id: ' ||l_cur_asg_pre_pay_act_id);
10888
10889 l_bacs_payment_exists := 'N';
10890
10891 OPEN csr_bacs_payment_exists (l_prepay_payroll_action_id,l_cur_asg_pre_pay_act_id);
10892 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
10893 CLOSE csr_bacs_payment_exists;
10894 hr_utility.trace('l_bacs_payment_exists: ' ||l_bacs_payment_exists);
10895 hr_utility.trace('Fetching HASH Code Inside else');
10896 l_hash_code := NULL;
10897 BEGIN
10898 IF (l_bacs_payment_exists = 'Y') THEN
10899 --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);
10900 l_hash_code := pay_gb_fps_ni_and_others.fetch_hash_fps_per (g_pre_pact_id, l_person_id,l_large_bacs_payment,l_bacs_large_asg_id);
10901 ELSE
10902 l_hash_code := NULL;
10903 END IF;
10904 EXCEPTION
10905 WHEN others THEN
10906 populate_run_msg (p_assactid,'Hash error '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
10907 fnd_file.put_line (fnd_file.log,'Hash error '|| sqlerrm|| ' for the assignment '|| l_assignment_number|| '.');
10908 raise_application_error(-20001,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
10909 END;
10910
10911 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
10912 hr_utility.trace('l_hash_code: '||l_hash_code);
10913 ---
10914 OPEN csr_total_payment (l_cur_asg_pre_pay_act_id);
10915 FETCH csr_total_payment INTO l_total_payment;
10916 CLOSE csr_total_payment;
10917
10918 hr_utility.trace('l_total_payment: '||l_total_payment);
10919 hr_utility.trace('l_bacs_large_asg_id: '||l_bacs_large_asg_id);
10920 hr_utility.trace('l_cur_asg_id: '||l_cur_asg_id);
10921
10922 if l_bacs_large_asg_id <> l_cur_asg_id then
10923 l_large_bacs_payment := 0;
10924 end if;
10925 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
10926 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
10927
10928 hr_utility.trace('l_asg_eff_start_date: ' ||l_asg_eff_start_date);
10929 hr_utility.trace('g_effective_date: ' ||g_effective_date);
10930 hr_utility.trace('p_assactid: ' ||p_assactid);
10931 hr_utility.trace('l_last_asg_action_id: ' ||l_last_asg_action_id);
10932 --l_archive_det1_counter := l_archive_det1_counter + 1;
10933 --l_archive_det2_counter := l_archive_det2_counter + 1;
10934 l_archive_asg_det1 := fetch_fps_aggr_asg_det1(l_asg_eff_start_date,
10935 g_effective_date,
10936 p_assactid,
10937 l_cur_asg_action_id,
10938 'Y',
10939 l_archive_tab(0),
10940 l_archive_tab_det1(l_archive_det1_counter));
10941 l_archive_tab_det1(l_archive_det1_counter).assignment_id := l_cur_asg_id;
10942
10943 hr_utility.trace('l_archive_det1_counter: ' ||l_archive_det1_counter);
10944 hr_utility.set_location('Assignment Hash Coode to archive record1',30);
10945 l_archive_tab_det1(l_archive_det1_counter).act_info28 := l_hash_code;
10946 l_archive_tab_det2(l_archive_det2_counter).action_info_category := 'GB_RTI_FPS_ASG_DET2';
10947 l_archive_tab_det2(l_archive_det2_counter).assignment_id := l_cur_asg_id;
10948
10949 hr_utility.trace('test l_archive_det2_counter: ' ||l_archive_det2_counter);
10950
10951 -- l_archive_asg_det2 := fetch_fps_asg_det2(p_assactid,l_asg_id,l_archive_tab_det2_local(l_archive_det2_counter_local));
10952 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));
10953 hr_utility.trace('2test l_archive_det2_counter: ' ||l_archive_det2_counter);
10954
10955 if (l_archive_asg_det1 and l_archive_asg_det2) then
10956
10957 select count(*)
10958 into l_rec_count
10959 from PAY_GB_FPS_DETAILS
10960 where ASSIGNMENT_ID = l_cur_asg_id
10961 and PERSON_ID = l_person_id
10962 and PAYROLL_ASG_ACT_ID = l_cur_asg_action_id;
10963
10964 if l_rec_count = 0 then
10965 hr_utility.set_location('1 inserting',999);
10966 hr_utility.set_location('1 l_cur_asg_id: '||l_cur_asg_id,999);
10967 hr_utility.set_location('1 p_assactid: '||p_assactid,999);
10968 hr_utility.set_location('1 l_cur_asg_action_id: '||l_cur_asg_action_id,999);
10969 hr_utility.set_location('1 inserting',999);
10970
10971 -- archive the pre pay asg act id
10972 -- l_archive_tab_det1(l_archive_det1_counter).act_info29 := l_prepay_payroll_action_id;
10973 -- l_archive_tab_det2(l_archive_det2_counter).act_info29 := l_prepay_payroll_action_id;
10974
10975 l_archive_tab_det1(l_archive_det1_counter).act_info29 := l_prepay_payroll_action_id||','||l_cur_asg_action_id;
10976 l_archive_tab_det2(l_archive_det2_counter).act_info29 := l_prepay_payroll_action_id||','||l_cur_asg_action_id;
10977
10978 hr_utility.set_location('l_person_id: '||l_person_id,999);
10979 hr_utility.set_location('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id,999);
10980 hr_utility.set_location('g_effective_date: '||g_effective_date,999);
10981
10982 OPEN csr_aggr_max_act_id(l_person_id, l_prepay_payroll_action_id,g_effective_date);
10983 FETCH csr_aggr_max_act_id
10984 INTO l_asact_count_prepayed,
10985 l_aggr_max_act_id;
10986 CLOSE csr_aggr_max_act_id;
10987
10988 hr_utility.trace('l_asact_count_prepayed: ' ||l_asact_count_prepayed);
10989 hr_utility.trace('l_aggr_max_act_id: ' ||l_aggr_max_act_id);
10990
10991 l_report_det1_det2_flag := 'N';
10992
10993 if (l_cur_asg_action_id = l_aggr_max_act_id) then
10994 l_report_det1_det2_flag := 'Y';
10995 hr_utility.trace('l_report_det1_det2_flag: ' ||l_report_det1_det2_flag);
10996 end if;
10997
10998 l_archive_tab_det1(l_archive_det1_counter).act_info27 := 'Y';
10999 l_archive_tab_det1(l_archive_det1_counter).act_info30 := l_report_det1_det2_flag;
11000 l_archive_tab_det2(l_archive_det2_counter).act_info30 := l_report_det1_det2_flag;
11001
11002 /* -- lock the pre payments action id with current fps assignment action id
11003 begin
11004 hr_nonrun_asact.insint(p_assactid, l_cur_asg_pre_pay_act_id);
11005 exception
11006 when dup_val_on_index then
11007 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
11008 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_cur_asg_pre_pay_act_id,60);
11009 end;
11010 */
11011 INSERT
11012 INTO PAY_GB_FPS_DETAILS
11013 (
11014 ASSIGNMENT_ID,
11015 PERSON_ID,
11016 FPS_ASG_ACT_ID,
11017 FPS_PAY_ACT_ID,
11018 FPS_EFFECTIVE_DATE,
11019 PREPAY_ASG_ACT_ID,
11020 PREPAY_PAY_ACT_ID,
11021 PREPAY_EFFECTIVE_DATE,
11022 PAYROLL_ASG_ACT_ID,
11023 PAYROLL_PAY_ACT_ID,
11024 PAYROLL_EFFECTIVE_DATE
11025 )
11026 VALUES
11027 (
11028 l_cur_asg_id,
11029 l_person_id,
11030 l_assact_id,
11031 g_payroll_action_id,
11032 g_fps_effective_date,
11033 l_cur_asg_pre_pay_act_id,
11034 l_prepay_payroll_action_id,
11035 l_prepay_effective_date,
11036 l_cur_asg_action_id,
11037 l_payroll_pact_id,
11038 l_last_effective_date
11039 );
11040
11041 end if;
11042 end if;
11043 l_ni_emp_run := 0;
11044 -- for ni balances
11045 pay_gb_fps_ni_and_others.get_ni_bal_paye_aggr_for_asg(l_cur_asg_id,
11046 l_cur_asg_action_id,
11047 p_ni_a_balance,
11048 p_ni_b_balance,
11049 p_ni_c_balance,
11050 p_ni_d_balance,
11051 p_ni_e_balance,
11052 p_ni_j_balance,
11053 p_ni_l_balance);
11054 IF (p_ni_a_balance.act_info1 IS NOT NULL and p_ni_a_balance.assignment_id = l_cur_asg_id) THEN
11055 IF already_a1 = -1 THEN
11056 i_2 := i_2 +1;
11057 already_a1 := i_2;
11058 END IF;
11059
11060 l_archive_tab_ni_det_1(already_a1).assignment_id := l_cur_asg_id;
11061 l_archive_tab_ni_det_1(already_a1).action_info_category := 'GB_RTI_FPS_NI_DET';
11062 l_archive_tab_ni_det_1(already_a1).act_info1 := p_ni_a_balance.act_info1;
11063 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;
11064 l_archive_tab_ni_det_1(already_a1).act_info3 := p_ni_a_balance.act_info3;
11065 l_archive_tab_ni_det_1(already_a1).act_info4 := p_ni_a_balance.act_info4;
11066 l_archive_tab_ni_det_1(already_a1).act_info5 := p_ni_a_balance.act_info5;
11067 l_archive_tab_ni_det_1(already_a1).act_info6 := p_ni_a_balance.act_info6;
11068 l_archive_tab_ni_det_1(already_a1).act_info7 := p_ni_a_balance.act_info7;
11069 l_archive_tab_ni_det_1(already_a1).act_info8 := p_ni_a_balance.act_info8;
11070 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;
11071 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;
11072 l_ni_emp_run := l_ni_emp_run + p_ni_a_balance.act_info10;
11073 l_archive_tab_ni_det_1(already_a1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11074
11075 END IF;
11076 -- For Category B
11077 IF (p_ni_b_balance.act_info1 IS NOT NULL and p_ni_b_balance.assignment_id = l_cur_asg_id) THEN
11078 IF already_b1 = -1 THEN
11079 i_2 := i_2 +1;
11080 already_b1 := i_2;
11081 END IF;
11082 l_archive_tab_ni_det_1(already_b1).assignment_id := l_cur_asg_id;
11083 l_archive_tab_ni_det_1(already_b1).action_info_category := 'GB_RTI_FPS_NI_DET';
11084 l_archive_tab_ni_det_1(already_b1).act_info1 := p_ni_b_balance.act_info1;
11085 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;
11086 l_archive_tab_ni_det_1(already_b1).act_info3 := p_ni_b_balance.act_info3;
11087 l_archive_tab_ni_det_1(already_b1).act_info4 := p_ni_b_balance.act_info4;
11088 l_archive_tab_ni_det_1(already_b1).act_info5 := p_ni_b_balance.act_info5;
11089 l_archive_tab_ni_det_1(already_b1).act_info6 := p_ni_b_balance.act_info6;
11090 l_archive_tab_ni_det_1(already_b1).act_info7 := p_ni_b_balance.act_info7;
11091 l_archive_tab_ni_det_1(already_b1).act_info8 := p_ni_b_balance.act_info8;
11092 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;
11093 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;
11094 l_ni_emp_run := l_ni_emp_run + p_ni_b_balance.act_info10;
11095 l_archive_tab_ni_det_1(already_b1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11096 END IF;
11097 -- For Category C
11098 IF (p_ni_c_balance.act_info1 IS NOT NULL and p_ni_c_balance.assignment_id = l_cur_asg_id) THEN
11099 IF already_c1 = -1 THEN
11100 i_2 := i_2 +1;
11101 already_c1 := i_2;
11102 END IF;
11103 l_archive_tab_ni_det_1(already_c1).assignment_id := l_cur_asg_id;
11104 l_archive_tab_ni_det_1(already_c1).action_info_category := 'GB_RTI_FPS_NI_DET';
11105 l_archive_tab_ni_det_1(already_c1).act_info1 := p_ni_c_balance.act_info1;
11106 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;
11107 l_archive_tab_ni_det_1(already_c1).act_info3 := p_ni_c_balance.act_info3;
11108 l_archive_tab_ni_det_1(already_c1).act_info4 := p_ni_c_balance.act_info4;
11109 l_archive_tab_ni_det_1(already_c1).act_info5 := p_ni_c_balance.act_info5;
11110 l_archive_tab_ni_det_1(already_c1).act_info6 := p_ni_c_balance.act_info6;
11111 l_archive_tab_ni_det_1(already_c1).act_info7 := p_ni_c_balance.act_info7;
11112 l_archive_tab_ni_det_1(already_c1).act_info8 := p_ni_c_balance.act_info8;
11113 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;
11114 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;
11115 l_ni_emp_run := l_ni_emp_run + p_ni_c_balance.act_info10;
11116 l_archive_tab_ni_det_1(already_c1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11117 END IF;
11118 --For Category D
11119
11120 -- IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
11121 IF (p_ni_d_balance.act_info1 IS NOT NULL and p_ni_d_balance.assignment_id = l_cur_asg_id) THEN
11122 IF already_d1 = -1 THEN
11123 i_2 := i_2 +1;
11124 already_d1 := i_2;
11125 END IF;
11126 l_archive_tab_ni_det_1(already_d1).assignment_id := l_cur_asg_id;
11127 l_archive_tab_ni_det_1(already_d1).action_info_category := 'GB_RTI_FPS_NI_DET';
11128 l_archive_tab_ni_det_1(already_d1).act_info1 := p_ni_d_balance.act_info1;
11129 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;
11130 l_archive_tab_ni_det_1(already_d1).act_info3 := p_ni_d_balance.act_info3;
11131 l_archive_tab_ni_det_1(already_d1).act_info4 := p_ni_d_balance.act_info4;
11132 l_archive_tab_ni_det_1(already_d1).act_info5 := p_ni_d_balance.act_info5;
11133 l_archive_tab_ni_det_1(already_d1).act_info6 := p_ni_d_balance.act_info6;
11134 l_archive_tab_ni_det_1(already_d1).act_info7 := p_ni_d_balance.act_info7;
11135 l_archive_tab_ni_det_1(already_d1).act_info8 := p_ni_d_balance.act_info8;
11136 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;
11137 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;
11138 l_ni_emp_run := l_ni_emp_run + p_ni_d_balance.act_info10;
11139 l_archive_tab_ni_det_1(already_d1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11140 END IF;
11141 -- For Category E
11142 IF (p_ni_e_balance.act_info1 IS NOT NULL and p_ni_e_balance.assignment_id = l_cur_asg_id) THEN
11143 IF already_e1 = -1 THEN
11144 i_2 := i_2 +1;
11145 already_e1 := i_2;
11146 END IF;
11147 l_archive_tab_ni_det_1(already_e1).assignment_id := l_cur_asg_id;
11148 l_archive_tab_ni_det_1(already_e1).action_info_category := 'GB_RTI_FPS_NI_DET';
11149 l_archive_tab_ni_det_1(already_e1).act_info1 := p_ni_e_balance.act_info1;
11150 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;
11151 l_archive_tab_ni_det_1(already_e1).act_info3 := p_ni_e_balance.act_info3;
11152 l_archive_tab_ni_det_1(already_e1).act_info4 := p_ni_e_balance.act_info4;
11153 l_archive_tab_ni_det_1(already_e1).act_info5 := p_ni_e_balance.act_info5;
11154 l_archive_tab_ni_det_1(already_e1).act_info6 := p_ni_e_balance.act_info6;
11155 l_archive_tab_ni_det_1(already_e1).act_info7 := p_ni_e_balance.act_info7;
11156 l_archive_tab_ni_det_1(already_e1).act_info8 := p_ni_e_balance.act_info8;
11157 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;
11158 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;
11159 l_ni_emp_run := l_ni_emp_run + p_ni_e_balance.act_info10;
11160 l_archive_tab_ni_det_1(already_e1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11161 END IF;
11162 -- For Category J
11163 IF (p_ni_j_balance.act_info1 IS NOT NULL and p_ni_j_balance.assignment_id = l_cur_asg_id) THEN
11164 IF already_j1 = -1 THEN
11165 i_2 := i_2+1;
11166 already_j1 := i_2;
11167 END IF;
11168 l_archive_tab_ni_det_1(already_j1).assignment_id := l_cur_asg_id;
11169 l_archive_tab_ni_det_1(already_j1).action_info_category := 'GB_RTI_FPS_NI_DET';
11170 l_archive_tab_ni_det_1(already_j1).act_info1 := p_ni_j_balance.act_info1;
11171 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;
11172 l_archive_tab_ni_det_1(already_j1).act_info3 := p_ni_j_balance.act_info3;
11173 l_archive_tab_ni_det_1(already_j1).act_info4 := p_ni_j_balance.act_info4;
11174 l_archive_tab_ni_det_1(already_j1).act_info5 := p_ni_j_balance.act_info5;
11175 l_archive_tab_ni_det_1(already_j1).act_info6 := p_ni_j_balance.act_info6;
11176 l_archive_tab_ni_det_1(already_j1).act_info7 := p_ni_j_balance.act_info7;
11177 l_archive_tab_ni_det_1(already_j1).act_info8 := p_ni_j_balance.act_info8;
11178 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;
11179 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;
11180 l_ni_emp_run := l_ni_emp_run + p_ni_j_balance.act_info10;
11181 l_archive_tab_ni_det_1(already_j1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11182 END IF;
11183 -- For Category L
11184 IF (p_ni_l_balance.act_info1 IS NOT NULL and p_ni_l_balance.assignment_id = l_cur_asg_id) THEN
11185 IF already_l1 = -1 THEN
11186 i_2 := i_2+1;
11187 already_l1 := i_2;
11188 END IF;
11189 l_archive_tab_ni_det_1(already_l1).assignment_id := l_cur_asg_id;
11190 l_archive_tab_ni_det_1(already_l1).action_info_category := 'GB_RTI_FPS_NI_DET';
11191 l_archive_tab_ni_det_1(already_l1).act_info1 := p_ni_l_balance.act_info1;
11192 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;
11193 l_archive_tab_ni_det_1(already_l1).act_info3 := p_ni_l_balance.act_info3;
11194 l_archive_tab_ni_det_1(already_l1).act_info4 := p_ni_l_balance.act_info4;
11195 l_archive_tab_ni_det_1(already_l1).act_info5 := p_ni_l_balance.act_info5;
11196 l_archive_tab_ni_det_1(already_l1).act_info6 := p_ni_l_balance.act_info6;
11197 l_archive_tab_ni_det_1(already_l1).act_info7 := p_ni_l_balance.act_info7;
11198 l_archive_tab_ni_det_1(already_l1).act_info8 := p_ni_l_balance.act_info8;
11199 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;
11200 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;
11201 l_ni_emp_run := l_ni_emp_run + p_ni_l_balance.act_info10;
11202 l_archive_tab_ni_det_1(already_l1).act_info11 := l_prepay_payroll_action_id||','||l_aggr_max_act_id;
11203 END IF;
11204 --end ni balances
11205 ni_contrib_2 := 0;
11206 ni_contrib_ytd_2 := 0;
11207 FOR k IN 0..i_2
11208 LOOP
11209 hr_utility.trace('k_paye_agg:' || k);
11210 IF l_archive_tab_ni_det_1(k).act_info10 IS NOT NULL THEN
11211 ni_contrib_2 := NVL(ni_contrib_2,0) + l_archive_tab_ni_det_1(k).act_info10;
11212 ni_contrib_ytd_2 := NVL(ni_contrib_ytd_2,0) + l_archive_tab_ni_det_1(k).act_info8;
11213 END IF;
11214 END LOOP;
11215
11216
11217 l_archive_tab_det2(l_archive_det2_counter).action_info_category := 'GB_RTI_FPS_ASG_DET2';
11218 l_archive_tab_det2(l_archive_det2_counter).assignment_id := l_cur_asg_id;
11219 hr_utility.trace('l_ni_emp_run' ||l_ni_emp_run);
11220 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info8' ||l_archive_tab_det2(l_archive_det2_counter).act_info8);
11221 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info16' ||l_archive_tab_det2(l_archive_det2_counter).act_info16);
11222 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).act_info17' ||l_archive_tab_det2(l_archive_det2_counter).act_info17);
11223 hr_utility.trace('l_non_bacs_payment' ||l_non_bacs_payment);
11224 -- Derive the fields 58B and 59
11225 -- 58B
11226 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
11227 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
11228 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
11229 - NVL(l_ni_emp_run,0) -- NI
11230 + l_non_bacs_payment;
11231 -- 59
11232 l_archive_tab_det2(l_archive_det2_counter).act_info9 := NVL(l_archive_tab_det2(l_archive_det2_counter).act_info9,0)
11233 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info16,0) -- Student Loan
11234 - NVL(l_archive_tab_det2(l_archive_det2_counter).act_info17,0) -- PAYE
11235 - NVL(l_ni_emp_run,0) -- NI
11236 + NVL(l_archive_tab_det2(l_archive_det2_counter).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
11237 l_archive_tab_det2(l_archive_det2_counter).act_info5 := NVL(ni_contrib_ytd_2,0);
11238 l_archive_tab_det2(l_archive_det2_counter).act_info24 := NVL(ni_contrib_2,0);
11239
11240
11241 hr_utility.trace('After Assigning local values to the actual contexts ');
11242 l_archive_det1_counter := l_archive_det1_counter + 1;
11243 l_archive_det2_counter := l_archive_det2_counter + 1;
11244
11245 end if; --nvl(l_asg_act_processed_earlier,-1) <> 0
11246
11247 end if; -- This end if is for if (nvl(l_processed_in_prepayment, 'N') <> 'Y') then
11248 end if; --if (l_fps_action_exists = 'Y') then --Fix for the bug 16409794
11249
11250 --l_archive_det1_counter_local := l_archive_det1_counter_local + 1;
11251 CLOSE csr_processed_in_prepayment;
11252 --
11253 CLOSE csr_aggr_locking_asg_act_id;
11254 hr_utility.trace('After csr_aggr_locking_asg_act_id');
11255 l_single_payroll_run_exists := l_single_payroll_run_exists + 1;
11256 hr_utility.trace('l_single_payroll_run_exists end point: ' ||l_single_payroll_run_exists);
11257 l_cur_asg_action_id := l_aggr_locking_asg_act_id;
11258 -- EXIT WHEN l_aggr_sequence_id > l_last_asg_action_id;
11259 EXIT WHEN nvl(l_aggr_locking_asg_act_id, l_last_asg_action_id + 1) > l_last_asg_action_id;
11260
11261 end if; --csr_chk_prepayment_run
11262 END LOOP;
11263 CLOSE csr_aggr_all_payroll_actions;
11264 --
11265 hr_utility.trace('l_single_payroll_run_exists: ' ||l_single_payroll_run_exists);
11266 if (l_single_payroll_run_exists = 1) then
11267
11268 l_asg_act_processed_earlier := 0;
11269
11270 --
11271 hr_utility.trace(' l_person_id: ' ||l_person_id);
11272 hr_utility.trace(' l_cur_asg_id: ' ||l_cur_asg_id);
11273 hr_utility.trace(' l_last_asg_action_id: ' ||l_last_asg_action_id);
11274 hr_utility.trace(' l_asg_id: ' ||l_asg_id);
11275
11276 -- OPEN csr_asg_act_processed_earlier(l_person_id, l_cur_asg_id, l_last_asg_action_id);
11277 OPEN csr_asg_act_processed_earlier(l_person_id, l_asg_id, l_last_asg_action_id);
11278 FETCH csr_asg_act_processed_earlier
11279 INTO l_asg_act_processed_earlier;
11280 CLOSE csr_asg_act_processed_earlier;
11281
11282 hr_utility.trace('l_asg_act_processed_earlier: ' ||l_asg_act_processed_earlier);
11283
11284 if (nvl(l_asg_act_processed_earlier,-1) <> 0 and l_retry_req_flag is null) then
11285 hr_utility.trace('Current Assignment is already processed in an earlier FPS run. Hence, not processing now.');
11286 l_archive_flag := 'N';
11287 populate_run_msg(p_assactid, ' Assignment ' || l_assignment_number|| ' is already processed.','W');
11288 fnd_file.put_line (fnd_file.LOG,' Assignment ' || l_assignment_number|| ' is already processed.');
11289
11290 end if;
11291
11292 end if;
11293
11294
11295
11296 hr_utility.trace('Aggregated new code ends here');
11297
11298 hr_utility.trace('l_archive_flag: ' ||l_archive_flag);
11299
11300 hr_utility.trace('Before l_archive_det1_counter' ||l_archive_det1_counter);
11301 hr_utility.trace('Before l_archive_det2_counter' ||l_archive_det2_counter);
11302 hr_utility.trace('Before l_archive_det1_counter.count' ||l_archive_tab_det1.count);
11303 hr_utility.trace('Before l_archive_det2_counter.count' ||l_archive_tab_det2.count);
11304
11305 --if (nvl(l_archive_flag,'Y') <> 'N') and (l_archive_tab_det1.count > 0 and l_archive_tab_det2.count > 0) then
11306 if (nvl(l_archive_flag,'Y') <> 'N') then
11307
11308 if ( (l_archive_det1_counter < l_archive_tab_det1.count and
11309 l_archive_tab_det1(l_archive_det1_counter).act_info3 is not null) or l_retry_req_flag is null) then
11310 null;
11311 hr_utility.set_location('inside if', 10);
11312 else
11313 hr_utility.set_location('inside else', 10);
11314 l_archive_det1_counter := l_archive_det1_counter - 1;
11315 l_archive_det2_counter := l_archive_det2_counter - 1;
11316 end if;
11317
11318 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter).assignment_id: ' ||l_archive_tab_det1(l_archive_det1_counter).assignment_id);
11319 hr_utility.trace('l_archive_tab_det2(l_archive_det2_counter).assignment_id: ' ||l_archive_tab_det2(l_archive_det2_counter).assignment_id);
11320 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter).act_info3: ' ||l_archive_tab_det1(l_archive_det1_counter).act_info3);
11321
11322 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab_det1(l_archive_det1_counter));
11323
11324 -- Validating fetched Person,Address,Assignment details for FPS
11325 hr_utility.set_location('Calling Person Address validations', 10);
11326 -- pay_gb_rti_fps_validate.person_address_validations(p_assactid, p_effective_date, l_archive_tab,l_per_addr_val_flag);
11327 hr_utility.trace('After l_archive_det1_counter' ||l_archive_det1_counter);
11328 hr_utility.trace('After l_archive_det2_counter' ||l_archive_det2_counter);
11329
11330 pay_gb_rti_fps_validate.person_addr_validations_aggr(p_assactid,
11331 p_effective_date,
11332 l_archive_tab,
11333 l_archive_tab_det1(l_archive_det1_counter),
11334 l_archive_tab_det2(l_archive_det2_counter),
11335 l_per_addr_val_flag);
11336
11337 hr_utility.trace('person address' ||l_per_addr_val_flag);
11338
11339 --l_per_addr_val_flag := 'N'; --for testing
11340
11341 IF l_per_addr_val_flag = 'Y' THEN -- If validation fails
11342 l_personaddr_val_err := TRUE;
11343 END IF;
11344
11345 hr_utility.set_location('Calling FPS validations', 10);
11346
11347 hr_utility.trace('l_archive_det1_counter' ||l_archive_det1_counter);
11348 hr_utility.trace('l_archive_det2_counter' ||l_archive_det2_counter);
11349
11350 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter)' ||l_archive_tab_det1(l_archive_det1_counter).act_info1);
11351 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter)' ||l_archive_tab_det1(l_archive_det1_counter).act_info2);
11352 hr_utility.trace('l_archive_tab_det1(l_archive_det1_counter)' ||l_archive_tab_det1(l_archive_det1_counter).act_info3);
11353
11354
11355 -- pay_gb_rti_fps_validate.assignment_validations(p_assactid, p_effective_date, l_archive_tab,l_fps_etext_asg_flag);
11356 pay_gb_rti_fps_validate.assignment_validations_aggr(p_assactid,
11357 p_effective_date,
11358 l_archive_tab,
11359 l_archive_tab_det1(l_archive_det1_counter),
11360 l_archive_tab_det2(l_archive_det2_counter),
11361 l_fps_etext_asg_flag);
11362
11363 --l_fps_etext_asg_flag := 'N'; --for testing
11364 hr_utility.trace('l_fps_etext_asg_flag' ||l_fps_etext_asg_flag);
11365
11366 IF l_fps_etext_asg_flag = 'Y' THEN -- If validation fails
11367 l_fps_val_err := TRUE;
11368 END IF;
11369
11370 hr_utility.set_location('After Calling FPS validations', 10);
11371 -- LOOP through all NIs
11372 --commented below For Loop whole code for testing
11373 FOR i_count IN 0..i_2
11374 LOOP
11375
11376 hr_utility.set_location ('Calling FPS NI validations: i_2', 10);
11377
11378 pay_gb_rti_fps_validate.ni_validations(p_assactid, p_effective_date, l_archive_tab_ni_det_1,i_count,l_fps_etext_ni_flag);
11379
11380 -- l_fps_etext_ni_flag := 'N'; --for testing
11381
11382 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
11383 l_fps_ni_val_err := TRUE;
11384 END IF;
11385 END LOOP;
11386
11387 FOR i_count IN 0..i_1
11388 LOOP
11389
11390 hr_utility.set_location ('Calling FPS NI validations : i_1', 10);
11391
11392 pay_gb_rti_fps_validate.ni_validations(p_assactid, p_effective_date, l_archive_tab_ni_det,i_count,l_fps_etext_ni_flag);
11393
11394 -- l_fps_etext_ni_flag := 'N'; --for testing
11395
11396 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
11397 l_fps_ni_val_err := TRUE;
11398 END IF;
11399 END LOOP;
11400
11401 hr_utility.set_location('After Calling FPS validations', 10);
11402
11403 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
11404 -- IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 THEN --for testing
11405 -- 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.
11406 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.
11407 THEN
11408 hr_utility.set_location('Validation failed, raise error.',999);
11409 fnd_file.put_line(fnd_file.LOG,'Not Archiving');
11410 raise error_found;
11411 ELSE
11412 hr_utility.set_location('Validation successful, archive data.',999);
11413 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
11414 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det1);
11415 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_det2);
11416 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_ni_det);
11417 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_ni_det_1);
11418 /* -- lock the pre payments action id with current fps assignment action id
11419 begin
11420 hr_nonrun_asact.insint(p_assactid, l_prepay_asg_action_id);
11421 exception
11422 when dup_val_on_index then
11423 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
11424 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_prepay_asg_action_id,60);
11425 end;
11426 */
11427
11428 /*select count(*)
11429 into l_rec_count
11430 from PAY_GB_FPS_DETAILS
11431 where ASSIGNMENT_ID = l_asg_id
11432 and PERSON_ID = l_person_id
11433 and PAYROLL_ASG_ACT_ID = l_last_asg_action_id;
11434
11435 if l_rec_count = 0 then
11436 hr_utility.set_location('2 inserting',999);
11437 hr_utility.set_location('2 l_asg_id: '||l_asg_id,999);
11438 hr_utility.set_location('2 p_assactid: '||p_assactid,999);
11439 hr_utility.set_location('2 l_last_asg_action_id: '||l_last_asg_action_id,999);
11440 hr_utility.set_location('2 inserting',999);
11441 INSERT
11442 INTO PAY_GB_FPS_DETAILS
11443 (
11444 ASSIGNMENT_ID,
11445 PERSON_ID,
11446 FPS_ASG_ACT_ID,
11447 FPS_PAY_ACT_ID,
11448 FPS_EFFECTIVE_DATE,
11449 PREPAY_ASG_ACT_ID,
11450 PREPAY_PAY_ACT_ID,
11451 PREPAY_EFFECTIVE_DATE,
11452 PAYROLL_ASG_ACT_ID,
11453 PAYROLL_PAY_ACT_ID,
11454 PAYROLL_EFFECTIVE_DATE
11455 )
11456 VALUES
11457 (
11458 l_asg_id,
11459 l_person_id,
11460 p_assactid,
11461 g_payroll_action_id,
11462 g_fps_effective_date,
11463 l_prepay_asg_action_id,
11464 l_prepay_payroll_action_id,
11465 l_prepay_effective_date,
11466 l_last_asg_action_id,
11467 l_payroll_pact_id,
11468 l_last_effective_date
11469 );
11470
11471 end if; */
11472 END IF;
11473 ELSE
11474 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
11475 raise error_found;
11476 END IF;
11477 end if; -- if l_archive_flag check
11478 end if; -- if (l_total_payment <> 0) then --Fix for the bug 16409794
11479 end if; -- if l_asg_action_id = p_assactid then
11480 --paye aggregation logic ends
11481 hr_utility.trace('Leaving Aggregated Code');
11482
11483 elsif l_per_ni_agg_flag = 'Y' then
11484 hr_utility.trace('Entered NI Only -Aggregated Code');
11485
11486 -- skip the NI aggregation logic if the current asg is not processed in this
11487 -- pre payments. This would be processed as part of max asg_act_id for this pre payment.
11488 open csr_rti_rpt_proc_prepay(l_asg_id,g_pre_pact_id);
11489 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag;
11490 close csr_rti_rpt_proc_prepay;
11491 hr_utility.trace('l_rti_ni_proc_flag: '|| l_rti_ni_proc_flag);
11492 if nvl(l_rti_ni_proc_flag,'N') = 'Y' then
11493 hr_utility.trace('Processing NI Only -Aggregated Code for l_asg_id: ' || l_asg_id);
11494 OPEN csr_last_payroll_action(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
11495 FETCH csr_last_payroll_action
11496 INTO l_last_asg_action_id,
11497 l_last_effective_date;
11498 CLOSE csr_last_payroll_action;
11499
11500 OPEN csr_prepay_asg_act_details(l_asg_id, g_pre_pact_id);
11501 FETCH csr_prepay_asg_act_details
11502 INTO l_prepay_asg_action_id,
11503 l_prepay_payroll_action_id,
11504 l_prepay_effective_date;
11505 CLOSE csr_prepay_asg_act_details;
11506
11507 -- Get the RTI NI Reporting Assignment and effective date.
11508 open csr_ni_rpt_flag(l_asg_id);
11509 fetch csr_ni_rpt_flag into l_ni_rti_flag,l_ni_rti_date;
11510 close csr_ni_rpt_flag;
11511
11512 hr_utility.trace('l_prepay_asg_action_id: '||l_prepay_asg_action_id);
11513 hr_utility.trace('l_prepay_payroll_action_id: '||l_prepay_payroll_action_id);
11514 hr_utility.trace('l_prepay_effective_date: '||l_prepay_effective_date);
11515
11516 hr_utility.trace('l_last_asg_action_id: '||l_last_asg_action_id);
11517 hr_utility.trace('l_last_effective_date: '||l_last_effective_date);
11518 hr_utility.trace('l_ni_rti_flag: '||l_ni_rti_flag);
11519 hr_utility.trace('l_ni_rti_date: '||l_ni_rti_date);
11520
11521 l_start_date := l_asg_eff_start_date;
11522 l_end_date := g_effective_date;
11523
11524 ---
11525
11526 l_bacs_payment_exists := 'N';
11527
11528 OPEN csr_bacs_payment_exists (l_prepay_payroll_action_id,l_prepay_asg_action_id);
11529 FETCH csr_bacs_payment_exists INTO l_bacs_payment_exists;
11530 CLOSE csr_bacs_payment_exists;
11531
11532 begin
11533 if (l_bacs_payment_exists = 'Y') then
11534 l_hash_code := PAY_GB_FPS_NI_AND_OTHERS.fetch_HASH_FPS_ASG(g_pre_pact_id, l_asg_id, l_large_bacs_payment);
11535 else
11536 l_hash_code := null;
11537 end if;
11538 exception
11539 when others then
11540 populate_run_msg(p_assactid, 'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
11541 fnd_file.put_line (fnd_file.LOG,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
11542 raise_application_error(-20001,'Hash error '||SQLERRM||' for the assignment ' || l_assignment_number|| '.');
11543 end;
11544
11545 hr_utility.trace('l_large_bacs_payment: '||l_large_bacs_payment);
11546 hr_utility.trace('l_hash_code: '||l_hash_code);
11547
11548 ---
11549
11550 OPEN csr_total_payment (l_prepay_asg_action_id);
11551 FETCH csr_total_payment INTO l_total_payment;
11552 CLOSE csr_total_payment;
11553
11554 hr_utility.trace('l_total_payment: '||l_total_payment);
11555
11556 l_non_bacs_payment := l_total_payment - l_large_bacs_payment;
11557
11558 hr_utility.trace('l_non_bacs_payment: '||l_non_bacs_payment);
11559 ---
11560 hr_utility.set_location('Fetching person details ',10);
11561 l_archive_person := fetch_person_rec(p_assactid, l_asg_eff_start_date,g_effective_date,l_archive_tab(0));
11562 ---
11563 hr_utility.set_location('Fetching address details ',20);
11564 l_archive_addr := fetch_address_rec(l_archive_tab(0).person_id,
11565 l_archive_tab(0).assignment_id,
11566 g_effective_date,
11567 l_archive_tab(1));
11568 l_person_id := l_archive_tab(0).person_id;
11569 --Fetching assignments details for FPS
11570 hr_utility.set_location('Fetching Assignment details ',30);
11571 l_archive_asg_det1 := fetch_fps_asg_det1(l_asg_eff_start_date,
11572 g_effective_date,
11573 p_assactid,
11574 l_last_asg_action_id,
11575 'Y',
11576 l_archive_tab(0),
11577 l_archive_tab(2),
11578 p_starter_set);
11579
11580 hr_utility.set_location('Assignment Hash Coode to archive record',30);
11581 l_archive_tab(2).act_info28 := l_hash_code;
11582
11583 --****************************
11584 i := 3;
11585 l_archive_tab(3).assignment_id := l_asg_id;
11586
11587 OPEN csr_all_payroll_actions(l_asg_id, g_pre_pact_id, l_asg_eff_start_date, g_start_year,g_end_year);
11588 LOOP
11589 FETCH csr_all_payroll_actions
11590 INTO l_last_asg_action_id,
11591 l_last_effective_date;
11592 EXIT
11593 WHEN csr_all_payroll_actions%NOTFOUND;
11594
11595
11596 pay_gb_fps_ni_and_others.get_ni_only_agg_bal_for_asg(l_last_asg_action_id,
11597 p_ni_a_balance,
11598 p_ni_b_balance,
11599 p_ni_c_balance,
11600 p_ni_d_balance,
11601 p_ni_e_balance,
11602 p_ni_j_balance,
11603 p_ni_l_balance);
11604
11605 IF (p_ni_a_balance.act_info1 IS NOT NULL) THEN
11606 IF already_a = -1 THEN
11607 i := i+1;
11608 already_a := i;
11609 END IF;
11610
11611 l_archive_tab(already_a).assignment_id := l_archive_tab(0).assignment_id;
11612 l_archive_tab(already_a).action_info_category := 'GB_RTI_FPS_NI_DET';
11613 l_archive_tab(already_a).act_info1 := p_ni_a_balance.act_info1;
11614 l_archive_tab(already_a).act_info2 := nvl(l_archive_tab(already_a).act_info2,0) + p_ni_a_balance.act_info2;
11615 l_archive_tab(already_a).act_info3 := p_ni_a_balance.act_info3;
11616 l_archive_tab(already_a).act_info4 := p_ni_a_balance.act_info4;
11617 l_archive_tab(already_a).act_info5 := p_ni_a_balance.act_info5;
11618 l_archive_tab(already_a).act_info6 := p_ni_a_balance.act_info6;
11619 l_archive_tab(already_a).act_info7 := p_ni_a_balance.act_info7;
11620 l_archive_tab(already_a).act_info8 := p_ni_a_balance.act_info8;
11621 l_archive_tab(already_a).act_info9 := NVL(l_archive_tab(already_a).act_info9 ,0) + p_ni_a_balance.act_info9;
11622 l_archive_tab(already_a).act_info10 := NVL(l_archive_tab(already_a).act_info10 ,0) + p_ni_a_balance.act_info10;
11623
11624 END IF;
11625 -- For Category B
11626 IF (p_ni_b_balance.act_info1 IS NOT NULL) THEN
11627 IF already_b = -1 THEN
11628 i := i+1;
11629 already_b := i;
11630 END IF;
11631 l_archive_tab(already_b).assignment_id := l_archive_tab(0).assignment_id;
11632 l_archive_tab(already_b).action_info_category := 'GB_RTI_FPS_NI_DET';
11633 l_archive_tab(already_b).act_info1 := p_ni_b_balance.act_info1;
11634 l_archive_tab(already_b).act_info2 := nvl(l_archive_tab(already_b).act_info2,0) + p_ni_b_balance.act_info2;
11635 l_archive_tab(already_b).act_info3 := p_ni_b_balance.act_info3;
11636 l_archive_tab(already_b).act_info4 := p_ni_b_balance.act_info4;
11637 l_archive_tab(already_b).act_info5 := p_ni_b_balance.act_info5;
11638 l_archive_tab(already_b).act_info6 := p_ni_b_balance.act_info6;
11639 l_archive_tab(already_b).act_info7 := p_ni_b_balance.act_info7;
11640 l_archive_tab(already_b).act_info8 := p_ni_b_balance.act_info8;
11641 l_archive_tab(already_b).act_info9 := NVL(l_archive_tab(already_b).act_info9 ,0) + p_ni_b_balance.act_info9;
11642 l_archive_tab(already_b).act_info10 := NVL(l_archive_tab(already_b).act_info10 ,0) + p_ni_b_balance.act_info10;
11643 END IF;
11644 -- For Category C
11645 IF (p_ni_c_balance.act_info1 IS NOT NULL) THEN
11646 IF already_c = -1 THEN
11647 i := i+1;
11648 already_c := i;
11649 END IF;
11650 l_archive_tab(already_c).assignment_id := l_archive_tab(0).assignment_id;
11651 l_archive_tab(already_c).action_info_category := 'GB_RTI_FPS_NI_DET';
11652 l_archive_tab(already_c).act_info1 := p_ni_c_balance.act_info1;
11653 l_archive_tab(already_c).act_info2 := nvl(l_archive_tab(already_c).act_info2,0) + p_ni_c_balance.act_info2;
11654 l_archive_tab(already_c).act_info3 := p_ni_c_balance.act_info3;
11655 l_archive_tab(already_c).act_info4 := p_ni_c_balance.act_info4;
11656 l_archive_tab(already_c).act_info5 := p_ni_c_balance.act_info5;
11657 l_archive_tab(already_c).act_info6 := p_ni_c_balance.act_info6;
11658 l_archive_tab(already_c).act_info7 := p_ni_c_balance.act_info7;
11659 l_archive_tab(already_c).act_info8 := p_ni_c_balance.act_info8;
11660 l_archive_tab(already_c).act_info9 := NVL(l_archive_tab(already_c).act_info9 ,0) + p_ni_c_balance.act_info9;
11661 l_archive_tab(already_c).act_info10 := NVL(l_archive_tab(already_c).act_info10 ,0) + p_ni_c_balance.act_info10;
11662 END IF;
11663 --For Category D
11664 IF (p_ni_d_balance.act_info1 IS NOT NULL) THEN
11665 IF already_d = -1 THEN
11666 i := i+1;
11667 already_d := i;
11668 END IF;
11669 l_archive_tab(already_d).assignment_id := l_archive_tab(0).assignment_id;
11670 l_archive_tab(already_d).action_info_category := 'GB_RTI_FPS_NI_DET';
11671 l_archive_tab(already_d).act_info1 := p_ni_d_balance.act_info1;
11672 l_archive_tab(already_d).act_info2 := nvl(l_archive_tab(already_d).act_info2,0) + p_ni_d_balance.act_info2;
11673 l_archive_tab(already_d).act_info3 := p_ni_d_balance.act_info3;
11674 l_archive_tab(already_d).act_info4 := p_ni_d_balance.act_info4;
11675 l_archive_tab(already_d).act_info5 := p_ni_d_balance.act_info5;
11676 l_archive_tab(already_d).act_info6 := p_ni_d_balance.act_info6;
11677 l_archive_tab(already_d).act_info7 := p_ni_d_balance.act_info7;
11678 l_archive_tab(already_d).act_info8 := p_ni_d_balance.act_info8;
11679 l_archive_tab(already_d).act_info9 := NVL(l_archive_tab(already_d).act_info9,0) + p_ni_d_balance.act_info9;
11680 l_archive_tab(already_d).act_info10 := NVL(l_archive_tab(already_d).act_info10,0) + p_ni_d_balance.act_info10;
11681 END IF;
11682 -- For Category E
11683 IF (p_ni_e_balance.act_info1 IS NOT NULL) THEN
11684 IF already_e = -1 THEN
11685 i := i+1;
11686 already_e := i;
11687 END IF;
11688 l_archive_tab(already_e).assignment_id := l_archive_tab(0).assignment_id;
11689 l_archive_tab(already_e).action_info_category := 'GB_RTI_FPS_NI_DET';
11690 l_archive_tab(already_e).act_info1 := p_ni_e_balance.act_info1;
11691 l_archive_tab(already_e).act_info2 := nvl(l_archive_tab(already_e).act_info2,0) + p_ni_e_balance.act_info2;
11692 l_archive_tab(already_e).act_info3 := p_ni_e_balance.act_info3;
11693 l_archive_tab(already_e).act_info4 := p_ni_e_balance.act_info4;
11694 l_archive_tab(already_e).act_info5 := p_ni_e_balance.act_info5;
11695 l_archive_tab(already_e).act_info6 := p_ni_e_balance.act_info6;
11696 l_archive_tab(already_e).act_info7 := p_ni_e_balance.act_info7;
11697 l_archive_tab(already_e).act_info8 := p_ni_e_balance.act_info8;
11698 l_archive_tab(already_e).act_info9 := NVL(l_archive_tab(already_e).act_info9 ,0) + p_ni_e_balance.act_info9;
11699 l_archive_tab(already_e).act_info10 := NVL(l_archive_tab(already_e).act_info10 ,0) + p_ni_e_balance.act_info10;
11700 END IF;
11701 -- For Category J
11702 IF (p_ni_j_balance.act_info1 IS NOT NULL) THEN
11703 IF already_j = -1 THEN
11704 i := i+1;
11705 already_j := i;
11706 END IF;
11707 l_archive_tab(already_j).assignment_id := l_archive_tab(0).assignment_id;
11708 l_archive_tab(already_j).action_info_category := 'GB_RTI_FPS_NI_DET';
11709 l_archive_tab(already_j).act_info1 := p_ni_j_balance.act_info1;
11710 l_archive_tab(already_j).act_info2 := nvl(l_archive_tab(already_j).act_info2,0) + p_ni_j_balance.act_info2;
11711 l_archive_tab(already_j).act_info3 := p_ni_j_balance.act_info3;
11712 l_archive_tab(already_j).act_info4 := p_ni_j_balance.act_info4;
11713 l_archive_tab(already_j).act_info5 := p_ni_j_balance.act_info5;
11714 l_archive_tab(already_j).act_info6 := p_ni_j_balance.act_info6;
11715 l_archive_tab(already_j).act_info7 := p_ni_j_balance.act_info7;
11716 l_archive_tab(already_j).act_info8 := p_ni_j_balance.act_info8;
11717 l_archive_tab(already_j).act_info9 := NVL(l_archive_tab(already_j).act_info9 ,0) + p_ni_j_balance.act_info9;
11718 l_archive_tab(already_j).act_info10 := NVL(l_archive_tab(already_j).act_info10 ,0) + p_ni_j_balance.act_info10;
11719 END IF;
11720 -- For Category L
11721 IF (p_ni_l_balance.act_info1 IS NOT NULL) THEN
11722 IF already_l = -1 THEN
11723 i := i+1;
11724 already_l := i;
11725 END IF;
11726 l_archive_tab(already_l).assignment_id := l_archive_tab(0).assignment_id;
11727 l_archive_tab(already_l).action_info_category := 'GB_RTI_FPS_NI_DET';
11728 l_archive_tab(already_l).act_info1 := p_ni_l_balance.act_info1;
11729 l_archive_tab(already_l).act_info2 := nvl(l_archive_tab(already_l).act_info2,0) + p_ni_l_balance.act_info2;
11730 l_archive_tab(already_l).act_info3 := p_ni_l_balance.act_info3;
11731 l_archive_tab(already_l).act_info4 := p_ni_l_balance.act_info4;
11732 l_archive_tab(already_l).act_info5 := p_ni_l_balance.act_info5;
11733 l_archive_tab(already_l).act_info6 := p_ni_l_balance.act_info6;
11734 l_archive_tab(already_l).act_info7 := p_ni_l_balance.act_info7;
11735 l_archive_tab(already_l).act_info8 := p_ni_l_balance.act_info8;
11736 l_archive_tab(already_l).act_info9 := NVL(l_archive_tab(already_l).act_info9 ,0) + p_ni_l_balance.act_info9;
11737 l_archive_tab(already_l).act_info10 := NVL(l_archive_tab(already_l).act_info10 ,0) + p_ni_l_balance.act_info10;
11738 END IF;
11739
11740 l_archive_asg_det2 := fetch_fps_asg_det2(l_last_asg_action_id,l_asg_id,l_archive_tab(3));
11741 hr_utility.trace('after det2');
11742 OPEN csr_pay_act_details(l_last_asg_action_id);
11743 FETCH csr_pay_act_details INTO l_payroll_pact_id;
11744 CLOSE csr_pay_act_details;
11745
11746 INSERT
11747 INTO PAY_GB_FPS_DETAILS
11748 (
11749 ASSIGNMENT_ID,
11750 PERSON_ID,
11751 FPS_ASG_ACT_ID,
11752 FPS_PAY_ACT_ID,
11753 FPS_EFFECTIVE_DATE,
11754 PREPAY_ASG_ACT_ID,
11755 PREPAY_PAY_ACT_ID,
11756 PREPAY_EFFECTIVE_DATE,
11757 PAYROLL_ASG_ACT_ID,
11758 PAYROLL_PAY_ACT_ID,
11759 PAYROLL_EFFECTIVE_DATE
11760 )
11761 VALUES
11762 (
11763 l_asg_id,
11764 l_person_id,
11765 p_assactid,
11766 g_payroll_action_id,
11767 g_fps_effective_date,
11768 l_prepay_asg_action_id,
11769 l_prepay_payroll_action_id,
11770 l_prepay_effective_date,
11771 l_last_asg_action_id,
11772 l_payroll_pact_id,
11773 l_last_effective_date
11774 );
11775
11776 END LOOP;
11777
11778 CLOSE csr_all_payroll_actions;
11779 hr_utility.trace('1');
11780 hr_utility.trace('i' || i);
11781
11782
11783
11784 FOR k IN 4..i
11785 LOOP
11786 hr_utility.trace('k:' || k);
11787 IF l_archive_tab(k).act_info10 IS NOT NULL THEN
11788 ni_contrib := NVL(ni_contrib,0) + l_archive_tab(k).act_info10;
11789 ni_contrib_ytd := NVL(ni_contrib_ytd,0) + l_archive_tab(k).act_info8;
11790 END IF;
11791 hr_utility.trace('k:before c_asg_act_id' || k);
11792 if l_archive_tab(k).act_info1 is not null then
11793 FOR c_asg_act_id in csr_asg_act_oth_asgs(l_asg_id)
11794 loop
11795 hr_utility.trace('c_asg_act_id' || c_asg_act_id.asg_act_id);
11796 hr_utility.trace('act_info2' || l_archive_tab(k).act_info2);
11797 hr_utility.trace('act_info1' || l_archive_tab(k).act_info1);
11798 --add_other_asg_ni_ytd(c_asg_act_id.asg_act_id, l_archive_tab(k));
11799 end loop;
11800 end if;
11801 END LOOP;
11802 /*
11803 FOR k IN 4..i
11804 LOOP
11805 IF l_archive_tab(i).act_info1 IS NOT NULL THEN
11806 l_archive_tab(i).act_info7 := NVL(l_archive_tab(3).act_info23,0);
11807 l_archive_tab(i).act_info8 := NVL(l_archive_tab(3).act_info4,0);
11808 l_archive_tab(i).act_info9 := NVL(ni_contrib,0);
11809 l_archive_tab(i).act_info10 := NVL(ni_contrib_ytd,0);
11810 END IF;
11811 END LOOP;
11812 */
11813 hr_utility.trace( 'value of i :' || i);
11814 hr_utility.trace('Assignment id : ' || l_asg_id);
11815 hr_utility.trace('ni_contrib : ' || ni_contrib);
11816 hr_utility.trace('l_archive_tab(3).act_info8 : ' || l_archive_tab(3).act_info8 );
11817 hr_utility.trace('l_archive_tab(3).act_info9 : ' || l_archive_tab(3).act_info9 );
11818
11819 -- Derive the fields 58B and 59
11820 -- 58B
11821 l_archive_tab(3).act_info8 := NVL(l_archive_tab(3).act_info8,0) -- Prev holds Total Deductions
11822 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
11823 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
11824 - NVL(ni_contrib,0) -- NI
11825 + l_non_bacs_payment;
11826 -- 59
11827 l_archive_tab(3).act_info9 := NVL(l_archive_tab(3).act_info9,0)
11828 - NVL(l_archive_tab(3).act_info16,0) -- Student Loan
11829 - NVL(l_archive_tab(3).act_info17,0) -- PAYE
11830 - NVL(ni_contrib,0) -- NI
11831 + NVL(l_archive_tab(3).act_info10,0); -- sum of all 'Benefits Taxed Through payroll%'
11832 l_archive_tab(3).act_info5 := NVL(ni_contrib_ytd,0);
11833 l_archive_tab(3).act_info24 := NVL(ni_contrib,0);
11834 l_archive_tab(3).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
11835 l_archive_tab(2).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
11836 -- get the max assingment action id prcessed in this prepayment
11837 -- get the YTD values for that assignment action id
11838 open csr_aggr_max_act_id(l_person_id,g_pre_pact_id,l_last_effective_date);
11839 fetch csr_aggr_max_act_id into l_count_asg,l_max_prepay_act_id;
11840 close csr_aggr_max_act_id;
11841
11842 pay_gb_fps_ni_and_others.get_ni_only_bal_rti_rpt(l_max_prepay_act_id,
11843 p_per_ni_a_balance,
11844 p_per_ni_b_balance,
11845 p_per_ni_c_balance,
11846 p_per_ni_d_balance,
11847 p_per_ni_e_balance,
11848 p_per_ni_j_balance,
11849 p_per_ni_l_balance);
11850 -----
11851 /*FOR l_asg_act_rec in csr_asg_in_prepay(l_person_id)
11852 loop
11853 pay_gb_fps_ni_and_others.get_ni_only_agg_bal_sum_asg(l_asg_act_rec.asg_act_id,
11854 p_per_ni_a_balance,
11855 p_per_ni_b_balance,
11856 p_per_ni_c_balance,
11857 p_per_ni_d_balance,
11858 p_per_ni_e_balance,
11859 p_per_ni_j_balance,
11860 p_per_ni_l_balance);
11861 end loop;
11862 */
11863 -- trace for customer
11864 hr_utility.trace('New Trace messages starts here : ');
11865 hr_utility.trace('p_per_ni_a_balance.assignment_id : ' || p_per_ni_a_balance.assignment_id);
11866 hr_utility.trace('p_per_ni_a_balance.act_info1 : ' || p_per_ni_a_balance.act_info1);
11867 hr_utility.trace('p_per_ni_a_balance.act_info2 : ' || p_per_ni_a_balance.act_info2);
11868 hr_utility.trace('p_per_ni_a_balance.act_info3 : ' || p_per_ni_a_balance.act_info3);
11869 hr_utility.trace('p_per_ni_a_balance.act_info4 : ' || p_per_ni_a_balance.act_info4);
11870 hr_utility.trace('p_per_ni_a_balance.act_info5 : ' || p_per_ni_a_balance.act_info5);
11871 hr_utility.trace('p_per_ni_a_balance.act_info6 : ' || p_per_ni_a_balance.act_info6);
11872 hr_utility.trace('p_per_ni_a_balance.act_info7 : ' || p_per_ni_a_balance.act_info7);
11873 hr_utility.trace('p_per_ni_a_balance.act_info8 : ' || p_per_ni_a_balance.act_info8);
11874 hr_utility.trace('p_per_ni_a_balance.act_info9 : ' || p_per_ni_a_balance.act_info9);
11875 hr_utility.trace('p_per_ni_a_balance.act_info10 : ' || p_per_ni_a_balance.act_info10);
11876 -----
11877 hr_utility.trace('p_per_ni_b_balance.assignment_id : ' || p_per_ni_b_balance.assignment_id);
11878 hr_utility.trace('p_per_ni_b_balance.act_info1 : ' || p_per_ni_b_balance.act_info1);
11879 hr_utility.trace('p_per_ni_b_balance.act_info2 : ' || p_per_ni_b_balance.act_info2);
11880 hr_utility.trace('p_per_ni_b_balance.act_info3 : ' || p_per_ni_b_balance.act_info3);
11881 hr_utility.trace('p_per_ni_b_balance.act_info4 : ' || p_per_ni_b_balance.act_info4);
11882 hr_utility.trace('p_per_ni_b_balance.act_info5 : ' || p_per_ni_b_balance.act_info5);
11883 hr_utility.trace('p_per_ni_b_balance.act_info6 : ' || p_per_ni_b_balance.act_info6);
11884 hr_utility.trace('p_per_ni_b_balance.act_info7 : ' || p_per_ni_b_balance.act_info7);
11885 hr_utility.trace('p_per_ni_b_balance.act_info8 : ' || p_per_ni_b_balance.act_info8);
11886 hr_utility.trace('p_per_ni_b_balance.act_info9 : ' || p_per_ni_b_balance.act_info9);
11887 hr_utility.trace('p_per_ni_b_balance.act_info10 : ' || p_per_ni_b_balance.act_info10);
11888 ---
11889 hr_utility.trace('p_per_ni_c_balance.assignment_id : ' || p_per_ni_c_balance.assignment_id);
11890 hr_utility.trace('p_per_ni_c_balance.act_info1 : ' || p_per_ni_c_balance.act_info1);
11891 hr_utility.trace('p_per_ni_c_balance.act_info2 : ' || p_per_ni_c_balance.act_info2);
11892 hr_utility.trace('p_per_ni_c_balance.act_info3 : ' || p_per_ni_c_balance.act_info3);
11893 hr_utility.trace('p_per_ni_c_balance.act_info4 : ' || p_per_ni_c_balance.act_info4);
11894 hr_utility.trace('p_per_ni_c_balance.act_info5 : ' || p_per_ni_c_balance.act_info5);
11895 hr_utility.trace('p_per_ni_c_balance.act_info6 : ' || p_per_ni_c_balance.act_info6);
11896 hr_utility.trace('p_per_ni_c_balance.act_info7 : ' || p_per_ni_c_balance.act_info7);
11897 hr_utility.trace('p_per_ni_c_balance.act_info8 : ' || p_per_ni_c_balance.act_info8);
11898 hr_utility.trace('p_per_ni_c_balance.act_info9 : ' || p_per_ni_c_balance.act_info9);
11899 hr_utility.trace('p_per_ni_c_balance.act_info10 : ' || p_per_ni_c_balance.act_info10);
11900 ---
11901 hr_utility.trace('p_per_ni_d_balance.assignment_id : ' || p_per_ni_d_balance.assignment_id);
11902 hr_utility.trace('p_per_ni_d_balance.act_info1 : ' || p_per_ni_d_balance.act_info1);
11903 hr_utility.trace('p_per_ni_d_balance.act_info2 : ' || p_per_ni_d_balance.act_info2);
11904 hr_utility.trace('p_per_ni_d_balance.act_info3 : ' || p_per_ni_d_balance.act_info3);
11905 hr_utility.trace('p_per_ni_d_balance.act_info4 : ' || p_per_ni_d_balance.act_info4);
11906 hr_utility.trace('p_per_ni_d_balance.act_info5 : ' || p_per_ni_d_balance.act_info5);
11907 hr_utility.trace('p_per_ni_d_balance.act_info6 : ' || p_per_ni_d_balance.act_info6);
11908 hr_utility.trace('p_per_ni_d_balance.act_info7 : ' || p_per_ni_d_balance.act_info7);
11909 hr_utility.trace('p_per_ni_d_balance.act_info8 : ' || p_per_ni_d_balance.act_info8);
11910 hr_utility.trace('p_per_ni_d_balance.act_info9 : ' || p_per_ni_d_balance.act_info9);
11911 hr_utility.trace('p_per_ni_d_balance.act_info10 : ' || p_per_ni_d_balance.act_info10);
11912
11913 ---
11914 hr_utility.trace('p_per_ni_e_balance.assignment_id : ' || p_per_ni_e_balance.assignment_id);
11915 hr_utility.trace('p_per_ni_e_balance.act_info1 : ' || p_per_ni_e_balance.act_info1);
11916 hr_utility.trace('p_per_ni_e_balance.act_info2 : ' || p_per_ni_e_balance.act_info2);
11917 hr_utility.trace('p_per_ni_e_balance.act_info3 : ' || p_per_ni_e_balance.act_info3);
11918 hr_utility.trace('p_per_ni_e_balance.act_info4 : ' || p_per_ni_e_balance.act_info4);
11919 hr_utility.trace('p_per_ni_e_balance.act_info5 : ' || p_per_ni_e_balance.act_info5);
11920 hr_utility.trace('p_per_ni_e_balance.act_info6 : ' || p_per_ni_e_balance.act_info6);
11921 hr_utility.trace('p_per_ni_e_balance.act_info7 : ' || p_per_ni_e_balance.act_info7);
11922 hr_utility.trace('p_per_ni_e_balance.act_info8 : ' || p_per_ni_e_balance.act_info8);
11923 hr_utility.trace('p_per_ni_e_balance.act_info9 : ' || p_per_ni_e_balance.act_info9);
11924 hr_utility.trace('p_per_ni_e_balance.act_info10 : ' || p_per_ni_e_balance.act_info10);
11925
11926
11927 ---
11928 hr_utility.trace('p_per_ni_j_balance.assignment_id : ' || p_per_ni_j_balance.assignment_id);
11929 hr_utility.trace('p_per_ni_j_balance.act_info1 : ' || p_per_ni_j_balance.act_info1);
11930 hr_utility.trace('p_per_ni_j_balance.act_info2 : ' || p_per_ni_j_balance.act_info2);
11931 hr_utility.trace('p_per_ni_j_balance.act_info3 : ' || p_per_ni_j_balance.act_info3);
11932 hr_utility.trace('p_per_ni_j_balance.act_info4 : ' || p_per_ni_j_balance.act_info4);
11933 hr_utility.trace('p_per_ni_j_balance.act_info5 : ' || p_per_ni_j_balance.act_info5);
11934 hr_utility.trace('p_per_ni_j_balance.act_info6 : ' || p_per_ni_j_balance.act_info6);
11935 hr_utility.trace('p_per_ni_j_balance.act_info7 : ' || p_per_ni_j_balance.act_info7);
11936 hr_utility.trace('p_per_ni_j_balance.act_info8 : ' || p_per_ni_j_balance.act_info8);
11937 hr_utility.trace('p_per_ni_j_balance.act_info9 : ' || p_per_ni_j_balance.act_info9);
11938 hr_utility.trace('p_per_ni_j_balance.act_info10 : ' || p_per_ni_j_balance.act_info10);
11939
11940
11941 ---
11942 hr_utility.trace('p_per_ni_l_balance.assignment_id : ' || p_per_ni_l_balance.assignment_id);
11943 hr_utility.trace('p_per_ni_l_balance.act_info1 : ' || p_per_ni_l_balance.act_info1);
11944 hr_utility.trace('p_per_ni_l_balance.act_info2 : ' || p_per_ni_l_balance.act_info2);
11945 hr_utility.trace('p_per_ni_l_balance.act_info3 : ' || p_per_ni_l_balance.act_info3);
11946 hr_utility.trace('p_per_ni_l_balance.act_info4 : ' || p_per_ni_l_balance.act_info4);
11947 hr_utility.trace('p_per_ni_l_balance.act_info5 : ' || p_per_ni_l_balance.act_info5);
11948 hr_utility.trace('p_per_ni_l_balance.act_info6 : ' || p_per_ni_l_balance.act_info6);
11949 hr_utility.trace('p_per_ni_l_balance.act_info7 : ' || p_per_ni_l_balance.act_info7);
11950 hr_utility.trace('p_per_ni_l_balance.act_info8 : ' || p_per_ni_l_balance.act_info8);
11951 hr_utility.trace('p_per_ni_l_balance.act_info9 : ' || p_per_ni_l_balance.act_info9);
11952 hr_utility.trace('p_per_ni_l_balance.act_info10 : ' || p_per_ni_l_balance.act_info10);
11953
11954
11955
11956 set_address_fields(l_archive_tab(1),l_archive_tab(0),l_archive_tab(2));
11957
11958 -- Validating fetched Person,Address,Assignment details for FPS
11959 hr_utility.set_location('Calling Person Address validations', 10);
11960 pay_gb_rti_fps_validate.person_address_validations(p_assactid, p_effective_date, l_archive_tab,l_per_addr_val_flag);
11961 hr_utility.trace('person address' ||l_per_addr_val_flag);
11962
11963 l_per_addr_val_flag := 'N'; --for testing
11964
11965 IF l_per_addr_val_flag = 'Y' THEN -- If validation fails
11966 l_personaddr_val_err := TRUE;
11967 END IF;
11968
11969 hr_utility.set_location('Calling FPS validations', 10);
11970 pay_gb_rti_fps_validate.assignment_validations(p_assactid, p_effective_date, l_archive_tab,l_fps_etext_asg_flag);
11971
11972 IF l_fps_etext_asg_flag = 'Y' THEN -- If validation fails
11973 l_fps_val_err := TRUE;
11974 END IF;
11975
11976 hr_utility.set_location('After Calling FPS validations', 10);
11977 -- LOOP through all NIs
11978 --commented below For Loop whole code for testing
11979 FOR i_count IN 4..i
11980 LOOP
11981
11982 hr_utility.set_location ('C7alling FPS NI validations', 10);
11983
11984 pay_gb_rti_fps_validate.ni_validations(p_assactid, p_effective_date, l_archive_tab,i_count,l_fps_etext_ni_flag);
11985
11986 -- l_fps_etext_ni_flag := 'N'; --for testing
11987
11988 IF l_fps_etext_ni_flag = 'Y' THEN -- If validation fails
11989 l_fps_ni_val_err := TRUE;
11990 END IF;
11991 END LOOP;
11992
11993
11994 hr_utility.set_location('After Calling FPS validations', 10);
11995
11996 -- IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 AND l_archive_asg_det2 THEN
11997 IF l_archive_person AND l_archive_addr AND l_archive_asg_det1 THEN --for testing
11998 -- 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.
11999 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.
12000 THEN
12001 hr_utility.set_location('Validation failed, raise error.',999);
12002 fnd_file.put_line(fnd_file.LOG,'Not Archiving');
12003 raise error_found;
12004 ELSE
12005 hr_utility.set_location('Validation successful, archive data.',999);
12006 if l_ni_rti_flag = 'Y' then
12007 ni_agg_ytd_sum(l_archive_tab,i,p_per_ni_a_balance,p_per_ni_b_balance,
12008 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);
12009 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
12010 /* moved this code to action creation
12011 -- lock the pre payments action id with current fps assignment action id
12012 begin
12013 hr_nonrun_asact.insint(p_assactid, l_prepay_asg_action_id);
12014 exception
12015 when dup_val_on_index then
12016 hr_utility.set_location(sqlcode || '-' || sqlerrm,60);
12017 hr_utility.set_location('Skip locking for retry.Locking action id-'||p_assactid || ' Locked action id-' || l_prepay_asg_action_id,60);
12018 end; */
12019 else
12020 hr_utility.set_location('Non NI Reporting asg: ' || l_asg_id, 999);
12021
12022 hr_utility.set_location('Retrieve the ni reporting assignment for ' || l_asg_id ,1000);
12023
12024 open csr_get_ni_rpt_asg(l_asg_id);
12025 fetch csr_get_ni_rpt_asg into l_ni_rpt_asg_id,l_ni_rpt_date;
12026 close csr_get_ni_rpt_asg;
12027 hr_utility.set_location('l_ni_rpt_asg_id: ' || l_ni_rpt_asg_id || ' l_ni_rpt_date: ' || l_ni_rpt_date,1000);
12028 hr_utility.set_location('NI reporting assignment for the assignment: ' || l_asg_id || 'is ' ||l_ni_rpt_asg_id ,1000);
12029
12030 if l_ni_rpt_asg_id is not null then
12031 hr_utility.set_location(' l_ni_rpt_asg_id:' || l_ni_rpt_asg_id || ' g_pre_pact_id:' ||g_pre_pact_id ,1000);
12032 -- check whether the RTI reporting assignment is processed in the current prepayment.
12033 open csr_rti_rpt_proc_prepay(l_ni_rpt_asg_id,g_pre_pact_id);
12034 fetch csr_rti_rpt_proc_prepay into l_rti_ni_proc_flag_1;
12035 close csr_rti_rpt_proc_prepay;
12036 hr_utility.set_location('l_rti_ni_proc_flag_1: ' || l_rti_ni_proc_flag_1,1000);
12037 -- check whether the current asg_act_id is the max id
12038 -- so that RTI asg is archived only ones when multiple non-rti asgs exists.
12039 OPEN csr_ni_aggr_max_act_id (l_person_id, g_pre_pact_id);
12040 FETCH csr_ni_aggr_max_act_id INTO l_ni_aggr_max_act_id;
12041 CLOSE csr_ni_aggr_max_act_id;
12042 hr_utility.set_location('l_ni_aggr_max_act_id: ' || l_ni_aggr_max_act_id ,1000);
12043 hr_utility.set_location('l_last_asg_action_id: ' || l_last_asg_action_id ,1000);
12044 if l_ni_aggr_max_act_id = l_last_asg_action_id and nvl(l_rti_ni_proc_flag_1,'N') <> 'Y' then
12045 -- 0. Get the RTI NI Reporting assignment for the period.
12046 -- 1. Store the NI YTD values of current Assignment in a temp variable.
12047 -- 2. Make the NI YTD values 0.
12048 -- 3. Get all the Previously archived values of NI Reporting assignment.
12049 -- 4. Make the Period balances 0.
12050 -- 5. Replace the NI YTD with the current processing NI YTD values.
12051 -- 6. Archive this record.
12052 hr_utility.set_location('fetching the rti rpt asg values: ',1000);
12053 open csr_ni_asg_last_archived(l_ni_rpt_asg_id);
12054 fetch csr_ni_asg_last_archived BULK COLLECT INTO l_archive_tab_ni_rpt;
12055 close csr_ni_asg_last_archived;
12056 record_count := l_archive_tab_ni_rpt.count;
12057 hr_utility.set_location('record_count: ' || record_count ,1000);
12058 if l_archive_tab_ni_rpt.count > 0 then
12059
12060 for counter in 1..l_archive_tab_ni_rpt.count
12061 loop
12062 if l_archive_tab_ni_rpt(counter).action_info_category = 'GB_RTI_FPS_ASG_DET2' then
12063 -- set 0 for other Run level balances in details 2 context.
12064 l_archive_tab_ni_rpt(counter).act_info6 := 0;
12065 l_archive_tab_ni_rpt(counter).act_info8 := 0;
12066 l_archive_tab_ni_rpt(counter).act_info9 := 0;
12067 l_archive_tab_ni_rpt(counter).act_info10 := 0;
12068 l_archive_tab_ni_rpt(counter).act_info11 := 0;
12069 l_archive_tab_ni_rpt(counter).act_info12 := 0;
12070 l_archive_tab_ni_rpt(counter).act_info13 := 0;
12071 l_archive_tab_ni_rpt(counter).act_info15 := 0;
12072 l_archive_tab_ni_rpt(counter).act_info16 := 0;
12073 l_archive_tab_ni_rpt(counter).act_info17 := 0;
12074 l_archive_tab_ni_rpt(counter).act_info23 := 0;
12075 l_archive_tab(counter).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
12076 end if;
12077 if l_archive_tab_ni_rpt(counter).action_info_category = 'GB_RTI_FPS_ASG_DET1' then
12078 l_archive_tab(counter).act_info29 := g_pre_pact_id||','||l_last_asg_action_id;
12079 end if;
12080 end loop;
12081 else --l_archive_tab_ni_rpt.count > 0
12082 /*open csr_get_latest_asg_action(l_ni_rpt_asg_id);
12083 fetch csr_get_latest_asg_action into l_ni_max_asg_act_id, l_ni_max_asg_act_date;
12084 close csr_get_latest_asg_action;
12085 */
12086 select paa.assignment_action_id into l_ni_rpt_assact_id from pay_assignment_actions paa
12087 where paa.payroll_action_id = g_payroll_action_id
12088 and paa.assignment_id = l_ni_rpt_asg_id;
12089 hr_utility.set_location('Calling get_ni_only_asg_details:',1000);
12090 get_ni_only_asg_details(l_ni_rpt_asg_id,
12091 l_archive_tab_ni_rpt(1),
12092 l_archive_tab_ni_rpt(2),
12093 l_ni_rpt_assact_id);
12094 -- after this make record_count := 2 as the next row in the table should store NI Values.
12095 record_count := 2;
12096 end if; --l_archive_tab_ni_rpt.count > 0
12097 hr_utility.set_location('p_per_ni_a_balance.act_info1: ' ||p_per_ni_a_balance.act_info1,1000);
12098 -- NI A
12099 if p_per_ni_a_balance.act_info1 is not null then
12100 record_count := record_count +1;
12101 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12102 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12103 l_archive_tab_ni_rpt(record_count).act_info1 := 'A';
12104 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12105 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;
12106 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;
12107 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;
12108 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;
12109 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;
12110 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;
12111 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12112 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12113 end if;
12114 hr_utility.set_location('record_count: ' || record_count ,1000);
12115 -- NI D
12116 hr_utility.set_location('p_per_ni_d_balance.act_info1: ' || p_per_ni_d_balance.act_info1 ,1000);
12117 if p_per_ni_d_balance.act_info1 is not null then
12118 record_count := record_count + 1;
12119 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12120 l_archive_tab_ni_rpt(record_count).act_info1 := 'D';
12121 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12122 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12123 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;
12124 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;
12125 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;
12126 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;
12127 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;
12128 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;
12129 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12130 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12131 end if;
12132 hr_utility.set_location('record_count: ' || record_count ,1000);
12133
12134 -- NI B
12135 hr_utility.set_location('p_per_ni_b_balance.act_info1: ' || p_per_ni_b_balance.act_info1 ,1000);
12136 if p_per_ni_b_balance.act_info1 is not null then
12137 record_count := record_count + 1;
12138 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12139 l_archive_tab_ni_rpt(record_count).act_info1 := 'B';
12140 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12141 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12142 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;
12143 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;
12144 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;
12145 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;
12146 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;
12147 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;
12148 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12149 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12150 end if;
12151 hr_utility.set_location('record_count: ' || record_count ,1000);
12152 -- NI C
12153 hr_utility.set_location('p_per_ni_c_balance.act_info1: ' || p_per_ni_c_balance.act_info1 ,1000);
12154 if p_per_ni_c_balance.act_info1 is not null then
12155 record_count := record_count + 1;
12156 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12157 l_archive_tab_ni_rpt(record_count).act_info1 := 'C';
12158 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12159 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12160 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;
12161 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;
12162 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;
12163 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;
12164 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;
12165 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;
12166 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12167 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12168 end if;
12169 hr_utility.set_location('record_count: ' || record_count ,1000);
12170
12171 -- NI E
12172 hr_utility.set_location('p_per_ni_e_balance.act_info1: ' || p_per_ni_e_balance.act_info1 ,1000);
12173 if p_per_ni_e_balance.act_info1 is not null then
12174 record_count := record_count + 1;
12175 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12176 l_archive_tab_ni_rpt(record_count).act_info1 := 'E';
12177 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12178 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12179 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;
12180 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;
12181 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;
12182 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;
12183 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;
12184 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;
12185 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12186 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12187 end if;
12188 hr_utility.set_location('record_count: ' || record_count ,1000);
12189
12190 -- NI J
12191 hr_utility.set_location('p_per_ni_j_balance.act_info1: ' || p_per_ni_j_balance.act_info1 ,1000);
12192 if p_per_ni_j_balance.act_info1 is not null then
12193 record_count := record_count + 1;
12194 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12195 l_archive_tab_ni_rpt(record_count).act_info1 := 'J';
12196 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12197 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12198 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;
12199 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;
12200 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;
12201 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;
12202 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;
12203 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;
12204 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12205 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12206 end if;
12207 hr_utility.set_location('record_count: ' || record_count ,1000);
12208
12209 -- NI L
12210 hr_utility.set_location('p_per_ni_l_balance.act_info1: ' || p_per_ni_l_balance.act_info1 ,1000);
12211 if p_per_ni_l_balance.act_info1 is not null then
12212 record_count := record_count + 1;
12213 l_archive_tab_ni_rpt(record_count).action_info_category := 'GB_RTI_FPS_NI_DET';
12214 l_archive_tab_ni_rpt(record_count).act_info1 := 'L';
12215 l_archive_tab_ni_rpt(record_count).assignment_id := l_ni_rpt_asg_id;
12216 l_archive_tab_ni_rpt(record_count).act_info2 := 0;
12217 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;
12218 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;
12219 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;
12220 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;
12221 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;
12222 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;
12223 l_archive_tab_ni_rpt(record_count).act_info9 := 0;
12224 l_archive_tab_ni_rpt(record_count).act_info10 := 0;
12225 end if;
12226 hr_utility.set_location('record_count: ' || record_count ,1000);
12227 /* else -- else for l_archive_tab_ni_rpt.count > 0
12228 -- get the latest prepayment and the payroll details.
12229 select * from pay_payroll_actions ppa,
12230 get_ni_only_asg_details(l_ni_rpt_asg_id,l_archive_tab_ni_rpt,
12231 end if; -- end if for l_archive_tab_ni_rpt.count > 0
12232 */
12233
12234 select paa.assignment_action_id into l_ni_rpt_assact_id from pay_assignment_actions paa
12235 where paa.payroll_action_id = g_payroll_action_id
12236 and paa.assignment_id = l_ni_rpt_asg_id;
12237 hr_utility.set_location('l_ni_rpt_assact_id: ' || l_ni_rpt_assact_id ,1000);
12238 -- insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
12239
12240
12241 insert_archive_row_agg(p_assactid, p_effective_date,l_archive_tab_ni_rpt);
12242 INSERT
12243 INTO PAY_GB_FPS_DETAILS
12244 (
12245 ASSIGNMENT_ID,
12246 PERSON_ID,
12247 FPS_ASG_ACT_ID,
12248 FPS_PAY_ACT_ID,
12249 FPS_EFFECTIVE_DATE,
12250 PREPAY_ASG_ACT_ID,
12251 PREPAY_PAY_ACT_ID,
12252 PREPAY_EFFECTIVE_DATE,
12253 PAYROLL_ASG_ACT_ID,
12254 PAYROLL_PAY_ACT_ID,
12255 PAYROLL_EFFECTIVE_DATE
12256 )
12257 VALUES
12258 (
12259 l_ni_rpt_asg_id,
12260 l_person_id,
12261 l_ni_rpt_assact_id,
12262 g_payroll_action_id,
12263 g_fps_effective_date,
12264 l_prepay_asg_action_id,
12265 l_prepay_payroll_action_id,
12266 l_prepay_effective_date,
12267 l_last_asg_action_id,
12268 l_payroll_pact_id,
12269 l_last_effective_date
12270 );
12271 end if; --l_ni_aggr_max_act_id = l_last_asg_action_id
12272 else
12273 hr_utility.set_location('No NI reporting assignment for the assignment: ' || l_asg_id ,1000);
12274 fnd_file.put_line(fnd_file.LOG,'No NI reporting assignment for the assignment: ' || l_asg_id);
12275 populate_run_msg(p_assactid, 'No NI reporting assignment for the assignment: '||l_assignment_number);
12276 raise error_found;
12277 end if; -- l_ni_rpt_asg_id is not null
12278 -- make the NI YTD to 0.
12279 FOR k IN 4..i
12280 LOOP
12281 if l_archive_tab(k).act_info1 is not null then
12282 hr_utility.trace('NON RPT act_info1' || l_archive_tab(k).act_info1);
12283 l_archive_tab(k).act_info3 := 0;
12284 l_archive_tab(k).act_info4 := 0;
12285 l_archive_tab(k).act_info5 := 0;
12286 l_archive_tab(k).act_info6 := 0;
12287 l_archive_tab(k).act_info7 := 0;
12288 l_archive_tab(k).act_info8 := 0;
12289 end if;
12290 END LOOP;
12291 insert_archive_row(p_assactid, p_effective_date,l_archive_tab);
12292 end if;
12293 END IF;
12294 ELSE
12295 hr_utility.set_location('Archiving Error - assignment action id ' || p_assactid ,999);
12296 raise error_found;
12297 END IF;
12298 /* else -- this else is for if l_ni_rti_flag = 'Y'
12299 g_ni_values(l_person_id).act_info_1 := l_archive_tab(i_count).act_info1;
12300 g_ni_values(l_person_id).act_info_2 := l_archive_tab(i_count).act_info2;
12301 g_ni_values(l_person_id).act_info_3 := l_archive_tab(i_count).act_info3;
12302 g_ni_values(l_person_id).act_info_4 := l_archive_tab(i_count).act_info4;
12303 g_ni_values(l_person_id).act_info_5 := l_archive_tab(i_count).act_info5;
12304 g_ni_values(l_person_id).act_info_6 := l_archive_tab(i_count).act_info6;
12305 g_ni_values(l_person_id).act_info_7 := l_archive_tab(i_count).act_info7;
12306 g_ni_values(l_person_id).act_info_8 := l_archive_tab(i_count).act_info8;
12307 g_ni_values(l_person_id).act_info_9 := l_archive_tab(i_count).act_info9;
12308 g_ni_values(l_person_id).act_info_10 := l_archive_tab(i_count).act_info10;
12309
12310 end if;
12311 */
12312 end if; --nvl(l_rti_ni_proc_flag,'N') = 'Y'
12313 end if; -- NI only Aggregation Logic ends here ; l_per_ni_agg_flag <> 'Y'
12314
12315
12316 hr_utility.set_location('Leaving: '||l_proc,999);
12317 end if; -- First Fps and First Fps Prepayment if ends
12318
12319 EXCEPTION
12320 WHEN error_found THEN
12321 reset_flag('GB_RTI_ASG_DETAILS',g_reset_flag_type, p_assactid);
12322 fnd_file.put_line(fnd_file.LOG,'Errors found while archiving data.');
12323 raise_application_error(-20001,'Errors found while archiving data.');
12324
12325 WHEN already_processed THEN
12326 fnd_file.put_line (fnd_file.LOG,'Current Assignment '|| l_assignment_number ||' is already processed in an earlier FPS run. Hence, not processing now.');
12327
12328 WHEN OTHERS THEN
12329 fnd_file.put_line(fnd_file.LOG,'An error encountered was - '||SQLERRM);
12330 raise_application_error(-20001,'An error encountered was - '||SQLERRM);
12331 END archive_code;
12332 --
12333 --
12334 PROCEDURE deinitialization_code
12335 (
12336 pactid IN NUMBER
12337 )
12338 IS
12339 l_proc CONSTANT VARCHAR2(50) := g_package || 'deinitialization_code';
12340 l_counter NUMBER;
12341 l_flag VARCHAR2(1);
12342 l_exp EXCEPTION;
12343 errbuf varchar2(100);
12344 retcode number;
12345 l_econ varchar2(100);
12346 l_person_count number :=0;
12347 l_error_flag VARCHAR2(1);
12348 CURSOR csr_is_etext_report
12349 IS
12350 SELECT report_type
12351 FROM pay_payroll_actions pact
12352 WHERE pact.payroll_action_id = pactid;
12353 l_is_etext_report VARCHAR2(50);
12354 l_request_id fnd_concurrent_requests.request_id%TYPE;
12355 xml_layout BOOLEAN;
12356
12357 -- Cursor to fetch Employer details
12358 CURSOR csr_payroll_details(pactid NUMBER)
12359 IS
12360 SELECT NVL(UPPER(hoi.org_information11),' ') sender_id,
12361 DECODE(SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TEST=') + 5,1) ,'N',' ','Y','1') test_indicator,
12362 fnd_number.number_to_canonical(pact.request_id) request_id,
12363 NVL(upper(SUBSTR(ltrim(hoi.org_information3),1,35)),' ') employer_name,
12364 NVL(upper(SUBSTR(ltrim(SUBSTR(hoi.org_information1,4,11),'/'),1,10)),' ') tax_ref_no,
12365 lpad(SUBSTR(hoi.ORG_INFORMATION1,0,instr(hoi.ORG_INFORMATION1,'/')-1),3,0) tax_office_no,
12366 DECODE(PAY_GB_EOY_MAGTAPE.get_payroll_version, ' ', '0', PAY_GB_EOY_MAGTAPE.get_payroll_version) payroll_ver,
12367 (lpad(SUBSTR(hoi.ORG_INFORMATION6,0,instr(hoi.ORG_INFORMATION6,'P')-1),3,0)
12368 || 'P'
12369 || SUBSTR(hoi.ORG_INFORMATION6,instr(hoi.ORG_INFORMATION6,'P') +1,1)
12370 || lpad(SUBSTR(hoi.ORG_INFORMATION6,instr(hoi.ORG_INFORMATION6,'P')+2,LENGTH(hoi.ORG_INFORMATION6)-3-(instr(hoi.ORG_INFORMATION6,'P')-1)),7,0)
12371 || SUBSTR(hoi.ORG_INFORMATION6,LENGTH(hoi.ORG_INFORMATION6),1) ) AS acc_ref_no,
12372 hoi.org_information7 econ_number,
12373 pact.business_group_id bus_grp_id,
12374 pact.action_parameter_group_id act_param_grp_id,
12375 org_information19 service_company
12376 FROM pay_payroll_actions pact,
12377 hr_organization_information hoi
12378 WHERE pact.payroll_action_id =pactid
12379 AND pact.business_group_id = hoi.organization_id
12380 AND hoi.org_information_context = 'Tax Details References'
12381 AND NVL(hoi.org_information10,'UK') = 'UK'
12382 AND SUBSTR(pact.legislative_parameters,instr(pact.legislative_parameters,'TAX_REF=') + 8, instr(pact.legislative_parameters
12383 ||' ',' ', instr(pact.legislative_parameters,'TAX_REF=') +8) - instr(pact.legislative_parameters, 'TAX_REF=') - 8) = hoi.org_information1;
12384
12385 CURSOR csr_parameter_info
12386 IS
12387 SELECT effective_date,
12388 business_group_id,
12389 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters, 'TAX_REF'),1,3) tax_dist,
12390 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_REF'),1,20) tax_ref,
12391 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'SPLIT'),1,20) split,
12392 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'PRE_PAY_ID'),1,20) pre_pay_id,
12393 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIRST_FPS'),1,20) first_fps,
12394 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'FIN_SUB'),1,20) final_submission,
12395 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'TAX_PMT_MADE'),1,20) free_tax_payments_made,
12396 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'THIRD_PARTY'),1,20) pay_to_third_party,
12397 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'EXP_BEN_OTHER'),1,20) expenses_benefits_others,
12398 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'OUTSIDE_UK'),1,20) employed_outside_uk,
12399 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'P11D_DUE'),1,20) p11d_due,
12400 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'HMRC_ADVAN'),1,20) hmrc_advance_received,
12401 SUBSTR(pay_gb_eoy_archive.get_parameter(legislative_parameters,'CIS_DEDUCT'),1,20) cis_deductions,
12402 substr(legislative_parameters,instr(legislative_parameters,'VERSION=')+8) version
12403 FROM pay_payroll_actions
12404 WHERE payroll_action_id = pactid;
12405
12406 l_payroll_rec csr_payroll_details%rowtype;
12407 l_action_info_id NUMBER(15);
12408 l_ovn NUMBER;
12409 l_final_submission_ceased VARCHAR2(1);
12410 l_final_submission_year VARCHAR2(1);
12411 l_final_submission VARCHAR2(50);
12412 l_negative_payment VARCHAR2(10);
12413 l_parameter_info_rec csr_parameter_info%rowtype;
12414 ---------------------
12415 ---------------------
12416
12417 PROCEDURE write_header(
12418 report_type VARCHAR2)
12419 IS
12420 l_token VARCHAR2(255);
12421 l_addr1 VARCHAR2(255);
12422 l_addr2 VARCHAR2(255);
12423 l_addr3 VARCHAR2(255);
12424 l_addr4 VARCHAR2(255);
12425 l_form VARCHAR2(40);
12426 l_tax_ref VARCHAR2(20);
12427 l_urgent VARCHAR2(2);
12428 l_test VARCHAR2(2);
12429 l_temp NUMBER;
12430 l_form_name VARCHAR2(100);
12431 l_payroll_name VARCHAR2(100);
12432 l_prepay_eff_date date;
12433
12434 CURSOR csr_leg_param
12435 IS
12436 SELECT legislative_parameters para,
12437 fnd_number.number_to_canonical(request_id) control_id,
12438 report_type,
12439 business_group_id
12440 FROM pay_payroll_actions pact
12441 WHERE payroll_action_id = pactid;
12442
12443 CURSOR csr_header_det(p_bus_id NUMBER, p_tax_ref VARCHAR2)
12444 IS
12445 SELECT NVL(hoi.org_information11,' ') sender_id,
12446 NVL(upper(hoi.org_information2),' ') hrmc_office,
12447 NVL(upper(hoi.org_information4),' ') er_addr,
12448 NVL(upper(hoi.org_information3),' ') er_name
12449 FROM hr_organization_information hoi
12450 WHERE hoi.organization_id = p_bus_id
12451 AND hoi.org_information_context = 'Tax Details References'
12452 AND NVL(hoi.org_information10,'UK') = 'UK'
12453 AND upper(hoi.org_information1) = upper(p_tax_ref);
12454
12455 CURSOR csr_payroll_details
12456 IS
12457 SELECT ppf.PAYROLL_NAME , ppapre.EFFECTIVE_DATE
12458 from pay_payrolls_f ppf,pay_payroll_actions ppapre,pay_payroll_actions ppa
12459 WHERE ppa.payroll_action_id = pactid
12460 and ppf.payroll_id = SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'PAYROLL_ID'),1,20)
12461 and ppapre.payroll_action_id = SUBSTR(pay_gb_eoy_archive.get_parameter(ppa.legislative_parameters,'PRE_PAY_ID'),1,20);
12462
12463 -- Cursor to fetch Errored Records
12464 CURSOR get_asg_action_id_error
12465 IS
12466 SELECT DISTINCT paa.assignment_action_id asg_action_id,
12467 assignment_id
12468 FROM pay_payroll_actions ppa,
12469 pay_assignment_actions paa
12470 WHERE ppa.payroll_action_id = pactid -- pact_id
12471 AND paa.payroll_action_id = ppa.payroll_action_id
12472 AND paa.action_status = 'E';
12473
12474
12475 --CURSOR csr_err_msg(asg_action_id NUMBER)
12476 CURSOR csr_prepay_err_msg(asg_action_id NUMBER)
12477 IS
12478 SELECT DISTINCT line_text
12479 FROM pay_message_lines
12480 WHERE source_id = asg_action_id --9919881 --asg_action_id
12481 AND message_level <> 'W'-- p_message_level
12482 AND line_text like '%Pre payment is not run%'
12483 AND payroll_id = 100;
12484
12485 l_param csr_leg_param%rowtype;
12486 l_det csr_header_det%rowtype;
12487 l_start_date DATE;
12488 l_end_date DATE;
12489 l_err_msg varchar2(100);
12490 BEGIN
12491 OPEN csr_leg_param;
12492 FETCH csr_leg_param INTO l_param;
12493 CLOSE csr_leg_param;
12494
12495 open csr_payroll_details;
12496 fetch csr_payroll_details into l_payroll_name,l_prepay_eff_date;
12497 close csr_payroll_details;
12498
12499 l_token := 'TAX_REF';
12500 l_temp := instr(l_param.para,l_token);
12501 l_tax_ref := SUBSTR(l_param.para, l_temp + LENGTH(l_token) + 1, instr(l_param.para||' ',' ',l_temp)
12502 - (l_temp + LENGTH(l_token) + 1));
12503 l_token := 'TEST';
12504 l_temp := instr(l_param.para,l_token);
12505 l_test := SUBSTR(l_param.para, l_temp + LENGTH(l_token) + 1, instr(l_param.para||' ',' ',l_temp)
12506 - (l_temp + LENGTH(l_token) + 1));
12507
12508 OPEN csr_header_det(l_param.business_group_id, l_tax_ref);
12509 FETCH csr_header_det INTO l_det;
12510 CLOSE csr_header_det;
12511
12512 l_addr1 := l_det.er_addr;
12513 IF LENGTH(l_addr1) > 35 THEN
12514 l_temp := instr(l_addr1, ',', 34 - LENGTH(l_addr1));
12515 IF l_temp = 0 THEN
12516 l_temp := 35;
12517 END IF;
12518 l_addr2 := ltrim(SUBSTR(l_addr1, 1 + l_temp),' ,');
12519 l_addr1 := SUBSTR(l_addr1,1,l_temp);
12520 END IF;
12521 IF LENGTH(l_addr2) > 35 THEN
12522 l_temp := instr(l_addr2, ',', 34 - LENGTH(l_addr2));
12523 IF l_temp = 0 THEN
12524 l_temp := 35;
12525 END IF;
12526 l_addr3 := ltrim(SUBSTR(l_addr2, 1 + l_temp),' ,');
12527 l_addr2 := SUBSTR(l_addr2,1,l_temp);
12528 END IF;
12529 IF LENGTH(l_addr3) > 35 THEN
12530 l_temp := instr(l_addr3, ',', 34 - LENGTH(l_addr3));
12531 IF l_temp = 0 THEN
12532 l_temp := 35;
12533 END IF;
12534 l_addr3 := ltrim(SUBSTR(l_addr3, 1 + l_temp),' ,');
12535 l_addr4 := SUBSTR(l_addr3,1,l_temp);
12536 END IF;
12537
12538 l_form := 'RTI_FPS_REP';
12539 l_form_name :='Full Payment Submission';
12540
12541 FOR action_id IN get_asg_action_id_error
12542 LOOP
12543 OPEN csr_prepay_err_msg(action_id.asg_action_id);
12544 FETCH csr_prepay_err_msg INTO l_err_msg;
12545 exit when csr_prepay_err_msg%notfound;
12546
12547 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.');
12548 -- exit when csr_prepay_err_msg%found;
12549 CLOSE csr_prepay_err_msg;
12550 END loop;
12551
12552 fnd_file.put_line(fnd_file.output,' ');
12553 fnd_file.put_line(fnd_file.output,'EDI Transmission Report:');
12554 fnd_file.put_line(fnd_file.output,' ');
12555 fnd_file.put_line(fnd_file.output,rpad('Form Type : ',32) || l_form_name);
12556 fnd_file.put_line(fnd_file.output,rpad('Sender : ',32) || l_det.sender_id);
12557 fnd_file.put_line(fnd_file.output,rpad('Date : ',32) || TO_CHAR(sysdate, 'DD/MM/YYYY HH24:MI:SS'));
12558 fnd_file.put_line(fnd_file.output,rpad('Interchange Control Reference : ',32) || l_param.control_id);
12559 fnd_file.put_line(fnd_file.output,rpad('Test Transmission : ',32) || l_test);
12560 fnd_file.put_line(fnd_file.output,rpad('-',80,'-'));
12561 fnd_file.put_line(fnd_file.output,rpad('Employers PAYE Reference : ',32) || l_tax_ref);
12562 fnd_file.put_line(fnd_file.output,rpad('HRMC Office : ',32) || l_det.hrmc_office);
12563 fnd_file.put_line(fnd_file.output,rpad('Employer Name : ',32) || l_det.er_name);
12564 fnd_file.put_line(fnd_file.output,rpad('Employer Address : ',32) || l_addr1);
12565
12566 IF LENGTH(l_addr2) > 0 THEN
12567 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr2);
12568 END IF;
12569 IF LENGTH(l_addr3) > 0 THEN
12570 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr3);
12571 END IF;
12572 IF LENGTH(l_addr4) > 0 THEN
12573 fnd_file.put_line(fnd_file.output,rpad(' ',32) || l_addr4);
12574 END IF;
12575
12576 fnd_file.put_line(fnd_file.output,rpad('Payroll : ',32) || l_payroll_name);
12577 fnd_file.put_line(fnd_file.output,rpad('Prepayment Effective Date : ',32) || l_prepay_eff_date);
12578
12579 END write_header;
12580 ---
12581 PROCEDURE write_sub_header(
12582 p_type VARCHAR2,
12583 report_type VARCHAR2)
12584 IS
12585 BEGIN
12586 fnd_file.put_line(fnd_file.output,NULL);
12587 IF p_type = 'E' THEN
12588 fnd_file.put_line(fnd_file.output,'The following employments have completed with error');
12589 ELSIF p_type = 'W' THEN
12590 fnd_file.put_line(fnd_file.output,'The following employments have completed with warning');
12591 ELSE
12592 fnd_file.put_line(fnd_file.output,'The following employments have completed successfully');
12593 END IF;
12594
12595 IF p_type = 'W' THEN -- warning records
12596 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51)
12597 || rpad('Warning Messages',30));
12598 ELSIF p_type <> 'E' THEN --Completed records
12599 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51));
12600 ELSE -- errored records
12601 fnd_file.put_line(fnd_file.output,rpad('Assignment Number',19) || rpad('NI Number',11) || rpad('Employee Name', 51)
12602 || rpad('Error Messages',30));
12603 END IF;
12604
12605 IF p_type = 'W' THEN -- warning records
12606 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-') || ' '
12607 || rpad('-',30,'-'));
12608 ELSIF p_type <> 'E' THEN -- Completed records
12609 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-'));
12610 ELSE -- errored records
12611 fnd_file.put_line(fnd_file.output,rpad('-',18,'-') || ' ' || rpad('-',10,'-') || ' ' || rpad('-',50,'-') || ' '
12612 || rpad('-',30,'-'));
12613 END IF;
12614 END write_sub_header;
12615 ---
12616 PROCEDURE write_body(
12617 p_type VARCHAR2,
12618 pactid IN NUMBER,
12619 report_type VARCHAR2)
12620 IS
12621 l_count NUMBER;
12622 i NUMBER;
12623 l_temp VARCHAR2(255);
12624 l_emp_count NUMBER;
12625 l_number VARCHAR2(30);
12626 l_start_date DATE;
12627 l_end_date DATE;
12628 l_count_warns number;
12629 l_effective_date date;
12630
12631 -- Cursor to fetch Completed records
12632 CURSOR get_asg_action_id
12633 IS
12634 SELECT DISTINCT paa.assignment_action_id asg_action_id,
12635 assignment_id
12636 FROM pay_payroll_actions ppa,
12637 pay_assignment_actions paa
12638 WHERE ppa.payroll_action_id = pactid -- pact_id
12639 AND paa.payroll_action_id = ppa.payroll_action_id
12640 AND paa.action_status = 'C';
12641
12642 -- Cursor to fetch Errored Records
12643 CURSOR get_asg_action_id_error
12644 IS
12645 SELECT DISTINCT paa.assignment_action_id asg_action_id,
12646 assignment_id
12647 FROM pay_payroll_actions ppa,
12648 pay_assignment_actions paa
12649 WHERE ppa.payroll_action_id = pactid -- pact_id
12650 AND paa.payroll_action_id = ppa.payroll_action_id
12651 AND paa.action_status = 'E';
12652
12653 CURSOR get_person_details(c_assignment_id NUMBER)
12654 IS
12655 SELECT DISTINCT pap.first_name f_name ,
12656 pap.middle_names m_name,
12657 pap.last_name l_name,
12658 pap.title title,
12659 paa.assignment_number emp_no,
12660 NVL(pap.national_identifier,' ')ni_no,
12661 NVL(pap.employee_number,' ') employee_number,
12662 TO_CHAR(paa.EFFECTIVE_START_DATE,'DD-MON-RRRR') start_date,
12663 paa.EFFECTIVE_END_DATE end_date, --to_char(paa.EFFECTIVE_END_DATE,'DD-MON-RRRR') end_date
12664 pap.person_id
12665 FROM per_all_assignments_f paa,
12666 per_assignment_status_types past,
12667 per_all_people_f pap
12668 WHERE paa.person_id = pap.person_id
12669 AND paa.assignment_id = c_assignment_id
12670 AND past.ASSIGNMENT_STATUS_TYPE_ID = paa.ASSIGNMENT_STATUS_TYPE_ID
12671 AND past.per_system_status IN ('ACTIVE_ASSIGN', 'SUSP_ASSIGN') -- Added for Bug#13626488
12672 and pap.effective_start_date =
12673 ( select max(pap2.effective_start_date) from
12674 per_all_people_f pap2
12675 where pap2.person_id = pap.person_id
12676 and pap2.effective_start_date <= l_effective_date
12677 )
12678 and paa.effective_start_date =
12679 ( select max(asg2.effective_start_date)
12680 from per_all_assignments_f asg2
12681 where asg2.assignment_id = paa.assignment_id
12682 and asg2.assignment_type = 'E'
12683 and ASSIGNMENT_STATUS_TYPE_ID = paa.ASSIGNMENT_STATUS_TYPE_ID
12684 and asg2.effective_start_date <= l_effective_date
12685 )
12686
12687 ORDER BY end_date DESC;
12688
12689 -- Cursor to fetch error Messages from pay_message lines table
12690 --CURSOR csr_err_msg(asg_action_id NUMBER)
12691 CURSOR csr_err_msg(asg_action_id NUMBER)
12692 IS
12693 SELECT DISTINCT line_text
12694 FROM pay_message_lines
12695 WHERE source_id = asg_action_id
12696 AND message_level <> 'W'-- p_message_level
12697 AND payroll_id = 100;
12698
12699 --CURSOR csr_warn_msg(asg_action_id NUMBER)
12700 CURSOR csr_warn_msg(asg_action_id NUMBER)
12701 IS
12702 SELECT DISTINCT line_text
12703 FROM pay_message_lines
12704 WHERE source_id = asg_action_id
12705 AND message_level = 'W'
12706 AND payroll_id = 100;
12707
12708 cursor csr_get_prepayment_date(p_pre_pact_id number) is
12709 select EFFECTIVE_DATE from pay_payroll_actions where payroll_action_id = p_pre_pact_id;
12710
12711 err_msg varchar2(255);--csr_err_msg%rowtype;
12712 et_asg_rec get_person_details%rowtype;
12713 asg_rec get_person_details%rowtype;
12714 l_et_temp VARCHAR2(255);
12715 BEGIN
12716 l_count := 0;
12717 l_count_warns := 0;
12718 open csr_get_prepayment_date(g_pre_pact_id);
12719 fetch csr_get_prepayment_date into l_effective_date;
12720 close csr_get_prepayment_date;
12721 fnd_file.put_line(fnd_file.LOG, 'l_effective_date: ' || l_effective_date);
12722 --Completed Records
12723 IF p_type = 'ET'THEN
12724 FOR action_id IN get_asg_action_id
12725 LOOP
12726 OPEN get_person_details(action_id.assignment_id);
12727 FETCH get_person_details INTO et_asg_rec;
12728 CLOSE get_person_details;
12729 l_et_temp := et_asg_rec.l_name || ', '|| et_asg_rec.title || ' ' || et_asg_rec.f_name || ' ' || et_asg_rec.m_name;
12730 IF et_asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
12731 fnd_file.put_line(fnd_file.output,rpad(et_asg_rec.emp_no, 18) || ' ' || rpad(et_asg_rec.ni_no ,10) || ' '
12732 || rpad(l_et_temp,50) );
12733 ELSE
12734 fnd_file.put_line(fnd_file.output,rpad(et_asg_rec.emp_no, 18) || ' ' || rpad(et_asg_rec.ni_no ,10) || ' '
12735 || rpad(l_et_temp,50));
12736 END IF;
12737 l_count := l_count + 1;
12738 END LOOP;
12739 END IF;
12740
12741 -- Errored Records
12742 IF p_type = 'E'THEN
12743 FOR action_id IN get_asg_action_id_error
12744 LOOP
12745 err_msg := ' ';
12746 -- Fetching details
12747 OPEN get_person_details(action_id.assignment_id);
12748 FETCH get_person_details INTO asg_rec;
12749 CLOSE get_person_details;
12750
12751 OPEN csr_err_msg(action_id.asg_action_id);
12752 FETCH csr_err_msg INTO err_msg;
12753 if csr_err_msg%notfound then
12754 SELECT LINE_TEXT into err_msg FROM pay_message_lines WHERE source_id = action_id.asg_action_id and rownum <=1;
12755 end if;
12756
12757 l_error_flag := 'Y';
12758
12759 l_temp := asg_rec.l_name || ', '|| asg_rec.title || ' ' || asg_rec.f_name || ' ' || asg_rec.m_name;
12760 IF asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
12761 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
12762 || ' ' || rpad(err_msg,120) ); -- error message
12763 ELSE
12764 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
12765 || ' ' || rpad(err_msg,120) ); -- error message
12766 END IF;
12767
12768 -- To print remaining error messgaes if any
12769 LOOP
12770 FETCH csr_err_msg INTO err_msg;
12771 EXIT
12772 WHEN csr_err_msg%notfound;
12773 fnd_file.put_line(fnd_file.output,rpad(' ',81,' ')||rpad(err_msg,120));
12774 END LOOP;
12775
12776 CLOSE csr_err_msg;
12777 l_count := l_count + 1;
12778 END LOOP;
12779 END IF;
12780 fnd_file.put_line(fnd_file.output,NULL);
12781
12782 -- Warning Records
12783 IF p_type = 'W'THEN
12784
12785 FOR action_id IN get_asg_action_id
12786 LOOP
12787 err_msg := ' ';
12788 -- Fetching details
12789 OPEN get_person_details(action_id.assignment_id);
12790 FETCH get_person_details INTO asg_rec;
12791 CLOSE get_person_details;
12792
12793 -- fnd_file.put_line(fnd_file.LOG,'action_id.asg_action_id: '||action_id.asg_action_id);
12794
12795 OPEN csr_warn_msg(action_id.asg_action_id);
12796 FETCH csr_warn_msg INTO err_msg;
12797
12798 -- fnd_file.put_line(fnd_file.LOG,'action_id.asg_action_id: '||action_id.asg_action_id);
12799
12800 /* if csr_err_msg%notfound then
12801 SELECT LINE_TEXT into err_msg FROM pay_message_lines WHERE source_id = action_id.asg_action_id
12802 AND MESSAGE_LEVEL = 'W' and rownum <=1;
12803 end if;
12804 */
12805
12806 IF csr_warn_msg%NOTFOUND THEN
12807 NULL;
12808 ELSE
12809 l_temp := asg_rec.l_name || ', '|| asg_rec.title || ' ' || asg_rec.f_name || ' ' || asg_rec.m_name;
12810 IF asg_rec.end_date = fnd_date.canonical_to_date('4712/12/31 00:00:00') THEN
12811 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
12812 || ' ' || rpad(err_msg,100) );
12813 ELSE
12814 fnd_file.put_line(fnd_file.output,rpad(asg_rec.emp_no, 18) || ' ' || rpad(asg_rec.ni_no ,10) || ' ' || rpad(l_temp,50)
12815 || ' ' || rpad(err_msg,100) );
12816 END IF;
12817 l_count_warns := l_count_warns + 1;
12818 END IF;
12819 CLOSE csr_warn_msg;
12820
12821 END LOOP;
12822
12823 END IF;
12824 fnd_file.put_line(fnd_file.output,NULL);
12825
12826 IF p_type = 'E' THEN
12827 fnd_file.put_line(fnd_file.output,'Total Number of employments completed with error : ' || l_count);
12828 ELSIF p_type = 'W' THEN
12829 fnd_file.put_line(fnd_file.output,'Total Number of employments completed with warning : ' || l_count_warns);
12830 ELSE
12831 fnd_file.put_line(fnd_file.output,'Total Number of employments completed successfully :' || l_count);
12832 END IF;
12833 l_counter := l_counter + l_count;
12834 END write_body;
12835 ---
12836 PROCEDURE write_footer
12837 IS
12838
12839 CURSOR get_person_count
12840 IS
12841 SELECT COUNT(DISTINCT(paaf.person_id))
12842 FROM pay_payroll_actions ppa,
12843 pay_assignment_actions paa,
12844 per_all_assignments_f paaf
12845 WHERE ppa.payroll_action_id = pactid -- pact_id
12846 AND paa.payroll_action_id = ppa.payroll_action_id
12847 AND paa.action_status = 'C'
12848 AND paaf.assignment_id = paa.assignment_id;
12849
12850 --l_person_count NUMBER;
12851
12852 BEGIN
12853 OPEN get_person_count;
12854 FETCH get_person_count INTO l_person_count;
12855 CLOSE get_person_count;
12856
12857 fnd_file.put_line(fnd_file.output,NULL);
12858 fnd_file.put_line(fnd_file.output,'Total Number of employments : ' || l_counter);
12859 fnd_file.put_line(fnd_file.output,NULL);
12860 fnd_file.put_line(fnd_file.output,'Total Number of employees successfully processed : ' || l_person_count);
12861 END write_footer;
12862 ---------------------
12863 BEGIN
12864 hr_utility.trace('Entering deinit: '||l_proc);
12865
12866 -- To avoid re-archiving while Retry
12867 delete from pay_action_information pai
12868 where pai.action_context_id = pactid
12869 and pai.action_context_type = 'PA'
12870 and pai.action_information_category in ('RTI PAYROLL INFO');
12871
12872 delete from pay_action_information pai
12873 where pai.action_context_id = pactid
12874 and pai.action_context_type = 'PA'
12875 and pai.action_information_category in ('GB_RTI_FPS_EXTRA_DET');
12876
12877 OPEN csr_payroll_details(pactid);
12878 FETCH csr_payroll_details INTO l_payroll_rec;
12879 CLOSE csr_payroll_details;
12880
12881 OPEN csr_parameter_info;
12882 FETCH csr_parameter_info INTO l_parameter_info_rec;
12883 CLOSE csr_parameter_info;
12884
12885 l_final_submission_year := NULL;
12886 l_final_submission_ceased := NULL;
12887
12888 IF(l_parameter_info_rec.final_submission = 'YYEAR') THEN
12889 l_final_submission_year := 'Y';
12890 l_final_submission := 'Yes - Final for the Year';
12891 elsif(l_parameter_info_rec.final_submission = 'YCEAS') THEN
12892 l_final_submission_ceased := 'Y';
12893 l_final_submission := 'Yes - Final for Ceased PAYE Ref';
12894 else l_final_submission := 'NO';
12895 END IF;
12896
12897 l_econ := l_payroll_rec.econ_number;
12898
12899 --Footer Validations
12900 pay_gb_rti_fps_validate.footer_validations(l_payroll_rec.econ_number,l_final_submission,l_flag);
12901
12902 pay_balance_pkg.set_context('PAYROLL_ACTION_ID',pactid);
12903 hr_utility.set_location('l_payroll_rec.bus_grp_id = ' || l_payroll_rec.bus_grp_id,10);
12904 hr_utility.set_location('l_payroll_rec.act_param_grp_id = ' || l_payroll_rec.act_param_grp_id,20);
12905 hr_utility.set_location('l_sender_id = '||l_payroll_rec.sender_id,30);
12906 hr_utility.set_location('l_test_indicator = '||l_payroll_rec.test_indicator,40);
12907 hr_utility.set_location('l_request_id = '||l_payroll_rec.request_id,50);
12908 hr_utility.set_location('g_start_year = '||g_start_year,60);
12909
12910 hr_utility.set_location('Archiving RTI PAYROLL INFO',60);
12911
12912 pay_action_information_api.create_action_information ( p_action_information_id => l_action_info_id ,
12913 p_action_context_id => pactid ,
12914 p_action_context_type => 'PA' ,
12915 p_object_version_number => l_ovn ,
12916 p_source_id => NULL ,
12917 p_source_text => NULL ,
12918 p_action_information_category => 'RTI PAYROLL INFO' ,
12919 p_action_information1 => pactid ,
12920 p_action_information3 => NULL ,
12921 p_action_information4 => l_payroll_rec.employer_name ,
12922 p_action_information6 => l_payroll_rec.tax_office_no ,
12923 p_action_information7 => l_payroll_rec.tax_ref_no ,
12924 p_action_information8 => l_payroll_rec.payroll_ver ,
12925 p_action_information11 => l_payroll_rec.acc_ref_no ,
12926 p_action_information12 => l_payroll_rec.sender_id ,
12927 p_action_information13 => l_payroll_rec.test_indicator ,
12928 p_action_information14 => TO_CHAR(l_payroll_rec.request_id),
12929 p_action_information15 => to_char(g_end_year,'RRRR'));
12930 ---
12931 pay_action_information_api.create_action_information ( p_action_information_id => l_action_info_id ,
12932 p_action_context_id => pactid ,
12933 p_action_context_type => 'PA' ,
12934 p_object_version_number => l_ovn ,
12935 p_source_id => NULL ,
12936 p_source_text => NULL ,
12937 p_action_information_category => 'GB_RTI_FPS_EXTRA_DET' ,
12938 p_action_information1 => l_final_submission_ceased ,
12939 p_action_information2 => l_final_submission_year ,
12940 p_action_information3 => l_econ ,
12941 p_action_information4 => l_parameter_info_rec.free_tax_payments_made ,
12942 p_action_information5 => l_parameter_info_rec.expenses_benefits_others ,
12943 p_action_information6 => l_parameter_info_rec.employed_outside_uk ,
12944 p_action_information7 => l_parameter_info_rec.pay_to_third_party ,
12945 p_action_information8 => l_parameter_info_rec.p11d_due ,
12946 p_action_information9 => l_payroll_rec.service_company);
12947 ---
12948 OPEN csr_is_etext_report;
12949 FETCH csr_is_etext_report INTO l_is_etext_report;
12950 CLOSE csr_is_etext_report;
12951
12952 l_counter := 0;
12953 write_header(l_is_etext_report);
12954 write_sub_header('C',l_is_etext_report);
12955 write_body('ET',pactid,l_is_etext_report);
12956 write_sub_header('E',l_is_etext_report);
12957 write_body('E',pactid,l_is_etext_report);
12958 write_sub_header('W',l_is_etext_report);
12959 write_body('W',pactid,l_is_etext_report);
12960 write_footer;
12961 --Footer Validations
12962 if l_flag = 'Y' then
12963 PAY_GB_FPS_NI_AND_OTHERS.restored(pactid);
12964 raise l_exp;
12965 end if;
12966
12967 if l_parameter_info_rec.version = 'Pre October' then
12968 l_negative_payment := 'N';
12969 else
12970 l_negative_payment := 'Y';
12971 end if;
12972
12973 /*if(l_error_flag = 'Y') then
12974 raise_application_error(-20001,'Errored assignments exists while processing FPS Process.');
12975 end if;
12976 */
12977 -- For Spawning the output Concurrent Program
12978 hr_utility.set_location('Spawning RTI FPS output process',1);
12979 xml_layout := FND_REQUEST.ADD_LAYOUT('PAY','PYGBRTIFPSOP','en','US','ETEXT');
12980
12981
12982 IF xml_layout = true and g_validation_check = 'Y' and l_person_count <> 0 THEN
12983 l_request_id := fnd_request.submit_request (application => 'PAY'
12984 ,program => 'PYGBRTIFPSOP'
12985 ,argument1 => pactid --Process Name
12986 ,argument2 => l_negative_payment
12987 );
12988 COMMIT;
12989 --check for process submit error
12990 IF l_request_id = 0 THEN
12991 hr_utility.set_location('Error spawning output process',1);
12992 END IF;
12993
12994 END IF;
12995 hr_utility.set_location('Leaving: '||l_proc,999);
12996
12997
12998
12999 -- For Spawning the Reconciliation Concurrent Program
13000 hr_utility.set_location('Spawning RTI FPS Reconciliation process',1);
13001 xml_layout := FND_REQUEST.ADD_LAYOUT('PAY','PYGBFPSREC','en','US','PDF');
13002
13003
13004 IF xml_layout = true and g_validation_check = 'Y' and l_person_count <> 0 THEN
13005 l_request_id := fnd_request.submit_request (application => 'PAY'
13006 ,program => 'PYGBFPSREC'
13007 ,argument1 => pactid --Process Name
13008 -- ,argument2 => l_negative_payment
13009 );
13010 COMMIT;
13011 --check for process submit error
13012 IF l_request_id = 0 THEN
13013 hr_utility.set_location('Error spawning Reconciliation process',1);
13014 END IF;
13015
13016 END IF;
13017 hr_utility.set_location('Leaving: '||l_proc,999);
13018 /*if(l_error_flag = 'Y') then
13019 raise_application_error(-20001,'Errored assignments exists while processing FPS Process.');
13020 end if;
13021 */
13022 EXCEPTION
13023 When l_exp then
13024 fnd_file.put_line(fnd_file.LOG,'Errors found while archiving data.');
13025 raise_application_error(-20001,'Errors found while archiving data.');
13026 END deinitialization_code;
13027 --
13028 END PAY_GB_RTI_FPS;