DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_AU_PAYMENT_SUMMARY_AMEND

Source


1 PACKAGE BODY pay_au_payment_summary_amend AS
2 /* $Header: pyaupsam.pkb 120.0.12010000.1 2008/10/13 13:34:31 avenkatk noship $*/
3 /*
4 *** -------------------------------------------------------------------------+
5 *** Program:     pay_au_payment_summary_amend (Package Body)
6 *** Description: Various procedures and functions to assist Amended
7 ***              Payment Summary archival process and report
8 ***
9 *** Change History
10 *** Date      Changed By  Version Description of Change
11 *** --------  ----------  ------- --------------------------------------------+
12 *** 08-Jan-08  avenkatk    115.0  6470581   Initial Version
13 *** 22-Jan-08  avenkatk    115.2  6470581   Changes made as per review comments
14 *** 23-Jan-08  avenkatk    115.3  6470581   Resolved GSCC Errors
15 *** --------------------------------------------------------------------------+
16 */
17 
18 g_debug             boolean;
19 g_business_group_id number;
20 g_package           constant varchar2(30) := 'pay_au_payment_summary_amend';
21 g_legislation_code  constant varchar2(2)  := 'AU';
22 
23 
24 TYPE char_tab_type IS TABLE OF ff_user_entities.user_entity_name%TYPE;
25 
26 /* The following global tables store the User entity type of each DB Item */
27 
28 g_payg_db_items char_tab_type;
29 g_etp1_db_items char_tab_type;
30 g_etp2_db_items char_tab_type;
31 g_etp3_db_items char_tab_type;
32 g_etp4_db_items char_tab_type;
33 g_etp_cmn_db_items char_tab_type;
34 
35 
36 /* The following variables hold the slotted DB Items */
37 
38 l_cmn_tab_new archive_db_tab;
39 l_payg_tab_new archive_db_tab;
40 l_etp_cmn_tab_new archive_db_tab;
41 l_etp_1_tab_new archive_db_tab;
42 l_etp_2_tab_new archive_db_tab;
43 l_etp_3_tab_new archive_db_tab;
44 l_etp_4_tab_new archive_db_tab;
45 l_amend_types_new archive_db_tab;
46 
47 
48 
49 /*
50 --------------------------------------------------------------------
51     Name  : range_code
52     Type  : Procedure
53     Access: Public
54     Description: This procedure returns a sql string to
55                  select a range of assignments eligible for archival.
56   --------------------------------------------------------------------
57 */
58 
59 PROCEDURE range_code
60         (p_payroll_action_id   IN pay_payroll_actions.payroll_action_id%TYPE,
61          p_sql                 OUT NOCOPY VARCHAR2)
62 IS
63 BEGIN
64 
65 g_debug := hr_utility.debug_enabled;
66 
67 IF g_debug
68 THEN
69         hr_utility.set_location('Start of range_code    ',1);
70 END IF;
71 
72 p_sql   := ' select distinct p.person_id'                                       ||
73              ' from   per_people_f p,'                                        ||
74                     ' pay_payroll_actions pa'                                     ||
75              ' where  pa.payroll_action_id = :payroll_action_id'                  ||
76              ' and    p.business_group_id = pa.business_group_id'                 ||
77              ' order by p.person_id';
78 
79 IF g_debug
80 THEN
81         hr_utility.set_location('End of range_code',2);
82 END IF;
83 END range_code;
84 
85 
86 /*
87 --------------------------------------------------------------------
88     Name  : initialization_code
89     Type  : Procedure
90     Access: Public
91     Description:  This procedure initializes global variables required
92                   by Archive. The g_payment_summary_type parameters
93                   is set to 'A'
94   --------------------------------------------------------------------
95 */
96 
97 PROCEDURE initialization_code
98         (p_payroll_action_id  IN pay_payroll_actions.payroll_action_id%TYPE)
99 IS
100 
101 l_procedure VARCHAR2(80);
102 
103 BEGIN
104 
105 g_debug := hr_utility.debug_enabled;
106 IF g_debug
107 THEN
108     l_procedure     := g_package||'.initialization_code_amend';
109     hr_utility.set_location('In Procedure   '||l_procedure,1000);
110     END IF;
111 
112     pay_au_payment_summary.initialization_code(p_payroll_action_id);
113     pay_au_payment_summary.g_payment_summary_type   := 'A'; /*Reset the Payment Summary Type Variable */
114     populate_user_entity_types;                             /* Initialize the DB Item Types */
115 
116 IF g_debug
117 THEN
118     hr_utility.set_location('Leaving Procedure   '||l_procedure,1000);
119 END IF;
120 
121 EXCEPTION
122 WHEN others THEN
123 IF g_debug THEN
124     hr_utility.set_location('Error in initialization_code',1000);
125 END IF;
126 raise;
127 END initialization_code;
128 
129 
130 /*
131 --------------------------------------------------------------------
132 Name  : assignment_action_code
133 Type  : Procedure
134 Access: Public
135 Description:This procedure further restricts the assignment_id's
136             returned by range_code.
137             The procedure uses the Assignment ID or Assignment Set ID
138             parameter and restricts assignments to be archived
139             it then calls hr_nonrun.insact to create an assignment action id
140   --------------------------------------------------------------------
141 */
142 
143 PROCEDURE assignment_action_code
144     (p_payroll_action_id  IN pay_payroll_actions.payroll_action_id%TYPE,
145      p_start_person_id    IN per_all_people_f.person_id%TYPE,
146      p_end_person_id      IN per_all_people_f.person_id%TYPE,
147      p_chunk              IN NUMBER)
148 IS
149 
150 v_next_action_id  pay_assignment_actions.assignment_action_id%type;
151 
152 v_lst_year_start       date ;
153 v_fbt_year_start       date ;
154 v_lst_fbt_year_start   date ;
155 v_fbt_year_end         date ;
156 v_fin_year_start       date ;
157 v_fin_year_end         date ;
158 v_assignment_id        varchar2(50);
159 v_registered_employer  varchar2(50);
160 v_financial_year       varchar2(50);
161 v_payroll_id           varchar2(50);
162 v_employee_type        varchar2(1);
163 v_asg_id               number;
164 v_reg_emp              number;
165 l_lst_yr_term          varchar(10);
166 
167 v_assignment_set_id    VARCHAR2(50);
168 
169 l_procedure            VARCHAR2(80);
170 
171 CURSOR get_params(c_payroll_action_id  per_all_assignments_f.assignment_id%TYPE)
172 IS
173 SELECT   to_date('01-07-'||substr(pay_core_utils.get_parameter('FINANCIAL_YEAR',legislative_parameters),1,4),'DD-MM-YYYY') Financial_year_start
174         ,to_date('30-06-'||substr(pay_core_utils.get_parameter('FINANCIAL_YEAR',legislative_parameters),6,4),'DD-MM-YYYY') Financial_year_end
175         ,to_date('01-04-'||substr(pay_core_utils.get_parameter('FINANCIAL_YEAR',legislative_parameters),1,4),'DD-MM-YYYY') FBT_year_start
176         ,to_date('30-06-'||substr(pay_core_utils.get_parameter('FINANCIAL_YEAR',legislative_parameters),1,4),'DD-MM-YYYY') FBT_year_end
177         ,decode(pay_core_utils.get_parameter('EMPLOYEE_TYPE',legislative_parameters),'C','Y','T','N','B','%')   Employee_type
178         ,pay_core_utils.get_parameter('REGISTERED_EMPLOYER',legislative_parameters)                             Registered_Employer
179         ,pay_core_utils.get_parameter('FINANCIAL_YEAR',legislative_parameters)                                  Financial_year
180         ,pay_core_utils.get_parameter('ASSIGNMENT_ID',legislative_parameters)               Assignment_id
181         ,decode(pay_core_utils.get_parameter('PAYROLL',legislative_parameters),NULL,'%',pay_core_utils.get_parameter('PAYROLL',legislative_parameters)) payroll_id
182         ,pay_core_utils.get_parameter('LST_YR_TERM',legislative_parameters)              lst_yr_term    /*3661230*/
183         ,pay_core_utils.get_parameter('BUSINESS_GROUP_ID',legislative_parameters)               Business_group_id
184         ,pay_core_utils.get_parameter('ASSIGNMENT_SET_ID',legislative_parameters)               assignment_set_id
185 FROM  pay_payroll_actions
186 WHERE payroll_action_id = c_payroll_Action_id;
187 
188 CURSOR process_assignments_only(c_payroll_action_id  IN pay_payroll_actions.payroll_action_id%TYPE
189                            ,c_start_person_id    IN per_all_people_f.person_id%TYPE
190                            ,c_end_person_id      IN per_all_people_f.person_id%TYPE
191                            ,c_assignment_id      IN per_all_assignments_f.assignment_id%TYPE
192                            ,c_financial_year     IN VARCHAR2
193                            ,c_tax_unit_id        IN pay_assignment_actions.tax_unit_iD%TYPE)
194 IS
195 SELECT DISTINCT paf.assignment_id
196 FROM   per_assignments_f paf
197       ,per_people_f      ppf
198       ,pay_payroll_actions ppa
199 WHERE  ppa.payroll_action_id = c_payroll_action_id
200 AND    ppf.person_id  BETWEEN c_start_person_id AND c_end_person_id
201 AND    ppf.person_id         = paf.person_id
202 AND    paf.assignment_id     = c_assignment_id
203 AND    paf.business_group_id = ppa.business_group_id
204 AND    EXISTS
205         ( /* Check if a Datafile is run for this year */
206            SELECT '1'
207            FROM  pay_payroll_actions ppa1
208                 ,pay_assignment_actions paa1
209            WHERE ppa1.payroll_action_id = paa1.payroll_action_id
210            AND   ppa1.report_type       = 'AU_PS_DATA_FILE'
211            AND   ppa1.report_qualifier  = 'AU'
212            AND   ppa1.report_category   = 'REPORT'
213            AND   paa1.assignment_id     =  paf.assignment_id
214            AND   pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa1.legislative_parameters) = c_financial_year
215            AND   pay_core_utils.get_parameter('REGISTERED_EMPLOYER',ppa1.legislative_parameters) = c_tax_unit_id
216            )
217 AND    NOT EXISTS
218         ( /* Check if a locked Amended Payment Summary does not exist for this year */
219         SELECT '1'
220         FROM   pay_payroll_actions ppa2
221               ,pay_assignment_actions paa2
222               ,pay_action_interlocks pai
223         WHERE   ppa2.payroll_action_id = paa2.payroll_action_id
224           AND   ppa2.report_type       = 'AU_PAY_SUMM_AMEND'
225           AND   ppa2.report_qualifier  = 'AU'
226           AND   ppa2.report_category   = 'REPORT'
227           AND   pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa2.legislative_parameters) = c_financial_year
228           AND   pay_core_utils.get_parameter('REGISTERED_EMPLOYER',ppa2.legislative_parameters) = c_tax_unit_id
229           AND   paa2.assignment_id      = paf.assignment_id
230           AND   pai.locked_action_id   = paa2.assignment_action_id
231         );
232 
233 
234 CURSOR process_assignments(c_payroll_action_id  IN pay_payroll_actions.payroll_action_id%TYPE
235                            ,c_start_person_id    IN per_all_people_f.person_id%TYPE
236                            ,c_end_person_id      IN per_all_people_f.person_id%TYPE
237                            ,c_assignment_set_id  IN NUMBER
238                            ,c_financial_year     IN VARCHAR2
239                            ,c_tax_unit_id        IN pay_assignment_actions.tax_unit_iD%TYPE)
240 IS
241 SELECT DISTINCT paf.assignment_id
242 FROM   per_assignments_f paf
243       ,per_people_f      ppf
244       ,pay_payroll_actions ppa
245       ,hr_assignment_set_amendments  has
246 WHERE  ppa.payroll_action_id = c_payroll_action_id
247 AND    ppf.person_id  BETWEEN c_start_person_id AND c_end_person_id
248 AND    ppf.person_id         = paf.person_id
249 AND    paf.assignment_id     = has.assignment_id
250 AND    has.assignment_set_id  = c_assignment_set_id
251 AND    upper(has.include_or_exclude) = 'I'
252 AND    paf.business_group_id = ppa.business_group_id
253 AND    EXISTS
254         ( /* Check if a Datafile is run for this year */
255            SELECT '1'
256            FROM  pay_payroll_actions ppa1
257                 ,pay_assignment_actions paa1
258            WHERE ppa1.payroll_action_id = paa1.payroll_action_id
259            AND   ppa1.report_type       = 'AU_PS_DATA_FILE'
260            AND   ppa1.report_qualifier  = 'AU'
261            AND   ppa1.report_category   = 'REPORT'
262            AND   paa1.assignment_id     =  paf.assignment_id
263            AND   pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa1.legislative_parameters) = c_financial_year
264            AND   pay_core_utils.get_parameter('REGISTERED_EMPLOYER',ppa1.legislative_parameters) = c_tax_unit_id
265            )
266 AND    NOT EXISTS
267         ( /* Check if a locked Amended Payment Summary does not exist for this year */
268         SELECT '1'
269         FROM   pay_payroll_actions ppa2
270               ,pay_assignment_actions paa2
271               ,pay_action_interlocks pai
272         WHERE   ppa2.payroll_action_id = paa2.payroll_action_id
273           AND   ppa2.report_type       = 'AU_PAY_SUMM_AMEND'
274           AND   ppa2.report_qualifier  = 'AU'
275           AND   ppa2.report_category   = 'REPORT'
276           AND   pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa2.legislative_parameters) = c_financial_year
277           AND   pay_core_utils.get_parameter('REGISTERED_EMPLOYER',ppa2.legislative_parameters) = c_tax_unit_id
278           AND   paa2.assignment_id      = paf.assignment_id
279           AND   pai.locked_action_id    = paa2.assignment_action_id
280         );
281 
282 CURSOR   next_action_id
283 IS
284 SELECT pay_assignment_actions_s.nextval
285 FROM  dual;
286 
287 BEGIN
288 
289 g_debug := hr_utility.debug_enabled;
290 
291 IF g_debug
292 THEN
293     l_procedure     := g_package||'.assignment_action_coded';
294     hr_utility.set_location('In Procedure   '||l_procedure,1020);
295 END IF;
296 
297 /* Get the paramters for archival process */
298 OPEN   get_params(p_payroll_action_id);
299 FETCH  get_params
300 INTO      v_fin_year_start
301          ,v_fin_year_end
302          ,v_fbt_year_start
303          ,v_fbt_year_end
304          ,v_employee_type
305          ,v_registered_employer
306          ,v_financial_year
307          ,v_assignment_id
308          ,v_payroll_id
309          ,l_lst_yr_term
310          ,g_business_group_id
311          ,v_assignment_set_id;
312 CLOSE get_params;
313 
314 v_reg_emp := to_number(v_registered_employer);
315 
316 IF g_debug
317 THEN
318     hr_utility.set_location('p_payroll_action_id       '||p_payroll_action_id,1030);
319     hr_utility.set_location('p_start_person_id         '||p_start_person_id,1030);
320     hr_utility.set_location('p_end_person_id           '||p_end_person_id,1030);
321     hr_utility.set_location('v_assignment_set_id       '||to_number(v_assignment_set_id),1030);
322     hr_utility.set_location('v_financial_year          '||v_financial_year,1030);
323     hr_utility.set_location('v_assignment_id           '||v_assignment_id,1030);
324     hr_utility.set_location('v_reg_emp                 '||v_reg_emp,1030);
325 END IF;
326 
327 IF v_assignment_id IS NOT NULL
328 THEN
329         FOR csr_rec IN process_assignments_only(p_payroll_action_id
330                                                ,p_start_person_id
331                                                ,p_end_person_id
332                                                ,to_number(v_assignment_id)
333                                                ,v_financial_year
334                                                ,v_reg_emp)
335         LOOP
336                 OPEN next_action_id;
337                 FETCH next_action_id INTO v_next_action_id;
338                 CLOSE next_action_id;
339 
340                 hr_nonrun_asact.insact(v_next_action_id,
341                                        csr_rec.assignment_id,
342                                        p_payroll_action_id,
343                                        p_chunk,
344                                        NULL);
345 
346         END LOOP;
347 ELSIF v_assignment_set_id IS NOT NULL
348 THEN
349 
350         FOR csr_rec IN process_assignments(p_payroll_action_id
351                                           ,p_start_person_id
352                                           ,p_end_person_id
353                                           ,to_number(v_assignment_set_id)
354                                           ,v_financial_year
355                                           ,v_reg_emp)
356         LOOP
357                 OPEN next_action_id;
358                 FETCH next_action_id INTO v_next_action_id;
359                 CLOSE next_action_id;
360 
361                 hr_nonrun_asact.insact(v_next_action_id,
362                                        csr_rec.assignment_id,
363                                        p_payroll_action_id,
364                                        p_chunk,
365                                        NULL);
366         END LOOP;
367 
368 END IF;
369 
370 IF g_debug THEN
371     hr_utility.set_location('Leaving  '||l_procedure,1040);
372 END IF;
373 
374 EXCEPTION
375 WHEN others THEN
376 IF g_debug THEN
377     hr_utility.set_location('Error raised in assignment_action_code_amend procedure ',1050);
378 END IF;
379 raise;
380 END assignment_action_code;
381 
382 
383 /*
384 --------------------------------------------------------------------
385 Name  : populate_user_entity_types
386 Type  : Procedure
387 Access: Public
388 Description:This procedure populates the Global PL/SQL table with
389             the User Entity type of all shipped DB items.
390             PAYG        - PAYG Record
391             ETP_CMN     - Common data reported in all ETP records
392             ETP1        - Transtional (Y), Part of Prev Term (Y) ETP Record
393             ETP2        - Transtional (Y), Part of Prev Term (N) ETP Record
394             ETP3        - Transtional (N), Part of Prev Term (Y) ETP Record
395             ETP4        - Transtional (N), Part of Prev Term (N) ETP Record
396 --------------------------------------------------------------------
397 */
398 
399 
400 PROCEDURE populate_user_entity_types
401 IS
402 
403 CURSOR csr_payg_items
404 IS
405 SELECT user_entity_name
406 FROM  ff_user_entities
407 WHERE legislation_code = 'AU'
408 AND (  user_entity_name LIKE 'X_ALLOWANCE%'
409         OR user_entity_name LIKE 'X_EMPLOYEE%DATE%'
410         OR user_entity_name LIKE 'X_UNION%'
411         OR user_entity_name LIKE 'X_%ASG_YTD'
412         OR user_entity_name IN ('X_EMPLOYEE_TAX_FILE_NUMBER')
413         )
414 AND user_entity_name NOT LIKE 'X_%83%_ASG_YTD'
415 AND user_entity_name NOT LIKE 'X_%TRANS%_ASG_YTD'
416 AND user_entity_name NOT IN ('X_LUMP_SUM_C_PAYMENTS_ASG_YTD','X_LUMP_SUM_C_DEDUCTIONS_ASG_YTD','X_INVALIDITY_PAYMENTS_ASG_YTD');
417 
418 
419 CURSOR csr_etp1_items
420 IS
421 SELECT user_entity_name
422 FROM  ff_user_entities
423 WHERE legislation_code = 'AU'
424 AND    user_entity_name IN
425 ( 'X_ETP_DED_TRANS_PPTERM_ASG_YTD','X_INV_PAY_TRANS_PPTERM_ASG_YTD'
426  ,'X_POST_JUN_83_TAXED_TRANS_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_TRANS_PPTERM_ASG_YTD');
427 
428 CURSOR csr_etp2_items
429 IS
430 SELECT user_entity_name
431 FROM  ff_user_entities
432 WHERE legislation_code = 'AU'
433 AND    user_entity_name IN
434 ( 'X_ETP_DED_TRANS_NOT_PPTERM_ASG_YTD','X_INV_PAY_TRANS_NOT_PPTERM_ASG_YTD'
435  ,'X_POST_JUN_83_TAXED_TRANS_NOT_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_TRANS_NOT_PPTERM_ASG_YTD');
436 
437 CURSOR csr_etp3_items
438 IS
439 SELECT user_entity_name
440 FROM  ff_user_entities
441 WHERE legislation_code = 'AU'
442 AND    user_entity_name IN
443 ( 'X_ETP_DED_NOT_TRANS_PPTERM_ASG_YTD','X_INV_PAY_NOT_TRANS_PPTERM_ASG_YTD'
444 ,'X_POST_JUN_83_TAXED_NOT_TRANS_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_NOT_TRANS_PPTERM_ASG_YTD');
445 
446 CURSOR csr_etp4_items
447 IS
448 SELECT user_entity_name
449 FROM  ff_user_entities
450 WHERE legislation_code = 'AU'
451 AND    user_entity_name IN
452 ( 'X_ETP_DED_NOT_TRANS_NOT_PPTERM_ASG_YTD','X_INV_PAY_NOT_TRANS_NOT_PPTERM_ASG_YTD'
453  ,'X_POST_JUN_83_TAXED_NOT_TRANS_NOT_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_NOT_TRANS_NOT_PPTERM_ASG_YTD');
454 
455 CURSOR csr_etp_cmn_items
456 IS
457 SELECT user_entity_name
458 FROM  ff_user_entities
459 WHERE legislation_code = 'AU'
460 AND (  user_entity_name LIKE 'X_ETP%DATE%'
461       OR user_entity_name LIKE 'X_DAYS%'
462       OR user_entity_name IN ('X_ETP_TAX_FILE_NUMBER')
463        );
464 
465 l_procedure     VARCHAR2(200);
466 
467 BEGIN
468 
469         g_debug := hr_utility.debug_enabled;
470         IF g_debug
471         THEN
472                 l_procedure     := g_package||'.populate_user_entity_types';
473                 hr_utility.set_location('Entering Procedure     '||l_procedure,2400);
474         END IF;
475 
476         OPEN csr_payg_items;
477         FETCH csr_payg_items BULK COLLECT INTO g_payg_db_items;
478         CLOSE csr_payg_items;
479 
480         OPEN  csr_etp_cmn_items;
481         FETCH csr_etp_cmn_items BULK COLLECT INTO g_etp_cmn_db_items;
482         CLOSE csr_etp_cmn_items ;
483 
484         OPEN  csr_etp1_items;
485         FETCH csr_etp1_items BULK COLLECT INTO g_etp1_db_items;
486         CLOSE csr_etp1_items ;
487 
488         OPEN  csr_etp2_items;
489         FETCH csr_etp2_items BULK COLLECT INTO g_etp2_db_items;
490         CLOSE csr_etp2_items ;
491 
492         OPEN  csr_etp3_items;
493         FETCH csr_etp3_items BULK COLLECT INTO g_etp3_db_items;
494         CLOSE csr_etp3_items ;
495 
496         OPEN  csr_etp4_items;
497         FETCH csr_etp4_items BULK COLLECT INTO g_etp4_db_items;
498         CLOSE csr_etp4_items ;
499 
500         IF g_debug
501         THEN
502                 hr_utility.set_location('Leaving Procedure     '||l_procedure,2420);
503         END IF;
504 END populate_user_entity_types;
505 
506 /*
507 --------------------------------------------------------------------
508 Name  : check_user_entity_type
509 Type  : Function
510 Access: Public
511 Description:This procedure takes a User Entity Name and returns the
512             Data file record which corresponds to the ITEM.
513             Values returned,
514             PAYG        - PAYG Record
515             ETP_CMN     - Common data reported in all ETP records
516             ETP1        - Transtional (Y), Part of Prev Term (Y) ETP Record
517             ETP2        - Transtional (Y), Part of Prev Term (N) ETP Record
518             ETP3        - Transtional (N), Part of Prev Term (Y) ETP Record
519             ETP4        - Transtional (N), Part of Prev Term (N) ETP Record
520             ETP_CMN_BAL - ETP Balances - not used anymore now
521             AMEND       - Amend PS Flag Items
522             CMN         - Rest of the Items (Default Value returned)
523   --------------------------------------------------------------------
524 */
525 
526 FUNCTION check_user_entity_type(p_user_entity_name IN ff_user_entities.user_entity_name%TYPE)
527 RETURN VARCHAR2
528 IS
529 
530 
531 l_return_value  VARCHAR2(20);
532 l_procedure     VARCHAR2(80);
533 
534 l_entity_id     ff_user_entities.user_entity_id%TYPE;
535 l_found         BOOLEAN;
536 
537 BEGIN
538 
539 g_debug := hr_utility.debug_enabled;
540 
541 IF g_debug
542 THEN
543         l_procedure     := g_package||'.check_user_entity_type';
544         hr_utility.set_location('Entering Procedure     '||l_procedure,2500);
545         hr_utility.set_location('p_user_entity_name     '||p_user_entity_name,2510);
546 END IF;
547 
548 IF p_user_entity_name IN ('X_PAYG_PAYMENT_SUMMARY_TYPE','X_PAYMENT_SUMMARY_TYPE','X_ETP1_PAYMENT_SUMMARY_TYPE'
549                           ,'X_ETP2_PAYMENT_SUMMARY_TYPE','X_ETP3_PAYMENT_SUMMARY_TYPE','X_ETP4_PAYMENT_SUMMARY_TYPE')
550 THEN
551         l_return_value  := 'AMEND';
552 
553 ELSIF p_user_entity_name IN ('X_LUMP_SUM_C_PAYMENTS_ASG_YTD','X_LUMP_SUM_C_DEDUCTIONS_ASG_YTD',
554                              'X_INVALIDITY_PAYMENTS_ASG_YTD')
555 THEN
556         l_return_value  := 'ETP_CMN_BAL';
557 ELSE
558 
559        /* ETP Items can have values
560                    1. ETP1 (YY)
561                    2. ETP2 (YN)
562                    3. ETP3 (NY)
563                    4. ETP4 (NN)
564                    5. ETP_CMN   (Rest of the Common Items)
565         */
566 
567         l_found         := FALSE;
568         IF (l_found = FALSE AND g_payg_db_items.COUNT > 0)
569         THEN
570                 FOR i IN g_payg_db_items.FIRST..g_payg_db_items.LAST
571                 LOOP
572                         IF (g_payg_db_items(i) = p_user_entity_name)
573                         THEN
574                                 l_found         := TRUE;
575                                 l_return_value  := 'PAYG';
576                         END IF;
577                 END LOOP;
578         END IF;
579 
580         IF (l_found = FALSE AND g_etp_cmn_db_items.COUNT > 0)
581         THEN
582                 FOR i IN g_etp_cmn_db_items.FIRST..g_etp_cmn_db_items.LAST
583                 LOOP
584                         IF (g_etp_cmn_db_items(i) = p_user_entity_name)
585                         THEN
586                                 l_found         := TRUE;
587                                 l_return_value  := 'ETP_CMN';
588                         END IF;
589                 END LOOP;
590         END IF;
591 
592         IF (l_found = FALSE AND g_etp1_db_items.COUNT > 0)
593         THEN
594                 FOR i IN g_etp1_db_items.FIRST..g_etp1_db_items.LAST
595                 LOOP
596                         IF (g_etp1_db_items(i) = p_user_entity_name)
597                         THEN
598                                 l_found         := TRUE;
599                                 l_return_value  := 'ETP1';
600                         END IF;
601                 END LOOP;
602         END IF;
603 
604         IF (l_found = FALSE AND g_etp2_db_items.COUNT > 0)
605         THEN
606                 FOR i IN g_etp2_db_items.FIRST..g_etp2_db_items.LAST
607                 LOOP
608                         IF (g_etp2_db_items(i) = p_user_entity_name)
609                         THEN
610                                 l_found         := TRUE;
611                                 l_return_value  := 'ETP2';
612                         END IF;
613                 END LOOP;
614         END IF;
615 
616 
617         IF (l_found = FALSE AND g_etp3_db_items.COUNT > 0)
618         THEN
619                 FOR i IN g_etp3_db_items.FIRST..g_etp3_db_items.LAST
620                 LOOP
621                         IF (g_etp3_db_items(i) = p_user_entity_name)
622                         THEN
623                                 l_found         := TRUE;
624                                 l_return_value  := 'ETP3';
625                         END IF;
626                 END LOOP;
627         END IF;
628 
629         IF (l_found = FALSE AND g_etp4_db_items.COUNT > 0)
630         THEN
631                 FOR i IN g_etp4_db_items.FIRST..g_etp4_db_items.LAST
632                 LOOP
633                         IF (g_etp4_db_items(i) = p_user_entity_name)
634                         THEN
635                                 l_found         := TRUE;
636                                 l_return_value  := 'ETP4';
637                         END IF;
638                 END LOOP;
639         END IF;
640 
641         l_return_value := NVL(l_return_value,'CMN');
642 
643 END IF;
644 
645         IF g_debug THEN
646                 hr_utility.set_location('Return Value           '||l_return_value,2520);
647                 hr_utility.set_location('Leaving Procedure      '||l_procedure,2530);
648         END IF;
649 
650         RETURN NVL(l_return_value,'CMN');
651 
652 END check_user_entity_type;
653 
654 
655 /*
656 --------------------------------------------------------------------
657 Name  : compare_user_entity_value
658 Type  : Function
659 Access: Private
660 Description:This procedure takes a User entity name and two values
661             and compares the same.
662             The following values are returned,
663                     Y - Value Matches
664                     N - Values Don't Match
665 --------------------------------------------------------------------
666 */
667 
668 FUNCTION compare_user_entity_value
669         (p_user_entity_name IN ff_user_entities.user_entity_name%TYPE
670         ,p_value1           IN ff_archive_items.value%TYPE
671         ,p_value2           IN ff_archive_items.value%TYPE
672         ,p_data_type         IN ff_database_items.data_type%TYPE)
673 RETURN VARCHAR2
674 IS
675 
676 l_procedure     VARCHAR2(80);
677 l_return_flag   VARCHAR2(5);
678 
679 BEGIN
680 
681 IF g_debug
682 THEN
683         l_procedure     := g_package||'.compare_user_entity_value';
684         hr_utility.set_location('Entering Function      '||l_procedure,2600);
685         hr_utility.set_location('p_user_entity_name     '||p_user_entity_name,2610);
686         hr_utility.set_location('p_value1               '||p_value1,2620);
687         hr_utility.set_location('p_value2               '||p_value2,2620);
688         hr_utility.set_location('p_data_type            '||p_data_type,2620);
689 END IF;
690 
691 l_return_flag   := 'Y'; /* Default - Values Match */
692 
693         IF p_data_type  = 'N'
694         THEN
695                 IF trunc(to_number(p_value1)) <> trunc(to_number(p_value2))
696                 THEN
697                         l_return_flag   := 'N';
698                 END IF;
699         ELSIF p_data_type  = 'D'
700         THEN
701                 IF fnd_date.canonical_to_date(p_value1) <> fnd_date.canonical_to_date(p_value2)
702                 THEN
703                         l_return_flag   := 'N';
704                 END IF;
705         ELSE
706                 IF trim(p_value1) <> trim(p_value2)
707                 THEN
708                         l_return_flag   := 'N';
709                 END IF;
710         END IF;
711 
712 IF g_debug
713 THEN
714         hr_utility.set_location('l_return_flag          '||l_return_flag,2640);
715         hr_utility.set_location('Leaving Function       '||l_procedure,2650);
716 END IF;
717 
718 RETURN l_return_flag;
719 
720 END compare_user_entity_value;
721 
722 
723 /*
724 --------------------------------------------------------------------
725 Name  : find_new_missing_items
726 Type  : Procedure
727 Access: Private
728 Description:This procedure is called when the count of items
729             for old and new archive do not match.
730             This Procedure identifies the missing item from New
731             Archive and sets the appropriate Amend PS Flag
732   --------------------------------------------------------------------
733 */
734 
735 PROCEDURE find_new_missing_items
736         (p_archive_action_id    IN pay_assignment_actions.assignment_action_id%TYPE
737         ,p_old_count            IN NUMBER
738         ,p_all_tab_new          IN archive_db_tab
739         ,p_new_count            IN NUMBER)
740 IS
741 
742 CURSOR get_archived_user_entities
743         (c_archive_action_id pay_assignment_actions.assignment_action_id%TYPE)
744 IS
745 SELECT  fue.user_entity_name
746 FROM    ff_archive_items fae,
747         ff_user_entities fue
748 WHERE  fae.context1 = c_archive_action_id
749 AND   fue.user_entity_id = fae.user_entity_id
750 AND   (
751         fue.user_entity_name    LIKE 'X_ALLOWANCE%'
752         OR fue.user_entity_name LIKE 'X_EMPLOYEE%DATE%'
753         OR fue.user_entity_name LIKE 'X_UNION%'
754         OR fue.user_entity_name LIKE 'X_%ASG_YTD'
755         OR  fue.user_entity_name IN( 'X_SORT_EMPLOYEE_TYPE','X_EMPLOYEE_TAX_FILE_NUMBER','X_ETP_TAX_FILE_NUMBER'
756                                 ,'X_ETP_DED_TRANS_PPTERM_ASG_YTD','X_INV_PAY_TRANS_PPTERM_ASG_YTD'
757                                 ,'X_POST_JUN_83_TAXED_TRANS_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_TRANS_PPTERM_ASG_YTD'
758                                 ,'X_ETP_DED_TRANS_NOT_PPTERM_ASG_YTD','X_INV_PAY_TRANS_NOT_PPTERM_ASG_YTD'
759                                 ,'X_POST_JUN_83_TAXED_TRANS_NOT_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_TRANS_NOT_PPTERM_ASG_YTD'
760                                 ,'X_ETP_DED_NOT_TRANS_PPTERM_ASG_YTD','X_INV_PAY_NOT_TRANS_PPTERM_ASG_YTD'
761                                 ,'X_POST_JUN_83_TAXED_NOT_TRANS_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_NOT_TRANS_PPTERM_ASG_YTD'
762                                 ,'X_ETP_DED_NOT_TRANS_NOT_PPTERM_ASG_YTD','X_INV_PAY_NOT_TRANS_NOT_PPTERM_ASG_YTD'
763                                 ,'X_POST_JUN_83_TAXED_NOT_TRANS_NOT_PPTERM_ASG_YTD','X_PRE_JUL_83_COMP_NOT_TRANS_NOT_PPTERM_ASG_YTD' )
764         OR fue.user_entity_name LIKE 'X_ETP%DATE%'
765         OR fue.user_entity_name LIKE 'X_DAYS%'
766         )
767 AND     fue.user_entity_name  NOT IN ('X_PAYMENT_SUMMARY_TYPE','X_PAYG_PAYMENT_SUMMARY_TYPE','X_ETP1_PAYMENT_SUMMARY_TYPE'
768                                  ,'X_ETP2_PAYMENT_SUMMARY_TYPE','X_ETP3_PAYMENT_SUMMARY_TYPE','X_ETP4_PAYMENT_SUMMARY_TYPE'
769                                  ,'X_LUMP_SUM_C_PAYMENTS_ASG_YTD','X_LUMP_SUM_C_DEDUCTIONS_ASG_YTD','X_INVALIDITY_PAYMENTS_ASG_YTD'
770                                  ,'X_PRE_JUL_83_COMPONENT_ASG_YTD','X_POST_JUN_83_UNTAXED_ASG_YTD','X_POST_JUN_83_TAXED_ASG_YTD')
771 AND     fue.legislation_code     = 'AU';
772 
773 l_procedure     VARCHAR2(100);
774 l_diff_count    NUMBER;
775 l_found         BOOLEAN;
776 l_item_type     VARCHAR2(20);
777 
778 
779 BEGIN
780 g_debug := hr_utility.debug_enabled;
781 
782 IF g_debug
783 THEN
784         l_procedure     := g_package||'.find_new_missing_items';
785         hr_utility.set_location('Entering Procedure     '||l_procedure,3500);
786 END IF;
787 
788 l_diff_count    := p_old_count - p_new_count;
789 
790 /*    Logic Used
791       (A) Fetch all items from Original Archive for Standard and ETP pages
792       (B) If this item is missing in New Archive PL/SQL table, set the Amended PS Flag accordingly
793       (C) We will look only for items of type PAYG,ETP_CMN,ETP1, ETP2,ETP3,ETP4 - Relevant Numeric and Date Types
794       (D) CMN - we are not interested if these items are missing
795       (E) ETP_CMN_BAL and AMEND items are archived for all Employees - so will be ignored
796 */
797 
798 FOR csr_rec IN get_archived_user_entities(p_archive_action_id)
799 LOOP
800         IF l_diff_count = 0
801         THEN
802                 exit;
803         END IF;
804 
805         l_found := FALSE;
806         IF (p_all_tab_new.COUNT > 0)
807         THEN
808                 FOR i IN p_all_tab_new.FIRST..p_all_tab_new.LAST
809                 LOOP
810                         IF p_all_tab_new(i).db_item_name = csr_rec.user_entity_name
811                         THEN
812                                 l_found := TRUE;
813                                 exit;
814                         END IF;
815                 END LOOP;
816         END IF;
817 
818         IF (l_found = FALSE)
819         THEN
820                 /* DB Item missing in New Archive.
821                    Set the Amend Flags */
822                 IF  g_debug
823                 THEN
824                         hr_utility.set_location('Missing Item Found     '||csr_rec.user_entity_name,3510);
825                 END IF;
826                 l_item_type := check_user_entity_type(csr_rec.user_entity_name);
827                 IF l_item_type = 'PAYG'
828                 THEN
829                        l_amend_types_new(1).db_item_value := 'A';
830                 ELSIF l_item_type = 'ETP_CMN'
831                 THEN
832                        l_amend_types_new(2).db_item_value := 'A';
833                        l_amend_types_new(3).db_item_value := 'A';
834                        l_amend_types_new(4).db_item_value := 'A';
835                        l_amend_types_new(5).db_item_value := 'A';
836                 ELSIF l_item_type = 'ETP1'
837                 THEN
838                        l_amend_types_new(2).db_item_value := 'A';
839                 ELSIF l_item_type = 'ETP2'
840                 THEN
841                        l_amend_types_new(3).db_item_value := 'A';
842                 ELSIF l_item_type = 'ETP3'
843                 THEN
844                        l_amend_types_new(4).db_item_value := 'A';
845 
846                 ELSIF l_item_type = 'ETP4'
847                 THEN
848                        l_amend_types_new(5).db_item_value := 'A';
849                 END IF;
850                 l_diff_count := l_diff_count - 1;
851         END IF;
852 END LOOP;
853 
854 IF g_debug
855 THEN
856         hr_utility.set_location('Payment Summary Flags  ',3520);
857     IF (l_amend_types_new.COUNT > 0 )
858     THEN
859         FOR i IN l_amend_types_new.FIRST..l_amend_types_new.LAST
860         LOOP
861                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_amend_types_new(i).db_item_name,1,50),50,' ')||rpad(l_amend_types_new(i).db_item_value,30,' '),3530);
862         END LOOP;
863         hr_utility.set_location('Leaving Procedure     '||l_procedure,3540);
864     END IF;
865 END IF;
866 
867 END find_new_missing_items;
868 
869 
870 
871 /*
872 --------------------------------------------------------------------
873 Name  : slot_items_build_archive_list
874 Type  : Procedure
875 Access: Private
876 Description:This private procedure does the actual comparison and
877             slotting in multiple PL/SQL tables - one for each datafile type.
878             It takes each item in Archive Pl/SQL table - finds the
879             data file record, compares with the Original Archive value
880             and sets the Amended PS Flag PL/sql table accordingly.
881   --------------------------------------------------------------------
882 */
883 
884 PROCEDURE  slot_items_build_archive_list
885         (p_archive_action_id    IN pay_assignment_actions.assignment_action_id%TYPE
886         ,p_all_tab_new          IN archive_db_tab)
887 IS
888 
889 CURSOR csr_get_value(c_user_entity_name VARCHAR2,
890                      c_assignment_action_id pay_assignment_actions.assignment_action_id%TYPE)
891 IS
892 SELECT  fai.value
893        ,fdi.data_type
894 FROM    ff_archive_items fai,
895         ff_user_entities fue,
896         ff_database_items fdi
897 WHERE fai.context1         = c_assignment_action_id
898 AND   fai.user_entity_id   = fue.user_entity_id
899 AND   fdi.user_entity_id   = fue.user_entity_id
900 AND   fue.user_entity_name = c_user_entity_name;
901 
902 i_index NUMBER;
903 l_procedure     VARCHAR2(80);
904 
905 l_item_type     VARCHAR2(20);
906 l_old_value     ff_archive_items.value%TYPE;
907 l_data_type     ff_database_items.data_type%TYPE;
908 
909 l_compare_flag  VARCHAR2(2);
910 l_etp_cmn_flag  VARCHAR2(2);
911 
912 
913 BEGIN
914 
915 g_debug := hr_utility.debug_enabled;
916 
917 IF g_debug
918 THEN
919         l_procedure     := g_package||'.slot_items_build_archive_list';
920         hr_utility.set_location('Entering Procedure     '||l_procedure,3700);
921 END IF;
922 
923 
924 l_etp_cmn_flag := 'O'; /* Initialize ETP Common Change Flag to O */
925 
926 IF ( p_all_tab_new.COUNT > 0 )
927 THEN
928     FOR i IN p_all_tab_new.FIRST..p_all_tab_new.LAST
929     LOOP
930 
931     l_compare_flag := 'Y';
932 
933     l_item_type     := check_user_entity_type(p_all_tab_new(i).db_item_name);
934 
935     IF l_item_type ='CMN'
936     THEN
937             /* Only Old Values */
938             OPEN csr_get_value(p_all_tab_new(i).db_item_name
939                               ,p_archive_action_id);
940             FETCH csr_get_value INTO l_old_value,l_data_type;
941             IF   csr_get_value%NOTFOUND
942             THEN
943                     l_old_value     := NULL;
944                     l_data_type     := NULL;
945             END IF;
946             CLOSE csr_get_value;
947 
948             i_index := NVL(l_cmn_tab_new.LAST,-1) + 1;
949 
950             l_cmn_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
951             l_cmn_tab_new(i_index).db_item_value  := l_old_value;
952 
953     ELSIF l_item_type ='PAYG'
954     THEN
955             IF l_amend_types_new(1).db_item_value  <> 'A'
956             THEN
957 
958                     OPEN csr_get_value(p_all_tab_new(i).db_item_name
959                                       ,p_archive_action_id);
960                     FETCH csr_get_value INTO l_old_value,l_data_type;
961                     IF   csr_get_value%NOTFOUND
962                     THEN
963                             l_amend_types_new(1).db_item_value := 'A';
964                             l_old_value     := NULL;
965                             l_data_type     := NULL;
966                     ELSE
967                             /* Compare Old and New Values
968                                Set the Amended Payment Summary Flag accordingly
969                             */
970 
971                             l_compare_flag := compare_user_entity_value
972                                                     (p_all_tab_new(i).db_item_name
973                                                     ,p_all_tab_new(i).db_item_value
974                                                     ,l_old_value
975                                                     ,l_data_type);
976 
977                             IF l_compare_flag = 'N'
978                             THEN
979                                     l_amend_types_new(1).db_item_value := 'A';
980                             END IF;
981                     END IF;
982                     CLOSE csr_get_value ;
983 
984                     i_index := NVL(l_payg_tab_new.LAST,-1) + 1;
985 
986                     l_payg_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
987                     l_payg_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
988 
989             ELSE
990                     /* Amended Payment Summary - No need to compare
991                     */
992 
993                     i_index := NVL(l_payg_tab_new.LAST,-1) + 1;
994 
995                     l_payg_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
996                     l_payg_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
997 
998             END IF;
999     ELSIF l_item_type IN ('ETP_CMN','ETP_CMN_BAL')
1000     THEN
1001             IF ( l_item_type = 'ETP_CMN' AND l_etp_cmn_flag  <> 'A')
1002             THEN
1003 
1004                     OPEN csr_get_value(p_all_tab_new(i).db_item_name
1005                                       ,p_archive_action_id);
1006                     FETCH csr_get_value INTO l_old_value,l_data_type;
1007                     IF   csr_get_value%NOTFOUND
1008                     THEN
1009                             l_etp_cmn_flag  := 'A';
1010                             l_amend_types_new(2).db_item_value := 'A';
1011                             l_amend_types_new(3).db_item_value := 'A';
1012                             l_amend_types_new(4).db_item_value := 'A';
1013                             l_amend_types_new(5).db_item_value := 'A';
1014                             l_old_value     := NULL;
1015                             l_data_type     := NULL;
1016                     ELSE
1017                             /* Compare Old and New Values
1018                                Set the Amended Payment Summary Flag accordingly
1019                             */
1020 
1021                             l_compare_flag := compare_user_entity_value
1022                                                     (p_all_tab_new(i).db_item_name
1023                                                     ,p_all_tab_new(i).db_item_value
1024                                                     ,l_old_value
1025                                                     ,l_data_type);
1026 
1027                             IF l_compare_flag = 'N'
1028                             THEN
1029                                 l_etp_cmn_flag  := 'A';
1030                                 l_amend_types_new(2).db_item_value := 'A';
1031                                 l_amend_types_new(3).db_item_value := 'A';
1032                                 l_amend_types_new(4).db_item_value := 'A';
1033                                 l_amend_types_new(5).db_item_value := 'A';
1034                             END IF;
1035                     END IF;
1036                     CLOSE csr_get_value ;
1037 
1038                     i_index := NVL(l_etp_cmn_tab_new.LAST,-1) + 1;
1039 
1040                     l_etp_cmn_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1041                     l_etp_cmn_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1042 
1043             ELSE
1044                     /* Amended Payment Summary - No need to compare
1045                        ETP Balances - will be adjusted in ETP1-4 Sections. Always copy the new Value
1046                     */
1047 
1048                     i_index := NVL(l_etp_cmn_tab_new.LAST,-1) + 1;
1049 
1050                     l_etp_cmn_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1051                     l_etp_cmn_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1052 
1053             END IF;
1054     ELSIF l_item_type ='ETP1'
1055     THEN
1056             IF l_amend_types_new(2).db_item_value  <> 'A'
1057             THEN
1058 
1059                     OPEN csr_get_value(p_all_tab_new(i).db_item_name
1060                                       ,p_archive_action_id);
1061                     FETCH csr_get_value INTO l_old_value,l_data_type;
1062                     IF   csr_get_value%NOTFOUND
1063                     THEN
1064                             l_amend_types_new(2).db_item_value := 'A';
1065                             l_old_value     := NULL;
1066                             l_data_type     := NULL;
1067                     ELSE
1068                             /* Compare Old and New Values
1069                                Set the Amended Payment Summary Flag accordingly
1070                             */
1071 
1072                             l_compare_flag := compare_user_entity_value
1073                                                     (p_all_tab_new(i).db_item_name
1074                                                     ,p_all_tab_new(i).db_item_value
1075                                                     ,l_old_value
1076                                                     ,l_data_type);
1077 
1078                             IF l_compare_flag = 'N'
1079                             THEN
1080                             l_amend_types_new(2).db_item_value := 'A';
1081                             END IF;
1082                     END IF;
1083                     CLOSE csr_get_value ;
1084 
1085                     i_index := NVL(l_etp_1_tab_new.LAST,-1) + 1;
1086 
1087                     l_etp_1_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1088                     l_etp_1_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1089 
1090             ELSE
1091                     /* Amended Payment Summary - No need to compare
1092                     */
1093 
1094                     i_index := NVL(l_etp_1_tab_new.LAST,-1) + 1;
1095 
1096                     l_etp_1_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1097                     l_etp_1_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1098             END IF;
1099 
1100     ELSIF l_item_type ='ETP2'
1101     THEN
1102             IF l_amend_types_new(3).db_item_value  <> 'A'
1103             THEN
1104 
1105                     OPEN csr_get_value(p_all_tab_new(i).db_item_name
1106                                       ,p_archive_action_id);
1107                     FETCH csr_get_value INTO l_old_value,l_data_type;
1108                     IF   csr_get_value%NOTFOUND
1109                     THEN
1110                             l_amend_types_new(3).db_item_value := 'A';
1111                             l_old_value     := NULL;
1112                             l_data_type     := NULL;
1113                     ELSE
1114                             /* Compare Old and New Values
1115                                Set the Amended Payment Summary Flag accordingly
1116                             */
1117 
1118                             l_compare_flag := compare_user_entity_value
1119                                                     (p_all_tab_new(i).db_item_name
1120                                                     ,p_all_tab_new(i).db_item_value
1121                                                     ,l_old_value
1122                                                     ,l_data_type);
1123 
1124                             IF l_compare_flag = 'N'
1125                             THEN
1126                             l_amend_types_new(3).db_item_value := 'A';
1127                             END IF;
1128                     END IF;
1129                     CLOSE csr_get_value ;
1130 
1131                     i_index := NVL(l_etp_2_tab_new.LAST,-1) + 1;
1132 
1133                     l_etp_2_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1134                     l_etp_2_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1135 
1136             ELSE
1137                     /* Amended Payment Summary - No need to compare
1138                     */
1139 
1140                     i_index := NVL(l_etp_2_tab_new.LAST,-1) + 1;
1141 
1142                     l_etp_2_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1143                     l_etp_2_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1144             END IF;
1145 
1146     ELSIF l_item_type ='ETP3'
1147     THEN
1148             IF l_amend_types_new(4).db_item_value  <> 'A'
1149             THEN
1150 
1151                     OPEN csr_get_value(p_all_tab_new(i).db_item_name
1152                                       ,p_archive_action_id);
1153                     FETCH csr_get_value INTO l_old_value,l_data_type;
1154                     IF   csr_get_value%NOTFOUND
1155                     THEN
1156                             l_amend_types_new(4).db_item_value := 'A';
1157                             l_old_value     := NULL;
1158                             l_data_type     := NULL;
1159                     ELSE
1160                             /* Compare Old and New Values
1161                                Set the Amended Payment Summary Flag accordingly
1162                             */
1163 
1164                             l_compare_flag := compare_user_entity_value
1165                                                     (p_all_tab_new(i).db_item_name
1166                                                     ,p_all_tab_new(i).db_item_value
1167                                                     ,l_old_value
1168                                                     ,l_data_type);
1169 
1170                             IF l_compare_flag = 'N'
1171                             THEN
1172                             l_amend_types_new(4).db_item_value := 'A';
1173                             END IF;
1174                     END IF;
1175                     CLOSE csr_get_value ;
1176 
1177                     i_index := NVL(l_etp_3_tab_new.LAST,-1) + 1;
1178 
1179                     l_etp_3_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1180                     l_etp_3_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1181 
1182             ELSE
1183                     /* Amended Payment Summary - No need to compare
1184                     */
1185 
1186                     i_index := NVL(l_etp_3_tab_new.LAST,-1) + 1;
1187 
1188                     l_etp_3_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1189                     l_etp_3_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1190             END IF;
1191 
1192     ELSIF l_item_type ='ETP4'
1193     THEN
1194             IF l_amend_types_new(5).db_item_value  <> 'A'
1195             THEN
1196 
1197                     OPEN csr_get_value(p_all_tab_new(i).db_item_name
1198                                       ,p_archive_action_id);
1199                     FETCH csr_get_value INTO l_old_value,l_data_type;
1200                     IF   csr_get_value%NOTFOUND
1201                     THEN
1202                             l_amend_types_new(5).db_item_value := 'A';
1203                             l_old_value     := NULL;
1204                             l_data_type     := NULL;
1205                     ELSE
1206                             /* Compare Old and New Values
1207                                Set the Amended Payment Summary Flag accordingly
1208                             */
1209 
1210                             l_compare_flag := compare_user_entity_value
1211                                                     (p_all_tab_new(i).db_item_name
1212                                                     ,p_all_tab_new(i).db_item_value
1213                                                     ,l_old_value
1214                                                     ,l_data_type);
1215 
1216                             IF l_compare_flag = 'N'
1217                             THEN
1218                             l_amend_types_new(5).db_item_value := 'A';
1219                             END IF;
1220                     END IF;
1221                     CLOSE csr_get_value ;
1222 
1223                     i_index := NVL(l_etp_4_tab_new.LAST,-1) + 1;
1224 
1225                     l_etp_4_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1226                     l_etp_4_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1227 
1228             ELSE
1229                     /* Amended Payment Summary - No need to compare
1230                     */
1231                     i_index := NVL(l_etp_4_tab_new.LAST,-1) + 1;
1232 
1233                     l_etp_4_tab_new(i_index).db_item_name   := p_all_tab_new(i).db_item_name;
1234                     l_etp_4_tab_new(i_index).db_item_value  := p_all_tab_new(i).db_item_value;
1235             END IF;
1236     END IF;
1237 
1238     END LOOP;
1239 END IF;
1240 
1241 /* Reset the Value of DB Item X_PAYMENT_SUMMARY_TYPE if No individual record has changed
1242 */
1243 
1244 IF   ( l_amend_types_new(1).db_item_value ='O'
1245         AND l_amend_types_new(2).db_item_value ='O'
1246         AND l_amend_types_new(3).db_item_value ='O'
1247         AND l_amend_types_new(4).db_item_value ='O'
1248         AND l_amend_types_new(5).db_item_value ='O')
1249 THEN
1250         l_amend_types_new(0).db_item_value :='O';
1251 END IF;
1252 
1253 IF g_debug
1254 THEN
1255     IF ( l_cmn_tab_new.COUNT > 0)
1256     THEN
1257         hr_utility.set_location('              COMMON ITEMS                            ',3710);
1258 
1259         FOR i IN l_cmn_tab_new.FIRST..l_cmn_tab_new.LAST
1260         LOOP
1261                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_cmn_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_cmn_tab_new(i).db_item_value,30,' '),3710);
1262         END LOOP;
1263     END IF;
1264 
1265     IF ( l_payg_tab_new.COUNT > 0)
1266     THEN
1267         hr_utility.set_location('              STANDARD ITEMS                            ',3720);
1268 
1269         FOR i IN l_payg_tab_new.FIRST..l_payg_tab_new.LAST
1270         LOOP
1271                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_payg_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_payg_tab_new(i).db_item_value,30,' '),3720);
1272         END LOOP;
1273     END IF;
1274 
1275 
1276     IF ( l_etp_cmn_tab_new.COUNT > 0)
1277     THEN
1278         hr_utility.set_location('              ETP COMMON ITEMS                            ',3730);
1279 
1280         FOR i IN l_etp_cmn_tab_new.FIRST..l_etp_cmn_tab_new.LAST
1281         LOOP
1282                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_etp_cmn_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_etp_cmn_tab_new(i).db_item_value,30,' '),3730);
1283         END LOOP;
1284     END IF;
1285 
1286     IF (l_etp_1_tab_new.COUNT > 0)
1287     THEN
1288         hr_utility.set_location('              ETP 1 ITEMS                            ',3740);
1289 
1290         FOR i IN l_etp_1_tab_new.FIRST..l_etp_1_tab_new.LAST
1291         LOOP
1292                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_etp_1_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_etp_1_tab_new(i).db_item_value,30,' '),3740);
1293         END LOOP;
1294     END IF;
1295 
1296     IF (l_etp_2_tab_new.COUNT > 0)
1297     THEN
1298         hr_utility.set_location('              ETP 2 ITEMS                            ',3750);
1299 
1300         FOR i IN l_etp_2_tab_new.FIRST..l_etp_2_tab_new.LAST
1301         LOOP
1302                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_etp_2_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_etp_2_tab_new(i).db_item_value,30,' '),3750);
1303         END LOOP;
1304     END IF;
1305 
1306     IF (l_etp_3_tab_new.COUNT > 0)
1307     THEN
1308         hr_utility.set_location('              ETP 3 ITEMS                            ',3760);
1309 
1310         FOR i IN l_etp_3_tab_new.FIRST..l_etp_3_tab_new.LAST
1311         LOOP
1312                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_etp_3_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_etp_3_tab_new(i).db_item_value,30,' '),3760);
1313         END LOOP;
1314     END IF;
1315 
1316     IF ( l_etp_4_tab_new.COUNT > 0)
1317     THEN
1318         hr_utility.set_location('              ETP 4 ITEMS                            ',3770);
1319 
1320         FOR i IN l_etp_4_tab_new.FIRST..l_etp_4_tab_new.LAST
1321         LOOP
1322                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_etp_4_tab_new(i).db_item_name,1,50),50,' ')||rpad(l_etp_4_tab_new(i).db_item_value,30,' '),3770);
1323         END LOOP;
1324     END IF;
1325 
1326 
1327     IF (l_amend_types_new.COUNT > 0)
1328     THEN
1329         hr_utility.set_location('              AMEND TYPE ITEMS                            ',3780);
1330 
1331         FOR i IN l_amend_types_new.FIRST..l_amend_types_new.LAST
1332         LOOP
1333                hr_utility.set_location(rpad(i,5,' ')||rpad(substr(l_amend_types_new(i).db_item_name,1,50),50,' ')||rpad(l_amend_types_new(i).db_item_value,30,' '),3780);
1334         END LOOP;
1335     END IF;
1336 
1337         hr_utility.set_location('Leaving Procedure     '||l_procedure,3800);
1338 END IF;
1339 
1340 
1341 END slot_items_build_archive_list;
1342 
1343 
1344 /*
1345 --------------------------------------------------------------------
1346 Name  : archive_db_items_tab
1347 Type  : Procedure
1348 Access: Private
1349 Description:This procedure archives the contents of the
1350             user entity value PL/SQL table
1351 --------------------------------------------------------------------
1352 */
1353 
1354 PROCEDURE archive_db_items_tab(
1355          p_assignment_action_id  IN pay_assignment_actions.assignment_action_id%TYPE
1356         ,p_db_item_tab           IN archive_db_tab
1357         )
1358 IS
1359 
1360 CURSOR  get_user_entity_id(c_user_entity_name IN VARCHAR2)
1361 IS
1362 SELECT fue.user_entity_id
1363       ,dbi.data_type
1364 FROM  ff_user_entities  fue
1365      ,ff_database_items dbi
1366 WHERE user_entity_name     = c_user_entity_name
1367 AND   fue.user_entity_id   = dbi.user_entity_id
1368 AND   fue.legislation_code = 'AU';
1369 
1370 l_procedure             VARCHAR2(80);
1371 l_user_entity_id        ff_user_entities.user_entity_id%TYPE;
1372 l_archive_item_id       ff_archive_items.archive_item_id%TYPE;
1373 l_object_version_number ff_archive_items.object_version_number%type;
1374 l_some_warning          boolean;
1375 
1376 e_ue_missing            EXCEPTION;
1377 
1378 BEGIN
1379 
1380 g_debug := hr_utility.debug_enabled;
1381 IF g_debug
1382 THEN
1383         l_procedure     := g_package||'.archive_db_items_tab';
1384         hr_utility.set_location('Entering Procedure     '||l_procedure,4200);
1385 END IF;
1386 
1387 IF (p_db_item_tab.COUNT > 0)
1388 THEN
1389         FOR i IN p_db_item_tab.FIRST..p_db_item_tab.LAST
1390         LOOP
1391                 IF g_debug
1392                 THEN
1393                         hr_utility.set_location('p_db_item_tab.name     '||p_db_item_tab(i).db_item_name,4210);
1394                         hr_utility.set_location('p_db_item_tab.value    '||p_db_item_tab(i).db_item_value,4220);
1395                 END IF;
1396 
1397                 FOR csr_ue_rec IN get_user_entity_id(p_db_item_tab(i).db_item_name)
1398                 LOOP
1399                         l_archive_item_id       := NULL;
1400                         l_object_version_number := NULL;
1401                         l_some_warning          := NULL;
1402 
1403                         ff_archive_api.create_archive_item
1404                          (p_validate              => false
1405                          ,p_archive_item_id       => l_archive_item_id
1406                          ,p_user_entity_id        => csr_ue_rec.user_entity_id
1407                          ,p_archive_value         => p_db_item_tab(i).db_item_value
1408                          ,p_archive_type          => 'AAP'
1409                          ,p_action_id             => p_assignment_action_id
1410                          ,p_legislation_code      => 'AU'
1411                          ,p_object_version_number => l_object_version_number
1412                          ,p_context_name1         => 'ASSIGNMENT_ACTION_ID'
1413                          ,p_context1              => p_assignment_action_id
1414                          ,p_some_warning          => l_some_warning);
1415 
1416                         IF g_debug
1417                         THEN
1418                                 hr_utility.set_location('l_archive_item_id      '||l_archive_item_id,4230);
1419                         END IF;
1420                 END LOOP;
1421 
1422         END LOOP;
1423 END IF;
1424 IF g_debug
1425 THEN
1426         hr_utility.set_location('Leaving Procedure      '||l_procedure,4250);
1427 END IF;
1428 
1429 END archive_db_items_tab;
1430 
1431 
1432 /*
1433 --------------------------------------------------------------------
1434 Name  : modify_and_archive_code
1435 Type  : Procedure
1436 Access: Public
1437 Description:This procedure is called from Archive code of Payment Summary
1438             with a PL/SQL table holding all DB items and values
1439             This procedure slots the DB items according to record
1440             in datafile and populates different PL/SQL tables.
1441             Data is archived in this procedure based on Amend PS
1442             flags.
1443   --------------------------------------------------------------------
1444 */
1445 PROCEDURE modify_and_archive_code
1446         (p_assignment_action_id  IN pay_assignment_actions.assignment_action_id%TYPE
1447         ,p_effective_date        IN DATE
1448         ,p_all_tab_new           IN archive_db_tab)
1449 IS
1450 
1451 l_procedure     VARCHAR2(80);
1452 
1453 CURSOR get_orig_archive_id
1454         (c_assignmenr_id pay_assignment_actions.assignment_id%TYPE
1455         ,c_fin_year      VARCHAR2
1456         ,c_tax_unit_id  pay_assignment_actions.tax_unit_id%TYPE
1457         )
1458 IS
1459 SELECT selfplock.locked_action_id
1460 FROM     pay_assignment_actions mpaa
1461         ,pay_payroll_actions    mppa
1462         ,pay_action_interlocks  mplock
1463         ,pay_action_interlocks  selfplock
1464 WHERE   mpaa.assignment_id      = c_assignmenr_id
1465 AND   mpaa.payroll_action_id    = mppa.payroll_action_id
1466 AND   mppa.report_type          = 'AU_PS_DATA_FILE'
1467 AND   mppa.report_qualifier     = 'AU'
1468 AND   mppa.report_category      = 'REPORT'
1469 AND   pay_core_utils.get_parameter('FINANCIAL_YEAR',mppa.legislative_parameters) = c_fin_year
1470 AND   pay_core_utils.get_parameter('REGISTERED_EMPLOYER',mppa.legislative_parameters) = c_tax_unit_id
1471 AND   mplock.locking_action_id  = mpaa.assignment_action_id
1472 AND   mplock.locked_action_id   = selfplock.locking_action_id;
1473 
1474 
1475 CURSOR c_action(c_assignment_action_id NUMBER) IS
1476 SELECT pay_core_utils.get_parameter('BUSINESS_GROUP_ID',ppa.legislative_parameters)
1477 ,      pay_core_utils.get_parameter('REGISTERED_EMPLOYER',ppa.legislative_parameters)
1478 ,      pay_core_utils.get_parameter('EMPLOYEE_TYPE',ppa.legislative_parameters)
1479 ,      ppa.payroll_action_id
1480 ,      paa.assignment_id
1481 ,      to_date('01-07-'|| substr(pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa.legislative_parameters),1,4),'DD-MM-YYYY')
1482 ,      to_date('30-06-'|| substr(pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa.legislative_parameters),6,4),'DD-MM-YYYY')
1483 ,      pay_core_utils.get_parameter('LST_YR_TERM',ppa.legislative_parameters)
1484 ,      pay_core_utils.get_parameter('FINANCIAL_YEAR',ppa.legislative_parameters)
1485 FROM   pay_assignment_actions     paa
1486 ,      pay_payroll_actions        ppa
1487 WHERE  paa.assignment_action_id   = c_assignment_action_id
1488 AND    ppa.payroll_action_id      = paa.payroll_action_id ;
1489 
1490 CURSOR get_context_id(c_context_name ff_contexts.context_name%TYPE)
1491 IS
1492 SELECT fc.context_id
1493 FROM   ff_contexts fc
1494 WHERE  fc.context_name = c_context_name;
1495 
1496 CURSOR get_archive_item_count(c_archive_action_id pay_assignment_actions.assignment_action_id%TYPE
1497                              ,c_context_id        ff_contexts.context_id%TYPE)
1498 IS
1499 SELECT COUNT(*)
1500 FROM    ff_archive_items fai,
1501         ff_user_entities fue,
1502         ff_archive_item_contexts faic
1503 WHERE fai.context1 = c_archive_action_id
1504 AND   fue.user_entity_id = fai.user_entity_id
1505 AND   fai.archive_item_id = faic.archive_item_id
1506 AND   faic.context_id = c_context_id
1507 AND   fue.user_entity_name NOT IN ('X_PAYMENT_SUMMARY_TYPE'
1508                                   ,'X_PAYG_PAYMENT_SUMMARY_TYPE'
1509                                   ,'X_ETP1_PAYMENT_SUMMARY_TYPE'
1510                                   ,'X_ETP2_PAYMENT_SUMMARY_TYPE'
1511                                   ,'X_ETP3_PAYMENT_SUMMARY_TYPE'
1512                                   ,'X_ETP4_PAYMENT_SUMMARY_TYPE');
1513 
1514 l_assignment_id               pay_assignment_actions.assignment_id%TYPE;
1515 l_business_group_id           pay_payroll_actions.business_group_id%TYPE ;
1516 l_registered_employer         hr_organization_units.organization_id%TYPE;
1517 l_payroll_action_id           pay_payroll_actions.payroll_action_id%TYPE ;
1518 l_year_start                  pay_payroll_Actions.effective_date%TYPE;
1519 l_year_end                    pay_payroll_actions.effective_date%TYPE;
1520 l_employee_type               per_all_people_f.current_Employee_Flag%TYPE;
1521 l_lst_yr_term                 varchar2(10);
1522 l_fin_year                    VARCHAR2(20);
1523 l_archive_action_id           pay_assignment_actions.assignment_action_id%TYPE;
1524 
1525 l_eit_value                   VARCHAR2(10);
1526 
1527 l_new_count                   NUMBER;
1528 l_old_count                   NUMBER;
1529 l_context_id                  ff_contexts.context_id%TYPE;
1530 
1531 BEGIN
1532 g_debug := hr_utility.debug_enabled;
1533 
1534 IF g_debug
1535 THEN
1536         l_procedure  := g_package||'.modify_and_archive_code';
1537         hr_utility.set_location('Entering Procedure  '||l_procedure, 3000);
1538 END IF;
1539 
1540 /* Print All the DB Items Values got from Archive */
1541 IF g_debug
1542 THEN
1543     IF (p_all_tab_new.COUNT > 0)
1544     THEN
1545         FOR i IN p_all_tab_new.FIRST..p_all_tab_new.LAST
1546         LOOP
1547             hr_utility.set_location(rpad(i,5,' ')||rpad(p_all_tab_new(i).db_item_name,50,' ')||rpad(p_all_tab_new(i).db_item_value,30,' '),3010);
1548         END LOOP;
1549     END IF;
1550 END IF;
1551 
1552 OPEN c_action(p_assignment_action_id);
1553 FETCH c_action INTO  l_business_group_id
1554                     ,l_registered_employer
1555                     ,l_employee_type
1556                     ,l_payroll_action_id
1557                     ,l_assignment_id
1558                     ,l_year_start
1559                     ,l_year_end
1560                     ,l_lst_yr_term
1561                     ,l_fin_year;
1562 CLOSE c_action;
1563 
1564 
1565 OPEN get_orig_archive_id(l_assignment_id
1566                         ,l_fin_year
1567                         ,l_registered_employer);
1568 FETCH get_orig_archive_id INTO l_archive_action_id;
1569 CLOSE get_orig_archive_id;
1570 
1571 IF g_debug
1572 THEN
1573     hr_utility.set_location('l_business_group_id    '||l_business_group_id,3020);
1574     hr_utility.set_location('l_registered_employer  '||l_registered_employer,3020);
1575     hr_utility.set_location('l_employee_type        '||l_employee_type,3020);
1576     hr_utility.set_location('l_payroll_action_id    '||l_payroll_action_id,3020);
1577     hr_utility.set_location('l_assignment_id        '||l_assignment_id,3020);
1578     hr_utility.set_location('l_year_start           '||l_year_start,3020);
1579     hr_utility.set_location('l_year_end             '||l_year_end,3020);
1580     hr_utility.set_location('l_lst_yr_term          '||l_lst_yr_term,3020);
1581     hr_utility.set_location('l_fin_year             '||l_fin_year,3020);
1582     hr_utility.set_location('l_archive_action_id    '||l_archive_action_id,3020);
1583 END IF;
1584 
1585 
1586 /* Now you have all the archive items - slot them according to Datafile record
1587    Initialize the PL/SQL tables to NULL
1588 */
1589 
1590 l_cmn_tab_new.DELETE;
1591 l_payg_tab_new.DELETE;
1592 l_etp_cmn_tab_new.DELETE;
1593 l_etp_1_tab_new.DELETE;
1594 l_etp_2_tab_new.DELETE;
1595 l_etp_3_tab_new.DELETE;
1596 l_etp_4_tab_new.DELETE;
1597 l_amend_types_new.DELETE;
1598 
1599 /* Initialize all Amended Payment Summary Flags,
1600           Index     Meaning    Value
1601             0.      Common      A
1602             1       Standard    O
1603             2       ETP1        O
1604             3       ETP2        O
1605             4       ETP3        O
1606             5       ETP4        O
1607 */
1608 
1609     l_amend_types_new(0).db_item_name       := 'X_PAYMENT_SUMMARY_TYPE';
1610     l_amend_types_new(0).db_item_value      := 'A';
1611 
1612     l_amend_types_new(1).db_item_name       := 'X_PAYG_PAYMENT_SUMMARY_TYPE';
1613     l_amend_types_new(1).db_item_value      := 'O';
1614 
1615     l_amend_types_new(2).db_item_name       := 'X_ETP1_PAYMENT_SUMMARY_TYPE';
1616     l_amend_types_new(2).db_item_value      := 'O';
1617 
1618     l_amend_types_new(3).db_item_name       := 'X_ETP2_PAYMENT_SUMMARY_TYPE';
1619     l_amend_types_new(3).db_item_value      := 'O';
1620 
1621     l_amend_types_new(4).db_item_name       := 'X_ETP3_PAYMENT_SUMMARY_TYPE';
1622     l_amend_types_new(4).db_item_value      := 'O';
1623 
1624     l_amend_types_new(5).db_item_name       := 'X_ETP4_PAYMENT_SUMMARY_TYPE';
1625     l_amend_types_new(5).db_item_value      := 'O';
1626 
1627 
1628 /*      Check count and set flags if some items are missing in New Run
1629 */
1630 
1631     l_new_count     := NVL(p_all_tab_new.LAST,-1) + 1;
1632 
1633     OPEN get_context_id('ASSIGNMENT_ACTION_ID');
1634     FETCH get_context_id INTO l_context_id;
1635     CLOSE get_context_id;
1636 
1637     OPEN  get_archive_item_count(l_archive_action_id,l_context_id);
1638     FETCH get_archive_item_count INTO l_old_count;
1639     CLOSE get_archive_item_count ;
1640 
1641     IF g_debug THEN
1642         hr_utility.set_location('Old Archive Count      '||l_old_count,3030);
1643         hr_utility.set_location('New Archive Count      '||l_new_count,3030);
1644     END IF;
1645 
1646     IF l_old_count > l_new_count
1647     THEN
1648     /* Some Items Missing from New Archive - Find and Set the Amend Flags appropriately
1649     */
1650         find_new_missing_items(l_archive_action_id
1651                               ,l_old_count
1652                               ,p_all_tab_new
1653                               ,l_new_count);
1654     END IF;
1655 
1656     slot_items_build_archive_list(l_archive_action_id
1657                                  ,p_all_tab_new);
1658 
1659     /*  1. Archive all Common Information - Old
1660         2. Archive all Standard Information - Old/New based on EIT
1661         3. Archive all ETP Information - Old/New based on EIT
1662         4. Archive Amended Payment Summary Flags
1663     */
1664 
1665         archive_db_items_tab
1666                 (p_assignment_action_id  => p_assignment_action_id
1667                 ,p_db_item_tab           => l_cmn_tab_new);
1668 
1669         archive_db_items_tab
1670                 (p_assignment_action_id  => p_assignment_action_id
1671                 ,p_db_item_tab           => l_payg_tab_new);
1672 
1673         archive_db_items_tab
1674                 (p_assignment_action_id  => p_assignment_action_id
1675                 ,p_db_item_tab           => l_etp_cmn_tab_new);
1676 
1677         archive_db_items_tab
1678                 (p_assignment_action_id  => p_assignment_action_id
1679                 ,p_db_item_tab           => l_etp_1_tab_new);
1680 
1681         archive_db_items_tab
1682                 (p_assignment_action_id  => p_assignment_action_id
1683                 ,p_db_item_tab           => l_etp_2_tab_new);
1684 
1685         archive_db_items_tab
1686                 (p_assignment_action_id  => p_assignment_action_id
1687                 ,p_db_item_tab           => l_etp_3_tab_new);
1688 
1689         archive_db_items_tab
1690                 (p_assignment_action_id  => p_assignment_action_id
1691                 ,p_db_item_tab           => l_etp_4_tab_new);
1692 
1693         archive_db_items_tab
1694                 (p_assignment_action_id  => p_assignment_action_id
1695                 ,p_db_item_tab           => l_amend_types_new);
1696 
1697 IF g_debug
1698 THEN
1699         hr_utility.set_location('Leaving Procedure  '||l_procedure, 3000);
1700 END IF;
1701 
1702 END modify_and_archive_code;
1703 
1704 PROCEDURE spawn_data_file
1705         (p_payroll_action_id IN pay_payroll_actions.payroll_action_id%TYPE)
1706 IS
1707 
1708 l_payroll_action_id    pay_payroll_actions.payroll_action_id%TYPE;
1709 l_business_group_id     NUMBER;
1710 l_start_date            DATE;
1711 l_end_date              DATE;
1712 l_effective_date        DATE;
1713 l_legal_employer        NUMBER;
1714 l_financial_year_code   VARCHAR2(10);
1715 l_test_efile            VARCHAR2(10);
1716 l_financial_year        VARCHAR2(10);
1717 l_legislative_param     VARCHAR2(200);
1718 l_procedure             VARCHAR2(80);
1719 ps_request_id           NUMBER;
1720   --------------------------------------------------------------------+
1721   -- Cursor      : csr_params
1722   -- Description : Fetches User Parameters from Legislative_paramters
1723   --               column.
1724   --------------------------------------------------------------------+
1725 
1726 CURSOR csr_magtape_params(c_payroll_action_id  pay_payroll_actions.payroll_action_id%TYPE)
1727 IS
1728 SELECT  pay_core_utils.get_parameter('TEST_EFILE',legislative_parameters)        TEST_EFILE,
1729         pay_core_utils.get_parameter('BUSINESS_GROUP_ID',legislative_parameters)        BUSINESS_GROUP_ID,
1730         pay_core_utils.get_parameter('FINANCIAL_YEAR',legislative_parameters)  FINANCIAL_YEAR,
1731         pay_core_utils.get_parameter('REGISTERED_EMPLOYER',legislative_parameters)    REGISTERED_EMPLOYER,
1732         to_date(pay_core_utils.get_parameter('START_DATE',legislative_parameters),'YYYY/MM/DD') start_date,
1733         to_date(pay_core_utils.get_parameter('END_DATE',legislative_parameters),'YYYY/MM/DD')   end_date,
1734         to_date(pay_core_utils.get_parameter('EFFECTIVE_DATE',legislative_parameters),'YYYY/MM/DD')   EFFECTIVE_DATE
1735 FROM    pay_payroll_actions ppa
1736 WHERE   ppa.payroll_action_id  =  c_payroll_action_id;
1737 
1738 
1739 CURSOR csr_lookup_code (c_financial_year VARCHAR2)
1740 IS
1741 SELECT LOOKUP_CODE
1742 FROM HR_LOOKUPS
1743 WHERE lookup_type   = 'AU_PS_FINANCIAL_YEAR'
1744 AND enabled_flag    = 'Y'
1745 AND meaning         = c_financial_year;
1746 
1747 BEGIN
1748 
1749 g_debug := hr_utility.debug_enabled;
1750 
1751 IF g_debug
1752 THEN
1753     l_procedure     := g_package||'.spawn_data_file';
1754     hr_utility.set_location('Entering package       '||l_procedure,4500);
1755 END IF;
1756 
1757 ps_request_id :=-1;
1758 l_TEST_EFILE :='N';
1759 
1760 OPEN  csr_magtape_params(p_payroll_action_id);
1761 FETCH csr_magtape_params
1762 INTO    l_test_efile,
1763         l_business_group_id,
1764         l_financial_year,
1765         l_legal_employer,
1766         l_start_date,
1767         l_end_date,
1768         l_effective_date;
1769 CLOSE csr_magtape_params;
1770 
1771 IF l_TEST_EFILE = 'Y'
1772 THEN
1773        OPEN  csr_lookup_code(l_financial_year);
1774        FETCH csr_lookup_code
1775        INTO  l_financial_year_code;
1776        CLOSE csr_lookup_code;
1777 
1778     l_legislative_param := 'BUSINESS_GROUP_ID='      || l_business_group_id         ||' '
1779                 || 'FINANCIAL_YEAR='         || l_FINANCIAL_YEAR            ||' '
1780                 || 'REGISTERED_EMPLOYER='    || l_legal_employer            ||' '
1781                 || 'IS_TESTING='             || 'Y'                         ||' '
1782                 || 'ARCHIVE_PAYROLL_ACTION=' || to_char(p_payroll_action_id)||' '
1783                 || 'END_DATE='               || to_char(l_end_date,'YYYY/MM/DD HH:MI:SS')||' '
1784                 || 'PAYMENT_SUMMARY_TYPE=A';
1785 
1786      ps_request_id := fnd_request.submit_request
1787      ('PAY',
1788       'PYAUPSDF',
1789       null,
1790       null,
1791       false,
1792       'ARCHIVE',
1793       'AU_PS_DATA_FILE_VAL',                 -- Report_format of magtape process
1794       'AU',
1795       to_char(l_start_date,'YYYY/MM/DD HH:MI:SS'),
1796       to_char(l_EFFECTIVE_DATE,'YYYY/MM/DD HH:MI:SS'),
1797       'REPORT',
1798       l_business_group_id,
1799       null,
1800       null,
1801       l_legal_employer,
1802       l_FINANCIAL_YEAR_code,
1803       'END_DATE='||to_char(l_end_date,'YYYY/MM/DD HH:MI:SS'),
1804       'Y',                                   -- IS_TESTING Parameter
1805       'A',
1806       'AU_PAY_SUMM_AMEND',
1807       to_number(p_payroll_action_id),        -- Archive_PAyroll_Action
1808       l_legislative_param                    -- Legislative parameters
1809      );
1810 
1811 END IF;
1812 
1813 IF g_debug
1814 THEN
1815     hr_utility.set_location('Leaving procedure          '||l_procedure,4540);
1816 END IF;
1817 
1818 END spawn_data_file;
1819 
1820 END pay_au_payment_summary_amend;