DBA Data[Home] [Help]

PACKAGE: APPS.PAY_US_PSD_XML

Source


1 PACKAGE PAY_US_PSD_XML AUTHID CURRENT_USER AS
2 /* $Header: payuspsdxml.pkh 120.3.12020000.8 2012/12/11 19:32:48 skchalla noship $ */
3 
4 /*
5  ===========================================================================+
6  |               Copyright (c) 1997 Oracle Corporation                        |
7  |                  Redwood Shores, California, USA                           |
8  |                       All rights reserved.                                 |
9  +============================================================================+
10  Name
11 		pay_us_psd_xml
12  File
13                 payuspsdxml.pkh
14 
15   Purpose
16 
17     The purpose of this package is to support the generation of XML for the process
18     PSD Periodic Wage Listing Report. This package includes all the cursors, procedures and functions
19     used to comply with the payroll CORE multi-thtread enhancement architecture.
20 
21     Currently this is not meant for any specific locality magnetic tape.
22 
23   Notes
24     The generation of each magnetic tape report is a four stage process i.e.
25     1.  Create a payroll action for the report.
26     2.  Select all the GREs that lie under that business group and whose employees have PSD tax
27         deductions and check if 'PSD Reporting Rules' are defined for all such GREs.
28         Also check if these PSD Reporting Rules contain all the employer PSD codes of the employees
29         who have PSD tax deductions. If not then ist all such GREs and PSD codes in the log file.
30     3.  Identify all the assignments to be reported and record an assignment action against
31         the payroll action for each one of them.
32     3.  Run the "PSD Periodic Wage Listing Report" process to use this package.
33 
34 
35  History
36  Date           Author    Verion    Bug         Details
37  ============================================================================
38  22-jun-2012   PRACAGRA   115.0    11712075     Initial Version Created
39  06-jun-2012   PRACAGRA   115.1    11712075     Added changes to include TCD
40                                                 Code in report parameters.
41  09-jun-2012   PRACAGRA   115.3    11712075     Removed GSCC errors.
42  26-jun-2012   PRACAGRA   115.5    14373899     Modified hoi.org_information10 to
43                                                 substr(hoi.org_information10,1,6)
44                                                 because of the changes done to
45                                                 'PAY_US_PSD_CODES' valueset ID.
46  24-aug-2012   PRACAGRA   115.6    14379256     Modified the code to accomodate
47                                                 multiple jurisdiction codes for single asg.
48  19-sep-2012   PRACAGRA   115.7    14640336     Modified the act cursor.
49  22-Nov-2012   SKCHALLA   115.8    14799833     Modified the cursors for the Yearly reporting.
50  26-Nov-2012   PKODURI    115.9    14799833     Corrected package creation stmt.
51  11-Dec-2012   SKCHALLA   115.10   15944697     Modified the Cursors to take casre of GRE change employees
52   ============================================================================
53 */
54 
55  level_cnt	NUMBER;
56 
57  -- Sets up the tax unit context for the Submitter
58 
59  /* Context and Parameter Set in the cursor are
60 
61           Context :
62           --------------------------------------
63           PAYROLL_ACTION_ID - Payroll action Id of PSD Periodic Wage Listing Report
64           TAX_UNIT_ID                - Submitter's Tax Unit ID
65           ASSIGNMENT_ID           - Required for call to function - context not used
66                                      in the for Submitter
67           DATE EARNED              - Always set to Effective date ie. in this case
68                                      for Mag tapes to last date of selected quarter or month.
69  */
70 
71 g_min_chunk              number:= -1;
72 g_archive_flag varchar2(1) := 'N';
73 TYPE char240_data_type_table IS TABLE OF VARCHAR2(240)
74                                   INDEX BY BINARY_INTEGER;
75 TYPE number_data_type_table IS TABLE OF NUMBER
76                                   INDEX BY BINARY_INTEGER;
77 
78 
79 TYPE jurisdiction_rec IS RECORD
80      ( balance_name         varchar2(80)
81       ,balance_type_id      number
82       ,dbi_name         varchar2(80)
83       ,qtd_def_bal_id   number
84       ,month_def_bal_id       number
85 
86      );
87 
88   TYPE jurisdiction_tab IS TABLE OF
89       jurisdiction_rec
90   INDEX BY BINARY_INTEGER;
91 
92   ltr_psd_tax_bal       jurisdiction_tab;
93 
94 CURSOR psd_xml_transmitter
95          IS
96 			SELECT  'PAYROLL_ACTION_ID=P', ppa.payroll_action_id,
97 			        'TR_TAX_UNIT_ID=P', hoi.organization_id,
98 			        'TR_DATE_EARNED=P', ppa.effective_date,
99 			        'BUSINESS_GROUP_ID=P', ppa.business_group_id,
100 			        'TRANSFER_STATE_CODE=P', substr (sr.jurisdiction_code, 1 , 2),
101 			        'ROOT_XML_TAG=P', '<LOCAL_PSD_EXTRACT>'
102 			FROM    pay_state_rules sr,
103 			        hr_organization_information hoi,
104 			        pay_payroll_actions ppa
105 			WHERE   ppa.payroll_action_id = pay_magtape_generic.get_parameter_value ('TRANSFER_PAYROLL_ACTION_ID')
106 			AND     ppa.report_qualifier = 'LOCAL'
107 			AND     hoi.organization_id = pay_magtape_generic.get_parameter_value ('TRANSFER_TRANS_LEGAL_CO_ID')
108 			AND     sr.state_code = pay_magtape_generic.get_parameter_value ('TRANSFER_STATE')
109 			AND     hoi.org_information_context = 'W2 Reporting Rules'
110 			AND     ppa.report_type = 'PSD_MAG_XML'
111 			AND     to_char (ppa.effective_date, 'YYYY') = pay_magtape_generic.get_parameter_value ('TRANSFER_REPORTING_YEAR');
112 
113 
114    -- Cursor for employer.
115 
116 
117 
118    /*SELECT DISTINCT
119                    'PAYROLL_ACTION_ID=P',	ppa.payroll_action_id,
120                    'TAX_UNIT_ID=P'  ,	AA.tax_unit_id,
121                    'TAX_UNIT_NAME=P',	hou.name,
122                    'ER_PSD_CODE=P'  , substr(hoi.ORG_INFORMATION10,1,6)
123      FROM	 hr_all_organization_units	hou,
124 		 pay_payroll_actions		ppa,
125 	 	 pay_assignment_actions	aa,
126      hr_organization_information hoi
127     WHERE aa.payroll_action_id		= pay_magtape_generic.get_parameter_value
128 									('TRANSFER_PAYROLL_ACTION_ID')
129          AND ppa.report_type		= 'PSD_MAG_XML'
130          AND to_char(ppa.effective_date, 'YYYY') =
131                   pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
132          AND aa.payroll_action_id = ppa.payroll_action_id
133        --AND aa.tax_unit_id			= pay_magtape_generic.get_parameter_value('TRANSFER_TRANS_LEGAL_CO_ID')
134          AND hou.organization_id		= AA.tax_unit_id
135          and hoi.organization_id = hou.organization_id
136          and hoi.ORG_INFORMATION_CONTEXT ='PSD Reporting Rules'
137    union
138     --To consider WAH employees.
139     SELECT DISTINCT
140                    'PAYROLL_ACTION_ID=P',	ppa.payroll_action_id,
141                    'TAX_UNIT_ID=P'  ,	AA.tax_unit_id,
142                    'TAX_UNIT_NAME=P',	hou.name,
143                    'ER_PSD_CODE=P'  ,  substr(puar.jurisdiction_code, 11,6)
144      FROM	 hr_all_organization_units	hou,
145 		 pay_payroll_actions		ppa,
146 	 	 pay_assignment_actions	aa,
147      hr_organization_information hoi,
148      per_all_assignments_f paf,
149      pay_us_asg_reporting puar
150     WHERE aa.payroll_action_id		= pay_magtape_generic.get_parameter_value
151 									('TRANSFER_PAYROLL_ACTION_ID')
152          AND ppa.report_type		= 'PSD_MAG_XML'
153          AND to_char(ppa.effective_date, 'YYYY') =
154                   pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
155          AND aa.payroll_action_id = ppa.payroll_action_id
156          AND aa.assignment_id = paf.assignment_id
157          AND paf.work_at_home = 'Y'
158          and ppa.effective_date between paf.effective_start_date and paf.effective_end_date
159          AND puar.assignment_id = paf.assignment_id
160          AND length(puar.jurisdiction_code)= 16
161          AND puar.tax_unit_id = AA.tax_unit_id
162          AND hou.organization_id		= AA.tax_unit_id
163          and hoi.organization_id = hou.organization_id
164          and hoi.ORG_INFORMATION_CONTEXT ='PSD Reporting Rules';*/
165 
166 CURSOR psd_xml_employer
167    IS
168      SELECT DISTINCT
169                    'PAYROLL_ACTION_ID=P',	ppa.payroll_action_id,
170                    'TAX_UNIT_ID=P'  ,	AA.tax_unit_id,
171                    'TAX_UNIT_NAME=P',	hou.name,
172                    'ER_PSD_CODE=P'  ,  substr(puar.jurisdiction_code, 11,6)
173      FROM	 hr_all_organization_units	hou,
174 		 pay_payroll_actions		ppa,
175 	 	 pay_assignment_actions	aa,
176      per_all_assignments_f paf,--Added for the Bug 15944697
177      hr_organization_information hoi,
178      pay_us_asg_reporting puar
179      WHERE aa.payroll_action_id		= pay_magtape_generic.get_parameter_value
180 									('TRANSFER_PAYROLL_ACTION_ID')
181          AND ppa.report_type		= 'PSD_MAG_XML'
182          AND to_char(ppa.effective_date, 'YYYY') =
183                   pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
184          AND aa.payroll_action_id = ppa.payroll_action_id
185          AND to_number(aa.serial_number) = paf.person_id
186          AND pay_magtape_generic.date_earned(ppa.effective_date,paf.assignment_id)
187 	               BETWEEN paf.effective_start_date and paf.effective_end_date
188          AND puar.assignment_id = paf.assignment_id
189          AND length(puar.jurisdiction_code)= 16
190          AND puar.tax_unit_id = AA.tax_unit_id
191          AND hou.organization_id		= AA.tax_unit_id
192          and hoi.organization_id = hou.organization_id
193          and hoi.ORG_INFORMATION_CONTEXT ='PSD Reporting Rules'
194          and pay_magtape_generic.get_parameter_value('TRANSFER_PERIOD_TYPE') <> 'Yearly'  --Added for the Bug 14799833
195          --order by 6,8--hou.name, substr(puar.jurisdiction_code, 11,6)
196      UNION ALL --Added for the Bug 14799833
197      SELECT DISTINCT
198                    'PAYROLL_ACTION_ID=P',	ppa.payroll_action_id,
199                    'TAX_UNIT_ID=P'  ,	AA.tax_unit_id,
200                    'TAX_UNIT_NAME=P',	hou.name,
201                    'ER_PSD_CODE=P'  ,  substr(puar.jurisdiction_code, 11,6)
202      FROM	 hr_all_organization_units	hou,
203 		 pay_payroll_actions		ppa,
204 	 	 pay_assignment_actions	aa,
205      per_all_assignments_f paf,--Added for the Bug 15944697
206      hr_organization_information hoi,
207      pay_us_asg_reporting puar
208      WHERE aa.payroll_action_id		= pay_magtape_generic.get_parameter_value
209 									                  ('TRANSFER_PAYROLL_ACTION_ID')
210          AND ppa.report_type		= 'YREND'
211          AND to_char(ppa.effective_date, 'YYYY') =
212                   pay_magtape_generic.get_parameter_value('TRANSFER_REPORTING_YEAR')
213           AND to_number(aa.serial_number) = paf.person_id
214          	AND pay_magtape_generic.date_earned(ppa.effective_date,paf.assignment_id)
215 	               BETWEEN paf.effective_start_date and paf.effective_end_date
216          AND puar.assignment_id = paf.assignment_id
217          AND length(puar.jurisdiction_code)= 16
218          AND puar.tax_unit_id = AA.tax_unit_id
219          AND hou.organization_id		= AA.tax_unit_id
220          and hoi.organization_id = hou.organization_id
221          and hoi.ORG_INFORMATION_CONTEXT ='PSD Reporting Rules'
222          and aa.tax_unit_id
223                    = substr(ppa.legislative_parameters,
224                             instr(ppa.legislative_parameters,
225                                   'TRANSFER_GRE=') + length('TRANSFER_GRE='))
226          and pay_magtape_generic.get_parameter_value
227 									('TRANSFER_PERIOD_TYPE') = 'Yearly'
228          order by 6,8;--hou.name, substr(puar.jurisdiction_code, 11,6);
229  --
230  --
231  -- Sets up the assignment_action_id, assignment_id, and date_earned contexts
232  -- for an employee. The date_earned context is set to be the least of the
233  -- end of the period being reported and the maximum end date of the
234  -- assignment. This ensures that personal information ie. name etc... is
235  -- current relative to the period being reported on.
236  --
237 ---- Modified for the Bug 15944697
238    CURSOR psd_xml_employee
239        IS
240    SELECT DISTINCT
241 	'TRANSFER_ACT_ID=P', 		AA.assignment_action_id
242     FROM	per_all_people_f			PE,
243 		per_all_assignments_f		SS,
244 		pay_assignment_actions		AA,
245 		pay_payroll_actions			PA ,
246     pay_us_asg_reporting puar
247     WHERE PA.payroll_action_id		= pay_magtape_generic.get_parameter_value
248 				                                 ('TRANSFER_PAYROLL_ACTION_ID')
249 	AND AA.payroll_action_id		= PA.payroll_action_id
250         AND AA.tax_unit_id			= pay_magtape_generic.get_parameter_value
251                                                  ('TAX_UNIT_ID')
252 	--AND SS.assignment_id			= AA.assignment_id
253         AND SS.person_id        = to_number(AA.serial_number)
254 	AND PE.person_id				= SS.person_id
255 	AND pay_magtape_generic.date_earned(PA.effective_date,SS.assignment_id)
256 	               BETWEEN SS.effective_start_date and SS.effective_end_date
257 	AND pay_magtape_generic.date_earned(PA.effective_date,SS.assignment_id)
258 	               BETWEEN PE.effective_start_date and PE.effective_end_date
259   AND puar.assignment_id = SS.assignment_id
260   AND substr(puar.jurisdiction_code, 11, 6) = pay_magtape_generic.get_parameter_value('ER_PSD_CODE');
261   /*  and exists (select 1 from pay_us_asg_reporting puar
262             where puar.assignment_id = SS.assignment_id
263             and substr(puar.jurisdiction_code, 11, 6) = pay_magtape_generic.get_parameter_value('ER_PSD_CODE')
264 )*/
265 
266 CURSOR psd_xml_curr_act_id  IS
267      /*SELECT 'TRANSFER_ACT_ID=P',
268 		    pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
269      FROM DUAL;*/
270 
271    /*SELECT DISTINCT 'TRANSFER_ACT_ID=P',
272 		      pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID'),
273           'TRANSFER_EE_JD_CODE=P', puar.jurisdiction_code
274      FROM pay_us_asg_reporting puar,
275           pay_assignment_actions paa
276     WHERE puar.assignment_id=paa.assignment_id
277       AND paa.assignment_action_id = pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
278       AND length(puar.jurisdiction_code)=16
279       AND EXISTS ( select null
280 									 from ff_archive_items fai,
281                         ff_archive_item_contexts faic,
282                         FF_CONTEXTS FC
283                    WHERE fai.context1 =  pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
284                    and fai.archive_item_id = faic.archive_item_id
285                    and faic.CONTEXT_ID = FC.CONTEXT_ID
286                    AND FC.CONTEXT_NAME='JURISDICTION_CODE'
287                    AND FAIC.CONTEXT = puar.jurisdiction_code
288 									); */
289 
290 -- Modified for Bug 14640336
291 
292    SELECT DISTINCT 'TRANSFER_ACT_ID=P',
293 		      pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID'),
294           'TRANSFER_EE_JD_CODE=P', puar.jurisdiction_code
295      FROM pay_us_asg_reporting puar,
296           pay_assignment_actions paa,
297           per_all_people_f pap,
298           per_all_assignments_f paf,
299           pay_payroll_actions ppa
300     WHERE puar.assignment_id=paf.assignment_id
301       AND paf.person_id=pap.person_id
302       AND pap.person_id=paa.serial_number
303       AND paa.assignment_action_id = pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
304       AND length(puar.jurisdiction_code)=16
305       AND paa.payroll_action_id = ppa.payroll_action_id
306       AND ( ( pay_us_get_item_data_pkg.GET_CPROG_PARAMETER_VALUE(PpA.payroll_action_id,
307                                                                  'TRANSFER_PERIOD_TYPE') <> 'Yearly'
308               and EXISTS ( select null
309                            from ff_archive_items fai,
310                                 ff_archive_item_contexts faic,
311                                 FF_CONTEXTS FC
312                            WHERE fai.context1 =  pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
313                            and fai.archive_item_id = faic.archive_item_id
314                            and faic.CONTEXT_ID = FC.CONTEXT_ID
315                            AND FC.CONTEXT_NAME='JURISDICTION_CODE'
316                            AND FAIC.CONTEXT = puar.jurisdiction_code))
317             OR ( pay_us_get_item_data_pkg.GET_CPROG_PARAMETER_VALUE(PpA.payroll_action_id,
318                                                                     'TRANSFER_PERIOD_TYPE') = 'Yearly'
319                  AND EXISTS ( select null
320                               from ff_archive_items fai,
321                                    ff_archive_item_contexts faic,
322                                    FF_CONTEXTS FC,
323                                    PAY_ACTION_INTERLOCKS pai
324                               WHERE fai.context1 =  pai.locked_action_id
325                               and pai.locking_action_id = pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
326                               and fai.archive_item_id = faic.archive_item_id
327                               and faic.CONTEXT_ID = FC.CONTEXT_ID
328                               AND FC.CONTEXT_NAME='JURISDICTION_CODE'
329                               AND FAIC.CONTEXT = puar.jurisdiction_code))
330            );
331 /*            OR ( pay_us_get_item_data_pkg.GET_CPROG_PARAMETER_VALUE(PpA.payroll_action_id,
332                                                                     'TRANSFER_PERIOD_TYPE') = 'Yearly'
333                  AND EXISTS ( select null
334                               from PAY_ACTION_INTERLOCKS pai
335                               WHERE pai.locking_action_id = pay_magtape_generic.get_parameter_value('TRANSFER_ACT_ID')
336                               AND EXISTS ( SELECT NULL
337                                            from   PAY_US_LOCALITY_W2_V v
338                                            where  v.assignment_action_id = pai.locked_action_id
339                                            and    v.JURISDICTION = puar.jurisdiction_code
340                                            and    v.W2_LOCAL_INCOME_TAX <> 0
341                                          )
342                             )
343                 )
344            );*/
345 
346 CURSOR GET_XML_VER IS
347     SELECT 'ROOT_XML_TAG=P',
348            '<LOCAL_PSD_EXTRACT>',
349            'PAYROLL_ACTION_ID=P',
350            pay_magtape_generic.get_parameter_value(
351                                                 'TRANSFER_PAYROLL_ACTION_ID')
352       FROM dual;
353 
354 FUNCTION bal_db_item
355 (
356     p_db_item_name VARCHAR2
357 )
358 RETURN NUMBER;
359 
360 
361 
362 FUNCTION get_parameter
363 (
364     name IN VARCHAR2,
365     parameter_list IN VARCHAR2
366 )
367 RETURN VARCHAR2;
368 
369 
370 FUNCTION get_balance_value
371 (
372     p_defined_balance_id in number,
373     p_balcall_aaid       in number
374 )
375 RETURN NUMBER;
376 
377 
378 PROCEDURE get_report_parameters
379 (
380     p_pactid    		IN      NUMBER,
381     p_year_start		IN OUT	nocopy DATE,
382     p_year_end		IN OUT	nocopy DATE,
383     p_state_abbrev		IN OUT	nocopy VARCHAR2,
384     p_state_code		IN OUT	nocopy VARCHAR2,
385     p_report_type		IN OUT	nocopy VARCHAR2,
386     p_business_group_id	IN OUT	nocopy NUMBER,
387     p_period_type         IN OUT  nocopy VARCHAR2,
388     p_period_start         IN OUT  nocopy DATE,
389     p_period_end         IN OUT  nocopy DATE,
390     p_tax_coll_dist_code  	IN OUT	nocopy VARCHAR2
391 );
392 
393 FUNCTION preprocess_check(
394     p_pactid 		NUMBER,
395     p_business_group_id	NUMBER,
396     p_tax_coll_dist_code   VARCHAR2
397     )
398 RETURN BOOLEAN;
399 
400 
401 PROCEDURE range_cursor (
402     p_pactid IN NUMBER,
403     p_sqlstr OUT nocopy VARCHAR2
404 );
405 
406 PROCEDURE action_creation(
407     p_pactid IN NUMBER,
408     p_stperson IN NUMBER,
409     p_endperson IN NUMBER,
410     p_chunk IN NUMBER );
411 
412 procedure archive_gre_data(p_payroll_action_id in number,
413                            p_tax_unit_id       in number);
414 
415 
416 procedure action_archinit(p_payroll_action_id in number);
417 
418 procedure archive_data(p_assactid in number, p_effective_date in date);
419 
420 --
421 -- Follwing Procedures are used for constructing XML for Submitter or RA  Record
422 --
423 PROCEDURE transmitter_record_start;
424 
425 PROCEDURE transmitter_record_end;
426 
427 --
428 -- Follwing Procedures are used for constructing XML for Employer or RE Record
429 --
430 PROCEDURE psd_xml_employer_start;
431 
432 PROCEDURE psd_xml_employer_end;
433 
434 --
435 -- Follwing Procedures are used for constructing XML for Employee
436 --
437 PROCEDURE psd_xml_employee_build;
438 
439 
440  /****************************************************************************
441     Name        : WRITE_TO_MAGTAPE_LOB
442     Description : This procedure appends passed BLOB parameter to
443                   pay_mag_tape.g_blob_value
444   *****************************************************************************/
445 
446   PROCEDURE WRITE_TO_MAGTAPE_LOB(p_blob BLOB);
447 
448   /****************************************************************************
449     Name        : WRITE_TO_MAGTAPE_LOB
450     Description : This procedure appends passed varchar2 parameter to
451                   pay_mag_tape.g_blob_value
452   *****************************************************************************/
453 
454   PROCEDURE WRITE_TO_MAGTAPE_LOB(p_data varchar2);
455 
456 
457 END pay_us_psd_xml;