DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_US_MMRF_W2_FORMAT_RECORD

Source


1 PACKAGE BODY pay_us_mmrf_w2_format_record AS
2 /* $Header: pyusw2fr.pkb 120.122.12020000.7 2013/02/26 10:13:22 skchalla ship $  */
3 
4  /*===========================================================================+
5  |               Copyright (c) 2001 Oracle Corporation                        |
6  |                  Redwood Shores, California, USA                           |
7  |                       All rights reserved.                                 |
8  +============================================================================+
9 
10   Name
11     pay_us_mmrf_w2_format_record
12 
13   Purpose
14     The purpose of this package is to format reacord to support the
15     generation of W2 magnetic tape for US legilsative requirements.
16 
17   Notes
18     Referenced By:  Package  pay_us_reporting_utils_pkg
19 
20   History
21 
22   14-Jul-03  ppanda      115.0                Created
23   18-Sep-03  ppanda      115.2  3150687       STATE W2 MAG RS RECORDS ARE ONLY 487 POSITIONS
24                                               RS record formatting function uses a local variable
25                                               l_last_field which is 25 spaces. This field was not
26                                               initialized. This was causing the RS record length as 487.
27   30-OCT-03  ppanda      115.3  3135857       Reporting Period for SC no longer required. Position
28                                               197-202 on RS record blank filled.
29   01-NOV-03  ppanda      115.5                Function set_req_field_length  modified for W-2c Mag requirement
30 
31   08-NOV-03  tmehra      115.6  2084851       Maryland State Pickup Pos 298-307 change
32   20-NOV-03  ppanda      115.7  3130999       RA positions  12 - 216 NR blank fill
33                                                            274 - 295 NR blank fill
34                                                            356 - 512 NR blank fill
35                                               RE position    7       NR blank fill
36                                                             17 - 39  NR blank fill
37                                                             97 - 118 NR blank fill
38                                                            179 - 512 NR blank fill
39                                               RS position   73 - 94  NR blank fill
40                                                            150 - 194 NR blank fill
41                                                            274 - 275 NR blank fill
42   22-NOV-03 sodhingr    115.8                 Removed show_errors to fix GSCC failure
43   25-NOV-03 ppanda      115.9   3067494       Kansas City, MO Local RS reocrd formating changed
44                                               for few fields
45   02-DEC-03 ppanda      115.10  3293083       Lousiana state W-2 is not reporting submitter
46                                               Delivery address, City, State, Zip and Zip code
47                                               extension.
48   08-NOV-03 tmehra      115.11  2084851       Zero filled the Maryland State Pickup Pos 298-307
49   08-DEC-03 ppanda      115.9   3299126       For LA state W2 RE record : 97- 118(Employer Address)
50                                               Not required
51   26-DEC-03 ppanda      115.10  3337295       For PR RO, RS and RT record specification changed
52                                               Refer Bug Descriotion for the details of record changes.
53   20-AUG-04 tmehra      115.11  3534769       Added support for the Maryland state pickup.
54 
55   27-OCT-04 rsethupa    115.15  3895206       NJ DIPP Plan ID - Only last 14 characters are
56 				              required
57 					      RS Positions  339-352
58                                 3936924       For State of AL
59 				              RE positions  170-173 - zip code extension
60 					                    401-410 - Alabama withholding tax acct number
61 							              (Right justify zero fill)
62                                               RS positions  248-257 - State ER In Number
63 					                    258-268 - Federal Employer Id Number
64 							    393-396 - Payment year
65   28-OCT-04 rsethupa    115.16  3936924       Removed redundant local variables. Added comments.
66 
67   02-NOV-04 rsethupa    115.17  3180532       IN EIC changes
68                                               RS positions 193 - 203 Box 9 - Adv Fed EIC
69 					                   204 - 273 Blank fill
70 							   341 - 352 Box 19b - State Adv EIC
71 							   353 - 357 Box 20b - Adv EIC ID "INADV"
72 							   358 - 512 Blank fill
73   04-NOV-04 rsethupa    115.18  3186636       WV requires MMREF format from 2004. Formatting for
74                                               RE, RW and RS records done as per specifications.
75                                 3292989       ST Louis MO Local W-2 Mag
76 				              RA positions 12 - 28 blank fill
77 					                   29 - 29 blank fill
78 							   30 - 35 blank fill
79 							   36 - 37 blank fill
80                                 3680056       New fields ER Contrib to a Health Savings Account has been
81                                               added to RW and RT records
82 					      RW positions 364-374
83 					      RT positions 250-264
84   18-NOV-04 ppanda      115.19  3180532       IN EIC changes
85                                               RS positions 341 - 352 Box 19b - State Adv EIC
89                                               of 341.
86 							   353 - 357 Box 20b - Adv EIC ID "INADV"
87                                               These two values were lpaded with blanks. This was
88                                               causing the value to appear at position 396 instead
90   18-NOV-04 ppanda      115.20  4016439       Dayton, OH Local Tape RA record changed
91                                                for preferred problem notification method.
92   24-NOV-04 rsethupa    115.21  3180532       Added local variable l_fl_field_17_20 for RS record
93   24-NOV-04 rsethupa    115.22  4022086       RS record for state of MS
94                                               positions
95               				                  258-266 Federal Employer ID number
96     					                      267 - blank
97 					                          298-307 Federal Tax withheld
98 					                          338-348 1099 Income
99 					                          349-392 blanks
100 					                          393-396 Payment Year
101 					                          397-512 blanks
102   25-NOV-04 rsethupa    115.23  4014356       RS Record for NJ
103                                               Positions
104               			 	                  308-310 Medical Malpractice
105                                                 Insurance Premium Assistance
106                                                 Assessment (MIF)
107                                               311-330 blanks
108   29-Nov-04 ppanda      115.24  4012469       RS record changed for
109                                               positions 3-4 STate Code
110                                                 - now require numeric code "20"
111                                               positions 274-275 state code -
112                                                 - now require numeric code "20"
113                                               positions 338-348 Employee
114                                                 Contributions to Kansas Public
115                                                 EE's Retirement System (KPERS,
116                                                 KPF or Judges)
117   03-DEC-04 rsethupa    115.25  4045592       OH_CCAAA RS record
118                                               positions 338-412 is now blank
119   07-DEC-04 rsethupa    115.26  4052268       For WV RE record
120                                               positions
121 					      7 : Agent Indicator code
122 					      17-25 : Agent for EIN
123 					      31-39 : Other EIN
124   23-DEC-04 rsethupa    115.27  4084765       Added logic to display NJ DIPP Plan ID
125                                               even if it is less than 14 characters
126   04-APR-05 meshah      115.28  4279809       changed the r_input_34 for AL in
127                                               the RS record.
128   07-Nov-05 sudedas     115.29  4391218       RA,RW,RO,RT and RU W2 Format changed.
129   09-Nov-05 saurgupt    115.30  4720007       Postion 341-351 : RS record for IN moves by one
130                                               position.
131   09-Nov-05 kvsankar    115.31  4502738       RE, RW, RT record added for MO_KNSAS
132                                               Removed Code that was commented.
133   11-Nov-05 kvsankar    115.32  4730413       OH RS record SD has incorrect positioning
134                                               for SD code. It should be right justified and
135                                               blank filled in positions 331-337.
136   15-Nov-05 kvsankar    115.33  4728539       For RS 368-369 should be filled with ZERO's
137                                               for Maryland
138   16-Nov-05 kvsankar    115.34  4739790       Modified RE, RW and RS record for MO_KNSAS
139   29-Nov-05 sudedas     115.35  4665713       Modified RW, RO, RS and RT Record for Puerto Rico W2
140                                 4859212       Modified RW Pos: 342 - 352 and RT Pos: 220 - 234
141   17-Aug-06 sudedas     115.36  5256745       Modified RW Pos: 441 - 451 , Pos: 452 - 462
142                                               RT Pos: 370 - 384 , Pos: 385 - 399
143                                               RO Pos: 266 - 274.
144                                 4736977       Modified RS Record Pos: 368 - 369 for MD. Should now
145                                               report W4 Withholding Allowances for Maryland.
146   26-Oct-06 vmkulkar    115.37  5513076       Modified RS pos 73-94 , pos : 95-116 and pos : 357-359
147 					      for the state of INDIANA
148   03-Nov-06 vmkulkar    115.38  5513076       Modified RS pos 331-343 , pos : 344-354 and pos : 355-359
149                                 5637673       and 360-512 blanks for INDIANA
150   10-Nov-06 sausingh    115.39  5651314       Modified RS pos 298-307 for GEORGIA
151   14-Nov-06 sausingh    115.40  5651314       Removed (115.38=120.10) from
152                                               line 5 to remove GSCC compliencnce
153   14-Nov-06 sausingh    115.40  5651314       Modified RS pos 298-307 for GEORGIA
154   22-Nov-06 sudedas     115.41  5640748       Modified RE Record for State of Maryland.
155   28-Nov-06 vmkulkar	115.42  5668970       Modified
156 					      RO pos 265 civil status
157 					      RS 274-275
158 					      RU pos 55-69 zero   for Puerto Rico(PR).
159   29-Nov-06 sudedas     115.43  5686164       Modified RE Record for Maryland , added nvl.
160   04-Dec-06 sudedas     115.44  5693183       RS Rec Pos: 248 - 267 Blank for GA.
161   14-dec-06 djoshi      115.45  5717304       RS record position 307 fixed for
162                                               KS and NJ
163 
164   14-dec-06 djoshi      115.46  5717304       RS record position 307 fixed for
165                                               KS and NJ
166   15-Dec-06 sudedas     115.47  5717438       RS Record Pos : 298 - 307 Modified
167                                               for ELSE section.
168                                               (Earlier code only for GA)
169   28-Dec-06 alikhar     115.49  5696443       RS Record for GA modified. Two new fields.
173                                 5759976       report Address Line 1 (Employer Delivery Address)
170                                               Pos 338-412 (FEIN) and Pos 413-487 (SIT).
171   03-Jan-07 sudedas     115.50  5739737       Position 341 - 343 Modified for Indiana RS Record.
172   13-Jan-07 sudedas     115.51  5760355       Maryland RE Record Position: 273 - 294 should
174   16-Feb-07 vaprakas    115.52  5876054       Fixed mutilple issue in RS and RT records for PR
175   16-Feb-07 sudedas     115.53  5886247       City Name to be displayed for Tax Withheld in Ohio-RITA
176   26-Oct-07 svannian    115.55  6330489       RA RECORD Modified,
177                                               Position: 20-23 ,Software Vendor code(1334)
178                                               Position: 24-28 ,blank
179                                               RO RECORD Modified ,
180                                               Position: 265,blank
181                                               changes for the Federal and ALL STATES
182   02-Nov-07 svannian   115.56  5155648        For Transfer State FED and State PR, position 275-278 of
183 					      RO record and 408-418 of RW Record made to Zero.
184   22-Nov-07 sjawid     115.57  6641801        For State SC RS record Pos 197-202 modified to
185                        115.58                 populate  Reporting period.
186   07-Dec-07 vmkulkar   115.59  6644795        Added function format_W2_RV_record
187 			       6648007
188   07-Dec-07 svannian   115.61  6648064        430-512 of Rw record made to blank fill for indiana
189   07-Dec-07 vmkulkar   115.64	              PR RS Rec 338-347 Blank fill
190   10-Dec-07 svannian   115.65  6644795        For PR - RU RECORD 10 - 24 zero fill
191                                               40 - 29 zero fill
192 					      RO RECORD
193 					      34-99 zero fill
194   26-Dec-07 svannian   115.70  6684920        RA pos 172-512 made blank
195                                               RE pos 219 made blank
196   02-Jan-08 vmkulkar   115.73  6720630        RS 274-275 MI made blank
197   09-Jan-08 vmkulkar   115.75  6650931        Reverted back the CCA changes made in the last version.
198   21-apr-08	svannian   115.77  6855543        GA pos 340 - 482 changed as stated in bug 6855543
199   19-nOV-08 SKPATIL    115.78  7045241        Making RE record for LA  position 219 as required at format_W2_RE_record()
200   13-Feb-09 skpatil    115.90  8243215        Making pos 197-202 required in RS record for state of DC
201   29-Oct-09 svannian   115.91  9065558        Changes foe WI made in RS record
202   19-Mar-10 emunisek   115.104 9356178        Overloaded function format_mmref_address
203                                               to accommodate the phone number requirement
204                                               of Florida SQWL.This will be used only for the purpose of Florida SQWL.All other
205                                               calls to the function format_mmref_address will use the existing function
206   24-Mar-10 emunisek   115.105 9356178        Reorganized the code as per the suggestions
207                                               made in codereview.
208   30-Mar-10 emunisek   115.106 9356178        Placed special character check on Phone Number
209   06-May-10 svannian   115.107 9473738        pos 248 - 267 made to right justify
210   17-Aug-10 skchalla   115.108 9385848        Placed some validations for the state New Mexico for the
211                                               fields SIT Company ID and CRS Identification Number.
212   27-Aug-10 nkjaladi   115.109 10031479       Modified function format_W2_RS_record to remove
213                                               alphabetic and special characters from
214                                               pos 248 - 267(r_input_25) from state 'ID'
215   31-Aug-10 nkjaladi   115.110 10031479       Modified function format_W2_RV_record to remove
216                                               alphabetic and special characters from
217                                               pos 16 - 24(r_input_4) from state 'ID'
218   01-Sep-10 nkjaladi   115.111 10031479       Modified function format_W2_RV_record to remove
219                                               special characters '-' and '/' from
220                                               pos 16 - 24(r_input_4) from state 'ID'
221   08-Sep-10 nkjaladi   115.112 10100148       Modified function format_W2_RS_record to avoid
222                                               truncation to 20 characters and to remove
223                                               other special characters like '{}[]:;"''.
224                                               Also Modified function format_W2_RV_record to
225                                               remove other special characters like '{}[]:;"''
226   13-Sep-10 skchalla   115.113 9435160        Modified function format_W2_RV_record to drop
227                                               the cents from pos 16 - 24(r_input_4) from state 'OR'
228   14-Sep-10 nkjaladi   115.114 10100148       Modified function format_W2_RS_record to avoid
229                                               extra truncation.
230   17-Sep-10 skchalla   115.115 9385848        Pos 298-307: CRS Identification Number and pos 248-267: SIT Company State ID
231                                               for NM was modified to pick the correct value in format_W2_RS_record.
232                                               Also Modified the same function to
233                                               remove other special characters like '{}[]:;"''
234 																							Also Dropped the Leading zeros from Pos 298-307: CRS Identification Number.
235   08-Nov-10 asgugupt   115.116 9913436        Modified for Fed Mag Media
236   10-Nov-10 asgugupt   115.116 10266082        Modified RE,RS,RF records for VA state
237   13-Sep-10 skchalla   115.121 10266129       Modified function format_W2_RV_record to Add the cents.
238   19-Sep-10 skchalla   115.122 10284526       Modified the function format_W2_RS_record for WV changes.
239   24-Nov-10 nkjaladi   115.123 9913436        Modified the function format_W2_RO_record to increase the variable
243   26-Nov-10 asgugupt   115.126 10283926       Modified RS record formatting for bug 10283926
240                                               size of p_output_value in type function_columns from 100 to 200
241   24-Nov-10 asgugupt   115.124 10287523       Modified RS record formatting for bug 10287523
242   25-Nov-10 nkjaladi   115.125 10313971       Modified RS record formatting for 'NE' state to remove preceding '21-'
244   29-Nov-10 skchalla   115.130 10266267       Modified the function format_W2_RS_record for VT changes.
245   08-Dec-10 skchalla   115.131 10266267       Modified the function format_W2_RW_record for VT changes.
246   10-Dec-10 asgugupt   115.132 10287523       Modified the function format_W2_RO_record for ID a03 file
247   22-Dec-10 asgugupt   115.133 10419372       Modified the function format_W2_RF_record for CT
248   23-Dec-10 skchalla   115.134 10419148	      Modified the functions format_W2_RO_record,format_W2_RU_record for KY
249   27-Dec-10 skchalla   115.135 10427851	      Modified the functions format_W2_RO_record,format_W2_RU_record for PR
250   11-Jan-11 skchalla   115.136 10427851	      Modified the functions format_W2_RO_record PR a03 CSV file.
251   14-Jan-11 asgugupt   115.137 11074088	      Modified the functions format_W2_RW_record OH a03 CSV file.
252   02-Mar-11 asgugupt   115.138  11800770      Modifiee the functions format_W2_RW_record for VT State
253   27-Oct-11 skchalla   115.139  13073346      Modified the functions format_W2_RW_record and
254                                               format_W2_RO_record for IN and OH .a03.
255   04-Nov-11 sgotlasw	 115.141 13325368       Modified RS record formatting for year 2011.
256   10-Nov-11 sgotlasw	 115.140  13351713    Modified the functions format_W2_RW_record and
257                                               format_W2_RT_record to display
258                                               'A_W2_HEALTH_COVERAGE_PER_GRE_YTD' value.
259   14-Nov-11 sgotlasw   115.143  13355672      Modified RS record formatting for WISCONSIN state.
260                                               RS RECORD, Position 298-337: Blank fill.
261   22-Nov-11 skchalla   115.144  13419483      Modified the format_W2_RW_record for checking the
262  					      															-ve values of W2 Health Coverage.
263   25-Nov-11 sgotlasw   115.145  13409513      Modified RE, RS, RV Record formatting for INDIANA from year 2011.
264   28-Nov-11 skchalla   115.146  13434817      Removed the extra comments to make the package compiled.
265   28-Nov-11 skchalla   115.147  13422328      Modified the format_W2_RW_record for formatting issue of .a02
266   19-Dec-11 sgotlasw   115.148  13515271      Corrected display position of 'W2 Roth 457b'
267   30-Dec-11 sgotlasw   115.149  13449377      Mmodified code to display following new balances for PuertoRico
268                                               'PR W2 Charitable Contributions', 'PR W2 Contr To Save and Double Money'.
269   12-JAN-2012 pkoduri 115.150 13408243        Modified format_W2_RA_record  method
270                                               to handle the PA 1099R following the EFW-2 format.
271   16-NOV-2-12 skchalla 115.151 14799506       EWF2 Changes for 2012
272   06-DEC-2012 pkoduri 115.152 15955687        Corrected the RT record for Puerto reco to show blanks from 220-235
273   27-DEC-2012 pracagra 115.153 16013916       Modified RS Record formatting for INDIANA from year 2012.
274   28-DEC-2012 pracagra 115.154 16005079       Modified RS Record formatting for MISSISSIPPI from year 2012.
275   18-JAN-2013 skchalla 115.155 16173051       Reverting the changes done for the Bug 14799506 for PR.
276   25-FEB-2013 skchalla 115.156 16339837       Modified RA,RE and RS format functions as per the new LA instructions.
277 */
278 
279 -- This function determines the required length for fields
280 -- in various data record. This function is being referenced
281 -- from DAT_VALIDATION function in package pay_us_reporting_utils_pkg
282 --
283 FUNCTION set_req_field_length (p_report_type      IN  varchar2,
284                                p_format           IN  varchar2,
285                                p_report_qualifier IN  varchar2,
286                                p_record_name      IN  varchar2,
287                                p_input_1          IN  varchar2,
288                                p_input_2          IN  varchar2,
289                                p_input_3          IN  varchar2,
290                                p_input_4          IN  varchar2,
291                                p_input_5          IN  varchar2
292                               ) return NUMBER
293 IS
294   l_length    number(10);
295 BEGIN
296        IF p_record_name in ('RU','RT','RF','RCU','RCT','RCF') THEN
297 --{
298           l_length := 15;
299           IF ( (p_record_name = 'RF' ) AND
300                (p_report_qualifier = 'CT') ) THEN
301               l_length := 16;
302           END IF;
303 --}
304        ELSIF p_record_name in ('RS','RO','RW','RCW','RCO') THEN
305 --{
306           l_length := 11;
307           IF ((p_record_name = 'RS') AND
308               (p_input_3 = 'Other State Data')
309              ) THEN
310              l_length := 10;
311              hr_utility.trace('RS. Other State Data.l_length = '||to_char(l_length));
312           ELSIF p_record_name = 'RS' THEN
313 --{
314              IF p_report_qualifier = 'NJ' THEN
315                 IF ((p_input_3 = 'SDI Withheld') OR
316                     (p_input_3 = 'Unemployment Insurance Tax')) THEN
317                    l_length := 5;
318                 ELSIF p_input_3 = 'Deferred Comp' THEN
319                    l_length := 9;
320                 ELSIF p_input_3 = 'MIF' THEN  --  Bug 4014356
321 		   l_length := 3;
322                 END IF;
323              END IF; --NJ
324 --}
325           END IF; --RS Record
326 
327        /* Bug 5640748 */
328 /*
329        ELSIF p_record_name = 'RE' THEN
330           IF p_report_qualifier = 'MD' THEN
331              IF (( p_input_3 = 'Tot Withheld Tax Reported') OR
335                  ( p_input_3 = 'MW508 ER Amt Balance Due') OR
332                  ( p_input_3 = 'SIT Withheld') OR
333                  ( p_input_3 = 'MW508 ER Credits') OR
334                  ( p_input_3 = 'MW508 ER Amt Tax Due') OR
336                  ( p_input_3 = 'MW508 ER Amt Overpayment') OR
337                  ( p_input_3 = 'MW508 ER Amt Credit') OR
338                  ( p_input_3 = 'MW508 ER Amt Refunded') OR
339                  ( p_input_3 = 'State taxable Wages') OR
340                  ( p_input_3 = 'Other State Data')
341                  ) THEN
342                  l_length := 12 ;
343              END IF ; -- p_input_3
344             END IF ; -- MD
345 */
346 --}
347        END IF; -- p_record_name
348 return l_length;
349 END set_req_field_length; -- End of set_req_field_length
350 --
351 
352 PROCEDURE format_w2_contact_prsn_info (
353                 p_report_qualifier         IN  varchar2,
354                 p_record_name              IN  varchar2,
355                 p_validate                 IN  varchar2,
356                 p_exclude_from_output      IN OUT nocopy varchar2,
357                 p_contact_prsn_name        IN OUT nocopy varchar2,
358                 p_contact_prsn_phone       IN OUT nocopy varchar2,
359                 p_contact_prsn_extension   IN OUT nocopy varchar2,
360                 p_contact_prsn_email       IN OUT nocopy varchar2,
361                 p_contact_prsn_fax         IN OUT nocopy varchar2,
362                 p_contact_prsn_first_name  IN OUT nocopy varchar2,
363                 p_contact_prsn_middle_name IN OUT nocopy varchar2,
364                 p_contact_prsn_last_name   IN OUT nocopy varchar2)
365 IS
366 BEGIN
367    IF p_contact_prsn_name is NULL THEN
368 --{
369       p_contact_prsn_name      := lpad(' ',27);
370       p_contact_prsn_phone     := lpad(' ',15);
371       p_contact_prsn_extension := lpad(' ',5);
372       p_contact_prsn_email     := lpad(' ',40);
373       p_contact_prsn_fax       := lpad(' ',10);
374 --}
375    ELSE
376 --{
377       p_contact_prsn_name  :=rpad(substr(nvl(upper(p_contact_prsn_name),' '),1,27),27);
378       p_contact_prsn_email :=rpad(substr(nvl(upper(p_contact_prsn_email),' '),1,40),40);
379       p_contact_prsn_fax :=
380            rpad(substr(nvl(replace(p_contact_prsn_fax,' '),' '),1,10),10);
381 --}
382    END IF;
383 END format_w2_contact_prsn_info;
384 -- End of famatting Contact Person info used for reportin W2
385 --
386 
387 --
388 -- Procedure to Format Employee and Employer Address
389 -- This procedure is being called from function GET_EE_ADDRESS
390 --                                          and GET_ER_ADDRESS
391 --
392 PROCEDURE  format_mmref_address(
393                    p_name                 IN  varchar2,
394                    p_locality_company_id  IN  varchar2,
395                    p_emp_number           IN  varchar2,
396                    p_address_line_1       IN  varchar2,
397                    p_address_line_2       IN  varchar2,
398                    p_address_line_3       IN  varchar2,
399                    p_town_or_city         IN  varchar2,
400                    p_state                IN  varchar2,
401                    p_postal_code          IN  varchar2,
402                    p_country              IN  varchar2,
403                    p_region_1             IN  varchar2,
404                    p_region_2             IN  varchar2,
405                    p_valid_address        IN  varchar2,
406                    p_item_name            IN  varchar2,
407                    p_report_type          IN  varchar2,
408                    p_record_name          IN  varchar2,
409                    p_validate             IN  varchar2,
410                    p_local_code           IN  varchar2,
411                    p_exclude_from_output  OUT nocopy varchar2,
412                    sp_out_1               IN OUT nocopy varchar2,
413                    sp_out_2               IN OUT nocopy varchar2,
414                    sp_out_3               IN OUT nocopy varchar2,
415                    sp_out_4               IN OUT nocopy varchar2,
419                    sp_out_8               IN OUT nocopy varchar2,
416                    sp_out_5               IN OUT nocopy varchar2,
417                    sp_out_6               IN OUT nocopy varchar2,
418                    sp_out_7               IN OUT nocopy varchar2,
420                    sp_out_9               IN OUT nocopy varchar2,
421                    sp_out_10              IN OUT nocopy varchar2 ) IS
422 --
423 TYPE message_columns IS RECORD(
424      p_mesg_description varchar2(100),
425      p_mesg_value varchar2(100),
426      p_output_value varchar2(100));
427 message_parameter_rec message_columns;
428 TYPE message_parameter_record IS TABLE OF message_parameter_rec%TYPE
429 INDEX BY BINARY_INTEGER;
430 message_record message_parameter_record;
431 
432 l_level           varchar2(1);
433 l_mesg_name       varchar2(50);
434 l_name_or_number  varchar2(50);
435 l_err             boolean := FALSE;
436 l_hyphen_position number(10);
437 c_item_name       varchar2(100);
438 l_name            varchar2(100);
439 l_location_addr   varchar2(100);
440 l_delivery_addr   varchar2(100);
441 l_State           varchar2(100);
442 l_city            varchar2(100);
443 
444 BEGIN
445    c_item_name     := p_item_name;
446    l_name          := rpad(upper(substr(nvl(p_name,lpad(' ',57)),1,57)),57);
447    l_location_addr := nvl(rpad(replace(replace(upper(substr(ltrim
448                    (p_address_line_2 ||' '||p_address_line_3), 1, 22))
449                     ,',','_'),''''),22) ,lpad(' ',22));
450    l_delivery_addr := nvl(rpad(replace(replace(upper(substr(ltrim(
451                       p_address_line_1),1,22)),',','_'),''''),22),lpad(' ',22));
452    l_State         := upper(rpad(substr(p_state,1,2),2));
453    l_city          := nvl(upper(rpad(substr(p_town_or_city, 1, 22), 22)),
454                       lpad(' ',22));
455 -- Format for Valid Address
456    IF p_valid_address = 'Y' THEN
457 --{
458       hr_utility.trace('Valid Address found  ');
459       hr_utility.trace('Location address '||l_location_addr);
460       hr_utility.trace('Delivery address '||l_delivery_addr);
461       hr_utility.trace('town_or_city     '||l_city);
462       hr_utility.trace('postal_code      '||p_postal_code);
463       hr_utility.trace('State            '||l_state);
464       hr_utility.trace('p_country        '||p_country);
465 
466       IF c_item_name = 'EE_ADDRESS' THEN
467          l_level := 'A';
468          l_mesg_name := 'PAY_INVALID_EE_FORMAT';
469          l_name_or_number := p_emp_number;
470       ELSIF c_item_name = 'ER_ADDRESS' THEN
471          l_level := 'P';
472          l_mesg_name := 'PAY_INVALID_ER_FORMAT';
473          l_name_or_number := substr(p_name,1,50);
474       END IF;
475 
476       message_record(1).p_mesg_description:='Invalid address.Address Line1 is null';
477       message_record(2).p_mesg_description:='Invalid address.City is null';
478       message_record(3).p_mesg_description:='Invalid address.State is null';
479       message_record(4).p_mesg_description:='Invalid address.Zip is null';
480       message_record(1).p_mesg_value:= l_delivery_addr;
481       message_record(2).p_mesg_value:= l_city;
482       message_record(3).p_mesg_value:= l_state;
486          IF message_record(i).p_mesg_value IS NULL THEN
483       message_record(4).p_mesg_value:= p_postal_code;
484 
485       FOR i in 1..4 LOOP
487             pay_core_utils.push_message(801,l_mesg_name,l_level);
488             pay_core_utils.push_token('record_name', p_record_name);
489             pay_core_utils.push_token('name_or_number', l_name_or_number);
490             pay_core_utils.push_token('description',
491                                     message_record(i).p_mesg_description);
492             l_err:=TRUE;
493           END IF;
494       END LOOP;
495 
496       sp_out_1 := l_location_addr;
497       sp_out_2 := l_delivery_addr;
498       sp_out_3 := l_city;
499 
500       IF (p_country = 'US' OR p_country IS NULL )THEN
501          sp_out_9:= lpad(' ',2);
502          IF p_region_2 IS NOT NULL THEN
503             sp_out_4 := l_state;   --State abbreviation
504             sp_out_7 := lpad(' ',23); --foreign state/province
505          ELSE  --The region is null.
506             sp_out_4 := lpad(' ',2);
507             sp_out_7 := lpad(' ',23);
508          END IF;
509       ELSE  -- country is not US
510          sp_out_4 := lpad(' ',2);
511                                     /* Bug:2133985 foreign state/province*/
512          sp_out_7 := upper(rpad(substr(nvl(p_region_1,' '),1,23),23));
513          sp_out_9:= upper(rpad(substr(p_country,1,2),2));
514       END IF;
515 
516       /* See if the zip code has a zip code extension ie. contains a hyphen */
517 
518       IF p_postal_code IS NOT NULL THEN
519 --{
520          l_hyphen_position := instr(p_postal_code, '-');
521 
522          /* sp_out_5: zip code             Len: 5
523             sp_out_6: zip code extension   Len: 4
524             sp_out_8: foreign postal_code  Len: 15 */
525 
526          IF ( (p_country = 'US') OR ( p_country IS NULL ) ) THEN
527             IF l_hyphen_position = 0 THEN
528                sp_out_5:= upper(rpad(substr(p_postal_code,1,5),5));
529                sp_out_6 := lpad(' ', 4);
530             ELSE
531                sp_out_5:= upper(rpad(substr(substr
532                                (p_postal_code,1,l_hyphen_position-1),1,5),5));
533                sp_out_6 := upper(rpad(substr(
534                                  p_postal_code,l_hyphen_position+1,4),4));
535             END IF;
536             sp_out_8:= lpad(' ',15);
537          ELSE /* ( (l_country = 'US') OR ( l_country IS NULL ) ) */
538             sp_out_5:= lpad(' ',5);                  --zip
539             sp_out_6:= lpad(' ', 4);                 --extension
540             sp_out_8:= upper(rpad(substr(p_postal_code,1,15),15)); --foreign zip
541          END IF;
542 --}
543       ELSE /*  l_postal_code IS NULL.*/
544 --{
545          sp_out_5:= lpad(' ',5);                                   --zip
546          sp_out_8:= lpad(' ',15);                                  -- foreign zip
547          sp_out_6:= lpad(' ', 4);                                  --extension
548          hr_utility.trace('Zip or Postal Code is null');
549 --}
550       END IF;
551       IF ((p_item_name = 'ER_ADDRESS') OR ( p_item_name = 'CR_ADDRESS')) THEN
552          sp_out_10:= p_name;
553          hr_utility.trace('Organization Name = '||p_name);
554          /* Locality_Company_Id */
555          IF ((p_item_name = 'ER_ADDRESS') and (p_local_code = 'PHILA')) THEN
556             sp_out_8:= lpad(NVL(p_locality_company_id,' '),15);
557          END IF;
558       ELSIF p_item_name = 'EE_ADDRESS' THEN
559          sp_out_10:= pay_us_reporting_utils_pkg.Character_check(p_emp_number);
560       END IF;
561 --}
562 --
563 -- when address is Invalid
564 --
565    ELSE
566 --{
567       IF p_item_name IN ('EE_ADDRESS',
568                          'ER_ADDRESS',
569                          'CR_ADDRESS') THEN
570          sp_out_1:=lpad(' ',22);
571          sp_out_2:=lpad(' ',22);
572          sp_out_3:=lpad(' ',22);
573          sp_out_4:=lpad(' ',2);
574          sp_out_5:=lpad(' ',5);
575          sp_out_6:=lpad(' ',9);
576          sp_out_7:=lpad(' ',23);
577          sp_out_8:=lpad(' ',15);
578          sp_out_9:=lpad(' ',2);
579          sp_out_10:=lpad(' ',57);
580       END IF;
581       IF ( (p_item_name = 'ER_ADDRESS')OR
582            (p_item_name = 'EE_ADDRESS')
583          ) THEN
584          l_err :=TRUE;
585       END IF;
586 --}
587    END IF;  --p_valid_address
588    hr_utility.trace('location address       '||sp_out_1);
589    hr_utility.trace('delivery address       '||sp_out_2);
590    hr_utility.trace('City                   '||sp_out_3);
591    hr_utility.trace('State                  '||sp_out_4);
592    hr_utility.trace('Zip                    '||sp_out_5);
593    hr_utility.trace('Zip Code Extension     '||sp_out_6);
594    hr_utility.trace('Foreign State/Province '||sp_out_7);
595    hr_utility.trace('Foreign Zip            '||sp_out_8);
596    hr_utility.trace('Country                '||sp_out_9);
597    IF (p_item_name = 'ER_ADDRESS') THEN
598       hr_utility.trace('Organization Name   '||sp_out_10);
599    ELSE
600       hr_utility.trace('Employee Number     '||sp_out_10);
601    END IF;
602 --
603 -- Check to include or exclude record on the basis of validity of address
604 --
605    IF p_validate = 'Y' THEN
606       IF l_err THEN
607          p_exclude_from_output := 'Y';
608          hr_utility.trace('p_validate is Y .error '||p_exclude_from_output);
609       END IF;
610    END IF;
611    IF p_exclude_from_output IS NULL THEN
612       p_exclude_from_output := 'N';
613    END IF;
614 END format_mmref_address;  --End of Procedure Validate_address
615 
619                    p_name                 IN  varchar2,
616 --Overloaded format_mmref_address procedure for Bug#9356178
617 
618 PROCEDURE  format_mmref_address(
620                    p_locality_company_id  IN  varchar2,
621                    p_emp_number           IN  varchar2,
622                    p_address_line_1       IN  varchar2,
623                    p_address_line_2       IN  varchar2,
624                    p_address_line_3       IN  varchar2,
625                    p_town_or_city         IN  varchar2,
626                    p_state                IN  varchar2,
627                    p_postal_code          IN  varchar2,
628                    p_country              IN  varchar2,
629                    p_region_1             IN  varchar2,
630                    p_region_2             IN  varchar2,
631 		   p_phone_number         IN  varchar2,
632                    p_valid_address        IN  varchar2,
633                    p_item_name            IN  varchar2,
634                    p_report_type          IN  varchar2,
635                    p_record_name          IN  varchar2,
636                    p_validate             IN  varchar2,
637                    p_local_code           IN  varchar2,
638                    p_exclude_from_output  OUT nocopy varchar2,
639                    sp_out_1               IN OUT nocopy varchar2,
640                    sp_out_2               IN OUT nocopy varchar2,
641                    sp_out_3               IN OUT nocopy varchar2,
642                    sp_out_4               IN OUT nocopy varchar2,
643                    sp_out_5               IN OUT nocopy varchar2,
644                    sp_out_6               IN OUT nocopy varchar2,
645                    sp_out_7               IN OUT nocopy varchar2,
646                    sp_out_8               IN OUT nocopy varchar2,
647                    sp_out_9               IN OUT nocopy varchar2,
648                    sp_out_10              IN OUT nocopy varchar2 ) IS
649 --
650 TYPE message_columns IS RECORD(
651      p_mesg_description varchar2(100),
652      p_mesg_value varchar2(100),
653      p_output_value varchar2(100));
654 message_parameter_rec message_columns;
655 TYPE message_parameter_record IS TABLE OF message_parameter_rec%TYPE
656 INDEX BY BINARY_INTEGER;
657 message_record message_parameter_record;
658 
659 l_level           varchar2(1);
660 l_mesg_name       varchar2(50);
661 l_name_or_number  varchar2(50);
662 l_err             boolean := FALSE;
663 l_hyphen_position number(10);
664 c_item_name       varchar2(100);
665 l_name            varchar2(100);
666 l_location_addr   varchar2(100);
667 l_delivery_addr   varchar2(100);
668 l_State           varchar2(100);
669 l_city            varchar2(100);
670 l_phone_number    varchar2(100);
671 
672 BEGIN
673    c_item_name     := p_item_name;
674    l_name          := rpad(upper(substr(nvl(p_name,lpad(' ',57)),1,57)),57);
675    l_location_addr := nvl(rpad(replace(replace(upper(substr(ltrim
676                    (p_address_line_2 ||' '||p_address_line_3), 1, 22))
677                     ,',','_'),''''),22) ,lpad(' ',22));
678    l_delivery_addr := nvl(rpad(replace(replace(upper(substr(ltrim(
679                       p_address_line_1),1,22)),',','_'),''''),22),lpad(' ',22));
680    l_State         := upper(rpad(substr(p_state,1,2),2));
681    l_city          := nvl(upper(rpad(substr(p_town_or_city, 1, 22), 22)),
682                       lpad(' ',22));
683 -- Format for Valid Address
684    IF p_valid_address = 'Y' THEN
685 --{
686       hr_utility.trace('Valid Address found  ');
687       hr_utility.trace('Location address '||l_location_addr);
688       hr_utility.trace('Delivery address '||l_delivery_addr);
689       hr_utility.trace('town_or_city     '||l_city);
690       hr_utility.trace('postal_code      '||p_postal_code);
691       hr_utility.trace('State            '||l_state);
692       hr_utility.trace('p_country        '||p_country);
693       hr_utility.trace('phone_number     '||p_phone_number);
694 
695       IF c_item_name = 'EE_ADDRESS' THEN
696          l_level := 'A';
697          l_mesg_name := 'PAY_INVALID_EE_FORMAT';
698          l_name_or_number := p_emp_number;
699       ELSIF c_item_name = 'ER_ADDRESS' THEN
700          l_level := 'P';
701          l_mesg_name := 'PAY_INVALID_ER_FORMAT';
702          l_name_or_number := substr(p_name,1,50);
703       END IF;
704 
705       message_record(1).p_mesg_description:='Invalid address.Address Line1 is null';
706       message_record(2).p_mesg_description:='Invalid address.City is null';
707       message_record(3).p_mesg_description:='Invalid address.State is null';
708       message_record(4).p_mesg_description:='Invalid address.Zip is null';
709       message_record(1).p_mesg_value:= l_delivery_addr;
710       message_record(2).p_mesg_value:= l_city;
711       message_record(3).p_mesg_value:= l_state;
712       message_record(4).p_mesg_value:= p_postal_code;
713 
714       FOR i in 1..4 LOOP
715          IF message_record(i).p_mesg_value IS NULL THEN
716             pay_core_utils.push_message(801,l_mesg_name,l_level);
717             pay_core_utils.push_token('record_name', p_record_name);
718             pay_core_utils.push_token('name_or_number', l_name_or_number);
719             pay_core_utils.push_token('description',
720                                     message_record(i).p_mesg_description);
721             l_err:=TRUE;
722           END IF;
723       END LOOP;
724 
725       sp_out_1 := l_location_addr;
726       sp_out_2 := l_delivery_addr;
727       sp_out_3 := l_city;
728 
729       IF (p_country = 'US' OR p_country IS NULL )THEN
730          sp_out_9:= lpad(' ',2);
731          IF p_region_2 IS NOT NULL THEN
732             sp_out_4 := l_state;   --State abbreviation
736             sp_out_7 := lpad(' ',23);
733             sp_out_7 := lpad(' ',23); --foreign state/province
734          ELSE  --The region is null.
735             sp_out_4 := lpad(' ',2);
737          END IF;
738       ELSE  -- country is not US
739          sp_out_4 := lpad(' ',2);
740                                     /* Bug:2133985 foreign state/province*/
741          sp_out_7 := upper(rpad(substr(nvl(p_region_1,' '),1,23),23));
742          sp_out_9:= upper(rpad(substr(p_country,1,2),2));
743       END IF;
744 
745       /* See if the zip code has a zip code extension ie. contains a hyphen */
746 
747       IF p_postal_code IS NOT NULL THEN
748 --{
749          l_hyphen_position := instr(p_postal_code, '-');
750 
751          /* sp_out_5: zip code             Len: 5
752             sp_out_6: zip code extension   Len: 4
753             sp_out_8: foreign postal_code  Len: 15 */
754 
755          IF ( (p_country = 'US') OR ( p_country IS NULL ) ) THEN
756             IF l_hyphen_position = 0 THEN
757                sp_out_5:= upper(rpad(substr(p_postal_code,1,5),5));
758                sp_out_6 := lpad(' ', 4);
759             ELSE
760                sp_out_5:= upper(rpad(substr(substr
761                                (p_postal_code,1,l_hyphen_position-1),1,5),5));
762                sp_out_6 := upper(rpad(substr(
763                                  p_postal_code,l_hyphen_position+1,4),4));
764             END IF;
765             sp_out_8:= lpad(' ',15);
766          ELSE /* ( (l_country = 'US') OR ( l_country IS NULL ) ) */
767             sp_out_5:= lpad(' ',5);                  --zip
768             sp_out_6:= lpad(' ', 4);                 --extension
769             sp_out_8:= upper(rpad(substr(p_postal_code,1,15),15)); --foreign zip
770          END IF;
771 --}
772       ELSE /*  l_postal_code IS NULL.*/
773 --{
774          sp_out_5:= lpad(' ',5);                                   --zip
775          sp_out_8:= lpad(' ',15);                                  -- foreign zip
776          sp_out_6:= lpad(' ', 4);                                  --extension
777 
778          hr_utility.trace('Zip or Postal Code is null');
779 --}
780       END IF;
781       IF ((p_item_name = 'ER_ADDRESS') OR ( p_item_name = 'CR_ADDRESS')) THEN
782          sp_out_10:= p_name;
783          hr_utility.trace('Organization Name = '||p_name);
784          /* Locality_Company_Id */
785          IF ((p_item_name = 'ER_ADDRESS') and (p_local_code = 'PHILA')) THEN
786             sp_out_8:= lpad(NVL(p_locality_company_id,' '),15);
787          END IF;
788       ELSIF p_item_name = 'EE_ADDRESS' THEN
789          sp_out_10:= pay_us_reporting_utils_pkg.Character_check(p_emp_number);
790       END IF;
791 --}
792 --
793 -- when address is Invalid
794 --
795    ELSE
796 --{
797       IF p_item_name IN ('EE_ADDRESS',
798                          'ER_ADDRESS',
799                          'CR_ADDRESS') THEN
800          sp_out_1:=lpad(' ',22);
801          sp_out_2:=lpad(' ',22);
802          sp_out_3:=lpad(' ',22);
803          sp_out_4:=lpad(' ',2);
804          sp_out_5:=lpad(' ',5);
805          sp_out_6:=lpad(' ',9);
806          sp_out_7:=lpad(' ',23);
807          sp_out_8:=lpad(' ',15);
808          sp_out_9:=lpad(' ',2);
809          sp_out_10:=lpad(' ',57);
810       END IF;
811       IF ( (p_item_name = 'ER_ADDRESS')OR
812            (p_item_name = 'EE_ADDRESS')
813          ) THEN
814          l_err :=TRUE;
815       END IF;
816 --}
817    END IF;  --p_valid_address
818 
819    l_phone_number := p_phone_number;
820 
821    l_phone_number:= replace(p_phone_number,'-',''); /*To remove the '-' entered in Phone Number*/
822 
823    l_phone_number:= replace(pay_us_reporting_utils_pkg.Character_check(l_phone_number),' ',''); /*To remove the Special Characters*/
824 
825    sp_out_6:= sp_out_6||'|'||nvl(l_phone_number,'0000000000'); --Phone Number is tagged to ZipCode extension to avoid new variable creation
826                                                                --It is done only for FLSQWL usage and will be removed from this
827                                                                --variable once value is passed to FL_XML_EMPLOYER_SQWL formula
828                                                                --The zip code extension and phone number are separeted by Pipe | symbol
829 
830    hr_utility.trace('location address       '||sp_out_1);
831    hr_utility.trace('delivery address       '||sp_out_2);
832    hr_utility.trace('City                   '||sp_out_3);
833    hr_utility.trace('State                  '||sp_out_4);
834    hr_utility.trace('Zip                    '||sp_out_5);
835    hr_utility.trace('Zip Code Extension     '||substr(sp_out_6,1,4));
836    hr_utility.trace('Phone Number           '||substr(sp_out_6,5));
837    hr_utility.trace('Foreign State/Province '||sp_out_7);
838    hr_utility.trace('Foreign Zip            '||sp_out_8);
839    hr_utility.trace('Country                '||sp_out_9);
840    IF (p_item_name = 'ER_ADDRESS') THEN
841       hr_utility.trace('Organization Name   '||sp_out_10);
842    ELSE
843       hr_utility.trace('Employee Number     '||sp_out_10);
844    END IF;
845 --
846 -- Check to include or exclude record on the basis of validity of address
847 --
848    IF p_validate = 'Y' THEN
849       IF l_err THEN
850          p_exclude_from_output := 'Y';
851          hr_utility.trace('p_validate is Y .error '||p_exclude_from_output);
852       END IF;
853    END IF;
854    IF p_exclude_from_output IS NULL THEN
855       p_exclude_from_output := 'N';
856    END IF;
860 --
857 END format_mmref_address;  --End of Overloaded format_mmref_address
858 
859 -- Formatting RA record for W2 reporting
861 /*--------------------- Parameter mapping Starts. ----------------------
862   Record Identifier,                                   --> p_input_1
863   Submitter''s Employer Identification Number (EIN),   -->   p_input_2
864   Personal Identification Number (PIN)                 -->   p_input_3,
865   Resub Indicator                                      -->   p_input_4,
866 -- This is  fix for bug # 2510920 to rename TLCN to WFID
867   Resub WFID                                           -->   p_input_5,
868   Software Code                                        -->   p_input_6,
869   Company Name                                         -->   p_input_7,
870   Location Address                                     -->   p_input_8,
871   Delivery Address                                     -->   p_input_9,
872   City                                                 -->   p_input_10,
873   State Abbreviation                                   -->   p_input_11,
874   Zip Code                                             -->   p_input_12,
875   Zip Code Extension                                   -->   p_input_13,
876   Foreign State / Province                             -->   p_input_14,
877   Foreign Postal Code                                  -->   p_input_15,
878   Country Code                                         -->   p_input_16,
879   Submitter Name                                       -->   p_input_17,
880   Location Address                                     -->   p_input_18,
881   Delivery Address                                     -->   p_input_19,
882   City                                                 -->   p_input_20,
883   State Abbreviation                                   -->   p_input_21,
884   Zip Code                                             -->   p_input_22,
885   Zip Code Extension                                   -->   p_input_23,
886   Foreign State / Province                             -->   p_input_24,
887   Foreing Postal Code                                  -->   p_input_25,
888   Country Code                                         -->   p_input_26,
889   Contact Name                                         -->   p_input_27,
890   Contact Phone Number                                 -->   p_input_28,
891   Contact Phone Extension                              -->   p_input_29,
892   Contact E-Mail                                       -->   p_input_30,
893   Blank,Contact FAX                                    -->   p_input_31,
894   Preferred Method Of Problem Notification Code        -->   p_input_32,
895   Preparer Code                                        -->   p_input_33,
896   ------------------------ Parameter mapping Ends. -------------------------
897 */
898 
899 FUNCTION format_W2_RA_record(
900                    p_effective_date       IN  varchar2,
901                    p_report_type          IN  varchar2,
902                    p_format               IN  varchar2,
903                    p_report_qualifier     IN  varchar2,
904                    p_record_name          IN  varchar2,
905                    p_input_1              IN  varchar2,
906                    p_input_2              IN  varchar2,
907                    p_input_3              IN  varchar2,
908                    p_input_4              IN  varchar2,
909                    p_input_5              IN  varchar2,
910                    p_input_6              IN  varchar2,
911                    p_input_7              IN  varchar2,
912                    p_input_8              IN  varchar2,
913                    p_input_9              IN  varchar2,
914                    p_input_10             IN  varchar2,
915                    p_input_11             IN  varchar2,
916                    p_input_12             IN  varchar2,
917                    p_input_13             IN  varchar2,
918                    p_input_14             IN  varchar2,
919                    p_input_15             IN  varchar2,
920                    p_input_16             IN  varchar2,
921                    p_input_17             IN  varchar2,
922                    p_input_18             IN  varchar2,
923                    p_input_19             IN  varchar2,
924                    p_input_20             IN  varchar2,
925                    p_input_21             IN  varchar2,
926                    p_input_22             IN  varchar2,
927                    p_input_23             IN  varchar2,
928                    p_input_24             IN  varchar2,
929                    p_input_25             IN  varchar2,
930                    p_input_26             IN  varchar2,
931                    p_input_27             IN  varchar2,
932                    p_input_28             IN  varchar2,
933                    p_input_29             IN  varchar2,
934                    p_input_30             IN  varchar2,
935                    p_input_31             IN  varchar2,
936                    p_input_32             IN  varchar2,
937                    p_input_33             IN  varchar2,
938                    p_input_34             IN  varchar2,
939                    p_input_35             IN  varchar2,
940                    p_input_36             IN  varchar2,
941                    p_input_37             IN  varchar2,
942                    p_input_38             IN  varchar2,
943                    p_input_39             IN  varchar2,
944                    p_input_40             IN  varchar2,
945                    p_validate             IN  varchar2,
946                    p_exclude_from_output  OUT nocopy varchar2,
947                    sp_out_1               OUT nocopy varchar2,
948                    sp_out_2               OUT nocopy varchar2,
949                    sp_out_3               OUT nocopy varchar2,
950                    sp_out_4               OUT nocopy varchar2,
951                    sp_out_5               OUT nocopy varchar2,
955 IS
952                    ret_str_len            OUT nocopy number,
953                    p_error                OUT nocopy boolean
954                  ) RETURN VARCHAR2
956 l_agent_indicator          varchar2(1);
957 l_emp_ein                  varchar2(100);
958 l_agent_ein                varchar2(100);
959 l_other_ein                varchar2(100);
960 l_term_indicator           varchar2(1);
961 l_exclude_from_output_chk  boolean;
962 l_input_8                  varchar2(50);
963 l_bus_tax_acct_number      varchar2(50);
964 l_rep_qtr                  varchar2(300);
965 l_rep_prd                  varchar2(300);
966 l_end_of_rec               varchar2(20);
967 return_value               varchar2(32767);
968 l_pin                      varchar2(50);
969 l_pblm_code                varchar2(1);
970 l_preparer_code            varchar2(1);
971 p_end_of_rec               varchar2(20) :=
972                            fnd_global.local_chr(13)||fnd_global.local_chr(10);
973 r_input_1                  varchar2(300);
974 r_input_2                  varchar2(300);
975 r_input_3                  varchar2(300);
976 r_input_4                  varchar2(300);
977 r_input_5                  varchar2(300);
978 r_input_6                  varchar2(300);
979 r_input_7                  varchar2(300);
980 r_input_8                  varchar2(300);
981 r_input_9                  varchar2(300);
982 r_input_10                 varchar2(300);
983 r_input_11                 varchar2(300);
984 r_input_12                 varchar2(300);
985 r_input_13                 varchar2(300);
986 r_input_14                 varchar2(300);
987 r_input_15                 varchar2(300);
988 r_input_16                 varchar2(300);
989 r_input_17                 varchar2(300);
990 r_input_18                 varchar2(300);
991 r_input_19                 varchar2(300);
992 r_input_20                 varchar2(300);
993 r_input_21                 varchar2(300);
994 r_input_22                 varchar2(300);
995 r_input_23                 varchar2(300);
996 r_input_24                 varchar2(300);
997 r_input_25                 varchar2(300);
998 r_input_26                 varchar2(300);
999 r_input_27                 varchar2(300);
1000 r_input_28                 varchar2(300);
1001 r_input_29                 varchar2(300);
1002 r_input_30                 varchar2(300);
1003 r_input_31                 varchar2(300);
1004 r_input_32                 varchar2(300);
1005 r_input_33                 varchar2(300);
1006 r_input_34                 varchar2(300);
1007 r_input_35                 varchar2(300);
1008 r_input_36                 varchar2(300);
1009 r_input_37                 varchar2(300);
1010 r_input_38                 varchar2(300);
1011 r_input_39                 varchar2(300);
1012 
1013 BEGIN
1014   hr_utility.trace('RA Record Formatting started ');
1015   hr_utility.trace(' Format_W2_RA_Record Begin for Company '|| p_input_7);
1016 -- Initializing local variables with parameter value
1017 --{
1018    r_input_2 := p_input_2;
1019    r_input_3 := p_input_3;
1020    r_input_4 := p_input_4;
1021    r_input_5 := p_input_5;
1022    r_input_6 := p_input_6;
1023    r_input_7 := p_input_7;
1024    r_input_8 := p_input_8;
1025    r_input_9 := p_input_9;
1026    r_input_10 := p_input_10;
1027    r_input_11 := p_input_11;
1028    r_input_12 := p_input_12;
1029    r_input_13 := p_input_13;
1030    r_input_14 := p_input_14;
1031    r_input_15 := p_input_15;
1032    r_input_16 := p_input_16;
1033    r_input_17 := p_input_17;
1034    r_input_18 := p_input_18;
1035    r_input_19 := p_input_19;
1036    r_input_20 := p_input_20;
1037    r_input_21 := p_input_21;
1038    r_input_22 := p_input_22;
1039    r_input_23 := p_input_23;
1040    r_input_24 := p_input_24;
1041    r_input_25 := p_input_25;
1042    r_input_26 := p_input_26;
1043    r_input_27 := p_input_27;
1044    r_input_28 := p_input_28;
1045    r_input_29 := p_input_29;
1046    r_input_30 := p_input_30;
1047    r_input_31 := p_input_31;
1048    r_input_32 := p_input_32;
1049    r_input_33 := p_input_33;
1050    r_input_34 := p_input_34;
1051    r_input_35 := p_input_35;
1052    r_input_36 := p_input_36;
1053    r_input_37 := p_input_37;
1054    r_input_38 := p_input_38;
1055    r_input_39 := p_input_39;
1056 --}
1057 -- Validation Starts
1058 -- EIN Validation
1059    IF p_input_40 = 'FLAT' THEN
1060       l_emp_ein :=
1061           pay_us_reporting_utils_pkg.data_validation(p_effective_date,
1062                                                      p_report_type,
1063                                                      p_format,
1064                                                      p_report_qualifier,
1065                                                      p_record_name,
1066                                                      'EIN',
1067                                                      p_input_2,
1068                                                      'Submitters EIN',
1069                                                      p_input_17,
1070                                                      null,
1071                                                      p_validate,
1072                                                      p_exclude_from_output,
1073                                                      sp_out_1,
1074                                                      sp_out_2);
1075 
1076       IF p_exclude_from_output = 'Y' THEN
1077          l_exclude_from_output_chk := TRUE;
1078       END IF;
1079       hr_utility.trace('Valid EIN '||l_emp_ein);
1080 -- Validation Ends
1081 --
1082 -- Formatiing Starts
1083 
1084       /* Pos:12 - 216 blank for PA. */
1085       IF (p_report_qualifier = 'PA')
1089          l_pin := lpad(' ',17);
1086          /* OR (p_report_qualifier = 'LA')) Modified for the bug 16339837 */
1087       THEN
1088 --{
1090          r_input_4 := lpad(' ',1);
1091          r_input_5 := lpad(' ',6);
1092          r_input_6 := lpad(' ',2);
1093          r_input_7 := lpad(' ',57);
1094          r_input_8 := lpad(' ',22);
1095          r_input_9 := lpad(' ',22);
1096          r_input_10 := lpad(' ',22);
1097          r_input_11 := lpad(' ',2);
1098          r_input_12 := lpad(' ',5);
1099          r_input_13 := lpad(' ',4);
1100          r_input_14 := lpad(' ',23);
1101          r_input_15 := lpad(' ',15);
1102          r_input_16 := lpad(' ',2);
1103          r_input_24 := lpad(' ',23);
1104          r_input_25 := lpad(' ',15);
1105          r_input_26 := lpad(' ',2);
1106 --}
1107       ELSIF p_report_qualifier = 'MA' THEN
1108 --{
1109          l_pin := lpad(' ',17);
1110          r_input_5 := lpad(' ',6);
1111          r_input_6 := lpad(' ',2);
1112          r_input_14 := lpad(' ',23);
1113          r_input_15 := lpad(' ',15);
1114          r_input_16 := lpad(' ',2);
1115          r_input_24 := lpad(' ',23);
1116          r_input_25 := lpad(' ',15);
1117          r_input_26 := lpad(' ',2);
1118 --}
1119       ELSIF p_report_qualifier = 'CT' THEN
1120 --{
1121          l_pin := lpad(' ',17);
1122          r_input_5 := lpad(' ',6);
1123          r_input_6 := lpad(' ',2);
1124          r_input_4 := lpad(' ',1);/* Bug: 2145032 */
1125 --}
1126           ELSIF --(( p_report_qualifier = 'PA_PHILA') OR
1127             -- ( p_report_qualifier = 'MO_STLOU')) THEN
1128             p_report_qualifier = 'MO_STLOU' THEN   /* 7579598 */
1129 
1130          l_pin := lpad(' ',17) ;  -- Bug 4391218
1131 
1132 /* 13408243 - Start */
1133       ELSIF p_report_qualifier = 'PA_1099R' THEN
1134 --{
1135          l_pin := rpad(substr(nvl(p_input_3,' '),1,8),17);
1136 --}
1137 /* 13408243 - End */
1138 
1139       ELSE
1140 --{
1141          /* Bug 4391218 Pos: 12 - 19 (8 characters) */
1142          l_pin := rpad(substr(nvl(p_input_3,' '),1,8),17);
1143          hr_utility.trace(' l_pin = '||l_pin);
1144 --}
1145       END IF;
1146 /*6330489*/
1147       --  IF p_report_qualifier not in ('MO_KNSAS','MO_STLOU','OH_CCAAA','OH_DAYTO','OH_RTCCA','PA_PHILA')
1148     IF p_report_qualifier not in ('MO_KNSAS','MO_STLOU','OH_CCAAA','OH_DAYTO','OH_RTCCA') /*7579598*/
1149       THEN
1150       l_pin := rpad((rpad(substr(nvl(p_input_3 ,' '),1,8),8,' ') || '1334'),17);
1151       END IF ;
1152 
1153       IF p_report_qualifier = 'IN' THEN
1154          /* 6684920 */
1155          r_input_14 := lpad(' ',23);
1156          r_input_15 := lpad(' ',15);
1157          r_input_16 := lpad(' ',2);
1158    /*      r_input_17 := lpad(' ',57);
1159          r_input_18 := lpad(' ',22);
1160          r_input_19 := lpad(' ',22);
1161          r_input_20 := lpad(' ',22);
1162          r_input_21 := lpad(' ',2);
1163          r_input_22 := lpad(' ',5);
1164          r_input_23 := lpad(' ',5);
1165          r_input_24 := lpad(' ',23);
1166          r_input_25 := lpad(' ',15);
1167          r_input_26 := lpad(' ',2);
1168          r_input_27 := lpad(' ',27);
1169          r_input_28 := lpad(' ',15);
1170          r_input_29 := lpad(' ',5);
1171          r_input_30 := lpad(' ',40);
1172          r_input_31 := lpad(' ',10);
1173          r_input_32 := lpad(' ',1);
1174          r_input_33 := lpad(' ',1);  */
1175          /* 7569563 */
1176       END IF;
1177       --Commented the below code for the Bug 14799506, RA 499 is no longer required.
1178 
1179       /* Checking for preferred method of problem notification code which is
1180          1=email, 2=postal service
1181       IF ((p_input_32 = '1' ) OR
1182           (p_input_32 = '2' )
1183          )
1184       THEN
1185          hr_utility.trace('Preferred method of code is correct. it is '||p_input_32);
1186          l_pblm_code:= p_input_32;
1187       ELSE
1188          hr_utility.trace('Preferred method of code is incorrect. it is '||p_input_32);
1189          l_pblm_code:= lpad('2',1);
1190       END IF;
1191       -- Bug # 2682428
1192       --
1193       -- commented to fix bug # 4016439
1194       /*IF (p_report_qualifier = 'OH_DAYTO') THEN
1195          l_pblm_code:= '2';
1196       END IF;/
1197       -- Bug # 2736928
1198       --
1199       IF (p_report_qualifier = 'PR') THEN
1200          l_pblm_code:= '2';
1201       END IF;
1202       */
1203 
1204       --Changes for the Bug 16173051
1205       IF (p_report_qualifier = 'PR') THEN
1206          l_pblm_code:= '2';
1207       ELSE
1208          l_pblm_code := ' '; --RA 499 is blank filled
1209       END IF;
1210 
1211       If( (p_input_33 = 'A' )OR
1212           (p_input_33 = 'S' )OR
1213           (p_input_33 = 'L' )OR
1214           (p_input_33 = 'P' )OR
1215           (p_input_33 = 'O' ))   THEN
1216         l_preparer_code:= p_input_33;
1217         hr_utility.trace('l_preparer_code  is correct. it is '||p_input_33);
1218       ELSE
1219         l_preparer_code:= lpad(' ',1);
1220         hr_utility.trace('l_preparer_code  is incorrect. it is '||p_input_33);
1221       END IF;
1222 
1223        /* fix for bug # 2680189 */
1224     /*  IF (p_report_qualifier = 'PA_PHILA') THEN
1225       --   r_input_3  := ' ';
1226          r_input_4  := ' ';
1227          r_input_5  := ' ';
1228          r_input_6  := ' ';
1229          r_input_7  := ' ';
1230       END IF; */
1231 
1232       /* Fix for Bug # 2680070 and 2680189 */
1233    --   IF ((p_report_qualifier = 'MO_STLOU') OR
1234     --      (p_report_qualifier = 'PA_PHILA')) THEN
1238          r_input_9  := ' ';
1235     IF ((p_report_qualifier = 'MO_STLOU')) THEN
1236 --{
1237          r_input_8  := ' ';
1239          r_input_10 := ' ';
1240          r_input_11 := ' ';
1241          r_input_12 := ' ';
1242          r_input_13 := ' ';
1243          r_input_14 := ' ';
1244          r_input_15 := ' ';
1245          r_input_16 := ' ';
1246 --}
1247       END IF; /*7579598*/
1248 
1249       /* Fix for Bug # 2680070  and #3130999 and # 3292989*/
1250       IF (p_report_qualifier = 'MO_STLOU')  THEN
1251          l_pin      := lpad(' ',17);
1252 	 r_input_4  := ' ';
1253 	 r_input_5  := ' ';
1254 	 r_input_6  := ' ';
1255          r_input_18 := ' ';
1256          r_input_19 := ' ';
1257          r_input_20 := ' ';
1258          r_input_21 := ' ';
1259          r_input_22 := ' ';
1260          r_input_23 := ' ';
1261          r_input_24 := ' ';
1262          r_input_25 := ' ';
1263          r_input_26 := ' ';
1264          r_input_27 := ' ';
1265          r_input_28 := ' ';
1266          r_input_29 := ' ';
1267          r_input_30 := ' ';
1268          r_input_31 := ' ';
1269       END IF;
1270 
1271       /*Commented for the Bug 16339837
1272       -- Bug # 3293083
1273       IF (p_report_qualifier = 'LA') THEN
1274          r_input_18 := ' ';
1275          r_input_24 := ' ';
1276          r_input_25 := ' ';
1277          r_input_26 := ' ';
1278          r_input_27 := ' ';
1279          r_input_28 := ' ';
1280          r_input_29 := ' ';
1281          r_input_30 := ' ';
1282          r_input_31 := ' ';
1283       END IF;
1284       */
1285       /* Fix for Bug # 2680070 */
1286       IF p_report_qualifier = 'MO_STLOU' THEN
1287          r_input_17 := ' ';
1288       END IF;
1289 
1290       IF ((p_report_qualifier = 'MA') OR
1291           (p_report_qualifier = 'PA') OR
1292        --   (p_report_qualifier = 'PA_PHILA') OR      -- fix for bug # 2680189
1293           (p_report_qualifier = 'CT') OR
1294           --(p_report_qualifier = 'LA') OR Commented for the Bug 16339837            -- fix for bug # 3109990
1295           (p_report_qualifier = 'MO_STLOU')) THEN -- OR /* 7569563 */
1296         --  (p_report_qualifier = 'IN')) THEN /* 6684920 */
1297 --{
1298          l_pblm_code     := lpad(' ',1);
1299          l_preparer_code := lpad(' ',1);
1300 --}
1301       END IF;
1302 
1303       IF p_report_qualifier = 'MD' then /* 7572352 */
1304       r_input_4 := lpad('0',1);
1305       r_input_5 := lpad(' ',6);
1306       END IF ;
1307 
1308 -- Formatiing Ends
1309 --
1310 
1311 -- RA Record of Flat Type
1312 --
1313       return_value:='RA'
1314                     ||l_emp_ein||l_pin
1315                     ||rpad(substr(nvl(r_input_4,'0'),1,1),1)
1316                     ||rpad(substr(nvl(r_input_5,' '),1,6),6)
1317                     ||rpad(substr(nvl(r_input_6,' '),1,2),2)
1318                     ||rpad(substr(nvl(r_input_7,' '),1,57),57)
1319                     ||rpad(substr(nvl(r_input_8,' '),1,22),22)
1320                     ||rpad(substr(nvl(r_input_9,' '),1,22),22)
1321                     ||rpad(substr(nvl(r_input_10,' '),1,22),22)
1322                     ||rpad(substr(nvl(r_input_11,' '),1,2),2)
1323                     ||rpad(substr(nvl(r_input_12,' '),1,5),5)
1324                     ||rpad(substr(nvl(r_input_13,' '),1,4),9)
1325                     ||rpad(substr(nvl(r_input_14,' '),1,23),23)
1326                     ||rpad(substr(nvl(r_input_15,' '),1,15),15)
1327                     ||rpad(substr(nvl(r_input_16,' '),1,2),2)
1328                     ||rpad(substr(nvl(upper(r_input_17),' '),1,57),57)
1329                     ||rpad(substr(nvl(r_input_18,' '),1,22),22)
1330                     ||rpad(substr(nvl(r_input_19,' '),1,22),22)
1331                     ||rpad(substr(nvl(r_input_20,' '),1,22),22)
1332                     ||rpad(substr(nvl(r_input_21,' '),1,2),2)
1333                     ||rpad(substr(nvl(r_input_22,' '),1,5),5)
1334                     ||rpad(substr(nvl(r_input_23,' '),1,4),9)
1335                     ||rpad(substr(nvl(r_input_24,' '),1,23),23)
1336                     ||rpad(substr(nvl(r_input_25,' '),1,15),15)
1337                     ||rpad(substr(nvl(r_input_26,' '),1,2),2)
1338                     ||rpad(substr(nvl(r_input_27,' '),1,27),27)
1339                     ||rpad(substr(nvl(r_input_28,' '),1,15),15)
1340                     ||rpad(substr(nvl(r_input_29,' '),1,5),8)
1341                     ||rpad(substr(nvl(r_input_30,' '),1,43),43)
1342                     ||rpad(substr(nvl(r_input_31,' '),1,10),10)
1343                     ||l_pblm_code
1344                     ||l_preparer_code
1345                     ||lpad(' ',12)
1346                     ||l_end_of_rec ;
1347 --
1348          hr_utility.trace('RA Record of FLAT Type  -----');
1349          ret_str_len:=length(return_value);
1350 
1351    ELSIF p_input_40 = 'CSV' THEN
1352       hr_utility.trace('RA Record  of CSV Type formatting Starts ----');
1353       return_value:='RA'||','||p_input_2||','||p_input_3||','||lpad(' ',9) -- Bug#  4391218
1354                         ||','||rpad(substr(nvl(p_input_4,'0'),1,1),1)
1355                         ||','||rpad(substr(nvl(p_input_5,' '),1,6),6)
1356                         ||','||rpad(substr(nvl(p_input_6,' '),1,2),2)
1357                         ||','||rpad(substr(nvl(p_input_7,' '),1,57),57)
1358                         ||','||rpad(substr(nvl(p_input_8,' '),1,22),22)
1359                         ||','||rpad(substr(nvl(p_input_9,' '),1,22),22)
1360                         ||','||rpad(substr(nvl(p_input_10,' '),1,22),22)
1361                         ||','||rpad(substr(nvl(p_input_11,' '),1,2),2)
1362                         ||','||rpad(substr(nvl(p_input_12,' '),1,5),5)
1363                         ||','||rpad(substr(nvl(p_input_13,' '),1,4),4)
1367                         ||','||rpad(substr(nvl(p_input_16,' '),1,2),2)
1364                         ||','||lpad(' ',5)
1365                         ||','||rpad(substr(nvl(p_input_14,' '),1,23),23)
1366                         ||','||rpad(substr(nvl(p_input_15,' '),1,15),15)
1368                         ||','||rpad(substr(upper(p_input_17),1,57),57)
1369                         ||','||rpad(substr(nvl(p_input_18,' '),1,22),22)
1370                         ||','||rpad(substr(nvl(p_input_19,' '),1,22),22)
1371                         ||','||rpad(substr(nvl(p_input_20,' '),1,22),22)
1372                         ||','||rpad(substr(nvl(p_input_21,' '),1,2),2)
1373                         ||','||rpad(substr(nvl(p_input_22,' '),1,5),5)
1374                         ||','||rpad(substr(nvl(p_input_23,' '),1,4),4)
1375                         ||','||lpad(' ',5)
1376                         ||','||rpad(substr(nvl(p_input_24,' '),1,23),23)
1377                         ||','||rpad(substr(nvl(p_input_25,' '),1,15),15)
1378                         ||','||rpad(substr(nvl(p_input_26,' '),1,2),2)
1379                         ||','||rpad(substr(nvl(p_input_27,' '),1,27),27)
1380                         ||','||rpad(substr(nvl(p_input_28,' '),1,15),15)
1381                         ||','||rpad(substr(nvl(p_input_29,' '),1,5),5)
1382                         ||','||lpad(' ',3)
1383                         ||','||rpad(substr(nvl(p_input_30,' '),1,40),40)
1384                         ||','||lpad(' ',3)
1385                         ||','||rpad(substr(nvl(p_input_31,' '),1,10),10)
1386                         ||','||p_input_32
1387                         ||','||p_input_33
1388                         ||','||lpad(' ',12);
1389       hr_utility.trace(' RA Record of CSV Type formatting Ends----');
1390       hr_utility.trace(return_value);
1391    END IF;
1392    p_error := l_exclude_from_output_chk;
1393    ret_str_len:=length(return_value);
1394    return return_value;
1395 END format_W2_RA_record; -- End of formatting W2 RA Record
1396 
1397 --vmkulkar
1398 -- Formatting of RV Record Start
1399 FUNCTION format_W2_RV_record(
1400                    p_effective_date       IN  varchar2,
1401                    p_report_type          IN  varchar2,
1402                    p_format               IN  varchar2,
1403                    p_report_qualifier     IN  varchar2,
1404                    p_record_name          IN  varchar2,
1405                    p_input_1              IN  varchar2,
1406                    p_input_2              IN  varchar2,
1407                    p_input_3              IN  varchar2,
1408                    p_input_4              IN  varchar2,
1409                    p_input_5              IN  varchar2,
1410                    p_input_6              IN  varchar2,
1411                    p_input_7              IN  varchar2,
1412                    p_input_8              IN  varchar2,
1413                    p_input_9              IN  varchar2,
1414                    p_input_10             IN  varchar2,
1415                    p_input_11             IN  varchar2,
1416                    p_input_12             IN  varchar2,
1417                    p_input_13             IN  varchar2,
1418                    p_input_14             IN  varchar2,
1419                    p_input_15             IN  varchar2,
1420                    p_input_16             IN  varchar2,
1421                    p_input_17             IN  varchar2,
1422                    p_input_18             IN  varchar2,
1423                    p_input_19             IN  varchar2,
1424                    p_input_20             IN  varchar2,
1425                    p_input_21             IN  varchar2,
1426                    p_input_22             IN  varchar2,
1427                    p_input_23             IN  varchar2,
1428                    p_input_24             IN  varchar2,
1429                    p_input_25             IN  varchar2,
1430                    p_input_26             IN  varchar2,
1431                    p_input_27             IN  varchar2,
1432                    p_input_28             IN  varchar2,
1433                    p_input_29             IN  varchar2,
1434                    p_input_30             IN  varchar2,
1435                    p_input_31             IN  varchar2,
1436                    p_input_32             IN  varchar2,
1437                    p_input_33             IN  varchar2,
1438                    p_input_34             IN  varchar2,
1439                    p_input_35             IN  varchar2,
1440                    p_input_36             IN  varchar2,
1441                    p_input_37             IN  varchar2,
1442                    p_input_38             IN  varchar2,
1443                    p_input_39             IN  varchar2,
1444                    p_input_40             IN  varchar2,
1445                    p_validate             IN  varchar2,
1446                    p_exclude_from_output  OUT nocopy varchar2,
1447                    sp_out_1               OUT nocopy varchar2,
1448                    sp_out_2               OUT nocopy varchar2,
1449                    sp_out_3               OUT nocopy varchar2,
1450                    sp_out_4               OUT nocopy varchar2,
1451                    sp_out_5               OUT nocopy varchar2,
1452                    ret_str_len            OUT nocopy number,
1453                    p_error                OUT nocopy boolean
1454                  ) RETURN VARCHAR2
1455 IS
1456 
1457 
1458     /*	Specifications for PR
1459 
1460 	1-2     Record Identifier			--> p_input_1,
1461 	3-12    Employer phone number			--> p_input_2,
1462 	13-17   Access Code				--> p_input_3,
1463 	18-32   Cost of Pension or Annuity		--> p_input_4,
1464 	33-47   Reimbursed Expenses			--> p_input_5,
1465 	48-62   Contributions to Qualified Lanns	--> p_input_6,
1466 	63-77   Salaries under act 324 of 2004		--> p_input_7,
1467 	78-92   Uncollected Social Security Tax on Tips --> p_input_8,
1468 	93-107  Uncollected Medicare Tax on Tips        --> p_input_9,
1472         138-512 Blank							 */
1469   Following vars are added as part of bug 13449377
1470 	108-122  PR W2 Charitable Contributions        --> p_input_10,
1471 	123-137  PR W2 Contr To Save and Double Money        --> p_input_11
1473 
1474       /*  Specifications for MD
1475 
1476 	1-2	Record identifier			--> p_input_1
1477 	3-4	State Code(24)				--> p_input_2
1478 	5-9	State record('MW508')			--> p_input_3
1479 	10-13	MW508 ER - Tax year			--> p_input_4
1480 	14-22	MW508 ER Id number			--> p_input_5
1481 	23-30	MW508 Central Registration		--> p_input_6
1482 		number(Tax Withholding Acct Number)
1483 	31-87   MW508 ER Name				--> p_input_7
1484 	88-109  MW508 ER St Address			--> p_input_8
1485 	110-131 MW508 City				--> p_input_9
1486 	132-133 MW508 State				--> p_input_10
1487 	134-138 MW508 Zipcode				--> p_input_11
1488 	139-142 MW508 Zip Extension			--> p_input_12
1489 	143-148 MW508 ER Number of W2s			--> p_input_13
1490 	149-160 MW508 Total amt of taxes		--> p_input_14
1491 	161-172 MW508 ER Total Tax			--> p_input_15
1492 	173-187 MW508 ER Credits			--> p_input_16
1493 	185-196 MW508 ER amt tax due			--> p_input_17
1494 		total w/h amt due after credits
1495 	197-208 MW508 ER amt balance due		--> p_input_18
1496 	209-220 MW508 ER amt overpayment		--> p_input_19
1497 	221-232 MW508 ER amt of overpayment		--> p_input_20
1498 	233-244 MW508 amt overpayment refunded		--> p_input_21
1499 	245-256 MW508 gross payroll			--> p_input_22
1500 	257-268 MW508 ER State pickup amt		--> p_input_23
1501 	269-296 ER Rep name				--> p_input_24
1502 	297-311 ER Rep title				--> p_input_25
1503 	312-319 ER Rep Date				--> p_input_26
1504 	320-329 ER Rep phone number			--> p_input_27
1505 	330-330 ER Total File Indicator "Y"		--> p_input_28
1506 	331-512 Blank							*/
1507 
1508 
1509 
1510 r_input_1                  varchar2(300);
1511 r_input_2                  varchar2(300);
1512 r_input_3                  varchar2(300);
1513 r_input_4                  varchar2(300);
1514 r_input_5                  varchar2(300);
1515 r_input_6                  varchar2(300);
1516 r_input_7                  varchar2(300);
1517 r_input_8                  varchar2(300);
1518 r_input_9                  varchar2(300);
1519 r_input_10                 varchar2(300);
1520 r_input_11                 varchar2(300);
1521 r_input_12                 varchar2(300);
1522 r_input_13                 varchar2(300);
1523 r_input_14                 varchar2(300);
1524 r_input_15                 varchar2(300);
1525 r_input_16                 varchar2(300);
1526 r_input_17                 varchar2(300);
1527 r_input_18                 varchar2(300);
1528 r_input_19                 varchar2(300);
1529 r_input_20                 varchar2(300);
1530 r_input_21                 varchar2(300);
1531 r_input_22                 varchar2(300);
1532 r_input_23                 varchar2(300);
1533 r_input_24                 varchar2(300);
1534 r_input_25                 varchar2(300);
1535 r_input_26                 varchar2(300);
1536 r_input_27                 varchar2(300);
1537 r_input_28                 varchar2(300);
1538 r_input_29                 varchar2(300);
1539 r_input_30                 varchar2(300);
1540 r_input_31                 varchar2(300);
1541 r_input_32                 varchar2(300);
1542 r_input_33                 varchar2(300);
1543 r_input_34                 varchar2(300);
1544 r_input_35                 varchar2(300);
1545 r_input_36                 varchar2(300);
1546 r_input_37                 varchar2(300);
1547 r_input_38                 varchar2(300);
1548 r_input_39                 varchar2(300);
1549 l_exclude_from_output_chk  boolean;
1550 return_value               varchar2(32767);
1551 
1552 
1553 BEGIN
1554    hr_utility.trace('RV Record Formatting started ');
1555 -- Initializing local variables with parameter value
1556    r_input_2 := p_input_2;
1557    r_input_3 := p_input_3;
1558    r_input_4 := p_input_4;
1559    r_input_5 := p_input_5;
1560    r_input_6 := p_input_6;
1561    r_input_7 := p_input_7;
1562    r_input_8 := p_input_8;
1563    r_input_9 := p_input_9;
1564    r_input_10 := p_input_10;
1565    r_input_11 := p_input_11;
1566    r_input_12 := p_input_12;
1567    r_input_13 := p_input_13;
1568    r_input_14 := p_input_14;
1569    r_input_15 := p_input_15;
1570    r_input_16 := p_input_16;
1571    r_input_17 := p_input_17;
1572    r_input_18 := p_input_18;
1573    r_input_19 := p_input_19;
1574    r_input_20 := p_input_20;
1575    r_input_21 := p_input_21;
1576    r_input_22 := p_input_22;
1577    r_input_23 := p_input_23;
1578    r_input_24 := p_input_24;
1579    r_input_25 := p_input_25;
1580    r_input_26 := p_input_26;
1581    r_input_27 := p_input_27;
1582    r_input_28 := p_input_28;
1583    r_input_29 := p_input_29;
1584    r_input_30 := p_input_30;
1585    r_input_31 := p_input_31;
1586    r_input_32 := p_input_32;
1587    r_input_33 := p_input_33;
1588    r_input_34 := p_input_34;
1589    r_input_35 := p_input_35;
1590    r_input_36 := p_input_36;
1591    r_input_37 := p_input_37;
1592    r_input_38 := p_input_38;
1593    r_input_39 := p_input_39;
1594 
1595 
1596 -- Use separate IF conditions for each report_qualifier.
1597 
1598 IF p_report_qualifier = 'PR' THEN
1599 
1600 	r_input_2 := lpad(nvl(r_input_2,' '),10,' ');
1601 	r_input_3 := lpad(nvl(substr(replace(r_input_3,' '),1,5),' '),5);
1602 	r_input_4 := lpad(nvl(r_input_4,' '),15,'0');
1603 	r_input_5 := lpad(nvl(r_input_5,' '),15,'0');
1604 	r_input_6 := lpad(nvl(r_input_6,' '),15,'0');
1605 	r_input_7 := lpad(nvl(r_input_7,' '),15,'0');
1606 	r_input_8 := lpad(nvl(r_input_8,' '),15,'0');
1607 	r_input_9 := lpad(nvl(r_input_9,' '),15,'0');
1611 
1608   /* Following vars are added as part of bug 13449377 */
1609   r_input_10 := lpad(nvl(r_input_10,' '),15,'0');
1610   r_input_11 := lpad(nvl(r_input_11,' '),15,'0');
1612 END IF;
1613 
1614 IF p_report_qualifier = 'NE' or p_report_qualifier = 'IL' THEN /* 6651399 */
1615 /* 7569151 */
1616 	r_input_2 := lpad(nvl(r_input_2,'0'),7,'0');
1617 	r_input_3 := lpad(nvl(r_input_3,'0'),15,'0');
1618 	r_input_4 := lpad(nvl(r_input_4,'0'),15,'0');
1619 
1620 END IF;
1621 
1622 IF p_report_qualifier = 'IN' THEN /* 7569563 */
1623 
1624 	r_input_2 := lpad(nvl(r_input_2,' '),2,' ');
1625 	r_input_3 := lpad(nvl(r_input_3,'0'),13,'0');
1626 	r_input_4 := lpad(nvl(r_input_4,'0'),13,'0');
1627 	r_input_5 := lpad(nvl(r_input_5,'0'),13,'0');
1628 	-- r_input_6 := lpad(nvl(r_input_6,'0'),13,'0');
1629         r_input_6 := lpad(' ', 13);   --13409513
1630 
1631 END IF;
1632 
1633 IF p_report_qualifier = 'ID' THEN /* 7565870 */
1634 
1635 	r_input_2 := lpad(replace(nvl(r_input_2,' '),'-',''),9,' ');
1636 	r_input_3 :=  lpad(nvl(replace(translate(r_input_3,'?/:,;.'' ', '#'), '#', ''),' '),4,' ');
1637   -- # 10031479 Changes Start
1638   -- # 10100148 Added some more extra characters
1639   r_input_4 := translate(UPPER(r_input_4),' ABCDEFGHIJKLMNOPQRSTUVWXYZ-{}()[]:;"''',' '); --Removing alphabets and special characters
1640   r_input_4 := replace(pay_us_reporting_utils_pkg.Character_check(r_input_4),' ','');   --Removing special characters
1641   -- # 10031479 Changes End
1642   r_input_4 := lpad(nvl(r_input_4,'0'),9,'0');
1643 	r_input_5 := lpad(nvl(r_input_5,' '),1,' ');
1644 	r_input_6 := lpad(nvl(r_input_6,' '),6,' ');
1645 	r_input_7 := lpad(nvl(r_input_7,'0'),11,'0');
1646 	r_input_8 := lpad(nvl(r_input_8,'0'),11,'0');
1647 	r_input_9 := lpad(nvl(r_input_9,'0'),11,'0');
1648 
1649 	if r_input_5 = 'B' then
1650 	r_input_10 := lpad(nvl(r_input_10,'0'),11,'0');
1651 	else
1652 	r_input_10 := lpad(' ',11,' ');
1653 	end if;
1654 
1655 	if r_input_5 = 'B' then
1656     r_input_11 := lpad(nvl(r_input_11,'0'),11,'0');
1657 	else
1658 	r_input_11 := lpad(' ',11,' ');
1659 	end if;
1660 
1661 	r_input_12 := lpad(nvl(replace(r_input_12,'-',''),'0'),11,'0');
1662 	r_input_13 := lpad(nvl(r_input_13,' '),1,' ');
1663 	r_input_14 := lpad(nvl(r_input_14,'0'),11,'0');
1664 	r_input_15 := lpad(nvl(r_input_15,'0'),11,'0');
1665 	r_input_16 := lpad(nvl(replace(r_input_16,'-',''),'0'),11,'0');
1666 	r_input_17 := lpad(nvl(r_input_17,' '),1,' ');
1667 	r_input_18 := lpad(nvl(r_input_18,'0'),7,'0');
1668 	r_input_19 := lpad(nvl(r_input_19,'0'),7,'0');
1669 	r_input_20 := lpad(nvl(r_input_20,'0'),1,'0');
1670 	r_input_21 := lpad(nvl(r_input_21,'0'),7,'0');
1671 	r_input_22 := lpad(nvl(r_input_22,'0'),11,'0');
1672 	r_input_23 := lpad(nvl(replace(r_input_23,'-',''),'0'),11,'0');
1673 	r_input_24 := lpad(nvl(r_input_24,' '),1,' ');
1674 
1675 END IF;
1676 
1677 
1678 IF p_report_qualifier = 'MD' THEN
1679 
1680 	    r_input_4  := rpad(substr(nvl(r_input_4,' '),1,4),4);
1681             r_input_5  := rpad(substr(replace(replace(nvl(replace(p_input_5,' '),' '),'-'),'/'),1,9),9);
1682             r_input_6  := lpad(replace(replace(nvl(replace(p_input_6,' '),' '),'-'),'/'),8,'0');
1683 
1684             r_input_7  := rpad(substr(nvl(upper(r_input_7),' '),1,57),57,' ');  --ER Name
1685 
1686 	    /* ER Address */
1687 	    r_input_8  := rpad(substr(nvl(r_input_8,' '),1,22),22,' ');
1688             r_input_9  := rpad(substr(nvl(r_input_9, ' '),1,22),22,' ');
1689             r_input_10 := rpad(substr(nvl(r_input_10,' '),1,2),2,' ');
1690             r_input_11 := rpad(substr(nvl(r_input_11,' '),1,5),5,' ');
1691             r_input_12 := rpad(substr(nvl(r_input_12,' '),1,4),4,' ');
1692 
1693             r_input_13 := lpad(nvl(r_input_13,'0'),6,'0');   -- Number of RS Records
1694 
1695             r_input_14 := lpad(nvl(r_input_14,'0'),12,'0');
1696             r_input_15 := lpad(nvl(r_input_15,'0'),12,'0');
1697             r_input_16 := lpad(nvl(r_input_16,'0'),12,'0');
1698             r_input_17 := lpad(nvl(r_input_17,'0'),12,'0');
1699             r_input_18 := lpad(nvl(r_input_18,'0'),12,'0');
1700             r_input_19 := lpad(nvl(r_input_19,'0'),12,'0');
1701             r_input_20 := lpad(nvl(r_input_20,'0'),12,'0');
1702             r_input_21 := lpad(nvl(r_input_21,'0'),12,'0');
1703             r_input_22 := lpad(nvl(r_input_22,'0'),12,'0');
1704             r_input_23 := lpad(nvl(r_input_23,'0'),12,'0');
1705 
1706             r_input_24 := rpad(substr(nvl(upper(r_input_24),' '),1,28),28,' '); --Contact
1707             r_input_25 := rpad(nvl(r_input_25,' '),15,' ');	-- Title
1708 
1709 	    /* Date in YYYYMMDD format */
1710 	    r_input_26 := substr(nvl(r_input_26,' '),5,4)||substr(nvl(r_input_26,' '),1,2)||substr(nvl(r_input_26,' '),3,2);
1711             r_input_26 := rpad(nvl(r_input_26,' '),8,' ');            -- Date
1712 
1713             r_input_27 := rpad(nvl(r_input_27,' '),10,' ');  -- Phone
1714 END IF ;
1715 
1716 IF p_report_qualifier = 'NE' or p_report_qualifier = 'IL'  THEN /* 6651399 */
1717 /* 7569151 */
1718 	return_value :='RV'
1719 		     ||r_input_2
1720 		     ||r_input_3
1721 		     ||r_input_4
1722 		     ||lpad(' ',473);
1723 
1724 END IF;
1725 
1726 IF p_report_qualifier = 'IN' THEN /* 7569563 */
1727 
1728 	return_value :='RV'
1729 		     ||r_input_2
1730 		     ||r_input_3
1731 		     ||r_input_4
1732 		     ||r_input_5
1733 		     ||r_input_6
1734 		     ||lpad(' ', 456);
1735 
1736 END IF;
1737 
1738 IF p_report_qualifier = 'OR' THEN /* 9065357  */
1739 
1740 	/* 9435160 */
1741 
1742 --10266129
1743   --r_input_4 := to_char(to_number(r_input_4)/100); -- Dropping the cents
1744 
1748 		     ||lpad(nvl(r_input_2,'0'),7,'0')
1745 	r_input_4 := to_char(to_number(r_input_4)); --Added back the cents
1746 
1747 	return_value :='RV'
1749   	     ||lpad(nvl(r_input_3,'0'),15,'0')
1750 		     ||lpad(nvl(r_input_4,'0'),15,'0')
1751 		     ||lpad(' ', 473);
1752 
1753 END IF;
1754 
1755 IF p_report_qualifier = 'PR' THEN
1756 
1757 	return_value :='RV'
1758 		     ||r_input_2
1759 		     ||r_input_3
1760 		     ||r_input_4
1761 		     ||r_input_5
1762 		     ||r_input_6
1763 		     ||r_input_7
1764 		     ||r_input_8
1765 		     ||r_input_9
1766 		     ||r_input_10    -- added as part of bug 13449377
1767 		     ||r_input_11    -- added as part of bug 13449377
1768 		     ||lpad(' ',375);  -- bug 13449377
1769 
1770 END IF;
1771 
1772 IF p_report_qualifier = 'ID' Then /* 7565870 */
1773     return_value :='RV'
1774 		     ||r_input_2
1775 		     ||r_input_3
1776 		     ||r_input_4
1777 		     ||r_input_5
1778 		     ||r_input_6
1779 		     ||r_input_7
1780 		     ||r_input_8
1781 		     ||r_input_9
1782 		     ||r_input_10
1783 		     ||r_input_11
1784 		     ||r_input_12
1785 		     ||r_input_13
1786 		     ||r_input_14
1787 		     ||r_input_15
1788 		     ||r_input_16
1789 		     ||r_input_17
1790 		     ||r_input_18
1791 		     ||r_input_19
1792 		     ||r_input_20
1793 		     ||r_input_21
1794 		     ||r_input_22
1795 		     ||r_input_23
1796 		     ||r_input_24
1797 		     ||lpad(' ',335);
1798 END IF;
1799 
1800 
1801 IF p_report_qualifier = 'MD' THEN
1802 
1803 	return_value :='RV'
1804 		     ||r_input_2
1805 		     ||r_input_3
1806 		     ||r_input_4
1807 		     ||r_input_5
1808 		     ||r_input_6
1809 		     ||r_input_7
1810 		     ||r_input_8
1811 		     ||r_input_9
1812 		     ||r_input_10
1813 		     ||r_input_11
1814 		     ||r_input_12
1815 		     ||r_input_13
1816 		     ||r_input_14
1817 		     ||r_input_15
1818 		     ||r_input_16
1819 		     ||r_input_17
1820 		     ||r_input_18
1821 		     ||r_input_19
1822 		     ||r_input_20
1823 		     ||r_input_21
1824 		     ||r_input_22
1825 		     ||r_input_23
1826 		     ||r_input_24
1827 		     ||r_input_25
1828 		     ||r_input_26
1829 		     ||r_input_27
1830 		     ||r_input_28
1831 		     ||lpad(' ',166) /* 7572352 */
1832              || to_char(sysdate,'YYYYMMDD')
1833                           ||to_char(systimestamp,'HH24MISSFF2');
1834 
1835 END IF;
1836 
1837          IF p_exclude_from_output = 'Y' THEN
1838             l_exclude_from_output_chk := TRUE;
1839          END IF;
1840 
1841 p_error := l_exclude_from_output_chk;
1842 ret_str_len:=length(return_value);
1843 return return_value;
1844 END format_W2_RV_record;
1845 -- vmkulkar
1846 -- End of Function Formatting RV record
1847 
1848 
1849 --
1850 -- Formatting RE Record for W2 reporting
1851 --
1852 FUNCTION format_W2_RE_record(
1853                    p_effective_date       IN  varchar2,
1854                    p_report_type          IN  varchar2,
1855                    p_format               IN  varchar2,
1856                    p_report_qualifier     IN  varchar2,
1857                    p_record_name          IN  varchar2,
1858                    p_input_1              IN  varchar2,
1859                    p_input_2              IN  varchar2,
1860                    p_input_3              IN  varchar2,
1861                    p_input_4              IN  varchar2,
1862                    p_input_5              IN  varchar2,
1863                    p_input_6              IN  varchar2,
1864                    p_input_7              IN  varchar2,
1865                    p_input_8              IN  varchar2,
1866                    p_input_9              IN  varchar2,
1867                    p_input_10             IN  varchar2,
1868                    p_input_11             IN  varchar2,
1869                    p_input_12             IN  varchar2,
1870                    p_input_13             IN  varchar2,
1871                    p_input_14             IN  varchar2,
1872                    p_input_15             IN  varchar2,
1873                    p_input_16             IN  varchar2,
1874                    p_input_17             IN  varchar2,
1875                    p_input_18             IN  varchar2,
1876                    p_input_19             IN  varchar2,
1877                    p_input_20             IN  varchar2,
1878                    p_input_21             IN  varchar2,
1879                    p_input_22             IN  varchar2,
1880                    p_input_23             IN  varchar2,
1881                    p_input_24             IN  varchar2,
1882                    p_input_25             IN  varchar2,
1883                    p_input_26             IN  varchar2,
1884                    p_input_27             IN  varchar2,
1885                    p_input_28             IN  varchar2,
1886                    p_input_29             IN  varchar2,
1887                    p_input_30             IN  varchar2,
1888                    p_input_31             IN  varchar2,
1889                    p_input_32             IN  varchar2,
1890                    p_input_33             IN  varchar2,
1891                    p_input_34             IN  varchar2,
1892                    p_input_35             IN  varchar2,
1893                    p_input_36             IN  varchar2,
1894                    p_input_37             IN  varchar2,
1895                    p_input_38             IN  varchar2,
1896                    p_input_39             IN  varchar2,
1897                    p_input_40             IN  varchar2,
1901                    sp_out_2               OUT nocopy varchar2,
1898                    p_validate             IN  varchar2,
1899                    p_exclude_from_output  OUT nocopy varchar2,
1900                    sp_out_1               OUT nocopy varchar2,
1902                    sp_out_3               OUT nocopy varchar2,
1903                    sp_out_4               OUT nocopy varchar2,
1904                    sp_out_5               OUT nocopy varchar2,
1905                    ret_str_len            OUT nocopy number,
1906                    p_error                OUT nocopy boolean
1907                  ) RETURN VARCHAR2
1908 IS
1909    /* Record Identifier              --> p_input_1,
1910       Tax Year                       --> p_input_2,
1911       Agent Indicator Code           --> p_input_3,
1912       Employer / Agent Employer Identification Number (EIN) -->p_input_4,
1913       Agent For EIN                  --> p_input_5,
1914       Terminating Business Indicator --> p_input_6,
1915       Establishment Number           --> p_input_7,
1916       Other EIN                      --> p_input_8,
1917       Employer Name                  --> p_input_9,
1918       Location Address               --> p_input_10,
1919       Delivery Address               --> p_input_11,
1920       City                           --> p_input_12,
1921       State Abbreviation             --> p_input_13,
1922       Zip Code                       --> p_input_14,
1923       Zip Code Extension             --> p_input_15,
1924       Blank,
1925       Foreign State / Provinc        --> p_input_16
1926       Foreign Postal Code            --> p_input_17,
1927       Country Code                   --> p_input_18,
1928       Employment Code                --> p_input_19,
1929       Tax Jurisdiction Code          --> p_input_20,
1930       Third Party Sick Pay Indicator --> p_input_21,
1931       Alabama Withholding Tax Acct Number (Only for AL) --> p_input_23
1932       Tax Withholding Acct No. (MD)  --> p_input_24
1933       Total No. of RS Record for this Employer / GRE (MD) --> p_input_25
1934       Total Withheld Tax Reported for MD --> p_input_26
1935       Total Withheld Tax Shown on W2 (MD) --> p_input_27
1936       MW508 ER Credits (MD)             --> p_input_28
1937       MW508 Amt Tax Due (MD)            --> p_input_29
1938       MW508 Amt Balance Due (MD)        --> p_input_30
1939       MW508 ER Amt OverPayment (MD)     --> p_input_31
1940       MW508 ER Amt Credit (MD)          --> p_input_32
1941       MW508 ER Amt Refunded (MD)        --> p_input_33
1942       Total Gross MD Payroll for Year   --> p_input_34
1943       Total State Pickup Amt (MD)       --> p_input_35
1944       ER Reporting Name (MD)            --> p_input_36
1945       ER Reporting Date (MD)            --> p_input_37
1946       ER Reporting Phone Number (MD)    --> p_input_38
1947    */
1948 
1949 l_agent_indicator          varchar2(1);
1950 l_emp_ein                  varchar2(100);
1951 l_agent_ein                varchar2(100);
1952 l_other_ein                varchar2(100);
1953 l_term_indicator           varchar2(1);
1954 l_exclude_from_output_chk  boolean;
1955 l_input_8                  varchar2(50);
1956 l_bus_tax_acct_number      varchar2(50);
1957 l_rep_qtr                  varchar2(300);
1958 l_rep_prd                  varchar2(300);
1959 l_end_of_rec               varchar2(20);
1960 return_value               varchar2(32767);
1961 /* Bug 3936924 */
1962 l_al_wh_tax_acct_no        varchar2(300);
1963 
1964 r_input_1                  varchar2(300);
1965 r_input_2                  varchar2(300);
1966 r_input_3                  varchar2(300);
1967 r_input_4                  varchar2(300);
1968 r_input_5                  varchar2(300);
1969 r_input_6                  varchar2(300);
1970 r_input_7                  varchar2(300);
1971 r_input_8                  varchar2(300);
1972 r_input_9                  varchar2(300);
1973 r_input_10                 varchar2(300);
1974 r_input_11                 varchar2(300);
1975 r_input_12                 varchar2(300);
1976 r_input_13                 varchar2(300);
1977 r_input_14                 varchar2(300);
1978 r_input_15                 varchar2(300);
1979 r_input_16                 varchar2(300);
1980 r_input_17                 varchar2(300);
1981 r_input_18                 varchar2(300);
1982 r_input_19                 varchar2(300);
1983 r_input_20                 varchar2(300);
1984 r_input_21                 varchar2(300);
1985 r_input_22                 varchar2(300);
1986 r_input_23                 varchar2(300);
1987 r_input_24                 varchar2(300);
1988 r_input_25                 varchar2(300);
1989 r_input_26                 varchar2(300);
1990 r_input_27                 varchar2(300);
1991 r_input_28                 varchar2(300);
1992 r_input_29                 varchar2(300);
1993 r_input_30                 varchar2(300);
1994 r_input_31                 varchar2(300);
1995 r_input_32                 varchar2(300);
1996 r_input_33                 varchar2(300);
1997 r_input_34                 varchar2(300);
1998 r_input_35                 varchar2(300);
1999 r_input_36                 varchar2(300);
2000 r_input_37                 varchar2(300);
2001 r_input_38                 varchar2(300);
2002 r_input_39                 varchar2(300);
2003 
2004 BEGIN
2005    hr_utility.trace('RE Record Formatting started ');
2006 -- Initializing local variables with parameter value
2007 --{
2008    r_input_2 := p_input_2;
2009    r_input_3 := p_input_3;
2010    r_input_4 := p_input_4;
2011    r_input_5 := p_input_5;
2012    r_input_6 := p_input_6;
2013    r_input_7 := p_input_7;
2014    r_input_8 := p_input_8;
2015    r_input_9 := p_input_9;
2016    r_input_10 := p_input_10;
2017    r_input_11 := p_input_11;
2018    r_input_12 := p_input_12;
2019    r_input_13 := p_input_13;
2023    r_input_17 := p_input_17;
2020    r_input_14 := p_input_14;
2021    r_input_15 := p_input_15;
2022    r_input_16 := p_input_16;
2024    r_input_18 := p_input_18;
2025    r_input_19 := p_input_19;
2026    r_input_20 := p_input_20;
2027    r_input_21 := p_input_21;
2028    r_input_22 := p_input_22;
2029    r_input_23 := p_input_23;
2030    r_input_24 := p_input_24;
2031    r_input_25 := p_input_25;
2032    r_input_26 := p_input_26;
2033    r_input_27 := p_input_27;
2034    r_input_28 := p_input_28;
2035    r_input_29 := p_input_29;
2036    r_input_30 := p_input_30;
2037    r_input_31 := p_input_31;
2038    r_input_32 := p_input_32;
2039    r_input_33 := p_input_33;
2040    r_input_34 := p_input_34;
2041    r_input_35 := p_input_35;
2042    r_input_36 := p_input_36;
2043    r_input_37 := p_input_37;
2044    r_input_38 := p_input_38;
2045    r_input_39 := p_input_39;
2046 --}
2047 
2048    IF p_record_name = 'RE' THEN -- p_record_name
2049 --{
2050       /* Check for agent indicator code p_input_3 */
2051       IF p_input_3 = 'Y'  THEN
2052          hr_utility.trace('agent indicator is Y');
2053          l_agent_indicator := '1';
2054          l_emp_ein   := p_input_5;
2055          l_agent_ein := p_input_4;
2056       ELSE
2057          l_agent_indicator:=lpad(' ','1');
2058          hr_utility.trace('agent indicator is not 1');
2059          l_emp_ein   := p_input_4;
2060          l_agent_ein := lpad(' ',9);
2061       END IF;
2062 
2063       IF p_input_6 = 'Y' THEN
2064          l_term_indicator:='1';
2065       ELSE
2066          l_term_indicator:='0';
2067       END IF;
2068 
2069        /* 7572620 */
2070 
2071     /*   IF p_report_qualifier = 'WV' THEN
2072          l_term_indicator  := lpad(' ',1);
2073       END IF; */
2074 
2075       IF ((p_report_qualifier = 'AL') OR      --AL ,CT,NC,PA and OH RITA
2076           (p_report_qualifier = 'PA') OR
2077           (p_report_qualifier = 'NC') OR
2078           (p_report_qualifier = 'CT') OR
2079           --(p_report_qualifier = 'LA') OR Commented for the Bug 16339837     -- Bug # 3130999
2080           (p_report_qualifier = 'MO') OR      -- Added to fix bug # 2149507
2081 	  (p_report_qualifier = 'MO_KNSAS') OR  -- Fix for Bug # 3067494
2082           (p_report_qualifier = 'OH_RTCCA') OR
2083           (p_report_qualifier = 'OH_CCAAA') OR
2084       --    (p_report_qualifier = 'PA_PHILA') OR /* 7579598 */
2085           (p_report_qualifier = 'MO_STLOU')) THEN
2086 --{
2087           l_agent_indicator := lpad(' ',1);
2088           l_other_ein       := lpad(' ',9);
2089           l_agent_ein       := lpad(' ',9);
2090           l_term_indicator  := lpad(' ',1);
2091           l_emp_ein         := p_input_4;
2092           r_input_7         := lpad(' ',4);
2093           r_input_8         := l_other_ein;
2094 --}
2095       END IF;
2096 
2097       /* OH RITA Other EIN. */
2098       If ((p_report_qualifier = 'OH_RTCCA') OR
2099           (p_report_qualifier = 'OH_CCAAA')) THEN
2100 --{
2101          r_input_8 := p_input_8;
2102 --}
2103       END IF;
2104       /* Bug 5640748 */
2105       IF (p_report_qualifier = 'MD') THEN
2106          l_term_indicator := '0' ;
2107          r_input_8 := lpad(' ',9,' ') ;
2108       END IF ;
2109 
2110       /* Bug 13409513 */
2111       /* Bug 13449377 - Added for PuertoRico */
2112         IF ((p_report_qualifier = 'IN') or
2113             (p_report_qualifier = 'PR'))then
2114           r_input_39 := ' ';
2115         else
2116           r_input_39 := nvl(r_input_39,'N');
2117         END IF ;
2118 
2119 --    Validation for RE Record starts
2120 --    These validation are used only for mf file only.
2121 --    not for any of the audit report
2122 --
2123       IF p_input_40 = 'FLAT' THEN
2124 --{
2125          hr_utility.trace('before data_validation of ein');
2126          l_emp_ein :=
2127              pay_us_reporting_utils_pkg.data_validation(p_effective_date,
2128                                                         p_report_type,
2129                                                         p_format,
2130                                                         p_report_qualifier,
2131                                                         p_record_name,
2132                                                         'EIN',
2133                                                         l_emp_ein,
2134                                                         'Employer EIN',
2135                                                         p_input_9,
2136                                                         null,
2137                                                         p_validate,
2138                                                         p_exclude_from_output,
2139                                                         sp_out_1,
2140                                                         sp_out_2);
2141          IF p_exclude_from_output = 'Y' THEN
2142             l_exclude_from_output_chk := TRUE;
2143          END IF;
2144 
2145          IF l_agent_indicator = '1' THEN
2146 --{
2147             l_agent_ein :=  pay_us_reporting_utils_pkg.data_validation(p_effective_date,
2148                                                        p_report_type,
2149                                                        p_format,
2150                                                        p_report_qualifier,
2151                                                        p_record_name,
2152                                                        'EIN',
2153                                                        l_agent_ein,
2154                                                        'Agent EIN',
2155                                                        p_input_9,
2159                                                        sp_out_1,
2156                                                        null,
2157                                                        p_validate,
2158                                                        p_exclude_from_output,
2160                                                        sp_out_2);
2161             IF p_exclude_from_output = 'Y' THEN
2162                l_exclude_from_output_chk := TRUE;
2163             END IF;
2164 --}
2165          END IF; -- agent_indicator
2166 
2167          hr_utility.trace('after data_validation of EIN');
2168          l_input_8 := replace(r_input_8,' ');
2169 
2170          IF l_input_8 IS NOT NULL THEN --Checking Other EIN for validation
2171 --{
2172             hr_utility.trace('before data_validation of other EIN');
2173             l_other_ein:= pay_us_reporting_utils_pkg.data_validation(p_effective_date,
2174                                                      p_report_type,
2175                                                      p_format,
2176                                                      p_report_qualifier,
2177                                                      p_record_name,
2178                                                      'EIN',
2179                                                      p_input_8,
2180                                                      'Other EIN',
2181                                                      p_input_9,
2182                                                      null,
2183                                                      p_validate,
2184                                                      p_exclude_from_output,
2185                                                      sp_out_1,
2186                                                      sp_out_2);
2187             hr_utility.trace('after data_validation of l_other_ein');
2188             IF p_exclude_from_output = 'Y' THEN
2189                l_exclude_from_output_chk := TRUE;
2190             END IF;
2191 --}
2192          ELSE
2193             l_other_ein:= lpad(' ',9);
2194          END IF; --Checking Other EIN for validation
2195 --
2196 -- Validation for RE record ends here
2197 
2198 -- Formatting for mf file
2199 --
2200          /* Pos:27 - 30 Establishment number is blank for MA */
2201 
2202          IF p_report_qualifier = 'MA' THEN
2203             r_input_7 := lpad(' ',4);
2204          END IF;
2205 
2206 				if p_report_qualifier = 'VA'	 then
2207 	         l_term_indicator:=' ';
2208 					 r_input_7         := lpad(' ',4);
2209 					l_other_ein:= lpad(' ',9);
2210           r_input_10:=rpad(' ',22);
2211           r_input_11:=rpad(' ',22);
2212           r_input_12:=rpad(' ',22);
2213           r_input_13:=rpad(' ',2);
2214           r_input_14:=rpad(' ',5);
2215           r_input_15:=rpad(' ',9);
2216           r_input_16:=rpad(' ',23);
2217           r_input_17:=rpad(' ',15);
2218           r_input_18:=rpad(' ',2);
2219           r_input_19:=' ';
2220           r_input_20:=' ';
2221           r_input_21:=' ';
2222  				end if;
2223          /* Pos:119-140 Delivery address blank for NC.Bug:2124630 */
2224          /* Pos:119-140 Delivery Address shoul not be blanked out for NC.
2225                          This is to revert back the chenges made to fix
2226                          the bug 2124630. Delivery address should be
2227                          reported for NC in the Pos 119-140 Code written
2228                          to fix bug 2124630 will be commented to fix bug
2229                          # 2198547
2230          */
2231          /*
2232          IF p_report_qualifier = 'NC' THEN
2233             r_input_10 := r_input_11;  -- Bug:2124630
2234             r_input_11 := lpad(' ',22);
2235          END IF;
2236          */
2237          /* Employer Address is blank out for the Saint Louis Local of MO state */
2238          IF (p_report_qualifier = 'MO_STLOU')THEN
2239              r_input_10 := lpad(' ',22);
2240              r_input_12 := lpad(' ',22);
2241              r_input_13 := lpad(' ',2);
2242              r_input_14 := lpad(' ',5);
2243              r_input_15 := lpad(' ',4);
2244          END IF;
2245 
2246          /* Delivery Address is blank out for MO and Saint Louis local  */
2247          -- Bug 4739790
2248          -- Removed the MO_KNSAS condition as we require Delivery address for that
2249          IF ((p_report_qualifier = 'MO') OR
2250              (p_report_qualifier = 'MO_STLOU')) THEN
2251               r_input_11 := lpad(' ',22);
2252          END IF;
2253 
2254          IF p_report_qualifier = 'AL' THEN
2255             r_input_10 := lpad(' ',22);
2256          /* Bug 3936924
2257 	    Zip Code Extn reqd for AL now
2258 	    401-410 - Alabama withholding tax acct number*/
2259             l_al_wh_tax_acct_no := lpad(replace(replace(nvl(replace(r_input_23,' '),' ')
2260                                 ,'-'),'/'),10,'0');
2261             r_input_23 := ' ';
2262          ELSE
2263 	    l_al_wh_tax_acct_no := lpad(' ',10,' ');
2264          END IF; --AL zip ext blank
2265 
2266          /* AL,PA,MA,NC and OH RITA/CCA foreign adrs,emp_code,
2267             third_party,tax_jurisdiction testing.
2268             Saint Louis, Missouri, Philadelphia added for local mag*/
2269          IF ((p_report_qualifier = 'AL') OR
2270              (p_report_qualifier = 'PA') OR
2271              --(p_report_qualifier = 'LA') OR  Commented for the Bug 16339837 -- Bug # 3130999
2272              (p_report_qualifier = 'NC') OR
2273              (p_report_qualifier = 'MO') OR  -- Added for fixing bug # 2149507
2274              (p_report_qualifier = 'MO_KNSAS') OR  -- Fix for Bug # 3067494
2275              (p_report_qualifier = 'OH_RTCCA') OR
2276              (p_report_qualifier = 'OH_CCAAA') OR
2277              (p_report_qualifier = 'MO_STLOU') OR
2281         --     (p_report_qualifier = 'MD'))  -- Bug# 5640748
2278           --   (p_report_qualifier = 'PA_PHILA') OR /*7579598*/
2279              (p_report_qualifier = 'MA') ) THEN -- OR
2280 	        --   (p_report_qualifier = 'WV') OR -- Bug # 3186636 bug # 7572620
2282 --{
2283              r_input_16 := lpad(' ',23);
2284              r_input_17 := lpad(' ',15);
2285              r_input_18 := lpad(' ',2);
2286              r_input_20 := lpad(' ',1);
2287              r_input_21 := lpad(' ',1);
2288 
2289              IF ((p_report_qualifier = 'PA') OR   -- AL,PA,NC emp_code blank
2290                  (p_report_qualifier = 'NC') OR
2291               --   (p_report_qualifier = 'LA') OR  -- Bug # 3130999 ,Bug 7045241 commenting foramtting of posotion 219 as it is required
2292                  (p_report_qualifier = 'OH_RTCCA') OR
2293                  (p_report_qualifier = 'OH_CCAAA') OR
2294                  (p_report_qualifier = 'MO_STLOU') OR
2295                --  (p_report_qualifier = 'PA_PHILA') OR /*7579598*/
2296                  (p_report_qualifier = 'MO_KNSAS') OR  -- Fix for Bug # 3067494
2297                  (p_report_qualifier = 'AL') OR
2298                  (p_report_qualifier = 'MO')   -- OR -- Added for fixing bug # 2149507
2299 		        --   (p_report_qualifier = 'WV') OR -- Bug # 3186636 bug # 7572620
2300              --    (p_report_qualifier = 'MD') -- Bug# 5640748
2301                  ) THEN
2302                 r_input_19 := lpad(' ',1);
2303              END IF;-- AL,PA emp_code blank
2304 --}
2305          END IF; --AL,PA,MA checking
2306 
2307             if p_report_qualifier = 'MD' then /* 7572352 */
2308           r_input_16 := lpad(' ',23);
2309              r_input_17 := lpad(' ',15);
2310              r_input_18 := lpad(' ',2);
2311              r_input_20 := lpad(' ',1);
2312               r_input_19 := lpad(' ',1);
2313          end if ;
2314 
2315          /* Pos:219 - 221 blank for CT */
2316          IF (p_report_qualifier = 'CT') THEN
2317 --{
2318              r_input_19 := lpad(' ',1);
2319              r_input_20 := lpad(' ',1);
2320              r_input_21 := lpad(' ',1);
2321 --}
2322          END IF;
2323 
2324          /* Bug:2116807 Pos:221 blank for IN */
2325         /*  7569563 */
2326     /*     IF p_report_qualifier = 'IN' THEN
2327             r_input_21 := lpad(' ',1);
2328 	    r_input_19 := lpad(' ',1);
2329          END IF; */
2330          /* 7572352 */
2331      /*    IF p_report_qualifier = 'MD' THEN
2332             r_input_21 := lpad('0',1,'0') ;
2333          END IF ; */
2334 
2335          IF p_report_qualifier = 'PA' THEN   /* Bug:2159881 */
2336             -- Formatting for 8 digit PA account
2337             r_input_30 := rpad(replace(replace(nvl
2338                               (replace(r_input_22,' '),' '),'/'),'-'),8);
2339          ELSE
2340             r_input_30 := lpad(' ',8);
2341          END IF;
2342 
2343          IF p_report_qualifier = 'PA_PHILA' THEN
2344 --{
2345              hr_utility.trace('CHK before Formating Locality Comapny ID ');
2346       /*      l_bus_tax_acct_number := rpad(replace(replace(nvl
2347                                    (replace(p_input_17,' '),' '),'/'),'-'),7);
2348             hr_utility.trace('CHK Formatted Locality Comapny ID '
2349                                   ||l_bus_tax_acct_number); */
2350       --      r_input_22 := substr(l_bus_tax_acct_number,1,2);
2351        --     r_input_23 := rpad(substr(l_bus_tax_acct_number,3,7),6);
2352             r_input_22 := lpad(' ',2);
2353             r_input_23 := lpad(' ',6);
2354             r_input_24 := lpad(' ',2);
2355             r_input_25 := lpad(' ',12);
2356             r_input_26 := lpad(' ',1);
2357             r_input_27 := lpad(' ',1);
2358             r_input_28 := lpad(' ',1);
2359             r_input_29 := lpad(' ',1);
2360 --}
2361          ELSE
2362 --{
2363             r_input_22 := lpad(' ',2);
2364             r_input_23 := lpad(' ',6);
2365             r_input_24 := lpad(' ',2);
2366             r_input_25 := lpad(' ',12);
2367             r_input_26 := lpad(' ',1);
2368             r_input_27 := lpad(' ',1);
2369             r_input_28 := lpad(' ',1);
2370             r_input_29 := lpad(' ',1);
2371 
2372          END IF;
2373 
2374          /* Commented for the Bug 16339837
2375          -- Bug # 3299126
2376          IF p_report_qualifier = 'LA' THEN --LA Delivery address should be blank
2377             r_input_10 := lpad(' ',22);
2378          END IF;
2379          */
2380 
2381          -- Bug# 5640748
2382          IF p_report_qualifier = 'MD' THEN
2383             r_input_22 := rpad(substr(nvl(r_input_2,' '),1,4),4) ;
2384             r_input_23 := l_emp_ein ;
2385             r_input_24 := lpad(replace(replace(nvl(replace(p_input_24,' '),' ')
2386                           ,'-'),'/'),8,'0');
2387             r_input_24 := r_input_24 || rpad(substr(nvl(upper(r_input_9), ' '), 1, 30), 30, ' ') ;
2388             r_input_24 := r_input_24 || rpad(substr(nvl(r_input_11, ' '),1, 22), 22, ' ') ; /* Bug# 5759976 Changed r_input_10 to r_input_11 */
2389             r_input_24 := r_input_24 || rpad(substr(nvl(r_input_12, ' '),1, 20), 20, ' ') ;
2390             r_input_24 := r_input_24 || rpad(substr(nvl(r_input_13, ' '),1, 2), 2, ' ') ;
2391             r_input_24 := r_input_24 || rpad(substr(nvl(r_input_14, ' '), 1, 5), 5, ' ') ;
2392             r_input_24 := r_input_24 || rpad(substr(nvl(r_input_15, ' '),1, 4), 4 , ' ') ;
2393 
2394             r_input_25 := lpad(p_input_25, 5 , '0') ;
2395 
2396             r_input_26 := lpad(nvl(p_input_26, '0'), 12, '0') ;
2397             r_input_27 := lpad(nvl(p_input_27, '0'), 12, '0') ;
2398             r_input_28 := lpad(nvl(p_input_28, '0'), 12, '0') ;
2399             r_input_29 := lpad(nvl(p_input_29, '0'), 12, '0') ;
2400             r_input_30 := lpad(nvl(p_input_30, '0'), 12, '0') ;
2404             r_input_34 := lpad(nvl(p_input_34, '0'), 12, '0') ;
2401             r_input_31 := lpad(nvl(p_input_31, '0'), 12, '0') ;
2402             r_input_32 := lpad(nvl(p_input_32, '0'), 12, '0') ;
2403             r_input_33 := lpad(nvl(p_input_33, '0'), 12, '0') ;
2405             r_input_35 := lpad(nvl(p_input_35, '0'), 12, '0') ;
2406 
2407             r_input_36 := rpad(nvl(p_input_36, ' '), 43, ' ') ;
2408             r_input_37 := rpad(p_input_37, 8, ' ') ;
2409             r_input_38 := rpad(nvl(p_input_38,' '), 10, ' ') ;
2410          END IF ;
2411 --{
2412          IF p_report_qualifier = 'MD' THEN /* 6648007 */
2413              r_input_22 := lpad(replace(replace(nvl(replace(p_input_24,' '),' ')
2414                           ,'-'),'/'),8,'0'); --Central Registration Number
2415 
2416          END IF ;
2417 
2418 
2419          IF p_report_qualifier = 'MD' THEN
2420              return_value :=  'RE'
2421                           ||rpad(substr(nvl(r_input_2,' '),1,4),4)
2422                           ||l_agent_indicator
2423                           ||l_emp_ein||l_agent_ein
2424                           ||l_term_indicator
2425                           ||rpad(substr(nvl(r_input_7,' '),1,4),4)
2426                           ||l_other_ein
2427                           ||rpad(substr(nvl(upper(r_input_9),' '),1,57),57)
2428                           ||rpad(substr(nvl(r_input_10,' '),1,22),22)
2429                           ||rpad(substr(nvl(r_input_11,' '),1,22),22)
2430                           ||rpad(substr(nvl(r_input_12,' '),1,22),22)
2431                           ||rpad(substr(nvl(r_input_13,' '),1,2),2)
2432                           ||rpad(substr(nvl(r_input_14,' '),1,5),5)
2433                           ||rpad(substr(nvl(r_input_15,' '),1,4),4) --Bug 13255564
2434                           ||r_input_39  -- Bug 13409513
2435                           ||rpad(' ',4) --Bug 13255564
2436                           ||rpad(substr(nvl(r_input_16,' '),1,23),23)
2437                           ||rpad(substr(nvl(r_input_17,' '),1,15),15)
2438                           ||rpad(substr(nvl(r_input_18,' '),1,2),2)
2439                           ||rpad(nvl(r_input_19,'R'),1)
2440                           ||rpad(nvl(r_input_20,' '),1)
2441                           ||rpad(nvl(r_input_21,'0'),1)
2442                           ||r_input_22
2443                        /*   ||r_input_23
2444                           ||r_input_24
2445                           ||r_input_25
2446                           ||r_input_26
2447                           ||r_input_27
2448                           ||r_input_28
2449                           ||r_input_29
2450                           ||r_input_30
2451                           ||r_input_31
2452                           ||r_input_32
2453                           ||r_input_33
2454                           ||r_input_34
2455                           ||r_input_35
2456                           ||r_input_36
2457                           ||r_input_37
2458                           ||r_input_38
2459                           ||'Y' */
2460 			                    || LPAD(' ',267)
2461                           ||to_char(sysdate,'YYYYMMDD') /* 7572352 */
2462                           ||to_char(systimestamp,'HH24MISSFF2')
2463 			  /* 6648007 - Moved to RV record */
2464                           ||l_end_of_rec ;
2465         ELSE
2466          return_value :=  'RE'
2467                           ||rpad(substr(nvl(r_input_2,' '),1,4),4)
2468                           ||l_agent_indicator
2469                           ||l_emp_ein||l_agent_ein
2470                           ||l_term_indicator
2471                           ||rpad(substr(nvl(r_input_7,' '),1,4),4)
2472                           ||l_other_ein
2473                           ||rpad(substr(nvl(upper(r_input_9),' '),1,57),57)
2474                           ||rpad(substr(nvl(r_input_10,' '),1,22),22)
2475                           ||rpad(substr(nvl(r_input_11,' '),1,22),22)
2476                           ||rpad(substr(nvl(r_input_12,' '),1,22),22)
2477                           ||rpad(substr(nvl(r_input_13,' '),1,2),2)
2478                           ||rpad(substr(nvl(r_input_14,' '),1,5),5)
2479                           ||rpad(substr(nvl(r_input_15,' '),1,4),4) --Bug 13255564
2480                           ||r_input_39  -- Bug 13409513
2481                           ||rpad(' ',4) --Bug 13255564
2482                           ||rpad(substr(nvl(r_input_16,' '),1,23),23)
2483                           ||rpad(substr(nvl(r_input_17,' '),1,15),15)
2484                           ||rpad(substr(nvl(r_input_18,' '),1,2),2)
2485                           ||rpad(nvl(r_input_19,'R'),1)
2486                           ||rpad(nvl(r_input_20,' '),1)
2487                           ||rpad(nvl(r_input_21,'0'),1)
2488                           ||r_input_22
2489                           ||r_input_23
2490                           ||rpad(r_input_24,5)
2491                           ||rpad(r_input_25,15)
2492                           ||r_input_26
2493                           ||r_input_27
2494                           ||r_input_28
2495                           ||rpad(r_input_29,148)
2496                           ||rpad(l_al_wh_tax_acct_no,104,' ') -- Positions 401-410 for AL state
2497                           ||r_input_30
2498                           ||l_end_of_rec;
2499 --}
2500          END IF ;
2501          ret_str_len:=length(return_value);
2502 --}
2503       ELSIF p_input_40 = 'CSV' THEN
2504 --{
2505         IF p_report_qualifier = 'MD' THEN
2506             return_value:= 'RE'
2507                            ||','||rpad(substr(p_input_2,1,4),4)
2508                            ||','||l_agent_indicator
2509                            ||','||l_emp_ein
2510                            ||','||l_agent_ein
2511                            ||','||l_term_indicator
2512                            ||','||rpad(substr(nvl(p_input_7,' '),1,4),4)
2516                            ||','||rpad(substr(nvl(p_input_11,' '),1,22),22)
2513                            ||','||p_input_8
2514                            ||','||rpad(substr(nvl(upper(p_input_9),' '),1,57),57)
2515                            ||','||rpad(substr(nvl(p_input_10,' '),1,22),22)
2517                            ||','||rpad(substr(nvl(p_input_12,' '),1,22),22)
2518                            ||','||rpad(substr(nvl(p_input_13,' '),1,2),2)
2519                            ||','||rpad(substr(nvl(p_input_14,' '),1,5),5)
2520                            ||','||rpad(substr(nvl(p_input_15,' '),1,4),4)
2521                            ||','||r_input_39 -- Bug 13409513 --Bug 13255564
2522 			   ||','||rpad(' ',4) --Bug 13255564
2523                            ||','||rpad(substr(nvl(p_input_16,' '),1,23),23)
2524                            ||','||rpad(substr(nvl(p_input_17,' '),1,15),15)
2525                            ||','||rpad(substr(nvl(p_input_18,' '),1,2),2)
2526                            ||','||rpad(nvl(p_input_19,'R'),1)
2527                            ||','||rpad(nvl(p_input_20,' '),1)
2528                            ||','||rpad(nvl(p_input_21,'0'),1)
2529                            ||','||r_input_22
2530                            ||','||r_input_23
2531                            ||','||r_input_24
2532                            ||','||r_input_9
2533                            ||','||r_input_10
2534                            ||','||r_input_12
2535                            ||','||r_input_13
2536                            ||','||r_input_14
2537                            ||','||r_input_15
2538                            ||','||p_input_25
2539                            ||','||p_input_26
2540                            ||','||p_input_27
2541                            ||','||p_input_28
2542                            ||','||p_input_29
2543                            ||','||p_input_30
2544                            ||','||p_input_31
2545                            ||','||p_input_32
2546                            ||','||p_input_33
2547                            ||','||p_input_34
2548                            ||','||p_input_35
2549                            ||','||p_input_36
2550                            ||','||p_input_37
2551                            ||','||p_input_38
2552                            ||','||'Y' ;
2553          ELSE
2554             return_value:= 'RE'
2555                            ||','||rpad(substr(p_input_2,1,4),4)
2556                            ||','||l_agent_indicator
2557                            ||','||l_emp_ein
2558                            ||','||l_agent_ein
2559                            ||','||l_term_indicator
2560                            ||','||rpad(substr(nvl(p_input_7,' '),1,4),4)
2561                            ||','||p_input_8
2562                            ||','||rpad(substr(nvl(upper(p_input_9),' '),1,57),57)
2563                            ||','||rpad(substr(nvl(p_input_10,' '),1,22),22)
2564                            ||','||rpad(substr(nvl(p_input_11,' '),1,22),22)
2565                            ||','||rpad(substr(nvl(p_input_12,' '),1,22),22)
2566                            ||','||rpad(substr(nvl(p_input_13,' '),1,2),2)
2567                            ||','||rpad(substr(nvl(p_input_14,' '),1,5),5)
2568                            ||','||rpad(substr(nvl(p_input_15,' '),1,4),4)
2569                            ||','||r_input_39 -- Bug 13409513 --Bug 13255564
2570 			   ||','||rpad(' ',4) --Bug 13255564
2571                            ||','||rpad(substr(nvl(p_input_16,' '),1,23),23)
2572                            ||','||rpad(substr(nvl(p_input_17,' '),1,15),15)
2573                            ||','||rpad(substr(nvl(p_input_18,' '),1,2),2)
2574                            ||','||rpad(nvl(p_input_19,'R'),1)
2575                            ||','||rpad(nvl(p_input_20,' '),1)
2576                            ||','||rpad(nvl(p_input_21,'0'),1)
2577                            ||','||p_input_22
2578                            ||','||p_input_23
2579                            ||','||p_input_24
2580                            ||','||lpad(' ',3)
2581                            ||','||p_input_25
2582                            ||','||lpad(' ',3)
2583                            ||','||p_input_26
2584                            ||','||p_input_27
2585                            ||','||p_input_28
2586                            ||','||p_input_29
2587                            ||','||p_input_30;
2588 
2589         END IF ; -- p_report_qulaifier
2590 --}
2591       END IF; -- p_input_40
2592 END IF;
2593 p_error := l_exclude_from_output_chk;
2594 ret_str_len:=length(return_value);
2595 return return_value;
2596 END format_W2_RE_record; -- End of Function Formatting RE record
2597 --
2598 --
2599 
2600 -- Formatting RW record for W2 reporting
2601 -- Parameter description
2602 
2603 /*Record Identifier,                                            --> p_input_1
2604   Social Security Number,                                       --> p_input_2
2605   Employee First Name,                                          --> p_input_3
2606   Employee Middle Name or Initial,                              --> p_input_4
2607   Employee Last Name,                                           --> p_input_5
2608   Suffix,                                                       --> p_input_6
2609   Location Address,                                             --> p_input_7
2610   Delivery Address,                                             --> p_input_8
2611   City,                                                         --> p_input_9
2612   State Abbreviation,                                           --> p_input_10
2613   Zip Code,                                                     --> p_input_11
2614   Zip Code Extension,                                           --> p_input_12
2615   Blank,
2616   Foreign State / Province,                                     --> p_input_13
2617   Foreign Postal Code,                                          --> p_input_14
2621   Social Security Wages,                                        --> p_input_18
2618   Country Code,                                                 --> p_input_15
2619   Wages, Tips And Other Compensation,                           --> p_input_16
2620   Federal Income Tax Withheld,                                  --> p_input_17
2622   Social Security Tax Withheld,                                 --> p_input_19
2623   Medicare Wages And Tips,                                      --> p_input_20
2624   Medicare Tax Withheld,                                        --> p_input_21
2625   Social Security Tips,                                         --> p_input_22
2626   Advance Earned Income Credit,                                 --> p_input_23
2627   Dependent Care Benefits,                                      --> p_input_24
2628   Deferred Compensation Contributions to Section 401(k),        --> p_input_25
2629   Deferred Compensation Contributions to Section 403(b),        --> p_input_26
2630   Deferred Compensation Contributions to Section 408(k)(6),     --> p_input_27
2631   Deferred Compensation Contributions to Section 457(b),        --> p_input_28
2632   Deferred Compensation Contributions to Section 501(c)(18)(D), --> p_input_29
2633   Military EE''s Basic Quarters, Subsistence and Combat Pay,    --> p_input_30
2634   Non-Qual. plan Sec.457 Distributions or Contributions,        --> p_input_31
2635   Non-Qual. plan NOT Section 457 Distributions or Contributions,--> p_input_32
2636   Blank,
2637   Employer Cost of Premiums for GTL> $50k,                      --> p_input_33
2638   Income From Exercise of Nonqualified Stock Options,,          --> p_input_34
2639   Blank,,                                                       --> p_input_31
2640   Statutory Employee Indicator,,                                --> p_input_35
2641   Blank,
2642   Retirement Plan Indicator,,                                   --> p_input_36
2643   Third-Party Sick Pay Indicator,                               --> p_input_37
2644   Employer Contributions to a Health Savings Account            --> p_input_38
2645   Non Taxable Combat Pay                                        --> p_input_41
2646   Deferrals Und a Sec 409A Non-Qualified Deferred Comp Plan     --> p_input_42
2647   Designated Roth Contributions to a section 401(k) Plan        --> p_input_43
2648   Designated Roth Contributions Under a section 403(b) Salaray  --> p_input_44
2649 */
2650 
2651 FUNCTION format_W2_RW_record(
2652                    p_effective_date       IN  varchar2,
2653                    p_report_type          IN  varchar2,
2654                    p_format               IN  varchar2,
2655                    p_report_qualifier     IN  varchar2,
2656                    p_record_name          IN  varchar2,
2657                    p_input_1              IN  varchar2,
2658                    p_input_2              IN  varchar2,
2659                    p_input_3              IN  varchar2,
2660                    p_input_4              IN  varchar2,
2661                    p_input_5              IN  varchar2,
2662                    p_input_6              IN  varchar2,
2663                    p_input_7              IN  varchar2,
2664                    p_input_8              IN  varchar2,
2665                    p_input_9              IN  varchar2,
2666                    p_input_10             IN  varchar2,
2667                    p_input_11             IN  varchar2,
2668                    p_input_12             IN  varchar2,
2669                    p_input_13             IN  varchar2,
2670                    p_input_14             IN  varchar2,
2671                    p_input_15             IN  varchar2,
2672                    p_input_16             IN  varchar2,
2673                    p_input_17             IN  varchar2,
2674                    p_input_18             IN  varchar2,
2675                    p_input_19             IN  varchar2,
2676                    p_input_20             IN  varchar2,
2677                    p_input_21             IN  varchar2,
2678                    p_input_22             IN  varchar2,
2679                    p_input_23             IN  varchar2,
2680                    p_input_24             IN  varchar2,
2681                    p_input_25             IN  varchar2,
2682                    p_input_26             IN  varchar2,
2683                    p_input_27             IN  varchar2,
2684                    p_input_28             IN  varchar2,
2685                    p_input_29             IN  varchar2,
2686                    p_input_30             IN  varchar2,
2687                    p_input_31             IN  varchar2,
2688                    p_input_32             IN  varchar2,
2689                    p_input_33             IN  varchar2,
2690                    p_input_34             IN  varchar2,
2691                    p_input_35             IN  varchar2,
2692                    p_input_36             IN  varchar2,
2693                    p_input_37             IN  varchar2,
2694                    p_input_38             IN  varchar2,
2695                    p_input_39             IN  varchar2,
2696                    p_input_40             IN  varchar2,
2697                    p_validate             IN  varchar2,
2698                    p_exclude_from_output  OUT nocopy varchar2,
2699                    sp_out_1               OUT nocopy varchar2,
2700                    sp_out_2               OUT nocopy varchar2,
2701                    sp_out_3               OUT nocopy varchar2,
2702                    sp_out_4               OUT nocopy varchar2,
2703                    sp_out_5               OUT nocopy varchar2,
2704                    ret_str_len            OUT nocopy number,
2705                    p_error                OUT nocopy boolean,
2706                    p_input_41             IN  varchar2 default null,
2707                    p_input_42             IN  varchar2 default null,
2711 
2708                    p_input_43             IN  varchar2 default null,
2709                    p_input_44             IN  varchar2 default null,
2710                    p_input_45             IN  varchar2 default null  /* Bug 13351713 */
2712                  ) RETURN VARCHAR2
2713 IS
2714 
2715 l_full_name                varchar2(100);
2716 l_emp_name_or_number       varchar2(50);
2717 l_emp_number               varchar2(50);
2718 l_first_name               varchar2(150);
2719 l_middle_name              varchar2(100);
2720 l_last_name                varchar2(150);
2721 l_suffix                   varchar2(100);
2722 l_ssn                      varchar2(100);
2723 l_message                  varchar2(2000);
2724 l_description              varchar2(50);
2725 l_field_description        varchar2(50);
2726 l_ss_count                 number(10);
2727 l_amount                   number(10);
2728 return_value               varchar2(32767);
2729 l_err                      boolean;
2730 l_exclude_from_output_chk  boolean;
2731 l_ss_tax_limit  pay_us_federal_tax_info_f.ss_ee_wage_limit%TYPE;
2732 l_ss_wage_limit  pay_us_federal_tax_info_f.ss_ee_wage_limit%TYPE;
2733 
2734 TYPE function_columns IS RECORD(
2735                                 p_parameter_name  varchar2(100),
2736                                 p_parameter_value varchar2(100),
2737                                 p_output_value varchar2(100)
2738                                );
2739 function_parameter_rec  function_columns;
2740 TYPE input_parameter_record IS TABLE OF function_parameter_rec%TYPE
2741                                INDEX BY BINARY_INTEGER;
2742 parameter_record input_parameter_record;
2743 
2744 r_input_1                  varchar2(300);
2745 r_input_2                  varchar2(300);
2746 r_input_3                  varchar2(300);
2747 r_input_4                  varchar2(300);
2748 r_input_5                  varchar2(300);
2749 r_input_6                  varchar2(300);
2750 r_input_7                  varchar2(300);
2751 r_input_8                  varchar2(300);
2752 r_input_9                  varchar2(300);
2753 r_input_10                 varchar2(300);
2754 r_input_11                 varchar2(300);
2755 r_input_12                 varchar2(300);
2756 r_input_13                 varchar2(300);
2757 r_input_14                 varchar2(300);
2758 r_input_15                 varchar2(300);
2759 r_input_16                 varchar2(300);
2760 r_input_17                 varchar2(300);
2761 r_input_18                 varchar2(300);
2762 r_input_19                 varchar2(300);
2763 r_input_20                 varchar2(300);
2764 r_input_21                 varchar2(300);
2765 r_input_22                 varchar2(300);
2766 r_input_23                 varchar2(300);
2767 r_input_24                 varchar2(300);
2768 r_input_25                 varchar2(300);
2769 r_input_26                 varchar2(300);
2770 r_input_27                 varchar2(300);
2771 r_input_28                 varchar2(300);
2772 r_input_29                 varchar2(300);
2773 r_input_30                 varchar2(300);
2774 r_input_31                 varchar2(300);
2775 r_input_32                 varchar2(300);
2776 r_input_33                 varchar2(300);
2777 r_input_34                 varchar2(300);
2778 r_input_35                 varchar2(300);
2779 r_input_36                 varchar2(300);
2780 r_input_37                 varchar2(300);
2781 r_input_38                 varchar2(300);
2782 r_input_39                 varchar2(300);
2783 /* Bug # 4391218 */
2784 r_input_40                 varchar2(300) ;
2785 r_input_41                 varchar2(300) ;
2786 /* Bug # 5256745 */
2787 r_input_42                 varchar2(300) ;
2788 r_input_43                 varchar2(300) ;
2789 /* Bug 13351713 */
2790 r_input_45                 varchar2(300) ;
2791 
2792 CURSOR GET_SS_LIMIT(c_date varchar2)
2793 IS
2794 SELECT SS_EE_WAGE_LIMIT*100,
2795        (SS_EE_WAGE_LIMIT*SS_EE_RATE)*100 tax
2796 FROM   PAY_US_FEDERAL_TAX_INFO_F
2797 WHERE  TO_DATE(C_DATE,'DD-MM-YYYY') BETWEEN EFFECTIVE_START_DATE
2798                                         AND EFFECTIVE_END_DATE
2799 AND    FED_INFORMATION_CATEGORY = '401K LIMITS';
2800 
2801 BEGIN
2802    hr_utility.trace('Formatting RW record');
2803    hr_utility.trace('Formatting Mode = '||p_input_40);
2804 -- Initializing local variables with parameter value
2805 --{
2806    r_input_2 := p_input_2;
2807    r_input_3 := p_input_3;
2808    r_input_4 := p_input_4;
2809    r_input_5 := p_input_5;
2810    r_input_6 := p_input_6;
2811    r_input_7 := p_input_7;
2812    r_input_8 := p_input_8;
2813    r_input_9 := p_input_9;
2814    r_input_10 := p_input_10;
2815    r_input_11 := p_input_11;
2816    r_input_12 := p_input_12;
2817    r_input_13 := p_input_13;
2818    r_input_14 := p_input_14;
2819    r_input_15 := p_input_15;
2820    r_input_16 := p_input_16;
2821    r_input_17 := p_input_17;
2822    r_input_18 := p_input_18;
2823    r_input_19 := p_input_19;
2824    r_input_20 := p_input_20;
2825    r_input_21 := p_input_21;
2826    r_input_22 := p_input_22;
2827    r_input_23 := p_input_23;
2828    r_input_24 := p_input_24;
2829    r_input_25 := p_input_25;
2830    r_input_26 := p_input_26;
2831    r_input_27 := p_input_27;
2832    r_input_28 := p_input_28;
2833    r_input_29 := p_input_29;
2834    r_input_30 := p_input_30;
2835    r_input_31 := p_input_31;
2836    r_input_32 := p_input_32;
2837    r_input_33 := p_input_33;
2838    r_input_34 := p_input_34;
2839    r_input_35 := p_input_35;
2840    r_input_36 := p_input_36;
2841    r_input_37 := p_input_37;
2842    r_input_38 := p_input_38;
2843    r_input_39 := p_input_39;
2844    r_input_40 := p_input_41 ;
2845    r_input_41 := p_input_42 ; -- Bug # 4391218
2849 --}
2846    r_input_42 := p_input_43 ;
2847    r_input_43 := p_input_44 ; -- Bug # 5256745
2848    r_input_45 := p_input_45 ; -- Bug # 13351713
2850 
2851 --
2852    IF p_input_40 = 'FLAT' THEN
2853 
2854 -- Following Formattings are required for data validation
2855 --
2856 --{
2857 
2858 	/*5155648*/
2859 	/* commented for bug 7109106 */
2860 /*	IF (p_report_qualifier = 'FED' and
2861              r_input_10 = 'PR') THEN
2862              r_input_33 := '0';
2863 
2864         END IF;  */
2865 
2866 
2867          /* For fixing bug # 2645739 instead of input parameters, local variables were formatted
2868             and used for Flat reocrd */
2869          IF ((p_report_qualifier = 'NC') OR
2870              (p_report_qualifier = 'MO_STLOU')) THEN
2871 --{
2872              r_input_18 := '0';
2873              r_input_19 := '0';
2874              r_input_20 := '0';
2875              r_input_21 := '0';
2876              r_input_22 := '0';
2877              r_input_23 := '0';
2878              r_input_24 := '0';
2879              r_input_25 := '0';
2880              r_input_26 := '0';
2881              r_input_27 := '0';
2882              r_input_28 := '0';
2883              r_input_29 := '0';
2884              r_input_30 := '0';
2885              r_input_31 := '0';
2886              r_input_32 := '0';
2887              r_input_33 := '0';
2888              r_input_34 := '0';
2889 --}
2890          END IF;
2891 
2892          IF p_report_qualifier = 'MO_STLOU' THEN
2893 --{
2894             r_input_17 := '0';
2895             r_input_25 := p_input_25;
2896             r_input_26 := p_input_26;
2897             r_input_27 := p_input_27;
2898             r_input_28 := p_input_28;
2899             r_input_29 := p_input_29;
2900 --}
2901          END IF;
2902 
2903          IF  p_report_qualifier = 'PR' THEN
2904 --{
2905              r_input_16 := '0';
2906              r_input_17 := '0';
2907              r_input_23 := '0';
2908              r_input_24 := '0';
2909              r_input_25 := '0';
2910              r_input_26 := '0';
2911              r_input_27 := '0';
2912              r_input_28 := '0';
2913              r_input_29 := '0';
2914              r_input_30 := '0';
2915              r_input_31 := '0';
2916              r_input_32 := '0';
2917              r_input_33 := '0';
2918 	     r_input_38 := '0';   /* Bug 3680056 NR-Zero fill for PR */
2919 --}
2920          END IF;
2921 
2922 --       Fix for Bug# 4502738
2923          IF  p_report_qualifier = 'MO_KNSAS' THEN
2924 --{
2925              r_input_17 := '0';  -- Federal Income Tax Withheld
2926              r_input_18 := '0';  -- Social Security Wages
2927              r_input_19 := '0';  -- Social Security Tax Withheld
2928              r_input_22 := '0';  -- Social Security Tips
2929              r_input_23 := '0';  -- Advance Earned Income Credit
2930              r_input_24 := '0';  -- Dependent Care Benefits
2931              r_input_25 := '0';  -- Deferred Compensation Contributions to Section 401(k)
2932              r_input_26 := '0';  -- Deferred Compensation Contributions to Section 403(b)
2933              r_input_27 := '0';  -- Deferred Compensation Contributions to Section 408(k)(6)
2934              r_input_28 := '0';  -- Deferred Compensation Contributions to Section 457(b)
2935              r_input_29 := '0';  -- Deferred Compensation Contributions to Section 501(c)(18)(D)
2936              r_input_30 := lpad(' ',11); -- Blank
2937              r_input_31 := '0';  -- Non-Qual. plan Sec.457 Distributions or Contributions
2938              r_input_32 := '0';  -- Non-Qual. plan NOT Section 457 Distributions or Contributions
2939              r_input_33 := '0';  -- Employer Cost of Premiums for GTL> $50k
2940              r_input_34 := '0';  -- Income from nonqualified stock option
2941              r_input_38 := '0';  -- Employer Contributions to Health Savings Account
2942              r_input_41 := '0';  -- Deferrals Under Sec 409A Non-Qual Def Comp Plan
2943 --}
2944          END IF;
2945 
2946 
2947 /* Bug # 3186636 */
2948 --{
2949 /* 7572620 */
2950          IF p_report_qualifier = 'WV' THEN
2951 
2952             /*       r_input_7 := ' ';
2953              r_input_13 := ' ';
2954              r_input_14 := ' ';
2955              r_input_15 := ' ';
2956              r_input_18 := '0';
2957              r_input_19 := '0';
2958              r_input_20 := '0';
2959              r_input_21 := '0';
2960              r_input_22 := '0';
2961              r_input_23 := '0';
2962              r_input_24 := '0';
2963              r_input_25 := '0';
2964              r_input_26 := '0';
2965              r_input_27 := '0';
2966              r_input_28 := '0';
2967              r_input_29 := '0'; */
2968              r_input_30 := '0';
2969           /*   r_input_31 := '0';
2970              r_input_32 := '0';
2971              r_input_33 := '0';
2972              r_input_34 := '0';
2973              r_input_35 := ' ';
2974              r_input_36 := ' ';
2975              r_input_37 := ' '; */
2976 
2977          END IF;
2978 
2979 
2980 --}
2981 --
2982 -- Formatting completes before data validation
2983 --
2984          parameter_record(1).p_parameter_name:= ' Wages,Tips And Other Compensation';
2985          parameter_record(1).p_parameter_value:=r_input_16;
2986 
2987          parameter_record(2).p_parameter_name:= ' Federal Income Tax Withheld';
2988          parameter_record(2).p_parameter_value:=r_input_17;
2989 
2990          parameter_record(3).p_parameter_name:= 'SS Wages';
2991          parameter_record(3).p_parameter_value:=r_input_18;
2992 
2996          parameter_record(5).p_parameter_name:= 'Medicare Wages And Tips';
2993          parameter_record(4).p_parameter_name:= ' Social Security Tax Withheld';
2994          parameter_record(4).p_parameter_value:=r_input_19;
2995 
2997          parameter_record(5).p_parameter_value:=r_input_20;
2998 
2999          parameter_record(6).p_parameter_name:= 'Medicare Tax Withheld';
3000          parameter_record(6).p_parameter_value:=r_input_21;
3001 
3002          parameter_record(7).p_parameter_name:= 'SS Tips';
3003          parameter_record(7).p_parameter_value:=r_input_22;
3004 
3005          parameter_record(8).p_parameter_name:= 'Advance Earned Income Credit';
3006          parameter_record(8).p_parameter_value:=r_input_23;
3007 
3008          parameter_record(9).p_parameter_name:= 'Dependent Care Benefits';
3009          parameter_record(9).p_parameter_value:=r_input_24;
3010 
3011          parameter_record(10).p_parameter_name:= 'Deferred Comp Contr. to Sec 401(k)';
3012          parameter_record(10).p_parameter_value:=r_input_25;
3013 
3014          parameter_record(11).p_parameter_name:= 'Deferred Comp Contr. to Sec 403(b)';
3015          parameter_record(11).p_parameter_value:=r_input_26;
3016 
3017          parameter_record(12).p_parameter_name:= 'Deferred Comp Contr. to Sec 408(k)(6)';
3018          parameter_record(12).p_parameter_value:=r_input_27;
3019 
3020          parameter_record(13).p_parameter_name:= 'Deferred Comp Contr. to Sec 457(b)';
3021          parameter_record(13).p_parameter_value:=r_input_28;
3022 
3023          parameter_record(14).p_parameter_name:= 'Deferred Comp Contr. to Sec 501(c)';
3024          parameter_record(14).p_parameter_value:=r_input_29;
3025          /* As A_W2_MILITARY_HOUSING_Q is disabled this field will be blank filled
3026            no standard numeric validation would be performed
3027            parameter_record(15).p_parameter_name:= 'Military Combat Pay';
3028            parameter_record(15).p_parameter_value:=p_input_30;
3029          */
3030          parameter_record(15).p_parameter_name:= 'Non-Qual. plan Sec 457';
3031          parameter_record(15).p_parameter_value:=r_input_31;
3032 
3033          parameter_record(16).p_parameter_name:= 'Non-Qual. plan NOT Sec 457';
3034          parameter_record(16).p_parameter_value:=r_input_32;
3035 
3036          parameter_record(17).p_parameter_name:= 'Employer cost of premiun';
3037          parameter_record(17).p_parameter_value:=r_input_33;
3038 
3039          parameter_record(18).p_parameter_name:= 'Income from nonqualified stock option';
3040          parameter_record(18).p_parameter_value:=r_input_34;
3041 
3042          /* Bug 3680056 New field */
3043 	 parameter_record(19).p_parameter_name:= 'Employer Contributions to Health Savings Account';
3044          parameter_record(19).p_parameter_value:=r_input_38;
3045 
3046          parameter_record(20).p_parameter_name:= 'Non-Taxable Combat Pay';
3047          parameter_record(20).p_parameter_value:=r_input_40 ; -- Bug # 4391218
3048 
3049          parameter_record(21).p_parameter_name:= 'Deferrals Under Sec 409A Non-Qual Def Comp Plan';
3050          parameter_record(21).p_parameter_value:=r_input_41 ; -- Bug # 4391218
3051          /* Bug 5256745 */
3052          parameter_record(22).p_parameter_name:= 'Roth Contributions Und Sec 401(k) Plan';
3053          parameter_record(22).p_parameter_value:=r_input_42 ; -- Bug # 5256745
3054 
3055          parameter_record(23).p_parameter_name:= 'Roth Contributions Und Sec 403(b) Plan';
3056          parameter_record(23).p_parameter_value:=r_input_43 ; -- Bug # 5256745
3057 
3058 	 parameter_record(24).p_parameter_name:= 'Cost of Employer-Sponsored Health Coverage';
3059          parameter_record(24).p_parameter_value:=r_input_45 ; -- Bug # 13419483
3060 
3061 
3062          l_first_name := pay_us_reporting_utils_pkg.Character_check(rpad(nvl(
3063                                         substr(p_input_3,1,15),' '),15));
3064          l_middle_name := pay_us_reporting_utils_pkg.Character_check(rpad(nvl(
3065                                         substr(p_input_4,1,15),' '),15));
3066          l_last_name :=  pay_us_reporting_utils_pkg.Character_check(rpad(nvl(
3067                                         substr(p_input_5,1,20),' '),20));
3068          l_suffix := pay_us_reporting_utils_pkg.Character_check(rpad(nvl(
3069                                         substr(p_input_6,1,4),' '),4));
3070          l_full_name := substr(ltrim(rtrim(p_input_3)||' '||
3071                                      rtrim(p_input_5)),1,50);
3072 
3073          l_emp_number := replace(p_input_39,' ');
3074 
3075          IF l_emp_number IS NULL THEN
3076             l_emp_name_or_number := l_full_name;
3077             hr_utility.trace('l_emp_name_or_number = '||l_emp_name_or_number);
3078          ELSE
3079             l_emp_name_or_number:= l_emp_number;
3080             hr_utility.trace('l_emp_name_or_number = '||l_emp_name_or_number);
3081          END IF;
3082 --
3083 --   Validation for RW Record  Start
3084 --
3085 --   SSN Validation
3086          l_ssn :=
3087            pay_us_reporting_utils_pkg.data_validation( p_effective_date,
3088                                                       p_report_type,
3089                                                       p_format,
3090                                                       p_report_qualifier,
3091                                                       p_record_name,
3092                                                       'SSN',
3093                                                       p_input_2,
3094                                                       'Social Security',
3095                                                       l_emp_name_or_number,
3096                                                       null,
3097                                                       p_validate,
3098                                                       p_exclude_from_output,
3099                                                       sp_out_1,
3103          END IF;
3100                                                       sp_out_2);
3101          IF p_exclude_from_output = 'Y' THEN
3102             l_exclude_from_output_chk := TRUE;
3104 
3105 --    Various Amount Validation for for Neg value. If value is found negative record
3106 --            is marked for exclusion
3107          FOR i in 1..24 --23   -- Bug # 13419483
3108          LOOP
3109             parameter_record(i).p_output_value :=
3110                 pay_us_reporting_utils_pkg.data_validation(
3111                                                 p_effective_date,
3112                                                 p_report_type,
3113                                                 p_format,
3114                                                 p_report_qualifier,
3115                                                 p_record_name,
3116                                                 'NEG_CHECK',
3117                                                 parameter_record(i).p_parameter_value,
3118                                                 parameter_record(i).p_parameter_name,
3119                                                 l_emp_name_or_number, --EE number for mesg
3120                                                 null,
3121                                                 p_validate,
3122                                                 p_exclude_from_output,
3123                                                 sp_out_1,
3124                                                 sp_out_2);
3125 
3126             IF p_exclude_from_output = 'Y' THEN
3127                l_exclude_from_output_chk := TRUE;
3128             END IF;
3129             hr_utility.trace(parameter_record(i).p_parameter_name||' = '||
3130                                        parameter_record(i).p_output_value);
3131             hr_utility.trace('p_exclude_from_output = '||p_exclude_from_output);
3132 
3133          END LOOP;
3134 
3135          hr_utility.trace('SS Wage and Tax limit Checking begins.' );
3136          OPEN get_ss_limit(p_effective_date);
3137          LOOP
3138             FETCH get_ss_limit INTO l_ss_wage_limit,
3139                                     l_ss_tax_limit;
3140             hr_utility.trace('SS Wage Limit '||to_char(l_ss_wage_limit));
3141             l_ss_count:= get_ss_limit%ROWCOUNT;
3142             EXIT WHEN get_ss_limit%NOTFOUND ;
3143          END LOOP;
3144          CLOSE get_ss_limit;
3145          hr_utility.trace('No. rows exist for limit '||to_char(l_ss_count));
3146 
3147          IF l_ss_count = 0 THEN
3148             hr_utility.trace('No data found on PAY_US_FEDERAL_TAX_INFO_F '||
3149                                  'for Social security wage limits.');
3150          ELSIF l_ss_count >1 THEN
3151             hr_utility.trace('Too many rows on PAY_US_FEDERAL_TAX_INFO_F '||
3152                                  'for Social security wage limits.');
3153          ELSIF l_ss_count=1 THEN
3154 --{
3155             IF (to_number(parameter_record(3).p_output_value) > 0 OR
3156                 to_number(parameter_record(4).p_output_value) > 0 OR
3157                 to_number(parameter_record(7).p_output_value) > 0 )
3158             THEN
3159 --{
3160                hr_utility.trace('SS Tax w/h, SS Tips, SS Wages are >0 ');
3161                IF (to_number(parameter_record(3).p_output_value)+
3162                        to_number(parameter_record(7).p_output_value))
3163                        > l_ss_wage_limit
3164                THEN
3165                  hr_utility.trace('ss_tips+ss_wages is > '||
3166                                   to_char(l_ss_wage_limit));
3167                  l_field_description:='the sum of '||
3168                                       parameter_record(3).p_parameter_name
3169                                       ||' and '||
3170                                       parameter_record(7).p_parameter_name;
3171                  l_amount:=l_ss_wage_limit/100;
3172                  l_description:=' It is greater than  '||to_char(l_amount);
3173                  pay_core_utils.push_message(801,'PAY_INVALID_EE_DATA','A');
3174                  pay_core_utils.push_token('record_name',p_record_name);
3175                  pay_core_utils.push_token('name_or_number',
3176                                       substr(l_emp_name_or_number,1,50));
3177                  pay_core_utils.push_token('field_name',l_field_description);
3178                  pay_core_utils.push_token('description',
3179                                            substr(l_description,1,50));
3180                  l_err := TRUE;
3181                END IF;
3182 
3183                IF to_number(parameter_record(4).p_output_value)>l_ss_tax_limit
3184                THEN
3185 --{
3186                  hr_utility.trace('SS Tax w/h is > '||
3187                                   to_char(l_ss_tax_limit));
3188                  l_err := TRUE;
3189                  l_amount:=l_ss_tax_limit/100;
3190                  l_description:=' It is greater than  '||to_char(l_amount);
3191                  pay_core_utils.push_message(801,'PAY_INVALID_EE_DATA','A');
3192                  pay_core_utils.push_token('record_name',p_record_name);
3193                  pay_core_utils.push_token('name_or_number',
3194                                            substr(l_emp_name_or_number,1,50));
3195                  pay_core_utils.push_token('field_name',parameter_record(4).p_parameter_name);
3196                  pay_core_utils.push_token('description',l_description);
3197 /* Sample message for SS Wage/Tax limit
3198    Error in RW record for Employee 1234 in Social Security Tax Withheld. It is greater than 498480  */
3199 --}
3200                  END IF; --l_ss_tax_limit
3201 --}
3202               END IF; -- negative check
3203 --}
3204             END IF; --l_ss_count
3205 
3206             hr_utility.trace('After SS Wage/ Tax limit checking ');
3207 
3208             IF l_err THEN
3209                IF p_validate = 'Y' THEN
3210                   p_exclude_from_output := 'Y';
3211                END IF;
3212             END IF;
3213 
3214             IF p_exclude_from_output = 'Y' THEN
3215                l_exclude_from_output_chk := TRUE;
3216             END IF;
3217 --
3218 -- Validation for RW record Ends here
3219 --
3220 
3221 -- Formatting feields for Geo specific requirements
3222 --
3223 
3224 
3225             /* Fix for Bug # 2767254 */
3226             IF  p_report_qualifier = 'PR' THEN
3227                 --r_input_30 := rpad('0',11,'0');
3228                 --r_input_30 := lpad(' ',11); --Bug 14799506, pos 342-352 blank fill
3229                 r_input_30 := rpad('0',11,'0');--For the Bug 16173051
3230                 r_input_31 := rpad('0',11,'0');
3231                 r_input_32 := rpad('0',22,'0');
3232             ELSE
3233                 --r_input_30 := lpad('0',11,'0'); /* Bug 4859212 */
3234                 r_input_30 := lpad(' ',11); --Bug 14799506, pos 342-352 blank fill
3235                 r_input_31 := lpad(' ',11);
3236                 r_input_32 := lpad(' ',22);
3237             END IF;
3238 
3239             IF (p_report_qualifier = 'MO_STLOU') THEN
3240                l_first_name   := lpad(' ',15);
3241                l_middle_name  := lpad(' ',15);
3242                l_last_name    := lpad(' ',20);
3243             END IF;
3244 
3245             /* For State of NC, suffix is blank filled Bug # 2645739 */
3246             IF(( p_report_qualifier = 'NC') OR
3247                (p_report_qualifier = 'MO_STLOU')) THEN
3248                l_suffix   := lpad(' ',4);
3249             END IF;
3250 
3251          IF ((p_report_qualifier = 'NC') OR
3252              (p_report_qualifier = 'MO_STLOU')) THEN
3253 --{
3254              r_input_7  := ' ';
3255              r_input_8  := ' ';
3256              r_input_9  := ' ';
3257              r_input_10 := ' ';
3258              r_input_11 := ' ';
3259              r_input_12 := ' ';
3260              r_input_13 := ' ';
3261              r_input_14 := ' ';
3262              r_input_15 := ' ';
3263              r_input_35 := ' ';
3264              r_input_36 := ' ';
3265              r_input_37 := ' ';
3266          END IF;
3267 
3268 --       Fix for Bug# 4502738
3269          -- Bug 4739790
3270          -- Removed the blanking of fields r_input_8 and r_input_9
3271          -- as they are required for MO_KNSAS
3272          IF (p_report_qualifier = 'MO_KNSAS') THEN
3273 --{
3274              r_input_13 := ' ';
3275              r_input_14 := ' ';
3276              r_input_15 := ' ';
3277              r_input_35 := ' ';
3278              r_input_36 := ' ';
3279              r_input_37 := ' ';
3280          END IF;
3281 --       Fix for Bug# 4391218
3282 
3283          r_input_40 := parameter_record(20).p_output_value ;
3284 
3285          IF ( p_report_qualifier = 'MO_KNSAS') THEN
3286              r_input_40 := lpad('0',22,'0') ;
3287 	     r_input_30 := lpad(' ',11) ; -- Keep it as it is in spec not changed for #4859212
3288          END IF ;
3289 
3290 
3291 --       End of Fix for Bug# 4391218
3292 
3293 			   --For the Bug#10266267
3294 --commented out for bug 11800770
3295 /*				 IF p_report_qualifier = 'VT' THEN
3296 
3297 						--r_input_34 := lpad(' ',11);
3298 						parameter_record(18).p_output_value := lpad(' ',11);
3299 
3300          END IF;*/
3301 
3302 
3303          hr_utility.trace('Before formatting and returning RW record for the flat file');
3304 
3305 -- Formatting Wage Record for .mf reporting file
3306 --
3307 	IF p_report_qualifier = 'IN' THEN
3308 	 return_value := 'RW'||l_ssn||l_first_name
3309                              ||l_middle_name
3310                              ||l_last_name||l_suffix
3311                              ||rpad(substr(nvl(r_input_7,' '),1,22),22)
3312                              ||rpad(substr(nvl(r_input_8,' '),1,22),22)
3313                              ||rpad(substr(nvl(r_input_9,' '),1,22),22)
3314                              ||rpad(substr(nvl(r_input_10,' '),1,2),2)
3315                              ||rpad(substr(nvl(r_input_11,' '),1,5),5)
3316                              ||rpad(substr(nvl(r_input_12,' '),1,4),9)
3317                              ||rpad(substr(nvl(r_input_13,' '),1,23),23)
3318                              ||rpad(substr(nvl(r_input_14,' '),1,15),15)
3319                              ||rpad(substr(nvl(r_input_15,' '),1,2),2)
3320                              ||parameter_record(1).p_output_value
3321                              ||parameter_record(2).p_output_value
3322                              ||parameter_record(3).p_output_value
3323                              ||parameter_record(4).p_output_value
3324                              ||parameter_record(5).p_output_value
3325                              ||parameter_record(6).p_output_value
3326                              ||parameter_record(7).p_output_value
3327                              ||parameter_record(8).p_output_value
3328                              ||parameter_record(9).p_output_value
3329                              ||parameter_record(10).p_output_value
3330                              ||parameter_record(11).p_output_value
3331                              ||parameter_record(12).p_output_value
3332                              ||parameter_record(13).p_output_value
3333                              ||parameter_record(14).p_output_value
3334                              -- ||parameter_record(15).p_output_value
3335                              --lpad(' ',11)
3339 			     -- Bug 3680056 New Field 364-374
3336                              ||r_input_30
3337                              --||rpad(parameter_record(15).p_output_value,22)
3338                              ||parameter_record(15).p_output_value
3340                              ||parameter_record(19).p_output_value
3341                              --||rpad(parameter_record(16).p_output_value,33)
3342                              ||parameter_record(16).p_output_value
3343                              --||r_input_32
3344                              ||rpad(r_input_40,22,' ')
3345                              ||parameter_record(17).p_output_value
3346                              --||rpad(parameter_record(18).p_output_value,67)
3347                              ||parameter_record(18).p_output_value
3348                              --||rpad(parameter_record(21).p_output_value,56,' ')
3349                             /* Bug 7569563 */
3350                              ||parameter_record(21).p_output_value
3351                              ||parameter_record(22).p_output_value
3352                              ||parameter_record(23).p_output_value --Bug 13255564
3353                             ||lpad(nvl(r_input_45,'0'),11,'0')  /* Bug# 13351713 */
3354                      ||rpad(' ',12)    /*Bug 13351713 --Cost of Employer-sponsored Health Coverage for 2011 */
3355                              ||rpad(substr(nvl(r_input_35,'0'),1,1),2)
3356                              ||rpad(substr(nvl(r_input_36,'0'),1,1),1)
3357                              ||rpad(substr(nvl(r_input_37,'0'),1,1),24);
3358 			  --   || rpad(' ',83); /* 6648064 */
3359             ELSIF p_report_qualifier = 'PR' THEN   --Bug 13255564
3360             return_value := 'RW'||l_ssn||l_first_name
3361                              ||l_middle_name
3362                              ||l_last_name||l_suffix
3363                              ||rpad(substr(nvl(r_input_7,' '),1,22),22)
3364                              ||rpad(substr(nvl(r_input_8,' '),1,22),22)
3365                              ||rpad(substr(nvl(r_input_9,' '),1,22),22)
3366                              ||rpad(substr(nvl(r_input_10,' '),1,2),2)
3367                              ||rpad(substr(nvl(r_input_11,' '),1,5),5)
3368                              ||rpad(substr(nvl(r_input_12,' '),1,4),9)
3369                              ||rpad(substr(nvl(r_input_13,' '),1,23),23)
3370                              ||rpad(substr(nvl(r_input_14,' '),1,15),15)
3371                              ||rpad(substr(nvl(r_input_15,' '),1,2),2)
3372                              ||parameter_record(1).p_output_value
3373                              ||parameter_record(2).p_output_value
3374                              ||parameter_record(3).p_output_value
3375                              ||parameter_record(4).p_output_value
3376                              ||parameter_record(5).p_output_value
3377                              ||parameter_record(6).p_output_value
3378                              ||parameter_record(7).p_output_value
3379                              ||parameter_record(8).p_output_value
3380                              ||parameter_record(9).p_output_value
3381                              ||parameter_record(10).p_output_value
3382                              ||parameter_record(11).p_output_value
3383                              ||parameter_record(12).p_output_value
3384                              ||parameter_record(13).p_output_value
3385                              ||parameter_record(14).p_output_value
3386                              -- ||parameter_record(15).p_output_value
3387                              --lpad(' ',11)
3388                              ||r_input_30
3389                              --||rpad(parameter_record(15).p_output_value,22)
3390                              ||parameter_record(15).p_output_value
3391 			     -- Bug 3680056 New Field 364-374
3392                              ||parameter_record(19).p_output_value
3393                              --||rpad(parameter_record(16).p_output_value,33)
3394                              ||parameter_record(16).p_output_value
3395                              --||r_input_32
3396                              ||rpad(r_input_40,22,' ')
3397                              ||parameter_record(17).p_output_value
3398                              --||rpad(parameter_record(18).p_output_value,67)
3399                              ||parameter_record(18).p_output_value
3400                              --||rpad(parameter_record(21).p_output_value,56,' ')
3401                              /* Bug 5256745 */
3402                              ||parameter_record(21).p_output_value
3403                              ||parameter_record(22).p_output_value
3404                              ||parameter_record(23).p_output_value --Bug 13255564
3405 			 ||lpad(nvl(r_input_45,'0'),11,'0')  /* Bug# 13351713 */
3406                       ||rpad(' ',12)      /* Bug 13255564 --Cost of Employer-sponsored Health Coverage  for PR  */
3407                              ||rpad(substr(nvl(r_input_35,'0'),1,1),2)
3408                              ||rpad(substr(nvl(r_input_36,'0'),1,1),1)
3409                              ||rpad(substr(nvl(r_input_37,'0'),1,1),24);
3410 
3411 						ELSE
3412 						return_value := 'RW'||l_ssn||l_first_name
3413                              ||l_middle_name
3414                              ||l_last_name||l_suffix
3415                              ||rpad(substr(nvl(r_input_7,' '),1,22),22)
3416                              ||rpad(substr(nvl(r_input_8,' '),1,22),22)
3417                              ||rpad(substr(nvl(r_input_9,' '),1,22),22)
3418                              ||rpad(substr(nvl(r_input_10,' '),1,2),2)
3419                              ||rpad(substr(nvl(r_input_11,' '),1,5),5)
3420                              ||rpad(substr(nvl(r_input_12,' '),1,4),9)
3421                              ||rpad(substr(nvl(r_input_13,' '),1,23),23)
3422                              ||rpad(substr(nvl(r_input_14,' '),1,15),15)
3423                              ||rpad(substr(nvl(r_input_15,' '),1,2),2)
3424                              ||parameter_record(1).p_output_value
3428                              ||parameter_record(5).p_output_value
3425                              ||parameter_record(2).p_output_value
3426                              ||parameter_record(3).p_output_value
3427                              ||parameter_record(4).p_output_value
3429                              ||parameter_record(6).p_output_value
3430                              ||parameter_record(7).p_output_value
3431                              ||parameter_record(8).p_output_value
3432                              ||parameter_record(9).p_output_value
3433                              ||parameter_record(10).p_output_value
3434                              ||parameter_record(11).p_output_value
3435                              ||parameter_record(12).p_output_value
3436                              ||parameter_record(13).p_output_value
3437                              ||parameter_record(14).p_output_value
3438                              -- ||parameter_record(15).p_output_value
3439                              --lpad(' ',11)
3440                              ||r_input_30
3441                              --||rpad(parameter_record(15).p_output_value,22)
3442                              ||parameter_record(15).p_output_value
3443 			     -- Bug 3680056 New Field 364-374
3444                              ||parameter_record(19).p_output_value
3445                              --||rpad(parameter_record(16).p_output_value,33)
3446                              ||parameter_record(16).p_output_value
3447                              --||r_input_32
3448                              ||rpad(r_input_40,22,' ')
3449                              ||parameter_record(17).p_output_value
3450                              --||rpad(parameter_record(18).p_output_value,67)
3451                              ||parameter_record(18).p_output_value
3452                              --||rpad(parameter_record(21).p_output_value,56,' ')
3453                              /* Bug 5256745 */
3454                              ||parameter_record(21).p_output_value
3455                              ||parameter_record(22).p_output_value
3456                              ||parameter_record(23).p_output_value --Bug 13255564
3457 			|| lpad(nvl(r_input_45,'0'),11,'0')  /* Bug# 13351713 */
3458                      ||rpad(' ',12)      --Bug 13255564 --Cost of Employer-sponsored Health Coverage for 2011
3459                              ||rpad(substr(nvl(r_input_35,'0'),1,1),2)
3460                              ||rpad(substr(nvl(r_input_36,'0'),1,1),1)
3461                              ||rpad(substr(nvl(r_input_37,'0'),1,1),24);
3462 						END IF ;
3463          ret_str_len:=length(return_value);
3464          hr_utility.trace('ret_str_len = '||to_char(ret_str_len));
3465 --}
3466    ELSIF p_input_40 = 'CSV' THEN
3467 --{
3468          hr_utility.trace('CSV');
3469          return_value :=
3470            'RW'||','||replace(p_input_2,',')
3471            ||','||replace(p_input_3,',',' ')||','||replace(p_input_4,',',' ')
3472            ||','||replace(p_input_5,',',' ')||','||replace(p_input_6,',',' ')
3473            ||','||rpad(substr(nvl(p_input_7,' '),1,22),22)
3474            ||','||rpad(substr(nvl(p_input_8,' '),1,22),22)
3475            ||','||rpad(substr(nvl(p_input_9,' '),1,22),22)
3476            ||','||rpad(substr(nvl(p_input_10,' '),1,2),2)
3477            ||','||rpad(substr(nvl(p_input_11,' '),1,5),5)
3478            ||','||rpad(substr(nvl(p_input_12,' '),1,4),4)
3479            ||','||lpad(' ',5)
3480            ||','||rpad(substr(nvl(p_input_13,' '),1,23),23)
3481            ||','||rpad(substr(nvl(p_input_14,' '),1,15),15)
3482            ||','||rpad(substr(nvl(p_input_15,' '),1,2),2)
3483            ||','||p_input_16
3484            ||','||p_input_17
3485            ||','||p_input_18
3486            ||','||p_input_19
3487            ||','||p_input_20
3488            ||','||p_input_21
3489            ||','||p_input_22
3490            ||','||p_input_23
3491            ||','||p_input_24
3492            ||','||p_input_25
3493            ||','||p_input_26
3494            ||','||p_input_27
3495            ||','||p_input_28
3496            ||','||p_input_29
3497            -- commented to fix bug # 2297587 ||','||p_input_30
3498            ||','||lpad('0',11,'0') /* Bug 4859212 */
3499            ||','||p_input_31
3500            ||','||p_input_38  -- Bug 3680056 ER Contrib to HSA
3501            ||','||p_input_32
3502            ||','||p_input_41  -- Bug # 4391218
3503            ||','||lpad(' ',11)
3504            ||','||p_input_33
3505            ||','||p_input_34
3506            ||','||p_input_42  -- Bug # 4391218
3507            /* Bug 5256745 */
3508            ||','||p_input_43
3509            ||','||p_input_44
3510 	         ||','||p_input_45 --removed padding to correct the formatting issue of .a02, Bug 13422328 /*Bug 13351713 */
3511            ||','||lpad(' ',23)
3512            ||','||rpad(nvl(p_input_35,'0'),1)
3513            ||','||lpad(' ',1)
3514            ||','||rpad(nvl(p_input_36,'0'),1)
3515            ||','||rpad(nvl(p_input_37,'0'),1)
3516            ||','||lpad(' ',23);
3517 --}
3518    ELSIF p_input_40 = 'BLANK' THEN
3519 --{
3520          hr_utility.trace('Formatting BLANK RW Record ');
3521          return_value :=
3522            ' '||','||' '
3523            ||','||' '||','||' '
3524            ||','||' '||','||' '
3525            ||','||' '
3526            ||','||' '
3527            ||','||' '
3528            ||','||' '
3529            ||','||' '
3530            ||','||' '
3531            ||','||lpad(' ',5)
3532            ||','||' '
3533            ||','||' '
3534            ||','||' '
3535            ||','||' '
3536            ||','||' '
3537            ||','||' '
3538            ||','||' '
3542            ||','||' '
3539            ||','||' '
3540            ||','||' '
3541            ||','||' '
3543            ||','||' '
3544            ||','||' '
3545            ||','||' '
3546            ||','||' '
3547            ||','||' '
3548            ||','||' '
3549            ||','||' '
3550            ||','||' '
3551            ||','||' '
3552            ||','||' ' -- Bug 3680056 ER Contrib to HSA
3553            ||','||' '
3554            ||','||' ' -- Bug # 4391218
3555            ||','||lpad(' ',11)
3556            ||','||' '
3557            ||','||' '
3558            ||','||' '
3559            /* Bug 5256745 */
3560            ||','||' ' -- Bug 13255564
3561            ||','||' '
3562            ||','||' '
3563            ||','||lpad(' ',23)
3564            ||','||' '
3565            ||','||lpad(' ',1)
3566            ||','||' '
3567            --||','||' ' Bug 13073346
3568            ||','||' ';
3569          hr_utility.trace(return_value);
3570 --}
3571    END IF;
3572    p_error := l_exclude_from_output_chk;
3573    ret_str_len:=length(return_value);
3574    return return_value;
3575 
3576 END format_W2_RW_record;
3577 -- End of Formatting RW Record for W2 reporting
3578 --
3579 -- Formatting RO record for W2 reporting
3580 --
3581 /*-------------------------- Parameter Description ------------------------
3582   Record Identifier,                                         --> p_input_1
3583   Allocated Tips,                                            --> p_input_2
3584   Uncollected Employee Tax on Tips,                          --> p_input_3
3585   Medical Savings Account,                                   --> p_input_4
3586   Simple Retirement Account,                                 --> p_input_5
3587   Qualified Adoption Expenses,                               --> p_input_6
3588   Uncollected Social Security or RRTA Tax on GTL,            --> p_input_7
3589   Uncollected Medicare Tax on GTL,                           --> p_input_8
3590   Civil Status,                                              --> p_input_9
3591   Spouse''s Social Security Number (SSN),                    --> p_input_10
3592   Wages Subject to Puerto Rico Tax,                          --> p_input_11
3593   Commissions Subject to Puerto Rico Tax,                    --> p_input_12
3594   Allowances Subject to Puerto Rico Tax,                     --> p_input_13
3595   Tips Subject to Puerto Rico Tax,                           --> p_input_14
3596   Total Wages, Commissions, Tips, and Allow Sub. to PRTax,   --> p_input_15
3597   Puerto Rico Tax Withheld,                                  --> p_input_16
3598   Retirement Fund Annual Contributions,                      --> p_input_17
3599   Total Wages, Tips and other Compensation Subject to
3600      Virgin Islands, or Guam, or American Samoa, or Northern
3601      Mariana Islands Income Tax,                             --> p_input_18
3602   Virgin Islands, or Guam, or AS, or MP Income Tax Withheld  --> p_input_19
3603   Marital Status   S Single  M Married  etc                  --> p_input_20
3604   Employee SSN for Philadelphia use only                     --> p_input_21
3605   Income Under Section 409A on a Non-Qual Deferred Comp Plan --> p_input_22
3606 */
3607 FUNCTION format_W2_RO_record(
3608                    p_effective_date       IN  varchar2,
3609                    p_report_type          IN  varchar2,
3610                    p_format               IN  varchar2,
3611                    p_report_qualifier     IN  varchar2,
3612                    p_record_name          IN  varchar2,
3613                    p_input_1              IN  varchar2,
3614                    p_input_2              IN  varchar2,
3615                    p_input_3              IN  varchar2,
3616                    p_input_4              IN  varchar2,
3617                    p_input_5              IN  varchar2,
3618                    p_input_6              IN  varchar2,
3619                    p_input_7              IN  varchar2,
3620                    p_input_8              IN  varchar2,
3621                    p_input_9              IN  varchar2,
3622                    p_input_10             IN  varchar2,
3623                    p_input_11             IN  varchar2,
3624                    p_input_12             IN  varchar2,
3625                    p_input_13             IN  varchar2,
3626                    p_input_14             IN  varchar2,
3627                    p_input_15             IN  varchar2,
3628                    p_input_16             IN  varchar2,
3629                    p_input_17             IN  varchar2,
3630                    p_input_18             IN  varchar2,
3631                    p_input_19             IN  varchar2,
3632                    p_input_20             IN  varchar2,
3633                    p_input_21             IN  varchar2,
3634                    p_input_22             IN  varchar2,
3635                    p_input_23             IN  varchar2,
3636                    p_input_24             IN  varchar2,
3637                    p_input_25             IN  varchar2,
3638                    p_input_26             IN  varchar2,
3639                    p_input_27             IN  varchar2,
3640                    p_input_28             IN  varchar2,
3641                    p_input_29             IN  varchar2,
3642                    p_input_30             IN  varchar2,
3643                    p_input_31             IN  varchar2,
3644                    p_input_32             IN  varchar2,
3645                    p_input_33             IN  varchar2,
3646                    p_input_34             IN  varchar2,
3647                    p_input_35             IN  varchar2,
3648                    p_input_36             IN  varchar2,
3649                    p_input_37             IN  varchar2,
3650                    p_input_38             IN  varchar2,
3651                    p_input_39             IN  varchar2,
3652                    p_input_40             IN  varchar2,
3656                    sp_out_2               OUT nocopy varchar2,
3653                    p_validate             IN  varchar2,
3654                    p_exclude_from_output  OUT nocopy varchar2,
3655                    sp_out_1               OUT nocopy varchar2,
3657                    sp_out_3               OUT nocopy varchar2,
3658                    sp_out_4               OUT nocopy varchar2,
3659                    sp_out_5               OUT nocopy varchar2,
3660                    ret_str_len            OUT nocopy number,
3661                    p_error                OUT nocopy boolean
3662                  ) RETURN VARCHAR2
3663 IS
3664 l_full_name                varchar2(100);
3665 l_emp_name_or_number       varchar2(50);
3666 l_emp_number               varchar2(50);
3667 l_first_name               varchar2(150);
3668 l_middle_name              varchar2(100);
3669 l_last_name                varchar2(150);
3670 l_suffix                   varchar2(100);
3671 l_ssn                      varchar2(100);
3672 l_emp_ssn                  varchar2(100);
3673 l_message                  varchar2(2000);
3674 l_description              varchar2(50);
3675 l_field_description        varchar2(50);
3676 l_ss_count                 number(10);
3677 l_amount                   number(10);
3678 return_value               varchar2(32767);
3679 l_err                      boolean;
3680 l_exclude_from_output_chk  boolean;
3681 l_ss_tax_limit   pay_us_federal_tax_info_f.ss_ee_wage_limit%TYPE;
3682 l_ss_wage_limit  pay_us_federal_tax_info_f.ss_ee_wage_limit%TYPE;
3683 
3684 TYPE function_columns IS RECORD(
3685                                 p_parameter_name  varchar2(100),
3686                                 p_parameter_value varchar2(100),
3687                                 p_output_value varchar2(200) -- Changed size from 100 to 200 #9913436
3688                                );
3689 function_parameter_rec  function_columns;
3690 TYPE input_parameter_record IS TABLE OF function_parameter_rec%TYPE
3691                                INDEX BY BINARY_INTEGER;
3692 parameter_record input_parameter_record;
3693 
3694 r_input_1                  varchar2(300);
3695 r_input_2                  varchar2(300);
3696 r_input_3                  varchar2(300);
3697 r_input_4                  varchar2(300);
3698 r_input_5                  varchar2(300);
3699 r_input_6                  varchar2(300);
3700 r_input_7                  varchar2(300);
3701 r_input_8                  varchar2(300);
3702 r_input_9                  varchar2(300);
3703 r_input_10                 varchar2(300);
3704 r_input_11                 varchar2(300);
3705 r_input_12                 varchar2(300);
3706 r_input_13                 varchar2(300);
3707 r_input_14                 varchar2(300);
3708 r_input_15                 varchar2(300);
3709 r_input_16                 varchar2(300);
3710 r_input_17                 varchar2(300);
3711 r_input_18                 varchar2(300);
3712 r_input_19                 varchar2(300);
3713 r_input_20                 varchar2(300);
3714 r_input_21                 varchar2(300);
3715 r_input_22                 varchar2(300);
3716 r_input_23                 varchar2(300);
3717 r_input_24                 varchar2(300);
3718 r_input_25                 varchar2(300);
3719 r_input_26                 varchar2(300);
3720 r_input_27                 varchar2(300);
3721 r_input_28                 varchar2(300);
3722 r_input_29                 varchar2(300);
3723 r_input_30                 varchar2(300);
3724 r_input_31                 varchar2(300);
3725 r_input_32                 varchar2(300);
3726 r_input_33                 varchar2(300);
3727 r_input_34                 varchar2(300);
3728 r_input_35                 varchar2(300);
3729 r_input_36                 varchar2(300);
3730 r_input_37                 varchar2(300);
3731 r_input_38                 varchar2(300);
3732 r_input_39                 varchar2(300);
3733 
3734 BEGIN
3735    hr_utility.trace('Formatting RO Record');
3736    hr_utility.trace('Format Mode  p_input_40 '||p_input_40);
3737 -- Initializing local variables with parameter value
3738    r_input_2 := p_input_2;
3739    r_input_3 := p_input_3;
3740    r_input_4 := p_input_4;
3741    r_input_5 := p_input_5;
3742    r_input_6 := p_input_6;
3743    r_input_7 := p_input_7;
3744    r_input_8 := p_input_8;
3745    r_input_9 := p_input_9;
3746    r_input_10 := p_input_10;
3747    r_input_11 := p_input_11;
3748    r_input_12 := p_input_12;
3749    r_input_13 := p_input_13;
3750    r_input_14 := p_input_14;
3751    r_input_15 := p_input_15;
3752    r_input_16 := p_input_16;
3753    r_input_17 := p_input_17;
3754    r_input_18 := p_input_18;
3755    r_input_19 := p_input_19;
3756    r_input_20 := p_input_20;
3757    r_input_21 := p_input_21;
3758    r_input_22 := p_input_22;
3759    r_input_23 := p_input_23;
3760    r_input_24 := p_input_24;
3761    r_input_25 := p_input_25;
3762    r_input_26 := p_input_26;
3763    r_input_27 := p_input_27;
3764    r_input_28 := p_input_28;
3765    r_input_29 := p_input_29;
3766    r_input_30 := p_input_30;
3767    r_input_31 := p_input_31;
3768    r_input_32 := p_input_32;
3769    r_input_33 := p_input_33;
3770    r_input_34 := p_input_34;
3771    r_input_35 := p_input_35;
3772    r_input_36 := p_input_36;
3773    r_input_37 := p_input_37;
3774    r_input_38 := p_input_38;
3775    r_input_39 := p_input_39;
3776 
3777    IF p_input_40 = 'FLAT' THEN
3778 -- Validation Starts
3779 --{
3780       parameter_record(1).p_parameter_name:= ' Allocated Tips';
3781       parameter_record(1).p_parameter_value:=p_input_2;
3782 
3783       parameter_record(2).p_parameter_name:= 'Uncollected employee tax on tips';
3784       parameter_record(2).p_parameter_value:=p_input_3;
3785 
3786       parameter_record(3).p_parameter_name:= 'medical savings a/c';
3787       parameter_record(3).p_parameter_value:=p_input_4;
3788 
3789       parameter_record(4).p_parameter_name:= 'simple retirement a/c';
3790       parameter_record(4).p_parameter_value:=p_input_5;
3791 
3792       parameter_record(5).p_parameter_name:= 'qualified adopted expenses';
3793       parameter_record(5).p_parameter_value:=p_input_6;
3794 
3795       parameter_record(6).p_parameter_name:= 'Uncollected ss or RRTA tax';
3796       parameter_record(6).p_parameter_value:=p_input_7;
3797 
3798       parameter_record(7).p_parameter_name:= 'Uncollected medicare tax';
3799       parameter_record(7).p_parameter_value:=p_input_8;
3800 
3801       parameter_record(8).p_parameter_name:= 'wages sub. to PR tax';
3802       parameter_record(8).p_parameter_value:=p_input_11;
3803 
3804       parameter_record(9).p_parameter_name:= 'Commissions sub.to PR tax';
3805       parameter_record(9).p_parameter_value:=p_input_12;
3806 
3807       parameter_record(10).p_parameter_name:= 'Allowances sub. to PR tax';
3808       parameter_record(10).p_parameter_value:=p_input_13;
3809 
3810       parameter_record(11).p_parameter_name:= 'Tips sub to PR tax';
3811       parameter_record(11).p_parameter_value:=p_input_14;
3812 
3813       parameter_record(12).p_parameter_name:= 'Total wages sub to PR tax';
3814       parameter_record(12).p_parameter_value:=p_input_15;
3815 
3816       parameter_record(13).p_parameter_name:= 'PR tax withheld';
3817       parameter_record(13).p_parameter_value:=p_input_16;
3818 
3819       parameter_record(14).p_parameter_name:= 'Retirement fund ann. contributions';
3820       parameter_record(14).p_parameter_value:=p_input_17;
3821 
3822       parameter_record(15).p_parameter_name:= 'Total wages sub to VI,GU,AS and MP islands';
3823       parameter_record(15).p_parameter_value:=p_input_18;
3824 
3825       parameter_record(16).p_parameter_name:= 'VI,GU or MP Islands income tax wh';
3826       parameter_record(16).p_parameter_value:=p_input_19;
3827 
3828       parameter_record(17).p_parameter_name:= 'Income Under Sec 409A on a Non-Qual Def Comp Plan';
3829       parameter_record(17).p_parameter_value := p_input_22;
3830 
3831       parameter_record(18).p_parameter_name:= 'HIRE Exempt Wages and Tips';
3832       parameter_record(18).p_parameter_value := p_input_24;
3833 
3834 -- For the Bug 13255564
3835       parameter_record(19).p_parameter_name:= 'Designated Roth Contributions under a Governmental Section 457(b) plan';
3836       parameter_record(19).p_parameter_value := p_input_25;
3837 
3838 
3839       hr_utility.trace('Before the data validation loop.');
3840 --
3841 -- This loop used to validation above 17 input values
3842 --
3843       FOR i in 1..19 --Bug 13255564
3844       LOOP
3845 --{
3846         hr_utility.trace('Value of loop counter i is : ' || to_char(i));
3847         hr_utility.trace('Input '||parameter_record(i).p_parameter_name||' = '
3848                                  ||parameter_record(i).p_parameter_value);
3849 
3850         parameter_record(i).p_output_value :=
3851           pay_us_reporting_utils_pkg.data_validation( p_effective_date,
3852                                                       p_report_type,
3853                                                       p_format,
3854                                                       p_report_qualifier,
3855                                                       p_record_name,
3856                                                       'NEG_CHECK',
3857                                                       parameter_record(i).p_parameter_value,
3858                                                       parameter_record(i).p_parameter_name,
3859                                                       p_input_39,
3860                                                       null,
3861                                                       p_validate,
3862                                                       p_exclude_from_output,
3863                                                       sp_out_1,
3864                                                       sp_out_2);
3865 
3866         IF p_exclude_from_output = 'Y' THEN
3867            l_exclude_from_output_chk := TRUE;
3868         END IF;
3869 
3870         hr_utility.trace('Value of i is : ' || to_char(i));
3871         hr_utility.trace('Output ' || parameter_record(i).p_parameter_name||' = '
3872                                    ||parameter_record(i).p_output_value);
3873         hr_utility.trace('p_exclude_from_output = '||p_exclude_from_output);
3874 --}
3875       END LOOP; -- End of various Amount validation loop
3876       hr_utility.trace('After Amount data validation ');
3877 -- Spouse SSN validation
3878       IF p_input_20 = 'PR_M' THEN
3879          l_ssn:= replace(replace(p_input_10,' '),'I');
3880          IF l_ssn IS NULL THEN
3881             l_ssn:='000000000';
3882          ELSE
3883             l_ssn :=
3884              pay_us_reporting_utils_pkg.data_validation(p_effective_date,
3885                                                         p_report_type,
3886                                                         p_format,
3887                                                         p_report_qualifier,
3888                                                         p_record_name,
3889                                                         'SSN',
3890                                                         p_input_10,
3891                                                         'Spouse Social Security',
3892                                                         p_input_39,
3893                                                         null,
3894                                                         p_validate,
3895                                                         p_exclude_from_output,
3896                                                         sp_out_1,
3897                                                         sp_out_2);
3898             IF p_exclude_from_output = 'Y' THEN
3899                l_exclude_from_output_chk := TRUE;
3900             END IF;
3901          END IF;
3902       ELSE
3903          l_ssn:=lpad(' ',9);
3904       END IF;
3905       hr_utility.trace('After Spouse SSN validation. SSN = '||l_ssn);
3906       -- This is added for Philadelphia locality
3907       --
3908       IF (p_report_qualifier = 'PA_PHILA') THEN
3909          IF p_input_21 IS NULL THEN
3910             l_emp_ssn:=lpad(' ',9);
3911          ELSE
3912             l_emp_ssn :=
3913               pay_us_reporting_utils_pkg.data_validation(
3914                                            p_effective_date,
3915                                            p_report_type,
3916                                            p_format,
3917                                            p_report_qualifier,
3918                                            p_record_name,
3919                                            'SSN',
3920                                            p_input_21,
3921                                            'Employee Social Security',
3922                                            p_input_39,
3923                                            null,
3924                                            p_validate,
3925                                            p_exclude_from_output,
3926                                            sp_out_1,
3927                                            sp_out_2);
3928             hr_utility.trace('For Philadelphia  SSN after validation. = '||l_emp_ssn);
3929             IF p_exclude_from_output = 'Y' THEN
3930                l_exclude_from_output_chk := TRUE;
3931             END IF;
3932          END IF;
3933       END IF;
3934 
3935 -- Validation Ends
3936 --
3937 -- Formatting Starts
3938 
3939 
3940       IF (p_report_qualifier = 'PA_PHILA') THEN
3941              r_input_9  := ' ';
3942              l_ssn      := lpad(' ',9);
3943              r_input_11 := lpad('0',11,'0');
3944              r_input_12 := lpad('0',11,'0');
3945              r_input_13 := lpad('0',11,'0');
3946              r_input_14 := lpad('0',11,'0');
3947              r_input_15 := lpad('0',11,'0');
3948              r_input_16 := lpad('0',11,'0');
3949              r_input_17 := lpad('0',11,'0');
3950              r_input_18 := lpad('0',11,'0');
3951              r_input_19 := lpad('0',11,'0');
3952 						 -- r_input_23 := '';
3953  						 r_input_23 := lpad(' ',11);  --13515271
3954    					 -- r_input_24 := rpad(parameter_record(19).p_output_value,165); -- bug 13255564
3955              r_input_24 := rpad(parameter_record(19).p_output_value,154);  --13515271
3956       ELSIF (p_report_qualifier = 'PR') THEN
3957              l_ssn      := lpad(' ',9); /* Bug 4665713 */
3958              r_input_2  := lpad('0',11,'0');
3959              r_input_3 :=  parameter_record(2).p_output_value;
3960              r_input_4  := lpad('0',11,'0');
3961              r_input_5  := lpad('0',11,'0');
3962              r_input_6  := lpad('0',11,'0');
3963              r_input_7 :=  parameter_record(6).p_output_value;
3964              --r_input_8 :=  rpad(parameter_record(7).p_output_value,187);
3965              r_input_8 :=  parameter_record(7).p_output_value ;
3966 	     r_input_9  := ' ';   -- Bug # 5668970
3967 --             r_input_22 := rpad(parameter_record(17).p_output_value,176);
3968              r_input_22 := parameter_record(17).p_output_value;
3969              r_input_23 := rpad(parameter_record(18).p_output_value,165); --10427851
3970              r_input_11 := parameter_record(8).p_output_value;
3971              r_input_12 := parameter_record(9).p_output_value;
3972              r_input_13 := parameter_record(10).p_output_value;
3973              r_input_14 := parameter_record(11).p_output_value;
3974              r_input_15 := parameter_record(12).p_output_value;
3975              r_input_16 := parameter_record(13).p_output_value;
3976              r_input_17 := parameter_record(14).p_output_value;
3977       ELSE
3978              l_emp_ssn  := lpad(' ',9);
3982              r_input_14 := parameter_record(11).p_output_value;
3979              r_input_11 := parameter_record(8).p_output_value;
3980              r_input_12 := parameter_record(9).p_output_value;
3981              r_input_13 := parameter_record(10).p_output_value;
3983              r_input_15 := parameter_record(12).p_output_value;
3984              r_input_16 := parameter_record(13).p_output_value;
3985              r_input_17 := parameter_record(14).p_output_value;
3986              r_input_18 := parameter_record(15).p_output_value;
3987              r_input_19 := parameter_record(16).p_output_value;
3988 							if p_report_qualifier in ( 'FED','ID','KY') then
3989 								 r_input_23 := parameter_record(18).p_output_value;
3990                  r_input_24 := rpad(parameter_record(19).p_output_value,154); -- bug 13255564
3991               else
3992                   r_input_23 := lpad(' ',11);  --13515271
3993                   r_input_24 := rpad(parameter_record(19).p_output_value,154); --13515271
3994 						/*	Commented for bug 13515271
3995                 r_input_23 := '';
3996 							--parameter_record(17).p_output_value:=rpad(parameter_record(17).p_output_value,176);
3997 							r_input_24 := rpad(parameter_record(19).p_output_value,165); -- bug 13255564*/
3998 							end if;
3999       END IF;
4000 
4001 
4002 /* 6806139  */
4003 /* 5155648 */
4004   /*    IF ( p_report_qualifier = 'FED' AND UPPER(p_input_23) = 'P') THEN
4005         r_input_11 := lpad('0',11,'0');
4006       END IF ; */
4007 
4008 
4009       /* This changes made for PR for fixing Bug # 2736928 */
4010       /* Bug # 3337295 fixed RO record fields for PR.
4011          These changes gone with YE 2003 Phase III
4012              position 352-362 - should now contain blanks
4013                       363-384 - should contain zeroes
4014                       385-512 - should now contain blanks
4015       */
4016 -- Formatting Ends
4017       IF (p_report_qualifier = 'PR') THEN
4018 --{
4019           return_value:='RO'
4020                         ||lpad(' ',9)
4021                         ||r_input_2
4022                         ||r_input_3
4023                         ||r_input_4
4024                         ||r_input_5
4025                         ||r_input_6
4026                        /* ||r_input_7
4027                         ||r_input_8 */
4028 			||lpad('0',22,'0') /* 6644795 */
4029                         ||r_input_22
4030 												||r_input_23 --10427851
4031                         -- ||rpad(nvl(r_input_9,' '),1) /* 6330489 */
4032                         ||rpad(' ',1)/* 6330489 */
4033                         --||l_ssn
4034                         /* Bug 5256745 */
4035                         ||lpad(' ',9)
4036                         ||r_input_11
4037                         ||r_input_12
4038                         ||r_input_13
4039                         ||r_input_14
4040                         ||r_input_15
4041                         ||r_input_16
4042                         ||r_input_17
4043                         ||lpad(' ',11)
4044                         ||lpad('0',22,'0')
4045                         ||lpad(' ',128);
4046 --}
4047          ELSIF p_report_qualifier NOT IN ('MO_KNSAS','MO_STLOU','OH_CCAAA','OH_DAYTO','OH_RTCCA','PA_PHILA') THEN
4048 --{
4049          return_value:='RO'
4050                        ||lpad(l_emp_ssn,9)   -- Added for Philadelphia locality
4051                        ||lpad(parameter_record(1).p_output_value,11)
4052                        ||parameter_record(2).p_output_value
4053                        ||parameter_record(3).p_output_value
4054                        ||parameter_record(4).p_output_value
4055                        ||parameter_record(5).p_output_value
4056                        ||parameter_record(6).p_output_value
4057                        --||rpad(parameter_record(7).p_output_value,187)
4058                        ||parameter_record(7).p_output_value
4059                        ||parameter_record(17).p_output_value
4060                        ||r_input_23
4061                        ||r_input_24 -- Bug 13255564
4062                        -- ||rpad(nvl(r_input_9,' '),1) /* 6330489 */
4063                        ||rpad(' ',1) /* 6330489 */
4064                        --||l_ssn
4065                         /* Bug 5256745 */
4066                        ||lpad(' ',9)
4067                        ||r_input_11
4068                        ||r_input_12
4069                        ||r_input_13
4070                        ||r_input_14
4071                        ||r_input_15
4072                        ||r_input_16
4073                        ||rpad(r_input_17,22)
4074                        ||r_input_18
4075                        ||rpad(r_input_19,139);
4076 
4077 --}
4078 	ELSE
4079 
4080 	return_value:='RO'
4081                        ||lpad(l_emp_ssn,9)   -- Added for Philadelphia locality
4082                        ||lpad(parameter_record(1).p_output_value,11)
4083                        ||parameter_record(2).p_output_value
4084                        ||parameter_record(3).p_output_value
4085                        ||parameter_record(4).p_output_value
4086                        ||parameter_record(5).p_output_value
4087                        ||parameter_record(6).p_output_value
4088                        --||rpad(parameter_record(7).p_output_value,187)
4089                        ||parameter_record(7).p_output_value
4090                        ||parameter_record(17).p_output_value
4091 											 ||r_input_23  -- Bug 13255564
4092                        ||r_input_24  -- Bug 13255564
4093                        ||rpad(nvl(r_input_9,' '),1)
4094                        --||l_ssn
4095                         /* Bug 5256745 */
4096                        ||lpad(' ',9)
4097                        ||r_input_11
4098                        ||r_input_12
4099                        ||r_input_13
4100                        ||r_input_14
4101                        ||r_input_15
4102                        ||r_input_16
4103                        ||rpad(r_input_17,22)
4104                        ||r_input_18
4105                        ||rpad(r_input_19,139);
4106       END IF;
4107 
4108       ret_str_len:=length(return_value);
4109       hr_utility.trace('length of return_Value RO = '||to_char(ret_str_len));
4110 --}
4111    ELSIF p_input_40 = 'CSV' THEN
4112 --{
4113 -- Format Mode CSV
4114 --
4115       IF (p_report_qualifier = 'PR') THEN
4116    --{
4117 
4118           return_value:=','|| -- As RO_Status column removed from RO record header coma is now prefixed
4119                     p_input_1
4120                     ||','||lpad(' ',9)
4121                     ||','||p_input_2
4122                     ||','||p_input_3
4123                     ||','||p_input_4
4124                     ||','||p_input_5
4125                     ||','||p_input_6
4126                     ||','||p_input_7
4127                     ||','||p_input_8
4128                     ||','||p_input_22
4129 										||','||p_input_24--10427851
4130                     ||','||' ' --Bug 13255564
4131                     ||','||lpad(' ',154)
4132                     ||','||rpad(nvl(p_input_9,' '),1)
4133                     ||','||p_input_10
4134                     ||','||p_input_11
4135                     ||','||p_input_12
4136                     ||','||p_input_13
4137                     ||','||p_input_14
4138                     ||','||p_input_15
4139                     ||','||p_input_16
4140                     ||','||p_input_17
4141                     ||','||lpad(' ',11)
4142                     ||','||lpad('0',11,'0')
4143                     ||','||lpad('0',11,'0')
4144                     ||','||lpad(' ',128);
4145    --}
4149                     p_input_1
4146 	ELSE
4147    --{
4148          return_value:=','|| -- As RO_Status column removed from RO record header coma is now prefixed
4150                     ||','||lpad(' ',9)
4151                     ||','||p_input_2
4152                     ||','||p_input_3
4153                     ||','||p_input_4
4154                     ||','||p_input_5
4155                     ||','||p_input_6
4156                     ||','||p_input_7
4157                     ||','||p_input_8
4158                     ||','||p_input_22
4159                     ||','||p_input_24
4160                     ||','||p_input_25 --Bug 13255564
4161                     ||','||lpad(' ',154)
4162                     ||','||rpad(nvl(p_input_9,' '),1)
4163                     ||','||p_input_10
4164                     ||','||p_input_11
4165                     ||','||p_input_12
4166                     ||','||p_input_13
4167                     ||','||p_input_14
4168                     ||','||p_input_15
4169                     ||','||p_input_16
4170                     ||','||p_input_17
4171                     ||','||lpad(' ',11)
4172                     ||','||p_input_18
4173                     ||','||p_input_19
4174                     ||','||lpad(' ',128);
4175     --}
4176 
4177       END IF;
4178    ELSIF p_input_40 = 'BLANK' THEN
4179 --{
4180 -- Format Mode  BLANK (used for Formatting Blank RO Record)
4181 --
4182     IF (p_report_qualifier = 'PR') THEN
4183        return_value:=--','||   As RO_Status column removed from RO record header coma is now prefixed
4184                     ' '
4185                     ||','||lpad(' ',9)
4186                     ||','||' '
4187                     ||','||' '
4188                     ||','||' '
4189                     ||','||' '
4190                     ||','||' '
4191                     ||','||' '
4192                     ||','||' '
4193                     ||','||' '
4194                     ||','||lpad(' ',165)
4195                     ||','||' '
4196                     ||','||' '
4197                     ||','||' '
4198                     ||','||' '
4199                     ||','||' '
4200                     ||','||' '
4201                     ||','||' '
4202                     ||','||' '
4203                     ||','||' '
4204                     ||','||' '
4205                     ||','||' '
4206                     ||','||' '
4207                     ||','||lpad(' ',11)
4208                     ||','||' '
4209                     ||','||' '
4210                     ||','||lpad(' ',128);
4211 --}
4212    ELSE
4213        return_value:=  ' '
4214                     ||','||lpad(' ',9)
4215                     ||','||' '
4216                     ||','||' '
4217                     ||','||' '
4218                     ||','||' '
4219                     ||','||' '
4220                     ||','||' '
4221                     ||','||' '
4222                     ||','||' '
4223                     ||','||lpad(' ',154)
4224                     ||','||lpad(' ',11)
4225                     ||','||' '
4226                     ||','||' '
4227                     ||','||' '
4228                     ||','||' '
4229                     ||','||' '
4230                     ||','||' '
4231                     ||','||' '
4232                     ||','||' '
4233                     ||','||' '
4234                     ||','||lpad(' ',11)
4235                     ||','||' '
4236                     ||','||' '
4237 	          		    ||','||' '-- Bug 13073346
4238 					 		      ||','||' '-- Bug 13255564
4239                     ||','||lpad(' ',128);
4240      END IF ;
4241    END IF;
4242    p_error := l_exclude_from_output_chk;
4243    ret_str_len:=length(return_value);
4244    return return_value;
4245 
4246 END format_W2_RO_record;
4247 -- End of formatting RO record for W2 reporting
4248 --
4249 
4250 /*  ---------------------- Parameter Mapping -----------------------
4251   Record Identifier                                   --> p_input_1
4252   State Code                                          --> p_input_2
4253   Taxing Entity Code                                  --> p_input_3
4254   Social Security Number (SSN)                        --> p_input_4
4255   Employee First Name                                 --> p_input_5
4256   Employee Middle Name or Initial                     --> p_input_6
4257   Employee Last Name                                  --> p_input_7
4258   Suffix                                              --> p_input_8
4259   Location Address                                    --> p_input_9
4260   Delivery Address                                    --> p_input_10
4261   City                                                --> p_input_11
4262   State Abbreviation                                  --> p_input_12
4263   Zip Code                                            --> p_input_13
4264   Zip Code Extension                                  --> p_input_14
4265   Foreign State / Province                            --> p_input_15
4266   Foreign Postal Code                                 --> p_input_16
4267   Country Code                                        --> p_input_17
4268   Optional Code                                       --> p_input_18
4269   Reporting Period                                    --> p_input_19
4270   State Quarterly Unemployment Insurance Total Wages  --> p_input_20
4271   State Quarterly Unemployment Total Taxable Wages    --> p_input_21
4272   Number of Weeks Worked                              --> p_input_22
4276   State Code                                          --> p_input_26
4273   Date First Employed                                 --> p_input_23
4274   Date of Separation                                  --> p_input_24
4275   State Employer Account Number                       --> p_input_25
4277   State Taxable Wages                                 --> p_input_27
4278   SIT Withheld                                        --> p_input_28
4279   Other State Data                                    --> p_input_29
4280   Tax Type Code                                       --> p_input_30
4281   Local Taxable Wages                                 --> p_input_31
4282   Local Income Tax Withheld                           --> p_input_32
4283   State Control Number                                --> p_input_33
4284   Supplemental Data 1                                 --> p_input_34
4285   Supplemental Data 2                                 --> p_input_35
4286 
4287   Fed Wages  Tips and other comp  (for state MA)   |
4288   Contrib to Qual Plans  (for PR)                  |----> p_input_36
4289   FIT Withheld  (for state MD)                     |
4290   Tax credit amt for KY indus revit act (state KY) |
4291   Federal Employer Account Number (for state AL)   |
4292 
4293   Supplemental Data for KS state                      --> p_input_34
4294     used for KS state EE contributions to public EE's retirement System
4295     (KPERS, KPF or Judges)
4296 
4297   Malpractice Insurance Fund (MIF) for NJ State       --> p_input_36
4298 
4299   Cost Reimbursement (for PR)                      |----> p_input_37
4300   Tax credit amt for KY indus dev act (state KY)   |
4301   Employee Withholding Allowance provided on W4    |
4302   as of 31st December,YYYY (for Maryland)          |
4303 
4304   Serial Number  (for PR)                             --> p_input_38
4305   EE number used for trace messg purpose              --> p_input_39
4306 
4307   For PuertoRico:  ( Added following for the bug 13449377 )
4308   ---------------
4309   PR W2 Charitable Contributions                      --> p_input_18
4310   PR W2 Contr To Save and Double Money                --> p_input_20
4311 
4312 
4313 */
4314 
4315 FUNCTION format_W2_RS_record(
4316                    p_effective_date       IN  varchar2,
4317                    p_report_type          IN  varchar2,
4318                    p_format               IN  varchar2,
4319                    p_report_qualifier     IN  varchar2,
4320                    p_record_name          IN  varchar2,
4321                    p_input_1              IN  varchar2,
4322                    p_input_2              IN  varchar2,
4323                    p_input_3              IN  varchar2,
4324                    p_input_4              IN  varchar2,
4325                    p_input_5              IN  varchar2,
4326                    p_input_6              IN  varchar2,
4327                    p_input_7              IN  varchar2,
4328                    p_input_8              IN  varchar2,
4329                    p_input_9              IN  varchar2,
4330                    p_input_10             IN  varchar2,
4331                    p_input_11             IN  varchar2,
4332                    p_input_12             IN  varchar2,
4333                    p_input_13             IN  varchar2,
4334                    p_input_14             IN  varchar2,
4335                    p_input_15             IN  varchar2,
4336                    p_input_16             IN  varchar2,
4337                    p_input_17             IN  varchar2,
4338                    p_input_18             IN  varchar2,
4339                    p_input_19             IN  varchar2,
4340                    p_input_20             IN  varchar2,
4341                    p_input_21             IN  varchar2,
4342                    p_input_22             IN  varchar2,
4343                    p_input_23             IN  varchar2,
4344                    p_input_24             IN  varchar2,
4345                    p_input_25             IN  varchar2,
4346                    p_input_26             IN  varchar2,
4347                    p_input_27             IN  varchar2,
4348                    p_input_28             IN  varchar2,
4349                    p_input_29             IN  varchar2,
4350                    p_input_30             IN  varchar2,
4351                    p_input_31             IN  varchar2,
4352                    p_input_32             IN  varchar2,
4353                    p_input_33             IN  varchar2,
4354                    p_input_34             IN  varchar2,
4355                    p_input_35             IN  varchar2,
4356                    p_input_36             IN  varchar2,
4357                    p_input_37             IN  varchar2,
4358                    p_input_38             IN  varchar2,
4359                    p_input_39             IN  varchar2,
4360                    p_input_40             IN  varchar2,
4361                    p_validate             IN  varchar2,
4362                    p_exclude_from_output  OUT nocopy varchar2,
4363                    sp_out_1               OUT nocopy varchar2,
4364                    sp_out_2               OUT nocopy varchar2,
4365                    sp_out_3               OUT nocopy varchar2,
4366                    sp_out_4               OUT nocopy varchar2,
4367                    sp_out_5               OUT nocopy varchar2,
4368                    ret_str_len            OUT nocopy number,
4369                    p_error                OUT nocopy boolean
4370                  ) RETURN VARCHAR2
4371 IS
4372 return_value                   varchar2(32767);
4373 l_s_hyphen_position            number := 0;
4374 l_pblm_code                    varchar2(1);
4375 l_preparer_code                varchar2(1);
4376 l_input_1                      varchar2(100);
4377 l_records                      number(10);
4378 l_input_2                      varchar2(100);
4379 l_record_identifier            varchar2(2);
4380 l_tax_year                     date;
4384 l_agent_ein                    varchar2(100);
4381 l_agent_indicator              varchar2(1);
4382 l_emp_ein                      varchar2(100);
4383 l_term_indicator               varchar2(1);
4385 l_other_ein                    varchar2(100);
4386 l_input_8                      varchar2(50);
4387 l_check                        varchar2(1);
4388 l_employment_code              varchar2(1);
4389 p_exc                          varchar2(10);
4390 main_return_string             varchar2(300);
4391 l_resub_tlcn                   varchar2(100);
4392 l_pin                          varchar2(50);
4393 l_ssn                          varchar2(100);
4394 l_wages_tips                   varchar2(100);
4395 l_full_name                    varchar2(100);
4396 l_emp_name_or_number           varchar2(50);
4397 l_emp_number                   varchar2(50);
4398 l_first_name                   varchar2(150);
4399 l_middle_name                  varchar2(100);
4400 l_last_name                    varchar2(150);
4401 l_suffix                       varchar2(100);
4402 l_mif                          varchar2(100);
4403 l_err                          boolean;
4404 l_exclude_from_output_chk      boolean;
4405 l_message                      varchar2(2000);
4406 l_ss_tax_limit                 pay_us_federal_tax_info_f.ss_ee_wage_limit%TYPE;
4407 l_description                  varchar2(50);
4408 l_field_description            varchar2(50);
4409 l_ss_wage_limit                pay_us_federal_tax_info_f.ss_ee_wage_limit%TYPE;
4410 l_ss_count                     number(10);
4411 l_amount                       number(10);
4412 l_tax_ct_job_dev               varchar2(30);
4413 l_tax_ct_ind_revit             varchar2(30);
4414 l_tax_ct_ind_dev               varchar2(30);
4415 l_tax_ct_rural                 varchar2(30);
4416 l_fit_wh                       varchar2(30);
4417 l_total_records                varchar2(50);
4418 l_wages                        varchar2(100);
4419 l_taxes                        varchar2(100);
4420 l_deferred_comp                varchar2(100);
4421 l_sdi_wh                       varchar2(100);
4422 l_state_length                 number(10);
4423 l_unemp_insurance              varchar2(100);
4424 l_fica_mcr_wh                  varchar2(100);
4425 l_bus_tax_acct_number          varchar2(50);
4426 l_w2_govt_ee_contrib           varchar2(100);
4427 l_w2_fed_wages                 varchar2(100);
4428 l_wa_sqwl_outstring            varchar2(200);
4429 
4430 /* PuertoRico W2 related variables  Bug # 2736928 */
4431 l_contact_person_phone_no      varchar2(100);       -- mapped to r_input_34
4432 l_pension_annuity              varchar2(100);       -- mapped to r_input_35
4433 l_contribution_plan            varchar2(100);       -- mapped to r_input_36
4434 l_cost_reimbursement           varchar2(100);       -- mapped to r_input_37
4435 l_uncollected_ss_tax_on_tips   varchar2(100);       -- mapped to r_input_31
4436 l_uncollected_med_tax_on_tips  varchar2(100);       -- mapped to r_input_32
4437 l_rt_end_of_rec                varchar2(200);
4438 l_end_of_rec                   varchar2(20);
4439 l_length                       number(10);
4440 /* Bug 2789523 */
4441 l_last_field                   varchar2(100);
4442 /* Bug 3180532 - local variable for audit record (CSV/BLANK) */
4443 l_audit_field_17               varchar2(100);
4444 l_fl_field_17_20               varchar2(100);
4445 /* EE contributions to public EE's retirement System */
4446 l_ee_contrib_pub_retire_system varchar2(100);
4447 /* Bug 4084765 */
4448 l_nj_dipp_plan_id              varchar2(14);
4449 
4450 /* Bug # 5513076 and 5637673 */
4451 swap_street_location_indiana varchar2(300);
4452 IN_state_adv_EIC varchar2(100);
4453 
4454 r_input_1                      varchar2(300);
4455 r_input_2                      varchar2(300);
4456 r_input_3                      varchar2(300);
4457 r_input_4                      varchar2(300);
4458 r_input_5                      varchar2(300);
4459 r_input_6                      varchar2(300);
4460 r_input_7                      varchar2(300);
4461 r_input_8                      varchar2(300);
4462 r_input_9                      varchar2(300);
4463 r_input_10                     varchar2(300);
4464 r_input_11                     varchar2(300);
4465 r_input_12                     varchar2(300);
4466 r_input_13                     varchar2(300);
4467 r_input_14                     varchar2(300);
4468 r_input_15                     varchar2(300);
4469 r_input_16                     varchar2(300);
4470 r_input_17                     varchar2(300);
4471 r_input_18                     varchar2(300);
4472 r_input_19                     varchar2(300);
4473 r_input_20                     varchar2(300);
4474 r_input_21                     varchar2(300);
4475 r_input_22                     varchar2(300);
4476 r_input_23                     varchar2(300);
4477 r_input_24                     varchar2(300);
4478 r_input_25                     varchar2(300);
4479 r_input_26                     varchar2(300);
4480 r_input_27                     varchar2(300);
4481 r_input_28                     varchar2(300);
4482 r_input_29                     varchar2(300);
4483 r_input_30                     varchar2(300);
4484 r_input_31                     varchar2(300);
4485 r_input_32                     varchar2(300);
4486 r_input_33                     varchar2(300);
4487 r_input_34                     varchar2(500); /* Increased for Puerto Rico */
4488 r_input_35                     varchar2(300);
4489 r_input_36                     varchar2(300);
4490 r_input_37                     varchar2(300);
4491 r_input_38                     varchar2(300);
4492 r_input_39                     varchar2(300);
4493 
4494 BEGIN
4495    hr_utility.trace('Formatting RS record for W2 reporting');
4496    hr_utility.trace('p_report_qualifier = '||p_report_qualifier);
4497 -- Initializing local variables with parameter value
4498 --{
4502    r_input_5 := p_input_5;
4499    r_input_2 := p_input_2;
4500    r_input_3 := p_input_3;
4501    r_input_4 := p_input_4;
4503    r_input_6 := p_input_6;
4504    r_input_7 := p_input_7;
4505    r_input_8 := p_input_8;
4506    r_input_9 := p_input_9;
4507    r_input_10 := p_input_10;
4508    r_input_11 := p_input_11;
4509    r_input_12 := p_input_12;
4510    r_input_13 := p_input_13;
4511    r_input_14 := p_input_14;
4512    r_input_15 := p_input_15;
4513    r_input_16 := p_input_16;
4514    r_input_17 := p_input_17;
4515    r_input_18 := p_input_18;
4516    r_input_19 := p_input_19;
4517    r_input_20 := p_input_20;
4518    r_input_21 := p_input_21;
4519    r_input_22 := p_input_22;
4520    r_input_23 := p_input_23;
4521    r_input_24 := p_input_24;
4522    r_input_25 := p_input_25;
4523    r_input_26 := p_input_26;
4524    r_input_27 := p_input_27;
4525    r_input_28 := p_input_28;
4526    r_input_29 := p_input_29;
4527    r_input_30 := p_input_30;
4528    r_input_31 := p_input_31;
4529    r_input_32 := p_input_32;
4530    r_input_33 := p_input_33;
4531    r_input_34 := p_input_34;
4532    r_input_35 := p_input_35;
4533    r_input_36 := p_input_36;
4534    r_input_37 := p_input_37;
4535    r_input_38 := p_input_38;
4536    r_input_39 := p_input_39;
4537 --}
4538    l_state_length := length(replace(p_input_2,' ')); /* Fix for State code.*/
4539    IF l_state_length < 2 THEN
4540       r_input_2 := lpad(replace(p_input_2,' '),2,0);
4541       r_input_26 := lpad(replace(p_input_26,' '),2,0);
4542       hr_utility.trace('l_state_length = '||to_char(l_state_length));
4543       hr_utility.trace('l_state_length < 2.State code r_input_2 = '||r_input_2);
4544       hr_utility.trace('State code r_input_26 = '||r_input_26);
4545    END IF;
4546 
4547    /* Pos:3 - 4 State Code Blank for AL,MA,MD */
4548    IF (/*(p_report_qualifier = 'MA')       OR  6720319 */
4549        (p_report_qualifier = 'MD')       OR
4550        (p_report_qualifier = 'MO_STLOU') OR
4551  --      (p_report_qualifier = 'OH_CCAAA') OR
4552        (p_report_qualifier = 'MO_KNSAS') OR
4553 --       (p_report_qualifier = 'KS')       OR   -- Added for Bug # 2644092 commented to fix bug # 4012469
4554        (p_report_qualifier = 'AL')) THEN
4555       r_input_2 := lpad(' ',2);
4556    ELSE
4557       r_input_2 := rpad(nvl(r_input_2,' '),2);
4558    END IF;
4559   /* Bug 13325368 - Format changes for the year 2011 */
4560    IF ( p_report_qualifier = 'OH_CCAAA' ) THEN
4561       r_input_2 := '39';
4562    END IF;
4563 
4564    /* Pos:5 - 9 Taxing entity code blank for these states and local */
4565 
4566    /* Bug 13325368 - Format changes for the year 2011 */
4567    IF p_report_qualifier = 'OH_CCAAA' THEN
4568       r_input_3 := 'CC' ||rpad(nvl(replace(p_input_29,' '),'000'),3);
4569    ELSIF p_report_qualifier = 'OH_DAYTO' THEN
4570       r_input_3 := lpad(nvl(p_input_29,' '),5);
4571    ELSIF p_report_qualifier = 'PR' THEN         /* For bug # 2736928 */
4572       r_input_3 := lpad('0',5,'0');
4573    ELSE
4574       r_input_3 := lpad(' ',5);
4575    END IF;
4576 
4577    /* Pos:10 - 18 Social security number */
4578 
4579    IF p_input_40 = 'FLAT' THEN
4580       l_ssn := pay_us_reporting_utils_pkg.data_validation(
4581                                 p_effective_date,
4582                                 p_report_type,
4583                                 p_format,
4584                                 p_report_qualifier,
4585                                 p_record_name,
4586                                 'SSN',
4587                                 r_input_4,
4588                                 'Social Security',
4589                                 p_input_39, --EE number for messg purpose.
4590                                 null,
4591                                 p_validate,
4592                                 p_exclude_from_output,
4593                                 sp_out_1,
4594                                 sp_out_2);
4595       IF p_exclude_from_output = 'Y' THEN
4596          l_exclude_from_output_chk := TRUE;
4597       END IF;
4598    ELSE
4599       l_ssn := replace(replace(r_input_4,'-'),',');
4600    END IF;
4601 
4602    hr_utility.trace('SSN after Validation and Formatting = '||l_ssn);
4603 
4604    /* Pos:19 - 33 First name
4605       Pos:34 - 48 Middle name
4606       Pos:49 - 68 Last name
4607       Pos:69 - 72 suffix  */
4608 
4609    l_first_name := pay_us_reporting_utils_pkg.Character_check(rpad(
4610                              nvl(substr(r_input_5,1,15),' '),15));
4611    l_middle_name := pay_us_reporting_utils_pkg.Character_check(rpad(
4612                              nvl(substr(r_input_6,1,15),' '),15));
4613    l_last_name :=  pay_us_reporting_utils_pkg.Character_check(rpad(
4614                              nvl(substr(r_input_7,1,20),' '),20));
4615    l_suffix := pay_us_reporting_utils_pkg.Character_check(rpad(
4616                              nvl(substr(r_input_8,1,4),' '),4));
4617 --bug 10266082
4618 if (p_report_qualifier = 'VA') then
4619   	 l_middle_name := pay_us_reporting_utils_pkg.Character_check(rpad(' ',15));
4620 	   l_suffix := pay_us_reporting_utils_pkg.Character_check(rpad(' ',4));
4621 end if;
4622 --bug 10266082
4623    hr_utility.trace('l_suffix = '||l_suffix);
4624 
4625    /* Suffix blank for MD,OH_RC,MD_SQWL,MN_SQWL,OH_SQWL */
4626    IF ((p_report_qualifier = 'MD')        OR
4627        (p_report_qualifier = 'OH_CCAAA')  OR
4628        (p_report_qualifier = 'MO_KNSAS')  OR     -- Fix for Bug # 3067494
4629        (p_report_qualifier = 'OH_RTCCA')) THEN
4630       l_suffix := lpad(' ',4);
4631    END IF;
4632 
4633    /* Pos:69 - 149 blank for AL,NC,MO,WV */
4634    IF ((p_report_qualifier = 'AL') OR
4638       ) THEN
4635         (p_report_qualifier = 'NC') OR
4636         (p_report_qualifier = 'MO') --OR -- Fix for bug # 2149507 Bug # 7572620
4637 	--	(p_report_qualifier = 'WV') -- Bug # 3186636
4639 --{
4640       hr_utility.trace('Pos:69 - 149 blank for state '||p_report_qualifier);
4641       l_suffix   := lpad(' ',4);
4642       r_input_9  := lpad(' ',22);
4643       r_input_10 := lpad(' ',22);
4644       r_input_11 := lpad(' ',22);
4645       r_input_12 := lpad(' ',2);
4646       r_input_13 := lpad(' ',5);
4647       r_input_14 := lpad(' ',4);
4648 --}
4649    END IF;
4650 --bug 10266082
4651    IF (p_report_qualifier = 'VA') then
4652       r_input_11 := lpad(' ',22);
4653       r_input_12 := lpad(' ',2);
4654       r_input_13 := lpad(' ',5);
4655       r_input_14 := lpad(' ',4);
4656 	end if;
4657 --bug 10266082
4658     IF p_report_qualifier = 'MI' then /* 7681852 */
4659     l_suffix   := lpad(' ',4);
4660     end if;
4661 
4662    /* Commented for the Bug 16339837
4663    IF  (p_report_qualifier = 'LA')  -- Bug # 3130999
4664    THEN
4665       r_input_9  := lpad(' ',22);
4666    END IF;
4667    */
4668 
4669 
4670    /* Zip ext is null for MT and ME */
4671 
4672    IF ((p_report_qualifier = 'MT') OR
4673        (p_report_qualifier = 'MO_STLOU') OR
4674        (p_report_qualifier = 'ME')) THEN
4675       r_input_14 := lpad(' ',4);
4676    END IF;
4677 
4678    /* Pos:155 - 177 178 - 192 193 - 194
4679       Foreign State / Province --> r_input_15
4680       Foreign Postal Code      --> r_input_16
4681       Country Code             --> r_input_17
4682       Foreign address set to blank for following states and locals */
4683 
4684    IF ((p_report_qualifier = 'AL') OR
4685        (p_report_qualifier = 'AR') OR
4686        (p_report_qualifier = 'GA') OR
4687        (p_report_qualifier = 'ID') OR
4688        (p_report_qualifier = 'KS') OR
4689        (p_report_qualifier = 'MD') OR
4690        (p_report_qualifier = 'DE') OR
4691        (p_report_qualifier = 'SC') OR
4692        --(p_report_qualifier = 'LA') OR  Commented for the Bug 16339837 -- Bug # 3130999
4693        (p_report_qualifier = 'NE') OR
4694        (p_report_qualifier = 'ME') OR
4695        (p_report_qualifier = 'MA') OR
4696        (p_report_qualifier = 'PA') OR
4697        --     (p_report_qualifier = 'WV') OR  -- Bug 3186636 Bug # 7572620
4698        (p_report_qualifier = 'OH_RTCCA') OR
4699        (p_report_qualifier = 'OH_CCAAA') OR
4700        (p_report_qualifier = 'NC') OR
4701        (p_report_qualifier = 'MO') OR   -- Fix for Bug # 2149507
4702        (p_report_qualifier = 'MO_KNSAS') OR  -- Fix for Bug # 3067494
4703        (p_report_qualifier = 'MO_STLOU')  OR
4704        (p_report_qualifier = 'VA') ) THEN
4705    --  (p_report_qualifier = 'OH_DAYTO') OR
4706       -- (p_report_qualifier = 'PA_PHILA') ) THEN /*7579598*/
4707 --{
4708       r_input_15 := lpad(' ',23);
4709       r_input_16 := lpad(' ',15);
4710       r_input_17 := lpad(' ',2);
4711 
4712       IF p_report_qualifier = 'ME' THEN --ME  Country value is not null
4713          r_input_17 := rpad(nvl(p_input_17,' '),2);
4714       END IF;
4715 --}
4716    ELSE
4717       r_input_15 := rpad(nvl(r_input_15,' '),23);
4718       r_input_16 := rpad(nvl(r_input_16,' '),15);
4719       r_input_17 := rpad(nvl(r_input_17,' '),2);
4720    END IF;
4721 
4722    -- Bug 4739790
4723    -- Removed blanking of r_input_10 as we require Deliver Address for MO_KNSAS
4724    IF   (p_report_qualifier = 'MO_KNSAS') -- Fix for Bug # 3067494
4725    THEN
4726       r_input_14 := lpad(' ',4);
4727    END IF;
4728 
4729    /* Pos:195 - 242 Optional code - Date of separation  blanks */
4730    /* Pos:203-226 State quarterly unemployments details should be Zero filled
4731                   for MO, OH and PA
4732       This is to fix bug # 2627606
4733       This is also true with many states for W2, so changes made for W2
4734    */
4735 --{
4736 if p_report_qualifier = 'OR' then  /* 9065357  */
4737    r_input_18 := lpad(' ',2);
4738    r_input_19 := lpad(' ',6);
4739    r_input_20 := lpad(' ',11);
4740    r_input_21 := lpad(' ',11);
4741    r_input_22 := lpad(' ',2);
4742 	 r_input_23 := lpad(NVL(p_input_29,' '),8, ' ');
4743 	 r_input_24 := lpad(NVL(p_input_30,' '),8, ' ');
4744 else
4745    r_input_18 := lpad(' ',2);
4746    r_input_19 := lpad(' ',6);
4747 	if p_report_qualifier in ('VA','ID') then
4748 	 r_input_20 := rpad(' ',11);
4749    r_input_21 := rpad(' ',11);
4750    r_input_22 := rpad(' ',2);
4751   else
4752    r_input_20 := lpad('0',11,'0');
4753    r_input_21 := lpad('0',11,'0');
4754    r_input_22 := lpad('0',2,'0');
4755   end if;
4756    r_input_23 := lpad(' ',8);
4757    r_input_24 := lpad(' ',8);
4758 end if;
4759    /* Pos:197-202 Reporting period for SC,ME,DC and MT */
4760 -- (p_report_qualifier = 'SC') OR
4761 -- Bug # 3134857  fixed to blank out 197-202 for State of SC
4762 --
4763    IF ((p_report_qualifier = 'ME') OR
4764        (p_report_qualifier = 'MT') OR
4765 	 (p_report_qualifier = 'DC') OR /* 8243215 */
4766        (p_report_qualifier = 'SC')) THEN  /* bug 6641801 */
4767   	 if (p_report_qualifier = 'ME') then
4768         r_input_19 := rpad(' ',6);
4769   	 else
4770         r_input_19 := rpad(nvl(p_input_19,' '),6);
4771       end if;
4772    END IF;
4773    /* As per bug # 2668099 this should be zero filled
4774       IF p_report_qualifier = 'ME' THEN
4775          r_input_21 := lpad(' ',11);
4776       END IF;
4777    */
4778    /* Bug #2736928 Puertorico Bug Fix */
4779    IF (p_report_qualifier = 'PR') THEN
4780       r_input_15 := lpad(' ',23);
4781       r_input_16 := lpad(' ',15);
4785       r_input_19 := rpad('0',6,'0'); */
4782       r_input_17 := lpad(' ',2);
4783       /* Commented for bug 13449377
4784       r_input_18 := lpad('0',2,'0');
4786 			r_input_18 := lpad(p_input_18,11,'0');  -- bug 13449377
4787       r_input_19 := '';  -- bug 13449377
4788       r_input_20 := lpad(p_input_20,11,'0');  -- bug 13449377
4789       r_input_21 := lpad('0',8,'0');  -- bug 13449377
4790    END IF;
4791 --}
4792 
4793    /* Pos:248-267 State Employer Account number is blank for ME,MA,MD,IN,PA and OH RITA */
4794 
4795 --{
4796    IF ((p_report_qualifier = 'IN') OR
4797        (p_report_qualifier = 'ME') OR
4798        -- Bug# 5693183
4799        -- (p_report_qualifier = 'GA') OR
4800        (p_report_qualifier = 'MA') OR
4801        (p_report_qualifier = 'MD') OR
4802        (p_report_qualifier = 'PR') OR
4803        (p_report_qualifier = 'OH_RTCCA') OR
4804        (p_report_qualifier = 'OH_CCAAA') OR
4805        (p_report_qualifier = 'MO_STLOU') OR
4806        (p_report_qualifier = 'MO_KNSAS') OR -- Bug # 3067494
4807        (p_report_qualifier = 'PA_PHILA') OR
4808        (p_report_qualifier = 'OH_DAYTO') OR
4809        (p_report_qualifier = 'PA') OR
4810        (p_report_qualifier = 'VA')) THEN
4811      if p_report_qualifier = 'ME' then
4812              r_input_25 := rpad(rpad(nvl(replace(replace(r_input_34,'-'),' '),' '),11),20);
4813     else
4814             r_input_25 := lpad(' ',20);
4815     end if;
4816    -- Bug # 2673612 , 9239621 , 9473738
4817    ELSIF (p_report_qualifier = 'ID') or (p_report_qualifier = 'OR') or (p_report_qualifier = 'NE')  THEN
4818       -- # 10031479 Changes Start
4819       -- # 10100148 Added some extra special characters
4820       IF (p_report_qualifier = 'ID') THEN
4821         r_input_25 := translate(UPPER(r_input_25),' ABCDEFGHIJKLMNOPQRSTUVWXYZ{}()[]:;"''',' '); --Removing alphabets and special characters
4822         r_input_25 := replace(pay_us_reporting_utils_pkg.Character_check(r_input_25),' ','');  --Removing special characters
4823       END IF;
4824       -- # 10031479 Changes End
4825       -- # 10313971 Changes Start
4826       IF ((p_report_qualifier = 'NE') AND (substr(trim(r_input_25),1,3) = '21-')) THEN
4827           r_input_25 := substr(trim(r_input_25),4,length(r_input_25)-3);
4828       END IF;
4829       -- # 10313971 Changes End
4830     if p_report_qualifier = 'ID' then
4831           r_input_25 := lpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4832                              ,'-'),'/'),20,' ');
4833     else
4834       r_input_25 := lpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4835                          ,'-'),'/'),20,'0');
4836     end if;
4837  -- Bug 3936924 , 9115440
4838  --  ELSIF (p_report_qualifier = 'AL') THEN
4839 
4840 --		 if (to_number (nvl(replace(replace(nvl(replace(r_input_25,' '),' ')
4841   --                       ,'-'),'/') ,'0' )) < 700000) then
4842   --    r_input_25 := lpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4843    --                      ,'-'),'/'),10,'0') ||
4844 	  --          rpad(lpad(replace(replace(nvl(replace(r_input_36,' '),' ')
4845     --                     ,'-'),'/'),9,'0'),10,' ');
4846 	--	 elsif (to_number (nvl(replace(replace(nvl(replace(r_input_25,' '),' ')
4847     --                     ,'-'),'/') ,'0' )) >= 700000) then
4848 	--			   r_input_25 := 'R' || lpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4849      --                    ,'-'),'/'),9,'0') ||
4850 	  --          rpad(lpad(replace(replace(nvl(replace(r_input_36,' '),' ')
4851       --                   ,'-'),'/'),9,'0'),10,' ');
4852 	--	end if;
4853 	-- Bug # 9306028
4854 	 ELSIF (p_report_qualifier = 'AL') THEN
4855       r_input_25 := lpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4856                          ,'-'),'/'),10,'0') ||
4857 	            rpad(lpad(replace(replace(nvl(replace(r_input_36,' '),' ')
4858                          ,'-'),'/'),9,'0'),10,' ');
4859 
4860 
4861  -- Bug 4022086
4862    ELSIF (p_report_qualifier = 'MS') THEN
4863       r_input_25 := rpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4864                          ,'-'),'/'),10);       --Modified to blank fill for bug 16005079
4865       --Modified for bug 16005079
4866       r_input_36 := rpad(' ',10);
4867       /*r_input_36 := rpad(rpad(replace(replace(nvl(replace(r_input_36,' '),' ')
4868                          ,'-'),'/'),9),10);*/
4869       IF p_input_40 = 'FLAT' THEN
4870          r_input_25 := r_input_25 || r_input_36;
4871       ELSE
4872          r_input_25 := r_input_25 || ',' || r_input_36;
4873       END IF;
4874    -- Bug# 5693183
4875    ELSIF (p_report_qualifier = 'GA') THEN
4876       r_input_25 := lpad('0', 20, '0') ;
4877 
4878    ELSIF (p_report_qualifier = 'NM') THEN /*For the Bug#9385848*/
4879          r_input_25 := translate(r_input_25,' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-{}()[]:;"''',' ');    --Removing alpha and Special characters
4880 			   r_input_25 :=replace(pay_us_reporting_utils_pkg.Character_check(r_input_25),' ','');                --Removing special characters
4881          r_input_25 :=ltrim(r_input_25,'0');
4882          r_input_25 :=lpad(r_input_25,20,'0');
4883 
4884 	 ELSE
4885      /* Bug:2159881 */
4886    r_input_25 := rpad(replace(replace(nvl(replace(r_input_25,' '),' ')
4887                          ,'-'),'/'),20);
4888    END IF;
4889 --}
4890 
4891    /* Pos:274 - 275 State code blank for PA,NJ,OH RITA ,NC and SQWL */
4892    IF ((p_report_qualifier = 'PA') OR
4893        (p_report_qualifier = 'NJ') OR
4894        (p_report_qualifier = 'MI') OR
4895        --(p_report_qualifier = 'LA') OR Commented for the Bug 16339837       -- Bug # 3130999
4896        (p_report_qualifier = 'OH_RTCCA') OR
4897        (p_report_qualifier = 'OH_CCAAA') OR
4898        (p_report_qualifier = 'MO_STLOU') OR
4899       -- (p_report_qualifier = 'PA_PHILA') OR /* 7579598 */
4903        (p_report_qualifier = 'MO') OR  -- Fix for Bug 2149507
4900        (p_report_qualifier = 'NC') OR
4901   --     (p_report_qualifier = 'KS') OR  -- commented to fix bug # 4012469 Fix for bug # 2644092
4902        (p_report_qualifier = 'MO_KNSAS') OR  -- Fix for Bug # 3067494
4904       (p_report_qualifier = 'VA')) THEN
4905       r_input_26 := lpad(' ',2);
4906    ELSE
4907       r_input_26 := rpad(nvl(r_input_26,' '),2);
4908    END IF;
4909 
4910 
4911    /* Pos:276 - 286 State taxable wages.
4912       Pos:287 - 297 SIT withheld. */
4913 
4914    IF p_input_40 = 'FLAT' THEN
4915       r_input_27:=
4916            pay_us_reporting_utils_pkg.data_validation(p_effective_date,
4917                                                       p_report_type,
4918                                                       p_format,
4919                                                       p_report_qualifier,
4920                                                       p_record_name,
4921                                                       'NEG_CHECK',
4922                                                       r_input_27,
4923                                                       'State taxable Wages',
4924                                                       p_input_39,
4925                                                       null,
4926                                                       p_validate,
4927                                                       p_exclude_from_output,
4928                                                       sp_out_1,
4929                                                       sp_out_2);
4930          IF p_exclude_from_output = 'Y' THEN
4931             l_exclude_from_output_chk := TRUE;
4932          END IF;
4933          r_input_28 :=
4934            pay_us_reporting_utils_pkg.data_validation( p_effective_date,
4935                                                        p_report_type,
4936                                                        p_format,
4937                                                        p_report_qualifier,
4938                                                        p_record_name,
4939                                                        'NEG_CHECK',
4940                                                        r_input_28,
4941                                                        'SIT Withheld',
4942                                                        p_input_39,
4943                                                        null,
4944                                                        p_validate,
4945                                                        p_exclude_from_output,
4946                                                        sp_out_1,
4947                                                        sp_out_2);
4948          IF p_exclude_from_output = 'Y' THEN
4949             l_exclude_from_output_chk := TRUE;
4950          END IF;
4951    END IF;
4952 
4953    /* SIT withheld and wages are zero fill for OH RITA. */
4954    IF (p_report_qualifier = 'OH_CCAAA')
4955    THEN
4956       r_input_27 := rpad(0,11,0);
4957       r_input_28 := rpad(0,11,0);
4958    END IF;
4959 
4960    /* SIT withheld are zero fill for MO KANSAS */
4961    IF (p_report_qualifier = 'MO_KNSAS')
4962    THEN
4963       r_input_28 := rpad(0,11,0);
4964    END IF;
4965 
4966    /* SIT withheld for St Louis, MO  Local  is zero filled  */
4967    IF p_report_qualifier = 'MO_STLOU' THEN
4968       r_input_28 := rpad(0,11,0);
4969       hr_utility.trace('SIT Withheld = '||r_input_28);
4970    END IF;
4971 
4972    /* Pos:298 - 307 Other state data AL,MD,OH*/
4973    /* Pos:298-307 State Excess Wages for LA_SQWL. */
4974    /* Added by tmehra for bug 2084851 */
4975    IF ((p_report_qualifier = 'AL') OR
4976        (p_report_qualifier = 'OH') OR
4977        (p_report_qualifier = 'MD') OR
4978        (p_report_qualifier = 'MS')) THEN
4979    --{
4980       If p_input_40 = 'FLAT' THEN
4981          hr_utility.trace(' Other state data AL, OH, MD, MS ');
4982          r_input_29 :=
4983            pay_us_reporting_utils_pkg.data_validation(p_effective_date,
4984                                                       p_report_type,
4985                                                       p_format,
4986                                                       p_report_qualifier,
4987                                                       p_record_name,
4988                                                       'NEG_CHECK',
4989                                                       r_input_29,
4990                                                       'Other State Data',
4991                                                       p_input_39,
4992                                                       null,
4993                                                       p_validate,
4994                                                       p_exclude_from_output,
4995                                                       sp_out_1,
4996                                                       sp_out_2);
4997          IF p_exclude_from_output = 'Y' THEN
4998             l_exclude_from_output_chk := TRUE;
4999          END IF;
5000       END IF;
5001     --}
5002 /*    ELSIF (p_report_qualifier = 'GA') THEN
5003       r_input_29 := r_input_29 ;*/
5004    /* Modified only for GA for Bug# 5717438 */
5005    ELSIF (p_report_qualifier = 'GA') THEN
5006       r_input_29 := lpad(NVL(r_input_29,' '),10);  -- Bug 5651314
5007    ELSIF (p_report_qualifier in ('WI','ME')) THEN
5008 			if p_report_qualifier ='ME' and  r_input_29=' ' then
5009         r_input_29 :=  lpad('0',10,'0');
5010 			else
5011         r_input_29 :=  lpad(nvl(r_input_29,'0'),10,'0'); --Bug 9065558
5012 			end if;
5013    ELSIF (p_report_qualifier = 'NM') THEN
5014     /*For the Bug#9385848*/
5015       --r_input_29 := replace(replace(nvl(replace(p_input_25,' '),' '),'-'),'/');
5019        r_input_29 :=ltrim(r_input_25,'0');
5016       -- r_input_29 := translate(p_input_25,' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',' ');    --Removing all characters
5017        --r_input_29 :=replace(pay_us_reporting_utils_pkg.Character_check(r_input_29),' ','');                --Removing special characters
5018        --r_input_29 :=replace(r_input_29,'-','');                                                            --Removing the '-'
5020        l_length := length(r_input_29);
5021        IF l_length > 10 THEN
5022 	        r_input_29 := lpad(substr(r_input_29 , l_length -9 , l_length ),10,' ');
5023        ELSE
5024           r_input_29 := lpad(r_input_29,10,' ');
5025        END IF;
5026    ELSE
5027       r_input_29 := lpad(' ',10);
5028    END IF;
5029 
5030    /* BUG 5717304 and Bug 5717384 */
5031   IF (p_report_qualifier = 'KY')
5032   -- OR p_report_qualifier = 'NJ' ) /* 9065458  */
5033    THEN
5034       r_input_29 :=  lpad(NVL(' ',' '),10);
5035    END IF;
5036 
5037    /* Pos:308 - 308 Tax type code  IN and OH */
5038    IF p_report_qualifier = 'OH' THEN
5039       r_input_30 := rpad(nvl(r_input_30,' '),1);
5040    ELSIF p_report_qualifier = 'IN' THEN /*Bug:2128995 */
5041       r_input_29 := lpad(' ',8);    /*Changed from 9 to 8 for Bug 16013916*/
5042       r_input_30 := lpad(nvl(r_input_30,' '),2,'0')||'D';   /*Added 'D' for Bug 16013916*/
5043    ELSIF p_report_qualifier = 'PR' THEN /*Bug:2736928 */
5044 --      r_input_30 := 'F';
5045         r_input_30 := ' ';  -- Bug # 3337295
5046    ELSE
5047       r_input_30 := lpad(' ', 1);
5048    END IF;
5049 
5050    /* Pos:309 - 319 Local taxable wages OH ,IN and OH RITA
5051       Pos:320 - 330 Local Income tax withheld */
5052 
5053    IF ((p_report_qualifier = 'OH') OR
5054        (p_report_qualifier = 'OH_RTCCA') OR
5055        (p_report_qualifier = 'OH_CCAAA') OR
5056        (p_report_qualifier = 'MO_STLOU') OR
5057        (p_report_qualifier = 'MO_KNSAS') OR  -- Fix for Bug # 3067494
5058        (p_report_qualifier = 'PA_PHILA') OR
5059        (p_report_qualifier = 'OH_DAYTO') OR
5060        (p_report_qualifier = 'IN') ) THEN
5061 --{
5062       IF p_input_40 = 'FLAT' THEN
5063 -- Validating Local Taxable Wages
5064          r_input_31 :=
5065            pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5066                                                       p_report_type,
5067                                                       p_format,
5068                                                       p_report_qualifier,
5069                                                       p_record_name,
5070                                                       'NEG_CHECK',
5071                                                       r_input_31,
5072                                                       'Local taxable Wages',
5073                                                       p_input_39,
5074                                                       null,
5075                                                       p_validate,
5076                                                       p_exclude_from_output,
5077                                                       sp_out_1,
5078                                                       sp_out_2);
5079          IF p_exclude_from_output = 'Y' THEN
5080             l_exclude_from_output_chk := TRUE;
5081          END IF;
5082 --  Validating Local Income Tax withheld
5083          r_input_32 := pay_us_reporting_utils_pkg.data_validation( p_effective_date,
5084                                                p_report_type,
5085                                                p_format,
5086                                                p_report_qualifier,
5087                                                p_record_name,
5088                                                'NEG_CHECK',
5089                                                r_input_32,
5090                                                'Local Income tax withheld',
5091                                                p_input_39,
5092                                                null,
5093                                                p_validate,
5094                                                p_exclude_from_output,
5095                                                sp_out_1,
5096                                                sp_out_2);
5097          IF p_exclude_from_output = 'Y' THEN
5098             l_exclude_from_output_chk := TRUE;
5099          END IF;
5100          hr_utility.trace('Local Taxable Wages after validation n Formatting '
5101                           ||r_input_31);
5102          hr_utility.trace('Local Tax Withhel after validation n Formatting '
5103                           ||r_input_32);
5104       END IF;
5105 --}
5106    ELSE /* Zero Fill for other States. */
5107       hr_utility.trace('Zero fill for SQWLs. p_report_qualifier = '||p_report_qualifier);
5108       r_input_31 := rpad(0,11,0);
5109       r_input_32 := rpad(0,11,0);
5110       hr_utility.trace('r_input_31 '||r_input_31);
5111       hr_utility.trace('r_input_32 '||r_input_32);
5112    END IF;
5113 
5114    /* Pos:309-330 Blank for SC_SQWL. State wages and SIT withheld. */
5115    IF (p_report_qualifier in ('AR','ME'))    -- To fix bug # 2668250
5116    THEN
5117 
5118       r_input_31 := lpad(' ',11);
5119       r_input_32 := lpad(' ',11);
5120    END IF;
5121 
5122    /* Pos:331 - 337 State Control number OH,IN,KY,NJ and GA
5123       Pos:338 - 412 Supplemental data1
5124       Pos:413 - 487 Supplemental data2  */
5125    r_input_33 := replace(replace(replace(p_input_33,'-'),' '),'/');
5126 
5127    IF p_report_qualifier = 'OH' THEN
5128          -- Bug 4730413
5129          r_input_33 := lpad(nvl(r_input_33,' '),7);
5130          r_input_34 := lpad(' ',75);
5131          r_input_35 := lpad(' ',75);
5132    /* Bug 3180532
5136       Pos: 353 - 357 Box 20b - Adv EIC ID "INADV"
5133       Pos: 193-203 Federal Advanced EIC
5134       Pos: 204 - 273 Blank fill
5135       Pos: 341 - 352 Box 19b - State Adv EIC
5137       Pos: 358 - 512 Blank fill */
5138    ELSIF p_report_qualifier = 'IN' THEN
5139          IF p_input_40 = 'FLAT' THEN
5140            r_input_17:=
5141            pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5142                                                       p_report_type,
5143                                                       p_format,
5144                                                       p_report_qualifier,
5145                                                       p_record_name,
5146                                                       'NEG_CHECK',
5147                                                       p_input_17,
5148                                                       'Federal Advanced EIC',
5149                                                       p_input_39,
5150                                                       null,
5151                                                       p_validate,
5152                                                       p_exclude_from_output,
5153                                                       sp_out_1,
5154                                                       sp_out_2);
5155            IF p_exclude_from_output = 'Y' THEN
5156               l_exclude_from_output_chk := TRUE;
5157            END IF;
5158 
5159            r_input_34:=
5160            pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5161                                                       p_report_type,
5162                                                       p_format,
5163                                                       p_report_qualifier,
5164                                                       p_record_name,
5165                                                       'NEG_CHECK',
5166                                                       r_input_34,
5167                                                       'State Advanced EIC',
5168                                                       p_input_39,
5169                                                       null,
5170                                                       p_validate,
5171                                                       p_exclude_from_output,
5172                                                       sp_out_1,
5173                                                       sp_out_2);
5174            IF p_exclude_from_output = 'Y' THEN
5175               l_exclude_from_output_chk := TRUE;
5176            END IF;
5177 	   hr_utility.trace('Federal Advanced EIC after validation n Formatting '
5178                           ||r_input_17);
5179            hr_utility.trace('State Advanced EIC after validation n Formatting '
5180                           ||r_input_34);
5181 
5182 	   r_input_21 := lpad(' ',11);
5183            r_input_22 := lpad(' ',2);
5184            r_input_33 := rpad(nvl(r_input_33,' '),10,0);                -- Bug 5513076,5637673
5185            r_input_34 := rpad(lpad(r_input_34,11,0) || r_input_35,72);  -- Bug 4720007
5186            r_input_35 := lpad(' ',75);
5187 
5188          END IF;
5189          r_input_17 := lpad(r_input_17,11,0) ;
5190 -- Bug 3936924
5191    ELSIF p_report_qualifier = 'AL' THEN
5192          r_input_33 := lpad(' ',7);
5193          -- for bug 4279809
5194          r_input_34 := rpad((rpad(rpad('0',11,'0'),55,' ')||r_input_34),75,' ');
5195          --r_input_34 := rpad(lpad(r_input_34,59,' '),75,' ');
5196          r_input_35 := lpad(' ',75);
5197          IF p_input_40 = 'CSV' THEN
5198             r_input_25 := p_input_25 || ',' || p_input_36;
5199          END IF;
5200    ELSIF p_report_qualifier = 'GA' THEN /* 6855543 */
5201 
5202         r_input_33 := rpad(nvl(r_input_33,' '),9);
5203          r_input_34 := rpad(substr(nvl(upper(p_input_30),' '),1,57),57)
5204         ||rpad(substr(nvl(p_input_31,' '),1,22),22)
5205         ||rpad(substr(nvl(p_input_32,' '),1,22),22)
5206         ||rpad(substr(nvl(p_input_34,' '),1,22),22)
5207         ||rpad(substr(nvl(p_input_35,' '),1,2),2)
5208         ||rpad(substr(nvl(p_input_36,' '),1,5),5)
5209         ||rpad(substr(nvl(p_input_37,' '),1,4),4)
5210         ||rpad(substr(replace(replace(nvl(replace(p_input_38,' '),' '),'-'),'/'),1,9),9);
5211          r_input_35 := lpad(' ',5);
5212    ELSIF  p_report_qualifier = 'ME' THEN
5213          r_input_33 := lpad(' ',7);
5214          r_input_34 := rpad(' ',75);
5215          r_input_35 := lpad(' ',75);
5216    ELSIF p_report_qualifier = 'MA' THEN
5217          r_input_33 := lpad(' ',7);
5218          IF p_input_40 = 'FLAT' THEN
5219             l_fica_mcr_wh :=
5220               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5221                                                          p_report_type,
5222                                                          p_format,
5223                                                          p_report_qualifier,
5224                                                          p_record_name,
5225                                                          'NEG_CHECK',
5226                                                          r_input_34,
5227                                                          'FICA_MCR_WH',
5228                                                          p_input_39,
5229                                                          null,
5230                                                          p_validate,
5231                                                          p_exclude_from_output,
5232                                                          sp_out_1,
5233                                                          sp_out_2);
5234             l_w2_govt_ee_contrib  :=
5238                                                          p_report_qualifier,
5235               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5236                                                          p_report_type,
5237                                                          p_format,
5239                                                          p_record_name,
5240                                                          'NEG_CHECK',
5241                                                          r_input_35,
5242                                                          'W2_GOVT_EE_CONTRIB',
5243                                                          p_input_39,
5244                                                          null,
5245                                                          p_validate,
5246                                                          p_exclude_from_output,
5247                                                          sp_out_1,
5248                                                          sp_out_2);
5249             l_w2_fed_wages  :=
5250               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5251                                                          p_report_type,
5252                                                          p_format,
5253                                                          p_report_qualifier,
5254                                                          p_record_name,
5255                                                          'NEG_CHECK',
5256                                                          r_input_36,
5257                                                          'FED_WAGES',
5258                                                          p_input_39,
5259                                                          null,
5260                                                          p_validate,
5261                                                          p_exclude_from_output,
5262                                                          sp_out_1,
5263                                                          sp_out_2);
5264          /*   r_input_34 := l_fica_mcr_wh||l_w2_govt_ee_contrib||l_w2_fed_wages
5265                                        ||lpad(' ',42); */
5266             r_input_34 := lpad(' ',75); /* 6720319 */
5267             r_input_35 := lpad(' ',75);
5268          ELSE
5269             r_input_34 := r_input_34;
5270             r_input_35 := 'Federal Railroad MA and Local Govt '||
5271                           'retirement contribution  '||
5272                           p_input_35||' | '||
5273                           'Fed Wages  Tips and other comp  '||p_input_36;
5274          END IF;
5275 
5276    ELSIF p_report_qualifier = 'NJ' THEN
5277       --   r_input_33 := lpad(' ',7); /* 9065458  */
5278          IF p_input_40 = 'FLAT' THEN
5279 
5280             l_mif :=
5281 	      pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5282                                                          p_report_type,
5283                                                          p_format,
5284                                                          p_report_qualifier,
5285                                                          p_record_name,
5286                                                          'NEG_CHECK',
5287                                                          p_input_36,
5288                                                          'MIF',
5289                                                          p_input_39,
5290                                                          null,
5291                                                          p_validate,
5292                                                          p_exclude_from_output,
5293                                                          sp_out_1,
5294                                                          sp_out_2);
5295             IF p_exclude_from_output = 'Y' THEN
5296               l_exclude_from_output_chk := TRUE;
5297             END IF;
5298 
5299             l_unemp_insurance :=
5300               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5301                                                          p_report_type,
5302                                                          p_format,
5303                                                          p_report_qualifier,
5304                                                          p_record_name,
5305                                                          'NEG_CHECK',
5306                                                          p_input_31,
5307                                                   'Unemployment Insurance Tax',
5308                                                          p_input_39,
5309                                                          null,
5310                                                          p_validate,
5311                                                          p_exclude_from_output,
5312                                                          sp_out_1,
5313                                                          sp_out_2);
5314             l_sdi_wh :=
5315               pay_us_reporting_utils_pkg.data_validation( p_effective_date,
5316                                                          p_report_type,
5317                                                          p_format,
5318                                                          p_report_qualifier,
5319                                                          p_record_name,
5320                                                          'NEG_CHECK',
5321                                                          p_input_32,
5322                                                          'SDI Withheld',
5323                                                          p_input_39,
5324                                                          null,
5325                                                          p_validate,
5326                                                          p_exclude_from_output,
5330               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5327                                                          sp_out_1,
5328                                                          sp_out_2);
5329             l_deferred_comp :=
5331                                                          p_report_type,
5332                                                          p_format,
5333                                                          p_report_qualifier,
5334                                                          p_record_name,
5335                                                          'NEG_CHECK',
5336                                                          p_input_35,
5337                                                          'Deferred Comp',
5338                                                          p_input_39,
5339                                                          null,
5340                                                          p_validate,
5341                                                          p_exclude_from_output,
5342                                                          sp_out_1,
5343                                                          sp_out_2);
5344 
5345             /* Bug 4014356*/
5346 /* Bug 9065458  */
5347 r_input_29 := lpad(' ',1);
5348 r_input_30 := rpad(nvl(p_input_37,' '),15,' ');
5349 r_input_31 := lpad(nvl(p_input_38,'0'),5,0);
5350 r_input_32 := lpad(' ', 19);
5351 r_input_33 :='';
5352 	  /*  r_input_30 := lpad(l_mif,3,0);
5353  r_input_31 := lpad(' ',9);
5354 	    r_input_32 := lpad(' ',11);
5355             r_input_33 := lpad(' ',7); */
5356 
5357              -- Bug 3895206 - Last 14 characters of NJ DIPP ID only reqd
5358              -- Bug 4084765 - Added logic for displaying DIPP plan ID whose length is less than 14
5359             IF length(p_input_30) >= 14 THEN
5360                l_nj_dipp_plan_id := rpad(substr(p_input_30,-14),14);
5361             ELSE
5362 	       l_nj_dipp_plan_id := substr(rpad(nvl(p_input_30,' '),14),-14);
5363             END IF;
5364 
5365             r_input_34 := rpad(nvl(p_input_29,' '),1)|| l_nj_dipp_plan_id
5366 	                   ||l_unemp_insurance ||l_sdi_wh||rpad(
5367                            nvl(p_input_33,' '),1)||rpad(nvl(p_input_34,' '),1)
5368                            ||l_deferred_comp;
5369             r_input_35 := lpad(' ',114);
5370 
5371          ELSE
5372 	    r_input_30 := p_input_36;
5373             r_input_34 := r_input_29||','||p_input_30||','||p_input_31||','||
5374                           p_input_32||','||p_input_33||','||p_input_34||','||
5375                           p_input_35;
5376             r_input_35 := lpad(' ',10);
5377          END IF;
5378    ELSIF p_report_qualifier = 'KY' THEN
5379          r_input_33 := rpad(nvl(r_input_33,' '),7);
5380          IF p_input_40 = 'FLAT' THEN
5381             l_tax_ct_rural :=
5382               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5383                                                          p_report_type,
5384                                                          p_format,
5385                                                          p_report_qualifier,
5386                                                          p_record_name,
5387                                                          'NEG_CHECK',
5388                                                          r_input_34,
5389                                         'Tax credit amount for KY rural asst.',
5390                                                          p_input_39,
5391                                                          null,
5392                                                          p_validate,
5393                                                          p_exclude_from_output,
5394                                                          sp_out_1,
5395                                                          sp_out_2);
5396             l_tax_ct_job_dev :=
5397               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5398                                                          p_report_type,
5399                                                          p_format,
5400                                                          p_report_qualifier,
5401                                                          p_record_name,
5402                                                          'NEG_CHECK',
5403                                                          r_input_35,
5404                                         'Tax credit amount for KY job dev act',
5405                                                          p_input_39,
5406                                                          null,
5407                                                          p_validate,
5408                                                          p_exclude_from_output,
5409                                                          sp_out_1,
5410                                                          sp_out_2);
5411             l_tax_ct_ind_revit :=
5412               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5413                                                          p_report_type,
5414                                                          p_format,
5415                                                          p_report_qualifier,
5416                                                          p_record_name,
5417                                                          'NEG_CHECK',
5418                                                          r_input_36,
5419                                        'Tax credit amt for KY indus revit act',
5420                                                          p_input_39,
5421                                                          null,
5422                                                          p_validate,
5423                                                          p_exclude_from_output,
5427               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5424                                                          sp_out_1,
5425                                                          sp_out_2);
5426             l_tax_ct_ind_dev :=
5428                                                          p_report_type,
5429                                                          p_format,
5430                                                          p_report_qualifier,
5431                                                          p_record_name,
5432                                                          'NEG_CHECK',
5433                                                          r_input_37,
5434                                         'Tax credit amt for KY indus dev act',
5435                                                          p_input_39,
5436                                                          null,
5437                                                          p_validate,
5438                                                          p_exclude_from_output,
5439                                                          sp_out_1,
5440                                                          sp_out_2);
5441             r_input_34 := l_tax_ct_rural||l_tax_ct_job_dev||l_tax_ct_ind_revit
5442                                           ||l_tax_ct_ind_dev||lpad(' ',31);
5443             r_input_35 := lpad(' ',75);
5444          ELSE
5445             r_input_34 := r_input_34||','||r_input_35||','||r_input_36||','||r_input_37;
5446             r_input_35 := lpad(' ',75);
5447          END IF;
5448    ELSIF p_report_qualifier = 'MD' THEN
5449 --{
5450          r_input_33 := lpad(' ',7);
5451          IF p_input_40 = 'FLAT' THEN
5452             l_wages_tips :=
5453               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5454                                                          p_report_type,
5455                                                          p_format,
5456                                                          p_report_qualifier,
5457                                                          p_record_name,
5458                                                          'NEG_CHECK',
5459                                                          p_input_35,
5460                                                          'Wages Tips',
5461                                                          p_input_39,
5462                                                          null,
5463                                                          p_validate,
5464                                                          p_exclude_from_output,
5465                                                          sp_out_1,
5466                                                          sp_out_2);
5467             l_fit_wh :=
5468               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5469                                                          p_report_type,
5470                                                          p_format,
5471                                                          p_report_qualifier,
5472                                                          p_record_name,
5473                                                          'NEG_CHECK',
5474                                                          r_input_36,
5475                                                          'FIT Withheld',
5476                                                          p_input_39,
5477                                                          null,
5478                                                          p_validate,
5479                                                          p_exclude_from_output,
5480                                                          sp_out_1,
5481                                                          sp_out_2);
5482 
5483             -- Bug 4728539
5484             -- 368-369 should be filled with ZERO's
5485             -- Bug# 4736977
5486             -- 368-369 should report Employee Withholding Allowances
5487             r_input_34 := rpad(nvl(r_input_34,' '),8)||l_wages_tips||l_fit_wh||lpad(r_input_37,2,'0')||lpad(' ',43);
5488             r_input_35 := lpad(' ',75);
5489          ELSE
5490             r_input_34 := r_input_34||','||r_input_35||','||r_input_36;
5491             r_input_35 := lpad(' ',8);
5492          END IF;
5493 --}
5494       /* Start of PuertoRico Supplemental Data formating */
5495    ELSIF p_report_qualifier = 'PR' THEN
5496 --{
5497       /* These changes added for Bug # 3337295  */
5498       --{
5499 
5500          r_input_23 := lpad(0,8,0);
5501          r_input_24 := lpad(0,8,0);
5502          --r_input_26 := lpad(' ',2);
5503 	 r_input_26 := '00';		   --  Bug  #  5668970
5504          r_input_27 := rpad(0,11,0);
5505          r_input_28 := rpad(0,11,0);
5506          r_input_29 := lpad(0,10,0);
5507 
5508       --}
5509 
5510          r_input_33 := lpad(' ',7);
5511          IF p_input_40 = 'FLAT' THEN
5512             l_pension_annuity :=
5513               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5514                                                          p_report_type,
5515                                                          p_format,
5516                                                          p_report_qualifier,
5517                                                          p_record_name,
5518                                                          'NEG_CHECK',
5519                                                          p_input_35,
5520                                                          'Cost of Pension Annuity',
5521                                                          p_input_39,
5522                                                          null,
5523                                                          p_validate,
5524                                                          p_exclude_from_output,
5528            IF p_exclude_from_output = 'Y' THEN
5525                                                          sp_out_1,
5526                                                          sp_out_2);
5527          /* Added for bug 13449377 to avoid negative values in .mf file*/
5529               l_exclude_from_output_chk := TRUE;
5530            END IF;
5531             l_contribution_plan :=
5532               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5533                                                          p_report_type,
5534                                                          p_format,
5535                                                          p_report_qualifier,
5536                                                          p_record_name,
5537                                                          'NEG_CHECK',
5538                                                          p_input_36,
5539                                                          'Contrib to Qual Plans',
5540                                                          p_input_39,
5541                                                          null,
5542                                                          p_validate,
5543                                                          p_exclude_from_output,
5544                                                          sp_out_1,
5545                                                          sp_out_2);
5546          /* Added for bug 13449377 */
5547            IF p_exclude_from_output = 'Y' THEN
5548               l_exclude_from_output_chk := TRUE;
5549            END IF;
5550             l_cost_reimbursement :=
5551               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5552                                                          p_report_type,
5553                                                          p_format,
5554                                                          p_report_qualifier,
5555                                                          p_record_name,
5556                                                          'NEG_CHECK',
5557                                                          p_input_37,
5558                                                          'Cost Reimbursement',
5559                                                          p_input_39,
5560                                                          null,
5561                                                          p_validate,
5562                                                          p_exclude_from_output,
5563                                                          sp_out_1,
5564                                                          sp_out_2);
5565            /* Added for bug 13449377 */
5566            IF p_exclude_from_output = 'Y' THEN
5567               l_exclude_from_output_chk := TRUE;
5568            END IF;
5569             l_uncollected_ss_tax_on_tips :=
5570               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5571                                                          p_report_type,
5572                                                          p_format,
5573                                                          p_report_qualifier,
5574                                                          p_record_name,
5575                                                          'NEG_CHECK',
5576                                                          p_input_31,
5577                                                          'Uncollected SS Tax on Tips',
5578                                                          p_input_39,
5579                                                          null,
5580                                                          p_validate,
5581                                                          p_exclude_from_output,
5582                                                          sp_out_1,
5583                                                          sp_out_2);
5584          /* Added for bug 13449377 */
5585            IF p_exclude_from_output = 'Y' THEN
5586               l_exclude_from_output_chk := TRUE;
5587            END IF;
5588             l_uncollected_med_tax_on_tips :=
5589               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5590                                                          p_report_type,
5591                                                          p_format,
5592                                                          p_report_qualifier,
5593                                                          p_record_name,
5594                                                          'NEG_CHECK',
5595                                                          p_input_32,
5596                                                'Uncollected Med Tax on Tips',
5597                                                          p_input_39,
5598                                                          null,
5599                                                          p_validate,
5600                                                          p_exclude_from_output,
5601                                                          sp_out_1,
5602                                                          sp_out_2);
5603          /* Added for bug 13449377 */
5604            IF p_exclude_from_output = 'Y' THEN
5605               l_exclude_from_output_chk := TRUE;
5606            END IF;
5607           /* Negative checks done as part of bug 13449377 */
5608             r_input_18 :=
5609               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5610                                                          p_report_type,
5611                                                          p_format,
5612                                                          p_report_qualifier,
5613                                                          p_record_name,
5614                                                          'NEG_CHECK',
5615                                                          p_input_18,
5619                                                          p_validate,
5616                                                'PR W2 Charitable Contributions',
5617                                                          p_input_39,
5618                                                          null,
5620                                                          p_exclude_from_output,
5621                                                          sp_out_1,
5622                                                          sp_out_2);
5623          /* Added for bug 13449377 */
5624            IF p_exclude_from_output = 'Y' THEN
5625               l_exclude_from_output_chk := TRUE;
5626            END IF;
5627 
5628             r_input_20 :=
5629               pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5630                                                          p_report_type,
5631                                                          p_format,
5632                                                          p_report_qualifier,
5633                                                          p_record_name,
5634                                                          'NEG_CHECK',
5635                                                          p_input_20,
5636                                                'PR W2 Contr To Save and Double Money',
5637                                                          p_input_39,
5638                                                          null,
5639                                                          p_validate,
5640                                                          p_exclude_from_output,
5641                                                          sp_out_1,
5642                                                          sp_out_2);
5643           /* Added for bug 13449377 */
5644            IF p_exclude_from_output = 'Y' THEN
5645               l_exclude_from_output_chk := TRUE;
5646            END IF;
5647 
5648 
5649             r_input_34 := rpad(nvl(' ',' '),10)||-- Contact Person Phone
5650                          -- lpad(' ',8)||              -- Operations Closing Date  5876054
5651                           lpad('0',8,'0')||
5652                           lpad(nvl(replace(p_input_38,' '),' '),9,'0')|| -- Serial Number
5653                           lpad(nvl(l_pension_annuity,'0'),11,'0')||      -- Cost of Pension Annuity
5654     				      lpad(nvl(l_contribution_plan,'0'),11,'0')||    -- Contributions to qualified Plans
5655    				          lpad(nvl(l_cost_reimbursement,'0'),11,'0')||          -- Cost Reimbursement
5656                           lpad(' ',1)||                                         -- Amendment Indicator
5657                       /*    lpad(nvl(substr(replace(p_input_29,' '),1,5),' '),5)||   */    -- Access code
5658 		          lpad(' ',5)|| /* 6644795 */
5659                           lpad(nvl(l_uncollected_ss_tax_on_tips,'0'),11,'0')||  -- Uncollected SS tax on Tips
5660                           lpad(nvl(l_uncollected_med_tax_on_tips,'0'),11,'0');  -- Uncollected Med. Tax on Tips
5661             r_input_35 := lpad('0',5,'0') || lpad('0',11,'0') || lpad('0',8,'0') || lpad(' ',38); --Bug 4665713  Bug 5876054
5662          ELSE
5663             r_input_34 :=  'Contact Person Phone '||p_input_34 || '|' ||
5664                            'Operations Closing Date '|| ' |' ||
5665                            'Serial Number '||p_input_38|| ' |' ||
5666                            'Cost of Pension or annuity '||p_input_35|| '|' ||
5667                            'Contrib to Qual Plans '||p_input_36|| '|' ||
5668                            'Cost Reimbursement '||p_input_37|| '|' ||
5669                            'Amendment Indicator '|| ' |' ||
5670                            'Access Code '||p_input_29||  ' |' ||
5671                            'Uncollected SS Tax on Tips '||p_input_31|| '|' ||
5672                            'Uncollected Med Tax on Tips '||p_input_32 || '|' ||
5673 			   'Specialist Register Number '||lpad(' ',5)|| '|' || /* Bug 4665713 */
5674 			   'Salaries Und Act 324 of 2004 '|| '0' ;
5675 
5676             r_input_35 :=  lpad(' ',46); /* Bug 4665713 */
5677          END IF;
5678                  /* End of Puertorico Supplemental Data */
5679 
5680   /* Bug # 10266267 - Formatting for VT */
5681 	 ELSIF p_report_qualifier = 'VT' THEN
5682 
5683 			r_input_20 := lpad(' ',11);
5684       r_input_21 := lpad(' ',11);
5685       r_input_22 := lpad(' ',2);
5686 
5687 			r_input_33 := lpad(' ',7);
5688 			r_input_34 := lpad(' ',75);
5689       r_input_35 := lpad(' ',75);
5690 
5691 	/* Bug # 3186636 - Formatting for WV */
5692    ELSIF p_report_qualifier = 'WV' THEN
5693 
5694       r_input_8 := lpad(' ',4); --Bug#10284526
5695       r_input_9 := lpad(' ',22); --Bug#10284526
5696       r_input_10 := lpad(' ',22); --Bug#10284526
5697       r_input_11 := lpad(' ',22); --Bug#10284526
5698       r_input_12 := lpad(' ',2); --Bug#10284526
5699       r_input_13 := lpad(' ',5); --Bug#10284526
5700       r_input_14 := lpad(' ',4); --Bug#10284526
5701       r_input_15 := lpad(' ',23); --Bug#10284526
5702       r_input_16 := lpad(' ',15); --Bug#10284526
5703       r_input_17 := lpad(' ',2); --Bug#10284526
5704 
5705 			r_input_18 := lpad(' ',2); /* 7572620 */ --195 - 196
5706       r_input_19 := lpad(' ',6);
5707       r_input_20 := lpad(' ',11);
5708       r_input_21 := lpad(' ',11);
5709       r_input_22 := lpad(' ',2);
5710       r_input_23 := lpad(' ',8);
5711 
5712      -- r_input_23 := lpad(0,8,0);
5713       r_input_24 := lpad(' ',8);--235 - 242
5714       r_input_29 := lpad(' ',10);--298 - 307
5715       r_input_30 := ' ';
5716       --r_input_31 := lpad(0,11,0); --309-319
5717       --r_input_32 := lpad(0,11,0); --320 - 330
5718 
5719       r_input_31 := lpad(' ',11); --Bug#10284526
5720       r_input_32 := lpad(' ',11); --Bug#10284526
5721 
5722 			r_input_33 := lpad(' ',7);
5723       r_input_34 := lpad(' ',75);
5724       r_input_35 := lpad(' ',75);
5725 
5726    ELSIF p_report_qualifier = 'WI' THEN -- Bug 9065558
5727       r_input_29 := lpad(' ',10); --298 - 307  /* Bug : 13355672 */
5728       r_input_30 := ' '; --308  /* Bug : 13355672 */
5729       r_input_31 := lpad(' ',11);
5730       r_input_32 := lpad(' ',11);
5731       r_input_33 := lpad(' ',7);
5732       r_input_34 := lpad(' ',75);
5733       r_input_35 := lpad(' ',75);
5734 
5735    /* Bug 4022086 - Formatting for MS */
5736    ELSIF p_report_qualifier = 'MS' THEN
5737       r_input_33 := lpad(' ',7);
5738       IF p_input_40 = 'FLAT' THEN
5739          r_input_34 := rpad(rpad(lpad(0,11,0),55,' ') || r_input_35,75,' ');
5740          r_input_35 := lpad(' ',75);
5741       ELSE
5742          r_input_34 := p_input_34 || ',' || p_input_35;
5743 	 r_input_35 := ' ';
5744       END IF;
5745    ELSIF p_report_qualifier = 'KS' THEN
5746      r_input_2  := '20';
5747      r_input_26 := '20';
5748      r_input_33 := lpad(' ',7);
5749      l_ee_contrib_pub_retire_system :=
5750            pay_us_reporting_utils_pkg.data_validation(p_effective_date,
5751                                                       p_report_type,
5752                                                       p_format,
5753                                                       p_report_qualifier,
5754                                                       p_record_name,
5755                                                       'NEG_CHECK',
5756                                                       p_input_34,
5757                                                       'EE contrib to retirement systems',
5758                                                       p_input_39,
5759                                                       null,
5760                                                       p_validate,
5761                                                       p_exclude_from_output,
5762                                                       sp_out_1,
5763                                                       sp_out_2);
5764            IF p_exclude_from_output = 'Y' THEN
5765               l_exclude_from_output_chk := TRUE;
5766            END IF;
5767       IF p_input_40 = 'FLAT' THEN
5768          r_input_34 := rpad(lpad(l_ee_contrib_pub_retire_system,11,0),75,' ');
5769          r_input_35 := lpad(' ',75);
5770       ELSE
5771          r_input_34 := p_input_34;
5772    	     r_input_35 := ' ';
5773       END IF;
5774    /* Bug 5696443 - New fields for AR */
5775    ELSIF p_report_qualifier = 'AR' THEN
5776       r_input_33 := rpad(' ',7);
5777       r_input_34 := rpad(lpad(replace(replace(nvl(replace(p_input_34,' '),' '),'-'),'/'),9,'0'),75,' ');
5778       r_input_35 := rpad(replace(nvl(p_input_35,' '),'-'),75,' ');
5779    ELSE
5780    -- Supplemental data for other states filled with blank
5781    --
5782       r_input_33 := lpad(' ',7);
5783       r_input_34 := lpad(' ',75);
5784       r_input_35 := lpad(' ',75);
5785    END IF; /* W2 States. */
5786 
5787 
5788    /* OH RITA 298-304 blanks. 305-307 City code.
5789                  Pos:308 C=Emp.City R=Res.City  */
5790    IF (p_report_qualifier = 'OH_RTCCA')
5791    THEN
5792      /*r_input_29 := lpad(rpad(nvl(replace(p_input_29,' '),'000'),3),10); */
5793       r_input_3  := 'RO' || rpad(nvl(replace(p_input_29,' '),'000'),3); /* 6716247 */
5794       r_input_29 := rpad(' ',10);
5795       r_input_30 := rpad(nvl(p_input_30,' '),1);
5796    /* Bug 4045592 - Commented the following code as blank is reqd from 338-412
5797       r_input_34 := rpad(rpad(nvl(replace(upper(p_input_34),' '),' '),22),75); */
5798 
5799    END IF;
5800 
5801    IF (p_report_qualifier = 'OH_CCAAA')
5802    THEN
5803     -- r_input_29 := lpad(rpad(nvl(replace(p_input_29,' '),'000'),3),10);
5804       r_input_29 := rpad(' ',10); -- Bug 13325368 - Format changes for the year 2011
5805       r_input_30 := rpad(nvl(p_input_30,' '),1);
5806    /* Bug 4045592 - Commented the following code as blank is reqd from 338-412
5807       r_input_34 := rpad(rpad(nvl(replace(upper(p_input_34),' '),' '),22),75); */
5808    END IF;
5809 
5810 
5811    IF ((p_report_qualifier = 'MO_STLOU') OR
5812        (p_report_qualifier = 'PA_PHILA') OR
5813        (p_report_qualifier = 'OH_DAYTO')) THEN
5814       r_input_30 := rpad(nvl(p_input_30,' '),1);
5815    END IF;
5816 
5817    IF (p_report_qualifier = 'MO_KNSAS')  THEN
5818       r_input_30 := rpad(' ',1);
5819    END IF;
5820 
5821    IF p_report_qualifier = 'PA_PHILA' THEN
5822       hr_utility.trace('Company Locality Id '||p_input_33);
5823       r_input_33 := lpad(substr(NVL(p_input_33,' '),1,7),7);
5824    END IF;
5825 
5826    IF p_report_qualifier = 'OH_DAYTO' THEN
5827       r_input_34 := rpad(lpad(nvl(r_input_31,'0'),12,'0'),75);
5828       r_input_35 := rpad(lpad(nvl(r_input_32,'0'),12,'0'),75);
5829    END IF;
5830    /* City Name should be displayed for OH RITA for Taxes Withheld */
5831    /* Bug 5886247 */
5832    IF (p_report_qualifier = 'OH_RTCCA') THEN /* 6716247 */
5833       r_input_34 := lpad(' ',75);
5834      /* IF to_number(nvl(r_input_32,'0')) > 0 THEN
5835          r_input_34 := rpad(rpad(nvl(p_input_34,' '),22,' '),75, ' ') ;
5836       END IF ; */
5837    END IF ;
5838 
5839    /* Fix for Bug # 2680070 */
5840    hr_utility.trace('Value of Stock Option Amount '||p_input_35);
5841    IF (p_report_qualifier = 'MO_STLOU') THEN
5842       IF (to_number(NVL(p_input_35,'0')) > 0) THEN
5843          r_input_34 := 'STK'||lpad(NVL(p_input_35,'0'),11,'0')||lpad(' ',61);
5844          r_input_35 := lpad(' ',75);
5845       ELSE
5846          r_input_34 := lpad(' ',3)||rpad('0',11,'0')||lpad(' ',61);
5847          r_input_35 := lpad(' ',75);
5848       END IF;
5849    END IF;
5850    hr_utility.trace('Value of r_input_34 '||r_input_34);
5851 
5852    l_last_field := lpad(' ',25);
5853 
5854   /*  if p_report_qualifier = 'WI' THEN -- Bug 9065558
5855   l_last_field := rpad('0',25,'0');
5856   END IF;        */
5857 
5858     IF p_report_qualifier = 'OR' THEN /* 9065357 */
5859 		  r_input_31 := lpad(' ',11);
5860       r_input_32 := lpad(' ',11);
5861  end if ;
5862 
5863   if p_report_qualifier = 'MD' Then /* 7572352 */
5864     l_last_field  := lpad(' ',9) || to_char(sysdate,'YYYYMMDD')
5865                           ||to_char(systimestamp,'HH24MISSFF2') ;
5866 
5867     end if ;
5868 
5869 if p_report_qualifier = 'IN' Then   -- 13409513
5870         r_input_21 := lpad('0',11,'0');
5871         r_input_22 := lpad('0',2,'0');
5872 	r_input_23 := lpad('0',8,'0');
5873 	r_input_24 := lpad('0',8,'0');
5874         r_input_25 := lpad(' ',20);
5875       end if ;
5876 
5877    IF p_input_40 = 'FLAT' THEN
5878 --{ Start of formatting FLAT type RS Record
5879 --
5880       IF p_report_qualifier = 'IN' THEN
5881          l_fl_field_17_20 := r_input_17 || lpad(' ',10);
5882 
5883 	 /* Bug # 5513076 */
5884          swap_street_location_indiana := r_input_9;
5885          r_input_9 := r_input_10;                 /*pos 73-94 Street Address pos 95-116 Location Address */
5886          r_input_10 := swap_street_location_indiana;
5887 
5888 	 -- Bug 5513076,5637673
5889           IN_state_adv_EIC := substr(r_input_34,1,11);
5890 
5891       /*    r_input_34 := '000' Commenting for Bug# 5739737
5892                         lpad(nvl(substr(p_input_33, -3),'0'),3,'0')||
5893                         IN_state_adv_EIC||'INADV'||substr(r_input_34,20,53);  */
5894       r_input_34 := lpad(nvl(substr(p_input_33, -3),'0'),3,'0')|| lpad(' ',69) ;
5895       r_input_35 := lpad(' ',75);
5896 
5897       ELSE
5898          l_fl_field_17_20 := r_input_17 || r_input_18 || r_input_19 || r_input_20 ;
5899       END IF;
5900 
5901       IF p_report_qualifier = 'MD' THEN /* 6648007 */
5902      /* r_input_32 := lpad(' ', 8) || rpad(substr(nvl(p_input_38,' '),1,9),9) ; */
5903       r_input_32 := lpad(' ', 8) || rpad(substr(replace(replace(nvl(p_input_38,' '),'-'),'/'),1,9),9);
5904       r_input_33 := ' ' ;
5905       END IF;
5906 
5907 
5908     /* 13409513  */
5909     IF p_report_qualifier = 'IN' THEN
5910 
5911         r_input_17 := lpad(' ',2);
5912         r_input_18 := lpad(' ',2);
5913         r_input_19 := lpad('0',6,'0');
5914         r_input_20 := lpad('0',11,'0');
5915         l_fl_field_17_20 := r_input_17 || r_input_18 || r_input_19 || r_input_20 ;
5916 
5917       END IF;
5918 
5919       return_value:= 'RS'||r_input_2
5920                          ||r_input_3
5921                          ||l_ssn
5922                          ||l_first_name
5923                          ||l_middle_name
5924                          ||l_last_name
5925                          ||l_suffix
5926                          ||rpad(substr(nvl(r_input_9,' '),1,22),22)
5927                          ||rpad(substr(nvl(r_input_10,' '),1,22),22)
5928                          ||rpad(substr(nvl(r_input_11,' '),1,22),22)
5929                          ||rpad(substr(nvl(r_input_12,' '),1,2),2)
5930                          ||rpad(substr(nvl(r_input_13,' '),1,5),5)
5931                          ||rpad(substr(nvl(r_input_14,' '),1,4),9)
5932                          ||r_input_15
5933                          ||r_input_16
5934                          ||l_fl_field_17_20
5935                          ||r_input_21
5936                          ||r_input_22
5937                          ||r_input_23
5938 	                         ||r_input_24
5939                          ||lpad(' ',5)
5940                          ||r_input_25
5941                          ||lpad(' ',6)
5942                          ||r_input_26
5943                          ||r_input_27
5944                          ||r_input_28
5945                          ||r_input_29
5946                          ||r_input_30
5947                          ||r_input_31
5948                          ||r_input_32
5949                          ||r_input_33
5950                          ||r_input_34
5951                          ||r_input_35
5952                          ||l_last_field
5953 	                 ||l_end_of_rec;
5954 
5955       hr_utility.trace('Length of return value = '||to_char(length(return_value)));
5956 --} End of formatting FLAT Type RS Record
5957    ELSIF p_input_40 = 'CSV' THEN
5958 --{ Start of formatting RS record in CSV format
5959       /* Bug 3180532
5960          IN does not require fields Country Code, Optional code and Reporting Period */
5961       /* Bug 13409513  */
5962       IF p_report_qualifier = 'IN' THEN  -- 13409513
5963          /* l_audit_field_17 := p_input_17; */
5964         r_input_17 := lpad(' ',2);
5965         r_input_18 := lpad(' ',2);
5966         r_input_19 := lpad('0',6,'0');
5967         r_input_20 := lpad('0',11,'0');
5968         l_audit_field_17 := r_input_17 || r_input_18 || r_input_19 ;
5969         r_input_30 := lpad(nvl(r_input_30,' '),2,'0')||','||'D';  /* Bug 16013916*/
5970       /* Following ELSIF block added for 'PR' as part of the bug 13449377 */
5971       ELSIF p_report_qualifier = 'PR' THEN
5972         l_audit_field_17 := r_input_17 ||','|| p_input_18;  -- bug 13449377
5973         r_input_20 := p_input_20;  -- bug 13449377
5974       ELSE
5975         l_audit_field_17 := r_input_17 ||','|| r_input_18 ||','|| r_input_19 ;
5976       END IF;
5977 
5978       return_value := 'RS'
5979                       ||','||r_input_2
5980                       ||','||r_input_3
5981                       ||','||l_ssn
5982                       ||','||l_first_name
5983                       ||','||l_middle_name
5984                       ||','||l_last_name
5985                       ||','||l_suffix
5986                       ||','||rpad(substr(nvl(r_input_9,' '),1,22),22)
5987                       ||','||rpad(substr(nvl(r_input_10,' '),1,22),22)
5988                       ||','||rpad(substr(nvl(r_input_11,' '),1,22),22)
5989                       ||','||rpad(substr(nvl(r_input_12,' '),1,2),2)
5990                       ||','||rpad(substr(nvl(r_input_13,' '),1,5),5)
5991                       ||','||rpad(substr(nvl(r_input_14,' '),1,4),4)
5992                       ||','||lpad(' ',5)
5993                       ||','||r_input_15
5994                       ||','||r_input_16
5995                       ||','||l_audit_field_17
5996 	                    ||','||r_input_20
5997                       ||','||r_input_21
5998                       ||','||r_input_22
5999                       ||','||r_input_23
6000                       ||','||r_input_24
6001                       ||','||lpad(' ',6)
6002                       ||','||r_input_25
6003                       ||','||lpad(' ',6)
6004                       ||','||r_input_26
6005                       ||','||r_input_27
6006                       ||','||r_input_28
6007                       ||','||r_input_29
6008                       ||','||r_input_30
6009                       ||','||r_input_31
6010                       ||','||r_input_32
6011                       ||','||r_input_33
6012                       ||','||r_input_34
6013                       ||','||r_input_35
6014                       ||','||lpad(' ',5);
6015 --} End of formatting RS record in CSV format
6016 --
6017    ELSIF p_input_40 = 'BLANK' THEN
6018 --{ Start of formatting BALNK RS record used for audit report
6019 --
6020    /* Bug 3180532 - IN does not require fields Country Code,
6021                     Optional code and Reporting Period */
6022    IF p_report_qualifier = 'IN' THEN
6023          l_audit_field_17 := ' ';
6024       ELSE
6025          l_audit_field_17 := ' '||','||' '||','||' ';
6026       END IF;
6027 
6028       return_value := ''
6029                       ||','||' '
6030                       ||','||' '
6031                       ||','||' '
6032                       ||','||' '
6033                       ||','||' '
6034                       ||','||' '
6035                       ||','||' '
6036                       ||','||' '
6037                       ||','||' '
6038                       ||','||' '
6039                       ||','||' '
6040                       ||','||' '
6041                       ||','||' '
6042                       ||','||lpad(' ',5)
6043                       ||','||' '
6044                       ||','||' '
6045                       ||','|| l_audit_field_17
6046                       ||','||' '
6047                       ||','||' '
6048                       ||','||' '
6049                       ||','||' '
6050                       ||','||' '
6051                       ||','||lpad(' ',6)
6052                       ||','||' '
6053                       ||','||lpad(' ',6)
6054                       ||','||' '
6055                       ||','||' '
6056                       ||','||' '
6057                       ||','||' '
6058                       ||','||' '
6059                       ||','||' '
6060                       ||','||' '
6061                       ||','||' '
6062                       ||','||' '
6063                       ||','||' '
6064                       ||','||lpad(' ',5);
6065 --} End of formatting BLANK RS record used for audit report
6066 --
6067       END IF; -- p_input_40
6068       p_error := l_exclude_from_output_chk;
6069       ret_str_len:=length(return_value);
6070       return return_value;
6071 END format_W2_RS_record;
6072 -- End of Formatting RS Record for W2 Reporting
6073 
6074 -- Formatting RT record for W2 reporting
6075 --
6076 /*
6077   Record Identifier                                              --> p_input_1
6078   Number of RW Records                                           --> p_input_2
6079   Wages, Tips and other Compensation                             --> p_input_3
6080   Federal Income Tax Withheld                                    --> p_input_4
6081   Social Security Wages                                          --> p_input_5
6082   Social Security Tax Withheld                                   --> p_input_6
6083   Medicare Wages And Tips                                        --> p_input_7
6084   Medicare Tax Withheld                                          --> p_input_8
6085   Social Security Tips                                           --> p_input_9
6086   Advance Earned Income Credit                                   --> p_input_10
6087   Dependent Care Benefits                                        --> p_input_11
6088   Deferred Compensation Contributions to Section 401(k)          --> p_input_12
6089   Deferred Compensation Contributions to Section 403(b)          --> p_input_13
6090   Deferred Compensation Contributions to Section 408(k)(6)       --> p_input_14
6091   Deferred Compensation Contributions to Section 457(b)          --> p_input_15
6092   Deferred Compensation Contributions to Section 501(c)(18)(D)   --> p_input_16
6093   Military EE''s Basic Quarters, Subsistence And Combat Pay      --> p_input_17
6094   Non-Qual. Plan Sec.457 Distributions or Contributions          --> p_input_18
6095   Non-Qual. Plan NOT Section 457 Distributions or Contributions  --> p_input_19
6096   Employer Cost of Premiums for GTL> $50k                        --> p_input_20
6097   Income Tax Withheld by Third-Party Payer                       --> p_input_21
6098   Income from the Exercise of Nonqualified Stock Options         --> p_input_22
6099 
6100   For Massachussets following input parameters were used
6101       W2 Govt EE Contributions                                   --> p_input_23
6102       Total Fed Wages                                            --> p_input_24
6103 
6104   For PuertoRico following input parameters were used
6105      Cost of Pension or Annuity                                  --> p_input_23
6106      Contributions to Qualified Plans                            --> p_input_24
6107      Cost Reimbursement                                          --> p_input_25
6108   Employer Contributions to a Health Savings Account             --> p_input_26
6109   Non-Taxable Combat Pay                                         --> p_input_27
6110   Deferrals Under a Section 409A Non-Qualified Deferred Comp Plan--> p_input_28
6111   Designated Roth Contributions to a section 401(k) Plan         --> p_input_31
6112   Designated Roth Contributions Under a section 403(b) Plan      --> p_input_32
6113   Employer-Sponsored Health Coverage                             --> p_input_41
6114 */
6115 	FUNCTION format_W2_RT_record(
6116                    p_effective_date       IN  varchar2,
6117                    p_report_type          IN  varchar2,
6118                    p_format               IN  varchar2,
6119                    p_report_qualifier     IN  varchar2,
6120                    p_record_name          IN  varchar2,
6121                    p_input_1              IN  varchar2,
6122                    p_input_2              IN  varchar2,
6123                    p_input_3              IN  varchar2,
6124                    p_input_4              IN  varchar2,
6125                    p_input_5              IN  varchar2,
6126                    p_input_6              IN  varchar2,
6127                    p_input_7              IN  varchar2,
6128                    p_input_8              IN  varchar2,
6129                    p_input_9              IN  varchar2,
6130                    p_input_10             IN  varchar2,
6131                    p_input_11             IN  varchar2,
6132                    p_input_12             IN  varchar2,
6133                    p_input_13             IN  varchar2,
6134                    p_input_14             IN  varchar2,
6135                    p_input_15             IN  varchar2,
6136                    p_input_16             IN  varchar2,
6137                    p_input_17             IN  varchar2,
6138                    p_input_18             IN  varchar2,
6139                    p_input_19             IN  varchar2,
6140                    p_input_20             IN  varchar2,
6141                    p_input_21             IN  varchar2,
6142                    p_input_22             IN  varchar2,
6143                    p_input_23             IN  varchar2,
6144                    p_input_24             IN  varchar2,
6145                    p_input_25             IN  varchar2,
6146                    p_input_26             IN  varchar2,
6147                    p_input_27             IN  varchar2,
6148                    p_input_28             IN  varchar2,
6149                    p_input_29             IN  varchar2,
6150                    p_input_30             IN  varchar2,
6151                    p_input_31             IN  varchar2,
6152                    p_input_32             IN  varchar2,
6153                    p_input_33             IN  varchar2,
6154                    p_input_34             IN  varchar2,
6155                    p_input_35             IN  varchar2,
6156                    p_input_36             IN  varchar2,
6157                    p_input_37             IN  varchar2,
6158                    p_input_38             IN  varchar2,
6159                    p_input_39             IN  varchar2,
6160                    p_input_40             IN  varchar2,
6161                    p_validate             IN  varchar2,
6162                    p_exclude_from_output  OUT nocopy varchar2,
6163                    sp_out_1               OUT nocopy varchar2,
6164                    sp_out_2               OUT nocopy varchar2,
6165                    sp_out_3               OUT nocopy varchar2,
6166                    sp_out_4               OUT nocopy varchar2,
6167                    sp_out_5               OUT nocopy varchar2,
6168                    ret_str_len            OUT nocopy number,
6169                    p_error                OUT nocopy boolean,
6170                    p_input_41             IN  varchar2 default null  /* Bug# 13351713 */
6171                  ) RETURN VARCHAR2
6172 IS
6173 l_input_2                  varchar2(100);
6174 return_value               varchar2(32767);
6175 l_exclude_from_output_chk  boolean;
6176 l_rt_end_of_rec            varchar2(200);
6177 l_records                  number(10);
6178 l_end_of_rec               varchar2(20);
6179 p_end_of_rec               varchar2(20) :=
6180                              fnd_global.local_chr(13)||fnd_global.local_chr(10);
6181 
6182 TYPE function_columns IS RECORD(
6183                                 p_parameter_name  varchar2(100),
6184                                 p_parameter_value varchar2(100),
6185                                 p_output_value varchar2(100)
6186                                );
6187 function_parameter_rec  function_columns;
6188 TYPE input_parameter_record IS TABLE OF function_parameter_rec%TYPE
6189                                INDEX BY BINARY_INTEGER;
6190 parameter_record input_parameter_record;
6191 
6192 r_input_1 varchar2(300);
6193 r_input_2 varchar2(300);
6194 r_input_3 varchar2(300);
6195 r_input_4 varchar2(300);
6196 r_input_5 varchar2(300);
6197 r_input_6 varchar2(300);
6198 r_input_7 varchar2(300);
6199 r_input_8 varchar2(300);
6200 r_input_9 varchar2(300);
6201 r_input_10 varchar2(300);
6202 r_input_11 varchar2(300);
6203 r_input_12 varchar2(300);
6204 r_input_13 varchar2(300);
6205 r_input_14 varchar2(300);
6206 r_input_15 varchar2(300);
6207 r_input_16 varchar2(300);
6208 r_input_17 varchar2(300);
6209 r_input_18 varchar2(300);
6210 r_input_19 varchar2(300);
6211 r_input_20 varchar2(300);
6212 r_input_21 varchar2(300);
6213 r_input_22 varchar2(300);
6214 r_input_23 varchar2(300);
6215 r_input_24 varchar2(300);
6216 r_input_25 varchar2(300);
6217 r_input_26 varchar2(300);
6218 r_input_27 varchar2(300);
6219 r_input_28 varchar2(300);
6220 r_input_29 varchar2(300);
6221 r_input_30 varchar2(300);
6222 r_input_31 varchar2(300);
6223 r_input_32 varchar2(300);
6224 r_input_33 varchar2(300);
6225 r_input_34 varchar2(300);
6226 r_input_35 varchar2(300);
6227 r_input_36 varchar2(300);
6228 r_input_37 varchar2(300);
6229 r_input_38 varchar2(300);
6230 r_input_39 varchar2(300);
6231 r_input_41 varchar2(300);   /* Bug# 13351713 */
6232 
6233 BEGIN
6234 --   hr_utility.trace_on(null,'RI_W2') ;
6235    hr_utility.trace('Formatting RT record for W2 reporting');
6236    hr_utility.trace('p_report_qualifier = '||p_report_qualifier);
6237 -- Initializing local variables with parameter value
6238 --{
6239    r_input_2 := p_input_2;
6240    r_input_3 := p_input_3;
6241    r_input_4 := p_input_4;
6242    r_input_5 := p_input_5;
6243    r_input_6 := p_input_6;
6244    r_input_7 := p_input_7;
6245    r_input_8 := p_input_8;
6246    r_input_9 := p_input_9;
6247    r_input_10 := p_input_10;
6248    r_input_11 := p_input_11;
6249    r_input_12 := p_input_12;
6250    r_input_13 := p_input_13;
6251    r_input_14 := p_input_14;
6252    r_input_15 := p_input_15;
6253    r_input_16 := p_input_16;
6254    r_input_17 := p_input_17;
6255    r_input_18 := p_input_18;
6256    r_input_19 := p_input_19;
6257    r_input_20 := p_input_20;
6258    r_input_21 := p_input_21;
6259    r_input_22 := p_input_22;
6260    r_input_23 := p_input_23;
6261    r_input_24 := p_input_24;
6262    r_input_25 := p_input_25;
6263    r_input_26 := p_input_26;
6264    r_input_27 := p_input_27;
6265    r_input_28 := p_input_28;
6266    r_input_29 := p_input_29;
6267    r_input_30 := p_input_30;
6268    r_input_31 := p_input_31;
6269    r_input_32 := p_input_32;
6270    r_input_33 := p_input_33;
6271    r_input_34 := p_input_34;
6272    r_input_35 := p_input_35;
6273    r_input_36 := p_input_36;
6274    r_input_37 := p_input_37;
6275    r_input_38 := p_input_38;
6276    r_input_39 := p_input_39;
6277    r_input_41 := p_input_41;  /* Bug# 13351713 */
6278 --}
6279 --  Validation Starts
6280    If p_input_40='FLAT' THEN
6281 --{
6282     IF p_report_qualifier = 'MA' THEN
6283 --{
6284        parameter_record(1).p_parameter_name:= 'State taxable Wages';
6285        parameter_record(1).p_parameter_value:=p_input_3;
6286 
6287        parameter_record(2).p_parameter_name:= 'SIT withheld';
6288        parameter_record(2).p_parameter_value:=p_input_4;
6289 
6290        parameter_record(3).p_parameter_name:= 'FICA and Medicare withheld';
6291        parameter_record(3).p_parameter_value:=p_input_5;
6292 
6293        parameter_record(4).p_parameter_name:= 'W2 Govt EE Contributions';
6294        parameter_record(4).p_parameter_value:=p_input_23;
6295 
6296        parameter_record(5).p_parameter_name:= 'Total Fed Wages';
6297        parameter_record(5).p_parameter_value:=p_input_24;
6298        l_records :=5;
6299 --}
6300     ELSIF p_report_qualifier = 'CT' THEN
6301 --{
6302        parameter_record(1).p_parameter_name:= 'State taxable Wages';
6303        parameter_record(1).p_parameter_value:=p_input_3;
6304 
6305        parameter_record(2).p_parameter_name:= 'SIT withheld';
6306        parameter_record(2).p_parameter_value:=p_input_4;
6307 
6308        l_records :=2;
6309 --}
6310     ELSIF p_report_qualifier = 'PA' THEN
6311 --{
6312        parameter_record(1).p_parameter_name:= 'State taxable Wages';
6313        parameter_record(1).p_parameter_value:=p_input_3;
6314 
6315        parameter_record(2).p_parameter_name:= 'SIT withheld';
6316        parameter_record(2).p_parameter_value:=p_input_4;
6317 
6318        /* Bug 3680056 New field */
6319        parameter_record(3).p_parameter_name:= 'Employer Contributions to Health Savings Account';
6320        parameter_record(3).p_parameter_value:=p_input_26;
6321 
6322        parameter_record(4).p_parameter_name:= 'Non-Taxable Combat Pay';
6323        parameter_record(4).p_parameter_value := p_input_27 ;
6324 
6325        l_records := 4 ;
6326 --       l_records :=3;
6327 --}
6328     ELSIF p_report_qualifier = 'RI' THEN
6329 --{
6330        parameter_record(1).p_parameter_name:= 'Wages,Tips And Other Compensation';
6331        parameter_record(1).p_parameter_value:=p_input_3;
6332 
6333        parameter_record(2).p_parameter_name:= 'Federal Income Tax Withheld';
6334        parameter_record(2).p_parameter_value:=p_input_4;
6335 
6336        parameter_record(3).p_parameter_name:= 'State Taxable Wages';
6337        parameter_record(3).p_parameter_value:=p_input_5;
6338 
6339        parameter_record(4).p_parameter_name:= 'Medicare Wages And Tips';
6340        parameter_record(4).p_parameter_value:=p_input_6;
6341 
6342        parameter_record(5).p_parameter_name:= 'Medicare Tax Withheld';
6343        parameter_record(5).p_parameter_value:=p_input_7;
6344 
6345        parameter_record(6).p_parameter_name:= 'SIT withheld';
6346        parameter_record(6).p_parameter_value:=p_input_8;
6347 
6348        /* Bug 3680056 New field */
6349        parameter_record(7).p_parameter_name:= 'Employer Contributions to Health Savings Account';
6350        parameter_record(7).p_parameter_value:=p_input_26;
6351 
6352        parameter_record(8).p_parameter_name:= 'Non-Taxable Combat Pay';
6353        parameter_record(8).p_parameter_value := p_input_27 ;
6354 
6355        parameter_record(9).p_parameter_name:= 'Deferrals Under a Sec 409A Non-Qual Def Comp Plan';
6356        parameter_record(9).p_parameter_value := p_input_28 ;
6357 
6358        l_records := 9 ;
6359 
6360 --       l_records :=7;
6361 --}
6362     ELSIF p_report_qualifier = 'FL_SQWL' THEN
6363 --{
6364        parameter_record(1).p_parameter_name:= 'Wages,Tips And Other Compensation';
6365        parameter_record(1).p_parameter_value:=p_input_3;
6366 
6367        parameter_record(2).p_parameter_name:= 'Total Tax Due';
6368        parameter_record(2).p_parameter_value:=p_input_22;
6369 
6370        parameter_record(3).p_parameter_name:= 'Corrected Worker Ist Month';
6371        parameter_record(3).p_parameter_value:=p_input_23;
6372 
6373        parameter_record(4).p_parameter_name:= 'Corrected Worker IInd Month';
6374        parameter_record(4).p_parameter_value:=p_input_24;
6375 
6376        parameter_record(5).p_parameter_name:= 'Corrected Worker IIIrd Month';
6377        parameter_record(5).p_parameter_value:=p_input_25;
6378 
6379        l_records := 5 ;
6380        l_end_of_rec   := p_end_of_rec;
6381 --}
6382     ELSIF p_report_qualifier = 'MO_KNSAS' THEN
6383 --       Fix for Bug# 4502738
6384 --{
6385        parameter_record(1).p_parameter_name:= 'Wages,Tips And Other Compensation';
6386        parameter_record(1).p_parameter_value:=p_input_3;
6387 
6388        parameter_record(2).p_parameter_name:= 'Medicare Wages And Tips';
6389        parameter_record(2).p_parameter_value:=p_input_7;
6390 
6391        parameter_record(3).p_parameter_name:= 'Medicare Tax Withheld';
6392        parameter_record(3).p_parameter_value:=p_input_8;
6393 
6394        l_records := 3 ;
6395        l_end_of_rec   := p_end_of_rec;
6396 --}
6397     ELSE
6398 --{
6399        parameter_record(1).p_parameter_name:= ' Wages,Tips And Other Compensation';
6400        parameter_record(1).p_parameter_value:=p_input_3;
6401 
6402        parameter_record(2).p_parameter_name:= ' Federal Income Tax Withheld';
6403        parameter_record(2).p_parameter_value:=p_input_4;
6404 
6405        parameter_record(3).p_parameter_name:= 'Social Security Wages';
6406        parameter_record(3).p_parameter_value:=p_input_5;
6407 
6408        parameter_record(4).p_parameter_name:= ' Social Security Tax Withheld';
6409        parameter_record(4).p_parameter_value:=p_input_6;
6410 
6411        parameter_record(5).p_parameter_name:= 'Medicare Wages And Tips';
6412        parameter_record(5).p_parameter_value:=p_input_7;
6413 
6414        parameter_record(6).p_parameter_name:= 'Medicare Tax Withheld';
6415        parameter_record(6).p_parameter_value:=p_input_8;
6416 
6417        parameter_record(7).p_parameter_name:= 'Social Security Tips';
6418        parameter_record(7).p_parameter_value:=p_input_9;
6419 
6420        parameter_record(8).p_parameter_name:= 'Advance Earned Income Credit';
6421        parameter_record(8).p_parameter_value:=p_input_10;
6422 
6423        parameter_record(9).p_parameter_name:= 'Dependent Care Benefits';
6424        parameter_record(9).p_parameter_value:=p_input_11;
6425 
6426        parameter_record(10).p_parameter_name:= 'Deferred Comp Contr. to Sec 401(k)';
6427        parameter_record(10).p_parameter_value:=p_input_12;
6428 
6429        parameter_record(11).p_parameter_name:= 'Deferred Comp Contr. to Sec 403(b)';
6430        parameter_record(11).p_parameter_value:=p_input_13;
6431 
6432        parameter_record(12).p_parameter_name:= 'Deferred Comp Contr. to Sec 408(k)(6)';
6433        parameter_record(12).p_parameter_value:=p_input_14;
6434 
6435        parameter_record(13).p_parameter_name:= 'Deferred Comp Contr. to Sec 457(b)';
6436        parameter_record(13).p_parameter_value:=p_input_15;
6437 
6438        parameter_record(14).p_parameter_name:= 'Deferred Comp Contr. to Sec 501(c)';
6439        parameter_record(14).p_parameter_value:=p_input_16;
6440 
6441     /* Following field is commented to fix bug # 2297587
6442        parameter_record(15).p_parameter_name:= 'Military Combat Pay';
6446        parameter_record(15).p_parameter_value:=p_input_18;
6443        parameter_record(15).p_parameter_value:=p_input_17;
6444               */
6445        parameter_record(15).p_parameter_name:= 'Non-Qual. plan Sec 457';
6447 
6448        parameter_record(16).p_parameter_name:= 'Non-Qual. plan NOT Sec 457';
6449        parameter_record(16).p_parameter_value:=p_input_19;
6450 
6451        parameter_record(17).p_parameter_name:= 'Employer cost of premiun';
6452        parameter_record(17).p_parameter_value:=p_input_20;
6453 
6454        parameter_record(18).p_parameter_name:= 'Income tax withheld by 3rd party payer';
6455        parameter_record(18).p_parameter_value:=p_input_21;
6456 
6457        parameter_record(19).p_parameter_name:= 'Income from nonqualified stock option';
6458        parameter_record(19).p_parameter_value:=p_input_22;
6459 
6460        /* Bug 3680056 New field */
6461        parameter_record(20).p_parameter_name:= 'Employer Contributions to Health Savings Account';
6462        parameter_record(20).p_parameter_value:=p_input_26;
6463 
6464        parameter_record(21).p_parameter_name:= 'Non-Taxable Combat Pay';
6465        parameter_record(21).p_parameter_value := p_input_27 ;
6466 
6467        parameter_record(22).p_parameter_name:= 'Deferrals Under a Sec 409A Non-Qual Def Comp Plan';
6468        parameter_record(22).p_parameter_value := p_input_28 ;
6469        /* Bug 5256745 */
6470 
6471        parameter_record(23).p_parameter_name:= 'Roth Contributions Und Sec 401(k) Plan';
6472        parameter_record(23).p_parameter_value := p_input_31 ;
6473 
6474        parameter_record(24).p_parameter_name:= 'Roth Contributions Und Sec 403(b) Plan';
6475        parameter_record(24).p_parameter_value := p_input_32 ;
6476 
6477        l_records := 24 ;
6478 
6479     END IF;
6480 
6481     /* These Values validated specifically for PuertoRico */
6482     /* Bug 3680056 - Since New field is added as parameter 20, the foll. 3 parameters for PR
6483        have been shifted by one each. i.e from 20-22 to 21-23 */
6484     IF p_report_qualifier = 'PR' THEN
6485 
6486        parameter_record(21).p_parameter_name:= 'Cost of Pension Annuity';
6487        parameter_record(21).p_parameter_value:=p_input_23;
6488 
6489        parameter_record(22).p_parameter_name:= 'Contribution to Qual. Plans';
6490        parameter_record(22).p_parameter_value:=p_input_24;
6491 
6492        parameter_record(23).p_parameter_name:= 'Cost Reimbursement';
6493        parameter_record(23).p_parameter_value:=p_input_25;
6494 
6495        parameter_record(24).p_parameter_name:= 'Non-Taxable Combat Pay';
6496        parameter_record(24).p_parameter_value := p_input_27 ;
6497 
6498        parameter_record(25).p_parameter_name:= 'Deferrals Under a Sec 409A Non-Qual Def Comp Plan';
6499        parameter_record(25).p_parameter_value := p_input_28 ;
6500 
6501        parameter_record(26).p_parameter_name:= 'Uncollected SS Tax on Tips';
6502        parameter_record(26).p_parameter_value := p_input_29 ;
6503 
6504        parameter_record(27).p_parameter_name:= 'Uncollected Medicare Tax on Tips';
6505        parameter_record(27).p_parameter_value := p_input_30 ;
6506 
6507        l_records := 27 ;
6508 
6509     END IF;
6510 
6511 -- Validating above data based on the report_qualifier and number entries
6512 --
6513     FOR i in 1..l_records
6514     LOOP
6515        parameter_record(i).p_output_value :=
6516        pay_us_reporting_utils_pkg.data_validation( p_effective_date,
6517                                                    p_report_type,
6518                                                    p_format,
6519                                                    p_report_qualifier,
6520                                                    p_record_name,
6521                                                    'NEG_CHECK',
6522                                                    parameter_record(i).p_parameter_value,
6523                                                    parameter_record(i).p_parameter_name,
6524                                                    p_input_39,
6525                                                    null,
6526                                                    p_validate,
6527                                                    p_exclude_from_output,
6528                                                    sp_out_1,
6529                                                    sp_out_2);
6530        IF p_exclude_from_output = 'Y' THEN
6531           l_exclude_from_output_chk := TRUE;
6532        END IF;
6533        hr_utility.trace(parameter_record(i).p_parameter_name||' = '
6534                                     ||parameter_record(i).p_output_value);
6535        hr_utility.trace('p_exclude_from_output = '||p_exclude_from_output);
6536     END LOOP;
6537 
6538 -- Validation Ends here
6539 --
6540 -- Formatting RT Record depending on report_qualifier
6541 --
6542 -- Formatting No of Employee Wage/State Record
6543     l_input_2:= lpad(substr(nvl(p_input_2,'0'),1,7),7,0);
6544 
6545     IF p_report_qualifier = 'MA' THEN
6546 --{
6547        return_value := 'RT'||l_input_2
6548                            ||parameter_record(1).p_output_value
6549                            ||parameter_record(2).p_output_value
6550                            ||lpad(' ',45)
6551                      /*      ||parameter_record(3).p_output_value
6552                            ||parameter_record(4).p_output_value     -- Railroad, MA and Local Govt Reqtirement Contrib
6553                            ||parameter_record(5).p_output_value     -- Fed Wages (Box 1) */
6554                            ||lpad(' ',45)    /* 6720319 */
6555                            ||lpad(' ',165)    /* 13255564 */
6556                            ||lpad(nvl(r_input_41,'0'),15,'0')  /* Bug# 13351713 */
6557                            ||lpad(' ',203);                    ---- Bug 132555564
6558                            --||lpad(' ',383);                         -- 383 Spaces
6559 --}
6560     ELSIF p_report_qualifier = 'CT' THEN
6561 --{
6562     --
6563     -- space between wage and withhed removed to fix bug # 2640052
6564     --
6565        return_value := 'RT'||l_input_2
6566                            ||parameter_record(1).p_output_value
6567                     --     ||lpad(' ',1)
6568                            ||parameter_record(2).p_output_value
6569                            ||lpad(' ',255)
6570                            ||lpad(nvl(r_input_41,'0'),15,'0')  /* Bug# 13351713 */
6571                            ||lpad(' ',203);                    ---- Bug 132555564
6572 													--||lpad(' ',473);
6573 
6574 --}
6575     ELSIF p_report_qualifier = 'PA' THEN
6576 --{
6577        return_value := 'RT'||lpad(' ',247) -- changed from 249
6578                            ||parameter_record(3).p_output_value  -- Bug 3680056 - New Field 250-264
6579 			   --||lpad(' ',209)
6580 												   ||lpad(' ',15)
6581 												   ||parameter_record(4).p_output_value
6582                            || lpad(nvl(r_input_41,'0'),15,'0') /* Bug# 13351713 */ 												 ||rpad(' ',166) --Bug 13255564
6583                            ||l_input_2
6584                            ||parameter_record(1).p_output_value
6585                            ||parameter_record(2).p_output_value;
6586 	--}
6587     ELSIF p_report_qualifier = 'RI' THEN
6588 --{
6589        hr_utility.trace('Within RI') ;
6590        return_value := 'RT'||l_input_2
6591                            ||parameter_record(1).p_output_value
6592                            ||parameter_record(2).p_output_value
6593                            ||parameter_record(3).p_output_value
6594                            ||lpad(' ',15)
6595                            ||parameter_record(4).p_output_value
6596                            ||parameter_record(5).p_output_value
6597                            ||parameter_record(6).p_output_value
6598 			   ||lpad(' ',135)  /*  Bug 3680056 - New field from 250-264 */
6599 			   ||rpad(parameter_record(7).p_output_value,30)
6600 			   ||rpad(parameter_record(8).p_output_value,15)
6601 			   ||lpad(nvl(r_input_41,'0'),15,'0')  /* Bug# 13351713 */
6602          ||lpad('0',45,'0')
6603 			   ||rpad(parameter_record(9).p_output_value,158) ;
6604        hr_utility.trace('Exiting RI') ;
6605 --}
6606     ELSIF p_report_qualifier = 'SC_SQWL' THEN /*2274381.*/
6607        return_value := 'RT'||l_input_2
6608                            ||lpad(' ',503);
6609     ELSIF p_report_qualifier = 'FL_SQWL' THEN
6610 --{
6611        return_value := 'RT'||lpad(' ',7)
6612                            ||lpad(substr(nvl(parameter_record(1).p_output_value,'0'),1,15),15)
6613                            ||lpad(' ',456)
6614                            ||lpad(substr(nvl(parameter_record(2).p_output_value,'0'),1,11),11)
6615                            ||lpad(substr(nvl(parameter_record(3).p_output_value,'0'),1,7),7)
6616                            ||lpad(substr(nvl(parameter_record(4).p_output_value,'0'),1,7),7)
6617                            ||lpad(substr(nvl(parameter_record(5).p_output_value,'0'),1,7),7)
6618 				           ||l_end_of_rec;
6619 --}
6620     ELSIF p_report_qualifier = 'PA_PHILA' THEN /* Bug # 2680189 */
6621        return_value := 'RT'||lpad(' ',292)
6622                            ||lpad(nvl(r_input_41,'0'),15,'0') /* Bug# 13351713 */
6623                            ||lpad(' ',203);
6624     ELSIF p_report_qualifier = 'PR' THEN
6625 --{
6626        return_value := 'RT'||l_input_2
6627                            ||parameter_record(1).p_output_value
6628                            ||parameter_record(2).p_output_value
6629                            ||parameter_record(3).p_output_value
6630                            ||parameter_record(4).p_output_value
6631                            ||parameter_record(5).p_output_value
6632                            ||parameter_record(6).p_output_value
6633                            ||parameter_record(7).p_output_value
6634                            ||parameter_record(8).p_output_value
6635                            ||parameter_record(9).p_output_value
6636                        /*  Bug 	5876054
6637                            ||parameter_record(10).p_output_value
6638                            ||parameter_record(11).p_output_value
6639                            ||parameter_record(12).p_output_value
6640                            ||parameter_record(13).p_output_value
6641                            ||parameter_record(14).p_output_value
6642                            ||lpad(' ',15)
6643                            ||rpad(parameter_record(15).p_output_value,15)
6644                        */
6645                            ||lpad('0',15,'0')
6646                            ||lpad('0',15,'0')
6647                            ||lpad('0',15,'0')
6648                            ||lpad('0',15,'0')
6649                            ||lpad('0',15,'0')
6650                            --||lpad(' ',15,' ')-- Bug 15955687 Bug 14799506, pos 220-234 is balnk filled
6651                            ||lpad('0',15,'0') -- for thr Bug 16173051
6652                            ||lpad('0',15,'0')--235-249
6653 			   -- Bug 3680056 - New Field 250-264
6654 			               ||parameter_record(20).p_output_value
6655                            ||parameter_record(16).p_output_value
6656                            -- ||rpad(parameter_record(24).p_output_value,30)  /* Commented for Bug# 13449377 */
6657                            ||parameter_record(24).p_output_value   /* Bug# 13449377 */
6658 													 ||lpad(nvl(r_input_41,'0'),15,'0')  /* Displaying Employer-Sponsored Health Coverage as part of Bug# 13449377 */
6659                            ||parameter_record(17).p_output_value
6660                            ||parameter_record(18).p_output_value
6661                            ||parameter_record(19).p_output_value
6662 -- 	5876054                ||parameter_record(25).p_output_value /* Changed from here : Bug 4665713 */
6663                            ||lpad('0',15,'0')
6664                            ||lpad('0',30,'0')
6665 			   ||lpad(' ',113) /* 6644795 - The Values have been Moved to the RV record */
6666             		/*	   ||lpad(' ',22)
6667                            ||parameter_record(21).p_output_value
6668                            ||parameter_record(22).p_output_value
6669                            ||parameter_record(23).p_output_value
6670                            ||lpad('0',15,'0')
6671 			   ||parameter_record(26).p_output_value
6672 			   ||parameter_record(27).p_output_value
6673 			   ||lpad(' ',1) */;
6674 --}
6675     ELSIF p_report_qualifier = 'MO_KNSAS' THEN
6676 --{
6677 --       Fix for Bug# 4502738
6678        return_value := 'RT'||l_input_2
6679                            ||parameter_record(1).p_output_value
6680                            ||rpad('0',45,'0' )
6681                            ||parameter_record(2).p_output_value
6682                            ||parameter_record(3).p_output_value
6683                            ||rpad('0',120,'0' )
6684                            ||rpad(' ',15,' ' )
6685                            ||rpad('0',60,'0' )
6686                            ||lpad(nvl(r_input_41,'0'),15,'0') /* Bug# 13351713 */
6687                            ||rpad('0',60,'0' )
6688                            ||rpad(' ',143,' ' );
6689 --}
6690     ELSE
6691 --{
6692        return_value := 'RT'||l_input_2
6693                            ||parameter_record(1).p_output_value
6694                            ||parameter_record(2).p_output_value
6695                            ||parameter_record(3).p_output_value
6696                            ||parameter_record(4).p_output_value
6697                            ||parameter_record(5).p_output_value
6698                            ||parameter_record(6).p_output_value
6699                            ||parameter_record(7).p_output_value
6700                            ||parameter_record(8).p_output_value
6701                            ||parameter_record(9).p_output_value
6702                            ||parameter_record(10).p_output_value
6703                            ||parameter_record(11).p_output_value
6704                            ||parameter_record(12).p_output_value
6705                            ||parameter_record(13).p_output_value
6706                            ||parameter_record(14).p_output_value
6707 -- commented to fix bug # 2297587 ||parameter_record(15).p_output_value
6708                             --Bug 4859212
6709                            ||lpad(' ',15,' ') /*Pos 220-234, balnk filled for the Bug 14799506 */
6710                            ||rpad(parameter_record(15).p_output_value,15)
6711 			   ||rpad(parameter_record(20).p_output_value,15) -- Bug 3680056 Pos 250-264
6712                            --||rpad(parameter_record(16).p_output_value,45)
6713                            ||parameter_record(16).p_output_value
6714                            ||rpad(parameter_record(21).p_output_value,15)
6715 			   || lpad(nvl(r_input_41,'0'),15,'0') /* Bug# 13351713 */
6716                            ||parameter_record(17).p_output_value
6717                            ||parameter_record(18).p_output_value
6718                            --||rpad(parameter_record(19).p_output_value,173);
6719                            ||parameter_record(19).p_output_value
6720                            --||rpad(parameter_record(22).p_output_value,158)
6721                            /* Bug 5256745 */
6722                            ||parameter_record(22).p_output_value
6723                            ||parameter_record(23).p_output_value
6724                            ||rpad(parameter_record(24).p_output_value,128) ;
6725 
6726 --}
6727     END IF;
6728     hr_utility.trace('B4 Calculating length') ;
6729     ret_str_len:=length(return_value);
6730 --}
6731   ELSIF p_input_40 = 'CSV' THEN
6732 --{
6733      /* for PuertoRico following condition added */
6734      IF p_report_qualifier = 'PR' THEN
6735      /* Bug 4665713 */
6736      l_rt_end_of_rec := ','||p_input_28
6737                            ||lpad(' ',52)||'|'||
6738                            'Cost of Pension Annuity '||p_input_23||'|'||
6739                            'Contrib to Qual. Plans ' ||p_input_24||'|'||
6740                            'Cost Reimbursement '     ||p_input_25||'|'||
6741 			   'Salaries under Act No. 324 of 2004 ' ||'0'||'|'||
6742 			   'Uncollected SS Tax on Tips '||p_input_29||'|'||
6743 			   'Uncollected Medicare Tax on Tips '||p_input_30 ;
6744 
6745      ELSE
6746         l_rt_end_of_rec :=  ','||p_input_28
6747                             ||','||p_input_31
6748                             ||','||p_input_32
6749                             ||','||lpad(' ',113) ;
6750      END IF;
6751 
6752      return_value := 'RT'||','||l_input_2
6753                          ||','||p_input_3
6754                          ||','||p_input_4
6755                          ||','||p_input_5
6756                          ||','||p_input_6
6757                          ||','||p_input_7
6758                          ||','||p_input_8
6759                          ||','||p_input_9
6760                          ||','||p_input_10
6761                          ||','||p_input_11
6762                          ||','||p_input_12
6763                          ||','||p_input_13
6764                          ||','||p_input_14
6765                          ||','||p_input_15
6766                          ||','||p_input_16
6767     -- commented to fix bug # 2297587 ||','||p_input_17
6768                          ||','||lpad('0',15,'0') /* Bug 4859212 */
6769                          ||','||p_input_18
6770                          ||','||p_input_26  -- Bug 3680056 ER Contrib to HSA
6771                          ||','||p_input_19
6772                          ||','||p_input_27
6773                          ||','||lpad(' ',15)
6774                          ||','||p_input_20
6775                          ||','||p_input_21
6776                          ||','||p_input_22
6777                          ||','||p_input_41  /* Bug# 13351713 */
6778 			 ||l_rt_end_of_rec;
6779 --}
6780   END IF; -- p_input_40  (i.e. FLAT, CSV)
6781   p_error := l_exclude_from_output_chk;
6782   ret_str_len:=length(return_value);
6783   hr_utility.trace('Exiting RT') ;
6784   return return_value;
6785 END format_W2_RT_record; -- End of Formatting RT record
6786 --
6787 -- Formatting RW record for W2 reporting
6788 --
6789 /*
6790    Record Identifier                                         --> p_input_1
6791    Number of RO Records                                      --> p_input_2
6792    Allocated Tips                                            --> p_input_3
6793    Uncollected Employee Tax on Tips                          --> p_input_4
6794    Medical Savings Account                                   --> p_input_5
6795    Simple Retirement Account                                 --> p_input_6
6796    Qualified Adoption Expenses                               --> p_input_7
6797    Uncollected Social Security Tax on GTL                    --> p_input_8
6798    Uncollected Medicare Tax On GTL                           --> p_input_9
6799    Wages Subject to Puerto Rico Tax                          --> p_input_10
6800    Commissions Subject to Puerto Rico Tax                    --> p_input_11
6801    Allowances Subject to Puerto Rico Tax                     --> p_input_12
6802    Tips Subject to Puerto Rico Tax                           --> p_input_13
6803    Total Wages, Commissions, Tips, And Allow Sub to PR Tax   --> p_input_14
6804    Puerto Rico Tax Withheld                                  --> p_input_15
6805    Retirement Fund Annual Contributions                      --> p_input_16
6806    Total Wages, Tips And Other Comp Sub to Virgin Islands,
6807     or Guam, or American Samoa, or Northern Mariana
6808     Islands Income Tax                                       --> p_input_17
6809    Virgin Islands, or Guam, Or American Samoa, or Northern
6810     Mariana Islands Income Tax Withheld                      --> p_input_18
6811     Income Under Section 409A on Non-Qualified Def Comp Plan --> p_input_20
6812     Employee Number                                          --> p_input_39
6813    Blank;
6814 */
6815 FUNCTION format_W2_RU_record(
6816                    p_effective_date       IN  varchar2,
6817                    p_report_type          IN  varchar2,
6818                    p_format               IN  varchar2,
6819                    p_report_qualifier     IN  varchar2,
6820                    p_record_name          IN  varchar2,
6821                    p_input_1              IN  varchar2,
6822                    p_input_2              IN  varchar2,
6823                    p_input_3              IN  varchar2,
6824                    p_input_4              IN  varchar2,
6825                    p_input_5              IN  varchar2,
6826                    p_input_6              IN  varchar2,
6827                    p_input_7              IN  varchar2,
6828                    p_input_8              IN  varchar2,
6829                    p_input_9              IN  varchar2,
6830                    p_input_10             IN  varchar2,
6831                    p_input_11             IN  varchar2,
6832                    p_input_12             IN  varchar2,
6833                    p_input_13             IN  varchar2,
6834                    p_input_14             IN  varchar2,
6835                    p_input_15             IN  varchar2,
6836                    p_input_16             IN  varchar2,
6837                    p_input_17             IN  varchar2,
6838                    p_input_18             IN  varchar2,
6839                    p_input_19             IN  varchar2,
6840                    p_input_20             IN  varchar2,
6841                    p_input_21             IN  varchar2,
6842                    p_input_22             IN  varchar2,
6843                    p_input_23             IN  varchar2,
6844                    p_input_24             IN  varchar2,
6845                    p_input_25             IN  varchar2,
6846                    p_input_26             IN  varchar2,
6847                    p_input_27             IN  varchar2,
6848                    p_input_28             IN  varchar2,
6849                    p_input_29             IN  varchar2,
6850                    p_input_30             IN  varchar2,
6851                    p_input_31             IN  varchar2,
6852                    p_input_32             IN  varchar2,
6853                    p_input_33             IN  varchar2,
6854                    p_input_34             IN  varchar2,
6855                    p_input_35             IN  varchar2,
6856                    p_input_36             IN  varchar2,
6857                    p_input_37             IN  varchar2,
6858                    p_input_38             IN  varchar2,
6859                    p_input_39             IN  varchar2,
6860                    p_input_40             IN  varchar2,
6861                    p_validate             IN  varchar2,
6862                    p_exclude_from_output  OUT nocopy varchar2,
6863                    sp_out_1               OUT nocopy varchar2,
6864                    sp_out_2               OUT nocopy varchar2,
6865                    sp_out_3               OUT nocopy varchar2,
6869                    p_error                OUT nocopy boolean
6866                    sp_out_4               OUT nocopy varchar2,
6867                    sp_out_5               OUT nocopy varchar2,
6868                    ret_str_len            OUT nocopy number,
6870                  ) RETURN VARCHAR2
6871 IS
6872 l_input_2                  varchar2(100);
6873 return_value               varchar2(32767);
6874 l_exclude_from_output_chk  boolean;
6875 r_input_6 varchar2(100);
6876 
6877 TYPE function_columns IS RECORD(
6878                                 p_parameter_name  varchar2(100),
6879                                 p_parameter_value varchar2(100),
6880                                 p_output_value varchar2(100)
6881                                );
6882 function_parameter_rec  function_columns;
6883 TYPE input_parameter_record IS TABLE OF function_parameter_rec%TYPE
6884                                INDEX BY BINARY_INTEGER;
6885 parameter_record input_parameter_record;
6886 r_input_1                  varchar2(300);
6887 r_input_2                  varchar2(300);
6888 r_input_3                  varchar2(300);
6889 BEGIN
6890    hr_utility.trace('Formatting RU Record');
6891    hr_utility.trace('Format Mode  p_input_40 '||p_input_40);
6892    IF p_input_40='FLAT' THEN
6893 --{
6894          IF p_report_qualifier = 'PR' THEN         -- Bug #  5668970
6895 		r_input_6 := rpad('0',15,'0');
6896          END IF;
6897 
6898 	 parameter_record(1).p_parameter_name:= ' Allocated Tips';
6899          parameter_record(1).p_parameter_value:=p_input_3;
6900 
6901          parameter_record(2).p_parameter_name:= 'Uncollected employee tax on tips';
6902          parameter_record(2).p_parameter_value:=p_input_4;
6903 
6904          parameter_record(3).p_parameter_name:= 'medical savings a/c';
6905          parameter_record(3).p_parameter_value:=p_input_5;
6906 
6907          parameter_record(4).p_parameter_name:= 'simple retirement a/c';
6908          parameter_record(4).p_parameter_value:=p_input_6;
6909 
6910          parameter_record(5).p_parameter_name:= 'qualified adoption expenses';
6911          parameter_record(5).p_parameter_value:=p_input_7;
6912 
6913          parameter_record(6).p_parameter_name:= 'Uncollected SS tax';
6914          parameter_record(6).p_parameter_value:=p_input_8;
6915 
6916          parameter_record(7).p_parameter_name:= 'Uncollected medicare tax';
6917          parameter_record(7).p_parameter_value:=p_input_9;
6918 
6919          parameter_record(8).p_parameter_name:= 'wages sub. to PR tax';
6920          parameter_record(8).p_parameter_value:=p_input_10;
6921 
6922          parameter_record(9).p_parameter_name:= 'Commissions sub.to PR tax';
6923          parameter_record(9).p_parameter_value:=p_input_11;
6924 
6925          parameter_record(10).p_parameter_name:= 'Allowances sub. to PR tax';
6926          parameter_record(10).p_parameter_value:=p_input_12;
6927 
6928          parameter_record(11).p_parameter_name:= 'Tips sub to PR tax';
6929          parameter_record(11).p_parameter_value:=p_input_13;
6930 
6931          parameter_record(12).p_parameter_name:= 'Total wages sub to PR tax';
6932          parameter_record(12).p_parameter_value:=p_input_14;
6933 
6934          parameter_record(13).p_parameter_name:= 'PR tax withheld';
6935          parameter_record(13).p_parameter_value:=p_input_15;
6936 
6937          parameter_record(14).p_parameter_name:= 'Retirement fund ann. contri';
6938          parameter_record(14).p_parameter_value:=p_input_16;
6939 
6940          parameter_record(15).p_parameter_name:= 'Total wages sub to VI,GU,AS and MP islands';
6941          parameter_record(15).p_parameter_value:=p_input_17;
6942 
6943          parameter_record(16).p_parameter_name:= 'VI,GU or MP Islands income tax wh';
6944          parameter_record(16).p_parameter_value:=p_input_18;
6945 
6946 	 --Added New Field in Pos: 115 - 129
6947 
6948          parameter_record(17).p_parameter_name:= 'Income Und Sec 409A on Non-Qual Def Comp Plan';
6949          parameter_record(17).p_parameter_value := p_input_20;
6950 
6951          parameter_record(18).p_parameter_name:= 'HIRE Exempt Wages and Tips';
6952          parameter_record(18).p_parameter_value := p_input_21;
6953 
6954 --Bug 13255564
6955          parameter_record(19).p_parameter_name:= 'Designated Roth Contributions under a Governmental Section 457(b) plan';
6956          parameter_record(19).p_parameter_value := p_input_22;
6957 
6958 
6959 				--hr_utility.trace('Wages in Ru record:  '||p_input_21);
6960 --
6961 -- Validation and Formatting for above fields done in this loop
6962          FOR i in 1..19 -- Bug 13255564
6963          LOOP
6964            parameter_record(i).p_output_value :=
6965               pay_us_reporting_utils_pkg.data_validation(
6966                                              p_effective_date,
6967                                              p_report_type,
6968                                              p_format,
6969                                              p_report_qualifier,
6970                                              p_record_name,
6971                                              'NEG_CHECK',
6972                                              parameter_record(i).p_parameter_value,
6973                                              parameter_record(i).p_parameter_name,
6974                                              p_input_39,
6975                                              null,
6976                                              p_validate,
6977                                              p_exclude_from_output,
6978                                              sp_out_1,
6979                                              sp_out_2);
6983 
6980            IF p_exclude_from_output = 'Y' THEN
6981               l_exclude_from_output_chk := TRUE;
6982            END IF;
6984            hr_utility.trace(parameter_record(i).p_parameter_name||' = '
6985                                ||parameter_record(i).p_output_value);
6986            hr_utility.trace('p_exclude_from_output = '||p_exclude_from_output);
6987          END LOOP;
6988 -- Formatting RU record for format mode FLAT
6989 -- formatting Total no of record
6990          l_input_2 := lpad(substr(nvl(p_input_2,'0'),1,7),7,0);
6991 -- Formatting RU record for W2 reporting
6992 	 IF p_report_qualifier = 'PR' THEN
6993 				--BUG 10419148
6994 				r_input_1:=parameter_record(17).p_output_value;
6995 				r_input_2:=rpad(parameter_record(18).p_output_value,225);
6996 
6997 				--hr_utility.trace('Wages in Ru record2:  '||r_input_2);
6998 				--hr_utility.trace('Wages in Ru record3:  '||parameter_record(18).p_output_value);
6999 
7000          return_value:='RU'||l_input_2
7001 	                /* ||parameter_record(1).p_output_value */
7002 		           ||rpad('0',15,'0') /* 6644795 */
7003                            ||parameter_record(2).p_output_value
7004                        /*    ||parameter_record(3).p_output_value
7005                            ||parameter_record(4).p_output_value
7006                            ||parameter_record(5).p_output_value
7007                            ||parameter_record(6).p_output_value
7008                            --||rpad(parameter_record(7).p_output_value,255)
7009                            ||parameter_record(7).p_output_value */
7010 			   ||rpad('0',75,'0')/* 6644795  */
7011                            --||rpad(parameter_record(17).p_output_value,240)
7012 													 ||r_input_1
7013                            ||r_input_2
7014                            ||parameter_record(8).p_output_value
7015                            ||parameter_record(9).p_output_value
7016                            ||parameter_record(10).p_output_value
7017                            ||parameter_record(11).p_output_value
7018                            ||parameter_record(12).p_output_value
7019                            ||parameter_record(13).p_output_value
7020                            ||parameter_record(14).p_output_value
7021                            ||parameter_record(15).p_output_value
7022                            ||rpad(parameter_record(16).p_output_value,38);
7023          ELSE
7024 					if p_report_qualifier in('FED','ID','KY') then --Bug 10427851
7025 						r_input_1:=parameter_record(17).p_output_value;
7026 						r_input_2:=parameter_record(18).p_output_value;
7027 						r_input_3:=rpad(parameter_record(19).p_output_value,210); --Bug 13255564
7028 					else
7029 --For the Bug#10419148
7030 --r_input_1:=rpad(parameter_record(17).p_output_value,240);
7031 						r_input_1:=parameter_record(17).p_output_value;
7032 						r_input_2:=rpad(' ',15);
7033 						r_input_3:=rpad(parameter_record(19).p_output_value,210); --Bug 13255564
7034 					end if;
7035 
7036 	  return_value:='RU'||l_input_2
7037                            ||parameter_record(1).p_output_value
7038                            ||parameter_record(2).p_output_value
7039                            ||parameter_record(3).p_output_value
7040                            ||parameter_record(4).p_output_value
7041                            ||parameter_record(5).p_output_value
7042                            ||parameter_record(6).p_output_value
7043                            --||rpad(parameter_record(7).p_output_value,255)
7044                            ||parameter_record(7).p_output_value
7045                            ||r_input_1
7046                            ||r_input_2
7047                            ||r_input_3
7048                            ||parameter_record(8).p_output_value
7049                            ||parameter_record(9).p_output_value
7050                            ||parameter_record(10).p_output_value
7051                            ||parameter_record(11).p_output_value
7052                            ||parameter_record(12).p_output_value
7053                            ||parameter_record(13).p_output_value
7054                            ||parameter_record(14).p_output_value
7055                            ||parameter_record(15).p_output_value
7056                            ||rpad(parameter_record(16).p_output_value,38);
7057          END IF ;
7058          ret_str_len:=length(return_value);
7059 --}
7060    ELSIF p_input_40 = 'CSV' THEN
7061 -- Formatting RU record for W2 audit reports
7062          return_value:='RU'||','||l_input_2
7063                            ||','||p_input_3
7064                            ||','||p_input_4
7065                            ||','||p_input_5
7066                            ||','||p_input_6
7067                            ||','||p_input_7
7068                            ||','||p_input_8
7069                            ||','||p_input_9
7070                            ||','||p_input_20
7071                            ||','||lpad(' ',225)
7072                            ||','||p_input_10
7073                            ||','||p_input_11
7074                            ||','||p_input_12
7075                            ||','||p_input_13
7076                            ||','||p_input_14
7077                            ||','||p_input_15
7078                            ||','||p_input_16
7079                            ||','||p_input_17
7080                            ||','||p_input_18
7081                            ||','||lpad(' ',23);
7082 
7083    END IF; -- p_input_40
7084    ret_str_len:=length(return_value);
7085    p_error := l_exclude_from_output_chk;
7086    return return_value;
7087 END format_W2_RU_record;  -- End of Formatting RU Record
7088 
7089 -- Formatting RF record for W2 reporting
7090 --
7091 /*
7092   Effective Date                               --> p_effective_date
7093   Report Type  (i.e.W2 )                       --> p_report_type
7097   Record Identifier                            --> p_record_identifier
7094   Report Format                                --> p_format
7095   Report Qualifier                             --> p_report_qualifier
7096   Record Name (i.e. RF)                        --> p_record_name
7098   Number of RW Records                         --> p_total_no_of_record
7099   Wages, Tips and other Compensation           --> p_total_wages
7100   Federal Income Tax Withheld                  --> p_total_taxes
7101   Report Format Mode (FLAT, CSV)               --> p_format_mode
7102   Validation Flag                              --> p_validate
7103   Exclude Record from mag file                 --> p_exclude_from_output
7104   Return Record Length                         --> ret_str_len
7105   Validation Error Flag                        --> p_error
7106 */
7107 FUNCTION format_W2_RF_record(
7108                    p_effective_date       IN  varchar2,
7109                    p_report_type          IN  varchar2,
7110                    p_format               IN  varchar2,
7111                    p_report_qualifier     IN  varchar2,
7112                    p_record_name          IN  varchar2,
7113                    p_record_identifier    IN  varchar2,
7114                    p_total_no_of_record   IN  varchar2,
7115                    p_total_wages          IN  varchar2,
7116                    p_total_taxes          IN  varchar2,
7117                    p_format_mode          IN  varchar2,
7118                    p_validate             IN  varchar2,
7119                    p_exclude_from_output  OUT nocopy varchar2,
7120                    ret_str_len            OUT nocopy number,
7121                    p_error                OUT nocopy boolean
7122                  ) RETURN VARCHAR2
7123 IS
7124 return_value               varchar2(32767);
7125 l_exclude_from_output_chk  boolean;
7126 l_total_records            varchar2(50);
7127 l_wages                    varchar2(100);
7128 l_taxes                    varchar2(100);
7129 sp_out_1                   varchar2(100);
7130 sp_out_2                   varchar2(100);
7131 BEGIN
7132    hr_utility.trace('Formatting RF Record');
7133    hr_utility.trace('Format Mode  p_input_40 '||p_format_mode);
7134    hr_utility.trace('Report Qualifier before Formatting RF Record  '
7135                                               ||p_report_qualifier);
7136    IF ((p_report_qualifier = 'PA_PHILA') OR  -- Bug # 2680189
7137        (p_report_qualifier = 'CO')) THEN     -- Bug # 2813555
7138 --{
7139       l_total_records := lpad(nvl(p_total_no_of_record,'0'),9,0);
7140       return_value := 'RF'
7141                       ||lpad(' ',5)
7142                       ||l_total_records
7143                       ||lpad(' ',496);
7144 --}
7145    ELSIF p_report_qualifier IN  ('PA', 'CT') THEN
7146 
7147 --{
7148 -- Validating Total Wage for Negative Value
7149 --
7150       l_wages :=
7151         pay_us_reporting_utils_pkg.data_validation(p_effective_date,
7152                                                    p_report_type,
7153                                                    p_format,
7154                                                    p_report_qualifier,
7155                                                    p_record_name,
7156                                                    'NEG_CHECK',
7157                                                    p_total_wages,
7158                                                    'State taxable Wages',
7159                                                    null,
7160                                                    null,
7161                                                    p_validate,
7162                                                    p_exclude_from_output,
7163                                                    sp_out_1,
7164                                                    sp_out_2);
7165 
7166       IF p_exclude_from_output = 'Y' THEN
7167          l_exclude_from_output_chk := TRUE;
7168       END IF;
7169 -- Validating Total Tax for Negative Value
7170 --
7171       l_taxes :=
7172         pay_us_reporting_utils_pkg.data_validation( p_effective_date,
7173                                                     p_report_type,
7174                                                     p_format,
7175                                                     p_report_qualifier,
7176                                                     p_record_name,
7177                                                     'NEG_CHECK',
7178                                                     p_total_taxes,
7179                                                     'SIT Withheld',
7180                                                     null,
7181                                                     null,
7182                                                     p_validate,
7183                                                     p_exclude_from_output,
7184                                                     sp_out_1,
7185                                                     sp_out_2);
7186 
7187       IF p_exclude_from_output = 'Y' THEN
7188          l_exclude_from_output_chk := TRUE;
7189       END IF;
7190 -- Formatting RF Record for state PA
7191       IF p_report_qualifier = 'PA' THEN
7192 --{
7193          l_total_records := lpad(substr(nvl(p_total_no_of_record,' '),1,7),7,0);
7194          return_value    := 'RF'||lpad(' ',473)
7195                                 ||l_total_records
7196                                 ||l_wages
7197                                 ||l_taxes;
7198 --}
7199 -- Formatting RF Record for state CT
7200       ELSIF p_report_qualifier = 'CT' THEN
7201 --{
7202          --
7203          -- This is to fix bug # 2640074
7204          -- column positions of State Wages/Withheld changed
7205          -- return_value := 'RF'||rpad(l_total_records,10)||rpad(l_wages,17)
7206          --                     ||rpad(l_taxes,483);
7207          --
7208          l_total_records := lpad(substr(nvl(p_total_no_of_record,' '),1,9),9,0);
7209          return_value    := 'RF'||rpad(l_total_records,9)
7210                                 ||rpad(l_wages,16)
7211                                 ||rpad(l_taxes,485);
7212 --}
7213       END IF;
7214 --}
7215    ELSIF p_report_qualifier = 'VA' THEN
7216          return_value:= 'RF'||rpad(' ',510);
7217    ELSE
7218 
7219          return_value:= 'RF'
7220                         ||lpad(lpad(substr(nvl(p_total_no_of_record,' '),1,9)
7221                                     ,9,0),14)
7222                         ||rpad(' ',496);
7223 
7224    END IF;
7225    p_error := l_exclude_from_output_chk;
7226    ret_str_len:=length(return_value);
7227    return return_value;
7228 END format_W2_RF_record; -- End of Formatting RF Record for W2 Reporting
7229 
7230 END pay_us_mmrf_w2_format_record;