1 PACKAGE BODY HR_FR_UTILITY AS
2 /* $Header: hrfrutl1.pkb 120.0.12010000.4 2009/12/23 09:55:08 dchindar ship $ */
3 --
4 FUNCTION per_fr_full_name(
5 p_first_name in varchar2
6 ,p_middle_names in varchar2
7 ,p_last_name in varchar2
8 ,p_known_as in varchar2
9 ,p_title in varchar2
10 ,p_suffix in varchar2
11 ,p_pre_name_adjunct in varchar2
12 ,p_per_information1 in varchar2
13 ,p_per_information2 in varchar2
14 ,p_per_information3 in varchar2
15 ,p_per_information4 in varchar2
16 ,p_per_information5 in varchar2
17 ,p_per_information6 in varchar2
18 ,p_per_information7 in varchar2
19 ,p_per_information8 in varchar2
20 ,p_per_information9 in varchar2
21 ,p_per_information10 in varchar2
22 ,p_per_information11 in varchar2
23 ,p_per_information12 in varchar2
24 ,p_per_information13 in varchar2
25 ,p_per_information14 in varchar2
26 ,p_per_information15 in varchar2
27 ,p_per_information16 in varchar2
28 ,p_per_information17 in varchar2
29 ,p_per_information18 in varchar2
30 ,p_per_information19 in varchar2
31 ,p_per_information20 in varchar2
32 ,p_per_information21 in varchar2
33 ,p_per_information22 in varchar2
34 ,p_per_information23 in varchar2
35 ,p_per_information24 in varchar2
36 ,p_per_information25 in varchar2
37 ,p_per_information26 in varchar2
38 ,p_per_information27 in varchar2
39 ,p_per_information28 in varchar2
40 ,p_per_information29 in varchar2
41 ,p_per_information30 in VARCHAR2
42 )
43 RETURN VARCHAR2 IS
44 --
45 l_full_name per_all_people_f.full_name%type;
46 --
47 BEGIN
48 --
49 -- l_full_name := p_title || ' ' || p_last_name || ' ' || p_first_name;
50 if p_title is null then
51 l_full_name := substr(p_last_name || ', ' || p_first_name,1,240);
52 else
53 l_full_name := substr(p_last_name || ', ' || hr_general.decode_lookup('TITLE',p_title) || ' ' || p_first_name,1,240);
54 end if;
55 return (rtrim(l_full_name));
56 --
57 END;
58 --
59 --
60 FUNCTION per_fr_order_name(
61 p_first_name in varchar2
62 ,p_middle_names in varchar2
63 ,p_last_name in varchar2
64 ,p_known_as in varchar2
65 ,p_title in varchar2
66 ,p_suffix in varchar2
67 ,p_pre_name_adjunct in varchar2
68 ,p_per_information1 in varchar2
69 ,p_per_information2 in varchar2
70 ,p_per_information3 in varchar2
71 ,p_per_information4 in varchar2
72 ,p_per_information5 in varchar2
73 ,p_per_information6 in varchar2
74 ,p_per_information7 in varchar2
75 ,p_per_information8 in varchar2
76 ,p_per_information9 in varchar2
77 ,p_per_information10 in varchar2
78 ,p_per_information11 in varchar2
79 ,p_per_information12 in varchar2
80 ,p_per_information13 in varchar2
81 ,p_per_information14 in varchar2
82 ,p_per_information15 in varchar2
83 ,p_per_information16 in varchar2
84 ,p_per_information17 in varchar2
85 ,p_per_information18 in varchar2
86 ,p_per_information19 in varchar2
87 ,p_per_information20 in varchar2
88 ,p_per_information21 in varchar2
89 ,p_per_information22 in varchar2
90 ,p_per_information23 in varchar2
91 ,p_per_information24 in varchar2
92 ,p_per_information25 in varchar2
93 ,p_per_information26 in varchar2
94 ,p_per_information27 in varchar2
95 ,p_per_information28 in varchar2
96 ,p_per_information29 in varchar2
97 ,p_per_information30 in VARCHAR2
98 )
99 RETURN VARCHAR2 IS
100 --
101 l_order_name per_all_people_f.order_name%type;
102 --
103 BEGIN
104 --
105 l_order_name := substr(p_last_name || ' ' || p_first_name,1,240);
106 return (rtrim(l_order_name));
107 --
108 END;
109 --
110 --
111
112 ----
113 -- Function for Account Number Validation
114 ----
115
116 FUNCTION validate_account_number
117 (p_account_number IN VARCHAR2,
118 p_bank_code IN VARCHAR2,
119 p_branch_code IN VARCHAR2) RETURN NUMBER IS
120 l_ret NUMBER ;
121 BEGIN
122
123 select decode(
124 decode(substr(translate(p_account_number,'0123456789','9999999999'),12,3), '-99',1,0) +
125 decode(length(p_account_number),14,1,0) +
126 decode(translate (substr(p_account_number,1,11),
127 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'),
128 'AAAAAAAAAAA',1,0) +
129 mod(to_number(translate(translate(translate(translate(translate
130 (translate(translate(translate(translate(
131 substr(rpad(p_bank_code,5,0) ||
132 rpad(p_branch_code,5,0) ||
133 rpad(substr(replace(p_account_number, '-'),1,11),11,0)||
134 rpad(substr( Replace(p_account_number, '-' ) ,12,2),2,0),1,23),
135 'AJ','11'), 'BKS','222'), 'CLT','333'), 'DMU','444'), 'ENV','555'),
136 'FOW','666'), 'GPX','777'), 'HQY','888'), 'IRZ','999')),97),3, 1, 0)
137 INTO l_ret
138 FROM dual ;
139
140 return l_ret;
141 END validate_account_number;
142
143
144
145
146 ----
147 -- Function added for IBAN Validation
148 ----
149 FUNCTION validate_iban_acc(p_account_no VARCHAR2)RETURN NUMBER IS
150 BEGIN
151 IF IBAN_VALIDATION_PKG.validate_iban_acc(p_account_no) = 1 then
152 RETURN 1;
153 else
154 RETURN 0;
155 END IF;
156 END validate_iban_acc;
157
158 ----
159 -- This function will get called from the bank keyflex field segments
160 ----
161 FUNCTION validate_account_entered (p_bank_code VARCHAR2 default null
162 ,p_branch_code VARCHAR2 default null
163 ,p_account_number VARCHAR2 default null
164 ,p_acc_type varchar2
165 ,p_iban_acc varchar2 default null) return number IS
166
167 l_ret NUMBER ;
168 BEGIN
169 -- hr_utility.trace_on(null,'ACCVAL');
170 l_ret :=0;
171
172 hr_utility.set_location('p_account_number ' || p_account_number,1);
173 hr_utility.set_location('p_acc_type ' || p_acc_type,1);
174 hr_utility.set_location('p_iban_acc ' || p_iban_acc,1);
175 hr_utility.set_location('p_bank_code ' || p_bank_code,1);
176 hr_utility.set_location('p_branch_code ' || p_branch_code,1);
177
178 --------------------------------------------------------------------------------
179 -- If account type is normal (N) call the validate_account_number
180 --------------------------------------------------------------------------------
181 if p_acc_type = 'N' then
182 if p_account_number is null then
183 l_ret := 2;
184 return l_ret;
185 end if;
186 if ( p_bank_code is not null and p_branch_code is not null and
187 p_account_number is not null) then
188
189 l_ret := validate_account_number (
190 p_account_number => p_account_number
191 ,p_bank_code => p_bank_code
192 ,p_branch_code => p_branch_code
193 );
194 -- l_ret will have 1 if validation paased.
195 end if;
196 return l_ret;
197 end if;
198
199 --------------------------------------------------------------------------------
200 -- If account type is IBAN (Y) call the validate_iban_acc
201 --------------------------------------------------------------------------------
202 if p_acc_type = 'Y' then
203 if p_iban_acc is null then
204 l_ret :=2;
205 else
206 l_ret := validate_iban_acc
207 ( p_account_no => p_iban_acc
208 );
209 end if;
210 return l_ret;
211 end if;
212
213 --------------------------------------------------------------------------------
214 -- If account type is Combine (C) check if at least one account is not null
215 --------------------------------------------------------------------------------
216
217 IF p_acc_type = 'C' and (p_account_number is not null
218 or p_iban_acc is not null) then
219 hr_utility.set_location(' inside first if',1);
220 return l_ret;
221 end if;
222 l_ret := 3;
223 return l_ret;
224
225 END validate_account_entered;
226
227
228 END HR_FR_UTILITY;