DBA Data[Home] [Help]

PACKAGE: APPS.PAY_SG_IRAS_ARCHIVE

Source


1 package pay_sg_iras_archive AUTHID CURRENT_USER as
2 /* $Header: pysgirar.pkh 120.5.12020000.2 2012/07/06 10:22:00 jalin ship $ */
3     level_cnt  number;
4 
5     --
6     type t_balanceid_store_rec is record
7     (  user_entity_id             ff_user_entities.user_entity_id%type,
8        defined_balance_id         pay_defined_balances.defined_balance_id%type );
9     --
10     type t_ytd_balanceid_store_tab is table of  t_balanceid_store_rec index by binary_integer;
11     t_ytd_balanceid_store         t_ytd_balanceid_store_tab;
12     t_ytd_a8a_balanceid_store     t_ytd_balanceid_store_tab;
13      --
14     type t_month_balanceid_store_tab is table of  t_balanceid_store_rec index by binary_integer;
15     t_month_balanceid_store       t_month_balanceid_store_tab;
16     --
17     ---------------------------------------------------------------------
18     -- 3435334 Record of person_ids with same national identifier
19     ---------------------------------------------------------------------
20     type t_person_id_tab is table of per_all_people_f.person_id%type index by binary_integer;
21     g_person_id_tab               t_person_id_tab;
22     --
23     type t_rehire_same_person_record is record
24     (
25         person_id  per_all_people_f.person_id%type
26     );
27     --------------------------------------------------------------------
28     -- Bug 4688761 Record of person_ids with archived person_id
29     --------------------------------------------------------------------
30     type t_archived_person_rec is record
31     (
32         person_id  per_all_people_f.person_id%type
33     );
34     type t_archived_person_tab is table of t_archived_person_rec index by binary_integer;
35     t_archived_person t_archived_person_tab;
36 
37     -------------------------------------------------------------------
38     -- 3956870  Defined to store the balance status details
39     -------------------------------------------------------------------
40    type balance_status_store_rec is record
41    (   business_group_id          pay_balance_validation.business_group_id%type,
42        defined_balance_id         pay_balance_validation.defined_balance_id%type,
43        run_balance_status         pay_balance_validation.run_balance_status%type
44     );
45     --
46     type t_balance_status_store_tab is table of balance_status_store_rec  index by binary_integer;
47     t_bal_stat_rec      t_balance_status_store_tab;
48 
49     --------------------------------------------------------------------
50     -- These are PUBLIC procedures are required by the Archive process.
51     -- Their names are stored in PAY_REPORT_FORMAT_MAPPINGS_F so that
52     -- the archive process knows what code to execute for each step of
53     -- the archive.
54     --------------------------------------------------------------------
55     procedure range_code
56      ( p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
57        p_sql               out nocopy varchar2 );
58     --
59     procedure assignment_action_code
60      ( p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
61        p_start_person_id    in per_all_people_f.person_id%type,
62        p_end_person_id      in per_all_people_f.person_id%type,
63        p_chunk              in number );
64     --
65     procedure initialization_code
66      ( p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type );
67     --
68     procedure archive_code
69      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
70        p_effective_date        in date );
71     ----------------------------------------------------------------------------
72     -- Bug: 3118540 Procedures called from SRS 'IR8S Ad Hoc Printed Archive'
73     ----------------------------------------------------------------------------
74     procedure assignment_action_code_adhoc
75      ( p_payroll_action_id    in  pay_payroll_actions.payroll_action_id%type,
76        p_start_person_id    in  per_all_people_f.person_id%type,
77        p_end_person_id      in  per_all_people_f.person_id%type,
78        p_chunk              in  number );
79     --
80     procedure initialization_code_adhoc
81      (  p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type );
82     --
83     Function get_archive_value
84      (  p_user_entity_name     in ff_user_entities.user_entity_name%type,
85         p_assignment_action_id in pay_assignment_actions.assignment_action_id%type ) return varchar2;
86     --
87     procedure deinit_code
88             ( p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type );
89     ----------------------------------------------------------------------------
90     -- These are PRIVATE procedures that required for the Archive
91     -- process.
92     --------------------------------------------------------------------
93     procedure archive_balances
94      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
95        p_person_id             in per_all_people_f.person_id%type,
96        p_business_group_id     in hr_organization_units.business_group_id%type,
97        p_tax_unit_id           in ff_archive_item_contexts.context%type,
98        p_basis_year            in varchar2 );
99     --
100     procedure archive_balance_dates
101      ( p_person_id in per_all_people_f.person_id%TYPE,
102        p_basis_year in varchar2,
103        p_business_group_id     in hr_organization_units.business_group_id%type,
104        p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
105        p_run_ass_action_id     in pay_assignment_actions.assignment_action_id%type,
106        p_tax_unit_id           in pay_assignment_actions.tax_unit_id%type );
107     --
108     procedure archive_org_info
109      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
110        p_business_group_id     in hr_organization_units.business_group_id%type,
111        p_legal_entity_id       in hr_organization_units.organization_id%type,
112        p_person_id             in per_all_people_f.person_id%type,
113        p_basis_start           in date,
114        p_basis_end             in date );
115     --
116     procedure archive_person_details
117      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
118        p_person_id             in per_all_people_f.person_id%type,
119        p_basis_start           in date,
120        p_basis_end             in date );
121     --
122     procedure archive_person_addresses
123      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
124        p_person_id             in per_all_people_f.person_id%type,
125        p_basis_start           in date,
126        p_basis_end             in date );
127     --
128     procedure archive_person_cq_addresses
129      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
130        p_person_id             in per_all_people_f.person_id%type,
131        p_basis_start           in date,
132        p_basis_end             in date );
133     --
134     procedure archive_emp_details
135      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
136        p_person_id             in per_all_people_f.person_id%type,
137 --       p_assignment_id         in per_all_assignments_f.assignment_id%type,
138        p_legal_entity_id       in hr_organization_units.organization_id%type, /* Bug 13786754*/
139        p_basis_start           in date,
140        p_basis_end             in date );
141     --
142     procedure archive_people_flex
143      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
144        p_person_id             in per_all_people_f.person_id%type,
145        p_basis_start           in date,
146        p_basis_end             in date );
147     --
148     procedure archive_person_eits
149      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
150        p_person_id             in per_all_people_f.person_id%type,
151        p_basis_start           in date,
152        p_basis_end             in date );
153 
154     --------------------------------------------------------------------------
155     -- Bug 5435088, Added for payroll date
156     --------------------------------------------------------------------------
157     procedure archive_payroll_date
158      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
159        p_business_group_id     in hr_organization_units.business_group_id%type,
160        p_legal_entity_id       in hr_organization_units.organization_id%type,
161        p_person_id             in per_all_people_f.person_id%type,
162        p_basis_year            in varchar2);
163     --
164     --
165     --------------------------------------------------------------------------
166     -- Bug #4688761, added legal_entity_id
167     -- Bug 4890964, added assignment_id
168     --------------------------------------------------------------------------
169     procedure archive_assignment_eits
170      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
171        p_person_id             in per_all_people_f.person_id%type,
172        p_assignment_id         in per_all_assignments_f.assignment_id%type,
173        p_legal_entity_id       in hr_organization_units.organization_id%type,
174        p_basis_start           in date,
175        p_basis_end             in date );
176     --
177     --------------------------------------------------------------------------
178     -- Bug #5078454
179     --------------------------------------------------------------------------
180     procedure archive_ass_bonus_date_eits
181      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
182        p_person_id             in per_all_people_f.person_id%type,
183        p_assignment_id         in per_all_assignments_f.assignment_id%type,
184        p_legal_entity_id       in hr_organization_units.organization_id%type,
185        p_basis_start           in date,
186        p_basis_end             in date );
187     --
188     --------------------------------------------------------------------------
189     -- Bug 5435088
190     --------------------------------------------------------------------------
191     procedure archive_ass_payment_method
192      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
193        p_person_id             in per_all_people_f.person_id%type,
194        p_assignment_id         in per_all_assignments_f.assignment_id%type,
195        p_legal_entity_id       in hr_organization_units.organization_id%type,
196        p_basis_start           in date,
197        p_basis_end             in date);
198     --
199     -------------------------------------------------------------------------
200     -- Bug #4688761, added legal_entity_id
201     -------------------------------------------------------------------------
202     procedure archive_os_assignment
203      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
204        p_person_id             in per_all_people_f.person_id%type,
205        p_legal_entity_id       in hr_organization_units.organization_id%type,
206        p_basis_start           in date,
207        p_basis_end             in date );
208     --
209     --------------------------------------------------------------------------
210     -- Bug 4890964, added assignment_id
211     --------------------------------------------------------------------------
212     procedure archive_job_designation
213      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
214        p_person_id             in per_all_people_f.person_id%type,
215        p_assignment_id         in per_all_assignments_f.assignment_id%type,
216        p_legal_entity_id       in hr_organization_units.organization_id%type,
217        p_basis_start           in date,
218        p_basis_end             in date,
219        p_er_designation_type   in hr_organization_information.org_information17%type,
220        p_er_position_seg_type  in hr_organization_information.org_information18%type );
221     --
222     ---------------------------------------------------------------------------
223     -- Bug #4314453, added legal_entity_id
224     ---------------------------------------------------------------------------
225     procedure archive_shares_details
226      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
227        p_person_id             in per_all_people_f.person_id%type,
228        p_tax_unit_id           in ff_archive_item_contexts.context%type,
229        p_basis_start           in date,
230        p_basis_end             in date );
231     --
232     procedure archive_ir8s_c_details
233      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
234        p_person_id             in per_all_people_f.person_id%type,
235        p_tax_unit_id           in ff_archive_item_contexts.context%type,
236        p_business_group_id     in per_assignments_f.business_group_id%type,
237        p_basis_start           in date,
238        p_basis_end             in date );
239     --
240     procedure archive_ir8s_c_detail_moas
241      ( p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
242        p_1_person_id           in per_all_people_f.person_id%type,
243        p_person_id             in per_all_people_f.person_id%type,
244        p_tax_unit_id           in ff_archive_item_contexts.context%type,
245        p_business_group_id     in per_assignments_f.business_group_id%type,
246        p_basis_start           in date,
247        p_basis_end             in date );
248     --
249     procedure archive_item
250      ( p_user_entity_name      in ff_user_entities.user_entity_name%type,
251        p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
252        p_archive_value         in ff_archive_items.value%type );
253     --
254     procedure archive_item_2
255      ( p_user_entity_name      in ff_user_entities.user_entity_name%type,
256        p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
257        p_archive_value         in ff_archive_items.value%type,
258        p_context_value2        in ff_archive_item_contexts.context%type );
259     --
260     procedure archive_item_3
261      ( p_user_entity_name      in ff_user_entities.user_entity_name%type,
262        p_assignment_action_id  in pay_assignment_actions.assignment_action_id%type,
263        p_archive_value         in ff_archive_items.value%type,
264        p_context_value2        in ff_archive_item_contexts.context%type,
265        p_context_value3        in ff_archive_item_contexts.context%type );
266     -------------------------------------------------------------------------------
267     -- Bug 3435334 - New function introduced for implementing duplicate person logic
268     -- with pre-processor
269     -------------------------------------------------------------------------------
270     function employee_if_latest
271      ( p_national_identifier   in  varchar2,
272        p_person_id             in  per_all_people_f.person_id%type,
273        p_setup_action_id       in  pay_payroll_actions.payroll_action_id%type,
274        p_report_type           in  varchar2 ) return boolean ;
275     --
276     ----------------------------------------------------------------------------
277     -- Bug 4688761 - New function to check if the person_id has been archived once
278     ----------------------------------------------------------------------------
279     function person_if_archived (p_person_id       in per_all_people_f.person_id%type)           return boolean;
280     --
281     ----------------------------------------------------------------------------
282     -- Bug 4890964 - The function to get the LE if it is with the latest primary
283     --               assignment for multi-LEs.
284     ----------------------------------------------------------------------------
285     function pri_if_latest
286                     ( p_person_id   in per_all_people_f.person_id%type
287                     , p_tax_unit_id in ff_archive_item_contexts.context%type
288                     , p_basis_start in date
289                     , p_basis_end   in date)  return boolean;
290     --
291     ----------------------------------------------------------------------------
292     -- Bug 4890964 - The function to get the assignment with LE if its the
293     --               latest primary assignment
294     ----------------------------------------------------------------------------
295     function pri_LE_if_latest
296                     ( p_person_id   in per_all_people_f.person_id%type
297                     , p_tax_unit_id in ff_archive_item_contexts.context%type
298                     , p_basis_start in date
299                     , p_basis_end   in date)  return number;
300     --
301     ----------------------------------------------------------------------------
302     -- Bug 4890964 - The function to get the assignment with LE if its the
303     --               latest assignment without primay flag defined.
304     ----------------------------------------------------------------------------
305     function id_LE_if_latest
306                     ( p_person_id   in per_all_people_f.person_id%type
307                     , p_tax_unit_id in ff_archive_item_contexts.context%type
308                     , p_basis_start in date
309                     , p_basis_end   in date)  return number;
310     --
311     ---------------------------------------------------------------------------
312     -- Bug 5435088 - The function to check if a value is numeric
313     ---------------------------------------------------------------------------
314     function check_is_number (p_value in varchar2) return boolean;
315 
316     ---------------------------------------------------------------------------
317     -- Bug 5435088 - The function to check if the payer id is valid
318     ---------------------------------------------------------------------------
319     function check_payee_id (p_ee_income_tax_number in varchar2,
320                              p_payee_id_type     in varchar2) return char;
321 
322     ---------------------------------------------------------------------------
323     -- Bug 5435088 - The function to get country code
324     ---------------------------------------------------------------------------
325     function get_country_code (p_country in varchar2) return varchar2;
326 
327 
328     ---------------------------------------------------------------------------
329     -- Bug 5435088 - The function to check if the payee id is valid
330     ---------------------------------------------------------------------------
331     function check_payer_id (p_er_income_tax_number in varchar2,
332                              p_er_payer_id     in varchar2) return char;
333 
334 
335     ---------------------------------------------------------------------
336     -- PUBLIC cursors used to retrieve data and pass it to IRAS formulae.
337     -- Passes parameters to SG_ARCHIVE_HEADER formula
338     -- Just need 1 context for Org Info
339     ---------------------------------------------------------------------
340     cursor  archive_header is
341     select  'ASSIGNMENT_ACTION_ID=C',
342             pac.assignment_action_id,
343             'BASIS_YEAR=P',
344             pay_core_utils.get_parameter('BASIS_YEAR', ppa.legislative_parameters) basis_year,
345             'CREATION_DATE=P',
346             to_char(sysdate,'YYYYMMDD') creation_date
347     from    pay_payroll_actions ppa,
348             pay_assignment_actions pac,
349             ff_archive_items    ffi,
350             ff_database_items  fdi
351     where   ppa.payroll_action_id  = pay_magtape_generic.get_parameter_value('TRANSFER_PAYROLL_ACTION_ID')
352     and     ppa.payroll_action_id  = pac.payroll_action_id
353     and     pac.action_status      = 'C'
354     and     ffi.context1           = pac.assignment_action_id   /* Added joins for bug:3232300 */
355     and     fdi.user_name          = 'X_SG_LEGAL_ENTITY_SG_LEGAL_ENTITY_NAME'
356     and     ffi.user_entity_id     = fdi.user_entity_id
357     and     rownum=1;
358     ---------------------------------------------------------------------
359     -- Passes parameters to SG_ARCHIVE_DETAILS formula
360     ---------------------------------------------------------------------
361     cursor archive_details is
362     select distinct
363            'ASSIGNMENT_ACTION_ID=C',
364            pac.assignment_action_id,
365            'TAX_UNIT_ID=C',
366            to_number(ac2.context) tax_unit_id,
367            'BASIS_YEAR=P',
368            pay_core_utils.get_parameter('BASIS_YEAR', ppa.legislative_parameters) basis_year,
369            'P_ASSIGNMENT_ACTION_ID=P',
370            to_char(pac.assignment_action_id),
371            'PERSON_ID=P',
372            to_char(paa.person_id) person_id,
373            'ASSIGNMENT_NUMBER=P',
374            paa.assignment_number assignment_number
375     from   per_all_assignments_f paa,
376            pay_payroll_actions ppa,
377            pay_assignment_actions pac,
378            ff_archive_items fai,
379            ff_archive_item_contexts ac2
380     where  ppa.payroll_action_id = pay_magtape_generic.get_parameter_value('TRANSFER_PAYROLL_ACTION_ID')
381     and    pac.action_status = 'C'
382     and    ppa.payroll_action_id = pac.payroll_action_id
383     and    paa.assignment_id = pac.assignment_id
384     and    ppa.business_group_id = pay_magtape_generic.get_parameter_value('BUSINESS_GROUP_ID')
385     and    paa.business_group_id = ppa.business_group_id
386     and    fai.context1 = pac.assignment_action_id
387     and    fai.archive_item_id = ac2.archive_item_id and ac2.sequence_no = 2
388     order by paa.person_id;
389     ---------------------------------------------------------------------
390     -- Passes parameters to SG_ARCHIVE_DETAILS formula
391     ---------------------------------------------------------------------
392     cursor archive_org_details is
393     select distinct
394            'TAX_UNIT_ID=C',
395            to_number(ac2.context) tax_unit_id,
396            'BASIS_YEAR=P',
397            pay_core_utils.get_parameter('BASIS_YEAR', ppa.legislative_parameters) basis_year
398     from   per_all_assignments_f paa,
399            pay_payroll_actions ppa,
400            pay_assignment_actions pac,
401            ff_archive_items fai,
402            ff_archive_item_contexts ac2
403     where  ppa.payroll_action_id = pay_magtape_generic.get_parameter_value('TRANSFER_PAYROLL_ACTION_ID')
404     and    pac.action_status = 'C'
405     and    ppa.payroll_action_id = pac.payroll_action_id
406     and    paa.assignment_id = pac.assignment_id
407     and    ppa.business_group_id = pay_magtape_generic.get_parameter_value('BUSINESS_GROUP_ID')
408     AND    paa.business_group_id = ppa.business_group_id
409     and    fai.context1 = pac.assignment_action_id
410     and    fai.archive_item_id = ac2.archive_item_id and ac2.sequence_no = 2
411     order by paa.person_id;
412     ---------------------------------------------------------------------
413 end pay_sg_iras_archive;