[Home] [Help]
PACKAGE BODY: APPS.PAY_FI_ITERATE
Source
1 PACKAGE BODY pay_fi_iterate AS
2 /* $Header: pyfiiter.pkb 120.0 2005/05/29 04:53:17 appldev noship $ */
3 --
4 -- The ELEMENT_ENTRY_ID currently being processed.
5 g_element_entry_id NUMBER := -1;
6 --
7 -- Function to calculate the gross amount to be paid to achieve a target net amount.
8 FUNCTION calculate_gross_amount
9 (p_element_entry_id NUMBER
10 ,p_target_net NUMBER
11 ,p_tolerance NUMBER
12 ,p_current_net NUMBER
13 ,p_suggested_gross OUT NOCOPY NUMBER
14 ,p_stop_processing OUT NOCOPY NUMBER) RETURN NUMBER IS
15 --
16 -- Local variables
17 l_diff NUMBER;
18 l_suggested_gross NUMBER;
19 l_stop_processing NUMBER;
20 l_dummy NUMBER;
21 BEGIN
22 -- Initialise and make first guess.
23 IF p_element_entry_id <> g_element_entry_id THEN
24
25 l_dummy := pay_iterate.initialise(p_element_entry_id, p_target_net * 2, p_target_net, p_target_net);
26 l_suggested_gross := pay_iterate.get_interpolation_guess(p_element_entry_id, 0);
27 l_stop_processing := 0;
28 g_element_entry_id := p_element_entry_id;
29 --
30 -- Continue iterative processing.
31 ELSE
32 --
33 -- Targeted net has been reached.
34 IF ABS(p_target_net - p_current_net) <= p_tolerance THEN
35 l_suggested_gross := 0;
36 l_stop_processing := 1;
37 g_element_entry_id := -1;
38 --
39 -- More guessing required.
40 ELSE
41 l_diff := p_target_net - p_current_net;
42 l_suggested_gross := pay_iterate.get_interpolation_guess(p_element_entry_id, l_diff);
43 l_stop_processing := 0;
44 END IF;
45 END IF;
46 p_suggested_gross := l_suggested_gross;
47 p_stop_processing := l_stop_processing;
48 RETURN 1;
49 END calculate_gross_amount;
50 END pay_fi_iterate;