DBA Data[Home] [Help]

PACKAGE BODY: APPS.AS_ISSUE_UTIL_PVT

Source


1 PACKAGE BODY AS_ISSUE_UTIL_PVT AS
2 /* $Header: asxvifub.pls 115.5 2002/11/06 00:59:05 appldev ship $ */
3 
4 --
5 -- NAME
6 --
7 --
8 -- HISTORY
9 --  12/11/01       dphan     Create
10 --
11 
12 G_PKG_NAME      CONSTANT VARCHAR2(30):='AS_ISSUE_UTIL_PVT';
13 G_FILE_NAME     CONSTANT VARCHAR2(12):='asxvifub.pls';
14 
15 -- Procedure to validate the party_id
16 --
17 -- Validation:
18 --    Check if this party is in the HZ_PARTY table
19 --
20 -- NOTES:
21 --
22 PROCEDURE Validate_party_id (
23     p_init_msg_list       IN       VARCHAR2 := FND_API.G_FALSE,
24     p_party_id            IN       NUMBER,
25     x_return_status       OUT      VARCHAR2,
26     x_msg_count           OUT      NUMBER,
27     x_msg_data            OUT      VARCHAR2) IS
28 
29     CURSOR C_party_exists (x_party_id NUMBER) IS
30     SELECT  1
31     FROM  HZ_PARTIES
32     WHERE party_id = x_party_id;
33 
34     l_val            VARCHAR2(1);
35 
36 BEGIN
37 
38     -- initialize message list if p_init_msg_list is set to TRUE;
39 
40     IF FND_API.to_Boolean(p_init_msg_list) THEN
41         FND_MSG_PUB.initialize;
42     END IF;
43 
44     x_return_status := FND_API.G_RET_STS_SUCCESS;
45 
46     IF (p_party_id is NOT NULL) and
47        (p_party_id <> FND_API.G_MISS_NUM) THEN
48 
49         OPEN C_party_exists(p_party_id);
50         FETCH C_party_exists into l_val;
51         IF (C_party_exists%NOTFOUND) THEN
52             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
53                 'party_id is not valid:' || p_party_id);
54 
55             AS_UTILITY_PVT.Set_Message(
56                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
57                  p_msg_name      => 'API_INVALID_ID',
58                  p_token1        => 'COLUMN',
59                  p_token1_value  => 'PARTY_ID',
60                  p_token2        => 'VALUE',
61                  p_token2_value  => p_party_id);
62 
63             x_return_status := FND_API.G_RET_STS_ERROR;
64         END IF;
65         CLOSE C_Party_Exists;
66     ELSE
67         AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
68             'party_id is not valid:' || p_party_id);
69 
70         AS_UTILITY_PVT.Set_Message(
71              p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
72              p_msg_name      => 'API_INVALID_ID',
73              p_token1        => 'COLUMN',
74              p_token1_value  => 'PARTY_ID',
75              p_token2        => 'VALUE',
76              p_token2_value  => p_party_id);
77 
78         x_return_status := FND_API.G_RET_STS_ERROR;
79     END IF;
80 
81     FND_MSG_PUB.Count_And_Get (
82         p_count    =>    x_msg_count,
83         p_data     =>    x_msg_data);
84 
85 END Validate_party_id;
86 
87 -- Procedure to validate the fund contact_role_code
88 --
89 -- Validation:
90 --    Check if the passed in code is in the FND_LOOKUP_VALUES table.
91 --
92 -- NOTES:
93 --
94 PROCEDURE Validate_fd_contact_role_code (
95     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
96     p_contact_role_code          IN   VARCHAR2,
97     x_return_status              OUT  VARCHAR2,
98     x_msg_count                  OUT  NUMBER,
99     x_msg_data                   OUT  VARCHAR2) IS
100 
101     CURSOR  C_contact_role_code_exists (c_contact_role_code VARCHAR2,
102                                         c_lookup_type VARCHAR2) IS
103         SELECT 'X'
104         FROM  FND_LOOKUP_VALUES
105         WHERE LOOKUP_TYPE = c_lookup_type
106         AND  LOOKUP_CODE = c_contact_role_code;
107 
108     l_val   VARCHAR2(1);
109 
110 BEGIN
111 
112     -- Initialize message list if p_init_msg_list is set to TRUE.
113     IF FND_API.to_Boolean( p_init_msg_list ) THEN
114         FND_MSG_PUB.initialize;
115     END IF;
116 
117     -- Initialize API return status to SUCCESS
118     x_return_status := FND_API.G_RET_STS_SUCCESS;
119 
120     IF (p_contact_role_code is NOT NULL) and
121        (p_contact_role_code <> FND_API.G_MISS_CHAR) THEN
122 
123         OPEN  C_contact_role_code_exists (p_contact_role_code,
124                                           'AS_FUND_CONTACT_ROLE');
125         FETCH C_contact_role_code_exists into l_val;
126 
127         IF C_contact_role_code_exists%NOTFOUND THEN
128             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
129                 'contact_role_code is not valid:' || p_contact_role_code);
130 
131             AS_UTILITY_PVT.Set_Message(
132                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
133                  p_msg_name      => 'API_INVALID_ID',
134                  p_token1        => 'COLUMN',
135                  p_token1_value  => 'CONTACT_ROLE_CODE',
136                  p_token2        => 'VALUE',
137                  p_token2_value  => p_contact_role_code );
138 
139             x_return_status := FND_API.G_RET_STS_ERROR;
140         END IF;
141         CLOSE C_contact_role_code_exists;
142     END IF;
143 
144     FND_MSG_PUB.Count_And_Get (
145         p_count          =>   x_msg_count,
146         p_data           =>   x_msg_data);
147 
148 END Validate_fd_contact_role_code;
149 
150 -- Procedure to validate the fund_strategy
151 --
152 -- Validation:
153 --    Check if the passed in code is in the FND_LOOKUP_VALUES table.
154 --
155 -- NOTES:
156 --
157 PROCEDURE Validate_fund_strategy (
158     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
159     p_strategy                   IN   VARCHAR2,
160     x_return_status              OUT  VARCHAR2,
161     x_msg_count                  OUT  NUMBER,
162     x_msg_data                   OUT  VARCHAR2) IS
163 
164     CURSOR  C_strategy_exists (c_strategy VARCHAR2,
165                                c_lookup_type VARCHAR2) IS
166         SELECT 'X'
167         FROM  FND_LOOKUP_VALUES
168         WHERE LOOKUP_TYPE = c_lookup_type
169         AND  LOOKUP_CODE = c_strategy;
170 
171     l_val   VARCHAR2(1);
172 
173 BEGIN
174 
175     -- Initialize message list if p_init_msg_list is set to TRUE.
176     IF FND_API.to_Boolean( p_init_msg_list ) THEN
177         FND_MSG_PUB.initialize;
178     END IF;
179 
180     -- Initialize API return status to SUCCESS
181     x_return_status := FND_API.G_RET_STS_SUCCESS;
182 
183     IF (p_strategy is NOT NULL) and
184        (p_strategy <> FND_API.G_MISS_CHAR) THEN
185 
186         OPEN  C_strategy_exists (p_strategy, 'AS_FUND_STRATEGY');
187         FETCH C_strategy_exists into l_val;
188 
189         IF C_strategy_exists%NOTFOUND THEN
190             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
191                 'strategy is not valid:' || p_strategy);
192 
193             AS_UTILITY_PVT.Set_Message(
194                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
195                  p_msg_name      => 'API_INVALID_ID',
196                  p_token1        => 'COLUMN',
197                  p_token1_value  => 'STRATEGY',
198                  p_token2        => 'VALUE',
199                  p_token2_value  => p_strategy );
200 
201             x_return_status := FND_API.G_RET_STS_ERROR;
202         END IF;
203         CLOSE C_strategy_exists;
204     END IF;
205 
206     FND_MSG_PUB.Count_And_Get (
207         p_count          =>   x_msg_count,
208         p_data           =>   x_msg_data);
209 
210 END Validate_fund_strategy;
211 
212 -- Procedure to validate the scheme
213 --
214 -- Validation:
215 --    Check if the passed in code is in the FND_LOOKUP_VALUES table.
216 --
217 -- NOTES:
218 --
219 PROCEDURE Validate_scheme (
220     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
221     p_scheme                     IN   VARCHAR2,
222     x_return_status              OUT  VARCHAR2,
223     x_msg_count                  OUT  NUMBER,
224     x_msg_data                   OUT  VARCHAR2) IS
225 
226     CURSOR  C_scheme_exists (
227         c_scheme VARCHAR2,
228         c_lookup_type VARCHAR2) IS
229         SELECT 'X'
230         FROM  FND_LOOKUP_VALUES
231         WHERE LOOKUP_TYPE = c_lookup_type
232         AND  LOOKUP_CODE = c_scheme;
233 
234     l_val   VARCHAR2(1);
235 
236 BEGIN
237 
238     -- Initialize message list if p_init_msg_list is set to TRUE.
239     IF FND_API.to_Boolean( p_init_msg_list ) THEN
240         FND_MSG_PUB.initialize;
241     END IF;
242 
243     -- Initialize API return status to SUCCESS
244     x_return_status := FND_API.G_RET_STS_SUCCESS;
245 
246     IF (p_scheme is NOT NULL) and
247        (p_scheme <> FND_API.G_MISS_CHAR) THEN
248 
249         OPEN  C_scheme_exists (p_scheme, 'AS_ISSUE_SCHEME');
250         FETCH C_scheme_exists into l_val;
251 
252         IF C_scheme_exists%NOTFOUND THEN
253             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
254                 'issue scheme is not valid:' || p_scheme);
255 
256             AS_UTILITY_PVT.Set_Message(
257                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
258                  p_msg_name      => 'API_INVALID_ID',
259                  p_token1        => 'COLUMN',
260                  p_token1_value  => 'ISSUE_SCHEME',
261                  p_token2        => 'VALUE',
262                  p_token2_value  => p_scheme);
263             x_return_status := FND_API.G_RET_STS_ERROR;
264         END IF;
265         CLOSE C_scheme_exists;
266     END IF;
267 
268     FND_MSG_PUB.Count_And_Get (
269         p_count          =>   x_msg_count,
270         p_data           =>   x_msg_data);
271 
272 END Validate_scheme;
273 
274 -- Procedure to validate the issue_type
275 --
276 -- Validation:
277 --    Check if the passed in code is in the FND_LOOKUP_VALUES table.
278 --
279 -- NOTES:
280 --
281 PROCEDURE Validate_issue_type (
282     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
283     p_issue_type                 IN   VARCHAR2,
284     x_return_status              OUT  VARCHAR2,
285     x_msg_count                  OUT  NUMBER,
286     x_msg_data                   OUT  VARCHAR2) IS
287 
288     CURSOR  C_issue_type_exists (
289         c_issue_type VARCHAR2,
290         c_lookup_type VARCHAR2) IS
291         SELECT 'X'
292         FROM  FND_LOOKUP_VALUES
293         WHERE LOOKUP_TYPE = c_lookup_type
294         AND  LOOKUP_CODE = c_issue_type;
295 
296     l_val   VARCHAR2(1);
297 
298 BEGIN
299 
300     -- Initialize message list if p_init_msg_list is set to TRUE.
301     IF FND_API.to_Boolean( p_init_msg_list ) THEN
302         FND_MSG_PUB.initialize;
303     END IF;
304 
305     -- Initialize API return status to SUCCESS
306     x_return_status := FND_API.G_RET_STS_SUCCESS;
307 
308     IF (p_issue_type is NOT NULL) and
309        (p_issue_type <> FND_API.G_MISS_CHAR) THEN
310 
311         OPEN  C_issue_type_exists (p_issue_type,
312             'AS_ISSUE_TYPE');
313         FETCH C_issue_type_exists into l_val;
314 
315         IF C_issue_type_exists%NOTFOUND THEN
316             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
317                 'issue group type code is not valid:' || p_issue_type);
318 
319             AS_UTILITY_PVT.Set_Message(
320                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
321                  p_msg_name      => 'API_INVALID_ID',
322                  p_token1        => 'COLUMN',
323                  p_token1_value  => 'ISSUE_TYPE',
324                  p_token2        => 'VALUE',
325                  p_token2_value  => p_issue_type);
326 
327             x_return_status := FND_API.G_RET_STS_ERROR;
328         END IF;
329         CLOSE C_issue_type_exists;
330     ELSE
331         AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
332             'issue group type code is not valid:' || p_issue_type);
333 
334         AS_UTILITY_PVT.Set_Message(
335              p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
336              p_msg_name      => 'API_INVALID_ID',
337              p_token1        => 'COLUMN',
338              p_token1_value  => 'ISSUE_TYPE',
339              p_token2        => 'VALUE',
340              p_token2_value  => p_issue_type);
341 
342         x_return_status := FND_API.G_RET_STS_ERROR;
343     END IF;
344 
345     FND_MSG_PUB.Count_And_Get (
346         p_count          =>   x_msg_count,
347         p_data           =>   x_msg_data);
348 
349 END Validate_issue_type;
350 
351 -- Procedure to validate the issue_group_type_code
352 --
353 -- Validation:
354 --    Check if the passed in code is in the FND_LOOKUP_VALUES table.
355 --
356 -- NOTES:
357 --
358 PROCEDURE Validate_issue_group_type_code (
359     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
360     p_issue_group_type_code      IN   VARCHAR2,
361     x_return_status              OUT  VARCHAR2,
362     x_msg_count                  OUT  NUMBER,
363     x_msg_data                   OUT  VARCHAR2) IS
364 
365     CURSOR  C_issue_group_type_code_exists (
366         c_issue_group_type_code VARCHAR2) IS
367         SELECT 'X'
368         FROM  AS_ISSUE_GROUP_TYPES
369         WHERE ISSUE_GROUP_TYPE_CODE = c_issue_group_type_code;
370 
371     l_val   VARCHAR2(1);
372 
373 BEGIN
374 
375     -- Initialize message list if p_init_msg_list is set to TRUE.
376     IF FND_API.to_Boolean( p_init_msg_list ) THEN
377         FND_MSG_PUB.initialize;
378     END IF;
379 
380     -- Initialize API return status to SUCCESS
381     x_return_status := FND_API.G_RET_STS_SUCCESS;
382 
383     IF (p_issue_group_type_code is NOT NULL) and
384        (p_issue_group_type_code <> FND_API.G_MISS_CHAR) THEN
385 
386         OPEN  C_issue_group_type_code_exists (p_issue_group_type_code);
387         FETCH C_issue_group_type_code_exists into l_val;
388 
389         IF C_issue_group_type_code_exists%NOTFOUND THEN
390             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
391                 'issue group type code is not valid:' || p_issue_group_type_code);
392 
393             AS_UTILITY_PVT.Set_Message(
394                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
395                  p_msg_name      => 'API_INVALID_ID',
396                  p_token1        => 'COLUMN',
397                  p_token1_value  => 'ISSUE_GROUP_TYPE_CODE',
398                  p_token2        => 'VALUE',
399                  p_token2_value  => p_issue_group_type_code);
400 
401             x_return_status := FND_API.G_RET_STS_ERROR;
402         END IF;
403         CLOSE C_issue_group_type_code_exists;
404     ELSE
405         AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
406             'issue group type code is not valid:' || p_issue_group_type_code);
407 
408         AS_UTILITY_PVT.Set_Message(
409              p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
410              p_msg_name      => 'API_INVALID_ID',
411              p_token1        => 'COLUMN',
412              p_token1_value  => 'ISSUE_GROUP_TYPE_CODE',
413              p_token2        => 'VALUE',
414              p_token2_value  => p_issue_group_type_code);
415 
416         x_return_status := FND_API.G_RET_STS_ERROR;
417     END IF;
418 
419     FND_MSG_PUB.Count_And_Get (
420         p_count          =>   x_msg_count,
421         p_data           =>   x_msg_data);
422 
423 END Validate_issue_group_type_code;
424 
425 -- Procedure to validate the issue_relationship_type
426 --
427 -- Validation:
431 --
428 --    Check if the passed in code is in the FND_LOOKUP_VALUES table.
429 --
430 -- NOTES:
432 PROCEDURE Validate_is_relationship_type (
433     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
434     p_issue_relationship_type    IN   VARCHAR2,
435     x_return_status              OUT  VARCHAR2,
436     x_msg_count                  OUT  NUMBER,
437     x_msg_data                   OUT  VARCHAR2) IS
438 
439     CURSOR  C_is_relationship_type_exists (
440         c_issue_relationship_type VARCHAR2,
441         c_lookup_type VARCHAR2) IS
442         SELECT 'X'
443         FROM  FND_LOOKUP_VALUES
444         WHERE LOOKUP_TYPE = c_lookup_type
445         AND  LOOKUP_CODE = c_issue_relationship_type;
446 
447     l_val   VARCHAR2(1);
448 
449 BEGIN
450 
451     -- Initialize message list if p_init_msg_list is set to TRUE.
452     IF FND_API.to_Boolean( p_init_msg_list ) THEN
453         FND_MSG_PUB.initialize;
454     END IF;
455 
456     -- Initialize API return status to SUCCESS
457     x_return_status := FND_API.G_RET_STS_SUCCESS;
458 
459     IF (p_issue_relationship_type is NOT NULL) and
460        (p_issue_relationship_type <> FND_API.G_MISS_CHAR) THEN
461 
462         OPEN  C_is_relationship_type_exists (
463             p_issue_relationship_type,
464             'AS_ISSUE_RELATIONSHIP_TYPE');
465         FETCH C_is_relationship_type_exists into l_val;
466 
467         IF C_is_relationship_type_exists%NOTFOUND THEN
468             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
469                 'issue relationship type is not valid:' || p_issue_relationship_type);
470 
471             AS_UTILITY_PVT.Set_Message(
472                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
473                  p_msg_name      => 'API_INVALID_ID',
474                  p_token1        => 'COLUMN',
475                  p_token1_value  => 'ISSUE_RELATIONSHIP_TYPE',
476                  p_token2        => 'VALUE',
477                  p_token2_value  => p_issue_relationship_type);
478 
479             x_return_status := FND_API.G_RET_STS_ERROR;
480         END IF;
481         CLOSE C_is_relationship_type_exists;
482     ELSE
483         AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
484             'issue relationship type is not valid:' || p_issue_relationship_type);
485 
486         AS_UTILITY_PVT.Set_Message(
487             p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
488             p_msg_name      => 'API_INVALID_ID',
489             p_token1        => 'COLUMN',
490             p_token1_value  => 'ISSUE_RELATIONSHIP_TYPE',
491             p_token2        => 'VALUE',
492             p_token2_value  => p_issue_relationship_type);
493 
494         x_return_status := FND_API.G_RET_STS_ERROR;
495     END IF;
496 
497     FND_MSG_PUB.Count_And_Get (
498         p_count          =>   x_msg_count,
499         p_data           =>   x_msg_data);
500 
501 END Validate_is_relationship_type;
502 
503 -- NAME
504 --    Validate_country_code
505 --
506 -- PURPOSE
507 --    Checks if country code is valid
508 --
509 PROCEDURE Validate_country_code (
510     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
511     p_country_code               IN   VARCHAR2,
512     x_return_status              OUT  VARCHAR2,
513     x_msg_count                  OUT  NUMBER,
514     x_msg_data                   OUT  VARCHAR2) IS
515 
516     CURSOR C_country_code_exists (x_country_code VARCHAR2) IS
517     SELECT 'X'
518     FROM   fnd_territories_vl
519     WHERE  territory_code = X_Country_Code;
520 
521     l_val       VARCHAR2(1);
522 
523 BEGIN
524     -- Initialize message list if p_init_msg_list is set to TRUE.
525     IF FND_API.to_Boolean( p_init_msg_list ) THEN
526         FND_MSG_PUB.initialize;
527     END IF;
528 
529     -- Initialize API return status to SUCCESS
530     x_return_status := FND_API.G_RET_STS_SUCCESS;
531 
532     IF (p_country_code is NOT NULL) and
533        (p_country_code <> FND_API.G_MISS_CHAR) THEN
534 
535         OPEN C_country_code_exists ( p_country_code );
536         FETCH C_country_code_exists INTO l_val;
537         IF (C_country_code_exists%NOTFOUND) THEN
538             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
539                 'country code is not valid:' || p_country_code);
540 
541             AS_UTILITY_PVT.Set_Message(
542                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
543                  p_msg_name      => 'API_INVALID_ID',
544                  p_token1        => 'COLUMN',
545                  p_token1_value  => 'COUNTRY_CODE',
546                  p_token2        => 'VALUE',
547                  p_token2_value  => p_country_code);
548 
549             x_return_status := FND_API.G_RET_STS_ERROR;
550         END IF;
551         CLOSE C_country_code_exists;
552     ELSE
553         AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
554             'country code is not valid:' || p_country_code);
555 
556         AS_UTILITY_PVT.Set_Message(
557             p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
558             p_msg_name      => 'API_INVALID_ID',
559             p_token1        => 'COLUMN',
560             p_token1_value  => 'COUNTRY_CODE',
561             p_token2        => 'VALUE',
562             p_token2_value  => p_country_code);
563 
564         x_return_status := FND_API.G_RET_STS_ERROR;
565     END IF;
566 
567     FND_MSG_PUB.Count_And_Get (
568         p_count          =>   x_msg_count,
569         p_data           =>   x_msg_data);
570 
571 END Validate_country_code;
572 
573 -- NAME
574 --    Validate_currency_code
575 --
576 -- PURPOSE
577 --    Checks if currency code is valid
578 --
579 PROCEDURE Validate_currency_code (
580     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
581     p_currency_code              IN   VARCHAR2,
582     x_return_status              OUT  VARCHAR2,
583     x_msg_count                  OUT  NUMBER,
584     x_msg_data                   OUT  VARCHAR2) IS
585 
586     CURSOR C_currency_code_exists (x_currency_code VARCHAR2) IS
587     SELECT 'X'
588     FROM   fnd_currencies_vl
589     WHERE  currency_code = x_currency_code;
590 
591     l_val       VARCHAR2(1);
592 
593 BEGIN
594     -- Initialize message list if p_init_msg_list is set to TRUE.
595     IF FND_API.to_Boolean( p_init_msg_list ) THEN
596         FND_MSG_PUB.initialize;
597     END IF;
598 
599     -- Initialize API return status to SUCCESS
600     x_return_status := FND_API.G_RET_STS_SUCCESS;
601 
602     IF (p_currency_code is NOT NULL) and
603        (p_currency_code <> FND_API.G_MISS_CHAR) THEN
604 
605         OPEN C_currency_code_exists ( p_currency_code );
606         FETCH C_currency_code_exists INTO l_val;
607         IF (C_currency_code_exists%NOTFOUND) THEN
608             AS_UTILITY_PVT.Debug_Message(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW,
609                 'currency code is not valid:' || p_currency_code);
610 
611             AS_UTILITY_PVT.Set_Message(
612                  p_msg_level     => FND_MSG_PUB.G_MSG_LVL_ERROR,
613                  p_msg_name      => 'API_INVALID_ID',
614                  p_token1        => 'COLUMN',
615                  p_token1_value  => 'CURRENCY_CODE',
616                  p_token2        => 'VALUE',
617                  p_token2_value  => p_currency_code);
618 
619             x_return_status := FND_API.G_RET_STS_ERROR;
620         END IF;
621         CLOSE C_currency_code_exists;
622     END IF;
623 
624     FND_MSG_PUB.Count_And_Get (
625         p_count          =>   x_msg_count,
626         p_data           =>   x_msg_data);
627 
628 END Validate_currency_code;
629 
630 END AS_ISSUE_UTIL_PVT;