[Home] [Help]
PACKAGE BODY: APPS.PAY_AC_ACTION_ARCH
Source
1 PACKAGE BODY PAY_AC_ACTION_ARCH AS
2 /* $Header: pyacxfrp.pkb 120.62.12020000.18 2013/05/03 09:09:02 pkoduri ship $ */
3 /*
4 ******************************************************************
5 * *
6 * Copyright (C) 1993 Oracle Corporation. *
7 * All rights reserved. *
8 * *
9 * This material has been provided pursuant to an agreement *
10 * containing restrictions on its use. The material is also *
11 * protected by copyright law. No part of this material may *
12 * be copied or distributed, transmitted or transcribed, in *
13 * any form or by any means, electronic, mechanical, magnetic, *
14 * manual, or otherwise, or disclosed to third parties without *
15 * the express written permission of Oracle Corporation, *
16 * 500 Oracle Parkway, Redwood City, US, 94065. *
17 * *
18 ******************************************************************
19
20 Name : pay_ac_action_arch
21
22 Change List
23 -----------
24 Date Name Vers Bug No Description
25 ----------- ---------- ------ ------- --------------------------
26 02-May-2013 pkoduri 115.140 16318258 Analyzed the archiver code and
27 modified cursors to add missing where
28 condition on dates for -f tables.
29 25-Mar-2013 abellur 115.145 15976832 Reverted the change in 115.141
30 04-Mar-2013 sneelapa 115.144 13905220 Modified the Dynamic queries to use bind variables
31 to improve the performance.
32 28-Dec-2012 ybudamal 115.143 13442472 Reverted the changes done for the cursor 'c_prev_ytd_action_elem_rbr'
33 as part of bug 13442472.
34 21-Dec-2012 ybudamal 115.142 13442472 Modified the cursor 'c_prev_ytd_action_elem_rbr' to add
35 the condition to check for legislation_code and business_group_id
36 values are 'US' and NULL respectively.
37 10-Dec-2012 sneelapa 115.141 15975594 Debug package to verify the issue
38 12-Oct-2012 pkoduri 115.140 14658920 Modified archive_retro_elements to remove dependency with
39 SPARSE_MATRIX enabling for null runresults supression in 1221 CL.
40 27-Sep-2012 schowl 115.139 14605761 Modfied the cursor 'c_multi_asg_prev_information'
41 of 'get_last_xfr_info' procedure to match the present
42 payroll id with the payroll id of action which is being
43 archived. Added a cursor(c_get_payroll_id) to get payroll id
44 and passed it to the cursor 'c_multi_asg_prev_information'.
45 16-Aug-2012 pkoduri 115.137 14219126 Deriving the rate in the scenario where rate is modified
46 in the formula.In this case derived rate differs from
47 keyed in rate.
48 14-Aug-2012 pkoduri 115.136 14319807 Fixed the issue,Retroactive entries for a payroll period if
49 de-selected from the Quickpay screen are being archived
50 with null values.
51 04-May-2012 Pkoduri 115.135 13881512 In case of an employee having bounus with separate check then
52 retro elements are not being individually archived.
53 For this the fix is to revert the chagnes done for the
54 bug 9207953.
55 27-Mar-2012 Pkoduri 115.134 13877047 In this version the fix reverted in the earlier version is
56 addressed again but this time carefully handling the YTD issue
57 reported in the bug 13785386.
58 02-Mar-2012 pkoduri 115.132 13785386 Reverting the changes done to the procedure
59 Archive_retro_element as that is multiplying the
60 YTD Amount and Hours values for a Retro feedin base element case.
61 However the changes for the bug#12548215 will be analyzed
62 and will be introduced once again.
63
64 07-Feb-2012 sbachu 115.131 8544619 Archiving the rate value rounding it
65 off to five digits after decimal.
66 17-Jan-2012 abellur 115.130 13554840 Updated populate_elements, so now
67 elements without rate and with
68 non zero YTD hours will be archived.
69 21-Nov-2012 tclewis 115.129 added emp_city_jd.delete
70 18-Nov-2011 Pkoduri 115.127 12903160 Skipping the rate derivation formula
71 in case multiple is 1- here we get the
72 user keyed in rate and store it.
73 27-Sep-2011 Pkoduri 115.126 12819017 Changed the precision for Round
74 function for calculated rate to 5-
75 this is to be in sync with SOE and
76 RATE on all other PDF slips.
77 21-Sep-2011 nkjaladi 115.125 11897283 Modified cursor get_run_action_id
78 of procedure get_current_elements
79 to add one more parameter
80 element_type_id so that correct
81 run_action_id is picked up for retro
82 and additional
83 21-Sep-2011 abellur 115.124 12548215 Updated archive_retro_elements,
84 logic for derived rate is updated.
85 12-Aug-2011 abellur 115.122 12548215 Changed archive_retro_elements
86 to pull information from base element
87 when hours are not populated and derive rate.
88 Also, YTD hours included into loop so it
89 calculates for every retro element.
90 03-Dec-2010 tclewis 115.19 10277479 Performance changes on cursors
91 c_prev_ytd_action_elem_rbr,
92 c_check_baladj.
93 17-May-2010 asgugupt 115.116 10069088 Modified Populate_elements
94 17-May-2010 mikarthi 115.113 8618524 Modified Populate_elements
95 03-Feb-2010 mikarthi 115.112 8688998 Added the Overloaded version
96 of procedure get_last_xfr_info.
97 Modified cursor c_last_xft_elements
98 18-Dec-2009 nkjaladi 115.111 9207953 Reverted the changes done for bug 8688998 in
99 order to remove dependency.
100 18-Dec-2009 nkjaladi 115.110 9207953 Modified the cursor get_run_action_id in procedure
101 get_current_elements such that payroll process with
102 seperate check are not picked.
103 19-Oct-2009 kagangul 115.109 8688998 Added the Overloaded version
104 of procedure get_last_xfr_info.
105
106 20-Aug-2009 asgugupt 115.108 8324157 Added hint to improve
107 performance of process
108 30-Jan-2009 sudedas 115.107 8211926 Changed get_current_elements
109 22-Jan-2009 sudedas 115.106 7661112 Changed archive_retro_element
110 ,get_current_element for perf.
111 12-DEC-2008 tclewis 115.105 Added SDI1 EE.
112 04-DEC-2008 tclewis 115.105 Added SUI1 EE.
113 19-NOV-2008 sudedas 115.104 7580440 Changed get_current_elements
114 ,Archive_retro_element procs.
115 16-SEP-2008 sudedas 115.103 7348767 Modified get_xfr_elements,
116 7348838 get_missing_xfr_info to
117 populate action_info24
118 11-SEP-2008 asgugupt 115.102 7197824 Changed get_run_results and
119 get_run_results_rate cursors
120 in Proc Archive_addnl_elements
121 23-JUN-2008 sudedas 115.101 7197824 Changed get_current_element
122 ,archive_retro_element
123 ,archive_addnl_element
124 for Work at Home Condition
125 02-JUN-2008 sapalani 115.100 7120430 Used fnd_number.canonical_to_number
126 in procedure populate_summary.
127 Removed trace_off at the end of
128 procedure populate_hours_x_rate.
129 14-APR-2008 asgugupt 115.99 6950970 Modified get_current_elements
130 29-FEB-2008 sudedas 115.98 6663135 Changed other similar cursors
131 20-FEB-2008 sudedas 115.97 6831411 Kept Code for Canada intact
132 before US California OT Enh
133 Changed Cursors in get_current
134 _elements
135 23-DEC-2007 sudedas 115.96 6702864 Reverted Back Changes of 115.95
136 Changed get_current_elements,
137 Archive_retro_element
138 populate_elements Changed.
139 Changes on Top of 115.94
140 20-DEC-2007 sudedas 115.95 Changed get_current_elements,
141 Archive_retro_element,
142 Archive_addnl_elements
143 03-DEC-2007 tclewis 115.94 6663135 Removed the code processing cursor
144 retro_parent_check_flag and use check_retro
145 instead as its identical code.
146 22-SEP-2007 sausingh 115.93 5635335 Cahnged to archive ) value in case the YTD
147 value is null .
148 22-SEP-2007 Ahanda 115.92 5635335 Made changes in the to get the the
149 orignating date when offset date was
150 mentioned.
151 15-sep-2007 sausingh 115.91 5635335 Added nvl condition
152 13-sep-2007 sausingh 115.90 5635335 Added nvl condition while archiving ytd and
153 current amount in case of earnings and
154 deduction ( withelds)
155 5-Sep-2007 sausingh 115.88 6392875 Archiving rate through balance call
156 in populate_elements
157 03-Aug-2007 sausingh 115.87 5635335 Changes Archive_addnl_elements to calculate
158 ytd values from balance call
159 30-Aug-2007 sudedas 115.86 Changes Incorporated for Issues
160 found by Rick on Aug 24, 2007
161 23-Aug-2007 sudedas 115.82 Closing Cursors as per requirement.
162 21-AUG-2007 sausingh 115.81 Added action information24 to archive display name for deductions
163 17-Aug-2007 sausingh 115.80 5635335 Added two procedures Archive_retro_element
164 and Archive_addnl_elements to archive retro
165 elements in separate rows depending upon the
166 element_entry_id
167 30-Jul-2007 sausingh 115.79 5635335 Added cursors to archive Rate*Multiple
168 in a new segment Action_information22
169 06-Jun-2007 sausingh 115.78 5635335 Changed get_current_elements
170 to archive Original Date Earned.
171 15-NOV-2006 ahanda 115.77 Changed sql statement to
172 use base table instead secure
173 views.
174 27-OCT-2006 ahanda 115.76 5582224 Checking PL/SQL table count > 0
175 before starting loop.
176 12-OCT-2006 ppanda 115.75 5599167 Cursor c_check_baladj changed by
177 adding hint leading(PPA)
178 index(PPA,PAY_PAYROLL_ACTIONS_N51)
179 index(PAA,PAY_ASSIGNMENT_ACTIONS_N51)
180 Cursor c_prev_elements modified by
181 adding hint
182 ORDERED use_nl(PAA, PPA, PPF)
183 19-SEP-2006 sodhingr 115.74 5549032 Added ORDERED hint to c_prev_elements
184 11-JUL-2006 ppanda 115.73 Changed cursor c_prev_ytd_action_elements
185 for fixing R12 performance bug 5042715
186 13-APR-2006 ahanda 115.72 Changed populate_hours_x_rate
187 to use amount returned by
188 pay_hours_by_rate_v
189 08-Mar-2006 vpandya 115.71 Changed populate_hours_x_rate
190 procedure to fix retro issue
191 for Canada.
192 14-OCT-2005 ahanda 115.70 Changed the prev_ytd .. cursors
193 to not do a trunc on year but
194 pass it as a parameter.
195 06-OCT-2005 ahanda 115.69 4552807 Added process_baladj_elements
196 28-JUL-2005 ahanda 115.68 4507782 Changed cursor
197 c_multi_asg_prev_information
198 29-DEC-2004 ahanda 115.67 4069477 Changed procedure populate_elements
199 to remove special logic for
200 Non Payroll Payments
201 06-OCT-2004 ahanda 115.66 3940380 Added parameter p_xfr_action_id
202 to get_last_xfr_info and check
203 in cursor.
204 30-JUL-2004 ssattini 115.65 3498653 Added p_action_type parameter
205 to get_current_elements and
206 populate_elements procedures,
207 also added logic to archive
208 reversals and balance adjustments
209 in populate_elements procedure.
210 28-JUL-2004 vpandya 115.64 3780256 Added ORDERED hint to
211 c_prev_ytd_action_elem_rbr cursor.
212 Changed cursor c_last_xfr_elements
213 in get_xfr_element procedure to
214 get jurisdiction_code from previous
215 archived value.
216 19-JUL-2004 ahanda 115.63 3770899 Changed c_prev_ytd_action_elements
217 and c_prev_ytd_action_elem_rbr
218 to pick up elements processed from
219 1st and the passed date.
220 16-JUL-2004 ahanda 115.62 3767301 Added rpad and ltrim for state code
221 as JD in run balances might just
222 have a space.
223 16-JUL-2004 ahanda 115.61 3767301 Changed the run balance cursor
224 to do a substr on jurisdiction code
225 to ensure correct distinct JDs are
226 fetched. The table has JD values
227 like 05, 05-, 05-000-, 05-000-0.
228 20-MAY-2004 rsethupa 115.60 3639249 procedure process_additional_elements
229 set the balance context 'TAX_UNIT_ID'
230 to p_tax_unit_id in the beginning.
231 10-MAY-2004 ahanda 115.59 3567107 Changed get_xfr_elements procedure
232 to check if element is still valid
233 before archiving.
234 03-MAY-2004 kvsankar 115.58 3585754 Added a new cursor
235 'c_prev_ytd_action_elem_rbr'
236 which uses run balances to
237 retrieve the elements. This
238 cursor has to be executed instead
239 of 'c_prev_ytd_action_elements'
240 if Balance Initialization elements
241 are to be archived.
242 26-APR-2004 rsethupa 115.57 3559626 Removed code at the end of the
243 file that was used to initialize
244 the global variable
245 gv_correspondence_language of the
246 package pyempxfrp.pkb to get the
247 Accrual Information based on
248 Correspondance language.
249 16-APR-2004 rsethupa 115.56 3311866 US SS Payslip currency Format Enh.
250 Changed code to archive currency
251 in canonical format for the action
252 info categories 'AC EARNINGS',
253 'AC DEDUCTIONS', 'AC SUMMARY YTD'
254 and 'AC SUMMARY CURRENT'.
255 29-JAN-2004 rsethupa 115.55 3370112 11.5.10 Performance Changes
256 Modified cursor c_cur_action_elements
257 by removing the 'and exists' clause
258 28-JAN-2004 rsethupa 115.54 3370112 11.5.10 Performance Changes
259 14-JAN-2003 RMONGE 115.53 3360805 Remove hr. from pay_action_information
260 25-NOV-2003 vpandya 115.52 3280589 Changed get_xfr_elements:
261 modified cursor c_last_per_xfr_run.
262 07-NOV-2003 vpandya 115.51 3225286 Changed c_prev_ytd_action_elements
263 cursor and added condition for
264 Bal Adj (B) for action_type.
265 06-NOV-2003 vpandya 115.50 3239376 Changed get_xfr_elements:
266 Retreving action_information12
267 (ytd_hours) and initializing
268 variable ln_ytd_hours.
269 04-NOV-2003 vpandya 115.49 3228457 Changed c_last_per_xfr_run cursor:
270 Remove extra table
271 pay_action_information.
272 20-OCT-2003 vpandya 115.48 3119792 Changed process_additional_elements:
273 calling populate_summary to archive
274 summary for YTD.
275 04-OCT-2003 ahanda 115.47 3107166 Added date joins when getting
276 data from pay_element_types_f
277 10-Sep-2003 ekim 115.46 3119792 1) Added procedure
278 2880047 - process_additional_elements
279 2) Moved c_prev_ytd_action_elements
280 to be global.
281 3) Added following in
282 get_last_xfr_info procedure.
283 Cursor:
284 - c_multi_asg_prev_information
285 - c_multi_asg_prev_nonsepchk
286 Parameter:
287 - p_sepchk_flag
288 26-JUN-2003 vpandya 115.45 2950628 Changed populate_summary to archive
289 labels for CURRENT and YTD based on
290 correspondence language of an
291 employee. Also added cursor
292 c_arch_labels.
293 19-JUN-2003 ahanda 115.44 3018135 Changed populate_summary to populate
294 values for Alien/Expat Earnings.
295 19-JUN-2003 ahanda 115.43 3016946 Changed cursor to do an nvl
296 reporting_name and element_name.
297 11-Apr-2003 vpandya 115.42 Changed get_xfr_elements:
298 Removed Multi GRE cond. which was
299 with Multi Asg and SepChk cond.
300 25-Mar-2003 vpandya 115.41 Changed populate_hours_x_rate:
301 Taken out 'Exit' from GRE loop
302 and put it at common place so that
303 it works for GRE and Tax Group.
304 17-Mar-2003 ekim 115.40 Added index hint in
305 c_last_payment_info cursor.
306 14-Mar-2003 ekim 115.39 2851780 Added c_last_per_xfr_run in
307 get_xfr_elements.
308 07-Mar-2003 vpandya 115.38 2834674 Changed populate_hours_x_rate:
309 Divided hours_by_rate cursor into
310 c_run_aa_id and c_hbr cursor.
311 24-Feb-2003 vpandya 115.37 Changed get_current_elements:
312 added cursor c_ytd_action_seq and
313 changed cursor c_cur_action_elements
314 to get sep check elements.
315 Changed get_xfr_elements:
316 archive all elements of previous
317 xfr run when gv_multi_gre_payment
318 is 'N'.
319 06-Feb-2003 ekim 115.36 2315822 changed get_xfr_elements:
320 Added logic to get YTD for
321 the elements in the previous run
322 for the given assignment when
323 Multi-Asg is 'Y' and SEPCHK = 'Y'
324 06-FEB-2003 vpandya 115.35 2657464 Changed to get translated name of
325 an element. Changed all cursors
326 wherever reporting name is taken
327 from pay_element_types_f, now it is
328 taking from pay_element_types_f_tl.
329 Also changed populate_hours_x_rate.
330 02-DEC-2002 ahanda 115.34 Changed package to fix GSCC warning
331 19-NOV-2002 vpandya 115.33 Calling set_error_message function
332 of pay_emp_action_arch from all
333 exceptions to get error message
334 Remote Procedure Calls(RPC or Sub
335 program)
336 13-NOV-2002 ahanda 115.32 2667749 Changed get_missing_xfr_info
337 to set the JD for Tax Deduction
338 and insert value only if non Zero
339 01-NOV-2002 ahanda 115.31 Changed error handling.
340 25-OCT-2002 ahanda 115.30 - Changed code to set up
341 hours_bal_id
342 only for earnings and
343 2503094 - Resetting the category in
344 get_missing_xfr_info.
345 15-OCT-2002 tmehra 115.29 Added code to archive PQP
346 (Alien) Earnings.
347 09-SEP-2002 ahanda 115.26 2558228 Modified code to only set the
348 Jurisdiction for Tax Deduction.
349 06-SEP-2002 ahanda 115.25 Added stmts for GSCC warnings.
350 27-JUL-2002 ahanda 115.24 Added code to get the primary
351 balance if it is null. This will
352 happen only to existing US
353 customers for Tax Deduction.
354 12-JUL-2002 ahanda 115.23 Setting JD Balance only for US
355 10-JUL-2002 vpandya 115.22 2455729 Modified populate_elements,
356 put condition like don't assign
357 hours to pl/sql table if ytd and
358 payment amounts are zero.
359 17-JUN-2002 ahanda 115.21 2365908 Changed package to populate tax
360 deductions if location has changed.
361 13-JUN-2002 vpandya 115.20 Added populate_hours_x_rate proc.
362 to populate Hours by Rate(HBR)
363 element.
364 Changed check_hours_by_rate to
365 check whether HBR element exists in
366 PL/SQL table. Setting context for
367 'Tax Group' if reporting level is
368 'TAXGRP'(Canadian Req.)
369 15-MAY-2002 ahanda 115.19 2339387 Changed get_xfr_elements to reset
370 the variable for category.
371 Added procedures
372 - get_last_xfr_info
373 - get_last_pymt_info
374 07-MAY-2002 vpandya 115.18 Modified populate_summanry,
375 Added 'Taxable Benefits' in it for
376 AC SUMMARY CURRENT, AC CURRENT YTD
377 24-APR-2002 ahanda 115.17 Changed get_current_elements for
378 performance.
379 08-APR-2002 ahanda 115.16 Changed
380 - get_missing_xfr_info
381 - get_current_elements
382 - first_time_process
383 to pass NULL for hours if the
384 classification is of type Dedutions
385 18-MAR-2002 ahanda 115.15 2264358 Changed cursor
386 c_prev_ytd_action_elements
387 Fixed archiving for Bal Adj for
388 which Pre Pay flag is checked.
389 22-JAN-2002 ahanda 115.14 Moved get_multi_assignment_flag
390 to global package (pyempxfr.pkb)
391 26-JAN-2002 ahanda 115.13 Added dbdrv commands.
392 22-JAN-2002 ahanda 115.12 Changed package to take care
393 of Multi Assignment Processing.
394 01-NOV-2001 asasthan 115.10 2034976
395 30-OCT-2001 asasthan 115.9 YTD Hours BUg
396 26-OCT-2001 asasthan 115.8 Fix for Bug 2080689
397 03-OCT-2001 asasthan 115.7 Fix for Bug 2028415
398 03-OCT-2001 asasthan 115.6 Fix for Bug 2028415
399 02-OCT-2001 vpandya 115.5 canada Changes
400 21-SEP-2001 asasthan 115.4 Removed check for 'Fees' from
401 get_current_elements etc.
402 31-AUG-2001 asasthan 115.3 Modified populate_delta_earnings
403 29-AUG-2001 asasthan 115.2 Modified ytd balance calls.
404 17-JUL-2001 vpandya 115.1 Added 'Taxable Benefits'
405 classification and 'Hours by Rate'
406 for CA.
407 25-JUL-2001 asasthan 115.0 Created.
408
409 *******************************************************************/
410
411 /******************************************************************
412 ** Package Local Variables
413 ******************************************************************/
414 gv_package VARCHAR2(100) := 'pay_ac_action_arch';
415
416 gv_dim_asg_tg_ytd VARCHAR2(100) := '_ASG_TG_YTD';
417 gv_dim_asg_gre_ytd VARCHAR2(100) := '_ASG_GRE_YTD';
418 gv_dim_asg_jd_gre_ytd VARCHAR2(100) := '_ASG_JD_GRE_YTD';
419 gv_ytd_amount number(20,2) := 0;
420 gv_ytd_hour number(20,2) := 0;
421
422 cursor c_element_info(cp_element_type_id in number
423 ,cp_effective_date in date) is
424 select pet.element_information10 primary_balance,
425 pet.element_information12 hours_balance
426 from pay_element_types_f pet
427 where pet.element_type_id = cp_element_type_id
428 and cp_effective_date between pet.effective_start_date
429 and pet.effective_end_date;
430
431 cursor c_prev_ytd_action_elements(cp_assignment_id in number
432 ,cp_curr_eff_date in date
433 ,cp_start_eff_date in date
434 ,cp_action_type1 in varchar2
435 ,cp_action_type2 in varchar2
436 ,cp_action_type3 in varchar2
437 ) is
438 select /*+ ORDERED use_nl(PAA,PPA,PPF)
439 INDEX (paa PAY_ASSIGNMENT_ACTIONS_N51)
440 INDEX(ppa PAY_PAYROLL_ACTIONS_PK)
441 INDEX(prr PAY_RUN_RESULTS_N50)
442 INDEX(pcc PAY_ELEMENT_CLASSIFICATION_UK2) */
443 distinct
444 pec.classification_name,
445 pet.processing_priority,
446 nvl(decode(pec.classification_name,
447 'Tax Deductions', petl.reporting_name || ' Withheld',
448 petl.reporting_name),pet.element_name) reporting_name,
449 --pet.element_name,
450 decode(pec.classification_name,
451 'Tax Deductions', null,
452 prr.element_type_id) element_type_id,
453 --prr.element_type_id,
454 nvl(decode(pec.classification_name,
455 'Tax Deductions', prr.jurisdiction_code,
456 'Earnings',prr.jurisdiction_code), '00-000-0000'),
457 pet.element_information10,
458 pet.element_information12
459 from pay_assignment_actions paa,
460 pay_payroll_actions ppa,
461 pay_run_results prr,
462 pay_element_types_f pet,
463 pay_element_classifications pec,
464 pay_element_types_f_tl petl
465 where prr.assignment_action_id = paa.assignment_action_id
466 and paa.assignment_id = cp_assignment_id
467 and ppa.payroll_action_id = paa.payroll_action_id
468 and ppa.action_type in (cp_action_type1, cp_action_type2, cp_action_type3)
469 and ppa.effective_date >= cp_start_eff_date
470 and ppa.effective_date <= cp_curr_eff_date
471 and pet.element_type_id = prr.element_type_id
472 and pet.element_information10 is not null
473 and ppa.effective_date between pet.effective_start_date
474 and pet.effective_end_date
475 and petl.element_type_id = pet.element_type_id
476 and petl.language = gv_person_lang
477 and pec.classification_id = pet.classification_id
478 and pec.business_group_id is NULL
479 and pec.legislation_code = 'US'
480 and pec.classification_name in ('Earnings',
481 'Alien/Expat Earnings',
482 'Supplemental Earnings',
483 'Imputed Earnings',
484 'Taxable Benefits',
485 'Pre-Tax Deductions',
486 'Involuntary Deductions',
487 'Voluntary Deductions',
488 'Non-payroll Payments',
489 'Tax Deductions')
490 and pet.element_name not like '%Calculator'
491 and pet.element_name not like '%Special Inputs'
492 and pet.element_name not like '%Special Features'
493 and pet.element_name not like '%Special Features 2'
494 and pet.element_name not like '%Verifier'
495 and pet.element_name not like '%Priority'
496 order by 1, 3, 4;
497 --pec.classification_name, reporting_name, pet.element_name;
498
499 -- Bug 3585754
500 cursor c_prev_ytd_action_elem_rbr(cp_assignment_id in number
501 ,cp_curr_eff_date in date
502 ,cp_start_eff_date in date
503 ) is
504 select /*+ ORDERED */
505 distinct pec.classification_name,
506 pet.processing_priority,
507 nvl(decode(pec.classification_name,
508 'Tax Deductions', petl.reporting_name || ' Withheld',
509 petl.reporting_name), pet.element_name) reporting_name,
510 decode(pec.classification_name, 'Tax Deductions', null,
511 pet.element_type_id) element_type_id,
512 nvl(decode(pec.classification_name,
513 'Tax Deductions',
514 decode(pec.legislation_code,
515 'CA', substr(jurisdiction_code,1,2),
516 decode(to_char(length(replace(jurisdiction_code, '-'))),
517 '7', jurisdiction_code,
518 rpad(nvl(substr(rtrim(ltrim(jurisdiction_code)),1,2),'0')
519 ,2,'0') || '-'||
520 rpad(nvl(substr(rtrim(ltrim(jurisdiction_code)),4,3),'0')
521 ,3,'0') ||'-' ||
522 rpad(nvl(substr(rtrim(ltrim(jurisdiction_code)),8,4),'0')
523 ,4,'0')))), '00-000-0000') jurisdiction_code,
524 pet.element_information10,
525 pet.element_information12
526 from pay_element_classifications pec
527 ,pay_element_types_f pet
528 ,pay_balance_types pbt
529 ,pay_defined_balances pdb
530 ,pay_run_balances prb
531 ,pay_element_types_f_tl petl
532 where prb.effective_date >= cp_start_eff_date
533 and prb.effective_date <= cp_curr_eff_date
534 and prb.assignment_id = cp_assignment_id
535 and pet.element_information10 is not null
536 and pet.element_information10 = pbt.balance_type_id
537 and pbt.balance_type_id = pdb.balance_type_id
538 and pdb.save_run_balance = 'Y'
539 and pdb.defined_balance_id = prb.defined_balance_id
540 and prb.effective_date between pet.effective_start_date and pet.
541 effective_end_date
542 and petl.element_type_id = pet.element_type_id
543 and petl.language = gv_person_lang
544 and pec.classification_id = pet.classification_id
545 and pec.classification_name in ('Earnings',
546 'Alien/Expat Earnings',
547 'Supplemental Earnings',
548 'Imputed Earnings',
549 'Taxable Benefits',
550 'Pre-Tax Deductions',
551 'Involuntary Deductions',
552 'Voluntary Deductions',
553 'Non-payroll Payments',
554 'Tax Deductions')
555 and pet.element_name not like '%Calculator'
556 and pet.element_name not like '%Special Inputs'
557 and pet.element_name not like '%Special Features'
558 and pet.element_name not like '%Special Features 2'
559 and pet.element_name not like '%Verifier'
560 and pet.element_name not like '%Priority'
561 order by 1, 3, 4;
562
563 /******************************************************************
564 Name : initialization_process
565 Purpose : The procedure initializes the PL/SQL table -
566 pay_ac_action_arch.lrr_act_tab
567 Arguments :
568 Notes :
569 ******************************************************************/
570 PROCEDURE initialization_process
571 IS
572 lv_procedure_name VARCHAR2(100) := '.initialization_process';
573
574 lv_error_message VARCHAR2(200);
575 ln_step NUMBER;
576 i NUMBER := 0; -- used for label counter
577
578 cursor c_arch_labels is
579 select language, lookup_code, meaning
580 from fnd_lookup_values
581 where lookup_type = 'CA_CHEQUE_LABELS'
582 and lookup_code in ('CURRENT', 'YTD');
583
584
585 BEGIN
586 hr_utility.set_location(gv_package || lv_procedure_name, 10);
587 ln_step := 1;
588
589 if pay_ac_action_arch.lrr_act_tab.count > 0 then
590 for i in pay_ac_action_arch.lrr_act_tab.first ..
591 pay_ac_action_arch.lrr_act_tab.last loop
592 pay_ac_action_arch.lrr_act_tab(i).action_context_id := null;
593 pay_ac_action_arch.lrr_act_tab(i).action_context_type := null;
594 pay_ac_action_arch.lrr_act_tab(i).action_info_category := null;
595 pay_ac_action_arch.lrr_act_tab(i).jurisdiction_code := null;
596 pay_ac_action_arch.lrr_act_tab(i).act_info1 := null;
597 pay_ac_action_arch.lrr_act_tab(i).act_info2 := null;
598 pay_ac_action_arch.lrr_act_tab(i).act_info3 := null;
599 pay_ac_action_arch.lrr_act_tab(i).act_info4 := null;
600 pay_ac_action_arch.lrr_act_tab(i).act_info5 := null;
601 pay_ac_action_arch.lrr_act_tab(i).act_info6 := null;
602 pay_ac_action_arch.lrr_act_tab(i).act_info7 := null;
603 pay_ac_action_arch.lrr_act_tab(i).act_info8 := null;
604 pay_ac_action_arch.lrr_act_tab(i).act_info9 := null;
605 pay_ac_action_arch.lrr_act_tab(i).act_info10 := null;
606 pay_ac_action_arch.lrr_act_tab(i).act_info11 := null;
607 pay_ac_action_arch.lrr_act_tab(i).act_info12 := null;
608 pay_ac_action_arch.lrr_act_tab(i).act_info13 := null;
609 pay_ac_action_arch.lrr_act_tab(i).act_info14 := null;
610 pay_ac_action_arch.lrr_act_tab(i).act_info15 := null;
611 pay_ac_action_arch.lrr_act_tab(i).act_info16 := null;
612 pay_ac_action_arch.lrr_act_tab(i).act_info17 := null;
613 pay_ac_action_arch.lrr_act_tab(i).act_info18 := null;
614 pay_ac_action_arch.lrr_act_tab(i).act_info19 := null;
615 pay_ac_action_arch.lrr_act_tab(i).act_info20 := null;
616 pay_ac_action_arch.lrr_act_tab(i).act_info21 := null;
617 pay_ac_action_arch.lrr_act_tab(i).act_info22 := null;
618 pay_ac_action_arch.lrr_act_tab(i).act_info23 := null;
619 pay_ac_action_arch.lrr_act_tab(i).act_info24 := null;
620 pay_ac_action_arch.lrr_act_tab(i).act_info25 := null;
621 pay_ac_action_arch.lrr_act_tab(i).act_info26 := null;
622 pay_ac_action_arch.lrr_act_tab(i).act_info27 := null;
623 pay_ac_action_arch.lrr_act_tab(i).act_info28 := null;
624 pay_ac_action_arch.lrr_act_tab(i).act_info29 := null;
625 pay_ac_action_arch.lrr_act_tab(i).act_info30 := null;
626 end loop;
627 end if;
628
629 ln_step := 5;
630 pay_ac_action_arch.lrr_act_tab.delete;
631 pay_ac_action_arch.emp_state_jd.delete;
632 pay_ac_action_arch.emp_city_jd.delete;
633 pay_ac_action_arch.emp_psd_jd.delete;
634 pay_ac_action_arch.emp_county_jd.delete;
635 pay_ac_action_arch.emp_school_jd.delete;
636 pay_ac_action_arch.emp_elements_tab.delete;
637 pay_ac_action_arch.lrr_act_tab.delete;
638
639 if gv_reporting_level = 'TAXGRP' then
640 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
641 else
642 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
643 end if;
644
645 if pay_ac_action_arch.ltr_summary_labels.count = 0 then
646
647 i := 0;
648
649 for lbl in c_arch_labels loop
650
651 pay_ac_action_arch.ltr_summary_labels(i).language := lbl.language;
652 pay_ac_action_arch.ltr_summary_labels(i).lookup_code := lbl.lookup_code;
653 pay_ac_action_arch.ltr_summary_labels(i).meaning := lbl.meaning;
654
655 hr_utility.trace(pay_ac_action_arch.ltr_summary_labels(i).language);
656 hr_utility.trace(pay_ac_action_arch.ltr_summary_labels(i).lookup_code);
657 hr_utility.trace(pay_ac_action_arch.ltr_summary_labels(i).meaning);
658
659 i := i + 1;
660
661 end loop;
662
663 end if;
664
665 hr_utility.trace('pay_ac_action_arch.lrr_act_tab.count = ' ||
666 pay_ac_action_arch.lrr_act_tab.count);
667 hr_utility.set_location(gv_package || lv_procedure_name, 50);
668 ln_step := 10;
669
670 EXCEPTION
671 when others then
672 lv_error_message := 'Error at step ' || ln_step || ' in ' ||
673 gv_package || lv_procedure_name;
674
675 hr_utility.trace(lv_error_message || '-' || sqlerrm);
676
677 lv_error_message :=
678 pay_emp_action_arch.set_error_message(lv_error_message);
679
680 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
681 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
682 hr_utility.raise_error;
683
684 END initialization_process;
685
686
687 /******************************************************************
688 Name : get_last_xfr_info
689 Purpose : This returns the date and action_id of the last
690 External Process Archive run.
691 Arguments :
692 Notes :
693 ******************************************************************/
694 PROCEDURE get_last_xfr_info(p_assignment_id in number
695 ,p_curr_effective_date in date
696 ,p_action_info_category in varchar2
697 ,p_xfr_action_id in number
698 ,p_sepchk_flag in varchar2
699 ,p_last_xfr_eff_date out nocopy date
700 ,p_last_xfr_action_id out nocopy number
701 )
702 IS
703
704 cursor c_prev_run_information(cp_assignment_id in number
705 ,cp_action_info_category in varchar2
706 ,cp_xfr_action_id in number
707 ,cp_effective_date in date) is
708 select pai.effective_date,
709 pai.action_context_id
710 from pay_action_information pai
711 where pai.action_context_type = 'AAP'
712 and pai.assignment_id = cp_assignment_id
713 and pai.action_information_category = cp_action_info_category
714 and pai.action_context_id <> cp_xfr_action_id
715 and pai.effective_date <= cp_effective_date
716 order by pai.effective_date desc
717 ,pai.action_context_id desc;
718
719 cursor c_multi_asg_prev_information(
720 cp_assignment_id in number
721 ,cp_action_info_category in varchar2
722 ,cp_xfr_action_id in number
723 ,cp_effective_date in date) is
724 select /*+ index(PAI PAY_ACTION_INFORMATION_N5) */ pai.effective_date,
725 pai.action_context_id
726 from per_all_assignments_f paf2
727 ,per_all_assignments_f paf
728 ,pay_action_information pai
729 where paf2.assignment_id = cp_assignment_id
730 and paf.person_id = paf2.person_id
731 and pai.assignment_id = paf.assignment_id
732 and pai.action_context_type = 'AAP'
733 and pai.action_information_category = cp_action_info_category
734 and pai.effective_date <= cp_effective_date
735 and pai.effective_date >= trunc(cp_effective_date, 'Y')
736 and pai.action_context_id <> cp_xfr_action_id
737 order by pai.effective_date desc
738 ,pai.action_context_id desc;
739
740 ld_last_xfr_eff_date DATE;
741 ln_last_xfr_action_id NUMBER;
742 lv_procedure_name VARCHAR2(100) := '.get_last_xfr_info';
743
744 lv_error_message VARCHAR2(200);
745 ln_step NUMBER;
746
747 BEGIN
748 hr_utility.set_location(gv_package || lv_procedure_name, 10);
749 ln_step := 1;
750 if pay_emp_action_arch.gv_multi_payroll_pymt = 'Y' then
751 open c_multi_asg_prev_information(p_assignment_id,
752 p_action_info_category,
753 p_xfr_action_id,
754 p_curr_effective_date);
755 fetch c_multi_asg_prev_information into ld_last_xfr_eff_date
756 ,ln_last_xfr_action_id;
757 if c_multi_asg_prev_information%notfound then
758 hr_utility.trace('This process has not been run earlier');
759 end if;
760 close c_multi_asg_prev_information;
761
762 else
763
764 open c_prev_run_information(p_assignment_id,
765 p_action_info_category,
766 p_xfr_action_id,
767 p_curr_effective_date);
768 fetch c_prev_run_information into ld_last_xfr_eff_date
769 ,ln_last_xfr_action_id;
770 if c_prev_run_information%notfound then
771 hr_utility.trace('This process has not been run earlier');
772 end if;
773 close c_prev_run_information ;
774 end if;
775
776 ln_step := 5;
777 if ld_last_xfr_eff_date is not null then
778 if trunc(ld_last_xfr_eff_date,'Y') < trunc(p_curr_effective_date,'Y')
779 then
780 ld_last_xfr_eff_date := null;
781 ln_last_xfr_action_id := null;
782 end if;
783 end if;
784 hr_utility.trace('ld_last_xfr_eff_date '||to_char(ld_last_xfr_eff_date));
785 hr_utility.trace('ln_last_xfr_action_id '|| ln_last_xfr_action_id);
786
787 p_last_xfr_eff_date := ld_last_xfr_eff_date;
788 p_last_xfr_action_id := ln_last_xfr_action_id;
789
790 hr_utility.set_location(gv_package || lv_procedure_name, 50);
791 ln_step := 10;
792
793 EXCEPTION
794 when others then
795 lv_error_message := 'Error at step ' || ln_step || ' in ' ||
796 gv_package || lv_procedure_name;
797
798 hr_utility.trace(lv_error_message || '-' || sqlerrm);
799
800 lv_error_message :=
801 pay_emp_action_arch.set_error_message(lv_error_message);
802
803 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
804 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
805 hr_utility.raise_error;
806
807 END get_last_xfr_info;
808
809 /* Start : Bug 8688998 */
810 /******************************************************************
811 Name : get_last_xfr_info (Overloaded version)
812 Purpose : This returns the date and action_id of the last
813 External Process Archive run.
814 Arguments : Added the following extract parameters :
815 1. p_arch_bal_info
816 2. p_legislation_code
817 Notes : The only difference with the base version is the usage
818 of cursor c_prev_run_information/c_multi_asg_prev_information.
819 In base version, cursor c_multi_asg_prev_information is
820 used when pay_emp_action_arch.gv_multi_payroll_pymt = 'Y'
821 otherwise cursor c_prev_run_information get called.
822 However, in the overloaded version for US legislation
823 cursor c_multi_asg_prev_information is used when
824 pay_emp_action_arch.gv_multi_payroll_pymt = 'Y' AND
825 p_arch_bal_info = 'Y' otherwise
826 cursor c_prev_run_information get called. For other
827 legislations, the cursor usage is like base version only.
828 ******************************************************************/
829 PROCEDURE get_last_xfr_info(p_assignment_id in number
830 ,p_curr_effective_date in date
831 ,p_action_info_category in varchar2
832 ,p_xfr_action_id in number
833 ,p_sepchk_flag in varchar2
834 ,p_last_xfr_eff_date out nocopy date
835 ,p_last_xfr_action_id out nocopy number
836 ,p_arch_bal_info in varchar2
837 ,p_legislation_code in varchar2
838 )
839 IS
840
841 cursor c_get_payroll_id(cp_xfr_action_id in number ) is -- added for the bug 14605761
842 select ppa.payroll_id
843 from pay_payroll_actions ppa
844 ,pay_assignment_actions paa
845 where paa.assignment_action_id=cp_xfr_action_id
846 and paa.payroll_action_id=ppa.payroll_action_id;
847
848 cursor c_prev_run_information(cp_assignment_id in number
849 ,cp_action_info_category in varchar2
850 ,cp_xfr_action_id in number
851 ,cp_effective_date in date) is
852 select pai.effective_date,
853 pai.action_context_id
854 from pay_action_information pai
855 where pai.action_context_type = 'AAP'
856 and pai.assignment_id = cp_assignment_id
857 and pai.action_information_category = cp_action_info_category
858 and pai.action_context_id <> cp_xfr_action_id
859 and pai.effective_date <= cp_effective_date
860 order by pai.effective_date desc
861 ,pai.action_context_id desc;
862
863 cursor c_multi_asg_prev_information(
864 cp_assignment_id in number
865 ,cp_action_info_category in varchar2
866 ,cp_xfr_action_id in number
867 ,cp_payroll_id in number -- added for the bug 14605761
868 ,cp_effective_date in date) is
869 select /*+ index(PAI PAY_ACTION_INFORMATION_N5) */ pai.effective_date,
870 pai.action_context_id
871 from per_all_assignments_f paf2
872 ,per_all_assignments_f paf
873 ,pay_action_information pai
874 where paf2.assignment_id = cp_assignment_id
875 and paf.person_id = paf2.person_id
876 and pai.assignment_id = paf.assignment_id
877 and paf.payroll_id = cp_payroll_id --condition added for the bug 14605761
878 and pai.action_context_type = 'AAP'
879 and pai.action_information_category = cp_action_info_category
880 and pai.effective_date <= cp_effective_date
881 and pai.effective_date >= trunc(cp_effective_date, 'Y')
882 and pai.action_context_id <> cp_xfr_action_id
883 order by pai.effective_date desc
884 ,pai.action_context_id desc;
885
886 ld_last_xfr_eff_date DATE;
887 ln_last_xfr_action_id NUMBER;
888 lv_procedure_name VARCHAR2(100) := '.get_last_xfr_info';
889 ln_payroll_id NUMBER; --added for the bug 14605761
890 lv_error_message VARCHAR2(200);
891 ln_step NUMBER;
892
893 BEGIN
894 hr_utility.set_location(gv_package || lv_procedure_name, 10);
895 ln_step := 1;
896
897 open c_get_payroll_id(p_xfr_action_id); --added for the bug 14605761
898 fetch c_get_payroll_id into ln_payroll_id;
899 close c_get_payroll_id;
900
901
902 IF p_legislation_code = 'US' THEN
903
904 if pay_emp_action_arch.gv_multi_payroll_pymt = 'Y' AND p_arch_bal_info = 'Y' then
905 open c_multi_asg_prev_information(p_assignment_id,
906 p_action_info_category,
907 p_xfr_action_id,
908 ln_payroll_id, --added for the bug 14605761
909 p_curr_effective_date);
910 fetch c_multi_asg_prev_information into ld_last_xfr_eff_date
911 ,ln_last_xfr_action_id;
912 if c_multi_asg_prev_information%notfound then
913 hr_utility.trace('This process has not been run earlier');
914 end if;
915 close c_multi_asg_prev_information;
916
917 else
918
919 open c_prev_run_information(p_assignment_id,
920 p_action_info_category,
921 p_xfr_action_id,
922 p_curr_effective_date);
923 fetch c_prev_run_information into ld_last_xfr_eff_date
924 ,ln_last_xfr_action_id;
925 if c_prev_run_information%notfound then
926 hr_utility.trace('This process has not been run earlier');
927 end if;
928 close c_prev_run_information ;
929 end if;
930
931 ELSE
932
933 if pay_emp_action_arch.gv_multi_payroll_pymt = 'Y' then
934 open c_multi_asg_prev_information(p_assignment_id,
935 p_action_info_category,
936 p_xfr_action_id,
937 ln_payroll_id, --added for the bug 14605761
938 p_curr_effective_date);
939 fetch c_multi_asg_prev_information into ld_last_xfr_eff_date
940 ,ln_last_xfr_action_id;
941 if c_multi_asg_prev_information%notfound then
942 hr_utility.trace('This process has not been run earlier');
943 end if;
944 close c_multi_asg_prev_information;
945
946 else
947
948 open c_prev_run_information(p_assignment_id,
949 p_action_info_category,
950 p_xfr_action_id,
951 p_curr_effective_date);
952 fetch c_prev_run_information into ld_last_xfr_eff_date
953 ,ln_last_xfr_action_id;
954 if c_prev_run_information%notfound then
955 hr_utility.trace('This process has not been run earlier');
956 end if;
957 close c_prev_run_information ;
958 end if;
959
960 END IF;
961 ln_step := 5;
962 if ld_last_xfr_eff_date is not null then
963 if trunc(ld_last_xfr_eff_date,'Y') < trunc(p_curr_effective_date,'Y')
964 then
965 ld_last_xfr_eff_date := null;
966 ln_last_xfr_action_id := null;
967 end if;
968 end if;
969 hr_utility.trace('ld_last_xfr_eff_date '||to_char(ld_last_xfr_eff_date));
970 hr_utility.trace('ln_last_xfr_action_id '|| ln_last_xfr_action_id);
971
972 p_last_xfr_eff_date := ld_last_xfr_eff_date;
973 p_last_xfr_action_id := ln_last_xfr_action_id;
974
975 hr_utility.set_location(gv_package || lv_procedure_name, 50);
976 ln_step := 10;
977
978 EXCEPTION
979 when others then
980 lv_error_message := 'Error at step ' || ln_step || ' in ' ||
981 gv_package || lv_procedure_name;
982
983 hr_utility.trace(lv_error_message || '-' || sqlerrm);
984
985 lv_error_message :=
986 pay_emp_action_arch.set_error_message(lv_error_message);
987
988 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
989 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
990 hr_utility.raise_error;
991
992 END get_last_xfr_info;
993
994 /* End : Bug 8688998 */
995
996 /******************************************************************
997 Name : get_last_pymt_info
998 Purpose :
999 Arguments :
1000 Notes :
1001 ******************************************************************/
1002 PROCEDURE get_last_pymt_info(p_assignment_id in number
1003 ,p_curr_pymt_eff_date in date
1004 ,p_last_pymt_eff_date out nocopy date
1005 ,p_last_pymt_action_id out nocopy number
1006 )
1007 IS
1008 cursor c_last_payment_info(cp_assignment_id in number
1009 ,cp_curr_pymt_eff_date in date) is
1010
1011 select ppa.effective_date, paa.assignment_action_id
1012 from pay_payroll_actions ppa,
1013 pay_assignment_actions paa
1014 where paa.assignment_id = p_assignment_id
1015 and ppa.payroll_action_id = paa.payroll_action_id
1016 and ppa.action_type in ('R','Q')
1017 and ppa.effective_date < p_curr_pymt_eff_date
1018 and ppa.effective_date in
1019 ( select /*+ index(ppa1, pay_payroll_Actions_pk) */
1020 max(ppa1.effective_date)
1021 from pay_payroll_actions ppa1,
1022 pay_assignment_actions paa1
1023 where ppa1.payroll_action_id = paa1.payroll_action_id
1024 and ppa1.action_type in ('R','Q')
1025 and paa1.assignment_id = p_assignment_id
1026 and ppa1.effective_date < p_curr_pymt_eff_date);
1027
1028 ld_last_pymt_eff_date DATE;
1029 ln_last_pymt_action_id NUMBER;
1030 lv_procedure_name VARCHAR2(100) := '.get_last_pymt_info';
1031 lv_error_message VARCHAR2(200);
1032 ln_step NUMBER;
1033
1034 BEGIN
1035 hr_utility.set_location(gv_package || lv_procedure_name, 10);
1036 ln_step := 1;
1037 open c_last_payment_info(p_assignment_id,p_curr_pymt_eff_date);
1038 fetch c_last_payment_info into ld_last_pymt_eff_date,
1039 ln_last_pymt_action_id ;
1040 close c_last_payment_info ;
1041
1042 ln_step := 5;
1043 p_last_pymt_eff_date := ld_last_pymt_eff_date;
1044 p_last_pymt_action_id := ln_last_pymt_action_id;
1045
1046 hr_utility.set_location(gv_package || lv_procedure_name, 100);
1047 ln_step := 10;
1048
1049 EXCEPTION
1050 when others then
1051 lv_error_message := 'Error at step ' || ln_step || ' in ' ||
1052 gv_package || lv_procedure_name;
1053
1054 hr_utility.trace(lv_error_message || '-' || sqlerrm);
1055
1056 lv_error_message :=
1057 pay_emp_action_arch.set_error_message(lv_error_message);
1058
1059 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
1060 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
1061 hr_utility.raise_error;
1062
1063 END get_last_pymt_info;
1064
1065
1066 /******************************************************************
1067 Name : check_hours_by_rate
1068 Purpose : The procedure checks whether element has already been
1069 archived or not (Canadian Requirement).
1070 Arguments :
1071 Notes :
1072 ******************************************************************/
1073 PROCEDURE check_hours_by_rate(
1074 p_xfr_action_id in number
1075 ,p_puv_assignment_action_id in number
1076 ,p_element_classification_name in varchar2
1077 ,p_reporting_name in varchar2
1078 ,p_element_type_id in number
1079 ,p_primary_balance_id in number
1080 ,p_processing_priority in number
1081 ,p_tax_unit_id in number
1082 ,p_pymt_eff_date in date
1083 ,p_ytd_balcall_aaid in number
1084 ,p_ytd_defined_balance_id in number
1085 ,p_ytd_hours_balance_id in number
1086 ,p_rate_exists out nocopy varchar2
1087 )
1088
1089 IS
1090 lv_procedure_name VARCHAR2(100) := '.check_hours_by_rate';
1091 lv_error_message VARCHAR2(200);
1092 ln_step NUMBER;
1093
1094 BEGIN
1095 ln_step := 1;
1096 p_rate_exists := 'N';
1097
1098 hr_utility.set_location(gv_package || lv_procedure_name, 10);
1099 if pay_ac_action_arch.lrr_act_tab.count > 0 then
1100 for i in pay_ac_action_arch.lrr_act_tab.first..
1101 pay_ac_action_arch.lrr_act_tab.last
1102 loop
1103 if ( ( pay_ac_action_arch.lrr_act_tab(i).action_context_id =
1104 p_xfr_action_id ) and
1105 ( pay_ac_action_arch.lrr_act_tab(i).act_info2 =
1106 p_element_type_id ) )
1107 then
1108 p_rate_exists := 'Y';
1109 exit;
1110 end if;
1111 end loop;
1112 end if;
1113 hr_utility.trace('p_rate_exists = ' || p_rate_exists);
1114
1115 hr_utility.set_location(gv_package || lv_procedure_name, 20);
1116 ln_step := 10;
1117
1118 EXCEPTION
1119 when others then
1120 lv_error_message := 'Error at step ' || ln_step || ' in ' ||
1121 gv_package || lv_procedure_name;
1122
1123 hr_utility.trace(lv_error_message || '-' || sqlerrm);
1124
1125 lv_error_message :=
1126 pay_emp_action_arch.set_error_message(lv_error_message);
1127
1128 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
1129 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
1130 hr_utility.raise_error;
1131
1132 END check_hours_by_rate;
1133
1134
1135 /******************************************************************
1136 Name : populate_elements
1137 Purpose :
1138 Arguments :
1139 Notes :
1140 ******************************************************************/
1141 PROCEDURE populate_elements(p_xfr_action_id in number
1142 ,p_pymt_assignment_action_id in number
1143 ,p_pymt_eff_date in date
1144 ,p_element_type_id in number
1145 ,p_primary_balance_id in number
1146 ,p_hours_balance_id in number
1147 ,p_processing_priority in number
1148 ,p_element_classification_name in varchar2
1149 ,p_reporting_name in varchar2
1150 ,p_tax_unit_id in number
1151 ,p_ytd_balcall_aaid in number
1152 ,p_pymt_balcall_aaid in number
1153 ,p_jurisdiction_code in varchar2
1154 default null
1155 ,p_legislation_code in varchar2
1156 ,p_sepchk_flag in varchar2
1157 ,p_sepchk_run_type_id in number
1158 ,p_action_type in varchar2
1159 default null
1160 ,p_original_date_earned in varchar2
1161 default null
1162 ,p_effective_start_date in varchar2
1163 default null
1164 ,p_effective_end_date in varchar2
1165 default null
1166 ,p_category in varchar2
1167 default null
1168
1169 ,p_el_jurisdiction_code in varchar2
1170 default null
1171 ,p_final_rate in number
1172 default null
1173 ,p_ytd_flag in varchar2
1174 )
1175 IS
1176
1177 cursor c_non_sep_check(cp_pymt_assignment_action_id in number
1178 ,cp_sepchk_run_type_id in number) is
1179 select paa.assignment_action_id
1180 from pay_action_interlocks pai,
1181 pay_assignment_actions paa,
1182 pay_payroll_actions ppa
1183 where pai.locking_action_id = cp_pymt_assignment_action_id
1184 and paa.assignment_action_id = pai.locked_action_id
1185 and paa.payroll_action_id = ppa.payroll_action_id
1186 and ppa.action_type in ('Q','R')
1187 and ((nvl(paa.run_type_id, ppa.run_type_id) is null and
1188 source_action_id is null) or
1189 (nvl(paa.run_type_id, ppa.run_type_id) is not null and
1190 source_action_id is not null and
1191 paa.run_type_id <> cp_sepchk_run_type_id));
1192
1193 /*12819017-Start*/
1194 cursor c_hbr(cp_run_action_id in number,p_element_type_id in number) is
1195 select nvl(mul.multiple,1),mul.rate
1196 from pay_hours_by_rate_v mul
1197 where mul.assignment_action_id = cp_run_action_id
1198 and legislation_code = 'US'
1199 and mul.element_type_id >= 0 -- Bug 3370112
1200 and mul.element_type_id = p_element_type_id
1201 order by mul.processing_priority,mul.element_type_id;
1202
1203 ln_rate NUMBER(15,5);
1204 ln_multiple NUMBER(15,5);
1205 /*12819017-End*/
1206
1207 ln_current_hours NUMBER(15,2);
1208 ln_payments_amount NUMBER(15,2);
1209 ln_ytd_hours NUMBER(15,2);
1210 ln_ytd_amount NUMBER(17,2);
1211
1212 ln_pymt_defined_balance_id NUMBER;
1213 ln_pymt_hours_balance_id NUMBER;
1214 ln_ytd_defined_balance_id NUMBER;
1215 ln_ytd_hours_balance_id NUMBER;
1216
1217 lv_rate_exists VARCHAR2(1) := 'N';
1218 ln_nonpayroll_balcall_aaid NUMBER;
1219
1220 ln_index NUMBER ;
1221 lv_action_category VARCHAR2(50) := 'AC DEDUCTIONS';
1222 lv_procedure_name VARCHAR2(100):= '.populate_elements';
1223 lv_error_message VARCHAR2(200);
1224
1225 ln_step NUMBER;
1226
1227 BEGIN
1228 ln_step := 1;
1229 hr_utility.set_location(gv_package || lv_procedure_name, 10);
1230 hr_utility.trace('p_pymt_assignment_action_id '
1231 ||to_char(p_pymt_assignment_action_id));
1232 hr_utility.trace('p_pymt_eff_date ='||to_char(p_pymt_eff_date));
1233 hr_utility.trace('p_element_type_id ='||to_char(p_element_type_id));
1234 hr_utility.trace('p_primary_balance_id ='||to_char(p_primary_balance_id));
1235 hr_utility.trace('p_processing_priority='||to_char(p_processing_priority));
1236 hr_utility.trace('p_reporting_name ='||p_reporting_name);
1237 hr_utility.trace('p_ytd_balcall_aaid ='||to_char(p_ytd_balcall_aaid));
1238 hr_utility.trace('p_pymt_balcall_aaid ='||to_char(p_pymt_balcall_aaid));
1239 hr_utility.trace('p_legislation_code ='||p_legislation_code);
1240 hr_utility.trace('p_hours_balance_id ='||to_char(p_hours_balance_id));
1241
1242 if pay_emp_action_arch.gv_multi_leg_rule is null then
1243 pay_emp_action_arch.gv_multi_leg_rule
1244 := pay_emp_action_arch.get_multi_legislative_rule(
1245 p_legislation_code);
1246 end if;
1247
1248 ln_step := 2;
1249 if p_jurisdiction_code <> '00-000-0000' then
1250 pay_balance_pkg.set_context('JURISDICTION_CODE', p_jurisdiction_code);
1251 gv_ytd_balance_dimension := gv_dim_asg_jd_gre_ytd;
1252 else
1253 pay_balance_pkg.set_context('JURISDICTION_CODE', p_jurisdiction_code);
1254 if gv_reporting_level = 'TAXGRP' then
1255 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
1256 else
1257 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
1258 end if;
1259 end if;
1260
1261
1262 ln_step := 3;
1263 /*********************************************************
1264 ** Get the defined balance_id for YTD call as it will be
1265 ** same for all classification types.
1266 *********************************************************/
1267 ln_ytd_defined_balance_id
1268 := pay_emp_action_arch.get_defined_balance_id(
1269 p_primary_balance_id,
1270 gv_ytd_balance_dimension,
1271 p_legislation_code);
1272
1273 hr_utility.trace('ln_ytd_defined_balance_id = ' ||
1274 ln_ytd_defined_balance_id);
1275
1276 ln_step := 4;
1277 if p_hours_balance_id is not null then
1278 hr_utility.set_location(gv_package || lv_procedure_name, 20);
1279 ln_ytd_hours_balance_id
1280 := pay_emp_action_arch.get_defined_balance_id(
1281 p_hours_balance_id,
1282 gv_ytd_balance_dimension,
1283 p_legislation_code);
1284
1285 hr_utility.trace('ln_ytd_hours_balance_id = ' ||
1286 ln_ytd_hours_balance_id);
1287
1288 end if;
1289
1290 ln_step := 5;
1291 if p_legislation_code <> 'US' then
1292 hr_utility.set_location(gv_package || lv_procedure_name, 30);
1293 ln_step := 6;
1294 check_hours_by_rate(
1295 p_xfr_action_id => p_xfr_action_id
1296 ,p_puv_assignment_action_id => p_pymt_assignment_action_id
1297 ,p_element_classification_name => p_element_classification_name
1298 ,p_reporting_name => p_reporting_name
1299 ,p_element_type_id => p_element_type_id
1300 ,p_primary_balance_id => p_primary_balance_id
1301 ,p_processing_priority => p_processing_priority
1302 ,p_tax_unit_id => p_tax_unit_id
1303 ,p_pymt_eff_date => p_pymt_eff_date
1304 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
1305 ,p_ytd_defined_balance_id => ln_ytd_defined_balance_id
1306 ,p_ytd_hours_balance_id => ln_ytd_hours_balance_id
1307 ,p_rate_exists => lv_rate_exists
1308 );
1309 end if;
1310
1311 hr_utility.trace('lv_rate_exists = ' || lv_rate_exists);
1312
1313 if lv_rate_exists = 'N' then
1314 ln_step := 7;
1315 hr_utility.set_location(gv_package || lv_procedure_name, 40);
1316 if ln_ytd_defined_balance_id is not null then
1317 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
1318 ln_ytd_defined_balance_id,
1319 p_ytd_balcall_aaid),0);
1320 end if;
1321
1322 if p_hours_balance_id is not null then
1323 hr_utility.set_location(gv_package || lv_procedure_name, 50);
1324 if ln_ytd_hours_balance_id is not null then
1325 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
1326 ln_ytd_hours_balance_id,
1327 p_ytd_balcall_aaid),0);
1328 hr_utility.set_location(gv_package || lv_procedure_name, 60);
1329 end if;
1330 end if; --Hours
1331
1332 ln_step := 8;
1333 if p_pymt_balcall_aaid is not null then
1334 ln_step := 10;
1335 /* Added dimension _ASG_GRE_RUN for reversals and Balance
1336 Adjustments for Canada. Bug#3498653 */
1337 if p_action_type in ('B','V') then
1338 ln_pymt_defined_balance_id
1339 := pay_emp_action_arch.get_defined_balance_id(
1340 p_primary_balance_id,
1341 '_ASG_GRE_RUN',
1342 p_legislation_code);
1343 else
1344 if pay_emp_action_arch.gv_multi_leg_rule = 'Y' then
1345 ln_pymt_defined_balance_id
1346 := pay_emp_action_arch.get_defined_balance_id(
1347 p_primary_balance_id,
1348 '_ASG_PAYMENTS',
1349 p_legislation_code);
1350 else
1351 ln_pymt_defined_balance_id
1352 := pay_emp_action_arch.get_defined_balance_id(
1353 p_primary_balance_id,
1354 '_PAYMENTS',
1355 p_legislation_code);
1356 end if;
1357 end if; -- p_action_type in ('B','V')
1358 /* end of addition for Reversals and bal adjustments */
1359 hr_utility.trace('ln_pymt_defined_balance_id ' ||
1360 ln_pymt_defined_balance_id);
1361
1362 if ln_pymt_defined_balance_id is not null then
1363 ln_payments_amount := nvl(pay_balance_pkg.get_value(
1364 ln_pymt_defined_balance_id,
1365 p_pymt_balcall_aaid),0);
1366 hr_utility.trace('ln_payments_amount = ' ||ln_payments_amount);
1367 end if;
1368
1369 if p_hours_balance_id is not null then
1370 /* Added dimension _ASG_GRE_RUN for reversals and Balance
1371 Adjustments for Canada. Bug#3498653 */
1372 if p_action_type in ('B','V') then
1373 ln_pymt_hours_balance_id
1374 := pay_emp_action_arch.get_defined_balance_id(
1375 p_hours_balance_id
1376 ,'_ASG_GRE_RUN'
1377 ,p_legislation_code);
1378 else
1379 if pay_emp_action_arch.gv_multi_leg_rule = 'Y' then
1380 ln_pymt_hours_balance_id
1381 := pay_emp_action_arch.get_defined_balance_id(
1382 p_hours_balance_id
1383 ,'_ASG_PAYMENTS'
1384 ,p_legislation_code);
1385 else
1386 ln_pymt_hours_balance_id
1387 := pay_emp_action_arch.get_defined_balance_id(
1388 p_hours_balance_id
1389 ,'_PAYMENTS'
1390 ,p_legislation_code);
1391 end if;
1392 end if; -- p_action_type in ('B','V')
1393 /* end of addition for reversals and bal adjustments */
1394 hr_utility.trace('ln_pymt_hours_balance_id ' ||
1395 ln_pymt_hours_balance_id);
1396
1397 if ln_pymt_hours_balance_id is not null then
1398 ln_current_hours := nvl(pay_balance_pkg.get_value(
1399 ln_pymt_hours_balance_id,
1400 p_pymt_balcall_aaid),0);
1401 end if;
1402 hr_utility.set_location(gv_package || lv_procedure_name, 120);
1403 end if; --Hours
1404 end if; -- p_pymt_balcall_aaid is not null
1405
1406 ln_step := 15;
1407 if nvl(ln_ytd_amount, 0) <> 0 or nvl(ln_payments_amount, 0) <> 0 or (gv_ytd_amount <> ln_payments_amount and p_ytd_flag = 'Y')
1408 or nvl(ln_ytd_hours,0) <> 0
1409 then -- bug 15976832, added ln_ytd_hours to the above if condition
1410 ln_index := pay_ac_action_arch.lrr_act_tab.count;
1411 if p_element_classification_name in ('Earnings',
1412 'Supplemental Earnings',
1413 'Taxable Benefits',
1414 'Imputed Earnings',
1415 'Non-payroll Payments',
1416 'Alien/Expat Earnings') then
1417 hr_utility.set_location(gv_package || lv_procedure_name, 125);
1418 lv_action_category := 'AC EARNINGS';
1419 /* bug 6702864 We are not subtracting the Retro amount from the base element so added the if condition */
1420 /* pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
1421 := fnd_number.number_to_canonical(ln_current_hours);
1422 */
1423 IF p_ytd_flag = 'N' then
1424 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
1425 := fnd_number.number_to_canonical(ln_current_hours);
1426 ELSE
1427 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
1428 := fnd_number.number_to_canonical((ln_current_hours) - gv_ytd_hour);
1429 END IF;
1430
1431 IF ln_current_hours <> 0 AND ln_payments_amount <> 0 THEN
1432 /*12819017-Start*/
1433 open c_hbr(p_ytd_balcall_aaid,p_element_type_id);
1434 loop
1435 fetch c_hbr into ln_multiple,ln_rate;
1436 hr_utility.set_location(gv_package || lv_procedure_name, 1251);
1437 if c_hbr%notfound then
1438 hr_utility.set_location(gv_package || lv_procedure_name, 1252);
1439 exit;
1440 end if;
1441 end loop;
1442 close c_hbr;
1443 --Added ln_rate in the If condition for a TimeEntryWages Element with a Payvalue keyed in.
1444 --In that case we dont need to derive rate (however a Hours By Rate entry will not be created for that TEW)
1445
1446 --IF ln_multiple <> 1 OR ln_rate IS NULL THEN /*12819017-End*/
1447 IF round(ln_rate,5) <> round((ln_payments_amount/ln_current_hours),5) OR ln_rate IS NULL THEN /*14219126*/
1448 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22:=
1449 round((ln_payments_amount/ln_current_hours),5);/*Bug 3311866 -- 12819017*/
1450 hr_utility.trace('Rate derived as multiple is not one ' || round((ln_payments_amount/ln_current_hours),5));
1451 /*12819017-Start*/
1452 ELSE
1453 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22:=ln_rate;
1454 hr_utility.trace('Rate Not derived as multiple is one ' || ln_rate);
1455 END IF;/*12819017-End*/
1456
1457 ELSE
1458 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 := null;
1459 END IF;
1460
1461 IF p_ytd_flag = 'N' then
1462 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
1463 := fnd_number.number_to_canonical(ln_ytd_hours);
1464 ELSE
1465 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
1466 := fnd_number.number_to_canonical((ln_ytd_hours) - gv_ytd_hour);
1467 END IF;
1468 end if;
1469
1470 hr_utility.set_location(gv_package || lv_procedure_name, 130);
1471 /* Insert this into the plsql table if Current or YTD
1472 amount is not Zero */
1473 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
1474 := lv_action_category;
1475 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
1476 := nvl(p_jurisdiction_code, '00-000-0000');
1477 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
1478 := p_xfr_action_id;
1479 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
1480 := p_element_classification_name;
1481 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
1482 := p_element_type_id;
1483 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
1484 := p_primary_balance_id;
1485 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
1486 := p_processing_priority;
1487 /* bug 6702864 We are not subtracting the Retro amount from the base element so added the if condition */
1488 /* pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
1489 := fnd_number.number_to_canonical(nvl(ln_payments_amount,0));
1490 */
1491
1492 IF p_ytd_flag = 'N' then
1493 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
1494 := fnd_number.number_to_canonical(nvl(ln_payments_amount,0));
1495 ELSE
1496 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
1497 := fnd_number.number_to_canonical(nvl(ln_payments_amount,0) - gv_ytd_amount);
1498 END IF;
1499
1500 hr_utility.trace('ln_amount := '||fnd_number.number_to_canonical(nvl(ln_payments_amount,0)));
1501
1502 IF p_ytd_flag = 'N' then
1503 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
1504 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
1505 ELSE
1506 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
1507 := fnd_number.number_to_canonical((ln_ytd_amount) - gv_ytd_amount);
1508 END IF;
1509 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
1510 := p_reporting_name;
1511 IF lv_action_category = 'AC DEDUCTIONS' THEN
1512 pay_ac_action_arch.lrr_act_tab(ln_index).act_info24
1513 := p_reporting_name;
1514 END IF;
1515 pay_ac_action_arch.lrr_act_tab(ln_index).act_info17
1516 := p_original_date_earned;
1517 hr_utility.trace('p_original_date_earned :=' || p_original_date_earned );
1518 pay_ac_action_arch.lrr_act_tab(ln_index).act_info18
1519 := p_effective_start_date;
1520 hr_utility.trace('p_effective_start_date := ' || p_effective_start_date );
1521 pay_ac_action_arch.lrr_act_tab(ln_index).act_info19
1522 := p_effective_end_date ;
1523 hr_utility.trace('p_effective_end_date:= ' || p_effective_end_date );
1524 pay_ac_action_arch.lrr_act_tab(ln_index).act_info20
1525 := p_category;
1526 hr_utility.trace('p_category ' || p_category );
1527 pay_ac_action_arch.lrr_act_tab(ln_index).act_info21
1528 := p_el_jurisdiction_code;
1529
1530 end if;
1531
1532 end if; -- lv_rate_exists = 'N'
1533
1534
1535
1536 hr_utility.set_location(gv_package || lv_procedure_name, 150);
1537 ln_step := 20;
1538
1539 EXCEPTION
1540 when others then
1541 hr_utility.set_location(gv_package || lv_procedure_name, 200);
1542 lv_error_message := 'Error at step ' || ln_step ||
1543 ' in ' || gv_package || lv_procedure_name;
1544
1545 hr_utility.trace(lv_error_message || '-' || sqlerrm);
1546
1547 lv_error_message :=
1548 pay_emp_action_arch.set_error_message(lv_error_message);
1549
1550 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
1551 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
1552 hr_utility.raise_error;
1553
1554 END populate_elements;
1555
1556 /******************************************************************
1557 Name : populate_hours_x_rate
1558 Purpose : The procedure gets all 'Hours by Rate' elements which
1559 have been processed in a given pre-payment.
1560 This also gets current and YTD amount,
1561 stores the values in a PL/SQL table.
1562 Arguments :
1563 Notes :
1564 ******************************************************************/
1565 PROCEDURE populate_hours_x_rate(p_xfr_action_id in number
1566 ,p_curr_pymt_action_id in number
1567 ,p_curr_pymt_eff_date in date
1568 ,p_assignment_id in number
1569 ,p_tax_unit_id in number
1570 ,p_sepchk_run_type_id in number
1571 ,p_sepchk_flag in varchar2
1572 ,p_pymt_balcall_aaid in number
1573 ,p_ytd_balcall_aaid in number
1574 ,p_legislation_code in varchar2
1575 )
1576
1577 IS
1578
1579 cursor c_run_aa_id(cp_pymt_action_id in number
1580 ,cp_assignment_id in number ) is
1581 select paa.assignment_action_id
1582 ,paa.run_type_id
1583 from pay_assignment_actions paa,
1584 pay_action_interlocks pai
1585 where pai.locking_action_id = cp_pymt_action_id
1586 and paa.assignment_action_id = pai.locked_action_id
1587 and paa.assignment_id = cp_assignment_id
1588 and paa.run_type_id is not null
1589 and not exists ( select 1
1590 from pay_run_types_f prt
1591 where prt.legislation_code = 'CA'
1592 and prt.run_type_id = paa.run_type_id
1593 and prt.run_method = 'C' );
1594
1595 cursor c_hbr(cp_assignment_action_id in number) is
1596 select hours.element_type_id,
1597 hours.element_name,
1598 hours.processing_priority,
1599 hours.rate,
1600 hours.multiple,
1601 hours.hours,
1602 hours.amount,
1603 hours.assignment_action_id
1604 from pay_hours_by_rate_v hours
1605 where hours.assignment_action_id = cp_assignment_action_id
1606 and legislation_code in ('US', 'CA') -- Bug 3370112
1607 and hours.element_type_id >= 0 -- Bug 3370112
1608 order by hours.processing_priority,hours.element_type_id;
1609
1610 cursor c_reporting_name(cp_element_type_id in number
1611 ,cp_language in varchar2) is
1612 select nvl(reporting_name, element_name)
1613 from pay_element_types_f_tl
1614 where element_type_id = cp_element_type_id
1615 and language = cp_language;
1616
1617 cursor c_classification(cp_element_type_id in number ) is
1618 select pec.classification_name,
1619 pet.element_information10 primary_balance_id,
1620 pet.element_information12 hours_balance_id
1621 from pay_element_types_f pet,
1622 pay_element_classifications pec
1623 where pet.element_type_id = cp_element_type_id
1624 and p_curr_pymt_eff_date between pet.effective_start_date
1625 and pet.effective_end_date
1626 and pec.classification_id = pet.classification_id;
1627
1628 cursor c_retro(cp_run_action_id in number
1629 ,cp_element_type_id in number
1630 ,ln_pymt_eff_date in Date) is -- Bug# 16318258
1631 select pepd.element_entry_id,
1632 sum(decode(piv.name, 'Pay Value', prrv.result_value)),
1633 sum(decode(piv.name, 'Hours', prrv.result_value)),
1634 nvl(sum(decode(piv.name, 'Multiple', prrv.result_value)),1),
1635 sum(decode(piv.name, 'Rate', prrv.result_value))
1636 from pay_run_results prr,
1637 pay_run_result_values prrv,
1638 pay_input_values_f piv,
1639 pay_entry_process_details pepd
1640 where piv.input_value_id = prrv.input_value_id
1641 and prr.element_type_id = cp_element_type_id
1642 and prr.run_result_id = prrv.run_result_id
1643 and prr.assignment_action_id = cp_run_action_id
1644 and prr.source_type = 'E'
1645 and pepd.element_entry_id = prr.source_id
1646 and pepd.source_asg_action_id is not null
1647 and result_value is not null
1648 and ln_pymt_eff_date between piv.effective_start_date and piv.effective_end_date -- Bug# 16318258
1649 group by pepd.element_entry_id;
1650
1651
1652 ln_element_type_id NUMBER;
1653 lv_element_name VARCHAR2(150);
1654 ln_processing_priority NUMBER;
1655
1656 ln_rate NUMBER;
1657 ln_multiple NUMBER;
1658 ln_hours NUMBER;
1659 ln_amount NUMBER;
1660
1661 lv_reporting_name VARCHAR2(150);
1662 lv_classification_name VARCHAR2(150);
1663 ln_primary_balance_id NUMBER;
1664 ln_hours_balance_id NUMBER;
1665
1666 ln_payments_amount NUMBER(15,2);
1667 ln_ytd_hours NUMBER(15,2) := 0;
1668 ln_ytd_amount NUMBER(15,2) := 0;
1669
1670 ln_tot_pymt_amt NUMBER(15,2);
1671 ln_pymt_def_bal_id NUMBER;
1672 ln_pymt_bal_amt NUMBER(15,2);
1673
1674 ln_index NUMBER ;
1675
1676 prev_element_type_id NUMBER := -1;
1677 prev_run_asg_act_id NUMBER := -1;
1678
1679 ln_gre_ytd_defined_bal_id NUMBER;
1680 ln_tg_ytd_defined_bal_id NUMBER;
1681 ln_hours_ytd_defined_bal_id NUMBER;
1682 lv_procedure_name VARCHAR2(100) := '.populate_hours_x_rate';
1683 lv_error_message VARCHAR2(200);
1684 ln_step NUMBER;
1685
1686 ln_assignment_action_id NUMBER;
1687 ln_run_type_id NUMBER;
1688
1689 ln_retro_rate NUMBER(15,5);
1690 ln_retro_multiple NUMBER(15,5);
1691 ln_retro_hours NUMBER(15,5);
1692 ln_retro_payvalue NUMBER(15,5);
1693 ln_retro_element_entry NUMBER;
1694
1695 i NUMBER := 0;
1696
1697 hbr pay_ac_action_arch.hbr_table;
1698
1699 BEGIN
1700
1701
1702 ln_step := 1;
1703 hr_utility.set_location(gv_package || lv_procedure_name, 10);
1704 hr_utility.trace('HBR p_curr_pymt_action_id : ' || p_curr_pymt_action_id);
1705 hr_utility.trace('HBR p_assignment_id : ' || p_assignment_id);
1706
1707 hbr.delete;
1708 ln_tot_pymt_amt := 0;
1709
1710 open c_run_aa_id(p_curr_pymt_action_id, p_assignment_id);
1711 loop
1712 fetch c_run_aa_id into ln_assignment_action_id
1713 ,ln_run_type_id;
1714 exit when c_run_aa_id%notfound;
1715
1716 hr_utility.trace('HBR ln_assignment_action_id : ' ||
1717 ln_assignment_action_id);
1718
1719 ln_step := 2;
1720
1721 open c_hbr(ln_assignment_action_id);
1722 loop
1723 fetch c_hbr into hbr(i);
1724
1725 exit when c_hbr%notfound;
1726
1727 i := i + 1;
1728 end loop;
1729 close c_hbr;
1730
1731 end loop;
1732 close c_run_aa_id;
1733
1734 if hbr.count > 0 then
1735 hr_utility.trace(' I came in first if ');
1736
1737 for j in hbr.first..hbr.last + 1
1738 loop
1739
1740 if ( j <> i ) then
1741 hr_utility.trace(' It came here one');
1742 ln_element_type_id := hbr(j).element_type_id;
1743 lv_element_name := hbr(j).element_name;
1744 ln_processing_priority := hbr(j).processing_priority;
1745 ln_rate := round(hbr(j).rate,5); --Bug 8544619
1746 ln_multiple := hbr(j).multiple;
1747 ln_hours := hbr(j).hours;
1748 ln_amount := hbr(j).amount;
1749 hr_utility.trace('element_type_id'||hbr(j).element_type_id);
1750 hr_utility.trace('element_name'||hbr(j).element_name);
1751 hr_utility.trace('hbr(j).rate'||hbr(j).rate);
1752 end if;
1753
1754 ln_step := 3;
1755
1756 if ( ( ln_element_type_id <> prev_element_type_id and
1757 prev_element_type_id <> -1 ) or
1758 ( j = i )
1759 ) then
1760
1761 hr_utility.trace('I came here two');
1762
1763 ln_step := 5;
1764 if gv_reporting_level = 'TAXGRP' then
1765 ln_tg_ytd_defined_bal_id
1766 := pay_emp_action_arch.get_defined_balance_id
1767 (ln_primary_balance_id,
1768 gv_dim_asg_tg_ytd,
1769 p_legislation_code);
1770 ln_hours_ytd_defined_bal_id
1771 := pay_emp_action_arch.get_defined_balance_id
1772 (ln_hours_balance_id,
1773 gv_dim_asg_tg_ytd,
1774 p_legislation_code);
1775 if ln_tg_ytd_defined_bal_id is not null then
1776 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
1777 ln_tg_ytd_defined_bal_id,
1778 p_ytd_balcall_aaid),0);
1779 end if;
1780 if ln_hours_ytd_defined_bal_id is not null then
1781 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
1782 ln_hours_ytd_defined_bal_id,
1783 p_ytd_balcall_aaid),0);
1784 end if;
1785 else
1786 ln_step := 10;
1787 ln_gre_ytd_defined_bal_id
1788 := pay_emp_action_arch.get_defined_balance_id
1789 (ln_primary_balance_id,
1790 gv_dim_asg_gre_ytd,
1791 p_legislation_code);
1792 ln_hours_ytd_defined_bal_id
1793 := pay_emp_action_arch.get_defined_balance_id
1794 (ln_hours_balance_id,
1795 gv_dim_asg_gre_ytd,
1796 p_legislation_code);
1797 if ln_gre_ytd_defined_bal_id is not null then
1798 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
1799 ln_gre_ytd_defined_bal_id,
1800 p_ytd_balcall_aaid),0);
1801 end if;
1802 if ln_hours_ytd_defined_bal_id is not null then
1803 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
1804 ln_hours_ytd_defined_bal_id,
1805 p_ytd_balcall_aaid),0);
1806 end if;
1807 end if;
1808
1809 hr_utility.trace('ytd balance = ' || ln_ytd_amount);
1810 hr_utility.trace('ytd hours = ' || ln_ytd_hours);
1811 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
1812 := ln_ytd_amount;
1813 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
1814 := ln_ytd_hours;
1815
1816 ln_ytd_amount := 0;
1817 ln_ytd_hours := 0;
1818
1819 ln_pymt_def_bal_id
1820 := pay_emp_action_arch.get_defined_balance_id
1821 (ln_primary_balance_id,
1822 '_ASG_PAYMENTS',
1823 p_legislation_code);
1824
1825 ln_pymt_bal_amt := nvl(pay_balance_pkg.get_value(
1826 ln_pymt_def_bal_id,
1827 p_pymt_balcall_aaid),0);
1828
1829 hr_utility.trace('ln_pymt_bal_amt : '||ln_pymt_bal_amt);
1830 hr_utility.trace('ln_tot_pymt_amt : '||ln_tot_pymt_amt);
1831 hr_utility.trace('prev_element_type_id: '||prev_element_type_id);
1832 hr_utility.trace('prev_run_asg_act_id : '||prev_run_asg_act_id);
1833
1834 IF ( ln_tot_pymt_amt <> ln_pymt_bal_amt ) THEN
1835
1836 hr_utility.trace('i came here third');
1837
1838 OPEN c_retro(prev_run_asg_act_id, prev_element_type_id,p_curr_pymt_eff_date); -- Bug# 16318258
1839 LOOP
1840 hr_utility.set_location(gv_package || lv_procedure_name,55);
1841 fetch c_retro into ln_retro_element_entry
1842 ,ln_retro_payvalue
1843 ,ln_retro_hours
1844 ,ln_retro_multiple
1845 ,ln_retro_rate;
1846 if c_retro%notfound then
1847 exit;
1848 end if;
1849
1850 hr_utility.trace('HBR Retro Values');
1851 hr_utility.trace('Pay Value='|| ln_retro_payvalue);
1852 hr_utility.trace('Hours ='|| ln_retro_hours);
1853 hr_utility.trace('Rate ='|| ln_retro_rate);
1854 hr_utility.trace('Multiple ='|| ln_retro_multiple);
1855
1856 IF nvl(ln_retro_multiple,0) = 0 THEN
1857 ln_retro_multiple := 1;
1858 END IF;
1859
1860 ln_index := pay_ac_action_arch.lrr_act_tab.count;
1861 hr_utility.trace('ln_index = ' || ln_index);
1862
1863
1864 ln_step := 20;
1865 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
1866 := 'AC EARNINGS';
1867
1868 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
1869 := '00-000-0000';
1870 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
1871 := lv_classification_name;
1872 hr_utility.trace('action_info_category' || lv_classification_name);
1873 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
1874 := prev_element_type_id;
1875 hr_utility.trace('act_info2' || prev_element_type_id);
1876 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
1877 := ln_primary_balance_id;
1878 hr_utility.trace('act_info6' || ln_primary_balance_id);
1879 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
1880 := ln_processing_priority;
1881 hr_utility.trace('act_info7' || ln_processing_priority);
1882 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
1883 := fnd_number.number_to_canonical(ln_retro_payvalue);
1884 hr_utility.trace('act_info8' || fnd_number.number_to_canonical(ln_retro_payvalue));
1885 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
1886 := 0;
1887 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
1888 := lv_reporting_name;
1889 hr_utility.trace('act_info10' || lv_reporting_name);
1890 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
1891 := fnd_number.number_to_canonical(ln_retro_hours);
1892 hr_utility.trace('act_info11' || fnd_number.number_to_canonical(ln_retro_hours));
1893 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
1894 := p_xfr_action_id;
1895 hr_utility.trace('action_context_id' || p_xfr_action_id);
1896
1897 pay_ac_action_arch.lrr_act_tab(ln_index).act_info13
1898 := fnd_number.number_to_canonical(ln_retro_rate * ln_retro_multiple);
1899 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 --13938951
1900 := fnd_number.number_to_canonical(ln_rate * nvl(ln_multiple,1));
1901 hr_utility.trace('act_info13' || fnd_number.number_to_canonical(ln_retro_rate * ln_retro_multiple));
1902 END LOOP;
1903 CLOSE c_retro;
1904 hr_utility.set_location(gv_package || lv_procedure_name, 77);
1905
1906 END IF;
1907
1908 ln_tot_pymt_amt := 0;
1909 ln_pymt_bal_amt := 0;
1910
1911 if ( j = i ) then
1912 exit;
1913 end if;
1914 end if;
1915
1916 hr_utility.trace('lv_element_name = ' || lv_element_name);
1917 hr_utility.trace('ln_rate = ' || ln_rate);
1918 hr_utility.trace('ln_amount = ' || ln_amount);
1919 hr_utility.trace('ln_multiple = ' || ln_multiple);
1920 hr_utility.trace('ln_hours = ' || ln_hours);
1921
1922 lv_reporting_name := lv_element_name;
1923
1924 ln_step := 15;
1925
1926 open c_reporting_name(ln_element_type_id,
1927 gv_person_lang);
1928 fetch c_reporting_name into lv_reporting_name;
1929 if ( c_reporting_name%notfound ) then
1930 lv_reporting_name := lv_element_name;
1931 end if;
1932 close c_reporting_name;
1933
1934 open c_classification(ln_element_type_id);
1935 fetch c_classification into lv_classification_name
1936 ,ln_primary_balance_id
1937 ,ln_hours_balance_id;
1938 close c_classification;
1939
1940 ln_payments_amount := ln_amount;
1941 ln_tot_pymt_amt := ln_tot_pymt_amt + ln_payments_amount;
1942
1943 /*Insert this into the plsql table */
1944
1945 hr_utility.set_location(gv_package || lv_procedure_name, 40);
1946 ln_index := pay_ac_action_arch.lrr_act_tab.count;
1947 hr_utility.trace('ln_index = ' || ln_index);
1948
1949
1950 ln_step := 20;
1951 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
1952 := 'AC EARNINGS';
1953 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
1954 := '00-000-0000';
1955 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
1956 := lv_classification_name;
1957 hr_utility.trace('action_info_category2' || lv_classification_name);
1958 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
1959 := ln_element_type_id;
1960 hr_utility.trace('act_info22' || prev_element_type_id);
1961 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
1962 := ln_primary_balance_id;
1963 hr_utility.trace('act_info62' || ln_primary_balance_id);
1964 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
1965 := ln_processing_priority;
1966 hr_utility.trace('act_info72' || ln_processing_priority);
1967 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
1968 := fnd_number.number_to_canonical(ln_payments_amount);
1969 hr_utility.trace('act_info82' || fnd_number.number_to_canonical(ln_retro_payvalue)); /* Bug 3311866*/
1970 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
1971 := fnd_number.number_to_canonical(ln_ytd_amount);
1972
1973 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
1974 := lv_reporting_name;
1975 hr_utility.trace('act_info102' || lv_reporting_name);
1976 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
1977 := fnd_number.number_to_canonical(ln_hours);
1978 hr_utility.trace('act_info112' || fnd_number.number_to_canonical(ln_retro_hours));
1979 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
1980 := p_xfr_action_id;
1981 -- pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
1982 -- := fnd_number.number_to_canonical(ln_ytd_hours);
1983 pay_ac_action_arch.lrr_act_tab(ln_index).act_info13
1984 := fnd_number.number_to_canonical(ln_rate * nvl(ln_multiple,1));
1985 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 --13938951
1986 := fnd_number.number_to_canonical(ln_rate * nvl(ln_multiple,1));
1987 hr_utility.trace('act_info13' || fnd_number.number_to_canonical(ln_retro_rate * ln_retro_multiple));
1988 prev_element_type_id := ln_element_type_id;
1989 prev_run_asg_act_id := hbr(j).run_asg_act_id;
1990 end loop;
1991 end if;
1992
1993 hr_utility.set_location(gv_package || lv_procedure_name, 40);
1994 ln_step := 25;
1995 --hr_utility.trace_off;
1996
1997 EXCEPTION
1998 when others then
1999 lv_error_message := 'Error at step ' || ln_step ||
2000 ' in ' || gv_package || lv_procedure_name;
2001
2002 hr_utility.trace(lv_error_message || '-' || sqlerrm);
2003
2004 lv_error_message :=
2005 pay_emp_action_arch.set_error_message(lv_error_message);
2006
2007 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
2008 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
2009 hr_utility.raise_error;
2010
2011 END populate_hours_x_rate;
2012
2013
2014 /******************************************************************
2015 Name : get_current_elements
2016 Purpose : The procedure gets all the elements which have
2017 been processed in a given pre-payment.
2018 It also calls the populate_elements procedure
2019 which calls the Current and YTD balances and
2020 stores the values in a PL/SQL table.
2021 Arguments :
2022 Notes :
2023 ******************************************************************/
2024 PROCEDURE get_current_elements(p_xfr_action_id in number
2025 ,p_curr_pymt_action_id in number
2026 ,p_curr_pymt_eff_date in date
2027 ,p_assignment_id in number
2028 ,p_tax_unit_id in number
2029 ,p_sepchk_run_type_id in number
2030 ,p_sepchk_flag in varchar2
2031 ,p_pymt_balcall_aaid in number
2032 ,p_ytd_balcall_aaid in number
2033 ,p_legislation_code in varchar2
2034 ,p_action_type in varchar2 default null
2035 )
2036
2037 IS
2038
2039
2040 CURSOR get_run_action_id(cp_pre_as_action_id in number
2041 ,cp_assignment_id in number
2042 ,cp_sepchk_run_type_id in number
2043 ,cp_element_type_id in number --#11897283
2044 ) IS
2045 SELECT paa_run.assignment_action_id
2046 FROM pay_action_interlocks pai
2047 ,pay_assignment_actions paa_run
2048 ,pay_payroll_actions ppa_run
2049 WHERE pai.locking_action_id = cp_pre_as_action_id
2050 AND pai.locked_action_id = paa_run.assignment_action_id
2051 AND paa_run.assignment_id = cp_assignment_id
2052 AND paa_run.payroll_action_id = ppa_run.payroll_action_id
2053 /* Added for Bug# 7580440 */
2054 AND ppa_run.action_type IN ('R', 'Q')
2055 AND ((nvl(paa_run.run_type_id, ppa_run.run_type_id) is null
2056 and paa_run.source_action_id is null) or
2057 (nvl(paa_run.run_type_id, ppa_run.run_type_id) is not null
2058 and paa_run.source_action_id is not null
2059 and paa_run.run_type_id <> cp_sepchk_run_type_id))
2060 /* Added for Bug#9207953 */
2061 /* AND NOT EXISTS
2062 ( SELECT 1
2063 FROM pay_assignment_actions paa_run2
2064 WHERE paa_run2.run_type_id is not null
2065 AND paa_run2.source_action_id is not null
2066 AND paa_run2.source_action_id = paa_run.source_action_id
2067 AND paa_run2.run_type_id = cp_sepchk_run_type_id
2068 )*/
2069 /* Added for Bug#11897283 */
2070 AND EXISTS
2071 (
2072 SELECT 1
2073 FROM pay_run_results prr
2074 WHERE prr.assignment_action_id = paa_run.assignment_action_id
2075 AND prr.element_type_id = cp_element_type_id);
2076
2077
2078 Cursor get_element_entry_id( cp_run_action_id in number ,
2079 cp_assignment_id in number ,
2080 cp_element_type_id in number ) IS
2081 SELECT distinct peef.element_entry_id
2082 FROM pay_element_entries_f peef,
2083 pay_assignment_actions paa,
2084 pay_payroll_actions ppa,
2085 per_time_periods ptp
2086 WHERE paa.assignment_action_id = cp_run_action_id
2087 AND ppa.payroll_action_id = paa.payroll_action_id
2088 AND ptp.payroll_id = ppa.payroll_id
2089 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
2090 AND peef.assignment_id = cp_assignment_id
2091 AND peef.element_type_id = cp_element_type_id
2092
2093 /* Commenting as Ele Entry Eff Start / End Date may not match the following
2094 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
2095 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
2096 End of Comment */
2097
2098 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ;
2099
2100 Cursor check_retro( cp_run_action_id in number ,
2101 cp_assignment_id in number ,
2102 cp_element_type_id in number ) IS
2103 SELECT distinct 'Y'
2104 FROM pay_element_entries_f peef,
2105 pay_assignment_actions paa,
2106 pay_payroll_actions ppa,
2107 per_time_periods ptp
2108 WHERE paa.assignment_action_id = cp_run_action_id
2109 AND ppa.payroll_action_id = paa.payroll_action_id
2110 AND ptp.payroll_id = ppa.payroll_id
2111 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
2112 AND peef.assignment_id = cp_assignment_id
2113 AND peef.element_type_id = cp_element_type_id
2114 AND peef.creator_type IN ('R', 'EE', 'RR', 'NR', 'PR') -- Changed 25.08.2007
2115
2116
2117 /* Commenting as Ele Entry Eff Start / End Date may not match the following
2118 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
2119 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
2120 End of Comment*/
2121
2122 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ;
2123
2124 CURSOR retro_parent_check_flag ( cp_run_action_id in number ,
2125 cp_assignment_id in number ,
2126 cp_element_type_id in number ) IS
2127 SELECT DISTINCT 'Y'
2128 FROM pay_element_entries_f peef,
2129 pay_assignment_actions paa,
2130 pay_payroll_actions ppa,
2131 per_time_periods ptp
2132 WHERE paa.assignment_action_id = cp_run_action_id
2133 AND ppa.payroll_action_id = paa.payroll_action_id
2134 AND ptp.payroll_id = ppa.payroll_id
2135 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
2136 AND peef.assignment_id = cp_assignment_id
2137 AND peef.element_type_id = cp_element_type_id
2138 AND peef.creator_type NOT IN ('R', 'EE', 'RR', 'NR', 'PR') -- Changed on 25.08.2007
2139
2140 /* Commenting as Ele Entry Eff Start / End Date may not match the following
2141 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
2142 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
2143 End of Comment */
2144
2145 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ;
2146
2147
2148 CURSOR archive_non_retro_elements ( cp_original_date_paid in varchar2,
2149 cp_element_entry_id in number,
2150 cp_run_assignment_action_id in number ) IS
2151
2152 select fnd_date.date_to_canonical(ptp.start_date),
2153 fnd_date.date_to_canonical(ptp.end_date),
2154 hr_general.decode_lookup
2155 (DECODE (UPPER (ec.classification_name),
2156 'EARNINGS', 'US_EARNINGS',
2157 'SUPPLEMENTAL EARNINGS', 'US_SUPPLEMENTAL_EARNINGS',
2158 'IMPUTED EARNINGS', 'US_IMPUTED_EARNINGS',
2159 'NON-PAYROLL PAYMENTS', 'US_PAYMENT',
2160 'ALIEN/EXPAT EARNINGS', 'PER_US_INCOME_TYPES',
2161 NULL
2162 ),
2163 et.element_information1
2164 ) CATEGORY
2165 from pay_assignment_actions paa,
2166 pay_payroll_actions ppa,
2167 per_time_periods ptp,
2168 pay_element_entries_f peef,
2169 pay_element_classifications ec,
2170 pay_element_types et
2171 where paa.assignment_action_id = cp_run_assignment_action_id
2172 and paa.payroll_action_id = ppa.payroll_action_id
2173 and ptp.payroll_id = ppa.payroll_id
2174 and cp_original_date_paid between ptp.start_date AND ptp.end_date
2175 and peef.element_entry_id = cp_element_entry_id
2176 and et.element_type_id = peef.element_type_id
2177 and et.classification_id = ec.classification_id
2178 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ; -- Bug# 16318258
2179
2180 CURSOR get_application_column_name IS
2181
2182 /* Modifying cursor for performance issue
2183 replacing table with FND_DESCR_FLEX_COLUMN_USAGES
2184 translation should not be an issue for US leg
2185
2186 SELECT application_column_name
2187 FROM FND_DESCR_FLEX_COL_USAGE_VL
2188 WHERE end_user_column_name = 'Originating Pay Period'
2189 AND upper(descriptive_flexfield_name) = upper('PAY_ELEMENT_ENTRIES')
2190 AND upper(descriptive_flex_context_code) = 'US EARNINGS';
2191 */
2192
2193 SELECT fnd_flex.application_column_name
2194 FROM fnd_application fnd_appl
2195 ,fnd_descr_flex_column_usages fnd_flex
2196 WHERE fnd_appl.application_short_name = 'PAY'
2197 AND fnd_appl.application_id = fnd_flex.application_id
2198 AND fnd_flex.descriptive_flexfield_name = 'PAY_ELEMENT_ENTRIES'
2199 AND UPPER(fnd_flex.descriptive_flex_context_code) = 'US EARNINGS'
2200 and fnd_flex.end_user_column_name = 'Originating Pay Period';
2201
2202 CURSOR get_num_addnl_elements ( cp_run_action_id IN NUMBER,
2203 cp_assignment_id IN NUMBER,
2204 cp_element_type_id IN NUMBER) IS
2205
2206 SELECT COUNT (*)
2207 FROM pay_element_entries_f peef,
2208 pay_assignment_actions paa,
2209 pay_payroll_actions ppa,
2210 per_time_periods ptp
2211 WHERE paa.assignment_action_id = cp_run_action_id
2212 AND ppa.payroll_action_id = paa.payroll_action_id
2213 AND ptp.payroll_id = ppa.payroll_id
2214 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
2215 AND peef.assignment_id = cp_assignment_id
2216 AND peef.element_type_id = cp_element_type_id
2217 AND peef.creator_type NOT IN ('R', 'EE', 'RR', 'NR', 'PR')
2218
2219 /* Commenting as Ele Entry Eff Start / End Date may not match the following
2220 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
2221 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
2222 End of Comment */
2223
2224 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ;
2225
2226 -- Added For Work At Home Condition
2227
2228 CURSOR c_cur_get_wrkathome(cp_assignment_id IN NUMBER,
2229 p_curr_pymt_eff_date in Date) is -- Bug# 16318258
2230 SELECT NVL(paf.work_at_home, 'N')
2231 ,ppf.person_id
2232 ,ppf.business_group_id
2233 FROM per_assignments_f paf
2234 ,per_all_people_f ppf
2235 WHERE paf.assignment_id = cp_assignment_id
2236 AND paf.person_id = ppf.person_id
2237 and p_curr_pymt_eff_date between paf.effective_start_date and paf.effective_end_date
2238 and p_curr_pymt_eff_date between ppf.effective_start_date and ppf.effective_end_date; -- Bug# 16318258
2239
2240 CURSOR c_cur_home_state_jd(cp_person_id IN NUMBER
2241 ,cp_bg_id IN NUMBER) IS
2242 SELECT pus.state_code || '-000-0000'
2243 FROM per_addresses pa
2244 ,pay_us_states pus
2245 WHERE pa.person_id = cp_person_id
2246 AND pa.primary_flag = 'Y'
2247 AND p_curr_pymt_eff_date between pa.date_from AND NVL(pa.date_to, hr_general.END_OF_TIME)
2248 AND pa.business_group_id = cp_bg_id
2249 AND pa.region_2 = pus.state_abbrev
2250 AND pa.style = p_legislation_code;
2251
2252 cursor c_cur_sp_action_elements(cp_pymt_action_id in number
2253 ,cp_assignment_id in number
2254 ,cp_sepchk_run_type in number
2255 ,cp_sepchk_flag in varchar2
2256 ) is
2257 select distinct prr.element_type_id,
2258 pec.classification_name,
2259 nvl(petl.reporting_name, petl.element_name),
2260 pet.element_information10,
2261 pet.element_information12,
2262 pet.processing_priority
2263 from pay_assignment_actions paa,
2264 pay_payroll_actions ppa,
2265 pay_run_results prr,
2266 pay_element_types_f pet,
2267 pay_element_classifications pec,
2268 pay_element_types_f_tl petl
2269 where paa.assignment_id = cp_assignment_id
2270 and prr.assignment_action_id = paa.assignment_action_id
2271 and cp_sepchk_flag = 'Y'
2272 and paa.assignment_action_id = cp_pymt_action_id
2273 and nvl(paa.run_type_id, cp_sepchk_run_type) = cp_sepchk_run_type
2274 and ppa.payroll_action_id = paa.payroll_action_id
2275 and pet.element_type_id = prr.element_type_id
2276 and pet.element_information10 is not null
2277 and ppa.effective_date between pet.effective_start_date
2278 and pet.effective_end_date
2279 and petl.element_type_id = pet.element_type_id
2280 and petl.language = gv_person_lang
2281 and pec.classification_id = pet.classification_id
2282 and pec.classification_name in ('Earnings',
2283 'Alien/Expat Earnings',
2284 'Supplemental Earnings',
2285 'Imputed Earnings',
2286 'Taxable Benefits',
2287 'Pre-Tax Deductions',
2288 'Involuntary Deductions',
2289 'Voluntary Deductions',
2290 'Non-payroll Payments'
2291 )
2292 and pet.element_name not like '%Calculator'
2293 and pet.element_name not like '%Special Inputs'
2294 and pet.element_name not like '%Special Features'
2295 and pet.element_name not like '%Special Features 2'
2296 and pet.element_name not like '%Verifier'
2297 and pet.element_name not like '%Priority'
2298 order by pec.classification_name;
2299
2300 cursor c_cur_action_elements(cp_pymt_action_id in number
2301 ,cp_assignment_id in number
2302 ,cp_sepchk_run_type in number
2303 ,cp_sepchk_flag in varchar2
2304 ,cp_ytd_act_sequence in number
2305 ) is
2306 select distinct pet.element_type_id,
2307 pec.classification_name,
2308 nvl(petl.reporting_name, petl.element_name),
2309 pet.element_information10,
2310 pet.element_information12,
2311 pet.processing_priority
2312 from pay_action_interlocks pai,
2313 pay_assignment_actions paa,
2314 pay_payroll_actions ppa,
2315 pay_all_payrolls_f ppf,
2316 pay_run_results prr,
2317 pay_element_types_f pet,
2318 pay_element_classifications pec,
2319 pay_element_types_f_tl petl
2320 where paa.assignment_id = cp_assignment_id
2321 and prr.assignment_action_id = paa.assignment_action_id
2322 and cp_sepchk_flag = 'N'
2323 and pai.locking_action_id = cp_pymt_action_id
2324 and paa.assignment_action_id = pai.locked_action_id
2325 and paa.action_sequence <= cp_ytd_act_sequence
2326 and ppa.payroll_action_id = paa.payroll_action_id
2327 and pet.element_type_id = prr.element_type_id
2328 and pet.element_information10 is not null
2329 and ppa.effective_date between pet.effective_start_date
2330 and pet.effective_end_date
2331 and ppa.payroll_id = ppf.payroll_id -- Bug 3370112
2332 and ppf.payroll_id >= 0
2333 and ppa.effective_date between ppf.effective_start_date
2334 and ppf.effective_end_date
2335 and petl.element_type_id = pet.element_type_id
2336 and petl.language = gv_person_lang
2337 and pec.classification_id = pet.classification_id
2338 and pec.classification_name in ('Earnings',
2339 'Alien/Expat Earnings',
2340 'Supplemental Earnings',
2341 'Imputed Earnings',
2342 'Taxable Benefits',
2343 'Pre-Tax Deductions',
2344 'Involuntary Deductions',
2345 'Voluntary Deductions',
2346 'Non-payroll Payments'
2347 )
2348 and pet.element_name not like '%Calculator'
2349 and pet.element_name not like '%Special Inputs'
2350 and pet.element_name not like '%Special Features'
2351 and pet.element_name not like '%Special Features 2'
2352 and pet.element_name not like '%Verifier'
2353 and pet.element_name not like '%Priority'
2354 order by pec.classification_name;
2355
2356 cursor c_ytd_action_seq(cp_asg_act_id in number) is
2357 select paa.action_sequence
2358 from pay_assignment_actions paa
2359 where paa.assignment_action_id = cp_asg_act_id;
2360 --Bug 6950970 starts here
2361 CURSOR get_payroll_date_earned(cp_run_action_id IN NUMBER) IS
2362 SELECT
2363 TO_CHAR(TRUNC(fnd_date.canonical_to_date(fnd_date.date_to_canonical(ppa.date_earned))),'DD-MON-YYYY')
2364 FROM pay_assignment_actions paa,
2365 pay_payroll_actions ppa
2366 WHERE paa.assignment_action_id = cp_run_action_id
2367 AND ppa.payroll_action_id = paa.payroll_action_id;
2368 l_date_earned VARCHAR2(100);
2369 --Bug 6950970 ends here
2370 ln_element_type_id NUMBER;
2371 lv_element_classification_name VARCHAR2(80);
2372 lv_reporting_name VARCHAR2(80);
2373 ln_primary_balance_id NUMBER;
2374 ln_hours_balance_id NUMBER;
2375 ln_processing_priority NUMBER;
2376 ln_ytd_action_sequence NUMBER;
2377
2378 ln_element_index NUMBER ;
2379 lv_procedure_name VARCHAR2(100) := '.get_current_elements';
2380 lv_error_message VARCHAR2(200);
2381 ln_step NUMBER;
2382 lv_original_date_earned VARCHAR2(100);
2383 lv_effective_start_date VARCHAR2(100);
2384 lv_effective_end_date VARCHAR2(100);
2385 lv_category VARCHAR2(100);
2386 ln_run_assignment_action_id NUMBER;
2387 ln_element_entry_id NUMBER;
2388 lv_original_date_paid VARCHAR2(100);
2389 lv_application_column_name VARCHAR2(100);
2390 lv_sqlstr varchar2(300);
2391 ld_original_date_paid date;
2392 ln_flag number;
2393 lv_jurisdiction_flag varchar2(20);
2394 ln_rate number := null ;
2395 ln_final_rate number := null ;
2396 lv_retro_flag varchar2(100) :='N';
2397 ln_multiple number ;
2398 ln_addnl_ele_num number ;
2399 lv_retro_parent_flag varchar2(10) := 'N';
2400 lv_sqlstr1 varchar2(2000);
2401 lv_curr_pymt_eff_date VARCHAR2(100);
2402 -- Added For Work At Home Condition
2403 lv_wrk_at_home per_assignments_f.work_at_home%TYPE;
2404 ln_person_id per_people_f.person_id%TYPE;
2405 ln_bg_id per_people_f.business_group_id%TYPE;
2406
2407 -- lv_sqlstr_final, lv_sqlstr_date added by sneelapa for bug 13905220
2408 lv_sqlstr_final varchar2(10000);
2409 lv_sqlstr_date varchar2(10000);
2410
2411 BEGIN
2412 ln_flag := 0;
2413 ln_step := 1;
2414 hr_utility.set_location(gv_package || lv_procedure_name, 10);
2415 hr_utility.trace('p_xfr_action_id = ' || p_xfr_action_id);
2416 hr_utility.trace('p_assignment_id ' || p_assignment_id);
2417 hr_utility.trace('p_tax_unit_id ' || p_tax_unit_id);
2418 hr_utility.trace('p_sepchk_flag ' || p_sepchk_flag);
2419 hr_utility.trace('p_legislation_code '|| p_legislation_code);
2420 hr_utility.trace('p_curr_pymt_action_id '
2421 ||to_char(p_curr_pymt_action_id ));
2422 hr_utility.trace('p_ytd_balcall_aaid ' || p_ytd_balcall_aaid);
2423 hr_utility.trace('p_pymt_balcall_aaid ' ||p_pymt_balcall_aaid);
2424 hr_utility.trace('p_sepchk_run_type_id '|| p_sepchk_run_type_id);
2425 hr_utility.trace('p_curr_pymt_eff_date '||TO_CHAR(p_curr_pymt_eff_date,'DD-MON-YYYY'));
2426
2427 hr_utility.set_location(gv_package || lv_procedure_name, 20);
2428
2429 if p_legislation_code <> 'US' then
2430 ln_step := 5;
2431 populate_hours_x_rate(p_xfr_action_id => p_xfr_action_id
2432 ,p_curr_pymt_action_id => p_curr_pymt_action_id
2433 ,p_curr_pymt_eff_date => p_curr_pymt_eff_date
2434 ,p_assignment_id => p_assignment_id
2435 ,p_tax_unit_id => p_tax_unit_id
2436 ,p_sepchk_run_type_id => p_sepchk_run_type_id
2437 ,p_sepchk_flag => p_sepchk_flag
2438 ,p_pymt_balcall_aaid => p_pymt_balcall_aaid
2439 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
2440 ,p_legislation_code => p_legislation_code);
2441 end if;
2442
2443 ln_step := 6;
2444 open c_ytd_action_seq(p_ytd_balcall_aaid);
2445 fetch c_ytd_action_seq into ln_ytd_action_sequence;
2446 close c_ytd_action_seq;
2447
2448 ln_step := 10;
2449 if p_sepchk_flag = 'Y' then
2450 open c_cur_sp_action_elements(p_curr_pymt_action_id ,
2451 p_assignment_id,
2452 p_sepchk_run_type_id,
2453 p_sepchk_flag);
2454
2455 elsif p_sepchk_flag = 'N' then
2456 open c_cur_action_elements(p_curr_pymt_action_id ,
2457 p_assignment_id,
2458 p_sepchk_run_type_id,
2459 p_sepchk_flag,
2460 ln_ytd_action_sequence);
2461 end if;
2462
2463
2464 -- Code added by sneelapa for bug 13905220 starts here.
2465
2466 BEGIN
2467 SELECT 'select nvl('|| fdv.application_column_name || ',''AAA'')
2468 from pay_element_entries_f where element_entry_id = :element_entry_id '
2469 ||' AND '
2470 ||' TO_DATE( :date_earned , ''DD-MON-YYYY'') '
2471 ||' BETWEEN effective_start_date AND effective_end_date '
2472 into lv_sqlstr
2473 FROM fnd_descr_flex_col_usage_vl fdv
2474 WHERE fdv.application_id = 801
2475 AND fdv.descriptive_flexfield_name LIKE 'PAY_ELEMENT_ENTRIES'
2476 AND fdv.descriptive_flex_context_code = 'US EARNINGS';
2477
2478 EXCEPTION
2479 WHEN OTHERS THEN
2480 hr_utility.trace('Error occurred while preparing query for lv_sqlstr ');
2481 END;
2482
2483 BEGIN
2484 SELECT 'select count(peef.'|| fdv.application_column_name || ') FROM pay_element_entries_f peef,
2485 pay_assignment_actions paa, pay_payroll_actions ppa,
2486 per_time_periods ptp WHERE paa.assignment_action_id = :run_assignment_action_id '
2487 || ' AND ppa.payroll_action_id = paa.payroll_action_id
2488 AND ptp.payroll_id = ppa.payroll_id AND ppa.date_earned
2489 BETWEEN ptp.start_date AND ptp.end_date AND peef.assignment_id = '
2490 ||' :assignment_id AND peef.element_type_id = :element_type_id '
2491 || ' AND NVL(ppa.date_earned, ppa.effective_date)
2492 BETWEEN peef.effective_start_date AND peef.effective_end_date AND peef.'||fdv.application_column_name||' is not null'
2493 into lv_sqlstr1
2494 FROM fnd_descr_flex_col_usage_vl fdv
2495 WHERE fdv.application_id = 801
2496 AND fdv.descriptive_flexfield_name LIKE 'PAY_ELEMENT_ENTRIES'
2497 AND fdv.descriptive_flex_context_code = 'US EARNINGS';
2498
2499 EXCEPTION
2500 WHEN OTHERS THEN
2501 hr_utility.trace('Error occurred while preparing query for lv_sqlstr1 ');
2502 END;
2503
2504 BEGIN
2505
2506 SELECT 'select max(nvl(peef.'|| fdv.application_column_name || ', ptp.start_date)) FROM pay_element_entries_f peef,
2507 pay_assignment_actions paa, pay_payroll_actions ppa,per_time_periods ptp
2508 WHERE paa.assignment_action_id = :run_assignment_action_id '
2509 ||' AND ppa.payroll_action_id = paa.payroll_action_id AND ptp.payroll_id = ppa.payroll_id
2510 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date AND
2511 peef.assignment_id = :assignment_id AND peef.element_type_id =
2512 :element_type_id AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN
2513 peef.effective_start_date AND peef.effective_end_date AND peef.' || fdv.application_column_name || ' is not null '
2514 INTO lv_sqlstr_final
2515 FROM fnd_descr_flex_col_usage_vl fdv
2516 WHERE fdv.application_id = 801
2517 AND fdv.descriptive_flexfield_name LIKE 'PAY_ELEMENT_ENTRIES'
2518 AND fdv.descriptive_flex_context_code = 'US EARNINGS';
2519
2520 EXCEPTION
2521 WHEN OTHERS THEN
2522 hr_utility.trace('Error occurred while preparing query for lv_sqlstr_final ');
2523 END;
2524
2525 BEGIN
2526 SELECT 'select nvl('|| fdv.application_column_name || ',''AAA'')
2527 from pay_element_entries_f where element_entry_id = :element_entry_id '
2528 into lv_sqlstr_date
2529 FROM fnd_descr_flex_col_usage_vl fdv
2530 WHERE fdv.application_id = 801
2531 AND fdv.descriptive_flexfield_name LIKE 'PAY_ELEMENT_ENTRIES'
2532 AND fdv.descriptive_flex_context_code = 'US EARNINGS';
2533
2534 EXCEPTION
2535 WHEN OTHERS THEN
2536 hr_utility.trace('Error occurred while preparing query for lv_sqlstr_date ');
2537 END;
2538
2539
2540 -- Code added by sneelapa for bug 13905220 ends here.
2541
2542 loop
2543 if p_sepchk_flag = 'Y' then
2544 fetch c_cur_sp_action_elements into
2545 ln_element_type_id,
2546 lv_element_classification_name,
2547 lv_reporting_name,
2548 ln_primary_balance_id,
2549 ln_hours_balance_id,
2550 ln_processing_priority;
2551 if c_cur_sp_action_elements%notfound then
2552 hr_utility.set_location(gv_package || lv_procedure_name, 30);
2553 exit;
2554 end if;
2555
2556 elsif p_sepchk_flag = 'N' then
2557 fetch c_cur_action_elements into
2558 ln_element_type_id,
2559 lv_element_classification_name,
2560 lv_reporting_name,
2561 ln_primary_balance_id,
2562 ln_hours_balance_id,
2563 ln_processing_priority;
2564 --- here one thing can be added
2565 if c_cur_action_elements%notfound then
2566 hr_utility.set_location(gv_package || lv_procedure_name, 35);
2567 exit;
2568 end if;
2569
2570 end if;
2571 -- loop with the first coursor (if not found then exit )
2572 -- if the parameters from second cursor not null then exit loop else move in loop completly
2573
2574 hr_utility.trace('Element_type_id in get_current_elements = ' || ln_element_type_id);
2575
2576 if p_legislation_code <> 'US' then
2577 lv_retro_flag := 'N' ;
2578 lv_retro_parent_flag := 'N';
2579 gv_ytd_amount := 0;
2580 gv_ytd_hour := 0;
2581 lv_original_date_earned := NULL;
2582 lv_effective_start_date := NULL;
2583 lv_effective_end_date := NULL;
2584 lv_category := NULL;
2585 lv_jurisdiction_flag := NULL;
2586 lv_original_date_paid:= NULL;
2587 end if;
2588
2589 IF p_legislation_code = 'US' THEN
2590 /* Added for Bug# 7580440 */
2591 IF p_sepchk_flag = 'Y' THEN
2592 ln_run_assignment_action_id := p_curr_pymt_action_id;
2593 ELSE
2594 OPEN get_run_action_id(p_curr_pymt_action_id
2595 ,p_assignment_id
2596 ,p_sepchk_run_type_id
2597 ,ln_element_type_id --#11897283 Added
2598 );
2599 /* Should NOT be needed */
2600 --LOOP -- For Each Run Assignment Action ID
2601
2602 FETCH get_run_action_id INTO ln_run_assignment_action_id;
2603 /*
2604 IF get_run_action_id%NOTFOUND THEN
2605 CLOSE get_run_action_id ;
2606 EXIT;
2607 END IF;
2608 */
2609 CLOSE get_run_action_id ;
2610 END IF; -- p_sepchk_flag = 'Y'
2611 ln_step := 99;
2612 --
2613 -- Following to Check IF Additional element Entry DFF Configured for the Client
2614 -- This would be configured in case Client Does NOT use Retropay Functionality
2615
2616 ln_step := 100;
2617
2618 ln_flag := 1;
2619
2620 OPEN get_application_column_name ;
2621 FETCH get_application_column_name INTO lv_application_column_name;
2622 CLOSE get_application_column_name;
2623
2624 IF lv_application_column_name IS NULL THEN
2625 ln_flag :=1;
2626 ELSE
2627 ln_flag :=0; -- Addl Ele DFF Info Configured
2628 END IF;
2629
2630 hr_utility.trace('Step 100: ln_flag before entering into Ele Entry LOOP : '||ln_flag);
2631
2632 -- Following Code May Need revise
2633 -- Here we are NOT Looping Through the Ele Entries
2634 -- But Getting ele Entry ID so that we Can Check if Addl Ele Entry Configured
2635 --
2636 -- Check if there is any Ele Entry that is NOT created by Retro
2637
2638 OPEN get_element_entry_id (ln_run_assignment_action_id,
2639 p_assignment_id ,
2640 ln_element_type_id);
2641
2642
2643 FETCH get_element_entry_id INTO ln_element_entry_id;
2644 IF get_element_entry_id%found THEN
2645 CLOSE get_element_entry_id;
2646 hr_utility.trace('Ele Entry Found. ln_element_entry_id := '||ln_element_entry_id);
2647
2648 IF ln_flag = 0 then -- Addl Ele DFF Info Configured
2649 hr_utility.trace('Addl Ele DFF Info Configured.');
2650
2651 SELECT TO_CHAR(TRUNC(fnd_date.canonical_to_date(fnd_date.date_to_canonical(p_curr_pymt_eff_date))),'DD-MON-YYYY')
2652 INTO lv_curr_pymt_eff_date
2653 FROM DUAL;
2654 --bug no 6950970 starts here
2655 OPEN get_payroll_date_earned (ln_run_assignment_action_id);
2656 FETCH get_payroll_date_earned INTO l_date_earned;
2657 CLOSE get_payroll_date_earned;
2658 --bug no 6950970 ends here
2659 hr_utility.trace('lv_curr_pymt_eff_date := '|| lv_curr_pymt_eff_date);
2660 hr_utility.trace('l_date_earned := '|| l_date_earned);
2661
2662 /* Commented for bug 13905220
2663
2664 lv_sqlstr := 'select nvl(' || lv_application_column_name ||
2665 ',''AAA'') from pay_element_entries_f where element_entry_id = ' || ln_element_entry_id
2666 ||' AND '
2667 ||' TO_DATE('''
2668 --bug no 6950970 starts here
2669 -- || lv_curr_pymt_eff_date
2670 || l_date_earned
2671 --bug no 6950970 ends here
2672 ||''', ''DD-MON-YYYY'') '
2673 ||' BETWEEN effective_start_date AND effective_end_date ';
2674
2675 */
2676
2677 hr_utility.trace('Query := '|| lv_sqlstr);
2678
2679 --bug no 6950970 starts here
2680 begin
2681 --bug no 6950970 ends here
2682
2683 /* Commented for bug 13905220 and redefined below
2684
2685 EXECUTE IMMEDIATE lv_sqlstr INTO lv_original_date_paid ;
2686 lv_original_date_earned := lv_original_date_paid ;
2687 */
2688
2689 EXECUTE IMMEDIATE lv_sqlstr INTO lv_original_date_paid
2690 USING ln_element_entry_id,
2691 l_date_earned ;
2692
2693 hr_utility.trace('lv_original_date_earned := '||lv_original_date_earned);
2694
2695 -- Possibility of Malformed SQL (Added Spaces between)
2696
2697 /* Commented for bug 13905220 and redefined below
2698
2699 lv_sqlstr1 := 'select count(peef.' || lv_application_column_name
2700 ||') FROM pay_element_entries_f peef, pay_assignment_actions paa, pay_payroll_actions ppa,per_time_periods ptp WHERE paa.assignment_action_id = '
2701 || ln_run_assignment_action_id
2702 || ' AND ppa.payroll_action_id = paa.payroll_action_id AND ptp.payroll_id = ppa.payroll_id AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date AND peef.assignment_id = '
2703 || p_assignment_id
2704 ||' AND peef.element_type_id = '
2705 || ln_element_type_id
2706 || ' AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date AND peef.'
2707 || lv_application_column_name
2708 || ' is not null ' ;
2709
2710 EXECUTE IMMEDIATE lv_sqlstr1 into ln_addnl_ele_num;
2711 hr_utility.trace('ln_addnl_ele_num' || ln_addnl_ele_num);
2712 hr_utility.trace('p_curr_pymt_eff_date '|| p_curr_pymt_eff_date);
2713 */
2714
2715 EXECUTE IMMEDIATE lv_sqlstr1 INTO ln_addnl_ele_num
2716 USING ln_run_assignment_action_id, p_assignment_id,
2717 ln_element_type_id;
2718
2719 --bug no 6950970 starts here
2720 exception
2721 when no_data_found then
2722 ln_addnl_ele_num:=0;
2723 end;
2724 --bug no 6950970 ends here
2725 END IF; -- Addl Ele DFF Info Configured
2726 -- Code to be Revised Again
2727
2728 -- IF there is Element Entry for which Addl Ele Entry DFF Configured
2729 -- AND Originating Date Earned Field Populated
2730 --
2731
2732
2733 IF (( lv_original_date_paid <> 'AAA' and ln_flag =0) OR (ln_addnl_ele_num > 0))THEN
2734
2735 hr_utility.trace('(( lv_original_date_paid <> AAA and ln_flag =0) OR (ln_addnl_ele_num > 0)');
2736
2737 IF ln_addnl_ele_num > 0 THEN
2738 hr_utility.trace('ln_addnl_ele_num > 0');
2739 Archive_addnl_elements(
2740 p_application_column_name => lv_application_column_name
2741 ,p_xfr_action_id => p_xfr_action_id
2742 ,p_assignment_id => p_assignment_id
2743 ,p_pymt_assignment_action_id => p_curr_pymt_action_id
2744 ,p_pymt_eff_date => p_curr_pymt_eff_date
2745 ,p_element_type_id => ln_element_type_id
2746 ,p_primary_balance_id => ln_primary_balance_id
2747 ,p_hours_balance_id => ln_hours_balance_id
2748 ,p_processing_priority => ln_processing_priority
2749 ,p_element_classification_name => lv_element_classification_name
2750 ,p_reporting_name => lv_reporting_name
2751 ,p_tax_unit_id => p_tax_unit_id
2752 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
2753 ,p_pymt_balcall_aaid => p_pymt_balcall_aaid
2754 ,p_legislation_code => p_legislation_code
2755 ,p_sepchk_flag => p_sepchk_flag
2756 ,p_sepchk_run_type_id => p_sepchk_run_type_id
2757 ,p_action_type => p_action_type
2758 ,p_run_assignment_action_id => ln_run_assignment_action_id
2759 ,p_multiple => ln_multiple
2760 ,p_rate => ln_final_rate
2761 -- p_sqlstr_final, p_sqlstr_date parameters added by sneelapa for bug 13905220
2762 ,p_sqlstr_final => lv_sqlstr_final
2763 ,p_sqlstr_date => lv_sqlstr_date);
2764
2765
2766 lv_retro_flag := 'Y' ;
2767 -- As Base + Addl Ele DFF Config Non-Retro Entry Both Handled above
2768 lv_retro_parent_flag := 'N';
2769 ELSE -- May Need to be Revised
2770
2771 hr_utility.trace('ln_addnl_ele_num <= 0');
2772 open archive_non_retro_elements( ld_original_date_paid,
2773 ln_element_entry_id,
2774 ln_run_assignment_action_id ) ;
2775 fetch archive_non_retro_elements
2776 into lv_effective_start_date,
2777 lv_effective_end_date,
2778 lv_category;
2779 close archive_non_retro_elements ;
2780 close get_run_action_id;
2781
2782 -- Added For Work At Home Condition
2783 OPEN c_cur_get_wrkathome(p_assignment_id,p_curr_pymt_eff_date); -- Bug# 16318258
2784 FETCH c_cur_get_wrkathome INTO lv_wrk_at_home
2785 ,ln_person_id
2786 ,ln_bg_id;
2787 CLOSE c_cur_get_wrkathome;
2788
2789 IF lv_wrk_at_home = 'Y' THEN
2790 OPEN c_cur_home_state_jd(ln_person_id
2791 ,ln_bg_id);
2792 FETCH c_cur_home_state_jd INTO lv_jurisdiction_flag;
2793 CLOSE c_cur_home_state_jd;
2794 ELSE
2795 select nvl((select peevf.screen_entry_value jurisdiction_code
2796 from pay_input_values_f pivf,
2797 pay_element_entry_values_f peevf
2798 where pivf.element_type_id = ln_element_type_id
2799 AND pivf.NAME = 'Jurisdiction'
2800 AND peevf.element_entry_id = ln_element_entry_id
2801 AND pivf.input_value_id = peevf.input_value_id
2802 AND p_curr_pymt_eff_date between pivf.effective_start_date AND pivf.effective_end_date), -- Bug# 16318258
2803 (SELECT distinct pus.state_code
2804 || '-'
2805 || puc.county_code
2806 || '-'
2807 || punc.city_code jurisdiction_code
2808 FROM per_all_assignments_f peaf,
2809 hr_locations_all hla,
2810 pay_us_states pus,
2811 pay_us_counties puc,
2812 pay_us_city_names punc,
2813 pay_assignment_actions paa,
2814 pay_payroll_actions ppa
2815 WHERE peaf.assignment_id = p_assignment_id
2816 AND paa.assignment_action_id = ln_run_assignment_action_id
2817 AND peaf.location_id = hla.location_id
2818 AND hla.region_2 = pus.state_abbrev
2819 AND pus.state_code = puc.state_code
2820 AND hla.region_1 = puc.county_name
2821 AND hla.town_or_city = punc.city_name
2822 AND pus.state_code = punc.state_code
2823 AND puc.county_code = punc.county_code
2824 AND ppa.payroll_action_id = paa.payroll_action_id
2825 AND ppa.effective_date between peaf.effective_start_date and peaf.effective_end_date
2826 ))
2827 into lv_jurisdiction_flag
2828 from dual;
2829 END IF; -- Work At Home 'N'
2830
2831 END IF; -- ln_addnl_ele_num > 0
2832 /* Commented for Bug# 8211926
2833 EXIT;
2834 */
2835 END IF; -- lv_original_date_paid <> 'AAA' and ln_flag =0
2836
2837 hr_utility.trace('Before Checking Retro.');
2838
2839 -- Start Handling Retro Cases
2840 -- Checking IF Retro
2841
2842 OPEN check_retro ( ln_run_assignment_action_id,
2843 p_assignment_id,
2844 ln_element_type_id) ;
2845 FETCH check_retro into lv_retro_flag ;
2846 IF check_retro%FOUND THEN
2847 --
2848 -- In Case of Retro Checking IF it is Base + Retro Case
2849 --
2850 OPEN retro_parent_check_flag(ln_run_assignment_action_id,
2851 p_assignment_id,
2852 ln_element_type_id) ;
2853 FETCH retro_parent_check_flag INTO lv_retro_parent_flag;
2854 CLOSE retro_parent_check_flag ;
2855 IF lv_retro_parent_flag IS NULL THEN
2856 lv_retro_parent_flag := 'N';
2857 END IF;
2858 --
2859 -- Archiving ONLY Retro Entries NOT Retrp Base
2860 --
2861 Archive_retro_element( p_xfr_action_id => p_xfr_action_id
2862 ,p_assignment_id => p_assignment_id
2863 ,p_pymt_assignment_action_id => p_curr_pymt_action_id
2864 ,p_pymt_eff_date => p_curr_pymt_eff_date
2865 ,p_element_type_id => ln_element_type_id
2866 ,p_primary_balance_id => ln_primary_balance_id
2867 ,p_hours_balance_id => ln_hours_balance_id
2868 ,p_processing_priority => ln_processing_priority
2869 ,p_element_classification_name => lv_element_classification_name
2870 ,p_reporting_name => lv_reporting_name
2871 ,p_tax_unit_id => p_tax_unit_id
2872 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
2873 ,p_pymt_balcall_aaid => p_pymt_balcall_aaid
2874 ,p_legislation_code => p_legislation_code
2875 ,p_sepchk_flag => p_sepchk_flag
2876 ,p_sepchk_run_type_id => p_sepchk_run_type_id
2877 ,p_action_type => p_action_type
2878 ,p_run_assignment_action_id => ln_run_assignment_action_id
2879 ,p_multiple => ln_multiple
2880 ,p_rate => ln_final_rate
2881 ,p_retro_base => lv_retro_parent_flag);
2882 END IF; -- check_retro%FOUND
2883
2884 CLOSE check_retro; -- Added
2885 ELSE
2886 IF check_retro%ISOPEN THEN
2887 CLOSE check_retro;
2888 END IF;
2889 IF get_element_entry_id%ISOPEN THEN
2890 CLOSE get_element_entry_id;
2891 END IF;
2892 END IF; -- get_element_entry_id%found
2893 /* NOT Needed
2894 END LOOP; -- For Each Run Assignment Action ID
2895 */
2896
2897 IF get_run_action_id%ISOPEN THEN
2898 CLOSE get_run_action_id;
2899 END IF;
2900 END IF; -- Legislation US
2901
2902 hr_utility.set_location(gv_package || lv_procedure_name, 40);
2903 hr_utility.trace('Ele type id = ' || ln_element_type_id);
2904 hr_utility.trace('Primary Bal id = '|| ln_primary_balance_id);
2905 hr_utility.trace('Ele Class = ' || lv_element_classification_name);
2906
2907 if lv_element_classification_name like '% Deductions' then
2908 ln_hours_balance_id := null;
2909 end if;
2910 ln_step := 15;
2911 ln_element_index := pay_ac_action_arch.emp_elements_tab.count;
2912 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_type_id
2913 := ln_element_type_id;
2914 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_classfn
2915 := lv_element_classification_name;
2916 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_primary_balance_id
2917 := ln_primary_balance_id;
2918 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_processing_priority
2919 := ln_processing_priority;
2920 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_reporting_name
2921 := lv_reporting_name;
2922 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_hours_balance_id
2923 := ln_hours_balance_id;
2924 pay_ac_action_arch.emp_elements_tab(ln_element_index).jurisdiction_code
2925 := '00-000-0000';
2926
2927 hr_utility.set_location(gv_package || lv_procedure_name, 50);
2928 ln_step := 20;
2929 IF ((lv_retro_flag = 'N' ) OR (lv_retro_parent_flag = 'Y')) THEN
2930 IF lv_original_date_earned = 'AAA' THEN
2931 lv_original_date_earned := null;
2932 END IF;
2933 populate_elements(p_xfr_action_id => p_xfr_action_id
2934 ,p_pymt_assignment_action_id => p_curr_pymt_action_id
2935 ,p_pymt_eff_date => p_curr_pymt_eff_date
2936 ,p_element_type_id => ln_element_type_id
2937 ,p_primary_balance_id => ln_primary_balance_id
2938 ,p_hours_balance_id => ln_hours_balance_id
2939 ,p_processing_priority => ln_processing_priority
2940 ,p_element_classification_name
2941 => lv_element_classification_name
2942 ,p_reporting_name => lv_reporting_name
2943 ,p_tax_unit_id => p_tax_unit_id
2944 ,p_pymt_balcall_aaid => p_pymt_balcall_aaid
2945 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
2946 ,p_legislation_code => p_legislation_code
2947 ,p_sepchk_flag => p_sepchk_flag
2948 ,p_sepchk_run_type_id => p_sepchk_run_type_id
2949 ,p_action_type => p_action_type
2950 ,p_original_date_earned => lv_original_date_earned
2951 ,p_effective_start_date => lv_effective_start_date
2952 ,p_effective_end_date => lv_effective_end_date
2953 ,p_category => lv_category
2954 ,p_el_jurisdiction_code => lv_jurisdiction_flag
2955 ,p_final_rate => ln_final_rate
2956 ,p_ytd_flag => lv_retro_parent_flag
2957 );
2958
2959 lv_original_date_earned := NULL;
2960 lv_effective_start_date := NULL;
2961 lv_effective_end_date := NULL;
2962 lv_category := NULL;
2963 lv_jurisdiction_flag := NULL;
2964 lv_original_date_paid:= NULL;
2965
2966 END IF;
2967
2968 lv_retro_flag := 'N' ;
2969 lv_retro_parent_flag := 'N';
2970 gv_ytd_amount := 0;
2971 gv_ytd_hour := 0;
2972
2973 end loop; -- End Loop of c_cur_action_elements OR c_cur_sp_action_elements
2974
2975 if p_sepchk_flag = 'Y' then
2976 close c_cur_sp_action_elements;
2977 elsif p_sepchk_flag = 'N' then
2978 close c_cur_action_elements;
2979 end if;
2980 hr_utility.set_location(gv_package || lv_procedure_name, 60);
2981 ln_step := 25;
2982
2983 EXCEPTION
2984 when others then
2985 lv_error_message := 'Error at step ' || ln_step ||
2986 ' in ' || gv_package || lv_procedure_name;
2987
2988 hr_utility.trace(lv_error_message || '-' || sqlerrm);
2989
2990 lv_error_message :=
2991 pay_emp_action_arch.set_error_message(lv_error_message);
2992
2993 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
2994 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
2995 hr_utility.raise_error;
2996
2997 END get_current_elements;
2998
2999 /******************************************************************
3000 Name : get_xfr_elements
3001 Purpose : Check the elements archived in the previous record with
3002 the given assignment and if the element is not archived
3003 in this current run, get YTD for the element found.
3004 Arguments : p_xfr_action_id => Current xfr action id
3005 p_last_xfr_action_id => Previous xfr action id retrieved
3006 from get_last_xfr_info procedure
3007 p_ytd_balcall_aaid => aaid for YTD balance call.
3008 p_pymt_eff_date => Current pymt eff date.
3009 p_legislation_code => Legislation code.
3010 p_sepchk_flag => Separate Check flag.
3011 p_assignment_id => Current assignment id that is being
3012 processed.
3013 Notes : If multi assignment is enabled and is a sepchk, then check
3014 the last xfr run for the given person not assignment.
3015 ******************************************************************/
3016 PROCEDURE get_xfr_elements(p_xfr_action_id in number
3017 ,p_last_xfr_action_id in number
3018 ,p_ytd_balcall_aaid in number
3019 ,p_pymt_eff_date in date
3020 ,p_legislation_code in varchar2
3021 ,p_sepchk_flag in varchar2
3022 ,p_assignment_id in number
3023 )
3024
3025 IS
3026 cursor c_last_xfr_elements(cp_xfr_action_id in number
3027 ,cp_legislation_code in varchar2) is
3028 select assignment_id, action_information_category,
3029 action_information1 classification_name,
3030 action_information2 element_type_id,
3031 decode(cp_legislation_code,
3032 'CA', jurisdiction_code,
3033 'US', decode(jurisdiction_code, NULL, NULL,
3034 decode(to_char(length(replace(jurisdiction_code,'-')))
3035 ,'7', jurisdiction_code,
3036 rpad(nvl(substr(rtrim(ltrim(jurisdiction_code))
3037 ,1,2),'0'),2,'0') || '-'||
3038 rpad(nvl(substr(rtrim(ltrim(jurisdiction_code))
3039 ,4,3),'0'),3,'0') ||'-' ||
3040 rpad(nvl(substr(rtrim(ltrim(jurisdiction_code))
3041 ,8,4),'0'),4,'0')))) jurisdiction_code,
3042 action_information6 primary_balance_id,
3043 action_information7 processing_priority,
3044 action_information9 ytd_amount,
3045 action_information10 reporting_name,
3046 effective_date effective_date,
3047 action_information12 ytd_hours,
3048 action_information24 display_name
3049 from pay_action_information
3050 where action_information_category in ('AC EARNINGS', 'AC DEDUCTIONS')
3051 and action_context_id = cp_xfr_action_id;
3052
3053
3054 cursor c_get_balance (cp_balance_name in varchar2
3055 ,cp_legislation_code in varchar2) is
3056 select balance_type_id
3057 from pay_balance_types
3058 where legislation_code = cp_legislation_code
3059 and balance_name = cp_balance_name;
3060
3061 ln_element_type_id NUMBER;
3062 lv_element_classfication_name VARCHAR2(80);
3063 lv_jurisdiction_code VARCHAR2(80);
3064 ln_primary_balance_id NUMBER;
3065 ln_processing_priority NUMBER;
3066 lv_reporting_name VARCHAR2(150);
3067 ld_effective_date DATE;
3068 ln_hours_balance_id NUMBER;
3069
3070 ln_t_primary_balance_id NUMBER;
3071 lv_t_reporting_name VARCHAR2(150);
3072
3073 ln_ele_primary_balance_id NUMBER;
3074 ln_ele_hours_balance_id NUMBER;
3075
3076 ln_ytd_defined_balance_id NUMBER;
3077 ln_ytd_hours_balance_id NUMBER;
3078 ln_payments_amount NUMBER;
3079 ln_ytd_hours NUMBER;
3080 ln_ytd_amount NUMBER;
3081
3082 ln_index NUMBER := 0;
3083 lv_element_archived VARCHAR2(1) := 'N';
3084 lv_action_info_category VARCHAR2(30) := 'AC DEDUCTIONS';
3085 lv_procedure_name VARCHAR2(100) := '.get_xfr_elements';
3086 lv_error_message VARCHAR2(200);
3087 ln_step NUMBER;
3088 ln_assignment_id NUMBER;
3089
3090 lv_display_name VARCHAR2(100);
3091
3092 BEGIN
3093 ln_step:= 1;
3094 hr_utility.set_location(gv_package || lv_procedure_name, 10);
3095 hr_utility.trace('p_xfr_action_id = '||p_xfr_action_id);
3096 hr_utility.trace('p_last_xfr_action_id = '|| p_last_xfr_action_id );
3097 hr_utility.trace('p_assignment_id = '|| p_assignment_id );
3098 hr_utility.trace('gv_multi_payroll_pymt = '||
3099 pay_emp_action_arch.gv_multi_payroll_pymt);
3100 hr_utility.trace('p_sepchk_flag = '||p_sepchk_flag);
3101
3102 open c_last_xfr_elements(p_last_xfr_action_id, p_legislation_code);
3103 loop
3104 fetch c_last_xfr_elements into ln_assignment_id,
3105 lv_action_info_category,
3106 lv_element_classfication_name,
3107 ln_element_type_id,
3108 lv_jurisdiction_code,
3109 ln_primary_balance_id,
3110 ln_processing_priority,
3111 ln_ytd_amount,
3112 lv_reporting_name,
3113 ld_effective_date,
3114 ln_ytd_hours,
3115 lv_display_name;
3116
3117 hr_utility.set_location(gv_package || lv_procedure_name, 20);
3118 if c_last_xfr_elements%notfound then
3119 hr_utility.set_location(gv_package || lv_procedure_name, 30);
3120 exit;
3121 end if;
3122
3123 ln_step := 5;
3124 if ln_primary_balance_id is null then
3125 if lv_reporting_name = 'SDI Withheld' then
3126 lv_t_reporting_name := 'SDI EE Withheld';
3127 elsif lv_reporting_name = 'SUI Withheld' then
3128 lv_t_reporting_name := 'SUI EE Withheld';
3129 elsif lv_reporting_name = 'SUI1 Withheld' then
3130 lv_t_reporting_name := 'SUI1 EE Withheld';
3131 elsif lv_reporting_name = 'SDI1 Withheld' then
3132 lv_t_reporting_name := 'SDI1 EE Withheld';
3133 else
3134 lv_t_reporting_name := lv_reporting_name;
3135 end if;
3136
3137 open c_get_balance(lv_t_reporting_name, p_legislation_code);
3138 fetch c_get_balance into ln_t_primary_balance_id;
3139 close c_get_balance;
3140 ln_primary_balance_id := ln_t_primary_balance_id;
3141 end if;
3142
3143 hr_utility.trace('Element type id =' || ln_element_type_id);
3144 hr_utility.trace('Reporting Name =' || lv_reporting_name);
3145 hr_utility.trace('JD Code =' || lv_jurisdiction_code);
3146 hr_utility.trace('Ele Class =' || lv_element_classfication_name);
3147
3148 ln_step := 6;
3149
3150 hr_utility.trace('p_assignment_id (current) = '||p_assignment_id);
3151 hr_utility.trace('ln_assignment_id (prev) = '||ln_assignment_id);
3152
3153 if pay_emp_action_arch.gv_multi_payroll_pymt = 'Y' and
3154 p_sepchk_flag = 'Y' and
3155 ln_assignment_id <> p_assignment_id then
3156
3157 hr_utility.trace('action_info_category = ' ||lv_action_info_category);
3158 hr_utility.trace('ln_element_type_id = ' ||ln_element_type_id);
3159 hr_utility.trace('ln_primary_balance_id = '||ln_primary_balance_id);
3160 hr_utility.trace('ln_ytd_amount = ' ||ln_ytd_amount);
3161
3162 ln_index := pay_ac_action_arch.lrr_act_tab.count;
3163
3164 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
3165 := lv_action_info_category;
3166 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
3167 := lv_jurisdiction_code;
3168 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
3169 := p_xfr_action_id;
3170 pay_ac_action_arch.lrr_act_tab(ln_index).assignment_id
3171 := ln_assignment_id;
3172 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
3173 := lv_element_classfication_name;
3174 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
3175 := ln_element_type_id;
3176 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
3177 := ln_primary_balance_id;
3178 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
3179 := ln_processing_priority;
3180 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
3181 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
3182 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
3183 := lv_reporting_name;
3184 if lv_action_info_category = 'AC EARNINGS' then
3185 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
3186 := fnd_number.number_to_canonical(ln_ytd_hours);
3187 end if;
3188
3189 -- Added for Bug# 7348767, Bug# 7348838
3190 if lv_action_info_category = 'AC DEDUCTIONS' THEN
3191 --Bug 8688998
3192 --pay_ac_action_arch.lrr_act_tab(ln_index).act_info24 := lv_reporting_name;
3193 pay_ac_action_arch.lrr_act_tab(ln_index).act_info24 := lv_display_name;
3194 end if;
3195 end if;
3196
3197 if ln_assignment_id = p_assignment_id then
3198 if pay_ac_action_arch.emp_elements_tab.count > 0 then
3199 for i in pay_ac_action_arch.emp_elements_tab.first..
3200 pay_ac_action_arch.emp_elements_tab.last LOOP
3201 if pay_ac_action_arch.emp_elements_tab(i).element_primary_balance_id
3202 = ln_primary_balance_id and
3203 pay_ac_action_arch.emp_elements_tab(i).jurisdiction_code
3204 = lv_jurisdiction_code then
3205 lv_element_archived := 'Y';
3206 exit;
3207 end if;
3208 end loop;
3209 end if;
3210
3211 ln_step := 10;
3212 if lv_element_archived = 'N' then
3213 hr_utility.set_location(gv_package || lv_procedure_name, 50);
3214 /**************************************************************
3215 ** Bug 3567107: Check to see if the element is still effective
3216 ** the primary balance is there before archiving
3217 ** the value when picking elements which have
3218 ** already been archived.
3219 ** Note: This will take care of the issue when clients migrate
3220 ** to a new element and only want one entry to be archived
3221 ** and show up in checks, payslip and depsoit advice
3222 **************************************************************/
3223 if lv_element_classfication_name <> 'Tax Deductions' then
3224 open c_element_info(ln_element_type_id, ld_effective_date);
3225 fetch c_element_info into ln_ele_primary_balance_id,
3226 ln_ele_hours_balance_id;
3227 if c_element_info%notfound or
3228 ln_ele_primary_balance_id is null then
3229 lv_element_archived := 'Y';
3230 end if;
3231
3232 close c_element_info;
3233
3234 if lv_element_classfication_name not like '% Deductions' then
3235 ln_hours_balance_id := ln_ele_hours_balance_id;
3236 end if;
3237 end if;
3238 end if;
3239
3240 if lv_element_archived = 'N' then
3241 /* populate the extra element table */
3242 ln_index := pay_ac_action_arch.emp_elements_tab.count;
3243 pay_ac_action_arch.emp_elements_tab(ln_index).element_type_id
3244 := ln_element_type_id;
3245 pay_ac_action_arch.emp_elements_tab(ln_index).element_classfn
3246 := lv_element_classfication_name;
3247 pay_ac_action_arch.emp_elements_tab(ln_index).jurisdiction_code
3248 := lv_jurisdiction_code;
3249 pay_ac_action_arch.emp_elements_tab(ln_index).element_primary_balance_id
3250 := ln_primary_balance_id;
3251 pay_ac_action_arch.emp_elements_tab(ln_index).element_processing_priority
3252 := ln_processing_priority;
3253 pay_ac_action_arch.emp_elements_tab(ln_index).element_reporting_name
3254 := lv_reporting_name;
3255 pay_ac_action_arch.emp_elements_tab(ln_index).element_hours_balance_id
3256 := ln_hours_balance_id;
3257
3258 if lv_jurisdiction_code <> '00-000-0000' then
3259 pay_balance_pkg.set_context('JURISDICTION_CODE', lv_jurisdiction_code);
3260 gv_ytd_balance_dimension := gv_dim_asg_jd_gre_ytd;
3261 else
3262 pay_balance_pkg.set_context('JURISDICTION_CODE', lv_jurisdiction_code);
3263 if gv_reporting_level = 'TAXGRP' then
3264 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
3265 else
3266 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
3267 end if;
3268 end if;
3269
3270 ln_step := 15;
3271 ln_ytd_defined_balance_id
3272 := pay_emp_action_arch.get_defined_balance_id
3273 (ln_primary_balance_id,
3274 gv_ytd_balance_dimension,
3275 p_legislation_code);
3276 hr_utility.set_location(gv_package || lv_procedure_name, 60);
3277 if ln_ytd_defined_balance_id is not null then
3278 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
3279 ln_ytd_defined_balance_id,
3280 p_ytd_balcall_aaid),0);
3281 end if;
3282 hr_utility.set_location(gv_package || lv_procedure_name, 70);
3283 if ln_hours_balance_id is not null then
3284 ln_ytd_hours_balance_id
3285 := pay_emp_action_arch.get_defined_balance_id
3286 (ln_hours_balance_id,
3287 gv_ytd_balance_dimension,
3288 p_legislation_code);
3289 hr_utility.set_location(gv_package || lv_procedure_name, 80);
3290 if ln_ytd_hours_balance_id is not null then
3291 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
3292 ln_ytd_hours_balance_id,
3293 p_ytd_balcall_aaid),0);
3294 hr_utility.set_location(gv_package || lv_procedure_name, 90);
3295 end if;
3296 end if;
3297
3298 hr_utility.trace('ln_ytd_amount = '||ln_ytd_amount);
3299 hr_utility.trace('ln_ytd_hours = '||ln_ytd_hours);
3300
3301 if (( nvl(ln_ytd_amount, 0) + nvl(ln_payments_amount, 0) <> 0 ) or
3302 ( pay_ac_action_arch.gv_multi_gre_payment = 'N' ) ) then
3303
3304 hr_utility.set_location(gv_package || lv_procedure_name, 100);
3305 ln_index := pay_ac_action_arch.lrr_act_tab.count;
3306 hr_utility.trace('ln_index = ' || ln_index);
3307 ln_step := 20;
3308 if lv_element_classfication_name in ('Earnings',
3309 'Alien/Expat Earnings',
3310 'Supplemental Earnings',
3311 'Taxable Benefits',
3312 'Imputed Earnings',
3313 'Non-payroll Payments') then
3314 lv_action_info_category := 'AC EARNINGS';
3315 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
3316 := fnd_number.number_to_canonical(ln_ytd_hours);
3317 end if;
3318
3319 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
3320 := lv_action_info_category;
3321 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
3322 := lv_jurisdiction_code;
3323 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
3324 := p_xfr_action_id;
3325 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
3326 := lv_element_classfication_name;
3327 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
3328 := ln_element_type_id;
3329 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
3330 := ln_primary_balance_id;
3331 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
3332 := ln_processing_priority;
3333 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
3334 := fnd_number.number_to_canonical(nvl(ln_payments_amount,0));
3335 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
3336 := fnd_number.number_to_canonical(ln_ytd_amount);
3337 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
3338 := lv_reporting_name;
3339 -- Added for Bug# 7348767, Bug# 7348838
3340 if lv_action_info_category = 'AC DEDUCTIONS' THEN
3341 --Bug 8688998
3342 -- pay_ac_action_arch.lrr_act_tab(ln_index).act_info24 := lv_reporting_name;
3343 pay_ac_action_arch.lrr_act_tab(ln_index).act_info24 := lv_display_name;
3344 end if;
3345
3346 end if;
3347 end if;
3348
3349 lv_element_archived := 'N';
3350 lv_action_info_category := 'AC DEDUCTIONS';
3351 lv_element_classfication_name := null;
3352 ln_element_type_id := null;
3353 lv_jurisdiction_code := null;
3354 ln_primary_balance_id := null;
3355 ln_processing_priority := null;
3356 lv_reporting_name := null;
3357 ln_hours_balance_id := null;
3358 ln_ytd_amount := null;
3359 ln_ytd_hours := null;
3360
3361 end if;
3362 end loop;
3363 close c_last_xfr_elements;
3364
3365 hr_utility.set_location(gv_package || lv_procedure_name, 50);
3366 ln_step := 25;
3367
3368
3369
3370 EXCEPTION
3371 when others then
3372 lv_error_message := 'Error at step ' || ln_step ||
3373 ' in ' || gv_package || lv_procedure_name;
3374
3375 hr_utility.trace(lv_error_message || '-' || sqlerrm);
3376
3377 lv_error_message :=
3378 pay_emp_action_arch.set_error_message(lv_error_message);
3379
3380 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
3381 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
3382 hr_utility.raise_error;
3383
3384 END get_xfr_elements;
3385
3386
3387
3388 /******************************************************************
3389 Name : get_missing_xfr_info
3390 Purpose : The procedure gets the elements which have been
3391 processed for a given Payment Action. This procedure
3392 is only called if the archiver has not been run for
3393 all pre-payment actions.
3394 Arguments :
3395 Notes :
3396 ******************************************************************/
3397 PROCEDURE get_missing_xfr_info(p_xfr_action_id in number
3398 ,p_tax_unit_id in number
3399 ,p_assignment_id in number
3400 ,p_last_pymt_action_id in number
3401 ,p_last_pymt_eff_date in date
3402 ,p_last_xfr_eff_date in date
3403 ,p_ytd_balcall_aaid in number
3404 ,p_pymt_eff_date in date
3405 ,p_legislation_code in varchar2
3406 )
3407
3408 IS
3409
3410 cursor c_prev_elements(cp_assignment_id in number
3411 ,cp_pymt_eff_date in date
3412 ,cp_last_xfr_eff_date in date) is
3413 SELECT /*+ ORDERED use_nl(PAA,PPA,PPF) */
3414 DISTINCT
3415 pec.classification_name,
3416 pet.processing_priority,
3417 decode(pec.classification_name,
3418 'Tax Deductions',
3419 nvl(petl.reporting_name, petl.element_name) || ' Withheld',
3420 nvl(petl.reporting_name, petl.element_name)) reporting_name,
3421 decode(pec.classification_name,
3422 'Tax Deductions', null,
3423 prr.element_type_id) element_type_id,
3424 nvl(decode(pec.classification_name,
3425 'Tax Deductions', prr.jurisdiction_code), '00-000-0000'),
3426 pet.element_information10,
3427 pet.element_information12
3428 from PAY_ASSIGNMENT_ACTIONS PAA,
3429 PAY_PAYROLL_ACTIONS PPA,
3430 PAY_PAYROLLS_F PPF,
3431 PAY_RUN_RESULTS PRR,
3432 PAY_ELEMENT_TYPES_F PET ,
3433 PAY_ELEMENT_CLASSIFICATIONS PEC,
3434 PAY_ELEMENT_TYPES_F_TL PETL
3435 /*changing the order for bug 5549032
3436 pay_run_results prr,
3437 pay_element_types_f pet ,
3438 pay_element_classifications pec,
3439 pay_assignment_actions paa,
3440 pay_payroll_actions ppa,
3441 pay_element_types_f_tl petl,
3442 pay_all_payrolls_f ppf */ -- Bug 3370112
3443 where ppa.action_type in ('R', 'Q', 'B')
3444 and ppa.effective_date > cp_last_xfr_eff_date
3445 and ppa.effective_date <= cp_pymt_eff_date
3446 and ppa.payroll_id = ppf.payroll_id
3447 and ppf.payroll_id >= 0
3448 and ppa.effective_date between ppf.effective_start_date
3449 and ppf.effective_end_date
3450 and paa.payroll_action_id = ppa.payroll_action_id
3451 and paa.assignment_id = cp_assignment_id
3452 and paa.assignment_action_id = prr.assignment_action_id
3453 and pet.element_type_id = prr.element_type_id
3454 and pet.element_information10 is not null
3455 and ppa.effective_date between pet.effective_start_date
3456 and pet.effective_end_date
3457 and petl.element_type_id = pet.element_type_id
3458 and petl.language = gv_person_lang
3459 and pec.classification_id = pet.classification_id
3460 and pec.classification_name in ('Earnings',
3461 'Alien/Expat Earnings',
3462 'Supplemental Earnings',
3463 'Imputed Earnings',
3464 'Taxable Benefits',
3465 'Pre-Tax Deductions',
3466 'Involuntary Deductions',
3467 'Voluntary Deductions',
3468 'Non-payroll Payments',
3469 'Tax Deductions'
3470 )
3471 and pet.element_name not like '%Calculator'
3472 and pet.element_name not like '%Special Inputs'
3473 and pet.element_name not like '%Special Features'
3474 and pet.element_name not like '%Special Features 2'
3475 and pet.element_name not like '%Verifier'
3476 and pet.element_name not like '%Priority'
3477 order by 1, 3, 4;
3478
3479 lv_element_classfication_name VARCHAR2(80);
3480 ln_primary_balance_id NUMBER;
3481 ln_processing_priority NUMBER;
3482 lv_reporting_name VARCHAR2(80);
3483 ln_element_type_id NUMBER;
3484 lv_jurisdiction_code VARCHAR2(80);
3485 ln_hours_balance_id NUMBER;
3486
3487 ln_ytd_hours_balance_id NUMBER;
3488 ln_ytd_defined_balance_id NUMBER;
3489 ln_payments_amount NUMBER;
3490 ln_ytd_hours NUMBER;
3491 ln_ytd_amount NUMBER(17,2);
3492 lv_action_info_category VARCHAR2(30) := 'AC DEDUCTIONS';
3493
3494 ln_index NUMBER ;
3495 lv_element_archived VARCHAR2(1) := 'N';
3496 lv_procedure_name VARCHAR2(100) := '.get_missing_xfr_info';
3497 lv_error_message VARCHAR2(200);
3498 ln_step NUMBER;
3499
3500 BEGIN
3501 ln_step := 1;
3502 hr_utility.set_location(gv_package || lv_procedure_name, 10);
3503 hr_utility.trace('p_xfr_action_id = '|| p_xfr_action_id);
3504 hr_utility.trace('p_tax_unit_id = '|| p_tax_unit_id);
3505 hr_utility.trace('p_last_pymt_action_id = '|| p_last_pymt_action_id );
3506 hr_utility.trace('p_last_pymt_eff_date = '|| p_last_pymt_eff_date);
3507 hr_utility.trace('p_last_xfr_eff_date = '|| p_last_xfr_eff_date);
3508 hr_utility.trace('p_pymt_eff_date = '|| p_pymt_eff_date);
3509
3510 open c_prev_elements(p_assignment_id,
3511 p_pymt_eff_date,
3512 p_last_xfr_eff_date);
3513 loop
3514 fetch c_prev_elements into lv_element_classfication_name,
3515 ln_processing_priority,
3516 lv_reporting_name,
3517 ln_element_type_id,
3518 lv_jurisdiction_code,
3519 ln_primary_balance_id,
3520 ln_hours_balance_id;
3521 if c_prev_elements%notfound then
3522 hr_utility.set_location(gv_package || lv_procedure_name, 20);
3523 exit;
3524 end if;
3525 hr_utility.set_location(gv_package || lv_procedure_name, 30);
3526
3527 if lv_element_classfication_name like '% Deductions' then
3528 ln_hours_balance_id := null;
3529 end if;
3530
3531 ln_step := 5;
3532 if pay_ac_action_arch.emp_elements_tab.count > 0 then
3533 for i in pay_ac_action_arch.emp_elements_tab.first..
3534 pay_ac_action_arch.emp_elements_tab.last LOOP
3535 if pay_ac_action_arch.emp_elements_tab(i).element_primary_balance_id
3536 = ln_primary_balance_id and
3537 pay_ac_action_arch.emp_elements_tab(i).jurisdiction_code
3538 = lv_jurisdiction_code then
3539 lv_element_archived := 'Y';
3540 exit;
3541 end if;
3542 end loop;
3543 end if;
3544
3545 if lv_element_archived = 'N' then
3546 /* populate the extra element table */
3547 ln_step := 10;
3548 ln_index := pay_ac_action_arch.emp_elements_tab.count;
3549 pay_ac_action_arch.emp_elements_tab(ln_index).element_type_id
3550 := ln_element_type_id;
3551 pay_ac_action_arch.emp_elements_tab(ln_index).element_classfn
3552 := lv_element_classfication_name;
3553 pay_ac_action_arch.emp_elements_tab(ln_index).element_primary_balance_id
3554 := ln_primary_balance_id;
3555 pay_ac_action_arch.emp_elements_tab(ln_index).element_processing_priority
3556 := ln_processing_priority;
3557 pay_ac_action_arch.emp_elements_tab(ln_index).element_reporting_name
3558 := lv_reporting_name;
3559 pay_ac_action_arch.emp_elements_tab(ln_index).element_hours_balance_id
3560 := ln_hours_balance_id;
3561 pay_ac_action_arch.emp_elements_tab(ln_index).jurisdiction_code
3562 := lv_jurisdiction_code;
3563
3564 if lv_jurisdiction_code <> '00-000-0000' then
3565 pay_balance_pkg.set_context('JURISDICTION_CODE', lv_jurisdiction_code);
3566 gv_ytd_balance_dimension := gv_dim_asg_jd_gre_ytd;
3567 else
3568 pay_balance_pkg.set_context('JURISDICTION_CODE', lv_jurisdiction_code);
3569 if gv_reporting_level = 'TAXGRP' then
3570 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
3571 else
3572 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
3573 end if;
3574 end if;
3575
3576 ln_step := 15;
3577 ln_ytd_defined_balance_id :=
3578 pay_emp_action_arch.get_defined_balance_id
3579 (ln_primary_balance_id,
3580 gv_ytd_balance_dimension,
3581 p_legislation_code);
3582 hr_utility.set_location(gv_package || lv_procedure_name, 60);
3583 if ln_ytd_defined_balance_id is not null then
3584 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
3585 ln_ytd_defined_balance_id,
3586 p_ytd_balcall_aaid),0);
3587 hr_utility.set_location(gv_package || lv_procedure_name, 70);
3588 end if;
3589 if ln_hours_balance_id is not null then
3590 ln_ytd_hours_balance_id :=
3591 pay_emp_action_arch.get_defined_balance_id
3592 (ln_hours_balance_id,
3593 gv_ytd_balance_dimension,
3594 p_legislation_code);
3595 hr_utility.set_location(gv_package || lv_procedure_name, 80);
3596 if ln_ytd_hours_balance_id is not null then
3597 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
3598 ln_ytd_hours_balance_id,
3599 p_ytd_balcall_aaid),0);
3600 hr_utility.set_location(gv_package || lv_procedure_name, 90);
3601 end if;
3602 end if;
3603
3604 hr_utility.set_location(gv_package || lv_procedure_name, 100);
3605 if nvl(ln_ytd_amount, 0) <> 0 or nvl(ln_payments_amount, 0) <> 0 then
3606 ln_index := pay_ac_action_arch.lrr_act_tab.count;
3607 hr_utility.trace('ln_index = ' || ln_index);
3608 if lv_element_classfication_name in ('Earnings',
3609 'Alien/Expat Earnings',
3610 'Supplemental Earnings',
3611 'Taxable Benefits',
3612 'Imputed Earnings',
3613 'Non-payroll Payments') then
3614 lv_action_info_category := 'AC EARNINGS';
3615 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
3616 := fnd_number.number_to_canonical(ln_ytd_hours); /* Bug 3311866*/
3617 end if;
3618
3619 ln_step := 20;
3620 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
3621 := lv_action_info_category;
3622 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
3623 := lv_jurisdiction_code;
3624 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
3625 := p_xfr_action_id ;
3626 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
3627 := lv_element_classfication_name;
3628 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
3629 := ln_element_type_id;
3630 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
3631 := ln_primary_balance_id;
3632 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
3633 := ln_processing_priority;
3634 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
3635 := fnd_number.number_to_canonical(nvl(ln_payments_amount,0));
3636 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
3637 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
3638 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
3639 := lv_reporting_name;
3640 -- Added for Bug# 7348767, Bug# 7348838
3641 if lv_action_info_category = 'AC DEDUCTIONS' THEN
3642 pay_ac_action_arch.lrr_act_tab(ln_index).act_info24 := lv_reporting_name;
3643 end if;
3644 end if;
3645 end if;
3646 lv_element_archived := 'N';
3647 lv_action_info_category := 'AC DEDUCTIONS';
3648 lv_element_classfication_name := null;
3649 ln_element_type_id := null;
3650 lv_jurisdiction_code := null;
3651 ln_primary_balance_id := null;
3652 ln_processing_priority := null;
3653 lv_reporting_name := null;
3654 ln_hours_balance_id := null;
3655 end loop;
3656 close c_prev_elements;
3657 hr_utility.set_location(gv_package || lv_procedure_name, 150);
3658
3659 ln_step := 30;
3660
3661
3662 EXCEPTION
3663 when others then
3664
3665 lv_error_message := 'Error at step ' || ln_step ||
3666 ' in ' || gv_package || lv_procedure_name;
3667
3668 hr_utility.trace(lv_error_message || '-' || sqlerrm);
3669
3670 lv_error_message :=
3671 pay_emp_action_arch.set_error_message(lv_error_message);
3672
3673 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
3674 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
3675 hr_utility.raise_error;
3676
3677 END get_missing_xfr_info;
3678
3679
3680 FUNCTION check_run_balance_status(p_assignment_id in number
3681 ,p_curr_pymt_eff_date in date
3682 ,p_legislation_code in varchar2
3683 )
3684 RETURN VARCHAR2
3685 IS
3686
3687 lv_business_grp_id NUMBER;
3688 lv_rb_status VARCHAR2(1);
3689
3690 cursor c_business_grp_id is
3691 select distinct business_group_id
3692 from per_all_assignments_f
3693 where assignment_id = p_assignment_id;
3694
3695 BEGIN
3696
3697 -- Populating the PL/SQL table run_bal_stat_tab with the validity status
3698 -- of various attributes. If already populated, we use that to check the
3699 -- validity
3700 if run_bal_stat.COUNT > 0 then
3701 for i in run_bal_stat.first .. run_bal_stat.last loop
3702 if run_bal_stat(i).valid_status = 'N' then
3703 lv_rb_status := 'N';
3704 exit;
3705 end if;
3706 end loop;
3707 else
3708 open c_business_grp_id;
3709 fetch c_business_grp_id into lv_business_grp_id;
3710 close c_business_grp_id;
3711 if p_legislation_code = 'US' then
3712 run_bal_stat(1).attribute_name := 'PAY_US_EARNINGS_AMTS';
3713 run_bal_stat(2).attribute_name := 'PAY_US_PRE_TAX_DEDUCTIONS';
3714 run_bal_stat(3).attribute_name := 'PAY_US_AFTER_TAX_DEDUCTIONS';
3715 run_bal_stat(4).attribute_name := 'PAY_US_TAX_DEDUCTIONS';
3716 else
3717 run_bal_stat(1).attribute_name := 'PAY_CA_EARNINGS';
3718 run_bal_stat(2).attribute_name := 'PAY_CA_DEDUCTIONS';
3719 end if;
3720
3721 for i in run_bal_stat.first .. run_bal_stat.last loop
3722 run_bal_stat(i).valid_status := pay_us_payroll_utils.check_balance_status(
3723 p_curr_pymt_eff_date,
3724 lv_business_grp_id,
3725 run_bal_stat(i).attribute_name,
3726 p_legislation_code);
3727 if (lv_rb_status is NULL and run_bal_stat(i).valid_status = 'N') then
3728 lv_rb_status := 'N';
3729 end if;
3730 end loop;
3731 end if;
3732
3733 if lv_rb_status is NULL then
3734 lv_rb_status := 'Y';
3735 end if;
3736
3737 return (lv_rb_status);
3738
3739 END check_run_balance_status;
3740
3741
3742 PROCEDURE get_prev_ytd_elements(p_assignment_id in number
3743 ,p_xfr_action_id in number
3744 ,p_curr_pymt_action_id in number
3745 ,p_curr_pymt_eff_date in date
3746 ,p_start_eff_date in date
3747 ,p_tax_unit_id in number
3748 ,p_ytd_balcall_aaid in number
3749 ,p_sepchk_flag in varchar2
3750 ,p_sepchk_run_type_id in number
3751 ,p_legislation_code in varchar2
3752 ,p_action_type1 in varchar2
3753 ,p_action_type2 in varchar2
3754 ,p_action_type3 in varchar2
3755 )
3756 IS
3757
3758 lv_element_classification_name VARCHAR2(80);
3759 ln_processing_priority NUMBER;
3760 lv_reporting_name VARCHAR2(80);
3761 ln_element_type_id NUMBER;
3762 lv_jurisdiction_code VARCHAR2(80);
3763 ln_primary_balance_id NUMBER;
3764 ln_hours_balance_id NUMBER;
3765
3766 ln_element_index NUMBER ;
3767 lv_element_archived VARCHAR2(1);
3768 lv_procedure_name VARCHAR2(100);
3769 lv_error_message VARCHAR2(200);
3770 ln_step NUMBER;
3771 lv_run_bal_status VARCHAR2(1);
3772
3773 BEGIN
3774 ln_step := 1;
3775 lv_run_bal_status := NULL;
3776 lv_element_archived := 'N';
3777 lv_procedure_name := '.get_prev_ytd_elements';
3778
3779 hr_utility.set_location(gv_package || lv_procedure_name, 10);
3780 hr_utility.trace('p_xfr_action_id' || p_xfr_action_id);
3781 hr_utility.trace('p_assignment_id '|| p_assignment_id);
3782 hr_utility.trace('p_tax_unit_id ' || p_tax_unit_id);
3783 hr_utility.trace('p_sepchk_flag ' || p_sepchk_flag);
3784 hr_utility.trace('p_curr_pymt_eff_date '|| p_curr_pymt_eff_date);
3785 hr_utility.trace('p_start_eff_date '|| p_start_eff_date);
3786 hr_utility.trace('p_legislation_code ' || p_legislation_code);
3787 hr_utility.trace('p_sepchk_run_type_id '|| p_sepchk_run_type_id);
3788 hr_utility.trace('p_ytd_balcall_aaid ' || p_ytd_balcall_aaid);
3789 hr_utility.trace('p_curr_pymt_action_id '
3790 ||to_char(p_curr_pymt_action_id ));
3791
3792
3793 lv_run_bal_status := check_run_balance_status(
3794 p_assignment_id => p_assignment_id
3795 ,p_curr_pymt_eff_date => p_curr_pymt_eff_date
3796 ,p_legislation_code => p_legislation_code);
3797
3798 if lv_run_bal_status = 'Y' then
3799 open c_prev_ytd_action_elem_rbr(p_assignment_id,
3800 p_curr_pymt_eff_date,
3801 p_start_eff_date);
3802 else
3803 open c_prev_ytd_action_elements(p_assignment_id
3804 ,p_curr_pymt_eff_date
3805 ,p_start_eff_date
3806 ,p_action_type1
3807 ,p_action_type2
3808 ,p_action_type3);
3809 end if;
3810
3811 loop
3812 if lv_run_bal_status = 'Y' then
3813 fetch c_prev_ytd_action_elem_rbr into
3814 lv_element_classification_name,
3815 ln_processing_priority,
3816 lv_reporting_name,
3817 --lv_element_name,
3818 ln_element_type_id,
3819 lv_jurisdiction_code,
3820 ln_primary_balance_id,
3821 ln_hours_balance_id;
3822 if c_prev_ytd_action_elem_rbr%notfound then
3823 hr_utility.set_location(gv_package || lv_procedure_name, 40);
3824 exit;
3825 end if;
3826 else
3827 fetch c_prev_ytd_action_elements into
3828 lv_element_classification_name,
3829 ln_processing_priority,
3830 lv_reporting_name,
3831 --lv_element_name,
3832 ln_element_type_id,
3833 lv_jurisdiction_code,
3834 ln_primary_balance_id,
3835 ln_hours_balance_id;
3836 if c_prev_ytd_action_elements%notfound then
3837 hr_utility.set_location(gv_package || lv_procedure_name, 45);
3838 exit;
3839 end if;
3840 end if;
3841
3842 hr_utility.set_location(gv_package || lv_procedure_name, 50);
3843 hr_utility.trace('Ele type id = ' || ln_element_type_id);
3844 hr_utility.trace('Reporting Name = '|| lv_reporting_name);
3845 hr_utility.trace('Primary Bal id = '|| ln_primary_balance_id);
3846 hr_utility.trace('JD Code = ' || lv_jurisdiction_code);
3847 hr_utility.trace('Ele Class = ' || lv_element_classification_name);
3848
3849 if lv_element_classification_name like '% Deductions' then
3850 ln_step := 10;
3851 ln_hours_balance_id := null;
3852 end if;
3853
3854 /**********************************************************
3855 ** check whether the element has already been archived
3856 ** when archiving the Current Action. If it has been archived
3857 ** skip the element
3858 **********************************************************/
3859 ln_step := 15;
3860 if pay_ac_action_arch.emp_elements_tab.count > 0 then
3861 for i in pay_ac_action_arch.emp_elements_tab.first ..
3862 pay_ac_action_arch.emp_elements_tab.last loop
3863
3864 if pay_ac_action_arch.emp_elements_tab(i).element_primary_balance_id
3865 = ln_primary_balance_id and
3866 pay_ac_action_arch.emp_elements_tab(i).jurisdiction_code
3867 = lv_jurisdiction_code then
3868
3869 hr_utility.set_location(gv_package || lv_procedure_name, 65);
3870 lv_element_archived := 'Y';
3871 exit;
3872 end if;
3873 end loop;
3874 end if;
3875
3876 if lv_element_archived = 'N' then
3877 ln_step := 20;
3878 hr_utility.set_location(gv_package || lv_procedure_name, 70);
3879 ln_element_index := pay_ac_action_arch.emp_elements_tab.count;
3880 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_type_id
3881 := ln_element_type_id;
3882 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_classfn
3883 := lv_element_classification_name;
3884 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_reporting_name
3885 := lv_reporting_name;
3886 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_primary_balance_id
3887 := ln_primary_balance_id;
3888 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_processing_priority
3889 := ln_processing_priority;
3890 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_hours_balance_id
3891 := ln_hours_balance_id;
3892 pay_ac_action_arch.emp_elements_tab(ln_element_index).jurisdiction_code
3893 := lv_jurisdiction_code;
3894
3895 /*****************************************************************
3896 ** The Payment Assignemnt Action is not passed to this procedure
3897 ** as we do not want to call the Payment Balance.
3898 *****************************************************************/
3899 hr_utility.set_location(gv_package || lv_procedure_name, 80);
3900
3901 ln_step := 25;
3902 populate_elements(p_xfr_action_id => p_xfr_action_id
3903 ,p_pymt_assignment_action_id => p_curr_pymt_action_id
3904 ,p_pymt_eff_date => p_curr_pymt_eff_date
3905 ,p_element_type_id => ln_element_type_id
3906 ,p_primary_balance_id => ln_primary_balance_id
3907 ,p_hours_balance_id => ln_hours_balance_id
3908 ,p_processing_priority => ln_processing_priority
3909 ,p_element_classification_name
3910 => lv_element_classification_name
3911 ,p_reporting_name => lv_reporting_name
3912 ,p_tax_unit_id => p_tax_unit_id
3913 ,p_pymt_balcall_aaid => null
3914 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
3915 ,p_jurisdiction_code => lv_jurisdiction_code
3916 ,p_legislation_code => p_legislation_code
3917 ,p_sepchk_flag => p_sepchk_flag
3918 ,p_sepchk_run_type_id => p_sepchk_run_type_id
3919 ,p_original_date_earned => null
3920 ,p_effective_start_date => null
3921 ,p_effective_end_date => null
3922 ,p_final_rate => null
3923 ,p_ytd_flag => 'N'
3924 );
3925 end if;
3926 lv_element_archived := 'N'; -- Initilializing the variable back
3927 -- to N for the next element
3928 lv_element_classification_name := null;
3929 ln_element_type_id := null;
3930 lv_jurisdiction_code := null;
3931 ln_primary_balance_id := null;
3932 ln_processing_priority := null;
3933 lv_reporting_name := null;
3934 ln_hours_balance_id := null;
3935 end loop;
3936
3937 -- Bug 3585754
3938 if lv_run_bal_status = 'Y' then
3939 close c_prev_ytd_action_elem_rbr;
3940 else
3941 close c_prev_ytd_action_elements;
3942 end if;
3943
3944 hr_utility.set_location(gv_package || lv_procedure_name, 90);
3945
3946
3947 ln_step := 30;
3948 if pay_ac_action_arch.lrr_act_tab.count > 0 then
3949 for i in pay_ac_action_arch.lrr_act_tab.first ..
3950 pay_ac_action_arch.lrr_act_tab.last loop
3951
3952 hr_utility.trace('after populate_elements ftp' ||
3953 ' action_context_id is ' ||
3954 to_char(pay_ac_action_arch.lrr_act_tab(i).action_context_id));
3955 hr_utility.trace('action_info_category ' ||
3956 pay_ac_action_arch.lrr_act_tab(i).action_info_category);
3957 hr_utility.trace('act_info1 is ' ||
3958 pay_ac_action_arch.lrr_act_tab(i).act_info1);
3959 hr_utility.trace('act_info10 ' ||
3960 pay_ac_action_arch.lrr_act_tab(i).act_info10);
3961 hr_utility.trace('act_info3 ' ||
3962 pay_ac_action_arch.lrr_act_tab(i).act_info3);
3963 hr_utility.trace('act_info4 ' ||
3964 pay_ac_action_arch.lrr_act_tab(i).act_info4);
3965 hr_utility.trace('act_info5 ' ||
3966 pay_ac_action_arch.lrr_act_tab(i).act_info5);
3967 hr_utility.trace('act_info6 ' ||
3968 pay_ac_action_arch.lrr_act_tab(i).act_info6);
3969 hr_utility.trace('act_info7 ' ||
3970 pay_ac_action_arch.lrr_act_tab(i).act_info7);
3971 hr_utility.trace('act_info8 ' ||
3972 pay_ac_action_arch.lrr_act_tab(i).act_info8);
3973
3974 end loop;
3975 end if;
3976
3977 hr_utility.set_location(gv_package || lv_procedure_name, 110);
3978
3979 ln_step := 35;
3980 if pay_ac_action_arch.emp_elements_tab.count > 0 then
3981 for j in pay_ac_action_arch.emp_elements_tab.first ..
3982 pay_ac_action_arch.emp_elements_tab.last loop
3983
3984 hr_utility.trace('EMP_ELEMENTS_TAB.element_type ' ||
3985 to_char(pay_ac_action_arch.emp_elements_tab(j).element_type_id));
3986 end loop;
3987 end if;
3988
3989 hr_utility.set_location(gv_package || lv_procedure_name, 200);
3990
3991 EXCEPTION
3992 when others then
3993
3994 lv_error_message := 'Error at step ' || ln_step ||
3995 ' in ' || gv_package || lv_procedure_name;
3996
3997 hr_utility.trace(lv_error_message || '-' || sqlerrm);
3998
3999 lv_error_message :=
4000 pay_emp_action_arch.set_error_message(lv_error_message);
4001
4002 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
4003 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
4004 hr_utility.raise_error;
4005
4006 END get_prev_ytd_elements;
4007
4008
4009 /******************************************************************
4010 Name : first_time_process
4011 Purpose : This procedure is called only if the archiver is run
4012 for the first time for an assignment. It gets all the
4013 elements which have been processed within a given
4014 calendar year till current payment date i.e. the
4015 end date of the Archiver run.
4016 Arguments :
4017 Notes :
4018 ******************************************************************/
4019 PROCEDURE first_time_process(p_assignment_id in number
4020 ,p_xfr_action_id in number
4021 ,p_curr_pymt_action_id in number
4022 ,p_curr_pymt_eff_date in date
4023 ,p_curr_eff_date in date
4024 ,p_tax_unit_id in number
4025 ,p_sepchk_run_type_id in number
4026 ,p_ytd_balcall_aaid in number
4027 ,p_pymt_balcall_aaid in number
4028 ,p_sepchk_flag in varchar2
4029 ,p_legislation_code in varchar2
4030 )
4031
4032 IS
4033
4034 lv_procedure_name VARCHAR2(100);
4035 lv_error_message VARCHAR2(200);
4036 ln_step NUMBER;
4037
4038 BEGIN
4039 ln_step := 1;
4040 lv_procedure_name := '.first_time_process';
4041
4042 hr_utility.set_location(gv_package || lv_procedure_name, 10);
4043 hr_utility.trace('p_xfr_action_id' || p_xfr_action_id);
4044 hr_utility.trace('p_assignment_id '|| p_assignment_id);
4045 hr_utility.trace('p_curr_eff_date '|| p_curr_eff_date);
4046 hr_utility.trace('p_tax_unit_id ' || p_tax_unit_id);
4047 hr_utility.trace('p_sepchk_flag ' || p_sepchk_flag);
4048 hr_utility.trace('p_legislation_code ' || p_legislation_code);
4049 hr_utility.trace('p_sepchk_run_type_id '|| p_sepchk_run_type_id);
4050 hr_utility.trace('p_ytd_balcall_aaid ' || p_ytd_balcall_aaid);
4051 hr_utility.trace('p_pymt_balcall_aaid ' || p_pymt_balcall_aaid);
4052 hr_utility.trace('p_curr_pymt_action_id '
4053 ||to_char(p_curr_pymt_action_id ));
4054
4055 hr_utility.set_location(gv_package || lv_procedure_name, 20);
4056 ln_step := 10;
4057 get_current_elements(p_xfr_action_id => p_xfr_action_id
4058 ,p_curr_pymt_action_id => p_curr_pymt_action_id
4059 ,p_curr_pymt_eff_date => p_curr_pymt_eff_date
4060 ,p_assignment_id => p_assignment_id
4061 ,p_tax_unit_id => p_tax_unit_id
4062 ,p_sepchk_run_type_id => p_sepchk_run_type_id
4063 ,p_sepchk_flag => p_sepchk_flag
4064 ,p_pymt_balcall_aaid => p_pymt_balcall_aaid
4065 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
4066 ,p_legislation_code => p_legislation_code);
4067 hr_utility.set_location(gv_package || lv_procedure_name, 30);
4068
4069 ln_step := 20;
4070 get_prev_ytd_elements(p_assignment_id => p_assignment_id
4071 ,p_xfr_action_id => p_xfr_action_id
4072 ,p_curr_pymt_action_id => p_curr_pymt_action_id
4073 ,p_curr_pymt_eff_date => p_curr_pymt_eff_date
4074 ,p_start_eff_date => trunc(p_curr_pymt_eff_date, 'Y')
4075 ,p_tax_unit_id => p_tax_unit_id
4076 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
4077 ,p_sepchk_flag => p_sepchk_flag
4078 ,p_sepchk_run_type_id => p_sepchk_run_type_id
4079 ,p_legislation_code => p_legislation_code
4080 ,p_action_type1 => 'R'
4081 ,p_action_type2 => 'Q'
4082 ,p_action_type3 => 'B');
4083
4084 ln_step := 30;
4085 hr_utility.set_location(gv_package || lv_procedure_name, 200);
4086
4087 EXCEPTION
4088 when others then
4089
4090 lv_error_message := 'Error at step ' || ln_step ||
4091 ' in ' || gv_package || lv_procedure_name;
4092
4093 hr_utility.trace(lv_error_message || '-' || sqlerrm);
4094
4095 lv_error_message :=
4096 pay_emp_action_arch.set_error_message(lv_error_message);
4097
4098 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
4099 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
4100 hr_utility.raise_error;
4101
4102 END first_time_process;
4103
4104
4105 /******************************************************************
4106 Name : populate_summary
4107 Purpose : This procedure add the values for different
4108 classifications and inserts two rows for CURRENT and
4109 YTD Summary.
4110 Arguments :
4111 Notes :
4112 ******************************************************************/
4113 PROCEDURE populate_summary(p_xfr_action_id in number)
4114 IS
4115 lv_earnings VARCHAR2(80):= 0;
4116 lv_supplemental_earnings VARCHAR2(80):= 0;
4117 lv_imputed_Earnings VARCHAR2(80):= 0;
4118 lv_non_payroll_payments VARCHAR2(80):= 0;
4119 lv_pre_tax_deductions VARCHAR2(80):= 0;
4120 lv_involuntary_deductions VARCHAR2(80):= 0;
4121 lv_voluntary_deductions VARCHAR2(80):= 0;
4122 lv_tax_deductions VARCHAR2(80):= 0;
4123 lv_taxable_benefits VARCHAR2(80):= 0;
4124 lv_alien_expat_earnings VARCHAR2(80):= 0;
4125
4126 lv_ytd_earnings VARCHAR2(80):= 0;
4127 lv_ytd_supplemental_earnings VARCHAR2(80):= 0;
4128 lv_ytd_imputed_Earnings VARCHAR2(80):= 0;
4129 lv_ytd_non_payroll_payments VARCHAR2(80):= 0;
4130 lv_ytd_pre_tax_deductions VARCHAR2(80):= 0;
4131 lv_ytd_involuntary_deductions VARCHAR2(80):= 0;
4132 lv_ytd_voluntary_deductions VARCHAR2(80):= 0;
4133 lv_ytd_tax_deductions VARCHAR2(80):= 0;
4134 lv_ytd_taxable_benefits VARCHAR2(80):= 0;
4135 lv_ytd_alien_expat_earnings VARCHAR2(80):= 0;
4136
4137 ln_index NUMBER;
4138 lv_procedure_name VARCHAR2(100) := '.populate_summary';
4139 lv_error_message VARCHAR2(200);
4140 ln_step NUMBER;
4141
4142 lv_current_label VARCHAR2(100);
4143 lv_ytd_label VARCHAR2(100);
4144 j NUMBER := 0;
4145
4146 BEGIN
4147 ln_step := 1;
4148 hr_utility.set_location(gv_package || lv_procedure_name, 10);
4149 if pay_ac_action_arch.lrr_act_tab.count > 0 then
4150 hr_utility.set_location(gv_package || lv_procedure_name, 20);
4151
4152 ln_step := 2;
4153 for i in pay_ac_action_arch.lrr_act_tab.first ..
4154 pay_ac_action_arch.lrr_act_tab.last loop
4155
4156 if pay_ac_action_arch.lrr_act_tab(i).action_context_id
4157 = p_xfr_action_id then
4158 if pay_ac_action_arch.lrr_act_tab(i).action_info_category
4159 = 'AC EARNINGS' then
4160 if pay_ac_action_arch.lrr_act_tab(i).act_info1
4161 = 'Earnings' then
4162 hr_utility.set_location(gv_package || lv_procedure_name, 30);
4163 ln_step := 3;
4164 lv_earnings
4165 := lv_earnings +
4166 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4167 lv_ytd_earnings
4168 := lv_ytd_earnings +
4169 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4170 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4171 = 'Supplemental Earnings' then
4172 hr_utility.set_location(gv_package || lv_procedure_name, 40);
4173 ln_step := 4;
4174 lv_supplemental_earnings
4175 := lv_supplemental_earnings +
4176 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4177 lv_ytd_supplemental_earnings
4178 := lv_ytd_supplemental_earnings +
4179 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4180 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4181 = 'Imputed Earnings' then
4182 hr_utility.set_location(gv_package || lv_procedure_name, 50);
4183 ln_step := 5;
4184 lv_imputed_earnings
4185 := lv_imputed_earnings +
4186 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4187 lv_ytd_imputed_earnings
4188 := lv_ytd_imputed_earnings +
4189 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4190 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4191 = 'Non-payroll Payments' then
4192 hr_utility.set_location(gv_package || lv_procedure_name, 50);
4193 ln_step := 6;
4194 lv_non_payroll_payments
4195 := lv_non_payroll_payments +
4196 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4197 lv_ytd_non_payroll_payments
4198 := lv_ytd_non_payroll_payments +
4199 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4200 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4201 = 'Taxable Benefits' then
4202 hr_utility.set_location(gv_package || lv_procedure_name, 55);
4203 ln_step := 7;
4204 lv_taxable_benefits
4205 := lv_taxable_benefits +
4206 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4207 lv_ytd_taxable_benefits
4208 := lv_ytd_taxable_benefits +
4209 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4210 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4211 = 'Alien/Expat Earnings' then
4212 hr_utility.set_location(gv_package || lv_procedure_name, 56);
4213 ln_step := 8;
4214 lv_alien_expat_earnings
4215 := lv_alien_expat_earnings +
4216 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4217 lv_ytd_alien_expat_earnings
4218 := lv_ytd_alien_expat_earnings +
4219 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4220 end if;
4221
4222 elsif pay_ac_action_arch.lrr_act_tab(i).action_info_category
4223 = 'AC DEDUCTIONS' then
4224 if pay_ac_action_arch.lrr_act_tab(i).act_info1
4225 = 'Pre-Tax Deductions' then
4226 hr_utility.set_location(gv_package || lv_procedure_name, 60);
4227 ln_step := 15;
4228 lv_pre_tax_deductions
4229 := lv_pre_tax_deductions +
4230 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4231 lv_ytd_pre_tax_deductions
4232 := lv_ytd_pre_tax_deductions +
4233 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4234 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4235 = 'Involuntary Deductions' then
4236 hr_utility.set_location(gv_package || lv_procedure_name, 70);
4237 ln_step := 16;
4238 lv_involuntary_deductions
4239 := lv_involuntary_deductions +
4240 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4241 lv_ytd_involuntary_deductions
4242 := lv_ytd_involuntary_deductions +
4243 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4244 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4245 = 'Voluntary Deductions' then
4246 hr_utility.set_location(gv_package || lv_procedure_name, 80);
4247 ln_step := 17;
4248 lv_voluntary_deductions
4249 := lv_voluntary_deductions +
4250 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4251 lv_ytd_voluntary_deductions
4252 := lv_ytd_voluntary_deductions +
4253 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4254 elsif pay_ac_action_arch.lrr_act_tab(i).act_info1
4255 = 'Tax Deductions' then
4256 hr_utility.set_location(gv_package || lv_procedure_name, 90);
4257 ln_step := 18;
4258 lv_tax_deductions
4259 := lv_tax_deductions +
4260 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info8),0);
4261 lv_ytd_tax_deductions
4262 := lv_ytd_tax_deductions +
4263 nvl(fnd_number.canonical_to_number(pay_ac_action_arch.lrr_act_tab(i).act_info9),0);
4264 end if;
4265 end if;
4266 end if;
4267 end loop;
4268 end if;
4269
4270 hr_utility.set_location(gv_package || lv_procedure_name, 95);
4271 ln_step := 24;
4272 j := 0;
4273 if pay_ac_action_arch.ltr_summary_labels.count > 0 then
4274 for j in pay_ac_action_arch.ltr_summary_labels.first..
4275 pay_ac_action_arch.ltr_summary_labels.last loop
4276 if pay_ac_action_arch.ltr_summary_labels(j).language
4277 = pay_ac_action_arch.gv_person_lang and
4278 pay_ac_action_arch.ltr_summary_labels(j).lookup_code = 'CURRENT' then
4279 lv_current_label := pay_ac_action_arch.ltr_summary_labels(j).meaning;
4280 end if;
4281
4282 if pay_ac_action_arch.ltr_summary_labels(j).language
4283 = pay_ac_action_arch.gv_person_lang and
4284 pay_ac_action_arch.ltr_summary_labels(j).lookup_code = 'YTD' then
4285 lv_ytd_label := pay_ac_action_arch.ltr_summary_labels(j).meaning;
4286 end if;
4287 end loop;
4288 end if;
4289
4290 hr_utility.set_location(gv_package || lv_procedure_name, 100);
4291 /* Insert one row for CURRENT and one for YTD */
4292 if pay_ac_action_arch.lrr_act_tab.count > 0 then
4293 ln_step := 25;
4294 -- CURRENT
4295 ln_index := pay_ac_action_arch.lrr_act_tab.count;
4296 hr_utility.trace('ln_index = ' || ln_index);
4297 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
4298 := 'AC SUMMARY CURRENT';
4299 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
4300 := '00-000-0000';
4301 pay_ac_action_arch.lrr_act_tab(ln_index).act_info4
4302 := fnd_number.number_to_canonical(lv_earnings); /*Bug 3311866*/
4303 pay_ac_action_arch.lrr_act_tab(ln_index).act_info5
4304 := fnd_number.number_to_canonical(lv_supplemental_earnings) ;
4305 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
4306 := fnd_number.number_to_canonical(lv_imputed_earnings);
4307 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
4308 := fnd_number.number_to_canonical(lv_pre_tax_deductions) ;
4309 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
4310 := fnd_number.number_to_canonical(lv_involuntary_deductions);
4311 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
4312 := fnd_number.number_to_canonical(lv_voluntary_deductions) ;
4313 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
4314 := fnd_number.number_to_canonical(lv_tax_deductions) ;
4315 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
4316 := fnd_number.number_to_canonical(lv_taxable_benefits);
4317 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
4318 := fnd_number.number_to_canonical(lv_alien_expat_earnings);
4319 pay_ac_action_arch.lrr_act_tab(ln_index).act_info13
4320 := fnd_number.number_to_canonical(lv_non_payroll_payments);
4321 pay_ac_action_arch.lrr_act_tab(ln_index).act_info14
4322 := lv_current_label;
4323
4324 hr_utility.set_location(gv_package || lv_procedure_name, 120);
4325 -- YTD
4326 ln_index := pay_ac_action_arch.lrr_act_tab.count;
4327 hr_utility.trace('ln_index = ' || ln_index);
4328 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
4329 := 'AC SUMMARY YTD';
4330 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
4331 := '00-000-0000';
4332 pay_ac_action_arch.lrr_act_tab(ln_index).act_info4
4333 := fnd_number.number_to_canonical(lv_ytd_earnings); /*Bug 3311866*/
4334 pay_ac_action_arch.lrr_act_tab(ln_index).act_info5
4335 := fnd_number.number_to_canonical(lv_ytd_supplemental_earnings) ;
4336 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
4337 := fnd_number.number_to_canonical(lv_ytd_imputed_earnings);
4338 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
4339 := fnd_number.number_to_canonical(lv_ytd_pre_tax_deductions) ;
4340 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
4341 := fnd_number.number_to_canonical(lv_ytd_involuntary_deductions);
4342 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
4343 := fnd_number.number_to_canonical(lv_ytd_voluntary_deductions) ;
4344 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
4345 := fnd_number.number_to_canonical(lv_ytd_tax_deductions) ;
4346 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
4347 := fnd_number.number_to_canonical(lv_ytd_taxable_benefits);
4348 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
4349 := fnd_number.number_to_canonical(lv_ytd_alien_expat_earnings);
4350 pay_ac_action_arch.lrr_act_tab(ln_index).act_info13
4351 := fnd_number.number_to_canonical(lv_ytd_non_payroll_payments);
4352 pay_ac_action_arch.lrr_act_tab(ln_index).act_info14
4353 := lv_ytd_label;
4354 end if;
4355
4356 hr_utility.set_location(gv_package || lv_procedure_name, 200);
4357 ln_step := 15;
4358
4359 EXCEPTION
4360 when others then
4361
4362 lv_error_message := 'Error at step ' || ln_step ||
4363 ' in ' || gv_package || lv_procedure_name;
4364
4365 hr_utility.trace(lv_error_message || '-' || sqlerrm);
4366
4367 lv_error_message :=
4368 pay_emp_action_arch.set_error_message(lv_error_message);
4369
4370 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
4371 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
4372 hr_utility.raise_error;
4373
4374 END populate_summary;
4375
4376 /******************************************************************
4377 Name : process_additional_elements
4378 Purpose : Retrieve the elements processed in the given assignment
4379 and insert YTD balance to pl/sql table.
4380 Arguments : p_assignment_id => Terminated Assignment Id
4381 p_assignment_action_id => Max assignment action id
4382 of given assignment
4383 p_curr_eff_date => Current effective date
4384 p_xfr_action_id => Current XFR action id.
4385 Notes : This process is used to retrieve elements processed
4386 in terminated assignments which is not picked up by
4387 the archiver.
4388 ******************************************************************/
4389 PROCEDURE process_additional_elements(p_assignment_id in number
4390 ,p_assignment_action_id in number
4391 ,p_curr_eff_date in date
4392 ,p_xfr_action_id in number
4393 ,p_legislation_code in varchar2
4394 ,p_tax_unit_id in number)
4395 IS
4396
4397 lv_procedure_name VARCHAR2(50) := '.process_additional_elements';
4398 lv_element_classification_name VARCHAR2(80);
4399 ln_processing_priority NUMBER;
4400 lv_reporting_name VARCHAR2(80);
4401 ln_element_type_id NUMBER;
4402 lv_jurisdiction_code VARCHAR2(80);
4403 ln_primary_balance_id NUMBER;
4404 ln_hours_balance_id NUMBER;
4405 ln_element_index NUMBER;
4406 lv_action_category VARCHAR2(50) := 'AC DEDUCTIONS';
4407 ln_ytd_defined_balance_id NUMBER;
4408 ln_ytd_amount NUMBER(15,2) := 0;
4409 ln_ytd_hours_balance_id NUMBER;
4410 ln_ytd_hours NUMBER(15,2);
4411 ln_current_hours NUMBER(15,2) := 0;
4412 ln_payments_amount NUMBER(15,2) := 0;
4413 ln_index NUMBER;
4414 ln_check_count number;
4415 ln_check_count2 number;
4416 ln_step NUMBER;
4417 lv_error_message VARCHAR2(200);
4418
4419 BEGIN
4420 hr_utility.set_location(gv_package || lv_procedure_name, 10);
4421
4422 ln_step := 10;
4423 pay_balance_pkg.set_context('TAX_UNIT_ID',p_tax_unit_id); -- Bug 3639249
4424 OPEN c_prev_ytd_action_elements(p_assignment_id
4425 ,p_curr_eff_date
4426 ,trunc(p_curr_eff_date, 'Y')
4427 ,'R', 'Q', 'B');
4428 LOOP
4429 FETCH c_prev_ytd_action_elements into lv_element_classification_name,
4430 ln_processing_priority,
4431 lv_reporting_name,
4432 ln_element_type_id,
4433 lv_jurisdiction_code,
4434 ln_primary_balance_id,
4435 ln_hours_balance_id;
4436 IF c_prev_ytd_action_elements%NOTFOUND then
4437 hr_utility.set_location(gv_package || lv_procedure_name, 15);
4438 exit;
4439 END IF;
4440
4441 ln_step := 20;
4442 hr_utility.set_location(gv_package || lv_procedure_name, 20);
4443 hr_utility.trace('================= Fetched Element ==================');
4444 hr_utility.trace('ele classification = '||lv_element_classification_name);
4445 hr_utility.trace('ele type id = ' || ln_element_type_id);
4446 hr_utility.trace('reporting name = ' || lv_reporting_name);
4447 hr_utility.trace('primary balance id = ' || ln_primary_balance_id);
4448 hr_utility.trace('hours balance id = ' || ln_hours_balance_id);
4449
4450 if lv_jurisdiction_code <> '00-000-0000' then
4451 pay_balance_pkg.set_context('JURISDICTION_CODE', lv_jurisdiction_code);
4452 gv_ytd_balance_dimension := gv_dim_asg_jd_gre_ytd;
4453 else
4454 pay_balance_pkg.set_context('JURISDICTION_CODE', lv_jurisdiction_code);
4455 if gv_reporting_level = 'TAXGRP' then
4456 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
4457 else
4458 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
4459 end if;
4460 end if;
4461
4462 if lv_element_classification_name like '% Deductions' then
4463 ln_hours_balance_id := null;
4464 end if;
4465
4466 if ln_hours_balance_id is not null then
4467 ln_step := 30;
4468 hr_utility.set_location(gv_package || lv_procedure_name, 22);
4469 ln_ytd_hours_balance_id
4470 := pay_emp_action_arch.get_defined_balance_id(
4471 ln_hours_balance_id,
4472 gv_ytd_balance_dimension,
4473 p_legislation_code);
4474 hr_utility.trace('ln_ytd_hours_balance_id = '||
4475 ln_ytd_hours_balance_id);
4476 hr_utility.set_location(gv_package || lv_procedure_name, 24);
4477
4478 ln_step := 40;
4479 if ln_ytd_hours_balance_id is not null then
4480 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
4481 ln_ytd_hours_balance_id,
4482 p_assignment_action_id),0);
4483 hr_utility.trace('ln_ytd_hours = '||ln_ytd_hours);
4484 hr_utility.set_location(gv_package || lv_procedure_name, 26);
4485 end if;
4486 end if; --Hours
4487
4488 ln_step := 50;
4489 ln_ytd_defined_balance_id
4490 := pay_emp_action_arch.get_defined_balance_id
4491 (ln_primary_balance_id,
4492 gv_ytd_balance_dimension,
4493 p_legislation_code);
4494 hr_utility.trace('ln_ytd_defined_balance_id = '||
4495 ln_ytd_defined_balance_id);
4496 hr_utility.set_location(gv_package || lv_procedure_name, 30);
4497 if ln_ytd_defined_balance_id is not null then
4498 ln_step := 60;
4499 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
4500 ln_ytd_defined_balance_id,
4501 p_assignment_action_id),0);
4502 hr_utility.trace('ln_ytd_amount = '||ln_ytd_amount);
4503 end if;
4504 hr_utility.set_location(gv_package || lv_procedure_name, 40);
4505
4506
4507 if nvl(ln_ytd_amount, 0) <> 0 then
4508 ln_step := 70;
4509 ln_element_index := pay_ac_action_arch.emp_elements_tab.count;
4510
4511 hr_utility.trace('ln_element_index = '||ln_element_index);
4512
4513 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_type_id
4514 := ln_element_type_id;
4515 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_classfn
4516 := lv_element_classification_name;
4517 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_reporting_name
4518 := lv_reporting_name;
4519 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_primary_balance_id
4520 := ln_primary_balance_id;
4521 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_processing_priority
4522 := ln_processing_priority;
4523 pay_ac_action_arch.emp_elements_tab(ln_element_index).element_hours_balance_id
4524 := ln_hours_balance_id;
4525 pay_ac_action_arch.emp_elements_tab(ln_element_index).jurisdiction_code
4526 := lv_jurisdiction_code;
4527
4528
4529 ln_index := pay_ac_action_arch.lrr_act_tab.count;
4530 hr_utility.trace('ln_index = '||ln_index);
4531 if lv_element_classification_name in ('Earnings',
4532 'Supplemental Earnings',
4533 'Taxable Benefits',
4534 'Imputed Earnings',
4535 'Non-payroll Payments',
4536 'Alien/Expat Earnings') then
4537 hr_utility.set_location(gv_package || lv_procedure_name, 50);
4538 lv_action_category := 'AC EARNINGS';
4539 hr_utility.trace('ln_current_hours = '||ln_current_hours);
4540 hr_utility.trace('ln_ytd_hours = '||ln_ytd_hours);
4541 ln_step := 80;
4542 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
4543 := fnd_number.number_to_canonical(ln_current_hours); /*Bug 3311866*/
4544 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
4545 := fnd_number.number_to_canonical(ln_ytd_hours);
4546 else
4547 lv_action_category := 'AC DEDUCTIONS';
4548 end if;
4549 hr_utility.set_location(gv_package || lv_procedure_name, 60);
4550 hr_utility.trace('lv_action_category = '||lv_action_category);
4551 hr_utility.trace('ln_ytd_amount = '||ln_ytd_amount);
4552 hr_utility.trace('lv_reporting_name = '||lv_reporting_name);
4553 hr_utility.trace('p_xfr_action_id = '||p_xfr_action_id);
4554 ln_step := 90;
4555
4556 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
4557 := lv_action_category;
4558 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
4559 := nvl(lv_jurisdiction_code, '00-000-0000');
4560 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
4561 := p_xfr_action_id;
4562 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
4563 := lv_element_classification_name;
4564 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
4565 := ln_element_type_id;
4566 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
4567 := ln_primary_balance_id;
4568 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
4569 := ln_processing_priority;
4570 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
4571 := fnd_number.number_to_canonical(ln_payments_amount); /*Bug 3311866*/
4572 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
4573 := fnd_number.number_to_canonical(ln_ytd_amount);
4574 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
4575 := lv_reporting_name;
4576
4577 end if;
4578 hr_utility.set_location(gv_package || lv_procedure_name, 100);
4579
4580 END LOOP;
4581 CLOSE c_prev_ytd_action_elements;
4582
4583 ln_step := 110;
4584 hr_utility.trace('------------Looping to see pl/sql table --------');
4585 ln_check_count := pay_ac_action_arch.emp_elements_tab.count;
4586 ln_check_count2 := pay_ac_action_arch.lrr_act_tab.count;
4587
4588 hr_utility.trace('ln_check_count = '||ln_check_count);
4589 hr_utility.trace('ln_check_count2 = '||ln_check_count2);
4590 hr_utility.trace('============= End of Processing '||p_assignment_id||
4591 '=============');
4592 hr_utility.set_location(gv_package || lv_procedure_name,150);
4593
4594 EXCEPTION
4595 when others then
4596
4597 lv_error_message := 'Error at step ' || ln_step ||
4598 ' in ' || gv_package || lv_procedure_name;
4599
4600 hr_utility.trace(lv_error_message || '-' || sqlerrm);
4601
4602 lv_error_message :=
4603 pay_emp_action_arch.set_error_message(lv_error_message);
4604
4605 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
4606 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
4607 hr_utility.raise_error;
4608
4609 END process_additional_elements;
4610
4611 /******************************************************************
4612 Name : process_balance_adjustment_elements
4613 Purpose : Retrieve the elements processed in the given assignment
4614 and insert YTD balance to pl/sql table.
4615 Arguments : p_assignment_id => Assignment Id
4616 Notes : This process is used to retrieve elements processed
4617 in balance adjustment but have never been processed in
4618 payroll run.
4619 ******************************************************************/
4620 PROCEDURE process_baladj_elements(
4621 p_assignment_id in number
4622 ,p_xfr_action_id in number
4623 ,p_last_xfr_action_id in number
4624 ,p_curr_pymt_action_id in number
4625 ,p_curr_pymt_eff_date in date
4626 ,p_ytd_balcall_aaid in number
4627 ,p_sepchk_flag in varchar2
4628 ,p_sepchk_run_type_id in number
4629 ,p_payroll_id in number
4630 ,p_consolidation_set_id in number
4631 ,p_legislation_code in varchar2
4632 ,p_tax_unit_id in number)
4633 IS
4634 cursor c_check_baladj(cp_assignment_id in number
4635 ,cp_xfr_action_id in number
4636 ,cp_tax_unit_id in number
4637 ,cp_payroll_id in number
4638 ,cp_consolidation_set_id in number
4639 ,cp_curr_eff_date in date) is
4640 select /*+ ORDERED */
4641 min(ppa.effective_date)
4642 from pay_assignment_actions paa
4643 , pay_payroll_actions ppa
4644 where ppa.action_type = 'B'
4645 and paa.payroll_action_id = ppa.payroll_action_id
4646 and paa.action_status = 'C'
4647 and paa.assignment_action_id > cp_xfr_action_id
4648 and paa.assignment_id = cp_assignment_id
4649 and paa.tax_unit_id = cp_tax_unit_id
4650 and ppa.effective_date >= trunc(cp_curr_eff_date, 'Y')
4651 and ppa.effective_date <= cp_curr_eff_date
4652 and ppa.payroll_id = cp_payroll_id
4653 and ppa.consolidation_set_id = cp_consolidation_set_id;
4654
4655 ld_baladj_date DATE;
4656 ln_step NUMBER;
4657 lv_error_message VARCHAR2(200);
4658 lv_procedure_name VARCHAR2(50);
4659
4660 BEGIN
4661 ln_step := 1;
4662 lv_procedure_name := '.process_baladj_elements';
4663 hr_utility.set_location(gv_package || lv_procedure_name, 10);
4664
4665 open c_check_baladj(p_assignment_id
4666 ,p_last_xfr_action_id
4667 ,p_tax_unit_id
4668 ,p_payroll_id
4669 ,p_consolidation_set_id
4670 ,p_curr_pymt_eff_date);
4671 fetch c_check_baladj into ld_baladj_date;
4672 hr_utility.set_location(gv_package || lv_procedure_name, 20);
4673 ln_step := 10;
4674 if c_check_baladj%found then
4675 -- There is atleast one balance adjustment done since the last archive
4676 -- run, so, need to find out the element and process it
4677 hr_utility.set_location(gv_package || lv_procedure_name, 30);
4678 get_prev_ytd_elements(p_assignment_id => p_assignment_id
4679 ,p_xfr_action_id => p_xfr_action_id
4680 ,p_curr_pymt_action_id => p_curr_pymt_action_id
4681 ,p_curr_pymt_eff_date => p_curr_pymt_eff_date
4682 ,p_start_eff_date => ld_baladj_date
4683 ,p_tax_unit_id => p_tax_unit_id
4684 ,p_ytd_balcall_aaid => p_ytd_balcall_aaid
4685 ,p_sepchk_flag => p_sepchk_flag
4686 ,p_sepchk_run_type_id => p_sepchk_run_type_id
4687 ,p_legislation_code => p_legislation_code
4688 ,p_action_type1 => 'B'
4689 ,p_action_type2 => ''
4690 ,p_action_type3 => '');
4691 end if;
4692 close c_check_baladj;
4693 hr_utility.set_location(gv_package || lv_procedure_name, 50);
4694 ln_step := 20;
4695
4696 EXCEPTION
4697 when others then
4698
4699 lv_error_message := 'Error at step ' || ln_step ||
4700 ' in ' || gv_package || lv_procedure_name;
4701
4702 hr_utility.trace(lv_error_message || '-' || sqlerrm);
4703
4704 lv_error_message :=
4705 pay_emp_action_arch.set_error_message(lv_error_message);
4706
4707 hr_utility.set_message(801,'HR_ELE_ENTRY_FORMULA_HINT');
4708 hr_utility.set_message_token('FORMULA_TEXT', lv_error_message);
4709 hr_utility.raise_error;
4710
4711 END process_baladj_elements;
4712
4713 Procedure Archive_retro_element (
4714 p_xfr_action_id in number
4715 ,p_assignment_id in number
4716 ,p_pymt_assignment_action_id in number
4717 ,p_pymt_eff_date in date
4718 ,p_element_type_id in number
4719 ,p_primary_balance_id in number
4720 ,p_hours_balance_id in number
4721 ,p_processing_priority in number
4722 ,p_element_classification_name in varchar2
4723 ,p_reporting_name in varchar2
4724 ,p_tax_unit_id in number
4725 ,p_ytd_balcall_aaid in number
4726 ,p_pymt_balcall_aaid in number
4727 ,p_legislation_code in varchar2
4728 ,p_sepchk_flag in varchar2
4729 ,p_sepchk_run_type_id in number
4730 ,p_action_type in varchar2
4731 ,p_run_assignment_action_id in number
4732 ,p_multiple in number
4733 ,p_rate in number
4734 ,p_retro_base IN VARCHAR2 DEFAULT 'N'
4735 )
4736 IS
4737 /*
4738 TYPE retro_rec_typ IS RECORD(original_dt_earned DATE
4739 ,original_st_dt DATE
4740 ,original_end_dt DATE
4741 ,category VARCHAR2(100)
4742 ,jurisdiction VARCHAR2(20)
4743 ,hours NUMBER
4744 ,ytd_hrs NUMBER
4745 ,amount NUMBER
4746 ,ytd_amt NUMBER
4747 );
4748 TYPE retro_tab_typ IS TABLE OF retro_rec_typ INDEX BY BINARY_INTEGER;
4749 */
4750 CURSOR archive_retro_elements ( cp_element_entry_id in number ,
4751 cp_run_assignment_action_id in number ) IS
4752
4753 select fnd_date.date_to_canonical(pay_paywsmee_pkg.get_original_date_earned(cp_element_entry_id)) ,
4754 fnd_date.date_to_canonical(ptp.start_date),
4755 fnd_date.date_to_canonical(ptp.end_date),
4756 hr_general.decode_lookup
4757 (DECODE (UPPER (ec.classification_name),
4758 'EARNINGS', 'US_EARNINGS',
4759 'SUPPLEMENTAL EARNINGS', 'US_SUPPLEMENTAL_EARNINGS',
4760 'IMPUTED EARNINGS', 'US_IMPUTED_EARNINGS',
4761 'NON-PAYROLL PAYMENTS', 'US_PAYMENT',
4762 'ALIEN/EXPAT EARNINGS', 'PER_US_INCOME_TYPES',
4763 NULL
4764 ),
4765 et.element_information1
4766 ) CATEGORY
4767 from pay_element_entries_f peef,
4768 per_time_periods ptp,
4769 pay_payroll_actions ppa,
4770 pay_assignment_actions paa,
4771 pay_element_types_f et,
4772 pay_element_classifications ec
4773 where peef.element_entry_id = cp_element_entry_id
4774 AND peef.creator_type IN ('EE', 'NR', 'PR', 'R', 'RR')
4775 AND et.element_type_id = peef.element_type_id
4776 AND et.classification_id = ec.classification_id
4777 AND paa.assignment_action_id = cp_run_assignment_action_id
4778 AND ppa.payroll_action_id = paa.payroll_action_id
4779 AND ptp.payroll_id = ppa.payroll_id
4780 AND pay_paywsmee_pkg.get_original_date_earned(cp_element_entry_id)
4781 BETWEEN ptp.start_date
4782 AND ptp.end_date
4783 /*Bug# 16318258 - Start */
4784 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND
4785 peef.effective_end_date
4786 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN et.effective_start_date AND
4787 et.effective_end_date;
4788 /*Bug# 16318258 - End */
4789
4790 CURSOR get_element_entry_id(cp_run_action_id in number ,
4791 cp_assignment_id in number ,
4792 cp_element_type_id in number ) IS
4793 SELECT peef.element_entry_id,
4794 peef.creator_type,
4795 peef.source_start_date
4796 FROM pay_element_entries_f peef,
4797 pay_assignment_actions paa,
4798 pay_payroll_actions ppa,
4799 per_time_periods ptp
4800 WHERE paa.assignment_action_id = cp_run_action_id
4801 AND ppa.payroll_action_id = paa.payroll_action_id
4802 AND ptp.payroll_id = ppa.payroll_id
4803 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
4804 AND peef.assignment_id = cp_assignment_id
4805 AND peef.creator_id is NOT NULL
4806 /* Following Added for Bug# 7580440 */
4807 AND peef.creator_type IN ('EE', 'NR', 'PR', 'R', 'RR')
4808 AND peef.element_type_id = cp_element_type_id
4809
4810 /* Commenting as Ele Entry Eff Start / End Date may not match the following
4811 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
4812 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
4813 End of Comment */
4814
4815 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date
4816 /*Start -- 14319807*/
4817 AND EXISTS
4818 (SELECT 1 FROM pay_run_results prr
4819 WHERE
4820 prr.assignment_action_id = paa.assignment_action_id
4821 AND prr.element_entry_id = peef.element_entry_id
4822 )
4823 /*End -- 14319807*/
4824 ORDER BY 3;
4825
4826 -- Changed for performance issue Bug# 7661112
4827 --
4828 CURSOR get_run_results (cp_run_assignment_action_id IN NUMBER
4829 ,cp_element_entry_id IN NUMBER
4830 ,cp_pymt_eff_date in date -- Bug# 16318258
4831 ) IS
4832 SELECT to_number(prrv.result_value), pivf.NAME
4833 FROM pay_run_results prr,
4834 pay_run_result_values prrv,
4835 pay_input_values_f pivf
4836 WHERE prr.assignment_action_id = cp_run_assignment_action_id
4837 AND prr.element_entry_id = cp_element_entry_id
4838 AND prrv.run_result_id = prr.run_result_id
4839 AND prrv.input_value_id = pivf.input_value_id
4840 AND pivf.NAME IN ('Pay Value', 'Hours', 'Rate')
4841 AND cp_pymt_eff_date between pivf.effective_start_date
4842 and pivf.effective_end_date -- Bug# 16318258
4843 ORDER BY 2 ;
4844
4845
4846 --Introducing this cursor to pull hours when not pushed by retro pay
4847 CURSOR get_run_results_hours (cp_element_entry_id IN NUMBER
4848 ,cp_pymt_eff_date in date -- Bug# 16318258
4849 ) is
4850 select PRRV.RESULT_VALUE as original_input_value
4851 from pay_run_results PRR,
4852 pay_run_result_values PRRV,
4853 pay_input_values_f PIVF,
4854 pay_entry_process_details PEPD
4855 WHERE PEPD.ELEMENT_ENTRY_ID = cp_element_entry_id
4856 AND PEPD.SOURCE_ENTRY_ID = PRR.SOURCE_ID
4857 AND PEPD.RUN_RESULT_ID = PRR.RUN_RESULT_ID
4858 AND PEPD.SOURCE_ELEMENT_TYPE_ID = PIVF.ELEMENT_TYPE_ID
4859 AND PIVF.NAME in ('Hours')
4860 AND PRR.RUN_RESULT_ID = PRRV.RUN_RESULT_ID
4861 AND PRRV.INPUT_VALUE_ID = PIVF.INPUT_VALUE_ID
4862 AND cp_pymt_eff_date between pivf.effective_start_date
4863 and pivf.effective_end_date; -- Bug# 16318258
4864
4865 -- Introducing This Cussor in case Hours and Pay Values Both zero
4866 --
4867 -- Changed for performance issue Bug# 7661112
4868 -- Commented the below cursor 12548215 rate is being picked in the above cursor
4869 /**/
4870 CURSOR get_run_results_rate(cp_run_assignment_action_id IN NUMBER
4871 ,cp_element_entry_id IN NUMBER
4872 ,cp_pymt_eff_date in date -- Bug# 16318258
4873 ) IS
4874 SELECT to_number(prrv.result_value)
4875 FROM pay_run_results prr,
4876 pay_run_result_values prrv,
4877 pay_input_values_f pivf
4878 WHERE prr.assignment_action_id = cp_run_assignment_action_id
4879 AND prr.element_entry_id = cp_element_entry_id
4880 AND prrv.run_result_id = prr.run_result_id
4881 AND prrv.input_value_id = pivf.input_value_id
4882 AND pivf.NAME IN ('Rate')
4883 AND cp_pymt_eff_date between pivf.effective_start_date
4884 and pivf.effective_end_date; -- Bug# 16318258
4885 /**/
4886
4887 -- Added For Work At Home Condition
4888
4889 CURSOR c_cur_get_wrkathome(cp_assignment_id IN NUMBER
4890 ,cp_pymt_eff_date in date -- Bug# 16318258
4891 ) IS
4892 SELECT NVL(paf.work_at_home, 'N')
4893 ,ppf.person_id
4894 ,ppf.business_group_id
4895 FROM per_assignments_f paf
4896 ,per_all_people_f ppf
4897 WHERE paf.assignment_id = cp_assignment_id
4898 AND paf.person_id = ppf.person_id
4899 and cp_pymt_eff_date between paf.effective_start_date and paf.effective_end_date
4900 and cp_pymt_eff_date between ppf.effective_start_date and ppf.effective_end_date; -- Bug# 16318258
4901
4902
4903 CURSOR c_cur_home_state_jd(cp_person_id IN NUMBER
4904 ,cp_bg_id IN NUMBER) IS
4905 SELECT pus.state_code || '-000-0000'
4906 FROM per_addresses pa
4907 ,pay_us_states pus
4908 WHERE pa.person_id = cp_person_id
4909 AND pa.primary_flag = 'Y'
4910 AND p_pymt_eff_date between pa.date_from AND NVL(pa.date_to, hr_general.END_OF_TIME)
4911 AND pa.business_group_id = cp_bg_id
4912 AND pa.region_2 = pus.state_abbrev
4913 AND pa.style = p_legislation_code;
4914
4915 --retro_tab retro_tab_typ;
4916 --retro_refined_tab retro_tab_typ;
4917 --cnt NUMBER;
4918 --k NUMBER;
4919 --k_match_cnt NUMBER;
4920 lv_original_date_earned varchar2(100);
4921 lv_effective_start_date varchar2(100);
4922 lv_effective_end_date varchar2(100);
4923 lv_category varchar2(100);
4924 lv_el_jurisdiction_code varchar2(100);
4925 ln_final_rate number;
4926 ln_element_entry_id number;
4927 lv_creator_type varchar2(100);
4928 lv_jurisdiction_flag varchar2(20);
4929 ln_element_index number;
4930 ln_multiple number;
4931 ln_rate number(10,2);
4932 ln_current_hours NUMBER(15,5);
4933 ln_payments_amount NUMBER(15,5);
4934 ln_ytd_hours NUMBER(15,5) := 0;
4935 ln_ytd_amount NUMBER(17,5) := 0;
4936
4937 ln_pymt_defined_balance_id NUMBER;
4938 ln_pymt_hours_balance_id NUMBER;
4939 ln_ytd_defined_balance_id NUMBER;
4940 ln_ytd_hours_balance_id NUMBER;
4941
4942 lv_rate_exists VARCHAR2(1) := 'N';
4943 ln_nonpayroll_balcall_aaid NUMBER;
4944
4945 ln_index NUMBER ;
4946 lv_procedure_name VARCHAR2(100):= '.Archive_retro_element';
4947 lv_error_message VARCHAR2(200);
4948
4949 ln_step NUMBER;
4950 ln_final_ytd_value NUMBER(15,5);
4951 ld_source_start_date DATE;
4952 lv_action_category varchar2(100);
4953 lv_pay_value_name varchar2(100);
4954 ln_pay_value number (15,5);
4955 ln_hours number(15,5) ;
4956 ln_amount number(15,5);
4957 -- Added For Work At Home Condition
4958 lv_wrk_at_home per_assignments_f.work_at_home%TYPE;
4959 ln_person_id per_people_f.person_id%TYPE;
4960 ln_bg_id per_people_f.business_group_id%TYPE;
4961
4962
4963 ln_rate_disp NUMBER; -- 12548215
4964 ln_hours_derv_flag boolean; -- 12548215
4965
4966 BEGIN
4967
4968 hr_utility.trace('Entering in package Archive_retro_element');
4969 hr_utility.trace('Run_assignment_action_id = ' || p_run_assignment_action_id) ;
4970 OPEN get_element_entry_id ( p_run_assignment_action_id,
4971 p_assignment_id,
4972 p_element_type_id);
4973 ln_step := 50;
4974
4975 /*
4976 --Bug# 13785386
4977 -- 12548215 included variable initializations into loop
4978 LOOP -- For Each Ele Entry created by Retro
4979 */
4980 ln_ytd_hours := 0;
4981 ln_ytd_amount := 0;
4982
4983 -- cnt := 0;
4984 LOOP -- For Each Ele Entry created by Retro
4985 ln_hours_derv_flag := false; -- Bug# 13877047
4986
4987 FETCH get_element_entry_id INTO ln_element_entry_id,
4988 lv_creator_type,
4989 ld_source_start_date;
4990
4991 /*Bug#-14658920 -On instances(basically 1221) where SPARSE_MATRIX approach to Avoid the creation of Null Run Results and Null Run Result Values while Running
4992 Payroll is enabled - run results with null are not getting created.Existing code as it assumes the null values in run results as zero
4993 resets the counter for hours and Amounts once it sees a null value in there.
4994 Because of this supressing behavior counter is not reset and we see unpredictable results.
4995 this is handle in code with out regard to SPAR_MATRIX enabled/not.*/
4996
4997 ln_hours := 0;
4998 ln_amount := 0;
4999 /*Bug# 14658920 End */
5000
5001 IF get_element_entry_id%NOTFOUND THEN
5002 close get_element_entry_id;
5003 EXIT;
5004 END IF;
5005 hr_utility.trace('Step 50 : ln_element_entry_id := '||ln_element_entry_id);
5006 hr_utility.trace('Step 50 : lv_creator_type := '||lv_creator_type);
5007 hr_utility.trace('Step 50 : ld_source_start_date := '||ld_source_start_date);
5008
5009 OPEN get_run_results (p_run_assignment_action_id
5010 ,ln_element_entry_id,p_pymt_eff_date);
5011 LOOP
5012 ln_step := 49;
5013 FETCH get_run_results INTO ln_pay_value ,
5014 lv_pay_value_name;
5015 IF get_run_results%FOUND THEN
5016 IF lv_pay_value_name = 'Hours' THEN
5017 ln_ytd_hours := ln_ytd_hours + nvl(ln_pay_value,0) ;
5018 ln_hours := nvl(ln_pay_value,0);
5019 hr_utility.trace('ln_hours := '||ln_hours);
5020 hr_utility.trace('ln_ytd_hours is '|| ln_ytd_hours );
5021
5022 END IF ;
5023
5024 IF lv_pay_value_name = 'Pay Value' THEN
5025 ln_ytd_amount := ln_ytd_amount + nvl(ln_pay_value,0) ;
5026 ln_amount := nvl(ln_pay_value,0) ;
5027 hr_utility.trace('ln_amount := '||ln_amount);
5028 hr_utility.trace('ln_ytd_amount is '|| ln_ytd_amount );
5029 END IF;
5030
5031 IF lv_pay_value_name = 'Rate' THEN -- 12548215 added if
5032 ln_rate_disp := nvl(ln_pay_value,0) ;
5033 ln_rate := ln_rate_disp;
5034 hr_utility.trace('ln_rate_disp := '||ln_rate_disp);
5035 END IF;
5036
5037 ELSE
5038
5039 EXIT;
5040 END IF;
5041 END LOOP; -- Run Results
5042
5043 ln_step := 48;
5044
5045 IF get_run_results%ISOPEN THEN
5046 CLOSE get_run_results ;
5047 END IF;
5048
5049 /*
5050 IF ln_hours = 0 THEN
5051 IF ln_amount = 0 THEN
5052 OPEN get_run_results_rate(p_run_assignment_action_id
5053 ,ln_element_entry_id);
5054 FETCH get_run_results_rate INTO ln_rate;
5055 CLOSE get_run_results_rate;
5056 ELSE
5057 ln_rate := NULL;
5058 END IF;
5059 ELSE
5060 ln_rate := ln_amount/ln_hours;
5061 END IF;
5062 */
5063
5064 --12548215 added the below block to get hours, if zero - from the base element
5065 IF ln_hours = 0 THEN
5066 OPEN get_run_results_hours(ln_element_entry_id,p_pymt_eff_date);
5067 FETCH get_run_results_hours INTO ln_hours;
5068 IF get_run_results_hours%FOUND then
5069 ln_hours_derv_flag := true;
5070 END IF;
5071 CLOSE get_run_results_hours;
5072 END IF;
5073
5074 --12548215 added the below block to check and derive rate if required,
5075
5076 IF ln_amount = 0 THEN
5077 ln_rate:=NULL;
5078 ELSE
5079 if nvl(ln_hours,0)<>0 then
5080 ln_rate:=ln_amount/ln_hours;
5081 end if;
5082 END IF;
5083
5084 hr_utility.trace('Before Opening Cursor archive_retro_elements');
5085 OPEN archive_retro_elements ( ln_element_entry_id ,
5086 p_run_assignment_action_id );
5087 FETCH archive_retro_elements INTO lv_original_date_earned
5088 ,lv_effective_start_date
5089 ,lv_effective_end_date
5090 ,lv_category;
5091 CLOSE archive_retro_elements ;
5092 hr_utility.trace('After Closing Cursor archive_retro_elements');
5093 hr_utility.trace('lv_original_date_earned := '||lv_original_date_earned);
5094 hr_utility.trace('lv_effective_start_date := '||lv_effective_start_date);
5095 hr_utility.trace('lv_effective_end_date := '||lv_effective_end_date);
5096 hr_utility.trace('lv_category := '||lv_category);
5097 -- Added For Work At Home Condition
5098 OPEN c_cur_get_wrkathome(p_assignment_id,p_pymt_eff_date);
5099 FETCH c_cur_get_wrkathome INTO lv_wrk_at_home
5100 ,ln_person_id
5101 ,ln_bg_id;
5102 CLOSE c_cur_get_wrkathome;
5103
5104 IF lv_wrk_at_home = 'Y' THEN
5105 OPEN c_cur_home_state_jd(ln_person_id
5106 ,ln_bg_id);
5107 FETCH c_cur_home_state_jd INTO lv_jurisdiction_flag;
5108 CLOSE c_cur_home_state_jd;
5109 ELSE
5110
5111 SELECT nvl((select peevf.screen_entry_value jurisdiction_code
5112 from pay_input_values_f pivf,
5113 pay_element_entry_values_f peevf
5114 where pivf.element_type_id = p_element_type_id
5115 AND pivf.NAME = 'Jurisdiction'
5116 AND peevf.element_entry_id = ln_element_entry_id
5117 AND pivf.input_value_id = peevf.input_value_id
5118 AND p_pymt_eff_date between pivf.effective_start_date AND pivf.effective_end_date), -- Bug# 16318258
5119 (SELECT distinct pus.state_code
5120 || '-'
5121 || puc.county_code
5122 || '-'
5123 || punc.city_code jurisdiction_code
5124 FROM per_all_assignments_f peaf,
5125 hr_locations_all hla,
5126 pay_us_states pus,
5127 pay_us_counties puc,
5128 pay_us_city_names punc,
5129 pay_assignment_actions paa,
5130 pay_payroll_actions ppa
5131 WHERE peaf.assignment_id = p_assignment_id
5132 AND paa.assignment_action_id = p_run_assignment_action_id
5133 AND peaf.location_id = hla.location_id
5134 AND hla.region_2 = pus.state_abbrev
5135 AND pus.state_code = puc.state_code
5136 AND hla.region_1 = puc.county_name
5137 AND hla.town_or_city = punc.city_name
5138 AND pus.state_code = punc.state_code
5139 AND puc.county_code = punc.county_code
5140 AND ppa.payroll_action_id = paa.payroll_action_id
5141 AND ppa.effective_date between peaf.effective_start_date and peaf.effective_end_date
5142 ))
5143 into lv_jurisdiction_flag
5144 from dual;
5145 END IF; -- Work At Home 'N'
5146
5147 -- populating temporary plsql table
5148 --
5149 hr_utility.trace('lv_jurisdiction_flag := '||lv_jurisdiction_flag);
5150 -- Comment Starts From Here
5151 -- Comment Till Here
5152
5153 lv_action_category := 'AC DEDUCTIONS';
5154
5155 ln_step := 15;
5156 ln_index := pay_ac_action_arch.lrr_act_tab.count;
5157 if p_element_classification_name in ('Earnings',
5158 'Supplemental Earnings',
5159 'Taxable Benefits',
5160 'Imputed Earnings',
5161 'Non-payroll Payments',
5162 'Alien/Expat Earnings') then
5163 lv_action_category := 'AC EARNINGS';
5164
5165 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
5166 := fnd_number.number_to_canonical(ln_hours);
5167 -- YTD Hours
5168 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22
5169 := round(ln_rate,2);
5170
5171 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
5172 := fnd_number.number_to_canonical(0);
5173 end if; -- Classification Earnings
5174
5175 hr_utility.set_location(gv_package || lv_procedure_name, 130);
5176 /* Insert this into the plsql table if Current or YTD
5177 amount is not Zero */
5178 ln_step :=21;
5179 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
5180 := lv_action_category;
5181 ln_step :=22;
5182 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
5183 := '00-000-0000' ;
5184 ln_step :=23;
5185 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
5186 := p_xfr_action_id;
5187 ln_step :=24;
5188 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
5189 := p_element_classification_name;
5190 ln_step :=25;
5191 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
5192 := p_element_type_id;
5193 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
5194 := p_primary_balance_id;
5195 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
5196 := p_processing_priority;
5197 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
5198 := fnd_number.number_to_canonical(nvl(ln_amount,0));
5199 hr_utility.trace('ln_amount := '||fnd_number.number_to_canonical(nvl(ln_amount,0)));
5200 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
5201 := p_reporting_name;
5202 IF lv_action_category = 'AC DEDUCTIONS' THEN
5203 pay_ac_action_arch.lrr_act_tab(ln_index).act_info24
5204 := p_reporting_name;
5205 END IF;
5206 pay_ac_action_arch.lrr_act_tab(ln_index).act_info17
5207 := lv_original_date_earned;
5208 hr_utility.trace('lv_original_date_earned :=' || lv_original_date_earned );
5209 pay_ac_action_arch.lrr_act_tab(ln_index).act_info18
5210 := lv_effective_start_date;
5211 hr_utility.trace('lv_effective_start_date := ' || lv_effective_start_date );
5212 pay_ac_action_arch.lrr_act_tab(ln_index).act_info19
5213 := lv_effective_end_date ;
5214 hr_utility.trace('lv_effective_end_date:= ' || lv_effective_end_date );
5215 pay_ac_action_arch.lrr_act_tab(ln_index).act_info20
5216 := lv_category;
5217 hr_utility.trace('lv_category ' || lv_category );
5218 pay_ac_action_arch.lrr_act_tab(ln_index).act_info21
5219 := lv_jurisdiction_flag;
5220 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
5221 := fnd_number.number_to_canonical(0);
5222
5223 hr_utility.set_location(gv_package || lv_procedure_name, 150);
5224
5225 ln_step := 20;
5226
5227
5228 end loop; --Bug# 13785386
5229 --
5230 -- If For this Element ONLY Retro Entries Exist
5231 -- OR It is Retro + Base Case
5232
5233 IF p_retro_base = 'N' THEN
5234
5235 /* Code added for doing balance call for YTD
5236 This is a Case where Element DOES NOT have Base Entry
5237 BUT ONLY Retro Entries */
5238
5239 if pay_emp_action_arch.gv_multi_leg_rule is null then
5240 pay_emp_action_arch.gv_multi_leg_rule
5241 := pay_emp_action_arch.get_multi_legislative_rule(
5242 p_legislation_code);
5243 end if;
5244
5245 pay_balance_pkg.set_context('JURISDICTION_CODE', NULL);
5246 if gv_reporting_level = 'TAXGRP' then
5247 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
5248 else
5249 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
5250 end if;
5251
5252
5253 ln_ytd_defined_balance_id
5254 := pay_emp_action_arch.get_defined_balance_id(
5255 p_primary_balance_id,
5256 gv_ytd_balance_dimension,
5257 p_legislation_code);
5258
5259 hr_utility.trace('ln_ytd_defined_balance_id = ' ||
5260 ln_ytd_defined_balance_id);
5261
5262 if ln_ytd_defined_balance_id is not null then
5263 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
5264 ln_ytd_defined_balance_id,
5265 p_ytd_balcall_aaid),0);
5266 end if;
5267 if p_hours_balance_id is not null then
5268 hr_utility.set_location(gv_package || lv_procedure_name, 20);
5269 ln_ytd_hours_balance_id
5270 := pay_emp_action_arch.get_defined_balance_id(
5271 p_hours_balance_id,
5272 gv_ytd_balance_dimension,
5273 p_legislation_code);
5274
5275 hr_utility.trace('ln_ytd_hours_balance_id = ' ||
5276 ln_ytd_hours_balance_id);
5277
5278 if ln_ytd_hours_balance_id is not null then
5279 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
5280 ln_ytd_hours_balance_id,
5281 p_ytd_balcall_aaid),0);
5282 hr_utility.set_location(gv_package || lv_procedure_name, 60);
5283 end if;
5284 end if;
5285
5286 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
5287 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
5288 hr_utility.trace('ln_ytd_amount' || ln_ytd_amount);
5289
5290 /*Bug# 13785386 - Start*/
5291 /* if ln_hours_derv_flag then --to pull YTD hours if hours is dervied.
5292 ln_ytd_hours := ln_ytd_hours + ln_hours; -- as YTD balance would be unaffected as the hours
5293 ln_hours_derv_flag := false; -- in this scenario is pulled through SQL and not run results.
5294 end if;
5295 */
5296 /*Bug# 13785386 - End*/
5297
5298 if pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
5299 = 'AC EARNINGS' then
5300
5301 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
5302 := fnd_number.number_to_canonical(ln_ytd_hours); -- Bug# 13877047
5303 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
5304 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
5305
5306 end if;
5307 -- End Addition
5308 ELSE
5309 -- Global Variable Setting Needed Here
5310 -- That Can be Subtracted during Base Population
5311 --
5312 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
5313 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
5314 hr_utility.trace('ln_ytd_amount' || ln_ytd_amount);
5315 gv_ytd_amount := ln_ytd_amount ;
5316 /*gv_ytd_amount := nvl(gv_ytd_amount,0)+ln_ytd_amount ; --Bug# 13785386 */
5317
5318 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
5319 := fnd_number.number_to_canonical(ln_ytd_hours); -- Bug# 13877047
5320 gv_ytd_hour := ln_ytd_hours ;
5321 /*gv_ytd_hour := nvl(gv_ytd_hour,0)+ln_ytd_hours ; --Bug# 13785386 */
5322
5323 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
5324
5325 END IF; -- p_retro_base 'Y'
5326 /*Bug# 13785386 - Start*/
5327 /*
5328 end loop; --12548215 included the above YTD calculations into the loop.
5329 */
5330 /*Bug# 13785386 - End*/
5331
5332 EXCEPTION
5333 when others then
5334 hr_utility.trace(' Error In archive_retro_elements procedure');
5335 hr_utility.trace('error occured at step ' || ln_step );
5336
5337 END Archive_retro_element;
5338 Procedure Archive_addnl_elements (p_application_column_name in varchar2
5339 ,p_xfr_action_id in number
5340 ,p_assignment_id in number
5341 ,p_pymt_assignment_action_id in number
5342 ,p_pymt_eff_date in date
5343 ,p_element_type_id in number
5344 ,p_primary_balance_id in number
5345 ,p_hours_balance_id in number
5346 ,p_processing_priority in number
5347 ,p_element_classification_name in varchar2
5348 ,p_reporting_name in varchar2
5349 ,p_tax_unit_id in number
5350 ,p_ytd_balcall_aaid in number
5351 ,p_pymt_balcall_aaid in number
5352 ,p_legislation_code in varchar2
5353 ,p_sepchk_flag in varchar2
5354 ,p_sepchk_run_type_id in number
5355 ,p_action_type in varchar2
5356 ,p_run_assignment_action_id in number
5357 ,p_multiple in number
5358 ,p_rate in number
5359 )
5360 IS
5361 CURSOR archive_non_retro_elements ( cp_original_date_paid in varchar2,
5362 cp_element_entry_id in number,
5363 cp_run_assignment_action_id in number ) IS
5364
5365 select fnd_date.date_to_canonical(ptp.start_date),
5366 fnd_date.date_to_canonical(ptp.end_date),
5367 hr_general.decode_lookup
5368 (DECODE (UPPER (ec.classification_name),
5369 'EARNINGS', 'US_EARNINGS',
5370 'SUPPLEMENTAL EARNINGS', 'US_SUPPLEMENTAL_EARNINGS',
5371 'IMPUTED EARNINGS', 'US_IMPUTED_EARNINGS',
5372 'NON-PAYROLL PAYMENTS', 'US_PAYMENT',
5373 'ALIEN/EXPAT EARNINGS', 'PER_US_INCOME_TYPES',
5374 NULL
5375 ),
5376 et.element_information1
5377 ) CATEGORY
5378 from pay_assignment_actions paa,
5379 pay_payroll_actions ppa,
5380 per_time_periods ptp,
5381 pay_element_entries_f peef,
5382 pay_element_classifications ec,
5383 pay_element_types et
5384 where paa.assignment_action_id = cp_run_assignment_action_id
5385 and paa.payroll_action_id = ppa.payroll_action_id
5386 and ptp.payroll_id = ppa.payroll_id
5387 and nvl(cp_original_date_paid,ptp.start_date) between ptp.start_date AND ptp.end_date
5388 and peef.element_entry_id = cp_element_entry_id
5389 and et.element_type_id = peef.element_type_id
5390 and et.classification_id = ec.classification_id
5391 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ; -- Bug# 16318258
5392
5393 Cursor get_element_entry_id( cp_run_action_id in number ,
5394 cp_assignment_id in number ,
5395 cp_element_type_id in number ) IS
5396 select peef.element_entry_id,
5397 peef.creator_type,
5398 peef.source_start_date
5399 FROM pay_element_entries_f peef,
5400 pay_assignment_actions paa,
5401 pay_payroll_actions ppa,
5402 per_time_periods ptp
5403 WHERE paa.assignment_action_id = cp_run_action_id
5404 AND ppa.payroll_action_id = paa.payroll_action_id
5405 AND ptp.payroll_id = ppa.payroll_id
5406 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
5407 AND peef.assignment_id = cp_assignment_id
5408 AND peef.element_type_id = cp_element_type_id
5409
5410 /* Commenting as Ele Entry Eff Start / End Date may not match the following
5411 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
5412 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
5413 End of Comment */
5414
5415 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date
5416
5417 --ORDER BY 3;
5418 ORDER BY nvl(peef.attribute_category,'Z'), peef.element_entry_id ;
5419
5420 --bug 7373188
5421 --CURSOR get_run_results ( cp_element_entry_id in number ) IS
5422 CURSOR get_run_results ( cp_run_action_id in number ,cp_element_entry_id in number
5423 ,cp_pymt_eff_date in date -- Bug# 16318258
5424 ) IS
5425 --bug 7373188
5426 SELECT to_number(prrv.result_value), pivf.NAME
5427 FROM pay_run_results prr,
5428 pay_run_result_values prrv,
5429 pay_input_values_f pivf
5430 WHERE prr.element_entry_id = cp_element_entry_id
5431 --bug 7373188
5432 and prr.assignment_action_id = cp_run_action_id
5433 --bug 7373188
5434 AND prrv.run_result_id = prr.run_result_id
5435 AND prrv.input_value_id = pivf.input_value_id
5436 AND pivf.NAME IN ('Pay Value', 'Hours')
5437 AND cp_pymt_eff_date between pivf.effective_start_date and pivf.effective_end_date -- Bug# 16318258
5438 ORDER BY 2 ;
5439 -- Introducing This Cussor in case Hours and Pay Values Both zero
5440 --
5441 --bug 7373188
5442 --CURSOR get_run_results_rate( cp_element_entry_id in number ) IS
5443 CURSOR get_run_results_rate( cp_run_action_id in number , cp_element_entry_id in number
5444 ,cp_pymt_eff_date in date -- Bug# 16318258
5445 ) IS
5446 --bug 7373188
5447 SELECT to_number(prrv.result_value)
5448 FROM pay_run_results prr,
5449 pay_run_result_values prrv,
5450 pay_input_values_f pivf
5451 WHERE prr.element_entry_id = cp_element_entry_id
5452 --bug 7373188
5453 and prr.assignment_action_id = cp_run_action_id
5454 --bug 7373188
5455 AND prrv.run_result_id = prr.run_result_id
5456 AND prrv.input_value_id = pivf.input_value_id
5457 AND pivf.NAME IN ('Rate')
5458 AND cp_pymt_eff_date between pivf.effective_start_date and pivf.effective_end_date; -- Bug# 16318258
5459
5460 -- Added For Work At Home Condition
5461
5462 CURSOR c_cur_get_wrkathome(cp_assignment_id IN NUMBER
5463 ,cp_pymt_eff_date in date -- Bug# 16318258
5464 ) IS
5465 SELECT NVL(paf.work_at_home, 'N')
5466 ,ppf.person_id
5467 ,ppf.business_group_id
5468 FROM per_assignments_f paf
5469 ,per_all_people_f ppf
5470 WHERE paf.assignment_id = cp_assignment_id
5471 AND paf.person_id = ppf.person_id
5472 and cp_pymt_eff_date between paf.effective_start_date and paf.effective_end_date
5473 and cp_pymt_eff_date between ppf.effective_start_date and ppf.effective_end_date; -- Bug# 16318258
5474
5475 CURSOR c_cur_home_state_jd(cp_person_id IN NUMBER
5476 ,cp_bg_id IN NUMBER) IS
5477 SELECT pus.state_code || '-000-0000'
5478 FROM per_addresses pa
5479 ,pay_us_states pus
5480 WHERE pa.person_id = cp_person_id
5481 AND pa.primary_flag = 'Y'
5482 AND p_pymt_eff_date between pa.date_from AND NVL(pa.date_to, hr_general.END_OF_TIME)
5483 AND pa.business_group_id = cp_bg_id
5484 AND pa.region_2 = pus.state_abbrev
5485 AND pa.style = p_legislation_code;
5486
5487 lv_original_date_earned varchar2(100);
5488 lv_effective_start_date varchar2(100);
5489 lv_effective_end_date varchar2(100);
5490 lv_category varchar2(100);
5491 lv_el_jurisdiction_code varchar2(100);
5492 ln_final_rate number;
5493 ln_element_entry_id number;
5494 lv_creator_type varchar2(100);
5495 lv_jurisdiction_flag varchar2(20);
5496 ln_element_index number;
5497 ln_multiple number;
5498 ln_rate number(10,2);
5499 ln_current_hours NUMBER(15,5);
5500 ln_payments_amount NUMBER(15,5);
5501 ln_ytd_hours NUMBER(15,5) := 0;
5502 ln_ytd_amount NUMBER(17,5) := 0;
5503
5504 ln_pymt_defined_balance_id NUMBER;
5505 ln_pymt_hours_balance_id NUMBER;
5506 ln_ytd_defined_balance_id NUMBER;
5507 ln_ytd_hours_balance_id NUMBER;
5508
5509 lv_rate_exists VARCHAR2(1) := 'N';
5510 ln_nonpayroll_balcall_aaid NUMBER;
5511
5512 ln_index NUMBER ;
5513 lv_procedure_name VARCHAR2(100):= '.Archive_addnl_elements';
5514 lv_error_message VARCHAR2(200);
5515
5516 ln_step NUMBER;
5517 ln_final_ytd_value NUMBER(15,5);
5518 ld_source_start_date DATE;
5519 lv_action_category varchar2(100);
5520 lv_pay_value_name varchar2(100);
5521 ln_pay_value number (15,5);
5522 ln_hours number(15,5) ;
5523 ln_amount number(15,5);
5524 ld_original_date_paid date;
5525 count_j number := null;
5526 result number := 0;
5527 lv_sqlstr varchar2(500);
5528 lv_check_date varchar2(100);
5529 ld_check_date date;
5530 lv_sqlstr1 varchar2(2500);
5531 lv_temp_AAA varchar2(100) :='BBB';
5532 lv_sqlstr2 varchar2(2500);
5533 lv_sqlstr3 varchar2(2500);
5534 lv_sqlstr4 varchar2(2500);
5535 lv_sqlstr_final varchar2(2500);
5536
5537 -- Added For Work At Home Condition
5538 lv_wrk_at_home per_assignments_f.work_at_home%TYPE;
5539 ln_person_id per_people_f.person_id%TYPE;
5540 ln_bg_id per_people_f.business_group_id%TYPE;
5541
5542 BEGIN
5543
5544 hr_utility.trace('Entering in package Archive_addnl_elements');
5545 hr_utility.trace('Run_assignment_action_id = ' || p_run_assignment_action_id) ;
5546 hr_utility.trace('Element Type Id in Non retro Archiver ' || p_element_type_id);
5547 OPEN get_element_entry_id ( p_run_assignment_action_id,
5548 p_assignment_id,
5549 p_element_type_id);
5550 ln_step := 50;
5551
5552 ln_ytd_hours := 0;
5553 ln_amount := 0;
5554
5555 lv_sqlstr1 := 'select max(nvl(peef.' || p_application_column_name ||', ptp.start_date)) FROM pay_element_entries_f peef, pay_assignment_actions paa, pay_payroll_actions ppa,per_time_periods ptp WHERE paa.assignment_action_id =' ;
5556 lv_sqlstr2 := p_run_assignment_action_id ;
5557 lv_sqlstr3 :='AND ppa.payroll_action_id = paa.payroll_action_id AND ptp.payroll_id = ppa.payroll_id AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date AND peef.assignment_id =' || p_assignment_id ||'AND peef.element_type_id =' ;
5558 lv_sqlstr4 := p_element_type_id ||' AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date AND peef.' || p_application_column_name || ' is not null ' ;
5559 lv_sqlstr_final := lv_sqlstr1 || lv_sqlstr2 || lv_sqlstr3 || lv_sqlstr4 ;
5560
5561 execute immediate lv_sqlstr_final into lv_check_date ;
5562 ln_step :=51;
5563 hr_utility.trace('lv_check_date == ' || lv_check_date);
5564 LOOP
5565
5566 FETCH get_element_entry_id INTO ln_element_entry_id,
5567 lv_creator_type,
5568 ld_source_start_date;
5569 ln_step :=52;
5570 IF get_element_entry_id%NOTFOUND THEN
5571 close get_element_entry_id;
5572 ln_step :=53;
5573 EXIT;
5574 END IF;
5575 ln_step :=53;
5576 lv_sqlstr := 'select nvl(' || p_application_column_name ||
5577 ',''AAA'') from pay_element_entries_f where element_entry_id = ' || ln_element_entry_id;
5578 execute immediate lv_sqlstr
5579 into lv_original_date_earned ;
5580
5581 IF lv_original_date_earned = 'AAA' THEN
5582 lv_original_date_earned := fnd_date.date_to_canonical( p_pymt_eff_date);
5583 lv_temp_AAA:= 'AAA' ;
5584 END IF;
5585 lv_original_date_earned := nvl(lv_original_date_earned ,p_pymt_eff_date);
5586
5587
5588 hr_utility.trace('lv_original_date_earned in step 53 is' || lv_original_date_earned) ;
5589
5590 ld_original_date_paid := fnd_date.canonical_to_date(lv_original_date_earned);
5591
5592 ln_step :=54;
5593 ln_hours := 0;
5594 ln_amount := 0;
5595 --bug 7373188
5596 -- OPEN get_run_results ( ln_element_entry_id );
5597 OPEN get_run_results ( p_run_assignment_action_id,ln_element_entry_id,p_pymt_eff_date); -- Bug# 16318258
5598 --bug 7373188
5599 LOOP
5600 ln_step := 49;
5601 FETCH get_run_results INTO ln_pay_value ,
5602 lv_pay_value_name;
5603 IF get_run_results%FOUND THEN
5604 IF lv_pay_value_name = 'Hours' THEN
5605 ln_hours := ln_hours + ln_pay_value;
5606 hr_utility.trace('ln_ytd_hours is '|| ln_ytd_hours );
5607 END IF ;
5608
5609 IF lv_pay_value_name = 'Pay Value' THEN
5610 ln_amount := ln_amount + ln_pay_value ;
5611 hr_utility.trace('ln_ytd_amount is '|| ln_ytd_amount );
5612 END IF;
5613 ELSE
5614 EXIT;
5615 END IF;
5616 END LOOP;
5617
5618 ln_step := 48;
5619 IF get_run_results%ISOPEN then
5620 CLOSE get_run_results ;
5621 END IF;
5622
5623 IF ln_hours = 0 THEN
5624 IF ln_amount = 0 THEN
5625 --bug 7373188
5626 -- OPEN get_run_results_rate(ln_element_entry_id);
5627 OPEN get_run_results_rate(p_run_assignment_action_id,ln_element_entry_id,p_pymt_eff_date); -- Bug# 16318258
5628 --bug 7373188
5629 FETCH get_run_results_rate INTO ln_rate;
5630 CLOSE get_run_results_rate;
5631 ELSE
5632 ln_rate := NULL;
5633 END IF;
5634 ELSE
5635 ln_rate := ln_amount/ln_hours;
5636 END IF;
5637
5638 hr_utility.trace('ld_original_date_paid := '||ld_original_date_paid);
5639 hr_utility.trace('ln_element_entry_id := '||ln_element_entry_id);
5640 hr_utility.trace('p_run_assignment_action_id := '||p_run_assignment_action_id);
5641
5642 OPEN archive_non_retro_elements ( ld_original_date_paid,
5643 ln_element_entry_id ,
5644 p_run_assignment_action_id );
5645 FETCH archive_non_retro_elements INTO lv_effective_start_date
5646 ,lv_effective_end_date
5647 ,lv_category;
5648 CLOSE archive_non_retro_elements ;
5649 hr_utility.trace('lv_effective_start_date := '||lv_effective_start_date);
5650 hr_utility.trace('lv_effective_end_date := '||lv_effective_end_date);
5651 hr_utility.trace('lv_category := '||lv_category);
5652
5653 -- Added For Work At Home Condition
5654 OPEN c_cur_get_wrkathome(p_assignment_id,p_pymt_eff_date); -- Bug# 16318258
5655 FETCH c_cur_get_wrkathome INTO lv_wrk_at_home
5656 ,ln_person_id
5657 ,ln_bg_id;
5658 CLOSE c_cur_get_wrkathome;
5659 IF lv_wrk_at_home = 'Y' THEN
5660 OPEN c_cur_home_state_jd(ln_person_id
5661 ,ln_bg_id);
5662 FETCH c_cur_home_state_jd INTO lv_jurisdiction_flag;
5663 CLOSE c_cur_home_state_jd;
5664 ELSE
5665
5666 SELECT nvl((select peevf.screen_entry_value jurisdiction_code
5667 from pay_input_values_f pivf,
5668 pay_element_entry_values_f peevf
5669 where pivf.element_type_id = p_element_type_id
5670 AND pivf.NAME = 'Jurisdiction'
5671 AND peevf.element_entry_id = ln_element_entry_id
5672 AND pivf.input_value_id = peevf.input_value_id
5673 AND p_pymt_eff_date between pivf.effective_start_date AND pivf.effective_end_date), -- Bug# 16318258
5674 (SELECT distinct pus.state_code
5675 || '-'
5676 || puc.county_code
5677 || '-'
5678 || punc.city_code jurisdiction_code
5679 FROM per_all_assignments_f peaf,
5680 hr_locations_all hla,
5681 pay_us_states pus,
5682 pay_us_counties puc,
5683 pay_us_city_names punc,
5684 pay_assignment_actions paa,
5685 pay_payroll_actions ppa
5686 WHERE peaf.assignment_id = p_assignment_id
5687 AND paa.assignment_action_id = p_run_assignment_action_id
5688 AND peaf.location_id = hla.location_id
5689 AND hla.region_2 = pus.state_abbrev
5690 AND pus.state_code = puc.state_code
5691 AND hla.region_1 = puc.county_name
5692 AND hla.town_or_city = punc.city_name
5693 AND pus.state_code = punc.state_code
5694 AND puc.county_code = punc.county_code
5695 AND ppa.payroll_action_id = paa.payroll_action_id
5696 AND ppa.effective_date between peaf.effective_start_date and peaf.effective_end_date
5697 ))
5698 into lv_jurisdiction_flag
5699 from dual;
5700 END IF; -- Work at Home 'N'
5701
5702 hr_utility.trace('lv_jurisdiction_flag := '||lv_jurisdiction_flag);
5703 lv_action_category := 'AC EARNINGS';
5704 ln_step := 15;
5705 ln_index := pay_ac_action_arch.lrr_act_tab.count;
5706
5707 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
5708 := fnd_number.number_to_canonical(ln_hours);
5709 hr_utility.trace('pay_ac_action_arch.lrr_act_tab(ln_index).act_info11' || pay_ac_action_arch.lrr_act_tab(ln_index).act_info11 );/*Bug 3311866*/
5710 hr_utility.set_location(gv_package || lv_procedure_name, 130);
5711 /* Insert this into the plsql table if Current or YTD
5712 amount is not Zero */
5713 ln_step :=21;
5714 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
5715 := lv_action_category;
5716 ln_step :=22;
5717 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
5718 := '00-000-0000' ;
5719 ln_step :=23;
5720 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
5721 := p_xfr_action_id;
5722 ln_step :=24;
5723 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
5724 := p_element_classification_name;
5725 ln_step :=25;
5726 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
5727 := p_element_type_id;
5728 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
5729 := p_primary_balance_id;
5730 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
5731 := p_processing_priority;
5732 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
5733 := fnd_number.number_to_canonical(nvl(ln_amount,0));
5734 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
5735 := fnd_number.number_to_canonical(0);
5736
5737 hr_utility.trace('ln_amount := '||fnd_number.number_to_canonical(nvl(ln_amount,0)));
5738 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
5739 := p_reporting_name;
5740
5741 IF lv_temp_AAA <> 'AAA' THEN
5742 pay_ac_action_arch.lrr_act_tab(ln_index).act_info17
5743 := lv_original_date_earned;
5744 hr_utility.trace('lv_original_date_earned :=' || lv_original_date_earned );
5745
5746 IF lv_check_date = nvl(lv_original_date_earned,p_pymt_eff_date) THEN
5747 count_j := ln_index;
5748 END IF;
5749 pay_ac_action_arch.lrr_act_tab(ln_index).act_info18
5750 := lv_effective_start_date;
5751 hr_utility.trace('lv_effective_start_date := ' || lv_effective_start_date );
5752 pay_ac_action_arch.lrr_act_tab(ln_index).act_info19
5753 := lv_effective_end_date ;
5754 hr_utility.trace('lv_effective_end_date:= ' || lv_effective_end_date );
5755 pay_ac_action_arch.lrr_act_tab(ln_index).act_info20
5756 := lv_category;
5757 hr_utility.trace('lv_category ' || lv_category );
5758 pay_ac_action_arch.lrr_act_tab(ln_index).act_info21
5759 := lv_jurisdiction_flag;
5760 END IF;
5761
5762 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22
5763 := round(ln_rate,2);
5764 /*
5765 IF pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 IS NULL THEN
5766 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 := 'N/A';
5767 END IF;
5768 */
5769
5770 hr_utility.set_location(gv_package || lv_procedure_name, 150);
5771 ln_step := 20;
5772 lv_temp_AAA := 'BBB' ;
5773 end loop;
5774
5775 /* Code added for doing balance call for YTD */
5776 if pay_emp_action_arch.gv_multi_leg_rule is null then
5777 pay_emp_action_arch.gv_multi_leg_rule
5778 := pay_emp_action_arch.get_multi_legislative_rule(
5779 p_legislation_code);
5780 end if;
5781
5782 pay_balance_pkg.set_context('JURISDICTION_CODE', null);
5783 if gv_reporting_level = 'TAXGRP' then
5784 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
5785 else
5786 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
5787 end if;
5788
5789 /*********************************************************
5790 ** Get the defined balance_id for YTD call as it will be
5791 ** same for all classification types.
5792 *********************************************************/
5793 ln_ytd_defined_balance_id
5794 := pay_emp_action_arch.get_defined_balance_id(
5795 p_primary_balance_id,
5796 gv_ytd_balance_dimension,
5797 p_legislation_code);
5798
5799 hr_utility.trace('ln_ytd_defined_balance_id = ' ||
5800 ln_ytd_defined_balance_id);
5801
5802 ln_step := 4;
5803 if p_hours_balance_id is not null then
5804 hr_utility.set_location(gv_package || lv_procedure_name, 20);
5805 ln_ytd_hours_balance_id
5806 := pay_emp_action_arch.get_defined_balance_id(
5807 p_hours_balance_id,
5808 gv_ytd_balance_dimension,
5809 p_legislation_code);
5810
5811 hr_utility.trace('ln_ytd_hours_balance_id = ' ||
5812 ln_ytd_hours_balance_id);
5813
5814 end if;
5815
5816 ln_step := 5;
5817 hr_utility.set_location(gv_package || lv_procedure_name, 40);
5818 if ln_ytd_defined_balance_id is not null then
5819 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
5820 ln_ytd_defined_balance_id,
5821 p_ytd_balcall_aaid),0);
5822 end if;
5823
5824 if p_hours_balance_id is not null then
5825 hr_utility.set_location(gv_package || lv_procedure_name, 50);
5826 if ln_ytd_hours_balance_id is not null then
5827 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
5828 ln_ytd_hours_balance_id,
5829 p_ytd_balcall_aaid),0);
5830 hr_utility.set_location(gv_package || lv_procedure_name, 60);
5831 end if;
5832 end if; --Hours
5833
5834 ln_step := 8;
5835 if p_pymt_balcall_aaid is not null then
5836 ln_step := 10;
5837 /* Added dimension _ASG_GRE_RUN for reversals and Balance
5838 Adjustments for Canada. Bug#3498653 */
5839 if p_action_type in ('B','V') then
5840 ln_pymt_defined_balance_id
5841 := pay_emp_action_arch.get_defined_balance_id(
5842 p_primary_balance_id,
5843 '_ASG_GRE_RUN',
5844 p_legislation_code);
5845 else
5846 if pay_emp_action_arch.gv_multi_leg_rule = 'Y' then
5847 ln_pymt_defined_balance_id
5848 := pay_emp_action_arch.get_defined_balance_id(
5849 p_primary_balance_id,
5850 '_ASG_PAYMENTS',
5851 p_legislation_code);
5852 else
5853 ln_pymt_defined_balance_id
5854 := pay_emp_action_arch.get_defined_balance_id(
5855 p_primary_balance_id,
5856 '_PAYMENTS',
5857 p_legislation_code);
5858 end if;
5859 end if; -- p_action_type in ('B','V')
5860 /* end of addition for Reversals and bal adjustments */
5861 hr_utility.trace('ln_pymt_defined_balance_id ' ||
5862 ln_pymt_defined_balance_id);
5863
5864 if ln_pymt_defined_balance_id is not null then
5865 ln_payments_amount := nvl(pay_balance_pkg.get_value(
5866 ln_pymt_defined_balance_id,
5867 p_pymt_balcall_aaid),0);
5868 hr_utility.trace('ln_payments_amount = ' ||ln_payments_amount);
5869 end if;
5870
5871 if p_hours_balance_id is not null then
5872 /* Added dimension _ASG_GRE_RUN for reversals and Balance
5873 Adjustments for Canada. Bug#3498653 */
5874 if p_action_type in ('B','V') then
5875 ln_pymt_hours_balance_id
5876 := pay_emp_action_arch.get_defined_balance_id(
5877 p_hours_balance_id
5878 ,'_ASG_GRE_RUN'
5879 ,p_legislation_code);
5880 else
5881 if pay_emp_action_arch.gv_multi_leg_rule = 'Y' then
5882 ln_pymt_hours_balance_id
5883 := pay_emp_action_arch.get_defined_balance_id(
5884 p_hours_balance_id
5885 ,'_ASG_PAYMENTS'
5886 ,p_legislation_code);
5887 else
5888 ln_pymt_hours_balance_id
5889 := pay_emp_action_arch.get_defined_balance_id(
5890 p_hours_balance_id
5891 ,'_PAYMENTS'
5892 ,p_legislation_code);
5893 end if;
5894 end if; -- p_action_type in ('B','V')
5895 /* end of addition for reversals and bal adjustments */
5896 hr_utility.trace('ln_pymt_hours_balance_id ' ||
5897 ln_pymt_hours_balance_id);
5898
5899 hr_utility.set_location(gv_package || lv_procedure_name, 120);
5900 end if; --Hours
5901 end if; -- p_pymt_balcall_aaid is not null
5902
5903 ln_step := 15;
5904
5905 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
5906 := fnd_number.number_to_canonical(ln_ytd_amount);
5907 hr_utility.trace('ln_ytd_amount' || nvl(ln_ytd_amount,0));
5908
5909 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
5910 := fnd_number.number_to_canonical(ln_ytd_hours);
5911 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
5912
5913 /* Following later to be re-valuated IF worth doing wrt Cost
5914
5915 IF count_j is null THEN
5916 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
5917 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
5918 hr_utility.trace('ln_ytd_amount' || ln_ytd_amount);
5919 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
5920 := fnd_number.number_to_canonical(ln_ytd_hours);
5921 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
5922 END IF;
5923 */
5924
5925 EXCEPTION
5926 when others then
5927 hr_utility.trace(' Error In archive_addnl_elements procedure');
5928 hr_utility.trace('error occured at step ' || ln_step );
5929
5930 END Archive_addnl_elements;
5931
5932
5933 -- New Procedure added by sneelapa for bug 13905220,
5934 -- to introduce new parameter p_sqlstr_final
5935
5936 Procedure Archive_addnl_elements (p_application_column_name in varchar2
5937 ,p_xfr_action_id in number
5938 ,p_assignment_id in number
5939 ,p_pymt_assignment_action_id in number
5940 ,p_pymt_eff_date in date
5941 ,p_element_type_id in number
5942 ,p_primary_balance_id in number
5943 ,p_hours_balance_id in number
5944 ,p_processing_priority in number
5945 ,p_element_classification_name in varchar2
5946 ,p_reporting_name in varchar2
5947 ,p_tax_unit_id in number
5948 ,p_ytd_balcall_aaid in number
5949 ,p_pymt_balcall_aaid in number
5950 ,p_legislation_code in varchar2
5951 ,p_sepchk_flag in varchar2
5952 ,p_sepchk_run_type_id in number
5953 ,p_action_type in varchar2
5954 ,p_run_assignment_action_id in number
5955 ,p_multiple in number
5956 ,p_rate in number
5957 ,p_sqlstr_final in varchar2
5958 ,p_sqlstr_date in varchar2
5959 )
5960 IS
5961 CURSOR archive_non_retro_elements ( cp_original_date_paid in varchar2,
5962 cp_element_entry_id in number,
5963 cp_run_assignment_action_id in number ) IS
5964
5965 select fnd_date.date_to_canonical(ptp.start_date),
5966 fnd_date.date_to_canonical(ptp.end_date),
5967 hr_general.decode_lookup
5968 (DECODE (UPPER (ec.classification_name),
5969 'EARNINGS', 'US_EARNINGS',
5970 'SUPPLEMENTAL EARNINGS', 'US_SUPPLEMENTAL_EARNINGS',
5971 'IMPUTED EARNINGS', 'US_IMPUTED_EARNINGS',
5972 'NON-PAYROLL PAYMENTS', 'US_PAYMENT',
5973 'ALIEN/EXPAT EARNINGS', 'PER_US_INCOME_TYPES',
5974 NULL
5975 ),
5976 et.element_information1
5977 ) CATEGORY
5978 from pay_assignment_actions paa,
5979 pay_payroll_actions ppa,
5980 per_time_periods ptp,
5981 pay_element_entries_f peef,
5982 pay_element_classifications ec,
5983 pay_element_types et
5984 where paa.assignment_action_id = cp_run_assignment_action_id
5985 and paa.payroll_action_id = ppa.payroll_action_id
5986 and ptp.payroll_id = ppa.payroll_id
5987 and nvl(cp_original_date_paid,ptp.start_date) between ptp.start_date AND ptp.end_date
5988 and peef.element_entry_id = cp_element_entry_id
5989 and et.element_type_id = peef.element_type_id
5990 and et.classification_id = ec.classification_id
5991 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date ; -- Bug# 16318258
5992
5993
5994 Cursor get_element_entry_id( cp_run_action_id in number ,
5995 cp_assignment_id in number ,
5996 cp_element_type_id in number ) IS
5997 select peef.element_entry_id,
5998 peef.creator_type,
5999 peef.source_start_date
6000 FROM pay_element_entries_f peef,
6001 pay_assignment_actions paa,
6002 pay_payroll_actions ppa,
6003 per_time_periods ptp
6004 WHERE paa.assignment_action_id = cp_run_action_id
6005 AND ppa.payroll_action_id = paa.payroll_action_id
6006 AND ptp.payroll_id = ppa.payroll_id
6007 AND ppa.date_earned BETWEEN ptp.start_date AND ptp.end_date
6008 AND peef.assignment_id = cp_assignment_id
6009 AND peef.element_type_id = cp_element_type_id
6010
6011 /* Commenting as Ele Entry Eff Start / End Date may not match the following
6012 AND peef.effective_start_date BETWEEN ptp.start_date AND ptp.end_date
6013 AND peef.effective_end_date BETWEEN ptp.start_date AND ptp.end_date
6014 End of Comment */
6015
6016 AND NVL(ppa.date_earned, ppa.effective_date) BETWEEN peef.effective_start_date AND peef.effective_end_date
6017
6018 --ORDER BY 3;
6019 ORDER BY nvl(peef.attribute_category,'Z'), peef.element_entry_id ;
6020
6021 --bug 7373188
6022 --CURSOR get_run_results ( cp_element_entry_id in number ) IS
6023 CURSOR get_run_results ( cp_run_action_id in number ,cp_element_entry_id in number
6024 ,cp_pymt_eff_date in date -- Bug# 16318258
6025 ) IS
6026 --bug 7373188
6027 SELECT to_number(prrv.result_value), pivf.NAME
6028 FROM pay_run_results prr,
6029 pay_run_result_values prrv,
6030 pay_input_values_f pivf
6031 WHERE prr.element_entry_id = cp_element_entry_id
6032 --bug 7373188
6033 and prr.assignment_action_id = cp_run_action_id
6034 --bug 7373188
6035 AND prrv.run_result_id = prr.run_result_id
6036 AND prrv.input_value_id = pivf.input_value_id
6037 AND pivf.NAME IN ('Pay Value', 'Hours')
6038 AND cp_pymt_eff_date between pivf.effective_start_date and pivf.effective_end_date -- Bug# 16318258
6039 ORDER BY 2 ;
6040 -- Introducing This Cussor in case Hours and Pay Values Both zero
6041 --
6042 --bug 7373188
6043 --CURSOR get_run_results_rate( cp_element_entry_id in number ) IS
6044 CURSOR get_run_results_rate( cp_run_action_id in number , cp_element_entry_id in number
6045 ,cp_pymt_eff_date in date -- Bug# 16318258
6046 ) IS
6047 --bug 7373188
6048 SELECT to_number(prrv.result_value)
6049 FROM pay_run_results prr,
6050 pay_run_result_values prrv,
6051 pay_input_values_f pivf
6052 WHERE prr.element_entry_id = cp_element_entry_id
6053 --bug 7373188
6054 and prr.assignment_action_id = cp_run_action_id
6055 --bug 7373188
6056 AND prrv.run_result_id = prr.run_result_id
6057 AND prrv.input_value_id = pivf.input_value_id
6058 AND pivf.NAME IN ('Rate')
6059 AND cp_pymt_eff_date between pivf.effective_start_date and pivf.effective_end_date; -- Bug# 16318258
6060
6061 -- Added For Work At Home Condition
6062
6063 CURSOR c_cur_get_wrkathome(cp_assignment_id IN NUMBER
6064 ,cp_pymt_eff_date in date -- Bug# 16318258
6065 ) IS
6066 SELECT NVL(paf.work_at_home, 'N')
6067 ,ppf.person_id
6068 ,ppf.business_group_id
6069 FROM per_assignments_f paf
6070 ,per_all_people_f ppf
6071 WHERE paf.assignment_id = cp_assignment_id
6072 AND paf.person_id = ppf.person_id
6073 and cp_pymt_eff_date between paf.effective_start_date and paf.effective_end_date
6074 and cp_pymt_eff_date between ppf.effective_start_date and ppf.effective_end_date; -- Bug# 16318258
6075
6076 CURSOR c_cur_home_state_jd(cp_person_id IN NUMBER
6077 ,cp_bg_id IN NUMBER) IS
6078 SELECT pus.state_code || '-000-0000'
6079 FROM per_addresses pa
6080 ,pay_us_states pus
6081 WHERE pa.person_id = cp_person_id
6082 AND pa.primary_flag = 'Y'
6083 AND p_pymt_eff_date between pa.date_from AND NVL(pa.date_to, hr_general.END_OF_TIME)
6084 AND pa.business_group_id = cp_bg_id
6085 AND pa.region_2 = pus.state_abbrev
6086 AND pa.style = p_legislation_code;
6087
6088 lv_original_date_earned varchar2(100);
6089 lv_effective_start_date varchar2(100);
6090 lv_effective_end_date varchar2(100);
6091 lv_category varchar2(100);
6092 lv_el_jurisdiction_code varchar2(100);
6093 ln_final_rate number;
6094 ln_element_entry_id number;
6095 lv_creator_type varchar2(100);
6096 lv_jurisdiction_flag varchar2(20);
6097 ln_element_index number;
6098 ln_multiple number;
6099 ln_rate number(10,2);
6100 ln_current_hours NUMBER(15,5);
6101 ln_payments_amount NUMBER(15,5);
6102 ln_ytd_hours NUMBER(15,5) := 0;
6103 ln_ytd_amount NUMBER(17,5) := 0;
6104
6105 ln_pymt_defined_balance_id NUMBER;
6106 ln_pymt_hours_balance_id NUMBER;
6107 ln_ytd_defined_balance_id NUMBER;
6108 ln_ytd_hours_balance_id NUMBER;
6109
6110 lv_rate_exists VARCHAR2(1) := 'N';
6111 ln_nonpayroll_balcall_aaid NUMBER;
6112
6113 ln_index NUMBER ;
6114 lv_procedure_name VARCHAR2(100):= '.Archive_addnl_elements';
6115 lv_error_message VARCHAR2(200);
6116
6117 ln_step NUMBER;
6118 ln_final_ytd_value NUMBER(15,5);
6119 ld_source_start_date DATE;
6120 lv_action_category varchar2(100);
6121 lv_pay_value_name varchar2(100);
6122 ln_pay_value number (15,5);
6123 ln_hours number(15,5) ;
6124 ln_amount number(15,5);
6125 ld_original_date_paid date;
6126 count_j number := null;
6127 result number := 0;
6128 lv_sqlstr varchar2(500);
6129 lv_check_date varchar2(100);
6130 ld_check_date date;
6131 lv_sqlstr1 varchar2(2500);
6132 lv_temp_AAA varchar2(100) :='BBB';
6133 lv_sqlstr2 varchar2(2500);
6134 lv_sqlstr3 varchar2(2500);
6135 lv_sqlstr4 varchar2(2500);
6136 lv_sqlstr_final varchar2(2500);
6137
6138 -- Added For Work At Home Condition
6139 lv_wrk_at_home per_assignments_f.work_at_home%TYPE;
6140 ln_person_id per_people_f.person_id%TYPE;
6141 ln_bg_id per_people_f.business_group_id%TYPE;
6142
6143 BEGIN
6144
6145 hr_utility.trace('Entering in package Archive_addnl_elements');
6146 hr_utility.trace('Run_assignment_action_id = ' || p_run_assignment_action_id) ;
6147 hr_utility.trace('Element Type Id in Non retro Archiver ' || p_element_type_id);
6148 hr_utility.trace('p_application_column_name = ' || p_application_column_name) ;
6149 hr_utility.trace('p_element_type_id = ' || p_element_type_id) ;
6150 hr_utility.trace('p_assignment_id = ' || p_assignment_id) ;
6151
6152 OPEN get_element_entry_id ( p_run_assignment_action_id,
6153 p_assignment_id,
6154 p_element_type_id);
6155 ln_step := 50;
6156
6157 ln_ytd_hours := 0;
6158 ln_amount := 0;
6159
6160 lv_sqlstr_final := p_sqlstr_final ;
6161
6162 EXECUTE IMMEDIATE lv_sqlstr_final INTO lv_check_date
6163 USING
6164 p_run_assignment_action_id, p_assignment_id, p_element_type_id;
6165
6166 ln_step :=51;
6167 hr_utility.trace('Srini lv_check_date == ' || lv_check_date);
6168
6169 LOOP
6170
6171 FETCH get_element_entry_id INTO ln_element_entry_id,
6172 lv_creator_type,
6173 ld_source_start_date;
6174 ln_step :=52;
6175 IF get_element_entry_id%NOTFOUND THEN
6176 close get_element_entry_id;
6177 ln_step :=53;
6178 EXIT;
6179 END IF;
6180 ln_step :=53;
6181
6182 hr_utility.trace('p_application_column_name == ' || p_application_column_name);
6183 hr_utility.trace('ln_element_entry_id == ' || ln_element_entry_id);
6184
6185 lv_sqlstr := p_sqlstr_date;
6186
6187 EXECUTE IMMEDIATE lv_sqlstr
6188 INTO lv_original_date_earned
6189 USING ln_element_entry_id;
6190
6191 hr_utility.trace('Srini lv_original_date_earned == ' || lv_original_date_earned);
6192
6193 IF lv_original_date_earned = 'AAA' THEN
6194 lv_original_date_earned := fnd_date.date_to_canonical( p_pymt_eff_date);
6195 lv_temp_AAA:= 'AAA' ;
6196 END IF;
6197 lv_original_date_earned := nvl(lv_original_date_earned ,p_pymt_eff_date);
6198
6199
6200 hr_utility.trace('lv_original_date_earned in step 53 is' || lv_original_date_earned) ;
6201
6202 ld_original_date_paid := fnd_date.canonical_to_date(lv_original_date_earned);
6203
6204 ln_step :=54;
6205 ln_hours := 0;
6206 ln_amount := 0;
6207 --bug 7373188
6208 -- OPEN get_run_results ( ln_element_entry_id );
6209 OPEN get_run_results ( p_run_assignment_action_id,ln_element_entry_id,p_pymt_eff_date); -- Bug# 16318258
6210 --bug 7373188
6211 LOOP
6212 ln_step := 49;
6213 FETCH get_run_results INTO ln_pay_value ,
6214 lv_pay_value_name;
6215 IF get_run_results%FOUND THEN
6216 IF lv_pay_value_name = 'Hours' THEN
6217 ln_hours := ln_hours + ln_pay_value;
6218 hr_utility.trace('ln_ytd_hours is '|| ln_ytd_hours );
6219 END IF ;
6220
6221 IF lv_pay_value_name = 'Pay Value' THEN
6222 ln_amount := ln_amount + ln_pay_value ;
6223 hr_utility.trace('ln_ytd_amount is '|| ln_ytd_amount );
6224 END IF;
6225 ELSE
6226 EXIT;
6227 END IF;
6228 END LOOP;
6229
6230 ln_step := 48;
6231 IF get_run_results%ISOPEN then
6232 CLOSE get_run_results ;
6233 END IF;
6234
6235 IF ln_hours = 0 THEN
6236 IF ln_amount = 0 THEN
6237 --bug 7373188
6238 -- OPEN get_run_results_rate(ln_element_entry_id);
6239 OPEN get_run_results_rate(p_run_assignment_action_id,ln_element_entry_id,p_pymt_eff_date); -- Bug# 16318258
6240 --bug 7373188
6241 FETCH get_run_results_rate INTO ln_rate;
6242 CLOSE get_run_results_rate;
6243 ELSE
6244 ln_rate := NULL;
6245 END IF;
6246 ELSE
6247 ln_rate := ln_amount/ln_hours;
6248 END IF;
6249
6250 hr_utility.trace('ld_original_date_paid := '||ld_original_date_paid);
6251 hr_utility.trace('ln_element_entry_id := '||ln_element_entry_id);
6252 hr_utility.trace('p_run_assignment_action_id := '||p_run_assignment_action_id);
6253
6254 OPEN archive_non_retro_elements ( ld_original_date_paid,
6255 ln_element_entry_id ,
6256 p_run_assignment_action_id );
6257 FETCH archive_non_retro_elements INTO lv_effective_start_date
6258 ,lv_effective_end_date
6259 ,lv_category;
6260 CLOSE archive_non_retro_elements ;
6261 hr_utility.trace('lv_effective_start_date := '||lv_effective_start_date);
6262 hr_utility.trace('lv_effective_end_date := '||lv_effective_end_date);
6263 hr_utility.trace('lv_category := '||lv_category);
6264
6265 -- Added For Work At Home Condition
6266 OPEN c_cur_get_wrkathome(p_assignment_id,p_pymt_eff_date); -- Bug# 16318258
6267 FETCH c_cur_get_wrkathome INTO lv_wrk_at_home
6268 ,ln_person_id
6269 ,ln_bg_id;
6270 CLOSE c_cur_get_wrkathome;
6271 IF lv_wrk_at_home = 'Y' THEN
6272 OPEN c_cur_home_state_jd(ln_person_id
6273 ,ln_bg_id);
6274 FETCH c_cur_home_state_jd INTO lv_jurisdiction_flag;
6275 CLOSE c_cur_home_state_jd;
6276 ELSE
6277
6278 SELECT nvl((select peevf.screen_entry_value jurisdiction_code
6279 from pay_input_values_f pivf,
6280 pay_element_entry_values_f peevf
6281 where pivf.element_type_id = p_element_type_id
6282 AND pivf.NAME = 'Jurisdiction'
6283 AND peevf.element_entry_id = ln_element_entry_id
6284 AND pivf.input_value_id = peevf.input_value_id
6285 AND p_pymt_eff_date between pivf.effective_start_date AND pivf.effective_end_date), -- Bug# 16318258
6286 (SELECT distinct pus.state_code
6287 || '-'
6288 || puc.county_code
6289 || '-'
6290 || punc.city_code jurisdiction_code
6291 FROM per_all_assignments_f peaf,
6292 hr_locations_all hla,
6293 pay_us_states pus,
6294 pay_us_counties puc,
6295 pay_us_city_names punc,
6296 pay_assignment_actions paa,
6297 pay_payroll_actions ppa
6298 WHERE peaf.assignment_id = p_assignment_id
6299 AND paa.assignment_action_id = p_run_assignment_action_id
6300 AND peaf.location_id = hla.location_id
6301 AND hla.region_2 = pus.state_abbrev
6302 AND pus.state_code = puc.state_code
6303 AND hla.region_1 = puc.county_name
6304 AND hla.town_or_city = punc.city_name
6305 AND pus.state_code = punc.state_code
6306 AND puc.county_code = punc.county_code
6307 AND ppa.payroll_action_id = paa.payroll_action_id
6308 AND ppa.effective_date between peaf.effective_start_date and peaf.effective_end_date
6309 ))
6310 into lv_jurisdiction_flag
6311 from dual;
6312 END IF; -- Work at Home 'N'
6313
6314 hr_utility.trace('lv_jurisdiction_flag := '||lv_jurisdiction_flag);
6315 lv_action_category := 'AC EARNINGS';
6316 ln_step := 15;
6317 ln_index := pay_ac_action_arch.lrr_act_tab.count;
6318
6319 pay_ac_action_arch.lrr_act_tab(ln_index).act_info11
6320 := fnd_number.number_to_canonical(ln_hours);
6321 hr_utility.trace('pay_ac_action_arch.lrr_act_tab(ln_index).act_info11' || pay_ac_action_arch.lrr_act_tab(ln_index).act_info11 );/*Bug 3311866*/
6322 hr_utility.set_location(gv_package || lv_procedure_name, 130);
6323 /* Insert this into the plsql table if Current or YTD
6324 amount is not Zero */
6325 ln_step :=21;
6326 pay_ac_action_arch.lrr_act_tab(ln_index).action_info_category
6327 := lv_action_category;
6328 ln_step :=22;
6329 pay_ac_action_arch.lrr_act_tab(ln_index).jurisdiction_code
6330 := '00-000-0000' ;
6331 ln_step :=23;
6332 pay_ac_action_arch.lrr_act_tab(ln_index).action_context_id
6333 := p_xfr_action_id;
6334 ln_step :=24;
6335 pay_ac_action_arch.lrr_act_tab(ln_index).act_info1
6336 := p_element_classification_name;
6337 ln_step :=25;
6338 pay_ac_action_arch.lrr_act_tab(ln_index).act_info2
6339 := p_element_type_id;
6340 pay_ac_action_arch.lrr_act_tab(ln_index).act_info6
6341 := p_primary_balance_id;
6342 pay_ac_action_arch.lrr_act_tab(ln_index).act_info7
6343 := p_processing_priority;
6344 pay_ac_action_arch.lrr_act_tab(ln_index).act_info8
6345 := fnd_number.number_to_canonical(nvl(ln_amount,0));
6346 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
6347 := fnd_number.number_to_canonical(0);
6348
6349 hr_utility.trace('ln_amount := '||fnd_number.number_to_canonical(nvl(ln_amount,0)));
6350 pay_ac_action_arch.lrr_act_tab(ln_index).act_info10
6351 := p_reporting_name;
6352
6353 IF lv_temp_AAA <> 'AAA' THEN
6354 pay_ac_action_arch.lrr_act_tab(ln_index).act_info17
6355 := lv_original_date_earned;
6356 hr_utility.trace('lv_original_date_earned :=' || lv_original_date_earned );
6357
6358 IF lv_check_date = nvl(lv_original_date_earned,p_pymt_eff_date) THEN
6359 count_j := ln_index;
6360 END IF;
6361 pay_ac_action_arch.lrr_act_tab(ln_index).act_info18
6362 := lv_effective_start_date;
6363 hr_utility.trace('lv_effective_start_date := ' || lv_effective_start_date );
6364 pay_ac_action_arch.lrr_act_tab(ln_index).act_info19
6365 := lv_effective_end_date ;
6366 hr_utility.trace('lv_effective_end_date:= ' || lv_effective_end_date );
6367 pay_ac_action_arch.lrr_act_tab(ln_index).act_info20
6368 := lv_category;
6369 hr_utility.trace('lv_category ' || lv_category );
6370 pay_ac_action_arch.lrr_act_tab(ln_index).act_info21
6371 := lv_jurisdiction_flag;
6372 END IF;
6373
6374 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22
6375 := round(ln_rate,2);
6376 /*
6377 IF pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 IS NULL THEN
6378 pay_ac_action_arch.lrr_act_tab(ln_index).act_info22 := 'N/A';
6379 END IF;
6380 */
6381
6382 hr_utility.set_location(gv_package || lv_procedure_name, 150);
6383 ln_step := 20;
6384 lv_temp_AAA := 'BBB' ;
6385 end loop;
6386
6387 /* Code added for doing balance call for YTD */
6388 if pay_emp_action_arch.gv_multi_leg_rule is null then
6389 pay_emp_action_arch.gv_multi_leg_rule
6390 := pay_emp_action_arch.get_multi_legislative_rule(
6391 p_legislation_code);
6392 end if;
6393
6394 pay_balance_pkg.set_context('JURISDICTION_CODE', null);
6395 if gv_reporting_level = 'TAXGRP' then
6396 gv_ytd_balance_dimension := gv_dim_asg_tg_ytd;
6397 else
6398 gv_ytd_balance_dimension := gv_dim_asg_gre_ytd;
6399 end if;
6400
6401 /*********************************************************
6402 ** Get the defined balance_id for YTD call as it will be
6403 ** same for all classification types.
6404 *********************************************************/
6405 ln_ytd_defined_balance_id
6406 := pay_emp_action_arch.get_defined_balance_id(
6407 p_primary_balance_id,
6408 gv_ytd_balance_dimension,
6409 p_legislation_code);
6410
6411 hr_utility.trace('ln_ytd_defined_balance_id = ' ||
6412 ln_ytd_defined_balance_id);
6413
6414 ln_step := 4;
6415 if p_hours_balance_id is not null then
6416 hr_utility.set_location(gv_package || lv_procedure_name, 20);
6417 ln_ytd_hours_balance_id
6418 := pay_emp_action_arch.get_defined_balance_id(
6419 p_hours_balance_id,
6420 gv_ytd_balance_dimension,
6421 p_legislation_code);
6422
6423 hr_utility.trace('ln_ytd_hours_balance_id = ' ||
6424 ln_ytd_hours_balance_id);
6425
6426 end if;
6427
6428 ln_step := 5;
6429 hr_utility.set_location(gv_package || lv_procedure_name, 40);
6430 if ln_ytd_defined_balance_id is not null then
6431 ln_ytd_amount := nvl(pay_balance_pkg.get_value(
6432 ln_ytd_defined_balance_id,
6433 p_ytd_balcall_aaid),0);
6434 end if;
6435
6436 if p_hours_balance_id is not null then
6437 hr_utility.set_location(gv_package || lv_procedure_name, 50);
6438 if ln_ytd_hours_balance_id is not null then
6439 ln_ytd_hours := nvl(pay_balance_pkg.get_value(
6440 ln_ytd_hours_balance_id,
6441 p_ytd_balcall_aaid),0);
6442 hr_utility.set_location(gv_package || lv_procedure_name, 60);
6443 end if;
6444 end if; --Hours
6445
6446 ln_step := 8;
6447 if p_pymt_balcall_aaid is not null then
6448 ln_step := 10;
6449 /* Added dimension _ASG_GRE_RUN for reversals and Balance
6450 Adjustments for Canada. Bug#3498653 */
6451 if p_action_type in ('B','V') then
6452 ln_pymt_defined_balance_id
6453 := pay_emp_action_arch.get_defined_balance_id(
6454 p_primary_balance_id,
6455 '_ASG_GRE_RUN',
6456 p_legislation_code);
6457 else
6458 if pay_emp_action_arch.gv_multi_leg_rule = 'Y' then
6459 ln_pymt_defined_balance_id
6460 := pay_emp_action_arch.get_defined_balance_id(
6461 p_primary_balance_id,
6462 '_ASG_PAYMENTS',
6463 p_legislation_code);
6464 else
6465 ln_pymt_defined_balance_id
6466 := pay_emp_action_arch.get_defined_balance_id(
6467 p_primary_balance_id,
6468 '_PAYMENTS',
6469 p_legislation_code);
6470 end if;
6471 end if; -- p_action_type in ('B','V')
6472 /* end of addition for Reversals and bal adjustments */
6473 hr_utility.trace('ln_pymt_defined_balance_id ' ||
6474 ln_pymt_defined_balance_id);
6475
6476 if ln_pymt_defined_balance_id is not null then
6477 ln_payments_amount := nvl(pay_balance_pkg.get_value(
6478 ln_pymt_defined_balance_id,
6479 p_pymt_balcall_aaid),0);
6480 hr_utility.trace('ln_payments_amount = ' ||ln_payments_amount);
6481 end if;
6482
6483 if p_hours_balance_id is not null then
6484 /* Added dimension _ASG_GRE_RUN for reversals and Balance
6485 Adjustments for Canada. Bug#3498653 */
6486 if p_action_type in ('B','V') then
6487 ln_pymt_hours_balance_id
6488 := pay_emp_action_arch.get_defined_balance_id(
6489 p_hours_balance_id
6490 ,'_ASG_GRE_RUN'
6491 ,p_legislation_code);
6492 else
6493 if pay_emp_action_arch.gv_multi_leg_rule = 'Y' then
6494 ln_pymt_hours_balance_id
6495 := pay_emp_action_arch.get_defined_balance_id(
6496 p_hours_balance_id
6497 ,'_ASG_PAYMENTS'
6498 ,p_legislation_code);
6499 else
6500 ln_pymt_hours_balance_id
6501 := pay_emp_action_arch.get_defined_balance_id(
6502 p_hours_balance_id
6503 ,'_PAYMENTS'
6504 ,p_legislation_code);
6505 end if;
6506 end if; -- p_action_type in ('B','V')
6507 /* end of addition for reversals and bal adjustments */
6508 hr_utility.trace('ln_pymt_hours_balance_id ' ||
6509 ln_pymt_hours_balance_id);
6510
6511 hr_utility.set_location(gv_package || lv_procedure_name, 120);
6512 end if; --Hours
6513 end if; -- p_pymt_balcall_aaid is not null
6514
6515 ln_step := 15;
6516
6517 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
6518 := fnd_number.number_to_canonical(ln_ytd_amount);
6519 hr_utility.trace('ln_ytd_amount' || nvl(ln_ytd_amount,0));
6520
6521 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
6522 := fnd_number.number_to_canonical(ln_ytd_hours);
6523 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
6524
6525 /* Following later to be re-valuated IF worth doing wrt Cost
6526
6527 IF count_j is null THEN
6528 pay_ac_action_arch.lrr_act_tab(ln_index).act_info9
6529 := fnd_number.number_to_canonical(nvl(ln_ytd_amount,0));
6530 hr_utility.trace('ln_ytd_amount' || ln_ytd_amount);
6531 pay_ac_action_arch.lrr_act_tab(ln_index).act_info12
6532 := fnd_number.number_to_canonical(ln_ytd_hours);
6533 hr_utility.trace('ln_ytd_hours' || ln_ytd_hours);
6534 END IF;
6535 */
6536
6537 EXCEPTION
6538 when others then
6539 hr_utility.trace(' Error In archive_addnl_elements procedure');
6540 hr_utility.trace('error occured at step ' || ln_step );
6541
6542 END Archive_addnl_elements;
6543
6544
6545
6546 END pay_ac_action_arch;