DBA Data[Home] [Help]

PACKAGE BODY: APPS.HRI_BPL_CURRENCY

Source


1 PACKAGE BODY hri_bpl_currency AS
2 /* $Header: hribcrnc.pkb 120.3 2006/10/09 15:18:21 jtitmas noship $ */
3 
4 TYPE g_varchar_tabtype IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
5 g_rate_type_tab      g_varchar_tabtype;
6 g_default_rate_type  VARCHAR2(30) := fnd_profile.value('BIS_PRIMARY_RATE_TYPE');
7 
8 /******************************************************************************/
9 /* Function to convert an amount from one currency to another, given a        */
10 /* specified conversion rate type                                             */
11 /******************************************************************************/
12 FUNCTION convert_currency_amount(p_from_currency    IN VARCHAR2
13                                 ,p_to_currency      IN VARCHAR2
14                                 ,p_conversion_date  IN DATE
15                                 ,p_amount           IN NUMBER
16                                 ,p_rate_type        IN VARCHAR2)
17             RETURN NUMBER IS
18 
19   l_converted_amount    NUMBER;
20 
21 BEGIN
22 
23 -- Check all required parameters are passed in
24   IF (p_from_currency IS NOT NULL AND
25       p_to_currency IS NOT NULL AND
26       p_amount IS NOT NULL)
27   THEN
28   -- If from currency is unassigned don't convert amount
29     IF (p_from_currency = 'NA_EDW')
30     THEN
31       l_converted_amount := p_amount ;
32     ELSE
33     -- Call API to convert currency
34       l_converted_amount := hr_currency_pkg.convert_amount(
35            p_from_currency        => p_from_currency
36           ,p_to_currency          => p_to_currency
37           ,p_conversion_date      => p_conversion_date
38           ,p_amount               => p_amount
39           ,p_rate_type            => NVL(p_rate_type, g_default_rate_type));
40     END IF;
41   ELSE
42   -- No salary for this assignment
43     l_converted_amount := 0;
44   END IF;
45 
46 -- Return result
47   RETURN l_converted_amount;
48 /*
49 EXCEPTION
50   WHEN OTHERS THEN
51 
52   RETURN(0);
53 */
54 EXCEPTION
55     WHEN gl_currency_api.invalid_currency THEN
56       --g_rate_conversion_tab(hash_number) := -2;
57       RETURN ( -2 );
58 
59     WHEN gl_currency_api.NO_RATE THEN
60       --g_rate_conversion_tab(hash_number) := -1;
61       RETURN ( -1 );
62 
63     WHEN OTHERS THEN
64       RETURN ( 0 );
65 
66 
67 END convert_currency_amount;
68 
69 /******************************************************************************/
70 /* Function to convert an amount from one currency to another without a rate  */
71 /* type given (uses the default from the bis profile option) but specifying   */
72 /* a number of decimal places for the result                                  */
73 /******************************************************************************/
74 FUNCTION convert_currency_amount(p_from_currency      IN VARCHAR2,
75                                  p_to_currency        IN VARCHAR2,
76                                  p_conversion_date    IN DATE,
77                                  p_amount             IN NUMBER,
78                                  p_precision          IN NUMBER)
79             RETURN NUMBER IS
80 
81   l_result     NUMBER;
82   l_rate_type  VARCHAR2(30);
83 
84 BEGIN
85 
86   l_result := hr_currency_pkg.convert_amount
87                 (p_from_currency => p_from_currency,
88                  p_to_currency => p_to_currency,
89                  p_conversion_date => TRUNC(p_conversion_date),
90                  p_amount => p_amount,
91                  p_rate_type => g_default_rate_type,
92                  p_round => p_precision);
93 
94   RETURN l_result;
95 EXCEPTION
96     WHEN gl_currency_api.invalid_currency THEN
97       --g_rate_conversion_tab(hash_number) := -2;
98       RETURN ( -2 );
99 
100     WHEN gl_currency_api.NO_RATE THEN
101       --g_rate_conversion_tab(hash_number) := -1;
102       RETURN ( -1 );
103 
104     WHEN OTHERS THEN
105       RETURN ( 0 );
106 END convert_currency_amount;
107 
108 /******************************************************************************/
109 /* Function to convert an amount from one currency to another without a rate  */
110 /* type given (uses the default from the bis profile option)                  */
111 /******************************************************************************/
112 FUNCTION convert_currency_amount(p_from_currency      IN VARCHAR2,
113                                  p_to_currency        IN VARCHAR2,
114                                  p_conversion_date    IN DATE,
115                                  p_amount             IN NUMBER)
116             RETURN NUMBER IS
117 
118   l_result     NUMBER;
119   l_rate_type  VARCHAR2(30);
120 
121 BEGIN
122 
123   l_result := hr_currency_pkg.convert_amount
124                 (p_from_currency => p_from_currency,
125                  p_to_currency => p_to_currency,
126                  p_conversion_date => TRUNC(p_conversion_date),
127                  p_amount => p_amount,
128                  p_rate_type => g_default_rate_type);
129 
130   RETURN l_result;
131 EXCEPTION
132     WHEN gl_currency_api.invalid_currency THEN
133       --g_rate_conversion_tab(hash_number) := -2;
134       RETURN ( -2 );
135 
136     WHEN gl_currency_api.NO_RATE THEN
137       --g_rate_conversion_tab(hash_number) := -1;
138       RETURN ( -1 );
139 
140     WHEN OTHERS THEN
141       RETURN ( 0 );
142 END convert_currency_amount;
143 
144 
145 -- -----------------------------------------------------------------------------
146 -- Converts currency amount to DBI primary currency using other parameters
147 --    - conversion date:  sysdate
148 --    - rate type:        DBI primary rate type
149 -- -----------------------------------------------------------------------------
150 FUNCTION convert_to_primary_crnc(p_from_currency     IN VARCHAR2
151                                 ,p_amount            IN NUMBER)
152             RETURN NUMBER IS
153 
154   l_result    NUMBER;
155 
156 BEGIN
157 
158   l_result := convert_currency_amount
159                (p_from_currency   => p_from_currency
160                ,p_to_currency     => bis_common_parameters.get_currency_code
161                ,p_conversion_date => TRUNC(SYSDATE)
162                ,p_amount          => p_amount
163                ,p_rate_type       => bis_common_parameters.get_rate_type);
164 
165   RETURN l_result;
166 
167 END convert_to_primary_crnc;
168 
169 -- -----------------------------------------------------------------------------
170 -- Converts currency amount to DBI secondary currency using other parameters
171 --    - conversion date:  sysdate
172 --    - rate type:        DBI secondary rate type
173 -- -----------------------------------------------------------------------------
174 FUNCTION convert_to_secondary_crnc(p_from_currency     IN VARCHAR2
175                                   ,p_amount            IN NUMBER)
176             RETURN NUMBER IS
177 
178   l_result    NUMBER;
179 
180 BEGIN
181 
182   l_result := convert_currency_amount
183                (p_from_currency   => p_from_currency
184                ,p_to_currency     => bis_common_parameters.get_secondary_currency_code
185                ,p_conversion_date => TRUNC(SYSDATE)
186                ,p_amount          => p_amount
187                ,p_rate_type       => bis_common_parameters.get_secondary_rate_type);
188 
189   RETURN l_result;
190 
191 END convert_to_secondary_crnc;
192 
193 END hri_bpl_currency;