DBA Data[Home] [Help]

PACKAGE BODY: APPS.PAY_SE_ITERATE

Source


1 PACKAGE BODY pay_se_iterate AS
2  /* $Header: pyseiter.pkb 120.1 2005/06/28 23:05:12 atrivedi 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_se_iterate;