DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_KW_EFT

Source


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