[Home] [Help]
PACKAGE BODY: APPS.IEX_CURRENCY_PVT
Source
1 PACKAGE BODY IEX_CURRENCY_PVT AS
2 /* $Header: iexvcurb.pls 120.2 2005/08/19 14:03:39 jypark noship $ */
3 TYPE CurrencyCodeType IS TABLE OF VARCHAR2(15) INDEX BY BINARY_INTEGER;
4 TYPE PrecisionType IS TABLE OF NUMBER(1) INDEX BY BINARY_INTEGER;
5 TYPE MauType IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
6 --Begin-08/16/2005-jypark-fix gscc error
7 -- g_next_element BINARY_INTEGER := 0;
8 g_next_element BINARY_INTEGER;
9 g_currency_code_tab CurrencyCodeType;
10 g_precision_tab PrecisionType;
11 -- PG_DEBUG NUMBER(2) := TO_NUMBER(NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'), '20'));
12 PG_DEBUG NUMBER(2);
13 g_mau_tab MauType;
14 --End-08/16/2005-jypark-fix gscc error
15
16 --
17 --
18 CURSOR CurrencyCursor( cp_currency_code VARCHAR2 ) IS
19 SELECT precision,
20 minimum_accountable_unit
21 FROM fnd_currencies
22 WHERE currency_code = cp_currency_code;
23 --
24
25 /*===========================================================================+
26 | PROCEDURE |
27 | Get_Currency_Details |
28 | |
29 | DESCRIPTION |
30 | This PROCEDURE returns Currency Details Information |
31 | |
32 | SCOPE - PRIVATE |
33 | |
34 | ARGUMENTS : IN: |
35 | p_currency_code : Currency Code |
36 | OUT: |
37 | x_precision : Precision |
38 | x_mau : Minimum Accountable Unit |
39 | IN/ OUT: |
40 | |
41 | RETURNS : NONE |
42 | |
43 | NOTES |
44 | |
45 | MODIFICATION HISTORY |
46 | jypark 23-NOV-99 Created |
47 | |
48 +===========================================================================*/
49
50
51 PROCEDURE Get_Currency_Details(
52 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
53 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
54 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
55 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
56 p_currency_code IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
57 x_precision OUT NOCOPY NUMBER,
58 x_mau OUT NOCOPY NUMBER,
59 x_return_status OUT NOCOPY VARCHAR2,
60 x_msg_count OUT NOCOPY NUMBER,
61 x_msg_data OUT NOCOPY VARCHAR2
62 ) IS
63 i BINARY_INTEGER := 0;
64 l_api_version CONSTANT NUMBER := 1.0;
65 l_api_name CONSTANT VARCHAR2(30) := 'Get_Currency_Details';
66 l_return_status VARCHAR2(1);
67 l_msg_count NUMBER;
68 l_msg_data VARCHAR2(32767);
69
70 l_currency_code VARCHAR2(15) := p_currency_code;
71 BEGIN
72 -- Standard begin of API savepoint
73 SAVEPOINT Get_Currency_Details_PVT;
74
75 -- Standard call to check for call compatibility.
76 IF NOT FND_API.Compatible_API_Call (l_api_version,
77 p_api_version,
78 l_api_name,
79 G_PKG_NAME)
80 THEN
81 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
82 END IF;
83
84 -- Check p_init_msg_list
85 IF FND_API.to_Boolean( p_init_msg_list ) THEN
86 FND_MSG_PUB.initialize;
87 END IF;
88
89 -- Initialize API return status to success
90 x_return_status := FND_API.G_RET_STS_SUCCESS;
91
92 WHILE i < g_next_element
93 LOOP
94 EXIT WHEN g_currency_code_tab(i) = l_currency_code;
95 i := i + 1;
96 END LOOP;
97 --
98 IF i = g_next_element
99 THEN
100 OPEN CurrencyCursor( l_currency_code );
101 DECLARE
102 l_Precision NUMBER;
103 l_Mau NUMBER;
104 BEGIN
105 FETCH CurrencyCursor
106 INTO l_Precision,
107 l_Mau;
108 IF CurrencyCursor%NOTFOUND THEN
109 RAISE NO_DATA_FOUND;
110 END IF;
111 g_precision_tab(i) := l_Precision;
112 g_mau_tab(i) := l_Mau;
113 END;
114 CLOSE CurrencyCursor;
115 g_currency_code_tab(i) := l_currency_code;
116 g_next_element := i + 1;
117 END IF;
118 x_precision := g_precision_tab(i);
119 x_mau := g_mau_tab(i);
120
121 EXCEPTION
122 WHEN GL_CURRENCY_API.NO_RATE THEN
123 ROLLBACK TO Get_Currency_Details_PVT;
124 x_return_status := FND_API.G_RET_STS_ERROR;
125 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
126 FND_MSG_PUB.ADD;
127 FND_MSG_PUB.Count_And_Get(
128 p_encoded => FND_API.G_FALSE,
129 p_count => x_msg_count,
130 p_data => x_msg_data);
131 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
132 ROLLBACK TO Get_Currency_Details_PVT;
133 x_return_status := FND_API.G_RET_STS_ERROR;
134 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
135 FND_MSG_PUB.ADD;
136 FND_MSG_PUB.Count_And_Get(
137 p_encoded => FND_API.G_FALSE,
138 p_count => x_msg_count,
139 p_data => x_msg_data);
140 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
141 ROLLBACK TO Get_Currency_Details_PVT;
142 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
143 FND_MSG_PUB.Count_And_Get(
144 p_encoded => FND_API.G_FALSE,
145 p_count => x_msg_count,
146 p_data => x_msg_data);
147 WHEN OTHERS THEN
148 ROLLBACK TO Get_Currency_Details_PVT;
149 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
150 FND_MSG_PUB.Count_And_Get(
151 p_encoded => FND_API.G_FALSE,
152 p_count => x_msg_count,
153 p_data => x_msg_data);
154 END;
155 --
156
157 /*===========================================================================+
158 | PROCEDURE |
159 | Get_Curr_Round_Amount |
160 | |
161 | DESCRIPTION |
162 | Thist PROCEDURE return Currency Rounded Amount |
163 | |
164 | SCOPE - PRIVATE |
165 | |
166 | |
167 | ARGUMENTS : IN: |
168 | p_amount : Amount |
169 | p_currency_code : Currency Code |
170 | OUT: |
171 | x_rounded_amount : Rounded currency amount |
172 | |
173 | IN/ OUT: |
174 | NOTES |
175 | |
176 | MODIFICATION HISTORY |
177 | jypark 23-NOV-99 Created |
178 | |
179 +===========================================================================*/
180 PROCEDURE Get_Curr_Round_Amount (
181 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
182 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
183 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
184 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
185 p_amount IN NUMBER DEFAULT FND_API.G_MISS_NUM,
186 p_currency_code IN VARCHAR2 DEFAULT g_functional_currency,
187 x_rounded_amount OUT NOCOPY NUMBER,
188 x_return_status OUT NOCOPY VARCHAR2,
189 x_msg_count OUT NOCOPY NUMBER,
190 x_msg_data OUT NOCOPY VARCHAR2
191 ) IS
192 l_precision NUMBER(1);
193 l_mau NUMBER;
194 l_amount NUMBER := p_amount;
195 l_currency_code VARCHAR2(15) := p_currency_code;
196 l_api_version CONSTANT NUMBER := 1.0;
197 l_api_name CONSTANT VARCHAR2(30) := 'Get_Currency_Details';
198 l_return_status VARCHAR2(1);
199 l_msg_count NUMBER;
200 l_msg_data VARCHAR2(100);
201 BEGIN
202 -- Standard begin of API savepoint
203 SAVEPOINT Curr_Round_Amount_PVT;
204
205 -- Standard call to check for call compatibility.
206 IF NOT FND_API.Compatible_API_Call (l_api_version,
207 p_api_version,
208 l_api_name,
209 G_PKG_NAME)
210 THEN
211 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
212 END IF;
213
214 -- Check p_init_msg_list
215 IF FND_API.to_Boolean( p_init_msg_list ) THEN
216 FND_MSG_PUB.initialize;
217 END IF;
218
219
220 -- Initialize API return status to success
221 x_return_status := FND_API.G_RET_STS_SUCCESS;
222
223 Get_Currency_Details( p_api_version => 1.0,
224 p_init_msg_list => 'F',
225 p_commit => 'F',
226 p_currency_code => l_currency_code,
227 x_precision => l_precision,
228 x_mau => l_mau,
229 x_return_status => l_return_status,
230 x_msg_count => l_msg_count,
231 x_msg_data => l_msg_data
232 );
233
234
235 IF l_mau IS NOT NULL
236 THEN
237 x_rounded_amount := ROUND( l_amount / l_mau) * l_mau;
238 ELSE
239 x_rounded_amount := ROUND( l_amount, l_precision);
240 END IF;
241 EXCEPTION
242 WHEN GL_CURRENCY_API.NO_RATE THEN
243 ROLLBACK TO Curr_Round_Amount_PVT;
244 x_return_status := FND_API.G_RET_STS_ERROR;
245 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
246 FND_MSG_PUB.ADD;
247 FND_MSG_PUB.Count_And_Get(
248 p_encoded => FND_API.G_FALSE,
249 p_count => x_msg_count,
250 p_data => x_msg_data);
251 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
252 ROLLBACK TO Curr_Round_Amount_PVT;
253 x_return_status := FND_API.G_RET_STS_ERROR;
254 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
255 FND_MSG_PUB.ADD;
256 FND_MSG_PUB.Count_And_Get(
257 p_encoded => FND_API.G_FALSE,
258 p_count => x_msg_count,
259 p_data => x_msg_data);
260 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
261 ROLLBACK TO Curr_Round_Amount_PVT;
262 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
263 FND_MSG_PUB.Count_And_Get(
264 p_encoded => FND_API.G_FALSE,
265 p_count => x_msg_count,
266 p_data => x_msg_data);
267 WHEN OTHERS THEN
268 ROLLBACK TO Curr_Round_Amount_PVT;
269 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
270 FND_MSG_PUB.Count_And_Get(
271 p_encoded => FND_API.G_FALSE,
272 p_count => x_msg_count,
273 p_data => x_msg_data);
274 END;
275
276 /*===========================================================================+
277 | PROCEDURE |
278 | Get_Functional_Amount |
279 | |
280 | DESCRIPTION |
281 | This PROCEDURE returns the functional amount for a given foreign amount.|
282 | The functional amount is rounded to the correct precision. |
283 | |
284 | |
285 | SCOPE - PRIVATE |
286 | |
287 | ARGUMENTS : IN: |
288 | p_amount - the original foreign amount |
289 | p_exchange_rate - to use when converting to functional |
290 | amount |
291 | one of: |
292 | p_currency_code - of the functional amount |
293 | p_precision - of the functional amount |
294 | p_minimum_accountable_unit - of the functional amount |
295 | OUT: |
296 | x_amount_functional - |
297 | l_amount * l_exchange_rate to correct rounding |
298 | for currency |
299 | |
300 | IN/ OUT: |
301 | NOTES |
302 | EXCEPTIONS RAISED |
303 | Oracle Error If Currency Code, Precision and minimum accountable |
304 | are all NULL |
305 | |
306 | Oracle Error If can not find information for Currency Code |
307 | supplied |
308 | |
309 | MODIFICATION HISTORY |
310 | jypark 23-NOV-99 Created |
311 | acaraujo 09-FEB-00 Optional functional currency code |
312 | |
313 +===========================================================================*/
314
315
316 PROCEDURE Get_Functional_Amount(
317 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
318 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
319 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
320 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
321 p_amount IN NUMBER DEFAULT FND_API.G_MISS_NUM,
322 p_currency_code IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
323 p_exchange_rate IN NUMBER DEFAULT FND_API.G_MISS_NUM,
324 p_precision IN NUMBER DEFAULT FND_API.G_MISS_NUM,
325 p_min_acc_unit IN NUMBER DEFAULT FND_API.G_MISS_NUM,
326 x_functional_amount OUT NOCOPY NUMBER,
327 x_return_status OUT NOCOPY VARCHAR2,
328 x_msg_count OUT NOCOPY NUMBER,
329 x_msg_data OUT NOCOPY VARCHAR2
330 ) IS
331
332 /*----------------------------------------------------------------------------*
333 | PRIVATE CURSOR |
334 | curr_info |
335 | |
336 | DESCRIPTION |
337 | Gets the precision and the minimum accountable unit for the currency |
338 | Supplied |
339 | |
340 *----------------------------------------------------------------------------*/
341
342 CURSOR curr_info (cc FND_CURRENCIES.CURRENCY_CODE%TYPE) IS
343 SELECT PRECISION,
344 MINIMUM_ACCOUNTABLE_UNIT,
345 CURRENCY_CODE
346 FROM FND_CURRENCIES
347 WHERE CURRENCY_CODE = cc;
348
349 /*---------------------------------------------------------------------------*
350 | PRIVATE DATATYPES |
351 | |
352 *---------------------------------------------------------------------------*/
353
354
355 l_curr_rec curr_info%ROWTYPE;
356 l_loc_amount NUMBER;
357 l_amount NUMBER := p_amount;
358 l_currency_code VARCHAR2(15) := p_currency_code;
359 l_exchange_rate NUMBER := p_exchange_rate;
360 --l_precision NUMBER(1) := p_precision; Removed by Andre Araujo 02/08/00
361 l_precision NUMBER := p_precision;
362 l_min_acc_unit NUMBER := p_min_acc_unit;
363
364 l_invalid_params_exp EXCEPTION;
365 l_api_version CONSTANT NUMBER := 1.0;
366 l_api_name CONSTANT VARCHAR2(30) := 'Get_Functional_Amount';
367 l_return_status VARCHAR2(1);
368 l_msg_count NUMBER;
369 l_msg_data VARCHAR2(32767);
370
371 l_init_msg_list VARCHAR2(1) := 'F'; -- Andre Araujo 02/08/00
372 l_functional_currency VARCHAR2(10); -- Andre Araujo 02/08/00
373 l_commit VARCHAR2(1) := 'F'; -- Andre Araujo 02/08/00
374
375 BEGIN
376
377 -- Standard begin of API savepoint
378 SAVEPOINT Functional_Amount_PVT;
379
380 -- Standard call to check for call compatibility.
381 IF NOT FND_API.Compatible_API_Call (l_api_version,
382 p_api_version,
383 l_api_name,
384 G_PKG_NAME)
385 THEN
386 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
387 END IF;
388
389 -- Check p_init_msg_list
390 IF FND_API.to_Boolean( p_init_msg_list ) THEN
391 FND_MSG_PUB.initialize;
392 END IF;
393
394
395 -- Initialize API return status to success
396 x_return_status := FND_API.G_RET_STS_SUCCESS;
397
398 /*--------------------------------------------------------------------*
399 | Validate Parameters |
400 *--------------------------------------------------------------------*/
401
402 -- Begin - Andre Araujo - Read functional currency if we do not get it
403 IF (p_currency_code = FND_API.G_MISS_CHAR) OR (p_currency_code = '-1') THEN
404 IEX_CURRENCY_PVT.GET_FUNCT_CURR(p_api_version => l_api_version,
405 p_init_msg_list => l_init_msg_list,
406 p_commit => l_commit,
407 x_return_status => l_return_status,
408 x_msg_count => l_msg_count,
409 x_msg_data => l_msg_data,
410 x_functional_currency => l_functional_currency);
411
412 l_currency_code := l_functional_currency;
413 END IF;
414
415 -- Now that we are here lets get precision and Minimum account unit
416 IF ((p_precision = -1) OR (p_min_acc_unit = -1)) OR
417 ((p_precision = FND_API.G_MISS_NUM) OR (p_min_acc_unit = FND_API.G_MISS_NUM)) THEN
418 IEX_CURRENCY_PVT.GET_CURRENCY_DETAILS
419 (p_api_version => l_api_version,
420 p_init_msg_list => l_init_msg_list,
421 p_commit => l_commit,
422 x_return_status => l_return_status,
423 x_msg_count => l_msg_count,
424 x_msg_data => l_msg_data,
425 p_currency_code => l_functional_currency,
426 x_precision => l_precision,
427 x_mau => l_min_acc_unit);
428
429 END IF;
430
431 -- End - Andre Araujo
432
433 IF (((l_currency_code IS NULL) AND
434 (l_precision IS NULL) AND
435 (l_min_acc_unit IS NULL)) OR
436 (l_amount IS NULL) ) THEN
437 BEGIN
438
439 /* fnd_message('STD-FUNCT-AMT-INV-PAR'); */
440
441 RAISE l_invalid_params_exp;
442
443 END;
444 END IF;
445
446 /*--------------------------------------------------------------------*
447 | Only get currency info from database if not supplied as parameters |
448 *--------------------------------------------------------------------*/
449
450
451 IF ((l_precision IS NULL) AND (l_min_acc_unit IS NULL)) THEN
452 BEGIN
453 OPEN curr_info(l_currency_code);
454 FETCH curr_info INTO l_curr_rec;
455 CLOSE curr_info;
456
457 IF (l_curr_rec.currency_code IS NULL) THEN
458
459 /* fnd_message('STD-FUNCT-AMT-CURR-NF',
460 'CURR',
461 currency_code); */
462
463 RAISE l_invalid_params_exp;
464
465 END IF;
466
467 END;
468 ELSE
469 l_curr_rec.precision := l_precision;
470 l_curr_rec.minimum_accountable_unit := l_min_acc_unit;
471 END IF;
472
473 l_loc_amount := l_amount * NVL(l_exchange_rate, 1);
474
475
476
477 /*-----------------*
478 | Round correctly |
479 *-----------------*/
480
481 IF (l_curr_rec.minimum_accountable_unit IS NULL) THEN
482 x_functional_amount := ROUND(l_loc_amount, l_curr_rec.precision);
483 ELSE
484 x_functional_amount := ROUND((l_loc_amount / l_curr_rec.minimum_accountable_unit)) *
485 l_curr_rec.minimum_accountable_unit;
486 END IF;
487
488 EXCEPTION
489 WHEN GL_CURRENCY_API.NO_RATE THEN
490 ROLLBACK TO Functional_Amount_PVT;
491 x_return_status := FND_API.G_RET_STS_ERROR;
492 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
493 FND_MSG_PUB.ADD;
494 FND_MSG_PUB.Count_And_Get(
495 p_encoded => FND_API.G_FALSE,
496 p_count => x_msg_count,
497 p_data => x_msg_data);
498 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
499 ROLLBACK TO Functional_Amount_PVT;
500 x_return_status := FND_API.G_RET_STS_ERROR;
501 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
502 FND_MSG_PUB.ADD;
503 FND_MSG_PUB.Count_And_Get(
504 p_encoded => FND_API.G_FALSE,
505 p_count => x_msg_count,
506 p_data => x_msg_data);
507 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
508 ROLLBACK TO Functional_Amount_PVT;
509 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
510 FND_MSG_PUB.Count_And_Get(
511 p_encoded => FND_API.G_FALSE,
512 p_count => x_msg_count,
513 p_data => x_msg_data);
514 WHEN OTHERS THEN
515 ROLLBACK TO Functional_Amount_PVT;
516 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
517 FND_MSG_PUB.Count_And_Get(
518 p_encoded => FND_API.G_FALSE,
519 p_count => x_msg_count,
520 p_data => x_msg_data);
521 END Get_Functional_Amount;
522
523 /*===========================================================================+
524 | PROCEDURE |
525 | Get_Func_Amt_Rate |
526 | |
527 | DESCRIPTION |
528 | This PROCEDURE returns the functional amount for a given foreign amount.|
529 | The functional amount is rounded to the correct precision. |
530 | |
531 | |
532 | SCOPE - PRIVATE |
533 | |
534 | ARGUMENTS : IN: |
535 | p_amount_original - the original foreign amount |
536 | p_exchange_rate - to use when converting to functional |
537 | amount |
538 | OUT: |
539 | x_amount_functional - |
540 | l_amount_original* l_exchange_rate to correct rounding |
541 | for currency |
542 | |
543 | IN/ OUT: |
544 | NOTES |
545 | EXCEPTIONS RAISED |
546 | |
547 | MODIFICATION HISTORY |
548 | jypark 01-MAR-2000 Created |
549 | |
550 +===========================================================================*/
551
552 PROCEDURE Get_Func_Amt_Rate(
553 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
554 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
555 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
556 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
557 p_amount_original IN NUMBER DEFAULT FND_API.G_MISS_NUM,
558 p_exchange_rate IN NUMBER DEFAULT FND_API.G_MISS_NUM,
559 x_amount_functional OUT NOCOPY NUMBER,
560 x_return_status OUT NOCOPY VARCHAR2,
561 x_msg_count OUT NOCOPY NUMBER,
562 x_msg_data OUT NOCOPY VARCHAR2
563 ) IS
564
565 /*---------------------------------------------------------------------------*
566 | PRIVATE DATATYPES |
567 | |
568 *---------------------------------------------------------------------------*/
569
570 l_amount_functional NUMBER;
571 l_amount_original NUMBER := p_amount_original;
572 l_functional_currency VARCHAR2(10);
573 l_exchange_rate NUMBER := p_exchange_rate;
574 l_precision NUMBER;
575 l_min_acc_unit NUMBER;
576
577 l_invalid_params_exp EXCEPTION;
578 l_api_version CONSTANT NUMBER := 1.0;
579 l_api_name CONSTANT VARCHAR2(30) := 'Get_Fun_Amt_Rate';
580 l_return_status VARCHAR2(1);
581 l_msg_count NUMBER;
582 l_msg_data VARCHAR2(32767);
583
584 l_init_msg_list VARCHAR2(1) := 'F';
585 l_commit VARCHAR2(1) := 'F';
586
587 BEGIN
588
589 -- Standard begin of API savepoint
590 SAVEPOINT Func_Amt_Rate_PVT;
591
592 -- Standard call to check for call compatibility.
593 IF NOT FND_API.Compatible_API_Call (l_api_version,
594 p_api_version,
595 l_api_name,
596 G_PKG_NAME)
597 THEN
598 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
599 END IF;
600
601 -- Check p_init_msg_list
602 IF FND_API.to_Boolean( p_init_msg_list ) THEN
603 FND_MSG_PUB.initialize;
604 END IF;
605
606 -- Initialize API return status to success
607 x_return_status := FND_API.G_RET_STS_SUCCESS;
608
609 -- Get functional currency
610 IEX_CURRENCY_PVT.GET_FUNCT_CURR(p_api_version => l_api_version,
611 p_init_msg_list => l_init_msg_list,
612 p_commit => l_commit,
613 x_return_status => l_return_status,
614 x_msg_count => l_msg_count,
615 x_msg_data => l_msg_data,
616 x_functional_currency => l_functional_currency);
617
618 -- Get precision and minimum account unit for functional currency
619 IEX_CURRENCY_PVT.GET_CURRENCY_DETAILS
620 (p_api_version => l_api_version,
621 p_init_msg_list => l_init_msg_list,
622 p_commit => l_commit,
623 x_return_status => l_return_status,
624 x_msg_count => l_msg_count,
625 x_msg_data => l_msg_data,
626 p_currency_code => l_functional_currency,
627 x_precision => l_precision,
628 x_mau => l_min_acc_unit);
629
630
631 IF (((l_functional_currency IS NULL) AND
632 (l_precision IS NULL) AND
633 (l_min_acc_unit IS NULL)) OR
634 (l_amount_original IS NULL) ) THEN
635 BEGIN
636 /* fnd_message('STD-FUNCT-AMT-INV-PAR'); */
637 RAISE l_invalid_params_exp;
638 END;
639 END IF;
640
641 l_amount_functional := l_amount_original * NVL(l_exchange_rate, 1);
642
643 /*-----------------*
644 | Round correctly |
645 *-----------------*/
646
647 IF (l_min_acc_unit IS NULL) THEN
648 x_amount_functional := ROUND(l_amount_functional, l_precision);
649 ELSE
650 x_amount_functional := ROUND((l_amount_functional / l_min_acc_unit)) *
651 l_min_acc_unit;
652 END IF;
653
654
655 EXCEPTION
656 WHEN GL_CURRENCY_API.NO_RATE THEN
657 ROLLBACK TO Func_Amt_Rate_PVT;
658 x_return_status := FND_API.G_RET_STS_ERROR;
659 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
660 FND_MSG_PUB.ADD;
661 FND_MSG_PUB.Count_And_Get(
662 p_encoded => FND_API.G_FALSE,
663 p_count => x_msg_count,
664 p_data => x_msg_data);
665 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
666 ROLLBACK TO Func_Amt_Rate_PVT;
667 x_return_status := FND_API.G_RET_STS_ERROR;
668 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
669 FND_MSG_PUB.ADD;
670 FND_MSG_PUB.Count_And_Get(
671 p_encoded => FND_API.G_FALSE,
672 p_count => x_msg_count,
673 p_data => x_msg_data);
674 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
675 ROLLBACK TO Func_Amt_Rate_PVT;
676 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
677 FND_MSG_PUB.Count_And_Get(
678 p_encoded => FND_API.G_FALSE,
679 p_count => x_msg_count,
680 p_data => x_msg_data);
681 WHEN OTHERS THEN
682 ROLLBACK TO Func_Amt_Rate_PVT;
683 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
684 FND_MSG_PUB.Count_And_Get(
685 p_encoded => FND_API.G_FALSE,
686 p_count => x_msg_count,
687 p_data => x_msg_data);
688 END Get_Func_Amt_Rate;
689
690 /*===========================================================================+
691 | PROCEDURE |
692 | Get_Func_Amt_Curr |
693 | |
694 | DESCRIPTION |
695 | This PROCEDURE returns the functional amount for a given foreign amount |
696 | and foreign currency and exchange date. |
697 | The functional amount is rounded to the correct precision. |
698 | |
699 | |
700 | SCOPE - PRIVATE |
701 | |
702 | ARGUMENTS : IN: |
703 | p_amount_original - the original foreign amount |
704 | p_currency_original - of the functional amount |
705 | amount |
706 | p_exchange_date - to use when converting to functional |
707 | OUT: |
708 | x_amount_functional - |
709 | l_amount * l_exchange_rate to correct rounding |
710 | for currency |
711 | |
712 | IN/ OUT: |
713 | NOTES |
714 | EXCEPTIONS RAISED |
715 | |
716 | Oracle Error If can not find information for Currency Code |
717 | supplied |
718 | |
719 | MODIFICATION HISTORY |
720 | jypark 01-MAR-2000 Created |
721 | |
722 +===========================================================================*/
723
724 PROCEDURE Get_Func_Amt_Curr(
725 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
726 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
727 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
728 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
729 p_amount_original IN NUMBER DEFAULT FND_API.G_MISS_NUM,
730 p_currency_original IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
731 p_exchange_date IN DATE DEFAULT FND_API.G_MISS_DATE,
732 x_amount_functional OUT NOCOPY NUMBER,
733 x_return_status OUT NOCOPY VARCHAR2,
734 x_msg_count OUT NOCOPY NUMBER,
735 x_msg_data OUT NOCOPY VARCHAR2
736 ) IS
737
738 /*---------------------------------------------------------------------------*
739 | PRIVATE DATATYPES |
740 | |
741 *---------------------------------------------------------------------------*/
742
743 l_amount_functional NUMBER;
744 l_amount_original NUMBER := p_amount_original;
745 l_currency_original VARCHAR2(15) := p_currency_original;
746 l_exchange_date DATE := p_exchange_date;
747 l_conversion_type VARCHAR2(100);
748 l_precision NUMBER;
749 l_min_acc_unit NUMBER;
750
751 l_invalid_params_exp EXCEPTION;
752 l_api_version CONSTANT NUMBER := 1.0;
753 l_api_name CONSTANT VARCHAR2(30) := 'Get_Func_Amt_Curr';
754 l_validation_level NUMBER := 100;
755 l_return_status VARCHAR2(1);
756 l_msg_count NUMBER;
757 l_msg_data VARCHAR2(32767);
758
759 l_init_msg_list VARCHAR2(1) := 'F';
760 l_currency_functional VARCHAR2(10);
761 l_commit VARCHAR2(1) := 'F';
762
763 BEGIN
764
765 -- Standard begin of API savepoint
766 SAVEPOINT Func_Amt_Curr_Pvt;
767
768 -- Standard call to check for call compatibility.
769 IF NOT FND_API.Compatible_API_Call (l_api_version,
770 p_api_version,
771 l_api_name,
772 G_PKG_NAME)
773 THEN
774 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
775 END IF;
776
777 -- Check p_init_msg_list
778 IF FND_API.to_Boolean( p_init_msg_list ) THEN
779 FND_MSG_PUB.initialize;
780 END IF;
781
782
783 -- Initialize API return status to success
784 x_return_status := FND_API.G_RET_STS_SUCCESS;
785
786 -- Get Functional Currency
787 IEX_CURRENCY_PVT.GET_FUNCT_CURR(p_api_version => l_api_version,
788 p_init_msg_list => l_init_msg_list,
789 p_commit => l_commit,
790 x_return_status => l_return_status,
791 x_msg_count => l_msg_count,
792 x_msg_data => l_msg_data,
793 x_functional_currency => l_currency_functional);
794
795 -- Get Collections default conversion type
796 l_conversion_type := fnd_profile.value('IEX_EXCHANGE_RATE_TYPE');
797
798 -- Get precision and minimum account unit for functional currency
799 IEX_CURRENCY_PVT.GET_CURRENCY_DETAILS
800 (p_api_version => l_api_version,
801 p_init_msg_list => l_init_msg_list,
802 p_commit => l_commit,
803 x_return_status => l_return_status,
804 x_msg_count => l_msg_count,
805 x_msg_data => l_msg_data,
806 p_currency_code => l_currency_functional,
807 x_precision => l_precision,
808 x_mau => l_min_acc_unit);
809
810 IF (((l_currency_functional IS NULL) AND
811 (l_precision IS NULL) AND
812 (l_min_acc_unit IS NULL)) OR
813 (l_amount_original IS NULL) ) THEN
814 BEGIN
815
816 /* fnd_message('STD-FUNCT-AMT-INV-PAR'); */
817
818 RAISE l_invalid_params_exp;
819
820 END;
821 END IF;
822
823 -- Get functional amount
824 Get_Convert_Amount_Curr(
825 p_api_version => l_api_version,
826 p_init_msg_list => l_init_msg_list,
827 p_commit => l_commit,
828 p_validation_level => l_validation_level,
829 p_from_currency => l_currency_original,
830 p_to_currency => l_currency_functional,
831 p_conversion_date => l_exchange_date,
832 p_conversion_type => l_conversion_type,
833 p_amount_original => l_amount_original,
834 x_amount_converted => l_amount_functional,
835 x_return_status => l_return_status,
836 x_msg_count => l_msg_count,
837 x_msg_data => l_msg_data);
838
839 /*-----------------*
840 | Round correctly |
841 *-----------------*/
842
843 IF (l_min_acc_unit IS NULL) THEN
844 x_amount_functional := ROUND(l_amount_functional, l_precision);
845 ELSE
846 x_amount_functional := ROUND((l_amount_functional / l_min_acc_unit)) *
847 l_min_acc_unit;
848 END IF;
849
850
851 EXCEPTION
852 WHEN GL_CURRENCY_API.NO_RATE THEN
853 ROLLBACK TO Func_Amt_Curr_Pvt;
854 x_return_status := FND_API.G_RET_STS_ERROR;
855 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
856 FND_MSG_PUB.ADD;
857 FND_MSG_PUB.Count_And_Get(
858 p_encoded => FND_API.G_FALSE,
859 p_count => x_msg_count,
860 p_data => x_msg_data);
861 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
862 ROLLBACK TO Func_Amt_Curr_Pvt;
863 x_return_status := FND_API.G_RET_STS_ERROR;
864 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
865 FND_MSG_PUB.ADD;
866 FND_MSG_PUB.Count_And_Get(
867 p_encoded => FND_API.G_FALSE,
868 p_count => x_msg_count,
869 p_data => x_msg_data);
870 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
871 ROLLBACK TO Func_Amt_Curr_Pvt;
872 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
873 FND_MSG_PUB.Count_And_Get(
874 p_encoded => FND_API.G_FALSE,
875 p_count => x_msg_count,
876 p_data => x_msg_data);
877 WHEN OTHERS THEN
878 ROLLBACK TO Func_Amt_Curr_Pvt;
879 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
880 FND_MSG_PUB.Count_And_Get(
881 p_encoded => FND_API.G_FALSE,
882 p_count => x_msg_count,
883 p_data => x_msg_data);
884 END Get_Func_Amt_Curr;
885
886 /*===========================================================================+
887 | PROCEDURE |
888 | Get_Convert_Amount_Curr |
889 | |
890 | DESCRIPTION |
891 | This PROCEDURE takes from and to currencies, conversion date, |
892 | conversion type and amount and returns the amount converted into the |
893 | appropriate currency. |
894 | |
895 | |
896 | SCOPE - PRIVATE |
897 | |
898 | |
899 | ARGUMENTS : IN: |
900 | p_from_currency - From currency |
901 | p_to_currency - To currency |
902 | p_conversion_date - Conversion date |
903 | p_conversion_type - Conversion type |
904 | p_amount - the original foreign amount |
905 | OUT: |
906 | x_amount_converted - |
907 | the amount converted into the appropriate currency. |
908 | |
909 | IN/ OUT: |
910 | |
911 | NOTES |
912 | |
913 | MODIFICATION HISTORY |
914 | jypark 23-NOV-99 Created |
915 | |
916 +===========================================================================*/
917
918 PROCEDURE Get_Convert_Amount_Curr(
919 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
920 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
921 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
922 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
923 p_from_currency IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
924 p_to_currency IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
925 p_conversion_date IN DATE DEFAULT FND_API.G_MISS_DATE,
926 p_conversion_type IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
927 p_amount_original IN NUMBER DEFAULT FND_API.G_MISS_NUM,
928 x_amount_converted OUT NOCOPY NUMBER,
929 x_return_status OUT NOCOPY VARCHAR2,
930 x_msg_count OUT NOCOPY NUMBER,
931 x_msg_data OUT NOCOPY VARCHAR2
932 ) AS
933 l_from_currency VARCHAR2(15) := p_from_currency;
934 l_to_currency VARCHAR2(15) := p_to_currency;
935 l_conversion_date DATE := p_conversion_date;
936 l_conversion_type VARCHAR2(30) := p_conversion_type;
937 l_amount_original NUMBER := p_amount_original;
938
939 l_api_version CONSTANT NUMBER := 1.0;
940 l_api_name CONSTANT VARCHAR2(30) := 'Get_Convert_Amount_Curr';
941 l_return_status VARCHAR2(1);
942 l_msg_count NUMBER;
943 l_msg_data VARCHAR2(32767);
944 BEGIN
945 -- Standard begin of API savepoint
946 SAVEPOINT Convert_Amount_Curr_PVT;
947
948 -- Standard call to check for call compatibility.
949 IF NOT FND_API.Compatible_API_Call (l_api_version,
950 p_api_version,
951 l_api_name,
952 G_PKG_NAME)
953 THEN
954 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
955 END IF;
956
957 -- Check p_init_msg_list
958 IF FND_API.to_Boolean( p_init_msg_list ) THEN
959 FND_MSG_PUB.initialize;
960 END IF;
961
962 -- Initialize API return status to success
963 x_return_status := FND_API.G_RET_STS_SUCCESS;
964
965
966 x_amount_converted := gl_currency_api.convert_amount(x_from_currency => l_from_currency,
967 x_to_currency => l_to_currency,
968 x_conversion_date => l_conversion_date,
969 x_conversion_type => l_conversion_type,
970 x_amount => l_amount_original);
971
972 EXCEPTION
973 WHEN GL_CURRENCY_API.NO_RATE THEN
974 ROLLBACK TO Convert_Amount_Curr_PVT;
975 x_return_status := FND_API.G_RET_STS_ERROR;
976 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
977 FND_MSG_PUB.ADD;
978 FND_MSG_PUB.Count_And_Get(
979 p_encoded => FND_API.G_FALSE,
980 p_count => x_msg_count,
981 p_data => x_msg_data);
982 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
983 ROLLBACK TO Convert_Amount_Curr_PVT;
984 x_return_status := FND_API.G_RET_STS_ERROR;
985 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
986 FND_MSG_PUB.ADD;
987 FND_MSG_PUB.Count_And_Get(
988 p_encoded => FND_API.G_FALSE,
989 p_count => x_msg_count,
990 p_data => x_msg_data);
991 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
992 ROLLBACK TO Convert_Amount_Curr_PVT;
993 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
994 FND_MSG_PUB.Count_And_Get(
995 p_encoded => FND_API.G_FALSE,
996 p_count => x_msg_count,
997 p_data => x_msg_data);
998 WHEN OTHERS THEN
999 ROLLBACK TO Convert_Amount_Curr_PVT;
1000 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1001 FND_MSG_PUB.Count_And_Get(
1002 p_encoded => FND_API.G_FALSE,
1003 p_count => x_msg_count,
1004 p_data => x_msg_data);
1005 END;
1006
1007 /*===========================================================================+
1008 | PROCEDURE |
1009 | Get_Convert_Amount_Sob |
1010 | |
1011 | DESCRIPTION |
1012 | This PROCEDURE takes from and to currencies, conversion date, |
1013 | conversion type and amount and returns the amount converted into the |
1014 | appropriate currency. |
1015 | |
1016 | |
1017 | |
1018 | |
1019 | SCOPE - PRIVATE |
1020 | |
1021 | |
1022 | ARGUMENTS : IN: |
1023 | p_set_of_books_id - Set of books id |
1024 | p_from_currency - From currency |
1025 | p_conversion_date - Conversion date |
1026 | p_conversion_type - Conversion type |
1027 | p_amount - the original foreign amount |
1028 | OUT: |
1029 | x_amount_converted - |
1030 | the amount converted into the appropriate currency. |
1031 | |
1032 | IN/ OUT: |
1033 | NOTES |
1034 | |
1035 | MODIFICATION HISTORY |
1036 | jypark 23-NOV-99 Created |
1037 | |
1038 +===========================================================================*/
1039
1040 PROCEDURE Get_Convert_Amount_Sob(
1041 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1042 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1043 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1044 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1045 p_set_of_books_id IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
1046 p_from_currency IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
1047 p_conversion_date IN DATE DEFAULT FND_API.G_MISS_DATE,
1048 p_conversion_type IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
1049 p_amount_original IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1050 x_amount_converted OUT NOCOPY NUMBER,
1051 x_return_status OUT NOCOPY VARCHAR2,
1052 x_msg_count OUT NOCOPY NUMBER,
1053 x_msg_data OUT NOCOPY VARCHAR2
1054 ) IS
1055 l_set_of_books_id NUMBER(15) := p_set_of_books_id;
1056 l_from_currency VARCHAR2(15) := p_from_currency;
1057 l_conversion_date DATE := p_conversion_date;
1058 l_conversion_type VARCHAR2(30) := p_conversion_type;
1059 l_amount_original NUMBER := p_amount_original;
1060
1061 l_api_version CONSTANT NUMBER := 1.0;
1062 l_api_name CONSTANT VARCHAR2(30) := 'Get_Convert_Amount_Sob';
1063 l_return_status VARCHAR2(1);
1064 l_msg_count NUMBER;
1065 l_msg_data VARCHAR2(32767);
1066 BEGIN
1067
1068 -- Standard begin of API savepoint
1069 SAVEPOINT Convert_Amount_Sob_PVT;
1070
1071 -- Standard call to check for call compatibility.
1072 IF NOT FND_API.Compatible_API_Call (l_api_version,
1073 p_api_version,
1074 l_api_name,
1075 G_PKG_NAME)
1076 THEN
1077 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1078 END IF;
1079
1080 -- Check p_init_msg_list
1081 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1082 FND_MSG_PUB.initialize;
1083 END IF;
1084
1085 -- Initialize API return status to success
1086 x_return_status := FND_API.G_RET_STS_SUCCESS;
1087
1088
1089 x_amount_converted := gl_currency_api.convert_amount(x_set_of_books_id => p_set_of_books_id,
1090 x_from_currency => p_from_currency,
1091 x_conversion_date => p_conversion_date,
1092 x_conversion_type => p_conversion_type,
1093 x_amount => p_amount_original);
1094
1095 EXCEPTION
1096 WHEN GL_CURRENCY_API.NO_RATE THEN
1097 ROLLBACK TO Convert_Amount_Sob_PVT;
1098 x_return_status := FND_API.G_RET_STS_ERROR;
1099 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
1100 FND_MSG_PUB.ADD;
1101 FND_MSG_PUB.Count_And_Get(
1102 p_encoded => FND_API.G_FALSE,
1103 p_count => x_msg_count,
1104 p_data => x_msg_data);
1105 WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
1106 ROLLBACK TO Convert_Amount_Sob_PVT;
1107 x_return_status := FND_API.G_RET_STS_ERROR;
1108 FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
1109 FND_MSG_PUB.ADD;
1110 FND_MSG_PUB.Count_And_Get(
1111 p_encoded => FND_API.G_FALSE,
1112 p_count => x_msg_count,
1113 p_data => x_msg_data);
1114 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1115 ROLLBACK TO Convert_Amount_Sob_PVT;
1116 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1117 FND_MSG_PUB.Count_And_Get(
1118 p_encoded => FND_API.G_FALSE,
1119 p_count => x_msg_count,
1120 p_data => x_msg_data);
1121 WHEN OTHERS THEN
1122 ROLLBACK TO Convert_Amount_Sob_PVT;
1123 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1124 FND_MSG_PUB.Count_And_Get(
1125 p_encoded => FND_API.G_FALSE,
1126 p_count => x_msg_count,
1127 p_data => x_msg_data);
1128 END;
1129 /*===========================================================================+
1130 | PROCEDURE |
1131 | Get_Funct_Curr |
1132 | |
1133 | DESCRIPTION |
1134 | This PROCEDURE return functional currency of set of books |
1135 | |
1136 | |
1137 | |
1138 | |
1139 | SCOPE - PRIVATE |
1140 | |
1141 | |
1142 | ARGUMENTS : IN: |
1143 | |
1144 | OUT: |
1145 | x_functional_currency - Functional currency |
1146 | |
1147 | IN/ OUT: |
1148 | NOTES |
1149 | |
1150 | MODIFICATION HISTORY |
1151 | jypark 23-NOV-99 Created |
1152 | |
1153 +===========================================================================*/
1154 PROCEDURE Get_Funct_Curr(
1155 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1156 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1157 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1158 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1159 x_functional_currency OUT NOCOPY VARCHAR2,
1160 x_return_status OUT NOCOPY VARCHAR2,
1161 x_msg_count OUT NOCOPY NUMBER,
1162 x_msg_data OUT NOCOPY VARCHAR2
1163 ) IS
1164
1165 l_api_version CONSTANT NUMBER := 1.0;
1166 l_api_name CONSTANT VARCHAR2(30) := 'Get_Funct_Curr';
1167 l_return_status VARCHAR2(1);
1168 l_msg_count NUMBER;
1169 l_msg_data VARCHAR2(32767);
1170 BEGIN
1171 -- Standard begin of API savepoint
1172 SAVEPOINT Funct_Curr_PVT;
1173
1174 -- Standard call to check for call compatibility.
1175 IF NOT FND_API.Compatible_API_Call (l_api_version,
1176 p_api_version,
1177 l_api_name,
1178 G_PKG_NAME)
1179 THEN
1180 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1181 END IF;
1182
1183 -- Check p_init_msg_list
1184 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1185 FND_MSG_PUB.initialize;
1186 END IF;
1187
1188 -- Initialize API return status to success
1189 x_return_status := FND_API.G_RET_STS_SUCCESS;
1190
1191
1192 --Begin-Bug#4558398-08/16/2005-jypark-remove getting functional currency code from constructor and put in procedure get_funct_curr
1193 -- SELECT currency_code
1194 -- INTO x_functional_currency
1195 -- FROM gl_sets_of_books
1196 -- WHERE set_of_books_id = g_set_of_books_id;
1197
1198 SELECT gll.currency_code,
1199 gll.ledger_id
1200 INTO g_functional_currency,
1201 g_set_of_books_id
1202 FROM ar_system_parameters sp,
1203 gl_ledgers_public_v gll
1204 WHERE gll.ledger_id = sp.set_of_books_id;
1205
1206 x_functional_currency := g_functional_currency;
1207
1208 EXCEPTION
1209 -- WHEN GL_CURRENCY_API.NO_RATE THEN
1210 -- ROLLBACK TO Funct_Curr_PVT;
1211 -- x_return_status := FND_API.G_RET_STS_ERROR;
1212 -- FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
1213 -- FND_MSG_PUB.ADD;
1214 -- FND_MSG_PUB.Count_And_Get(
1215 -- p_encoded => FND_API.G_FALSE,
1216 -- p_count => x_msg_count,
1217 -- p_data => x_msg_data);
1218 -- WHEN GL_CURRENCY_API.INVALID_CURRENCY THEN
1219 -- ROLLBACK TO Funct_Curr_PVT;
1220 -- x_return_status := FND_API.G_RET_STS_ERROR;
1221 -- FND_MESSAGE.SET_NAME('SQLGL', 'GL INVALID CURRENCY CODE');
1222 -- FND_MSG_PUB.ADD;
1223 -- FND_MSG_PUB.Count_And_Get(
1224 -- p_encoded => FND_API.G_FALSE,
1225 -- p_count => x_msg_count,
1226 -- p_data => x_msg_data);
1227 -- WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1228 -- ROLLBACK TO Funct_Curr_PVT;
1229 -- x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1230 -- FND_MSG_PUB.Count_And_Get(
1231 -- p_encoded => FND_API.G_FALSE,
1232 -- p_count => x_msg_count,
1233 -- p_data => x_msg_data);
1234 -- WHEN OTHERS THEN
1235 -- ROLLBACK TO Funct_Curr_PVT;
1236 -- x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1237 -- FND_MSG_PUB.Count_And_Get(
1238 -- p_encoded => FND_API.G_FALSE,
1239 -- p_count => x_msg_count,
1240 -- p_data => x_msg_data);
1241 WHEN OTHERS THEN
1242 /* if there is no record or multiple org records then setting null */
1243 g_functional_currency := null;
1244 g_set_of_books_id := null;
1245
1246 --End-Bug#4558398-08/16/2005-jypark-remove getting functional currency code from constructor and put in procedure get_funct_curr
1247 END Get_Funct_Curr;
1248 /*===========================================================================+
1249 | PROCEDURE |
1250 | Get_Format_Mask |
1251 | |
1252 | DESCRIPTION |
1253 | This Procedure returns Format Mask For Currency |
1254 | |
1255 | SCOPE - PRIVATE |
1256 | |
1257 | ARGUMENTS : IN: |
1258 | p_currency_code : Currency Code |
1259 | p_field_length : Field Length |
1260 | OUT: |
1261 | x_format mask : Format Mask |
1262 | |
1263 | NOTES |
1264 | |
1265 | MODIFICATION HISTORY |
1266 | jypark 23-NOV-99 Created |
1267 | |
1268 +===========================================================================*/
1269 PROCEDURE Get_Format_Mask(
1270 p_api_version IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1271 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1272 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1273 p_validation_level IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1274 p_currency_code IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
1275 p_field_length IN NUMBER DEFAULT FND_API.G_MISS_NUM,
1276 x_format_mask OUT NOCOPY VARCHAR2,
1277 x_return_status OUT NOCOPY VARCHAR2,
1278 x_msg_count OUT NOCOPY NUMBER,
1279 x_msg_data OUT NOCOPY VARCHAR2
1280 ) IS
1281 l_api_version CONSTANT NUMBER := 1.0;
1282 l_api_name CONSTANT VARCHAR2(30) := 'Get_Format_Mask';
1283 l_return_status VARCHAR2(1);
1284 l_msg_count NUMBER;
1285 l_msg_data VARCHAR2(32767);
1286
1287 l_currency_code VARCHAR2(15) := p_currency_code;
1288 l_field_length NUMBER := p_field_length;
1289 l_format_mask VARCHAR2(1000);
1290
1291 BEGIN
1292 -- Standard begin of API savepoint
1293 SAVEPOINT Get_Format_Mask_PVT;
1294
1295 -- Standard call to check for call compatibility.
1296 IF NOT FND_API.Compatible_API_Call (l_api_version,
1297 p_api_version,
1298 l_api_name,
1299 G_PKG_NAME)
1300 THEN
1301 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1302 END IF;
1303
1304 -- Check p_init_msg_list
1305 IF FND_API.to_Boolean( p_init_msg_list ) THEN
1306 FND_MSG_PUB.initialize;
1307 END IF;
1308
1309 -- Initialize API return status to success
1310 x_return_status := FND_API.G_RET_STS_SUCCESS;
1311
1312 x_format_mask := FND_CURRENCY.Get_Format_Mask(l_currency_code, l_field_length);
1313
1314 EXCEPTION
1315 WHEN GL_CURRENCY_API.NO_RATE THEN
1316 ROLLBACK TO Get_Format_Mask_PVT;
1317 x_return_status := FND_API.G_RET_STS_ERROR;
1318 FND_MESSAGE.SET_NAME('SQLGL', 'GL_JE_INVALID_CONVERSION_INFO');
1319 FND_MSG_PUB.ADD;
1320 FND_MSG_PUB.Count_And_Get(
1321 p_encoded => FND_API.G_FALSE,
1322 p_count => x_msg_count,
1323 p_data => x_msg_data);
1324 WHEN OTHERS THEN
1325 ROLLBACK TO Get_Format_Mask_PVT;
1326 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1327 FND_MSG_PUB.Count_And_Get(
1328 p_encoded => FND_API.G_FALSE,
1329 p_count => x_msg_count,
1330 p_data => x_msg_data);
1331 END Get_Format_Mask;
1332
1333 /*===========================================================================+
1334 | PROCEDURE |
1335 | Get_Currency_Count |
1336 | |
1337 | DESCRIPTION |
1338 | This Procedure returns count of functional currency |
1339 for which the mo profile has access. |
1340 | |
1341 | SCOPE - PRIVATE |
1342 | |
1343 | ARGUMENTS : IN: |
1344 | NULL |
1345 | RETURN : |
1346 | Number |
1347 | |
1348 | NOTES |
1349 | |
1350 | MODIFICATION HISTORY |
1351 | lkkumar 31-May-2005 Created |
1352 | |
1353 +===========================================================================*/
1354 FUNCTION Get_Currency_Count Return Number IS
1355 cnt_currency Number;
1356 BEGIN
1357 SELECT count(distinct gll.currency_code)
1358 INTO cnt_currency
1359 FROM ar_system_parameters sp,
1360 gl_ledgers_public_v gll
1361 WHERE gll.ledger_id = sp.set_of_books_id;
1362 Return (cnt_currency);
1363 EXCEPTION WHEN OTHERS THEN
1364 Return (Null);
1365 END Get_Currency_count;
1366
1367
1368 --
1369
1370 --
1371 --
1372 --
1373 -- constructor section
1374 --
1375 --Begin-Bug#4558398-08/16/2005-jypark-remove getting functional currency code from constructor and put in procedure get_funct_curr
1376 BEGIN
1377 -- SELECT sob.currency_code,
1378 -- sob.set_of_books_id
1379 -- INTO g_functional_currency,
1380 -- g_set_of_books_id
1381 -- FROM ar_system_parameters sp,
1382 -- gl_sets_of_books sob
1383 -- WHERE sob.set_of_books_id = sp.set_of_books_id;
1384 -- EXCEPTION
1385 -- WHEN OTHERS THEN
1386 -- RAISE;
1387 --Begin-Bug#4558398-08/16/2005-jypark-remove getting functional currency code from constructor and put in procedure get_funct_curr
1388 --
1389 g_next_element := 0;
1390 PG_DEBUG := TO_NUMBER(NVL(FND_PROFILE.value('IEX_DEBUG_LEVEL'), '20'));
1391
1392 END IEX_CURRENCY_PVT;