DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_PRETTY_URL_PVT

Source


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