DBA Data[Home] [Help]

PACKAGE BODY: APPS.PON_LOCALE_PKG

Source


1 PACKAGE BODY PON_LOCALE_PKG as
2 /*$Header: PONLOCB.pls 120.5 2007/07/12 12:44:18 pchintap ship $ */
3 
4 /**
5  * This procedure takes a first name and last name of a person.
6  * It also takes in the desired name format and the party id of
7  * the person who is receiving the email notification. It formats
8  * the name according to the locale settings of the person receiving
9  * the email.
10  */
11 
12 PROCEDURE retrieve_party_display_name (
13   p_first_name	   IN VARCHAR2
14 , p_last_name      IN VARCHAR2
15 , p_mid_name       IN VARCHAR2
16 , p_prefix         IN  VARCHAR2
17 , p_suffix         IN  VARCHAR2
18 , p_party_id       IN NUMBER
19 , p_name_format    IN NUMBER
20 , p_language       IN VARCHAR2
21 , x_display_name  OUT NOCOPY VARCHAR2
22 , x_status        OUT NOCOPY VARCHAR2
23 , x_exception_msg OUT NOCOPY VARCHAR2
24 )
25 IS
26   l_first_name hz_parties.PERSON_FIRST_NAME%TYPE;
27   l_last_name hz_parties.PERSON_LAST_NAME%TYPE;
28   l_mid_name hz_parties.PERSON_MIDDLE_NAME%TYPE;
29   l_prefix hz_parties.PERSON_TITLE%TYPE;
30   l_suffix hz_parties.PERSON_NAME_SUFFIX%TYPE;
31   l_prefix_space VARCHAR2(1);
32   l_prefix_comma VARCHAR2(2);
33   l_first_name_space VARCHAR2(1);
34   l_suffix_space VARCHAR2(1);
35   l_middle_name_space VARCHAR2(1);
36   l_first_name_comma VARCHAR2(2);
37   l_prefix_first_name_comma VARCHAR2(1);
38 BEGIN
39 
40       IF ( p_first_name is null or p_last_name is null) THEN
41           IF (p_party_id is null) THEN
42             x_display_name := '';
43             x_exception_msg := 'Party Id can not be null if first name is missing';
44             x_status := 'E';
45           ELSE
46            select person_first_name , person_last_name, person_title,
47                 person_name_suffix ,PERSON_MIDDLE_NAME
48             into l_first_name, l_last_name, l_prefix, l_suffix, l_mid_name
49            from hz_parties
50             where party_id = p_party_id;
51          END IF;
52      ELSE
53          l_first_name := p_firsT_name;
54          l_last_name := p_last_name;
55          l_mid_name := p_mid_name;
56          l_suffix := p_suffix;
57          l_prefix := p_prefix;
58       END IF;
59 
60 	SELECT nvl2(l_prefix,' ',''),
61             nvl2(l_prefix,', ',''),
62             nvl2(l_first_name, ' ',''),
63             nvl2(l_suffix, ' ', ''),
64             nvl2(l_mid_name, ' ',''),
65             nvl2(l_first_name, ', ',''),
66             nvl2(l_prefix,',', nvl2(l_first_name,',',''))
67 	INTO
68           l_prefix_space,
69           l_prefix_comma,
70           l_first_name_space,
71           l_suffix_space,
72           l_middle_name_space,
73           l_first_name_comma,
74           l_prefix_first_name_comma
75 
76 	FROM dual;
77 
78 	-- Format the name according to the language preferences
79         -- of the person receiving the email.
80         IF (x_status = 'E') THEN
81                 x_display_name := '';
82 	ELSIF (p_language = 'JA' or p_language = 'ZHS' or p_language = 'ZHT' or p_language = 'KO') THEN
83 		-- Name is Japanese, Chinese, or Korean
84 		IF (p_name_format = NAME_LAST or  -- last name alone is not allowed here
85 		    p_name_format = NAME_LAST_FIRST or
86 		    p_name_format = NAME_FIRST_LAST or
87 		    p_name_format = NAME_F_M_L_SUFFIX or
88 		    p_name_format = NAME_FIRST_M_LAST) THEN
89 			x_display_name := l_last_name || l_first_name;
90 
91 		ELSIF (p_name_format = NAME_TITLE_LAST_FIRST or
92 		       p_name_format = NAME_LAST_TITLE_FIRST or
93               	       p_name_format = NAME_TITLE_FIRST_LAST or
94                        p_name_format = NAME_TITLE_FIRST or
95               	       p_name_format = NAME_PREFIX_F_M_L_SUFFIX) THEN
96 			x_display_name := l_last_name || l_first_name || l_prefix_space || l_prefix;
97 
98 		ELSIF (p_name_format = NAME_TITLE_LAST) THEN
99 			x_display_name := l_last_name || l_prefix;
100 		ELSIF (p_name_format = NAME_FIRST) THEN
101 		   IF (p_language = 'JA' or p_language = 'ZHS') THEN
102 			x_display_name := l_last_name || l_first_name;
103 		   ELSE
104 			x_display_name := l_first_name;
105 		   END IF;
106 
107 		END IF;
108 
109         ELSIF p_language = 'HU' THEN
110                 -- Name is Hungarian
111 
112                 IF p_name_format = NAME_LAST THEN
113                         x_display_name := l_last_name;
114 		ELSIF p_name_format = NAME_TITLE_LAST THEN
115 			x_display_name := l_prefix || l_prefix_space || l_last_name;
116                 ELSIF (p_name_format = NAME_TITLE_LAST_FIRST or
117                        p_name_format = NAME_LAST_TITLE_FIRST or
118 		       p_name_format = NAME_TITLE_FIRST_LAST or
119 	               p_name_format = NAME_TITLE_FIRST) THEN
120                         x_display_name := l_prefix || l_prefix_space || l_last_name || l_first_name_space || l_first_name;
121 		ELSIF p_name_format = NAME_F_M_L_SUFFIX THEN
122 			x_display_name := l_suffix || l_suffix_space || l_last_name || l_first_name_space || l_first_name || l_middle_name_space || l_mid_name;
123 		ELSIF p_name_format = NAME_FIRST_M_LAST THEN
124 			x_display_name := l_last_name || l_first_name_space || l_first_name || l_middle_name_space || l_mid_name;
125 		ELSIF p_name_format = NAME_PREFIX_F_M_L_SUFFIX THEN
126 			x_display_name := l_prefix || l_prefix_space ||l_suffix || l_suffix_space || l_last_name || l_first_name_space || l_first_name || l_middle_name_space || l_mid_name;
127 		ELSE
128 			x_display_name := l_last_name || l_first_name_space || l_first_name;
129                 END IF;
130 
131 	ELSE
132 		-- Name is in other languages
133 		IF p_name_format = NAME_LAST_FIRST THEN
134 			x_display_name := l_last_name || l_first_name_comma || l_first_name;
135 		ELSIF p_name_format = NAME_FIRST_M_LAST THEN
136 			x_display_name := l_first_name || l_first_name_space || l_mid_name || l_middle_name_space || l_last_name;
137 		ELSIF p_name_format = NAME_TITLE_LAST_FIRST THEN
138 			x_display_name := l_prefix || l_prefix_space || l_last_name || l_first_name_comma || l_first_name;
139 	        ELSIF p_name_format = NAME_LAST_TITLE_FIRST THEN
140 		        x_display_name := l_last_name || ',' || l_prefix_space ||  l_prefix || l_first_name_space || l_first_name;
141 		ELSIF p_name_format = NAME_PREFIX_F_M_L_SUFFIX THEN
142 			x_display_name := l_prefix || l_prefix_space || l_first_name || l_first_name_space || l_mid_name || l_middle_name_space || l_last_name || l_suffix_space || l_suffix;
143 		ELSIF p_name_format = NAME_TITLE_FIRST_LAST THEN
144 			x_display_name := l_prefix || l_prefix_space || l_first_name || l_first_name_space || l_last_name;
145 		ELSIF p_name_format = NAME_TITLE_FIRST THEN
146 			x_display_name := l_prefix || l_prefix_space || l_first_name;
147 		ELSIF p_name_format = NAME_TITLE_LAST THEN
148 			x_display_name := l_prefix || l_prefix_space || l_last_name;
149 		ELSIF p_name_format = NAME_F_M_L_SUFFIX THEN
150 			x_display_name := l_first_name || l_first_name_space || l_mid_name || l_middle_name_space|| l_last_name || l_suffix_space || l_suffix;
151 		ELSIF p_name_format = NAME_FIRST THEN
152 			x_display_name := l_first_name;
153 		ELSIF p_name_format = NAME_LAST THEN
154 			x_display_name := l_last_name;
155 		ELSE
156 			x_display_name := l_first_name || l_first_name_space || l_last_name;
157 		END IF;
158 	END IF;
159   x_status := 'S';
160 EXCEPTION
161   WHEN OTHERS THEN
162     x_status := 'E';
163 END retrieve_party_display_name;
164 
165 PROCEDURE party_display_name (
166   p_first_name	   IN VARCHAR2
167 , p_last_name      IN VARCHAR2
168 , p_middle_name   IN VARCHAR2
169 , p_prefix         IN VARCHAR2
170 , p_suffix         IN VARCHAR2
171 , p_name_format    IN NUMBER
172 , p_language       IN VARCHAR2
173 , x_display_name  OUT NOCOPY VARCHAR2
174 , x_status        OUT NOCOPY VARCHAR2
175 , x_exception_msg OUT NOCOPY VARCHAR2
176 )
177 IS
178 BEGIN
179    retrieve_party_display_name (p_first_name,
180 				p_last_name,
181 				p_middle_name,
182 				p_prefix,
183 				p_suffix,
184 				null,
185 				p_name_format,
186                                 p_language,
187 				x_display_name,
188 				x_status,
189 				x_exception_msg);
190 
191 END party_display_name;
192 
193 
194 PROCEDURE party_display_name (
195   p_first_name	   IN VARCHAR2
196 , p_last_name      IN VARCHAR2
197 , p_name_format    IN NUMBER
198 , p_language       IN VARCHAR2
199 , x_display_name  OUT NOCOPY VARCHAR2
200 , x_status        OUT NOCOPY VARCHAR2
201 , x_exception_msg OUT NOCOPY VARCHAR2
202 )
203 IS
204 BEGIN
205 
206    party_display_name (p_first_name,
207                        p_last_name,
208 			'',
209 			'',
210                         '',
211 		        p_name_format,
212                         p_language,
213 		        x_display_name,
214 			x_status,
215 			x_exception_msg);
216 END party_display_name;
217 
218 
219 /**
220  * This procedure takes in the party id and returns the display name
221  * according to the desired format and the persons locale preferences
222  */
223 
224 PROCEDURE retrieve_party_display_name (
225   p_party_id       IN NUMBER
226 , p_name_format    IN NUMBER
227 , p_language       IN VARCHAR2
228 , x_display_name  OUT NOCOPY VARCHAR2
229 , x_status        OUT NOCOPY VARCHAR2
230 , x_exception_msg OUT NOCOPY VARCHAR2
231 )
232 IS
233 
234   l_first_name hz_parties.PERSON_FIRST_NAME%TYPE;
235   l_last_name hz_parties.PERSON_LAST_NAME%TYPE;
236   l_mid_name hz_parties.PERSON_MIDDLE_NAME%TYPE;
237   l_prefix hz_parties.PERSON_PRE_NAME_ADJUNCT%TYPE;
238   l_suffix hz_parties.PERSON_NAME_SUFFIX%TYPE;
239 
240 BEGIN
241 
242         -- Get the First Name and the Last Name
243         select PERSON_FIRST_NAME, PERSON_LAST_NAME , PERSON_MIDDLE_NAME,PERSON_NAME_SUFFIX, FL.MEANING
244         into l_first_name, l_last_name ,l_mid_name,l_suffix,l_prefix
245         from hz_parties, fnd_lookup_values fl
246 	where PARTY_ID = p_party_id
247 	AND fl.lookup_type(+) = 'CONTACT_TITLE'
248 	AND fl.lookup_code(+) = person_pre_name_adjunct
249         AND fl.view_application_id(+) = 222
250         AND fl.security_group_id(+) = 0
251 	AND fl.language(+) = userenv('lang');
252 
253 	retrieve_party_display_name(p_first_name  	=> l_first_name,
254 				    p_last_name		=> l_last_name,
255 				    p_mid_name 		=> l_mid_name,
256 				    p_prefix 		=> l_prefix,
257 				    p_suffix 		=> l_suffix,
258 				    p_party_id 		=> p_party_id,
259 				    p_name_format 	=> p_name_format,
260                                     p_language          => p_language,
261 				    x_display_name 	=> x_display_name,
262   				    x_status 		=> x_status,
263 				    x_exception_msg 	=> x_exception_msg);
264 EXCEPTION
265   WHEN OTHERS THEN BEGIN
266     x_status := 'E';
267     x_exception_msg := 'exception in retreiving the name';
268   END;
269 END retrieve_party_display_name;
270 
271 FUNCTION get_party_display_name(
272   p_party_id NUMBER
273 , p_name_format NUMBER
274 , p_language VARCHAR2)
275                      RETURN VARCHAR2
276 IS
277   v_display_name VARCHAR2(240):=null;
278   v_status       VARCHAR2(240) := null;
279   v_msg          VARCHAR2(240) := null;
280 BEGIN
281    retrieve_party_display_name(p_party_id , p_name_format, p_language, v_display_name,v_status, v_msg);
282    RETURN v_display_name;
283 END get_party_display_name;
284 
285 
286 FUNCTION get_party_display_name(p_party_id NUMBER)
287                      RETURN VARCHAR2
288 IS
289 BEGIN
290    RETURN get_party_display_name(p_party_id ,
291                                  name_last_title_first,
292                                  userenv('LANG')
293                                 );
294 END get_party_display_name;
295 
296 /**
297   Retrieves Party display name according to the given Name format.
298   Wrapper on the procedure retrieve_party_display_name
299 */
300 FUNCTION party_display_name(
301   p_first_name	   IN VARCHAR2
302 , p_last_name      IN VARCHAR2
303 , p_middle_name    IN VARCHAR2
304 , p_prefix         IN VARCHAR2
305 , p_suffix         IN VARCHAR2
306 , p_language       IN VARCHAR2)
307 RETURN VARCHAR2
308 IS
309   v_display_name VARCHAR2(240):=null;
310   v_status       VARCHAR2(240) := null;
311   v_msg          VARCHAR2(240) := null;
312 BEGIN
313 
314    if (fnd_log.level_statement >= fnd_log.g_current_runtime_level) then
315         fnd_log.string(
316           log_level => fnd_log.level_statement,
317           module    =>'PON_LOCALE_PKG',
318           message   =>'Entered the function with parameters -- ' ||
319                       ' p_first_name : ' || p_first_name ||
320                       ' p_last_name : ' || p_last_name ||
321                       ' p_middle_name : ' || p_middle_name ||
322                       ' p_prefix : ' || p_prefix ||
323                       ' p_suffix : ' || p_suffix ||
324                       ' p_language : ' || p_language
325           );
326    end if;
327 
328    retrieve_party_display_name (p_first_name,
329 				p_last_name,
330 				p_middle_name,
331 				p_prefix,
332 				p_suffix,
333 				null, -- no need of party id
334 				default_name_display_pattern,
335         p_language,
336 				v_display_name,
337 				v_status,
338 				v_msg);
339 
340    if (fnd_log.level_statement >= fnd_log.g_current_runtime_level) then
341         fnd_log.string(
342           log_level => fnd_log.level_statement,
343           module    =>'PON_LOCALE_PKG',
344           message   =>'v_status : ' || v_status || '; v_status : ' || v_status || ' ;Returning the value v_display_name : '||v_display_name);
345    end if;
346    RETURN v_display_name;
347 END party_display_name;
348 
349 
350 END PON_LOCALE_PKG;