DBA Data[Home] [Help]

PACKAGE: APPS.PAY_US_MMREF_REPORTING

Source


1 PACKAGE pay_us_mmref_reporting AS
2  /* $Header: pyusmmye.pkh 120.5.12010000.1 2008/07/27 23:53:31 appldev ship $ */
3  /*===========================================================================+
4  |               Copyright (c) 1993 Oracle Corporation                        |
5  |                  Redwood Shores, California, USA                           |
6  |                       All rights reserved.                                 |
7  +============================================================================+
8   Name
9     pay_us_mmref_reporting
10 
11   Purpose
12     The purpose of this package is to support the generation of magnetic tape
13     in MMREF - 1 Format. This magnetic tapes are for US legilsative requirements
14     incorporating magtape resilience and the new end-of-year design.
15 
16   Notes
17     The generation of each magnetic tape report is a two stage process i.e.
18     1. Check if the year end pre-processor has been run for all the GREs
19 	   and the assignments. If not, then error out without processing further.
20     2. Create a payroll action for the report. Identify all the assignments
21        to be reported and record an assignment action against the payroll action
22        for each one of them.
23     3. Run the generic magnetic tape process which will
24        drive off the data created in stage two. This will result in the
25        production of a structured ascii file which can be transferred to
26        magnetic tape and sent to the relevant authority.
27 
28   History
29   Date        Author   Verion  Bug      Details
30   ----------- -------- ------- -------- -------------------------------------
31   14-sep-2001 djoshi   115.0            Created
32   18-sep-2001 djoshi   115.1            Added the changes for Smart
33                                         Archive calls
34   20-sep-2001 djoshi   115.2            Added function check_gre_data
35                                         and removed all ref. to all tables
36   16-nov-2001 djoshi   115.3            Added the changes for State
37                                         Magnetic Tapes
38   03-dec-2001 djoshi   115.6            Changed the file for dbdrv postion
39                                         and employee cursor
40   05-dec-2001 djoshi   115.7            Added function to chech state tax rules
41   22-jan-2002 djoshi   115.8            Added check_file for GSCC
42   14-Nov-2002 ppanda   115.9            Added transfer_locality_code to driving
43                                         cursor for Fed and State submitter
44                                         The new column added for Local W-2 Mag
45                                         changes
46   02-Dec-2002 ppanda   115.10           Nocopy hint added to OUT and IN OUT
47                                         parameters
48   20-Jan-2003 ppanda   115.11  2736928  For PuertoRico a new Employee Cursor
49                                         created to have sorting order as Last Name,
50                                         First Name, Middle Name, Person_ID
51                                         This new sorting order is used due to
52                                         generation of Control number for each
53                                         employee depending on the starting Control
54                                         Number defined at the GRE level.
55   15-Nov-2003 tmehra   115.12  2219097  Made changes to mmrf_employer
56                                         and mmrf_employee cursor for
57                                         FED W2 employment_code requirement
58   20-Nov-2003 tmehra   115.13           Changed the parameter name from
59                                         EMP_CODE to TRANSFER_EMP_CODE
60   26-Nov-2003 tmehra   115.14  2219097  Added a new function for Govt
61                                         Employer W2 changes
62                                            - get_report_category
63   26-Nov-2003 tmehra   115.15           Added two new cursors
64                                            - govt_mmrf_employer
65                                            - govt_mmrf_employee
66   02-Dec-2003 tmehra   115.16           Modified govt_mmrf_employee cursor.
67   03-Dec-2003 tmehra   115.17           Modified govt_mmrf_employer cursor.
68   28-DEC-2004 ahanda   115.19           Changed employee cursor for performance
69   04-JAN-2004 ahanda   115.20           Changed per_assignments_f to
70                                         per_all_assignments_f
71   18-NOV-2005 saurgupt 115.21 4644692   Added ORDERED hint in cursor mmrf_employee.
72   04-AUG-2006  ppanda  115.22           Added following new function to support multithread architecture
73                                              in Federal W-2 Magnetic Media
74                                              - get_report_category_mt
75   28-AUG-2006  ppanda  115.31           Three New formula function added to the package
76                                         for   Federal W-2 Magnetic Media MultiThread process
77   13-DEC-2006   ppanda  115.36          Function modified b  adding additional parameters
78   				        assignment_action_id, p_tax_jd_code,
79                                         p_tax_unit_info1 and , p_tax_unit_info2
80                                         This is to fix Bug # 5709609
81 
82   10-JAN-2007   ppanda  115.37          Function set_application_error modified by adding a
83                                         new parameter assignment_Action_id
84   =============================================================================*/
85   -- 'level_cnt' will allow the cursors to select function results,
86   -- whether it is a standard fuction such as to_char or a function
87   -- defined in a package (with the correct pragma restriction).
88   level_cnt NUMBER;
89 
90   --
91   -- Sets up the tax unit context for the Submitter
92   --
93   /* Transmitter for the State MMREF tape  */
94   CURSOR state_mmrf_submitter IS
95      SELECT 'TAX_UNIT_ID=C' , HOI.organization_id,
96             'JURISDICTION_CODE=C', SR.jurisdiction_code,
97              'TRANSFER_JD=P', SR.jurisdiction_code,
98             'ASSIGNMENT_ID=C' , '-1',
99             'DATE_EARNED=C', fnd_date.date_to_canonical(ppa.effective_date),
100             'TRANSFER_HIGH_COUNT=P', '0',
101             'TRANSFER_SCHOOL_DISTRICT=P', '-1',
102             'TRANSFER_COUNTY=P', '-1',
103             'TRANSFER_2678_FILER=P', HOI.org_information8,
104             'PAYROLL_ACTION_ID=C', PPA.payroll_action_id,
105             'BUSINESS_GROUP_ID=C',PPA.business_group_id,
106             'TRANSFER_LOCALITY_CODE=P', 'DUMMY'
107        FROM pay_state_rules SR,
108             hr_organization_information HOI,
109             pay_payroll_actions PPA,
110             pay_payroll_actions PPA1
111       WHERE PPA1.payroll_action_id = pay_magtape_generic.get_parameter_value
112                                      ('TRANSFER_PAYROLL_ACTION_ID')
113         AND ppa1.effective_date =   ppa.effective_date
114         AND ppa1.report_qualifier = sr.state_code
115         AND HOI.organization_id =
116             pay_magtape_generic.get_parameter_value('TRANSFER_TRANS_LEGAL_CO_ID')
117         AND SR.state_code  =
118             pay_magtape_generic.get_parameter_value('TRANSFER_STATE')
119         AND HOI.org_information_context = 'W2 Reporting Rules'
120         AND PPA.report_type = 'YREND'
121         AND HOI.ORGANIZATION_ID
122                    = substr(PPA.legislative_parameters,
123                             instr(PPA.legislative_parameters,
124                                   'TRANSFER_GRE=') + length('TRANSFER_GRE='))
125         AND to_char(PPA.effective_date,'YYYY')
126                    = pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
127         AND to_char(PPA.effective_date,'DD-MM') = '31-12';
128 
129   /* Context and Parameter Set in the cursor are
130      Context :
131           TAX_UNIT_ID       - Submitter's Tax Unit ID
132           JURISDICTION_CODE - Set to Dummy Value as This is federal Cursor
133           ASSIGNMENT_ID     - Required for call to function - context not used
134                               in the for Submitter
135           Date Earned       - Always set to Effective date ie. in this case
136                               for Mag tapes to 31-DEC-YYYY, in case of SQWL
137                               this will be diffrent.
138           PAYROLL_ACTION_ID - Payroll action Id of Year End Pre-processor
139 
140      Parameters :
141           Transfer_HIGH_COUNT
142           TRANSFER_SCHOOL_DISTRICT
143           TRANSFER_COUNTY
144           TRANSFER_2678_FILER
145           TRANSFER_LOCALITY_CODE  (Added for Local Mag Tape changes)
146   */
147   CURSOR fed_mmrf_submitter IS
148      SELECT 'TAX_UNIT_ID=C', HOI.organization_id,
149             'JURISDICTION_CODE=C', 'DUMMY_VALUE',
150             'TRANSFER_JD=P',  'DUMMY_VALUE',
151             'ASSIGNMENT_ID=C'  , '-1',
152             'DATE_EARNED=C', fnd_date.date_to_canonical(ppa.effective_date),
153             'TRANSFER_HIGH_COUNT=P', '0',
154             'TRANSFER_SCHOOL_DISTRICT=P', '-1',
155             'TRANSFER_COUNTY=P', '-1',
156             'TRANSFER_2678_FILER=P', HOI.org_information8,
157             'PAYROLL_ACTION_ID=C',ppa.payroll_action_id, -- payroll_action_id of YREND
158             'TRANSFER_LOCALITY_CODE=P', 'DUMMY'
159         FROM hr_organization_information HOI,
160              pay_payroll_actions PPA
161        WHERE HOI.organization_id =
162              pay_magtape_generic.get_parameter_value('TRANSFER_TRANS_LEGAL_CO_ID')
163          AND pay_magtape_generic.get_parameter_value('TRANSFER_STATE') = 'FED'
164          AND HOI.org_information_context = 'W2 Reporting Rules'
165          AND PPA.report_type = 'YREND'
166          AND HOI.ORGANIZATION_ID
167                    = substr(PPA.legislative_parameters,
168                             instr(PPA.legislative_parameters,
169                                   'TRANSFER_GRE=') + length('TRANSFER_GRE='))
170          AND to_char(PPA.effective_date,'YYYY')
171                    = pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
172          AND to_char(PPA.effective_date,'DD-MM') = '31-12';
173 
174   --
175   -- Sets up the tax unit context for each employer to be reported on NB. sets
176   -- up a parameter holding the tax unit identifier which can then be used by
177   -- subsequent cursors to restrict to employees within the employer.
178   --
179   --
180   /* Context and Parameter  in the cursor are
181            Payroll_action_id table looks for value related to Year End pre-
182            processor while the pay_assignment_actions looks for
183            assignment actions of Mag. tapes
184         Context :
185           TAX_UNIT_ID - Submitter's Tax Unit ID
186           JURISDICTION_CODE - Set to Dummy Value as This is federal Cursor
187           ASSIGNMENT_ID     - Required for call to function - context not used
188                               in the for Submitter
189           Date Earned       - Always set to Effective date ie. in this case
190                               for Mag tapes to 31-DEC-YYYY, in case of SQWL
191                               this will be diffrent.
192           PAYROLL_ACTION_ID - Payroll action Id of Year End Pre-processor
193 
194        Parameters :
195           TAX_UNIT_ID  -      To be used in subsequent cusrsor
196   */
197   CURSOR mmrf_employer IS
198      SELECT DISTINCT
199             'PAYROLL_ACTION_ID=C', ppa.payroll_action_id,
200             'TAX_UNIT_ID=C'  , AA.tax_unit_id,
201             'TAX_UNIT_ID=P'  , AA.tax_unit_id,
202             'TAX_UNIT_NAME=P'  , hou.name,
203             'TRANSFER_EMP_CODE=P', 'R'
204        FROM hr_all_organization_units hou,
205             pay_payroll_actions       ppa,
206             pay_assignment_actions    AA
207       WHERE AA.payroll_action_id = pay_magtape_generic.get_parameter_value
208                                    ('TRANSFER_PAYROLL_ACTION_ID')
209         AND ppa.report_type = 'YREND'
210         AND to_char(ppa.effective_date,'YYYY')
211                    = pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
212         AND to_char(ppa.effective_date,'DD-MM') = '31-12'
213         AND AA.tax_unit_id
214                    = substr(ppa.legislative_parameters,
215                             instr(ppa.legislative_parameters,
216                                   'TRANSFER_GRE=') + length('TRANSFER_GRE='))
217         AND hou.organization_id  = AA.tax_unit_id
218      order by hou.name;
219 
220 
221   CURSOR govt_mmrf_employer IS
222      SELECT DISTINCT
223             'PAYROLL_ACTION_ID=C', ppa.payroll_action_id,
224             'PAYROLL_ACTION_ID=P', ppa.payroll_action_id,
225             'TAX_UNIT_ID=C'  , AA.tax_unit_id,
226             'TAX_UNIT_ID=P'  , AA.tax_unit_id,
227             'TAX_UNIT_NAME=P', hou.name,
228             'TRANSFER_EMP_CODE=P'     , 'R'
229        FROM hr_all_organization_units hou,
230             pay_payroll_actions       ppa,
231             pay_assignment_actions    AA
232       WHERE AA.payroll_action_id = pay_magtape_generic.get_parameter_value
233                                    ('TRANSFER_PAYROLL_ACTION_ID')
234         AND ppa.report_type = 'YREND'
235         AND to_char(ppa.effective_date,'YYYY')
236                    = pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
237         AND to_char(ppa.effective_date,'DD-MM') = '31-12'
238         AND AA.tax_unit_id
239                    = substr(ppa.legislative_parameters,
240                             instr(ppa.legislative_parameters,
241                                   'TRANSFER_GRE=') + length('TRANSFER_GRE='))
242         AND hou.organization_id  = AA.tax_unit_id
243      UNION ALL
244      SELECT DISTINCT
245             'PAYROLL_ACTION_ID=C', ppa.payroll_action_id,
246             'PAYROLL_ACTION_ID=P', ppa.payroll_action_id,
247             'TAX_UNIT_ID=C'  , AA.tax_unit_id,
248             'TAX_UNIT_ID=P'  , AA.tax_unit_id,
249             'TAX_UNIT_NAME=P', hou.name,
250             'TRANSFER_EMP_CODE=P'     , 'Q'
251        FROM hr_all_organization_units     hou,
252             pay_payroll_actions           ppa,
253             pay_assignment_actions        AA
254       WHERE AA.payroll_action_id = pay_magtape_generic.get_parameter_value
255                                    ('TRANSFER_PAYROLL_ACTION_ID')
256         AND ppa.report_type = 'YREND'
257         AND to_char(ppa.effective_date,'YYYY')
258                    = pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
259         AND to_char(ppa.effective_date,'DD-MM') = '31-12'
260         AND AA.tax_unit_id
261                    = substr(ppa.legislative_parameters,
262                             instr(ppa.legislative_parameters,
263                                   'TRANSFER_GRE=') + length('TRANSFER_GRE='))
264         AND hou.organization_id  = AA.tax_unit_id
265      order by 8;
266 
267 
268   --
272   -- assignment. This ensures that personal information ie. name etc... is
269   -- Sets up the assignment_action_id, assignment_id, and date_earned contexts
270   -- for an employee. The date_earned context is set to be the least of the
271   -- end of the period being reported and the maximum end date of the
273   -- current relative to the period being reported on.
274   --
275   CURSOR mmrf_employee IS
276      SELECT /*+ ORDERED */ 'ASSIGNMENT_ACTION_ID=C', AI.locked_action_id, -- YREND assignment action
277             'ASSIGNMENT_ID=C', AA.assignment_id,
278             'DATE_EARNED=C', fnd_date.date_to_canonical(pay_magtape_generic.date_earned
279                                     (PA.effective_date, AA.assignment_id)),
280             'JURISDICTION_CODE=C',pay_magtape_generic.get_parameter_value('TRANSFER_JD'),
281             'YE_ASSIGNMENT_ACTION_ID=P',AI.locked_action_id
282        FROM pay_payroll_actions    PA,
283             pay_assignment_actions AA,
284             pay_action_interlocks  AI,
285             per_all_assignments_f      SS,
286             per_all_people_f           PE
287       WHERE PA.payroll_action_id = pay_magtape_generic.get_parameter_value
288                                     ('TRANSFER_PAYROLL_ACTION_ID')
289         AND AA.payroll_action_id = PA.payroll_action_id
290         AND AA.tax_unit_id = pay_magtape_generic.get_parameter_value
291                                     ('TAX_UNIT_ID')
292         AND AI.locking_action_id  = AA.assignment_action_id
293         AND SS.assignment_id     = AA.assignment_id
294         AND PE.person_id         = SS.person_id
295         AND SS.effective_start_date =
296                     (select max(paf2.effective_start_date)
297                      from per_all_assignments_f paf2
298                      where paf2.assignment_id = SS.assignment_id
299                      and paf2.effective_start_date <= PA.effective_date
300                      and paf2.assignment_type = 'E')
301         AND SS.effective_end_date >= PA.start_date
302         AND SS.assignment_type = 'E'
303         AND LEAST(SS.effective_end_date, PA.effective_date)
304                 between PE.effective_start_date and PE.effective_end_date
305      ORDER BY PE.last_name, PE.first_name, PE.middle_names;
306 
307 
308   CURSOR govt_mmrf_employee IS
309      SELECT 'ASSIGNMENT_ACTION_ID=C', AI.locked_action_id, -- YREND assignment action
310             'ASSIGNMENT_ID=C', AA.assignment_id,
311             'DATE_EARNED=C', fnd_date.date_to_canonical(pay_magtape_generic.date_earned
312                                     (PA.effective_date, AA.assignment_id)),
313             'JURISDICTION_CODE=C',pay_magtape_generic.get_parameter_value('TRANSFER_JD'),
314             'YE_ASSIGNMENT_ACTION_ID=P',AI.locked_action_id
315        FROM per_all_people_f       PE,
316             per_all_assignments_f  SS,
317             pay_action_interlocks  AI,
318             pay_assignment_actions AA,
319             pay_assignment_actions paa,
320             pay_payroll_actions    PA,
321             ff_archive_items       arch,
322             ff_user_entities       fue
323       WHERE PA.payroll_action_id = pay_magtape_generic.get_parameter_value
324                                      ('TRANSFER_PAYROLL_ACTION_ID')
325         AND AA.payroll_action_id = PA.payroll_action_id
326         AND AA.tax_unit_id = pay_magtape_generic.get_parameter_value
327                                      ('TAX_UNIT_ID')
328         AND AI.locking_action_id  = AA.assignment_action_id
329         AND SS.assignment_id     = AA.assignment_id
330         AND PE.person_id         = SS.person_id
331         AND SS.effective_start_date =
332                     (select max(paf2.effective_start_date)
333                      from per_all_assignments_f paf2
334                      where paf2.assignment_id = SS.assignment_id
335                      and paf2.effective_start_date <= PA.effective_date
336                      and paf2.assignment_type = 'E')
337         AND SS.effective_end_date >= PA.start_date
338         AND SS.assignment_type = 'E'
339         AND LEAST(SS.effective_end_date, PA.effective_date)
340                 between PE.effective_start_date and PE.effective_end_date
341         AND paa.payroll_action_id  = pay_magtape_generic.get_parameter_value
342                                        ('PAYROLL_ACTION_ID')
343         AND paa.assignment_id      = AA.assignment_id
344         AND arch.context1          = paa.assignment_action_id
345         AND arch.user_entity_id    = fue.user_entity_id
346         AND fue.user_entity_name   = 'A_ASG_GRE_EMPLOYMENT_TYPE_CODE'
347         AND arch.value             =  pay_magtape_generic.get_parameter_value
348                                        ('TRANSFER_EMP_CODE')
349      ORDER BY PE.last_name, PE.first_name, PE.middle_names;
350 
351 
352   /* This Cursor Added to fix Bug # 2736928
353      Additional Sort Parameter Person_ID added to the Employee Cursor
354      This change made to generate serial number */
355 
356   CURSOR mmrf_pr_employee IS
357      SELECT 'ASSIGNMENT_ACTION_ID=C', AI.locked_action_id, -- YREND assignment action
358             'ASSIGNMENT_ID=C', AA.assignment_id,
359             'DATE_EARNED=C', fnd_date.date_to_canonical(pay_magtape_generic.date_earned
360                                (PA.effective_date, AA.assignment_id)),
361             'JURISDICTION_CODE=C',pay_magtape_generic.get_parameter_value('TRANSFER_JD'),
362             'YE_ASSIGNMENT_ACTION_ID=P',AI.locked_action_id
363        FROM per_all_people_f       PE,
364             per_all_assignments_f  SS,
365             pay_action_interlocks  AI,
366             pay_assignment_actions AA,
370         AND AA.payroll_action_id = PA.payroll_action_id
367             pay_payroll_actions    PA
368       WHERE PA.payroll_action_id = pay_magtape_generic.get_parameter_value
369                                      ('TRANSFER_PAYROLL_ACTION_ID')
371         AND AA.tax_unit_id = pay_magtape_generic.get_parameter_value
372                                ('TAX_UNIT_ID')
373         AND AI.locking_action_id  = AA.assignment_action_id
374         AND SS.assignment_id     = AA.assignment_id
375         AND PE.person_id         = SS.person_id
376         AND SS.effective_start_date =
377                     (select max(paf2.effective_start_date)
378                      from per_all_assignments_f paf2
379                      where paf2.assignment_id = SS.assignment_id
380                      and paf2.effective_start_date <= PA.effective_date
381                      and paf2.assignment_type = 'E')
382         AND SS.effective_end_date >= PA.start_date
383         AND SS.assignment_type = 'E'
384         AND LEAST(SS.effective_end_date, PA.effective_date)
385                 between PE.effective_start_date and PE.effective_end_date
386      ORDER BY PE.last_name, PE.first_name, PE.middle_names,PE.person_id;
387 
388 
389   /* Indiana has multiple RS record. This RS record will Report Locality
390      Wages for Employee. We are currently interested in getting only
391      the JD code for all Indiana County.
392   */
393   CURSOR IN_LOCAL_MMRF_EMPLOYEE IS
394      SELECT 'JURISDICTION_CODE=C', rtrim(ltrim(faic.context)),
395             'TRANSFER_YE_JURISDICTION_CODE=P', ltrim(rtrim(faic.context))
396        from ff_archive_items fai,
397             ff_contexts fc,  -- JD
398             ff_database_items fdi,
399             ff_archive_item_contexts faic, -- JD
400             pay_assignment_actions paa
401       where paa.assignment_action_id
402                 = pay_magtape_generic.get_parameter_value('YE_ASSIGNMENT_ACTION_ID')
403         and paa.assignment_action_id = fai.context1
404         and fdi.user_name = 'A_COUNTY_WITHHELD_PER_JD_GRE_YTD'
405         and fdi.user_entity_id = fai.user_entity_id
406         and faic.archive_item_id = fai.archive_item_id
407         and fc.context_name = 'JURISDICTION_CODE'
408         and faic.context_id = fc.context_id
409         and value <> '0'
410         and faic.context like '15%'
411      order by faic.context;
412 
413 
414   /* Ohio Cursor */
415   CURSOR OH_LOCAL_MMRF_EMPLOYEE IS
416      SELECT 'JURISDICTION_CODE=C',ltrim(rtrim(faic.context)),
417             'TRANSFER_YE_JURISDICTION_CODE=P',ltrim(rtrim(faic.context))
418        from ff_archive_items fai,
419             ff_contexts fc,  -- JD
420             ff_database_items fdi,
421             ff_archive_item_contexts faic, -- JD
422             pay_assignment_actions paa
423       where paa.assignment_action_id =
424                  pay_magtape_generic.get_parameter_value('YE_ASSIGNMENT_ACTION_ID')
425         and paa.assignment_action_id = fai.context1
426         and (fdi.user_name = 'A_SCHOOL_WITHHELD_PER_JD_GRE_YTD' OR
427              fdi.user_name = 'A_CITY_WITHHELD_PER_JD_GRE_YTD'   OR
428              fdi.user_name = 'A_COUNTY_WITHHELD_PER_JD_GRE_YTD')
429         and fdi.user_entity_id = fai.user_entity_id
430         and faic.archive_item_id = fai.archive_item_id
431         and fc.context_name = 'JURISDICTION_CODE'
432         and faic.context_id = fc.context_id
433         and value <> '0'
434         and faic.context like '36%'
435      order by faic.context ;
436 
437 
438   FUNCTION bal_db_item(p_db_item_name VARCHAR2)
439   RETURN NUMBER;
440 
441   PROCEDURE get_report_parameters(
442 	p_pactid    		IN      NUMBER,
443 	p_year_start		IN OUT	nocopy DATE,
444 	p_year_end		IN OUT	nocopy DATE,
445 	p_state_abbrev		IN OUT	nocopy VARCHAR2,
446 	p_state_code		IN OUT	nocopy VARCHAR2,
447 	p_report_type		IN OUT	nocopy VARCHAR2,
448 	p_business_group_id	IN OUT	nocopy NUMBER);
449 
450   FUNCTION get_balance_value(
451 	p_balance_name		VARCHAR2,
452 	p_tax_unit_id		NUMBER,
453 	p_state_abbrev		VARCHAR2,
454 	p_assignment_id		NUMBER,
455 	p_effective_date	DATE)
456   RETURN NUMBER;
457 
458   FUNCTION preprocess_check(
459 	p_pactid 		NUMBER,
460 	p_year_start		DATE,
461 	p_year_end		DATE,
462 	p_business_group_id	NUMBER,
463 	p_state_abbrev		VARCHAR2,
464 	p_state_code		VARCHAR2,
465 	p_report_type		VARCHAR2)
466   RETURN BOOLEAN;
467 
468   PROCEDURE range_cursor(
469 	p_pactid        	IN	   NUMBER,
470 	p_sqlstr        	OUT nocopy VARCHAR2);
471 
472   PROCEDURE create_assignment_act(
473 	p_pactid        	IN NUMBER,
474 	p_stperson 	        IN NUMBER,
475 	p_endperson             IN NUMBER,
476 	p_chunk 	        IN NUMBER );
477 
478   FUNCTION check_er_data(
479         p_pactid                NUMBER,
480         p_ein_user_id           NUMBER)
481   RETURN varchar2;
482 
483 
484   FUNCTION check_state_er_data(
485         p_pactid                NUMBER,
486         p_tax_unit              NUMBER,
487         p_jurisdictions         varchar2)
488   RETURN varchar2;
489 
490 
491   PROCEDURE archive_eoy_data(
492         p_pactid               IN NUMBER,
493         p_tax_id               IN NUMBER );
494 
495   PROCEDURE archive_state_eoy_data(
496         p_pactid               IN NUMBER,
497         p_tax_id               IN NUMBER,
501         p_payroll_action_id     NUMBER,
498         p_state_code           IN VARCHAR2);
499 
500   FUNCTION check_state_data(
502         p_transfer_state        varchar2)
503   RETURN varchar2;
504 
505   FUNCTION get_report_category(p_business_group_id number,
506                                                      p_effective_date    date)
507   RETURN varchar2;
508 
509   FUNCTION get_report_category_mt(p_business_group_id  number,
510                                                            p_effective_date         date)
511   RETURN varchar2;
512 
513     TYPE er_sum_rec IS RECORD
514        ( bal_name   varchar2(60)
515        , value          varchar2(20)
516        );
517   TYPE er_sum_table IS TABLE OF
518        er_sum_rec
519   INDEX BY BINARY_INTEGER;
520 
521   FUNCTION  get_w2_er_arch_bal(
522                          w2_balance_name in varchar2,
523                          w2_tax_unit_id  in varchar2,
524                          w2_jurisdiction_code in varchar2,
525                          w2_jurisdiction_level in varchar2,
526                          w2_year varchar2,
527                          a1 OUT NOCOPY varchar2,
528                          a2 OUT NOCOPY varchar2,
529                          a3 OUT NOCOPY varchar2,
530                          a4 OUT NOCOPY varchar2,
531                          a5 OUT NOCOPY varchar2,
532                          a6 OUT NOCOPY varchar2,
533                          a7 OUT NOCOPY varchar2,
534                          a8 OUT NOCOPY varchar2,
535                          a9 OUT NOCOPY varchar2,
536                          a10 OUT NOCOPY varchar2,
537                          a11 OUT NOCOPY varchar2,
538                          a12 OUT NOCOPY varchar2,
539                          a13 OUT NOCOPY varchar2,
540                          a14 OUT NOCOPY varchar2,
541                          a15 OUT NOCOPY varchar2,
542                          a16 OUT NOCOPY varchar2,
543                          a17 OUT NOCOPY varchar2,
544                          a18 OUT NOCOPY varchar2,
545                          a19 OUT NOCOPY varchar2,
546                          a20 OUT NOCOPY varchar2,
547                          a21 OUT NOCOPY varchar2,
548                          a22 OUT NOCOPY varchar2,
549                          a23 OUT NOCOPY varchar2,
550                          a24 OUT NOCOPY varchar2,
551                          a25 OUT NOCOPY varchar2,
552                          a26 OUT NOCOPY varchar2,
553                          a27 OUT NOCOPY varchar2,
554                          a28 OUT NOCOPY varchar2,
555                          a29 OUT NOCOPY varchar2,
556                          a30 OUT NOCOPY varchar2,
557                          a31 OUT NOCOPY varchar2,
558                          a32 OUT NOCOPY varchar2,
559                          a33 OUT NOCOPY varchar2,
560                          a34 OUT NOCOPY varchar2,
561                          a35 OUT NOCOPY varchar2,
562                          a36 OUT NOCOPY varchar2,
563                          a37 OUT NOCOPY varchar2,
564                          a38 OUT NOCOPY varchar2,
565                          a39 OUT NOCOPY varchar2,
566                          a40 OUT NOCOPY varchar2,
567                          a41 OUT NOCOPY varchar2,
568                          a42 OUT NOCOPY varchar2,
569                          a43 OUT NOCOPY varchar2,
570                          a44 OUT NOCOPY varchar2,
571                          a45 OUT NOCOPY varchar2,
572                          a46 OUT NOCOPY varchar2,
573                          a47 OUT NOCOPY varchar2
574                          )
575                             RETURN varchar2;
576 
577   FUNCTION set_application_error(p_state varchar2,
578                                  p_error varchar2,
579 				 p_assignment_action_id number
580                                                        )
581                         RETURN varchar2;
582 
583   FUNCTION get_tax_unit_info  (tax_unit_id	IN NUMBER		-- Context
584 			, assignment_action_id	IN NUMBER		-- Context
585 			,p_tax_year		IN NUMBER		--  Parameter
586                         ,p_federal_ein		OUT NOCOPY VARCHAR2	--  Parameter
587 			,p_tax_jd_code		OUT NOCOPY VARCHAR2	--Parameter
588 			,p_tax_unit_info1	OUT NOCOPY VARCHAR2	--Parameter
589 			,p_tax_unit_info2	OUT NOCOPY VARCHAR2	--Parameter
590 						   )
591                         RETURN varchar2;
592 
593 END pay_us_mmref_reporting;