1 PACKAGE BODY hr_number AS
2 /* $Header: hrutlnmw.pkb 120.4 2005/08/05 00:07:47 raranjan noship $ */
3
4 CURSOR gcsr_group_separator(p_parameter in varchar2) IS
5 SELECT value
6 FROM V$NLS_PARAMETERS
7 WHERE parameter = p_parameter;
8
9 g_group_separator V$NLS_PARAMETERS.VALUE%TYPE;
10 g_currency V$NLS_PARAMETERS.VALUE%TYPE;
11
12 -- ------------------------------------------------------------------------
13 -- number_to_canonical
14 -- convert number to canonical format number string
15 -- ------------------------------------------------------------------------
16 FUNCTION number_to_canonical
17 (p_number in number)
18 RETURN varchar2 IS
19 BEGIN
20
21 OPEN gcsr_group_separator('NLS_NUMERIC_CHARACTERS');
22 FETCH gcsr_group_separator INTO g_group_separator;
23 CLOSE gcsr_group_separator;
24
25 RETURN REPLACE(TO_CHAR(p_number),SUBSTR(g_group_separator,1,1),'.');
26
27 END number_to_canonical;
28
29 -- ------------------------------------------------------------------------
30 -- canonical_to_number
31 -- convert canonical number to Oracle number
32 -- ------------------------------------------------------------------------
33 FUNCTION canonical_to_number
34 (p_canonical in varchar2)
35 RETURN number IS
36
37 l_canonical varchar2(2000);
38
39 BEGIN
40
41 OPEN gcsr_group_separator('NLS_NUMERIC_CHARACTERS');
42 FETCH gcsr_group_separator INTO g_group_separator;
43 CLOSE gcsr_group_separator;
44
45 l_canonical := REPLACE(p_canonical, ',');
46
47 RETURN TO_NUMBER(REPLACE(l_canonical, '.', SUBSTR(g_group_separator,1,1)));
48
49 END canonical_to_number;
50
51 -- ------------------------------------------------------------------------
52 -- charnumber_to_number
53 -- convert character number in display format to Oracle number
54 -- ------------------------------------------------------------------------
55 FUNCTION charnumber_to_number
56 (p_charnumber in varchar2)
57 RETURN number IS
58
59 BEGIN
60
61 IF hr_util_misc_web.is_valid_number(p_charnumber) = TRUE THEN
62
63 OPEN gcsr_group_separator('NLS_NUMERIC_CHARACTERS');
64 FETCH gcsr_group_separator INTO g_group_separator;
65 CLOSE gcsr_group_separator;
66
67 RETURN TO_NUMBER(REPLACE(p_charnumber, SUBSTR(g_group_separator,2,1)));
68
69 ELSE
70 RAISE hr_util_web.g_error_handled;
71 END IF;
72
73 END charnumber_to_number;
74
75 -- ------------------------------------------------------------------------
76 -- charnumber_to_canonical
77 -- convert character number in display format to canonical number
78 -- ------------------------------------------------------------------------
79 FUNCTION charnumber_to_canonical
80 (p_charnumber in varchar2)
81 RETURN varchar2 IS
82 BEGIN
83
84 RETURN number_to_canonical(charnumber_to_number(p_charnumber));
85
86 END charnumber_to_canonical;
87
88 -- ------------------------------------------------------------------------
89 -- canonical_to_charnumber
90 -- convert canonical number string to character number string
91 -- ------------------------------------------------------------------------
92 FUNCTION canonical_to_charnumber
93 (p_canonical in varchar2)
94 RETURN varchar2 IS
95 BEGIN
96
97 RETURN TO_CHAR(canonical_to_number(p_canonical));
98
99 END canonical_to_charnumber;
100
101 -- ------------------------------------------------------------------------
102 -- charcurrency_to_canonical
103 -- convert character currency in display format to canonical number string
104 -- ------------------------------------------------------------------------
105 FUNCTION charcurrency_to_canonical
106 (p_charcurrency in varchar2)
107 RETURN varchar2 IS
108
109 BEGIN
110
111 OPEN gcsr_group_separator('NLS_CURRENCY');
112 FETCH gcsr_group_separator INTO g_currency;
113 CLOSE gcsr_group_separator;
114
115 RETURN charnumber_to_canonical
116 (REPLACE(p_charcurrency,SUBSTR(g_currency,1,1)));
117
118 END charcurrency_to_canonical;
119
120 -- ------------------------------------------------------------------------
121 -- canonical_to_charcurrency
122 -- convert canonical number string to character currency string
123 -- ------------------------------------------------------------------------
124 FUNCTION canonical_to_charcurrency
125 (p_canonical in varchar2)
126 RETURN varchar2 IS
127
128 l_currency varchar2(2000);
129
130 BEGIN
131
132 l_currency := canonical_to_charnumber(p_canonical);
133 l_currency := to_char(to_number(p_canonical),'FML999G999G999D00');
134
135 RETURN l_currency;
136
137 END canonical_to_charcurrency;
138
139 END hr_number;