DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_NUMBER

Source


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;