DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_AU_PAYMENT_SUMMARY_MAGTAPE

Source


1 package body pay_au_payment_summary_magtape as
2 /* $Header: pyaupsm.pkb 120.4.12010000.2 2008/08/06 06:50:42 ubhat ship $*/
3   -------------------------------------------------------------------------+
4 
5 --  g_debug boolean := hr_utility.debug_enabled; --Bug3132178
6  g_debug boolean := TRUE; --Bug3132178
7 
8 
9   procedure range_code
10       (p_payroll_action_id   in pay_payroll_actions.payroll_action_id%type,
11        p_sql                out NOCOPY varchar2) is
12     begin
13 -- hr_utility.trace_on(null, 'magtape');
14 	    hr_utility.set_location('Start of range_code',1);
15        /*Bug2920725   Corrected base tables to support security model*/
16 
17         p_sql := ' select distinct p.person_id' ||
18                   ' from   per_people_f p,' ||
19                          ' pay_payroll_actions pa ' ||
20                   ' where  pa.payroll_action_id = :payroll_action_id' ||
21                   ' and    p.business_group_id = pa.business_group_id' ||
22                    ' order by p.person_id';
23 
24       IF g_debug THEN
25 	    hr_utility.set_location('End of range_code',2);
26       END IF;
27   end range_code;
28 
29     -----------------------------------------------------------------------+
30     -- This procedure is used to further restrict the Assignment Action
31     -- Creation. It calls the procedure that actually inserts the Assignment
32     -- Actions.
33   -----------------------------------------------------------------------+
34 
35   procedure assignment_action_code
36       (p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
37        p_start_person_id    in per_all_people_f.person_id%type,
38        p_end_person_id      in per_all_people_f.person_id%type,
39        p_chunk              in number) is
40 
41     v_next_action_id  pay_assignment_actions.assignment_action_id%type;
42     v_run_action_id   pay_assignment_actions.assignment_action_id%type;
43     p_assignment_id pay_assignment_Actions.assignment_id%type;
44     ps_report_id pay_assignment_actions.assignment_action_id%type;
45     l_payment_summary_type varchar2(5) := 'O'; /* bug 6630375 */
46 
47     ------start of Bug3132178-----------------------------------------------------
48     l_testing_flag	varchar2(5):='N';
49     l_archive_payroll_action pay_payroll_actions.payroll_action_id%type;
50 
51 
52 	CURSOR get_parameters
53 	IS
54 	SELECT  pay_core_utils.get_parameter('IS_TESTING',ppa.legislative_parameters),
55 		pay_core_utils.get_parameter('ARCHIVE_PAYROLL_ACTION',ppa.legislative_parameters),
56                 pay_core_utils.get_parameter('PAYMENT_SUMMARY_TYPE',ppa.legislative_parameters) /* bug 6630375 */
57 	FROM    pay_payroll_actions ppa
58 	WHERE	ppa.payroll_Action_id = p_payroll_action_id;
59 
60 
61      CURSOR process_assignments_val
62       (c_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
63        c_start_person_id    in per_all_people_f.person_id%type,
64        c_end_person_id      in per_all_people_f.person_id%type)
65      IS
66        SELECT DISTINCT 'ASSIGNMENT_ACTION_ID=C',
67               paa.assignment_action_id ps_report_id,
68               paa.assignment_id
69          FROM pay_assignment_actions paa,
70               per_assignments_f a
71         WHERE paa.payroll_action_id = c_payroll_action_id
72           AND paa.action_status = 'C'
73           AND a.assignment_id = paa.assignment_id
74           AND pay_au_payment_summary.get_archive_value('X_REPORTING_FLAG',paa.assignment_action_id)='YES'
75 	  AND pay_au_payment_summary.get_archive_value('X_CURR_TERM_0_BAL_FLAG',paa.assignment_action_id)='NO'   /* Added for bug 5257622 */
76           AND a.person_id BETWEEN c_start_person_id AND c_end_person_id ;
77 
78     --------End of Bug3132178--------------------------------------------------
79 
80 
81      /*Bug2920725   Corrected base tables to support security model*/
82       CURSOR process_assignments
83         (c_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
84          c_start_person_id    in per_all_people_f.person_id%type,
85          c_end_person_id      in per_all_people_f.person_id%type) is
86        SELECT /*+ INDEX (apac PAY_ASSIGNMENT_ACTIONS_N50)
87                   INDEX (ppac PAY_ASSIGNMENT_ACTIONS_PK)
88                   INDEX(mpa PAY_PAYROLL_ACTIONS_PK)
89                   INDEX(ppai PAY_ACTION_INTERLOCKS_FK2)
90                   INDEX (p PER_PEOPLE_F_PK)
91                   INDEX(a PER_ASSIGNMENTS_F_PK) */
92        DISTINCT 'ASSIGNMENT_ACTION_ID=C',
93               ppac.assignment_action_id ps_report_id,
94               ppac.assignment_id
95          FROM pay_payroll_actions mpa,
96              per_people_f p,
97               per_assignments_f a,
98               pay_payroll_actions apa,
99               pay_assignment_actions apac,
100               pay_payroll_actions ppa,
101               pay_assignment_actions ppac,
102               pay_action_interlocks ppai
103         WHERE mpa.payroll_action_id =c_payroll_action_id
104           AND p.person_id = a.person_id
105           AND p.person_id BETWEEN c_start_person_id AND c_end_person_id
106           AND p.business_group_id = mpa.business_group_id
107           AND apa.payroll_action_id = apac.payroll_action_id
108           AND ppa.payroll_action_id = ppac.payroll_action_id
109           AND apac.assignment_action_id = ppai.locked_action_id
110           AND ppac.assignment_action_id = ppai.locking_action_id
111           and apa.action_status = 'C'
112           AND ppa.action_status = 'C'
113           AND apa.payroll_action_id = pay_core_utils.get_parameter('ARCHIVE_ID',ppa.legislative_parameters)
114           AND a.assignment_id = apac.assignment_id
115           AND a.assignment_id = ppac.assignment_id
116           AND apa.report_type ='AU_PAYMENT_SUMMARY'
117           AND ppa.report_type = 'AU_PAYMENT_SUMMARY_REPORT'
118           AND pay_core_utils.get_parameter('BUSINESS_GROUP_ID',apa.legislative_parameters)=
119               pay_core_utils.get_parameter('BUSINESS_GROUP_ID',mpa.legislative_parameters)
120           AND pay_core_utils.get_parameter('REGISTERED_EMPLOYER',apa.legislative_parameters)=
121               pay_core_utils.get_parameter('REGISTERED_EMPLOYER',mpa.legislative_parameters)
122           AND pay_core_utils.get_parameter('FINANCIAL_YEAR',apa.legislative_parameters)=
123               pay_core_utils.get_parameter('FINANCIAL_YEAR',mpa.legislative_parameters)
124           AND NOT EXISTS  /* 5471093 */
125                (SELECT /*+ ORDERED */ locked_action_id
126                   FROM pay_action_interlocks pail,
127                        pay_assignment_actions paa1,
128                        pay_payroll_actions paas
129                  WHERE paas.action_type='X'
130                    and paas.action_status='C'
131                    AND paas.report_type='AU_PS_DATA_FILE'
132                    AND paa1.payroll_action_id = paas.payroll_action_id
133                    AND pail.locking_action_id = paa1.assignment_action_id
134                    AND pail.locked_action_id  = ppac.assignment_action_id);
135 
136 
137      CURSOR process_assignments_val_amend /* bug 6630375 */
138       (c_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
139        c_start_person_id    in per_all_people_f.person_id%type,
140        c_end_person_id      in per_all_people_f.person_id%type)
141      IS
142        SELECT DISTINCT 'ASSIGNMENT_ACTION_ID=C',
143               paa.assignment_action_id ps_report_id,
144               paa.assignment_id
145          FROM pay_assignment_actions paa,
146               per_assignments_f a,
147               pay_payroll_actions ppa
148         WHERE ppa.payroll_action_id = c_payroll_action_id
149           AND ppa.payroll_action_id = paa.payroll_action_id
150           AND ppa.action_status = 'C'
151           AND a.assignment_id = paa.assignment_id
152           AND pay_au_payment_summary.get_archive_value('X_REPORTING_FLAG',paa.assignment_action_id)='YES'
153 	  AND pay_au_payment_summary.get_archive_value('X_CURR_TERM_0_BAL_FLAG',paa.assignment_action_id)='NO'
154 	  AND pay_au_payment_summary.get_archive_value('X_PAYMENT_SUMMARY_TYPE',paa.assignment_action_id)='A'
155 	  AND ppa.report_type = 'AU_PAY_SUMM_AMEND'
156 	  AND a.person_id BETWEEN c_start_person_id AND c_end_person_id ;
157 
158 
159       CURSOR process_assignments_amend  /* bug 6630375 */
160         (c_payroll_action_id  in pay_payroll_actions.payroll_action_id%type,
161          c_start_person_id    in per_all_people_f.person_id%type,
162          c_end_person_id      in per_all_people_f.person_id%type) is
163        SELECT /*+ INDEX (apac PAY_ASSIGNMENT_ACTIONS_N50)
164                   INDEX (ppac PAY_ASSIGNMENT_ACTIONS_PK)
165                   INDEX(mpa PAY_PAYROLL_ACTIONS_PK)
166                   INDEX(ppai PAY_ACTION_INTERLOCKS_FK2)
167                   INDEX (p PER_PEOPLE_F_PK)
168                   INDEX(a PER_ASSIGNMENTS_F_PK) */
169        DISTINCT 'ASSIGNMENT_ACTION_ID=C',
170               ppac.assignment_action_id ps_report_id,
171               ppac.assignment_id
172          FROM pay_payroll_actions mpa,
173              per_people_f p,
174               per_assignments_f a,
175               pay_payroll_actions apa,
176               pay_assignment_actions apac,
177               pay_payroll_actions ppa,
178               pay_assignment_actions ppac,
179               pay_action_interlocks ppai
180         WHERE mpa.payroll_action_id =c_payroll_action_id
181           AND p.person_id = a.person_id
182           AND p.person_id BETWEEN c_start_person_id AND c_end_person_id
183           AND p.business_group_id = mpa.business_group_id
184           AND apa.payroll_action_id = apac.payroll_action_id
185           AND ppa.payroll_action_id = ppac.payroll_action_id
186           AND apac.assignment_action_id = ppai.locked_action_id
187           AND ppac.assignment_action_id = ppai.locking_action_id
188           and apa.action_status = 'C'
189           AND ppa.action_status = 'C'
190           AND apa.payroll_action_id = pay_core_utils.get_parameter('ARCHIVE_ID',ppa.legislative_parameters)
191           AND a.assignment_id = apac.assignment_id
192           AND a.assignment_id = ppac.assignment_id
193           AND apa.report_type ='AU_PAY_SUMM_AMEND'
194           AND ppa.report_type = 'AU_PAYMENT_SUMMARY_REPORT'
195           AND pay_core_utils.get_parameter('BUSINESS_GROUP_ID',apa.legislative_parameters)=
196               pay_core_utils.get_parameter('BUSINESS_GROUP_ID',mpa.legislative_parameters)
197           AND pay_core_utils.get_parameter('REGISTERED_EMPLOYER',apa.legislative_parameters)=
198               pay_core_utils.get_parameter('REGISTERED_EMPLOYER',mpa.legislative_parameters)
199           AND pay_core_utils.get_parameter('FINANCIAL_YEAR',apa.legislative_parameters)=
200               pay_core_utils.get_parameter('FINANCIAL_YEAR',mpa.legislative_parameters)
201           AND pay_au_payment_summary.get_archive_value('X_PAYMENT_SUMMARY_TYPE', apac.assignment_action_id)='A'
202           AND NOT EXISTS  /* 5471093 */
203                (SELECT /*+ ORDERED */ locked_action_id
204                   FROM pay_action_interlocks pail,
205                        pay_assignment_actions paa1,
206                        pay_payroll_actions paas
207                  WHERE paas.action_type='X'
208                    and paas.action_status='C'
209                    AND paas.report_type='AU_PS_DATA_FILE'
210                    AND paa1.payroll_action_id = paas.payroll_action_id
211                    AND pail.locking_action_id = paa1.assignment_action_id
212                    AND pail.locked_action_id  = ppac.assignment_action_id);
213 
214   CURSOR next_action_id IS
215         SELECT pay_assignment_actions_s.NEXTVAL
216         FROM   dual;
217 
218    BEGIN
219 
220       IF g_debug THEN
221 	      hr_utility.set_location('Start of assignment_action_code',3);
222       END IF;
223        --------start of Bug3132178-----------------------------------------------------
224       OPEN get_parameters;
225       FETCH get_parameters INTO l_testing_flag,l_archive_payroll_action,l_payment_summary_type;
226       CLOSE get_parameters;
227 
228 
229       IF l_testing_flag = 'Y' THEN -- In this case fetch the assignments processed by archival process
230        IF l_payment_summary_type = 'O' THEN
231          FOR process_rec IN process_assignments_val (l_archive_payroll_action,
232                                                      p_start_person_id,
233                                                      p_end_person_id)
234          LOOP
235               EXIT WHEN process_assignments_val%NOTFOUND;
236               OPEN next_action_id;
237               FETCH next_action_id INTO v_next_action_id;
238               CLOSE next_action_id;
239               hr_nonrun_asact.insact(v_next_action_id,
240                                      process_rec.assignment_id,
241                                      p_payroll_action_id,
242                                      p_chunk,
243                                      NULL);
244               IF g_debug THEN
245                     hr_utility.set_location('After calling hr_nonrun_asact.insint',14);
246               END IF;
247          END LOOP;
248       ELSE /* bug 6630375 */
249          FOR process_rec IN process_assignments_val_amend (l_archive_payroll_action,
250                                                      p_start_person_id,
251                                                      p_end_person_id)
252          LOOP
253               EXIT WHEN process_assignments_val_amend%NOTFOUND;
254               OPEN next_action_id;
255               FETCH next_action_id INTO v_next_action_id;
256               CLOSE next_action_id;
257               hr_nonrun_asact.insact(v_next_action_id,
258                                      process_rec.assignment_id,
259                                      p_payroll_action_id,
260                                      p_chunk,
261                                      NULL);
262               IF g_debug THEN
263                     hr_utility.set_location('After calling hr_nonrun_asact.insint',14);
264               END IF;
265          END LOOP;
266         END IF;
267          ------End of Bug3132178-----------------------------------------------------
268       ELSE      -- In this case fetch the assignments locked by Self-Printed Process.
269        IF l_payment_summary_type = 'O' THEN
270            FOR process_rec IN process_assignments (p_payroll_action_id,
271                                                    p_start_person_id,
272                                                    p_end_person_id)
273            LOOP
274                 EXIT WHEN process_assignments%NOTFOUND;
275                 OPEN next_action_id;
276                 FETCH next_action_id INTO v_next_action_id;
277                 CLOSE next_action_id;
278                 hr_nonrun_asact.insact(v_next_action_id,
279                                        process_rec.assignment_id,
280                                        p_payroll_action_id,
281                                        p_chunk,
282                                        NULL);
283                 IF g_debug THEN
284                       hr_utility.set_location('Before calling hr_nonrun_asact.insint',14);
285                       hr_utility.set_location('locking action' || v_next_action_id, 15);
286                       hr_utility.set_location('locked action' ||  process_rec.ps_report_id, 16);
287                 END IF;
288                 hr_nonrun_asact.insint(v_next_action_id, -- locking action id
289                                        process_rec.ps_report_id); -- locked action id
290 
291                 IF g_debug THEN
292                       hr_utility.set_location('After calling hr_nonrun_asact.insint',14);
293                 END IF;
294            END LOOP;
295          ELSE /* bug 6630375 */
296            FOR process_rec IN process_assignments_amend (p_payroll_action_id,
297                                                    p_start_person_id,
298                                                    p_end_person_id)
299            LOOP
300                 EXIT WHEN process_assignments_amend%NOTFOUND;
301                 OPEN next_action_id;
302                 FETCH next_action_id INTO v_next_action_id;
303                 CLOSE next_action_id;
304                 hr_nonrun_asact.insact(v_next_action_id,
305                                        process_rec.assignment_id,
306                                        p_payroll_action_id,
307                                        p_chunk,
308                                        NULL);
309                 IF g_debug THEN
310                       hr_utility.set_location('Before calling hr_nonrun_asact.insint',14);
311                       hr_utility.set_location('locking action' || v_next_action_id, 15);
312                       hr_utility.set_location('locked action' ||  process_rec.ps_report_id, 16);
313                 END IF;
314                 hr_nonrun_asact.insint(v_next_action_id, -- locking action id
315                                        process_rec.ps_report_id); -- locked action id
316 
317                 IF g_debug THEN
318                       hr_utility.set_location('After calling hr_nonrun_asact.insint',14);
319                 END IF;
320            END LOOP;
321          END IF;
322       END IF;
323       IF g_debug THEN
324           hr_utility.set_location('End of assignment_action_code',5);
325       END IF;
326    END assignment_action_code;
327 
328 
329     -----------------------------------------------------------------------+
330     -- This is used by legislation groups to set global contexts that are
331     -- required for the lifetime of the archiving process. This is null
332     -- because there are no setup requirements, but a procedure needs to
333     -- exist in pay_report_format_mappings_f, otherwise the archiver will
334     -- assume that no archival of data is required.
335   ------------------------------------------------------------------------+
336 
337    procedure initialization_code
338       (p_payroll_action_id  in pay_payroll_actions.payroll_action_id%type) is
339     begin
340        IF g_debug THEN
341           hr_utility.set_location('Start of initialization_code',6);
342        END IF;
343        null;
344        IF g_debug THEN
345 	   hr_utility.set_location('End of initialization_code',7);
346        END IF;
347     end initialization_code;
348 
349 
350   -------------------------------------------------------------------------+
351   -- Used to actually perform the archival of data.  We are not archiving
352   -- any data here, so this is null.
353   ------------------------------------------------------------------------+
354     procedure archive_code
355       (p_payroll_action_id  in pay_assignment_actions.payroll_action_id%type,
356       p_effective_date        in date)
357       is
358 
359     begin
360        IF g_debug THEN
361 	    hr_utility.set_location('Start of archive_code',8);
362        END IF;
363        null;
364        IF g_debug THEN
365              hr_utility.set_location('End of archive_code',9);
366        END IF;
367      end archive_code;
368   ---------------------------------------------------------------------------+
369 
370 End pay_au_payment_summary_magtape;