DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.PAY_SA_EFT

Source


1 package body PAY_SA_EFT as
2  /* $Header: pysaeftp.pkb 120.1 2010/10/05 07:43:37 bkeshary ship $ */
3  g_package                  varchar2(33) := 'PAY_SA_PAYFILE.';
4  -- Global Variables
5  hr_formula_error  EXCEPTION;
6  g_formula_exists  BOOLEAN := TRUE;
7  g_formula_cached  BOOLEAN := FALSE;
8  g_formula_id      ff_formulas_f.formula_id%TYPE;
9  g_formula_name    ff_formulas_f.formula_name%TYPE;
10  -----------------------------------------------------------------------------
11  --
12  FUNCTION get_customer_formula_header    (
13                              p_Date_Earned  IN DATE
14                             ,p_payment_method_id IN number
15                             ,p_business_group_id IN number
16                             ,p_payroll_id IN number
17                             ,p_payroll_action_id IN number
18                             ,p_creation_date  IN VARCHAR2
19                             ,p_process_date   IN VARCHAR2
20                             ,p_count          IN VARCHAR2
21                             ,p_sum            IN VARCHAR2
22                             ,p_write_text1  OUT NOCOPY VARCHAR2
23                             ,p_write_text2  OUT NOCOPY VARCHAR2
24                             ,p_write_text3  OUT NOCOPY VARCHAR2
25                             ,p_write_text4  OUT NOCOPY VARCHAR2
26                             ,p_write_text5  OUT NOCOPY VARCHAR2
30                             ,p_report_text4 OUT NOCOPY VARCHAR2
27                             ,p_report_text1 OUT NOCOPY VARCHAR2
28                             ,p_report_text2 OUT NOCOPY VARCHAR2
29                             ,p_report_text3 OUT NOCOPY VARCHAR2
31                             ,p_report_text5 OUT NOCOPY VARCHAR2
32                             ,p_report_text6 OUT NOCOPY VARCHAR2
33                             ,p_report_text7 OUT NOCOPY VARCHAR2
34                             ,p_report_text8 OUT NOCOPY VARCHAR2
35                             ,p_report_text9 OUT NOCOPY VARCHAR2
36                             ,p_report_text10 OUT NOCOPY VARCHAR2) return varchar2 IS
37  l_header varchar2(100);
38  l_body varchar2(100);
39  l_footer varchar2(100);
40  l_inputs ff_exec.inputs_t;
41  l_outputs ff_exec.outputs_t;
42 /* cursor c_get_name(p_payment_method_id NUMBER) is
43  select PMETH_INFORMATION1,PMETH_INFORMATION2,PMETH_INFORMATION3
44  from PAY_ORG_PAYMENT_METHODS_F where ORG_PAYMENT_METHOD_ID = p_payment_method_id; */
45 
46  /* Added for Bug 10085376 */
47 
48  cursor c_get_name(p_payment_method_id NUMBER,p_Date_Earned DATE) is
49  select PMETH_INFORMATION1,PMETH_INFORMATION2,PMETH_INFORMATION3
50  from PAY_ORG_PAYMENT_METHODS_F
51  where ORG_PAYMENT_METHOD_ID = p_payment_method_id
52  and p_Date_Earned between effective_start_date and effective_end_date ;
53 
54  begin
55  --hr_utility.trace_on(null,'EFT');
56  l_payment_method_id := p_payment_method_id;
57  open c_get_name(p_payment_method_id,p_Date_Earned);
58  fetch c_get_name into l_id_header,l_id_body,l_id_footer;
59  close c_get_name;
60                    l_inputs(1).name  := 'DATE_EARNED';
61                    l_inputs(1).value := fnd_date.date_to_canonical(p_date_earned);
62                    l_inputs(2).name  := 'ORG_PAY_METHOD_ID';
63                    l_inputs(2).value := p_payment_method_id;
64                    l_inputs(3).name  := 'BUSINESS_GROUP_ID';
65                    l_inputs(3).value := p_business_group_id;
66                    l_inputs(4).name  := 'PAYROLL_ID';
67                    l_inputs(4).value := p_payroll_id;
68                    l_inputs(5).name  := 'PAYROLL_ACTION_ID';
69                    l_inputs(5).value := p_payroll_action_id;
70                    l_inputs(6).name  := 'CREATION_DATE';
71                    l_inputs(6).value := p_creation_date;
72                    l_inputs(7).name  := 'PROCESS_DATE';
73                    l_inputs(7).value := p_process_date;
74                    l_inputs(8).name  := 'COUNT1';
75                    l_inputs(8).value := p_count;
76                    l_inputs(9).name  := 'SUM1';
77                    l_inputs(9).value := p_sum;
78 
79                    l_outputs(1).name := 'WRITE_TEXT1';
80                    l_outputs(2).name := 'WRITE_TEXT2';
81                    l_outputs(3).name := 'WRITE_TEXT3';
82                    l_outputs(4).name := 'WRITE_TEXT4';
83                    l_outputs(5).name := 'WRITE_TEXT5';
84                    l_outputs(6).name := 'REPORT1_TEXT1';
85                    l_outputs(7).name := 'REPORT1_TEXT2';
86                    l_outputs(8).name := 'REPORT1_TEXT3';
87                    l_outputs(9).name := 'REPORT1_TEXT4';
88                    l_outputs(10).name := 'REPORT1_TEXT5';
89                    l_outputs(11).name := 'REPORT2_TEXT1';
90                    l_outputs(12).name := 'REPORT2_TEXT2';
91                    l_outputs(13).name := 'REPORT2_TEXT3';
92                    l_outputs(14).name := 'REPORT2_TEXT4';
93                    l_outputs(15).name := 'REPORT2_TEXT5';
94  IF l_id_header is not null then
95          run_formula
96                  (l_id_header
97                   ,p_Date_Earned
98                   ,l_inputs
99                   ,l_outputs);
100  END IF;
101    IF l_outputs.count > 0 and l_outputs.count > 0 THEN
102      FOR i IN l_outputs.first..l_outputs.last LOOP
103          IF l_outputs(i).name like 'WRITE_TEXT1' THEN
104            p_write_text1 := l_outputs(i).value;
105        ELSIF l_outputs(i).name like 'WRITE_TEXT2'  THEN
106            p_write_text2 := l_outputs(i).value;
107        ELSIF l_outputs(i).name like 'WRITE_TEXT3'  THEN
108            p_write_text3 := l_outputs(i).value;
109        ELSIF l_outputs(i).name like 'WRITE_TEXT4'  THEN
110            p_write_text4 := l_outputs(i).value;
111        ELSIF l_outputs(i).name like 'WRITE_TEXT5'  THEN
112            p_write_text5 := l_outputs(i).value;
113        ELSIF l_outputs(i).name like 'REPORT1_TEXT1'  THEN
114            p_report_text1 := l_outputs(i).value;
115        ELSIF l_outputs(i).name like 'REPORT1_TEXT2'  THEN
116            p_report_text2 := l_outputs(i).value;
117        ELSIF l_outputs(i).name like 'REPORT1_TEXT3'  THEN
118            p_report_text3 := l_outputs(i).value;
119        ELSIF l_outputs(i).name like 'REPORT1_TEXT4'  THEN
120            p_report_text4 := l_outputs(i).value;
121        ELSIF l_outputs(i).name like 'REPORT1_TEXT5'  THEN
122            p_report_text5 := l_outputs(i).value;
123       ELSIF l_outputs(i).name like 'REPORT2_TEXT1'  THEN
124            p_report_text6 := l_outputs(i).value;
125       ELSIF l_outputs(i).name like 'REPORT2_TEXT2'  THEN
126            p_report_text7 := l_outputs(i).value;
127       ELSIF l_outputs(i).name like 'REPORT2_TEXT3'  THEN
128            p_report_text8 := l_outputs(i).value;
129       ELSIF l_outputs(i).name like 'REPORT2_TEXT4'  THEN
130            p_report_text9 := l_outputs(i).value;
131       ELSIF l_outputs(i).name like 'REPORT2_TEXT5'  THEN
132            p_report_text10 := l_outputs(i).value;
133          END IF;
134       END LOOP;
135    END IF;
136  RETURN '1';
137  END get_customer_formula_header;
138  --
139  FUNCTION get_customer_formula_body      (
140                                   p_assignment_id IN number,
144                                   p_payroll_id IN number,
141                                   p_business_group_id IN number,
142                                   p_per_pay_method_id IN number,
143                                   p_date_earned IN date,
145                                   p_payroll_action_id IN number,
146                                   p_assignment_action_id IN number,
147                                   p_organization_id IN number,
148                                   p_tax_unit_id IN number,
149                                   p_amount IN varchar2,
150                                   p_first_name IN varchar2,
151                                   p_last_name IN varchar2,
152                                   p_initials IN varchar2,
153                                   p_emp_no IN varchar2,
154                                   p_asg_no IN varchar2,
155                                   p_count IN varchar2,
156                                   p_sum IN varchar2
157                                  ,p_write_text1  OUT NOCOPY VARCHAR2
158                                  ,p_write_text2  OUT NOCOPY VARCHAR2
159                                  ,p_write_text3  OUT NOCOPY VARCHAR2
160                                  ,p_write_text4  OUT NOCOPY VARCHAR2
161                                  ,p_write_text5  OUT NOCOPY VARCHAR2
162                                  ,p_report_text1 OUT NOCOPY VARCHAR2
163                                  ,p_report_text2 OUT NOCOPY VARCHAR2
164                                  ,p_report_text3 OUT NOCOPY VARCHAR2
165                                  ,p_report_text4 OUT NOCOPY VARCHAR2
166                                  ,p_report_text5 OUT NOCOPY VARCHAR2
167                                  ,p_report_text6 OUT NOCOPY VARCHAR2
168                                  ,p_report_text7 OUT NOCOPY VARCHAR2
169                                  ,p_report_text8 OUT NOCOPY VARCHAR2
170                                  ,p_report_text9 OUT NOCOPY VARCHAR2
171                                  ,p_report_text10 OUT NOCOPY VARCHAR2
172                                  ,p_local_nationality IN VARCHAR2) return varchar2 IS
173  l_header varchar2(100);
174  l_body varchar2(100);
175  l_footer varchar2(100);
176  l_inputs ff_exec.inputs_t;
177  l_outputs ff_exec.outputs_t;
178 
179  /*cursor c_get_name(p_payment_method_id NUMBER) is
180  select PMETH_INFORMATION1,PMETH_INFORMATION2,PMETH_INFORMATION3
181  from PAY_ORG_PAYMENT_METHODS_F where ORG_PAYMENT_METHOD_ID = p_payment_method_id; */
182 
183   /* Added for Bug 10085376 */
184 
185  cursor c_get_name(p_payment_method_id NUMBER,p_Date_Earned DATE) is
186  select PMETH_INFORMATION1,PMETH_INFORMATION2,PMETH_INFORMATION3
187  from PAY_ORG_PAYMENT_METHODS_F
188  where ORG_PAYMENT_METHOD_ID = p_payment_method_id
189  and p_Date_Earned between effective_start_date and effective_end_date ;
190 
191  begin
192                    l_inputs(1).name  := 'ASSIGNMENT_ID';
193                    l_inputs(1).value := p_assignment_id;
194                    l_inputs(2).name  := 'BUSINESS_GROUP_ID';
195                    l_inputs(2).value := p_business_group_id;
196                    l_inputs(3).name  := 'PER_PAY_METHOD_ID';
197                    l_inputs(3).value := p_per_pay_method_id;
198                    l_inputs(4).name  := 'DATE_EARNED';
199                    l_inputs(4).value := fnd_date.date_to_canonical(p_date_earned);
200                    l_inputs(5).name  := 'PAYROLL_ID';
201                    l_inputs(5).value := p_payroll_id;
202                    l_inputs(6).name  := 'PAYROLL_ACTION_ID';
203                    l_inputs(6).value := p_payroll_action_id;
204                    l_inputs(7).name  := 'ASSIGNMENT_ACTION_ID';
205                    l_inputs(7).value := p_assignment_action_id;
206                    l_inputs(8).name  := 'ORGANIZATION_ID';
207                    l_inputs(8).value := p_organization_id;
208                    l_inputs(9).name  := 'TAX_UNIT_ID';
209                    l_inputs(9).value := p_tax_unit_id;
210                    l_inputs(10).name  := 'AMOUNT';
211                    l_inputs(10).value := p_amount;
212                    l_inputs(11).name  := 'FIRST_NAME';
213                    l_inputs(11).value := p_first_name;
214                    l_inputs(12).name  := 'LAST_NAME';
215                    l_inputs(12).value := p_last_name;
216                    l_inputs(13).name  := 'INITIALS';
217                    l_inputs(13).value := p_initials;
218                    l_inputs(14).name  := 'EMP_NO';
219                    l_inputs(14).value := p_emp_no;
220                    l_inputs(15).name  := 'ASG_NO';
221                    l_inputs(15).value := p_asg_no;
222                    l_inputs(16).name  := 'TRANSFER_COUNT1';
223                    l_inputs(16).value := p_count;
224                    l_inputs(17).name  := 'TRANSFER_SUM1';
225                    l_inputs(17).value := p_sum;
226                    l_inputs(18).name  := 'ORG_PAY_METHOD_ID';
227                    l_inputs(18).value := l_payment_method_id;
228                    l_inputs(19).name  := 'LOCAL_NATIONALITY';
229                    l_inputs(19).value := p_local_nationality;
230 
231 
232                    l_outputs(1).name := 'WRITE_TEXT1';
233                    l_outputs(2).name := 'WRITE_TEXT2';
234                    l_outputs(3).name := 'WRITE_TEXT3';
235                    l_outputs(4).name := 'WRITE_TEXT4';
236                    l_outputs(5).name := 'WRITE_TEXT5';
237                    l_outputs(6).name := 'REPORT1_TEXT1';
238                    l_outputs(7).name := 'REPORT1_TEXT2';
239                    l_outputs(8).name := 'REPORT1_TEXT3';
240                    l_outputs(9).name := 'REPORT1_TEXT4';
241                    l_outputs(10).name := 'REPORT1_TEXT5';
242                    l_outputs(11).name := 'REPORT2_TEXT1';
243                    l_outputs(12).name := 'REPORT2_TEXT2';
247  IF l_id_body is not null then
244                    l_outputs(13).name := 'REPORT2_TEXT3';
245                    l_outputs(14).name := 'REPORT2_TEXT4';
246                    l_outputs(15).name := 'REPORT2_TEXT5';
248          run_formula
249                  (l_id_body
250                   ,p_Date_Earned
251                   ,l_inputs
252                   ,l_outputs);
253  END IF;
254    IF l_outputs.count > 0 and l_outputs.count > 0 THEN
255      FOR i IN l_outputs.first..l_outputs.last LOOP
256          IF l_outputs(i).name like 'WRITE_TEXT1' THEN
257            p_write_text1 := l_outputs(i).value;
258       ELSIF l_outputs(i).name like 'WRITE_TEXT2'  THEN
259            p_write_text2 := l_outputs(i).value;
260       ELSIF l_outputs(i).name like 'WRITE_TEXT3'  THEN
261            p_write_text3 := l_outputs(i).value;
262       ELSIF l_outputs(i).name like 'WRITE_TEXT4'  THEN
263            p_write_text4 := l_outputs(i).value;
264       ELSIF l_outputs(i).name like 'WRITE_TEXT5'  THEN
265            p_write_text5 := l_outputs(i).value;
266       ELSIF l_outputs(i).name like 'REPORT1_TEXT1'  THEN
267            p_report_text1 := l_outputs(i).value;
268       ELSIF l_outputs(i).name like 'REPORT1_TEXT2'  THEN
269            p_report_text2 := l_outputs(i).value;
270       ELSIF l_outputs(i).name like 'REPORT1_TEXT3'  THEN
271            p_report_text3 := l_outputs(i).value;
272       ELSIF l_outputs(i).name like 'REPORT1_TEXT4'  THEN
273            p_report_text4 := l_outputs(i).value;
274       ELSIF l_outputs(i).name like 'REPORT1_TEXT5'  THEN
275            p_report_text5 := l_outputs(i).value;
276       ELSIF l_outputs(i).name like 'REPORT2_TEXT1'  THEN
277            p_report_text6 := l_outputs(i).value;
278       ELSIF l_outputs(i).name like 'REPORT2_TEXT2'  THEN
279            p_report_text7 := l_outputs(i).value;
280       ELSIF l_outputs(i).name like 'REPORT2_TEXT3'  THEN
281            p_report_text8 := l_outputs(i).value;
282       ELSIF l_outputs(i).name like 'REPORT2_TEXT4'  THEN
283            p_report_text9 := l_outputs(i).value;
284       ELSIF l_outputs(i).name like 'REPORT2_TEXT5'  THEN
285            p_report_text10 := l_outputs(i).value;
286          END IF;
287       END LOOP;
288    END IF;
289  RETURN '1';
290  end get_customer_formula_body;
291  ------
292  -------------
293  --
294  FUNCTION get_customer_formula_footer    (
295                                   p_Date_Earned  IN DATE
296                                  ,p_payment_method_id IN number
297                                  ,p_business_group_id IN number
298                                  ,p_payroll_id IN number
299                                  ,p_payroll_action_id IN number
300                                  ,p_creation_date  IN VARCHAR2
301                                  ,p_process_date   IN VARCHAR2
302                                  ,p_count          IN VARCHAR2
303                                  ,p_sum            IN VARCHAR2
304                                  ,p_write_text1  OUT NOCOPY VARCHAR2
305                                  ,p_write_text2  OUT NOCOPY VARCHAR2
306                                  ,p_write_text3  OUT NOCOPY VARCHAR2
307                                  ,p_write_text4  OUT NOCOPY VARCHAR2
308                                  ,p_write_text5  OUT NOCOPY VARCHAR2
309                                  ,p_report_text1 OUT NOCOPY VARCHAR2
310                                  ,p_report_text2 OUT NOCOPY VARCHAR2
311                                  ,p_report_text3 OUT NOCOPY VARCHAR2
312                                  ,p_report_text4 OUT NOCOPY VARCHAR2
313                                  ,p_report_text5 OUT NOCOPY VARCHAR2
314                                  ,p_report_text6 OUT NOCOPY VARCHAR2
315                                  ,p_report_text7 OUT NOCOPY VARCHAR2
316                                  ,p_report_text8 OUT NOCOPY VARCHAR2
317                                  ,p_report_text9 OUT NOCOPY VARCHAR2
318                                  ,p_report_text10 OUT NOCOPY VARCHAR2) return varchar2 IS
319  l_header varchar2(100);
320  l_body varchar2(100);
321  l_footer varchar2(100);
322  l_inputs ff_exec.inputs_t;
323  l_outputs ff_exec.outputs_t;
324 
325  /*cursor c_get_name(p_payment_method_id NUMBER) is
326  select PMETH_INFORMATION1,PMETH_INFORMATION2,PMETH_INFORMATION3
327  from PAY_ORG_PAYMENT_METHODS_F where ORG_PAYMENT_METHOD_ID = p_payment_method_id; */
328 
329  /* Added for Bug 10085376 */
330 
331  cursor c_get_name(p_payment_method_id NUMBER,p_Date_Earned DATE) is
332  select PMETH_INFORMATION1,PMETH_INFORMATION2,PMETH_INFORMATION3
333  from PAY_ORG_PAYMENT_METHODS_F
334  where ORG_PAYMENT_METHOD_ID = p_payment_method_id
335  and p_Date_Earned between effective_start_date and effective_end_date ;
336 
337  begin
338  open c_get_name(p_payment_method_id,p_Date_Earned);
339  fetch c_get_name into l_id_header,l_id_body,l_id_footer;
340  close c_get_name;
341                    l_inputs(1).name  := 'DATE_EARNED';
342                    l_inputs(1).value := fnd_date.date_to_canonical(p_date_earned);
343                    l_inputs(2).name  := 'ORG_PAY_METHOD_ID';
344                    l_inputs(2).value := p_payment_method_id;
345                    l_inputs(3).name  := 'BUSINESS_GROUP_ID';
346                    l_inputs(3).value := p_business_group_id;
347                    l_inputs(4).name  := 'PAYROLL_ID';
348                    l_inputs(4).value := p_payroll_id;
349                    l_inputs(5).name  := 'PAYROLL_ACTION_ID';
350                    l_inputs(5).value := p_payroll_action_id;
351                    l_inputs(6).name  := 'CREATION_DATE';
352                    l_inputs(6).value := p_creation_date;
353                    l_inputs(7).name  := 'PROCESS_DATE';
354                    l_inputs(7).value := p_process_date;
355                    l_inputs(8).name  := 'COUNT1';
356                    l_inputs(8).value := p_count;
357                    l_inputs(9).name  := 'SUM1';
358                    l_inputs(9).value := p_sum;
359                    l_outputs(1).name := 'WRITE_TEXT1';
360                    l_outputs(2).name := 'WRITE_TEXT2';
361                    l_outputs(3).name := 'WRITE_TEXT3';
362                    l_outputs(4).name := 'WRITE_TEXT4';
363                    l_outputs(5).name := 'WRITE_TEXT5';
364                    l_outputs(6).name := 'REPORT1_TEXT1';
365                    l_outputs(7).name := 'REPORT1_TEXT2';
366                    l_outputs(8).name := 'REPORT1_TEXT3';
367                    l_outputs(9).name := 'REPORT1_TEXT4';
368                    l_outputs(10).name := 'REPORT1_TEXT5';
369                    l_outputs(11).name := 'REPORT2_TEXT1';
370                    l_outputs(12).name := 'REPORT2_TEXT2';
371                    l_outputs(13).name := 'REPORT2_TEXT3';
372                    l_outputs(14).name := 'REPORT2_TEXT4';
373                    l_outputs(15).name := 'REPORT2_TEXT5';
374  IF l_id_footer is not null then
375  run_formula
376                  (l_id_footer
377                   ,p_Date_Earned
378                   ,l_inputs
379                   ,l_outputs);
380  END IF;
381    IF l_outputs.count > 0 and l_outputs.count > 0 THEN
382      FOR i IN l_outputs.first..l_outputs.last LOOP
383          IF l_outputs(i).name like 'WRITE_TEXT1' THEN
384            p_write_text1 := l_outputs(i).value;
385       ELSIF l_outputs(i).name like 'WRITE_TEXT2'  THEN
386            p_write_text2 := l_outputs(i).value;
387       ELSIF l_outputs(i).name like 'WRITE_TEXT3'  THEN
388            p_write_text3 := l_outputs(i).value;
389       ELSIF l_outputs(i).name like 'WRITE_TEXT4'  THEN
390            p_write_text4 := l_outputs(i).value;
391       ELSIF l_outputs(i).name like 'WRITE_TEXT5'  THEN
392            p_write_text5 := l_outputs(i).value;
393       ELSIF l_outputs(i).name like 'REPORT1_TEXT1'  THEN
394            p_report_text1 := l_outputs(i).value;
395       ELSIF l_outputs(i).name like 'REPORT1_TEXT2'  THEN
396            p_report_text2 := l_outputs(i).value;
397       ELSIF l_outputs(i).name like 'REPORT1_TEXT3'  THEN
398            p_report_text3 := l_outputs(i).value;
399       ELSIF l_outputs(i).name like 'REPORT1_TEXT4'  THEN
400            p_report_text4 := l_outputs(i).value;
401       ELSIF l_outputs(i).name like 'REPORT1_TEXT5'  THEN
402            p_report_text5 := l_outputs(i).value;
403       ELSIF l_outputs(i).name like 'REPORT2_TEXT1'  THEN
404            p_report_text6 := l_outputs(i).value;
405       ELSIF l_outputs(i).name like 'REPORT2_TEXT2'  THEN
406            p_report_text7 := l_outputs(i).value;
407       ELSIF l_outputs(i).name like 'REPORT2_TEXT3'  THEN
408            p_report_text8 := l_outputs(i).value;
409       ELSIF l_outputs(i).name like 'REPORT2_TEXT4'  THEN
410            p_report_text9 := l_outputs(i).value;
411       ELSIF l_outputs(i).name like 'REPORT2_TEXT5'  THEN
412            p_report_text10 := l_outputs(i).value;
413          END IF;
414       END LOOP;
415    END IF;
416  RETURN '1';
417  end get_customer_formula_footer;
418  ---
419  ----------
420  -----
421  PROCEDURE run_formula(p_formula_id      IN NUMBER
422                       ,p_effective_date  IN DATE
423                       ,p_inputs          IN ff_exec.inputs_t
424                       ,p_outputs         IN OUT NOCOPY ff_exec.outputs_t) IS
425  l_inputs ff_exec.inputs_t;
426  l_outputs ff_exec.outputs_t;
427  BEGIN
428    hr_utility.set_location('--In Formula ',20);
429    --
430    -- Initialize the formula
431    --
432    ff_exec.init_formula(p_formula_id, p_effective_date  , l_inputs, l_outputs);
433    --
434   hr_utility.trace('after ff_exec');
435    -- Set up the input values
436    --
437    IF l_inputs.count > 0 and p_inputs.count > 0 THEN
438      FOR i IN l_inputs.first..l_inputs.last LOOP
439        FOR j IN p_inputs.first..p_inputs.last LOOP
440          IF l_inputs(i).name = p_inputs(j).name THEN
441             l_inputs(i).value := p_inputs(j).value;
442             exit;
443          END IF;
444       END LOOP;
445      END LOOP;
446    END IF;
447    --
448    -- Run the formula
449    --
450   hr_utility.trace('about to exec');
451    ff_exec.run_formula(l_inputs,l_outputs);
452    --
453   hr_utility.trace('After exec');
454    -- Populate the output table
455    --
456    IF l_outputs.count > 0 and p_inputs.count > 0 then
457      FOR i IN l_outputs.first..l_outputs.last LOOP
458          FOR j IN p_outputs.first..p_outputs.last LOOP
459              IF l_outputs(i).name = p_outputs(j).name THEN
460                p_outputs(j).value := l_outputs(i).value;
461                exit;
462              END IF;
463          END LOOP;
464      END LOOP;
465    END IF;
466    hr_utility.set_location('--Leaving Formula ',21);
467    EXCEPTION
468    WHEN hr_formula_error THEN
469        fnd_message.set_name('PER','FFX22J_FORMULA_NOT_FOUND');
470        fnd_message.set_token('1', g_formula_name);
471        fnd_message.raise_error;
472    WHEN OTHERS THEN
473      raise;
474  --
475  END run_formula;
476 
477 
478  END PAY_SA_EFT;