DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_LIST_ASSOC_PVT

Source


1 PACKAGE BODY AMS_List_Assoc_PVT as
2 /* $Header: amsvascb.pls 115.14 2002/11/22 08:54:58 jieli ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 --          AMS_List_Assoc_PVT
7 -- Purpose
8 --
9 -- History
10 --
11 -- NOTE
12 --
13 -- End of Comments
14 -- ===============================================================
15 
16 
17 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AMS_List_Assoc_PVT';
18 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvascb.pls';
19 
20 
21 -- Hint: Primary key needs to be returned.
22 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
23 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
24 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
25 
26 PROCEDURE Create_List_Assoc(
27     p_api_version_number         IN   NUMBER,
28     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
29     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
30     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
31 
32     x_return_status              OUT NOCOPY  VARCHAR2,
33     x_msg_count                  OUT NOCOPY  NUMBER,
34     x_msg_data                   OUT NOCOPY  VARCHAR2,
35 
36     p_list_assoc_rec               IN   list_assoc_rec_type  := g_miss_list_assoc_rec,
37     x_list_cont_restrictions_id                   OUT NOCOPY  NUMBER
38      )
39 
40  IS
41 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Create_List_Assoc';
42 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
43    l_return_status_full        VARCHAR2(1);
44    l_object_version_number     NUMBER := 1;
45    l_org_id                    NUMBER := FND_API.G_MISS_NUM;
46    l_LIST_CONT_RESTRICTIONs_ID                  NUMBER;
47    l_dummy       NUMBER;
48 
49    CURSOR c_id IS
50       SELECT AMS_LIST_CONT_RESTRICTIONS_s.NEXTVAL
51       FROM dual;
52 
53    CURSOR c_id_exists (l_id IN NUMBER) IS
54       SELECT 1
55       FROM AMS_LIST_CONT_RESTRICTIONS
56       WHERE LIST_CONTACT_RESTRICTIONs_ID = l_id;
57 
58 BEGIN
59       -- Standard Start of API savepoint
60       SAVEPOINT CREATE_List_Assoc_PVT;
61 
62       -- Standard call to check for call compatibility.
63       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
64                                            p_api_version_number,
65                                            l_api_name,
66                                            G_PKG_NAME)
67       THEN
68 
69           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
70       END IF;
71 
72       -- Initialize message list if p_init_msg_list is set to TRUE.
73       IF FND_API.to_Boolean( p_init_msg_list )
74       THEN
75          FND_MSG_PUB.initialize;
76       END IF;
77 
78       -- Debug Message
79       IF (AMS_DEBUG_HIGH_ON) THEN
80 
81       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
82       END IF;
83 
84 
85       -- Initialize API return status to SUCCESS
86       x_return_status := FND_API.G_RET_STS_SUCCESS;
87 
88    -- Local variable initialization
89 
90    IF p_list_assoc_rec.LIST_CONT_RESTRICTIONs_ID IS NULL OR p_list_assoc_rec.LIST_CONT_RESTRICTIONs_ID = FND_API.g_miss_num THEN
91       LOOP
92          l_dummy := NULL;
93          OPEN c_id;
94          FETCH c_id INTO l_LIST_CONT_RESTRICTIONs_ID;
95          CLOSE c_id;
96 
97          OPEN c_id_exists(l_LIST_CONT_RESTRICTIONs_ID);
98          FETCH c_id_exists INTO l_dummy;
99          CLOSE c_id_exists;
100          EXIT WHEN l_dummy IS NULL;
101       END LOOP;
102    END IF;
103 
104       -- =========================================================================
105       -- Validate Environment
106       -- =========================================================================
107 
108       IF FND_GLOBAL.User_Id IS NULL
109       THEN
110  AMS_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
111           RAISE FND_API.G_EXC_ERROR;
112       END IF;
113 /*
114       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
115       THEN
116           -- Debug message
117 
118           IF (AMS_DEBUG_HIGH_ON) THEN
119 
120 
121 
122           AMS_UTILITY_PVT.debug_message('Private API: Validate_List_Assoc');
123 
124           END IF;
125 
126           Invoke validation procedures
127           Validate_list_assoc(
128             p_api_version_number     => 1.0,
129             p_init_msg_list    => FND_API.G_FALSE,
130             p_validation_level => p_validation_level,
131             p_list_assoc_rec  =>  p_list_assoc_rec,
132             x_return_status    => x_return_status,
133             x_msg_count        => x_msg_count,
134             x_msg_data         => x_msg_data);
135       END IF;
136 
137       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
138 
139           RAISE FND_API.G_EXC_ERROR;
140       END IF;
141 */
142       -- Debug Message
143       IF (AMS_DEBUG_HIGH_ON) THEN
144 
145       AMS_UTILITY_PVT.debug_message( 'Private API: Calling create table handler');
146       END IF;
147 
148       -- Invoke table handler(AMS_LIST_CONT_RESTRICTIONS_PKG.Insert_Row)
149       AMS_LIST_CONT_RESTRICTIONS_PKG.Insert_Row(
150           px_list_cont_restrictions_id  => l_list_cont_restrictions_id,
151           p_list_header_id  => p_list_assoc_rec.list_header_id,
152           p_last_update_date  => SYSDATE,
153           p_last_updated_by  => FND_GLOBAL.USER_ID,
154           p_creation_date  => SYSDATE,
155           p_created_by  => FND_GLOBAL.USER_ID,
156           p_last_update_login  => FND_GLOBAL.CONC_LOGIN_ID,
157           px_object_version_number  => l_object_version_number,
158           p_do_not_contact_flag  => p_list_assoc_rec.do_not_contact_flag,
159           p_media_id  => p_list_assoc_rec.media_id,
160           p_list_used_by  => p_list_assoc_rec.list_used_by,
161           p_list_used_by_id  => p_list_assoc_rec.list_used_by_id);
162       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
163 
164           RAISE FND_API.G_EXC_ERROR;
165       END IF;
166 --
167 -- End of API body
168 --
169 
170       -- Standard check for p_commit
171       IF FND_API.to_Boolean( p_commit )
172       THEN
173          COMMIT WORK;
174       END IF;
175 
176 
177       -- Debug Message
178       IF (AMS_DEBUG_HIGH_ON) THEN
179 
180       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
181       END IF;
182 
183       -- Standard call to get message count and if count is 1, get message info.
184       FND_MSG_PUB.Count_And_Get
185         (p_count          =>   x_msg_count,
186          p_data           =>   x_msg_data
187       );
188 EXCEPTION
189 
190    WHEN AMS_Utility_PVT.resource_locked THEN
191      x_return_status := FND_API.g_ret_sts_error;
192  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
193 
194    WHEN FND_API.G_EXC_ERROR THEN
195      ROLLBACK TO CREATE_List_Assoc_PVT;
196      x_return_status := FND_API.G_RET_STS_ERROR;
197      -- Standard call to get message count and if count=1, get the message
198      FND_MSG_PUB.Count_And_Get (
199             p_encoded => FND_API.G_FALSE,
200             p_count   => x_msg_count,
201             p_data    => x_msg_data
202      );
203 
204    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
205      ROLLBACK TO CREATE_List_Assoc_PVT;
206      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
207      -- Standard call to get message count and if count=1, get the message
208      FND_MSG_PUB.Count_And_Get (
209             p_encoded => FND_API.G_FALSE,
210             p_count => x_msg_count,
211             p_data  => x_msg_data
212      );
213 
214    WHEN OTHERS THEN
215      ROLLBACK TO CREATE_List_Assoc_PVT;
216      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
217      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
218      THEN
219         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
220      END IF;
221      -- Standard call to get message count and if count=1, get the message
222      FND_MSG_PUB.Count_And_Get (
223             p_encoded => FND_API.G_FALSE,
224             p_count => x_msg_count,
225             p_data  => x_msg_data
226      );
227 End Create_List_Assoc;
228 
229 
230 PROCEDURE Update_List_Assoc(
231     p_api_version_number         IN   NUMBER,
232     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
233     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
234     p_validation_level           IN  NUMBER       := FND_API.G_VALID_LEVEL_FULL,
235 
236     x_return_status              OUT NOCOPY  VARCHAR2,
237     x_msg_count                  OUT NOCOPY  NUMBER,
238     x_msg_data                   OUT NOCOPY  VARCHAR2,
239 
240     p_list_assoc_rec               IN    list_assoc_rec_type,
241     x_object_version_number      OUT NOCOPY  NUMBER
242     )
243 
244  IS
245 
246 CURSOR c_get_list_assoc(list_cont_restrictions_id NUMBER) IS
247     SELECT *
248     FROM  AMS_LIST_CONT_RESTRICTIONS;
249     -- Hint: Developer need to provide Where clause
250 
251 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Update_List_Assoc';
252 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
253 -- Local Variables
254 l_object_version_number     NUMBER;
255 l_LIST_CONT_RESTRICTIONs_ID    NUMBER;
256 l_ref_list_assoc_rec  c_get_List_Assoc%ROWTYPE ;
257 l_tar_list_assoc_rec  AMS_List_Assoc_PVT.list_assoc_rec_type := P_list_assoc_rec;
258 l_rowid  ROWID;
259 
260  BEGIN
261       -- Standard Start of API savepoint
262       SAVEPOINT UPDATE_List_Assoc_PVT;
263 
264       -- Standard call to check for call compatibility.
265       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
266                                            p_api_version_number,
267                                            l_api_name,
268                                            G_PKG_NAME)
269       THEN
270 
271           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
272       END IF;
273 
274       -- Initialize message list if p_init_msg_list is set to TRUE.
275       IF FND_API.to_Boolean( p_init_msg_list )
276       THEN
277          FND_MSG_PUB.initialize;
278       END IF;
279 
280       -- Debug Message
281       IF (AMS_DEBUG_HIGH_ON) THEN
282 
283       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
284       END IF;
285 
286 
287       -- Initialize API return status to SUCCESS
288       x_return_status := FND_API.G_RET_STS_SUCCESS;
289 
290       -- Debug Message
291       IF (AMS_DEBUG_HIGH_ON) THEN
292 
293       AMS_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
294       END IF;
295 
296 /*
297       OPEN c_get_List_Assoc( l_tar_list_assoc_rec.list_cont_restrictions_id);
298 
299       FETCH c_get_List_Assoc INTO l_ref_list_assoc_rec  ;
300 
301        If ( c_get_List_Assoc%NOTFOUND) THEN
302   AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
303    p_token_name   => 'INFO',
304  p_token_value  => 'List_Assoc') ;
305            RAISE FND_API.G_EXC_ERROR;
306        END IF;
307        -- Debug Message
308        IF (AMS_DEBUG_HIGH_ON) THEN
309 
310        AMS_UTILITY_PVT.debug_message('Private API: - Close Cursor');
311        END IF;
312        CLOSE     c_get_List_Assoc;
313 */
314 
315 
316       If (l_tar_list_assoc_rec.object_version_number is NULL or
317           l_tar_list_assoc_rec.object_version_number = FND_API.G_MISS_NUM ) Then
318   AMS_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
319    p_token_name   => 'COLUMN',
320  p_token_value  => 'Last_Update_Date') ;
321           raise FND_API.G_EXC_ERROR;
322       End if;
323       -- Check Whether record has been changed by someone else
324       If (l_tar_list_assoc_rec.object_version_number <> l_ref_list_assoc_rec.object_version_number) Then
325   AMS_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
326    p_token_name   => 'INFO',
327  p_token_value  => 'List_Assoc') ;
328           raise FND_API.G_EXC_ERROR;
329       End if;
330       IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
331       THEN
332           -- Debug message
333           IF (AMS_DEBUG_HIGH_ON) THEN
334 
335           AMS_UTILITY_PVT.debug_message('Private API: Validate_List_Assoc');
336           END IF;
337 
338           -- Invoke validation procedures
339           Validate_list_assoc(
340             p_api_version_number     => 1.0,
341             p_init_msg_list    => FND_API.G_FALSE,
342             p_validation_level => p_validation_level,
343             p_list_assoc_rec  =>  p_list_assoc_rec,
344             x_return_status    => x_return_status,
345             x_msg_count        => x_msg_count,
346             x_msg_data         => x_msg_data);
347       END IF;
348 
349       IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
350 
351           RAISE FND_API.G_EXC_ERROR;
352       END IF;
353 
354 
355       -- Debug Message
356       IF (AMS_DEBUG_HIGH_ON) THEN
357 
358       AMS_UTILITY_PVT.debug_message('Private API: Calling update table handler');
359       END IF;
360 
361       -- Invoke table handler(AMS_LIST_CONT_RESTRICTIONS_PKG.Update_Row)
362       AMS_LIST_CONT_RESTRICTIONS_PKG.Update_Row(
363           p_list_cont_restrictions_id  => p_list_assoc_rec.list_cont_restrictions_id,
364           p_list_header_id  => p_list_assoc_rec.list_header_id,
365           p_last_update_date  => SYSDATE,
366           p_last_updated_by  => FND_GLOBAL.USER_ID,
367           p_creation_date  => SYSDATE,
368           p_created_by  => FND_GLOBAL.USER_ID,
369           p_last_update_login  => FND_GLOBAL.CONC_LOGIN_ID,
370           p_object_version_number  => p_list_assoc_rec.object_version_number,
371           p_do_not_contact_flag  => p_list_assoc_rec.do_not_contact_flag,
372           p_media_id  => p_list_assoc_rec.media_id,
373           p_list_used_by  => p_list_assoc_rec.list_used_by,
374           p_list_used_by_id  => p_list_assoc_rec.list_used_by_id);
375       --
376       -- End of API body.
377       --
378 
379       -- Standard check for p_commit
380       IF FND_API.to_Boolean( p_commit )
381       THEN
382          COMMIT WORK;
383       END IF;
384 
385 
386       -- Debug Message
387       IF (AMS_DEBUG_HIGH_ON) THEN
388 
389       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
390       END IF;
391 
392       -- Standard call to get message count and if count is 1, get message info.
393       FND_MSG_PUB.Count_And_Get
394         (p_count          =>   x_msg_count,
395          p_data           =>   x_msg_data
396       );
397 EXCEPTION
398 
399    WHEN AMS_Utility_PVT.resource_locked THEN
400      x_return_status := FND_API.g_ret_sts_error;
401  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
402 
403    WHEN FND_API.G_EXC_ERROR THEN
404      ROLLBACK TO UPDATE_List_Assoc_PVT;
405      x_return_status := FND_API.G_RET_STS_ERROR;
406      -- Standard call to get message count and if count=1, get the message
407      FND_MSG_PUB.Count_And_Get (
408             p_encoded => FND_API.G_FALSE,
409             p_count   => x_msg_count,
410             p_data    => x_msg_data
411      );
412 
413    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
414      ROLLBACK TO UPDATE_List_Assoc_PVT;
418             p_encoded => FND_API.G_FALSE,
415      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
416      -- Standard call to get message count and if count=1, get the message
417      FND_MSG_PUB.Count_And_Get (
419             p_count => x_msg_count,
420             p_data  => x_msg_data
421      );
422 
423    WHEN OTHERS THEN
424      ROLLBACK TO UPDATE_List_Assoc_PVT;
425      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
426      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
427      THEN
428         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
429      END IF;
430      -- Standard call to get message count and if count=1, get the message
431      FND_MSG_PUB.Count_And_Get (
432             p_encoded => FND_API.G_FALSE,
433             p_count => x_msg_count,
434             p_data  => x_msg_data
435      );
436 End Update_List_Assoc;
437 
438 
439 PROCEDURE Delete_List_Assoc(
440     p_api_version_number         IN   NUMBER,
441     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
442     p_commit                     IN   VARCHAR2     := FND_API.G_FALSE,
443     p_validation_level           IN   NUMBER       := FND_API.G_VALID_LEVEL_FULL,
444     x_return_status              OUT NOCOPY  VARCHAR2,
445     x_msg_count                  OUT NOCOPY  NUMBER,
446     x_msg_data                   OUT NOCOPY  VARCHAR2,
447     p_list_cont_restrictions_id                   IN  NUMBER,
448     p_object_version_number      IN   NUMBER
449     )
450 
451  IS
452 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Delete_List_Assoc';
453 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
454 l_object_version_number     NUMBER;
455 
456  BEGIN
457       -- Standard Start of API savepoint
458       SAVEPOINT DELETE_List_Assoc_PVT;
459 
460       -- Standard call to check for call compatibility.
461       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
462                                            p_api_version_number,
463                                            l_api_name,
464                                            G_PKG_NAME)
465       THEN
466 
467           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
468       END IF;
469 
470       -- Initialize message list if p_init_msg_list is set to TRUE.
471       IF FND_API.to_Boolean( p_init_msg_list )
472       THEN
473          FND_MSG_PUB.initialize;
474       END IF;
475 
476       -- Debug Message
477       IF (AMS_DEBUG_HIGH_ON) THEN
478 
479       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
480       END IF;
481 
482 
483       -- Initialize API return status to SUCCESS
484       x_return_status := FND_API.G_RET_STS_SUCCESS;
485 
486       --
487       -- Api body
488       --
489       -- Debug Message
490       IF (AMS_DEBUG_HIGH_ON) THEN
491 
492       AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
493       END IF;
494 
495       -- Invoke table handler(AMS_LIST_CONT_RESTRICTIONS_PKG.Delete_Row)
496       AMS_LIST_CONT_RESTRICTIONS_PKG.Delete_Row(
497           p_LIST_CONT_RESTRICTIONs_ID  => p_LIST_CONT_RESTRICTIONs_ID);
498       --
499       -- End of API body
500       --
501 
502       -- Standard check for p_commit
503       IF FND_API.to_Boolean( p_commit )
504       THEN
505          COMMIT WORK;
506       END IF;
507 
508 
509       -- Debug Message
510       IF (AMS_DEBUG_HIGH_ON) THEN
511 
512       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
513       END IF;
514 
515       -- Standard call to get message count and if count is 1, get message info.
516       FND_MSG_PUB.Count_And_Get
517         (p_count          =>   x_msg_count,
518          p_data           =>   x_msg_data
519       );
520 EXCEPTION
521 
522    WHEN AMS_Utility_PVT.resource_locked THEN
523      x_return_status := FND_API.g_ret_sts_error;
524  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
525 
526    WHEN FND_API.G_EXC_ERROR THEN
527      ROLLBACK TO DELETE_List_Assoc_PVT;
528      x_return_status := FND_API.G_RET_STS_ERROR;
529      -- Standard call to get message count and if count=1, get the message
530      FND_MSG_PUB.Count_And_Get (
531             p_encoded => FND_API.G_FALSE,
532             p_count   => x_msg_count,
533             p_data    => x_msg_data
534      );
535 
536    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
537      ROLLBACK TO DELETE_List_Assoc_PVT;
538      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
539      -- Standard call to get message count and if count=1, get the message
540      FND_MSG_PUB.Count_And_Get (
541             p_encoded => FND_API.G_FALSE,
542             p_count => x_msg_count,
543             p_data  => x_msg_data
544      );
545 
546    WHEN OTHERS THEN
547      ROLLBACK TO DELETE_List_Assoc_PVT;
548      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
549      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
550      THEN
551         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
552      END IF;
553      -- Standard call to get message count and if count=1, get the message
557             p_data  => x_msg_data
554      FND_MSG_PUB.Count_And_Get (
555             p_encoded => FND_API.G_FALSE,
556             p_count => x_msg_count,
558      );
559 End Delete_List_Assoc;
560 
561 
562 
563 -- Hint: Primary key needs to be returned.
564 PROCEDURE Lock_List_Assoc(
565     p_api_version_number         IN   NUMBER,
566     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
567 
568     x_return_status              OUT NOCOPY  VARCHAR2,
569     x_msg_count                  OUT NOCOPY  NUMBER,
570     x_msg_data                   OUT NOCOPY  VARCHAR2,
571 
572     p_list_cont_restrictions_id                   IN  NUMBER,
573     p_object_version             IN  NUMBER
574     )
575 
576  IS
577 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Lock_List_Assoc';
578 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
579 L_FULL_NAME                 CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
580 l_LIST_CONT_RESTRICTIONs_ID                  NUMBER;
581 
582 CURSOR c_List_Assoc IS
583    SELECT LIST_CONTACT_RESTRICTIONs_ID
584    FROM AMS_LIST_CONT_RESTRICTIONS
585    WHERE LIST_CONTACT_RESTRICTIONs_ID = p_LIST_CONT_RESTRICTIONs_ID
586    AND object_version_number = p_object_version
587    FOR UPDATE NOWAIT;
588 
589 BEGIN
590 
591       -- Debug Message
592       IF (AMS_DEBUG_HIGH_ON) THEN
593 
594       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
595       END IF;
596 
597       -- Initialize message list if p_init_msg_list is set to TRUE.
598       IF FND_API.to_Boolean( p_init_msg_list )
599       THEN
600          FND_MSG_PUB.initialize;
601       END IF;
602 
603       -- Standard call to check for call compatibility.
604       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
605                                            p_api_version_number,
606                                            l_api_name,
607                                            G_PKG_NAME)
608       THEN
609 
610           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
611       END IF;
612 
613 
614       -- Initialize API return status to SUCCESS
615       x_return_status := FND_API.G_RET_STS_SUCCESS;
616 
617 
618 ------------------------ lock -------------------------
619 
620   IF (AMS_DEBUG_HIGH_ON) THEN
621 
622 
623 
624   AMS_Utility_PVT.debug_message(l_full_name||': start');
625 
626   END IF;
627   OPEN c_List_Assoc;
628 
629   FETCH c_List_Assoc INTO l_LIST_CONT_RESTRICTIONs_ID;
630 
631   IF (c_List_Assoc%NOTFOUND) THEN
632     CLOSE c_List_Assoc;
633     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
634        FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
635        FND_MSG_PUB.add;
636     END IF;
637     RAISE FND_API.g_exc_error;
638   END IF;
639 
640   CLOSE c_List_Assoc;
641 
642  -------------------- finish --------------------------
643   FND_MSG_PUB.count_and_get(
644     p_encoded => FND_API.g_false,
645     p_count   => x_msg_count,
646     p_data    => x_msg_data);
647   IF (AMS_DEBUG_HIGH_ON) THEN
648 
649   AMS_Utility_PVT.debug_message(l_full_name ||': end');
650   END IF;
651 EXCEPTION
652 
653    WHEN AMS_Utility_PVT.resource_locked THEN
654      x_return_status := FND_API.g_ret_sts_error;
655  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
656 
657    WHEN FND_API.G_EXC_ERROR THEN
658      ROLLBACK TO LOCK_List_Assoc_PVT;
659      x_return_status := FND_API.G_RET_STS_ERROR;
660      -- Standard call to get message count and if count=1, get the message
661      FND_MSG_PUB.Count_And_Get (
662             p_encoded => FND_API.G_FALSE,
663             p_count   => x_msg_count,
664             p_data    => x_msg_data
665      );
666 
667    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
668      ROLLBACK TO LOCK_List_Assoc_PVT;
669      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
670      -- Standard call to get message count and if count=1, get the message
671      FND_MSG_PUB.Count_And_Get (
672             p_encoded => FND_API.G_FALSE,
673             p_count => x_msg_count,
674             p_data  => x_msg_data
675      );
676 
677    WHEN OTHERS THEN
678      ROLLBACK TO LOCK_List_Assoc_PVT;
679      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
680      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
681      THEN
682         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
683      END IF;
684      -- Standard call to get message count and if count=1, get the message
685      FND_MSG_PUB.Count_And_Get (
686             p_encoded => FND_API.G_FALSE,
687             p_count => x_msg_count,
688             p_data  => x_msg_data
689      );
690 End Lock_List_Assoc;
691 
692 
693 PROCEDURE check_list_assoc_uk_items(
694     p_list_assoc_rec               IN   list_assoc_rec_type,
695     p_validation_mode            IN  VARCHAR2 := JTF_PLSQL_API.g_create,
696     x_return_status              OUT NOCOPY VARCHAR2)
697 IS
698 l_valid_flag  VARCHAR2(1);
699 
700 BEGIN
701       x_return_status := FND_API.g_ret_sts_success;
705          'LIST_CONTACT_RESTRICTIONs_ID = ''' || p_list_assoc_rec.LIST_CONT_RESTRICTIONs_ID ||''''
702       IF p_validation_mode = JTF_PLSQL_API.g_create THEN
703          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
704          'AMS_LIST_CONT_RESTRICTIONS',
706          );
707       ELSE
708          l_valid_flag := AMS_Utility_PVT.check_uniqueness(
709          'AMS_LIST_CONT_RESTRICTIONS',
710          'LIST_CONTACT_RESTRICTIONs_ID = ''' || p_list_assoc_rec.LIST_CONT_RESTRICTIONs_ID ||
711          ''' AND LIST_CONTACT_RESTRICTIONs_ID <> ' || p_list_assoc_rec.LIST_CONT_RESTRICTIONs_ID
712          );
713       END IF;
714 
715       IF l_valid_flag = FND_API.g_false THEN
716  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_LIST_CONTACT_RESTRICTIONS_ID_DUPLICATE');
717          x_return_status := FND_API.g_ret_sts_error;
718          RETURN;
719       END IF;
720 
721 END check_list_assoc_uk_items;
722 
723 PROCEDURE check_list_assoc_req_items(
724     p_list_assoc_rec               IN  list_assoc_rec_type,
725     p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
726     x_return_status	         OUT NOCOPY VARCHAR2
727 )
728 IS
729   l_media_id NUMBER;
730   CURSOR c_media_id IS
731    select media_id
732    from ams_media_vl
733    where media_type_code='DIRECT_MARKETING'
734    and media_id=p_list_assoc_rec.media_id;
735 
736    l_camp_id NUMBER;
737    CURSOR c_camp_id IS
738    select campaign_id from ams_campaigns_vl where rollup_type<>'RCAM'
739       and active_flag='Y'
740       and show_campaign_flag='Y'
741       and status_code not in ('ARCHIVED','CANCELLED')
742       and campaign_id=p_list_assoc_rec.list_used_by_id ;
743 
744 BEGIN
745 
746 
747    x_return_status := FND_API.g_ret_sts_success;
748 
749    IF p_validation_mode = JTF_PLSQL_API.g_create THEN
750 
751 
752       IF p_list_assoc_rec.list_cont_restrictions_id = FND_API.g_miss_num OR p_list_assoc_rec.list_cont_restrictions_id IS NULL THEN
753  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_list_contact_restrictions_id');
754          x_return_status := FND_API.g_ret_sts_error;
755          RETURN;
756       END IF;
757 
758 
759       IF p_list_assoc_rec.list_header_id = FND_API.g_miss_num OR p_list_assoc_rec.list_header_id IS NULL THEN
760  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_list_header_id');
761          x_return_status := FND_API.g_ret_sts_error;
762          RETURN;
763       END IF;
764 
765 
766       IF p_list_assoc_rec.last_update_date = FND_API.g_miss_date OR p_list_assoc_rec.last_update_date IS NULL THEN
767  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_last_update_date');
768          x_return_status := FND_API.g_ret_sts_error;
769          RETURN;
770       END IF;
771 
772 
773       IF p_list_assoc_rec.last_updated_by = FND_API.g_miss_num OR p_list_assoc_rec.last_updated_by IS NULL THEN
774  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_last_updated_by');
775          x_return_status := FND_API.g_ret_sts_error;
776          RETURN;
777       END IF;
778 
779 
780       IF p_list_assoc_rec.creation_date = FND_API.g_miss_date OR p_list_assoc_rec.creation_date IS NULL THEN
781  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_creation_date');
782          x_return_status := FND_API.g_ret_sts_error;
783          RETURN;
784       END IF;
785 
786 
787       IF p_list_assoc_rec.created_by = FND_API.g_miss_num OR p_list_assoc_rec.created_by IS NULL THEN
788  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_created_by');
789          x_return_status := FND_API.g_ret_sts_error;
790          RETURN;
791       END IF;
792    ELSE
793 
794 
795       IF p_list_assoc_rec.list_cont_restrictions_id IS NULL THEN
796  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_list_contact_restrictions_id');
797          x_return_status := FND_API.g_ret_sts_error;
798          RETURN;
799       END IF;
800 
801 
802       IF p_list_assoc_rec.list_header_id IS NULL THEN
803  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_list_header_id');
804          x_return_status := FND_API.g_ret_sts_error;
805          RETURN;
806       END IF;
807 
808 
809       IF p_list_assoc_rec.last_update_date IS NULL THEN
810  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_last_update_date');
811          x_return_status := FND_API.g_ret_sts_error;
812          RETURN;
813       END IF;
814 
815 
816       IF p_list_assoc_rec.last_updated_by IS NULL THEN
817  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_last_updated_by');
818          x_return_status := FND_API.g_ret_sts_error;
819          RETURN;
820       END IF;
821 
822 
823       IF p_list_assoc_rec.creation_date IS NULL THEN
824  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_creation_date');
825          x_return_status := FND_API.g_ret_sts_error;
826          RETURN;
827       END IF;
828 
829 
830       IF p_list_assoc_rec.created_by IS NULL THEN
831  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_list_assoc_NO_created_by');
832          x_return_status := FND_API.g_ret_sts_error;
833          RETURN;
834       END IF;
838          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
835    END IF;
836 
837       IF p_list_assoc_rec.do_not_contact_flag<>'Y' AND p_list_assoc_rec.do_not_contact_flag<>'N' THEN
839            FND_MESSAGE.set_name('AMS', 'do_not_contact_flag is neither Y nor N');
840            FND_MSG_PUB.add;
841         END IF;
842         RAISE FND_API.g_exc_error;
843         RETURN;
844       END IF;
845 
846       IF p_list_assoc_rec.list_used_by<>'CAMP' AND p_list_assoc_rec.list_used_by <> 'MEDI' THEN
847          IF p_list_assoc_rec.do_not_contact_flag <> 'Y' THEN
848             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
849                FND_MESSAGE.set_name('AMS', 'list_used_by is neither CAMP nor MEDI');
850                FND_MSG_PUB.add;
851             END IF;
852             RAISE FND_API.g_exc_error;
853             RETURN;
854          END IF;
855       END IF;
856 
857   OPEN c_media_id;
858 
859   FETCH c_media_id INTO l_media_id;
860 
861   IF (c_media_id%NOTFOUND) THEN
862      IF p_list_assoc_rec.do_not_contact_flag <> 'Y' AND
863         p_list_assoc_rec.list_used_by = 'MEDI' THEN
864         CLOSE c_media_id;
865         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
866            FND_MESSAGE.set_name('AMS', 'MEDIA_ID_NOT_VALID');
867            FND_MSG_PUB.add;
868         END IF;
869         RAISE FND_API.g_exc_error;
870       END IF;
871   END IF;
872   CLOSE c_media_id;
873 
874   OPEN c_camp_id;
875 
876   FETCH c_camp_id INTO l_camp_id;
877 
878   IF (c_camp_id%NOTFOUND) THEN
879      IF p_list_assoc_rec.do_not_contact_flag <> 'Y' AND
880         p_list_assoc_rec.list_used_by ='CAMP' THEN
881         CLOSE c_camp_id;
882         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
883            FND_MESSAGE.set_name('AMS', 'CAMPAIGN_ID_NOT_VALID');
884            FND_MSG_PUB.add;
885         END IF;
886         RAISE FND_API.g_exc_error;
887      END IF;
888   END IF;
889   CLOSE c_camp_id;
890 
891 END check_list_assoc_req_items;
892 
893 PROCEDURE check_list_assoc_FK_items(
894     p_list_assoc_rec IN list_assoc_rec_type,
895     x_return_status OUT NOCOPY VARCHAR2
896 )
897 IS
898 BEGIN
899    x_return_status := FND_API.g_ret_sts_success;
900 
901    -- Enter custom code here
902 
903 END check_list_assoc_FK_items;
904 
905 PROCEDURE check_list_assoc_Lookup_items(
906     p_list_assoc_rec IN list_assoc_rec_type,
907     x_return_status OUT NOCOPY VARCHAR2
908 )
909 IS
910 BEGIN
911    x_return_status := FND_API.g_ret_sts_success;
912 
913    -- Enter custom code here
914 
915 END check_list_assoc_Lookup_items;
916 
917 PROCEDURE Check_list_assoc_Items (
918     P_list_assoc_rec     IN    list_assoc_rec_type,
919     p_validation_mode  IN    VARCHAR2,
920     x_return_status    OUT NOCOPY   VARCHAR2
921     )
922 IS
923 BEGIN
924 
925    -- Check Items Uniqueness API calls
926 
927    check_list_assoc_uk_items(
928       p_list_assoc_rec => p_list_assoc_rec,
929       p_validation_mode => p_validation_mode,
930       x_return_status => x_return_status);
931    IF x_return_status <> FND_API.g_ret_sts_success THEN
932       RETURN;
933    END IF;
934 
935    -- Check Items Required/NOT NULL API calls
936 
937    check_list_assoc_req_items(
938       p_list_assoc_rec => p_list_assoc_rec,
939       p_validation_mode => p_validation_mode,
940       x_return_status => x_return_status);
941    IF x_return_status <> FND_API.g_ret_sts_success THEN
942       RETURN;
943    END IF;
944 
945    -- Check Items Foreign Keys API calls
946 
947    check_list_assoc_FK_items(
948       p_list_assoc_rec => p_list_assoc_rec,
949       x_return_status => x_return_status);
950    IF x_return_status <> FND_API.g_ret_sts_success THEN
951       RETURN;
952    END IF;
953    -- Check Items Lookups
954 
955    check_list_assoc_Lookup_items(
956       p_list_assoc_rec => p_list_assoc_rec,
957       x_return_status => x_return_status);
958    IF x_return_status <> FND_API.g_ret_sts_success THEN
959       RETURN;
960    END IF;
961 
962 END Check_list_assoc_Items;
963 
964 
965 
966 PROCEDURE Complete_list_assoc_Rec (
967    p_list_assoc_rec IN list_assoc_rec_type,
968    x_complete_rec OUT NOCOPY list_assoc_rec_type)
969 IS
970    l_return_status  VARCHAR2(1);
971 
972    CURSOR c_complete IS
973       SELECT *
974       FROM ams_list_cont_restrictions
975       WHERE list_contact_restrictions_id = p_list_assoc_rec.list_cont_restrictions_id;
976    l_list_assoc_rec c_complete%ROWTYPE;
977 BEGIN
978    x_complete_rec := p_list_assoc_rec;
979 
980 
981    OPEN c_complete;
982    FETCH c_complete INTO l_list_assoc_rec;
983    CLOSE c_complete;
984 
985    -- list_contact_restrictions_id
986    IF p_list_assoc_rec.list_cont_restrictions_id = FND_API.g_miss_num THEN
987       x_complete_rec.list_cont_restrictions_id := l_list_assoc_rec.list_contact_restrictions_id;
988    END IF;
989 
990    -- list_header_id
994 
991    IF p_list_assoc_rec.list_header_id = FND_API.g_miss_num THEN
992       x_complete_rec.list_header_id := l_list_assoc_rec.list_header_id;
993    END IF;
995    -- last_update_date
996    IF p_list_assoc_rec.last_update_date = FND_API.g_miss_date THEN
997       x_complete_rec.last_update_date := l_list_assoc_rec.last_update_date;
998    END IF;
999 
1000    -- last_updated_by
1001    IF p_list_assoc_rec.last_updated_by = FND_API.g_miss_num THEN
1002       x_complete_rec.last_updated_by := l_list_assoc_rec.last_updated_by;
1003    END IF;
1004 
1005    -- creation_date
1006    IF p_list_assoc_rec.creation_date = FND_API.g_miss_date THEN
1007       x_complete_rec.creation_date := l_list_assoc_rec.creation_date;
1008    END IF;
1009 
1010    -- created_by
1011    IF p_list_assoc_rec.created_by = FND_API.g_miss_num THEN
1012       x_complete_rec.created_by := l_list_assoc_rec.created_by;
1013    END IF;
1014 
1015    -- last_update_login
1016    IF p_list_assoc_rec.last_update_login = FND_API.g_miss_num THEN
1017       x_complete_rec.last_update_login := l_list_assoc_rec.last_update_login;
1018    END IF;
1019 
1020    -- object_version_number
1021    IF p_list_assoc_rec.object_version_number = FND_API.g_miss_num THEN
1022       x_complete_rec.object_version_number := l_list_assoc_rec.object_version_number;
1023    END IF;
1024 
1025    -- Comment out since do_not_contact_flag, media_id, camp_id are
1026    -- exclusively. Old data cannot keep along.
1027 
1028    -- do_not_contact_flag
1029    --IF p_list_assoc_rec.do_not_contact_flag = FND_API.g_miss_char THEN
1030    --   x_complete_rec.do_not_contact_flag := l_list_assoc_rec.do_not_contact_flag;
1031    --END IF;
1032 
1033    -- media_id
1034    --IF p_list_assoc_rec.media_id = FND_API.g_miss_num THEN
1035    --   x_complete_rec.media_id := l_list_assoc_rec.media_id;
1036    --END IF;
1037 
1038    -- list_used_by
1039    --IF p_list_assoc_rec.list_used_by = FND_API.g_miss_char THEN
1040    --   x_complete_rec.list_used_by := l_list_assoc_rec.list_used_by;
1041    --END IF;
1042 
1043    -- list_used_by_id
1044    --IF p_list_assoc_rec.list_used_by_id = FND_API.g_miss_num THEN
1045    --   x_complete_rec.list_used_by_id := l_list_assoc_rec.list_used_by_id;
1046    --END IF;
1047 
1048    -- Note: Developers need to modify the procedure
1049    -- to handle any business specific requirements.
1050 END Complete_list_assoc_Rec;
1051 PROCEDURE Validate_list_assoc(
1052     p_api_version_number         IN   NUMBER,
1053     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1054     p_validation_level           IN   NUMBER := FND_API.G_VALID_LEVEL_FULL,
1055     p_list_assoc_rec               IN   list_assoc_rec_type,
1056     x_return_status              OUT NOCOPY  VARCHAR2,
1057     x_msg_count                  OUT NOCOPY  NUMBER,
1058     x_msg_data                   OUT NOCOPY  VARCHAR2
1059     )
1060  IS
1061 L_API_NAME                  CONSTANT VARCHAR2(30) := 'Validate_List_Assoc';
1062 L_API_VERSION_NUMBER        CONSTANT NUMBER   := 1.0;
1063 l_object_version_number     NUMBER;
1064 l_list_assoc_rec  AMS_List_Assoc_PVT.list_assoc_rec_type;
1065 
1066  BEGIN
1067       -- Standard Start of API savepoint
1068       SAVEPOINT VALIDATE_List_Assoc_;
1069 
1070       -- Standard call to check for call compatibility.
1071       IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1072                                            p_api_version_number,
1073                                            l_api_name,
1074                                            G_PKG_NAME)
1075       THEN
1076 
1077           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1078       END IF;
1079 
1080       -- Initialize message list if p_init_msg_list is set to TRUE.
1081       IF FND_API.to_Boolean( p_init_msg_list )
1082       THEN
1083          FND_MSG_PUB.initialize;
1084       END IF;
1085       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1086               Check_list_assoc_Items(
1087                  p_list_assoc_rec        => p_list_assoc_rec,
1088                  p_validation_mode   => JTF_PLSQL_API.g_update,
1089                  x_return_status     => x_return_status
1090               );
1091 
1092               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1093 
1094                   RAISE FND_API.G_EXC_ERROR;
1095               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1096 
1097                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1098               END IF;
1099       END IF;
1100       Complete_list_assoc_Rec(
1101          p_list_assoc_rec        => p_list_assoc_rec,
1102          x_complete_rec        => l_list_assoc_rec
1103       );
1104 
1105       IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1106          Validate_list_assoc_Rec(
1107            p_api_version_number     => 1.0,
1108            p_init_msg_list          => FND_API.G_FALSE,
1109            x_return_status          => x_return_status,
1110            x_msg_count              => x_msg_count,
1111            x_msg_data               => x_msg_data,
1112            p_list_assoc_rec           =>    l_list_assoc_rec);
1113 
1114               IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1115 
1116                  RAISE FND_API.G_EXC_ERROR;
1120               END IF;
1117               ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1118 
1119                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1121       END IF;
1122 
1123 
1124       -- Debug Message
1125       IF (AMS_DEBUG_HIGH_ON) THEN
1126 
1127       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1128       END IF;
1129 
1130 
1131       -- Initialize API return status to SUCCESS
1132       x_return_status := FND_API.G_RET_STS_SUCCESS;
1133 
1134 
1135       -- Debug Message
1136       IF (AMS_DEBUG_HIGH_ON) THEN
1137 
1138       AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1139       END IF;
1140 
1141       -- Standard call to get message count and if count is 1, get message info.
1142       FND_MSG_PUB.Count_And_Get
1143         (p_count          =>   x_msg_count,
1144          p_data           =>   x_msg_data
1145       );
1146 EXCEPTION
1147 
1148    WHEN AMS_Utility_PVT.resource_locked THEN
1149      x_return_status := FND_API.g_ret_sts_error;
1150  AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1151 
1152    WHEN FND_API.G_EXC_ERROR THEN
1153      ROLLBACK TO VALIDATE_List_Assoc_;
1154      x_return_status := FND_API.G_RET_STS_ERROR;
1155      -- Standard call to get message count and if count=1, get the message
1156      FND_MSG_PUB.Count_And_Get (
1157             p_encoded => FND_API.G_FALSE,
1158             p_count   => x_msg_count,
1159             p_data    => x_msg_data
1160      );
1161 
1162    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1163      ROLLBACK TO VALIDATE_List_Assoc_;
1164      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1165      -- Standard call to get message count and if count=1, get the message
1166      FND_MSG_PUB.Count_And_Get (
1167             p_encoded => FND_API.G_FALSE,
1168             p_count => x_msg_count,
1169             p_data  => x_msg_data
1170      );
1171 
1172    WHEN OTHERS THEN
1173      ROLLBACK TO VALIDATE_List_Assoc_;
1174      x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1175      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1176      THEN
1177         FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1178      END IF;
1179      -- Standard call to get message count and if count=1, get the message
1180      FND_MSG_PUB.Count_And_Get (
1181             p_encoded => FND_API.G_FALSE,
1182             p_count => x_msg_count,
1183             p_data  => x_msg_data
1184      );
1185 End Validate_List_Assoc;
1186 
1187 
1188 PROCEDURE Validate_list_assoc_rec(
1189     p_api_version_number         IN   NUMBER,
1190     p_init_msg_list              IN   VARCHAR2     := FND_API.G_FALSE,
1191     x_return_status              OUT NOCOPY  VARCHAR2,
1192     x_msg_count                  OUT NOCOPY  NUMBER,
1193     x_msg_data                   OUT NOCOPY  VARCHAR2,
1194     p_list_assoc_rec               IN    list_assoc_rec_type
1195     )
1196 IS
1197 BEGIN
1198       -- Initialize message list if p_init_msg_list is set to TRUE.
1199       IF FND_API.to_Boolean( p_init_msg_list )
1200       THEN
1201          FND_MSG_PUB.initialize;
1202       END IF;
1203 
1204       -- Initialize API return status to SUCCESS
1205       x_return_status := FND_API.G_RET_STS_SUCCESS;
1206 
1207       -- Hint: Validate data
1208       -- If data not valid
1209       -- THEN
1210       -- x_return_status := FND_API.G_RET_STS_ERROR;
1211 
1212       -- Debug Message
1213       IF (AMS_DEBUG_HIGH_ON) THEN
1214 
1215       AMS_UTILITY_PVT.debug_message('Private API: Validate_list_assoc_rec');
1216       END IF;
1217       -- Standard call to get message count and if count is 1, get message info.
1218       FND_MSG_PUB.Count_And_Get
1219         (p_count          =>   x_msg_count,
1220          p_data           =>   x_msg_data
1221       );
1222 END Validate_list_assoc_Rec;
1223 
1224 END AMS_List_Assoc_PVT;