DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMV_CONTENT_TYPE_PVT

Source


1 PACKAGE BODY amv_content_type_pvt AS
2 /*  $Header: amvvctpb.pls 120.1 2005/06/21 15:29:39 appldev ship $ */
3 --
4 -- NAME
5 --   AMV_CONTENT_TYPE_PVT
6 --
7 -- HISTORY
8 --   07/19/1999        PWU        CREATED
9 --
10 G_PKG_NAME      CONSTANT VARCHAR2(30) := 'AMV_CONTENT_TYPE_PVT';
11 G_FILE_NAME     CONSTANT VARCHAR2(12) := 'amvvctpb.pls';
12 --
13 -- Debug mode
14 --g_debug boolean := FALSE;
15 g_debug boolean := TRUE;
16 --
17 TYPE    CursorType    IS REF CURSOR;
18 --
19 ----------------------------- Private Cursors in this package ------------------
20 CURSOR Check_DupContTypeName_csr(p_name IN varchar2) IS
21 Select
22     content_type_id
23 From   amv_i_content_types_tl
24 Where  content_type_name = p_name
25 And    language IN
26     (
27        Select L.language_code
28        From  fnd_languages L
29        Where L.installed_flag in ('I', 'B')
30     )
31 ;
32 --
33 CURSOR  Check_ValidContTypeName_csr(p_name varchar2) IS
34 Select
35      content_type_id
36 From  amv_i_content_types_tl
37 Where content_type_name = p_name
38 And   language = userenv('lang');
39 --
40 --------------------------- Private Utility inside this package ----------------
41 --------------------------------------------------------------------------------
42 --
43 --
44 --------------------------------------------------------------------------------
45 PROCEDURE Add_ContentType
46 (
47     p_api_version          IN  NUMBER,
48     p_init_msg_list        IN  VARCHAR2 := FND_API.G_FALSE,
49     p_commit               IN  VARCHAR2 := FND_API.G_FALSE,
50     p_validation_level     IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
51     x_return_status        OUT NOCOPY  VARCHAR2,
52     x_msg_count            OUT NOCOPY  NUMBER,
53     x_msg_data             OUT NOCOPY  VARCHAR2,
54     p_check_login_user     IN  VARCHAR2 := FND_API.G_TRUE,
55     p_content_type_name    IN  VARCHAR2,
56     p_cnt_type_description IN  VARCHAR2 := FND_API.G_MISS_CHAR,
57     x_content_type_id      OUT NOCOPY  NUMBER
58 )  IS
59 l_api_name             CONSTANT VARCHAR2(30) := 'Add_ContentType';
60 l_api_version          CONSTANT NUMBER := 1.0;
61 l_resource_id          NUMBER  := -1;
62 l_current_user_id      NUMBER  := -1;
63 l_current_login_id     NUMBER  := -1;
64 l_current_user_status  VARCHAR2(80);
65 --
66 l_admin_flag           VARCHAR2(1);
67 l_rowid                VARCHAR2(500);
68 l_content_type_id      NUMBER;
69 l_description          VARCHAR2(2000);
70 l_current_date         date;
71 --
72 CURSOR Get_DateAndId_csr IS
73 select
74       AMV_I_CONTENT_TYPES_B_S.nextval, sysdate
75 from dual;
76 --
77 BEGIN
78     -- Standard call to check for call compatibility.
79     SAVEPOINT  Add_ContentType_Pvt;
80     IF NOT FND_API.Compatible_API_Call (
81          l_api_version,
82          p_api_version,
83          l_api_name,
84          G_PKG_NAME) THEN
85         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
86     END IF;
87     --Initialize message list if p_init_msg_list is TRUE.
88     IF FND_API.To_Boolean (p_init_msg_list) THEN
89        FND_MSG_PUB.initialize;
90     END IF;
91     -- Initialize API return status to success
92     x_return_status := FND_API.G_RET_STS_SUCCESS;
93     -- Get the current (login) user id.
94     AMV_UTILITY_PVT.Get_UserInfo(
95        x_resource_id => l_resource_id,
96        x_user_id     => l_current_user_id,
97        x_login_id    => l_current_login_id,
98        x_user_status => l_current_user_status
99        );
100     IF (p_check_login_user = FND_API.G_TRUE) THEN
101        -- Check if user is login and has the required privilege.
102        IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
103           -- User is not login.
104           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
105               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
106               FND_MSG_PUB.Add;
107           END IF;
108           RAISE  FND_API.G_EXC_ERROR;
109        END IF;
110        AMV_USER_PVT.Is_Administrator
111        (
112            p_api_version         => 1.0,
113            x_return_status       => x_return_status,
114            x_msg_count           => x_msg_count,
115            x_msg_data            => x_msg_data,
116            p_check_login_user    => FND_API.G_FALSE,
117            p_resource_id         => l_resource_id,
118            x_result_flag         => l_admin_flag
119        );
120        IF (l_admin_flag <> FND_API.G_TRUE) THEN
121           -- User is not an administrator.
122           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
123               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
124               FND_MSG_PUB.Add;
125           END IF;
126           RAISE  FND_API.G_EXC_ERROR;
127        END IF;
128     END IF;
129     -- This is to make database happy
130     IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
131         l_current_login_id := -1;
132         l_current_user_id  := -1;
133     END IF;
134     OPEN  Check_DupContTypeName_csr(p_content_type_name);
135     FETCH Check_DupContTypeName_csr Into l_content_type_id;
136     IF Check_DupContTypeName_csr%FOUND THEN
137         -- The name is already used
138         CLOSE Check_DupContTypeName_csr;
139         IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
140             FND_MESSAGE.Set_name('AMV','AMV_RECORD_NAME_DUPLICATED');
141             FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
142             FND_MESSAGE.Set_Token('NAME', p_content_type_name);
143             FND_MSG_PUB.Add;
144         END IF;
145         RAISE  FND_API.G_EXC_ERROR;
146     END IF;
147     CLOSE Check_DupContTypeName_csr;
148     --
149     OPEN  Get_DateAndId_csr;
150     FETCH Get_DateAndId_csr Into l_content_type_id, l_current_date;
151     CLOSE Get_DateAndId_csr;
152     --
153     IF (p_cnt_type_description = FND_API.G_MISS_CHAR) THEN
154         l_description := NULL;
155     ELSE
156         l_description := p_cnt_type_description;
157     END IF;
158     --Do create the record now.
159     AMV_I_CONTENT_TYPES_PKG.INSERT_ROW
160        (
161         X_ROWID => l_rowid,
162         X_CONTENT_TYPE_ID => l_content_type_id,
163         X_OBJECT_VERSION_NUMBER => 1,
164         X_CONTENT_TYPE_NAME => p_content_type_name,
165         X_DESCRIPTION => l_description,
166         X_CREATION_DATE => l_current_date,
167         X_CREATED_BY => l_current_user_id,
168         X_LAST_UPDATE_DATE => l_current_date,
169         X_LAST_UPDATED_BY => l_current_user_id,
170         X_LAST_UPDATE_LOGIN => l_current_login_id
171        );
172     --Standard check of commit
173     IF FND_API.To_Boolean ( p_commit ) THEN
174         COMMIT WORK;
175     END IF;
176     --Standard call to get message count and if count=1, get the message
177     FND_MSG_PUB.Count_And_Get (
178        p_encoded => FND_API.G_FALSE,
179        p_count   => x_msg_count,
180        p_data    => x_msg_data
181        );
182 EXCEPTION
183    WHEN FND_API.G_EXC_ERROR THEN
184        ROLLBACK TO  Add_ContentType_Pvt;
185        x_return_status := FND_API.G_RET_STS_ERROR;
186        -- Standard call to get message count and if count=1, get the message
187        FND_MSG_PUB.Count_And_Get (
188           p_encoded => FND_API.G_FALSE,
189           p_count   => x_msg_count,
190           p_data    => x_msg_data
191           );
192    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
193        ROLLBACK TO  Add_ContentType_Pvt;
194        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
195        -- Standard call to get message count and if count=1, get the message
196        FND_MSG_PUB.Count_And_Get (
197           p_encoded => FND_API.G_FALSE,
198           p_count   => x_msg_count,
199           p_data    => x_msg_data
200           );
201    WHEN OTHERS THEN
202        ROLLBACK TO  Add_ContentType_Pvt;
203        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
204        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
205           FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
206        END IF;
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 END Add_ContentType;
215 --------------------------------------------------------------------------------
216 PROCEDURE Delete_ContentType
217 (
218     p_api_version        IN  NUMBER,
219     p_init_msg_list      IN  VARCHAR2 := FND_API.G_FALSE,
220     p_commit             IN  VARCHAR2 := FND_API.G_FALSE,
221     p_validation_level   IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
222     x_return_status      OUT NOCOPY  VARCHAR2,
223     x_msg_count          OUT NOCOPY  NUMBER,
224     x_msg_data           OUT NOCOPY  VARCHAR2,
225     p_check_login_user   IN  VARCHAR2 := FND_API.G_TRUE,
226     p_content_type_id    IN  NUMBER   := FND_API.G_MISS_NUM,
227     p_content_type_name  IN  VARCHAR2 := FND_API.G_MISS_CHAR
228 ) IS
229 l_api_name             CONSTANT VARCHAR2(30) := 'Delete_ContentType';
230 l_api_version          CONSTANT NUMBER := 1.0;
231 l_resource_id          NUMBER  := -1;
232 l_current_user_id      NUMBER  := -1;
233 l_current_login_id     NUMBER  := -1;
234 l_current_user_status  VARCHAR2(80);
235 --
236 l_admin_flag           VARCHAR2(1);
237 l_content_type_id      NUMBER;
238 l_item_id              NUMBER;
239 --
240 CURSOR Get_Item_csr (p_ContentType_id IN NUMBER) IS
241 Select
242     item_id
243 From jtf_amv_items_b
244 Where content_type_id = p_ContentType_id;
245 --
246 BEGIN
247     -- Standard call to check for call compatibility.
248     SAVEPOINT  Delete_ContentType_Pvt;
249     IF NOT FND_API.Compatible_API_Call (
250          l_api_version,
251          p_api_version,
252          l_api_name,
253          G_PKG_NAME) THEN
254         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
255     END IF;
256     --Initialize message list if p_init_msg_list is TRUE.
257     IF FND_API.To_Boolean (p_init_msg_list) THEN
258        FND_MSG_PUB.initialize;
259     END IF;
260     -- Initialize API return status to success
261     x_return_status := FND_API.G_RET_STS_SUCCESS;
262     -- Get the current (login) user id.
263     AMV_UTILITY_PVT.Get_UserInfo(
264        x_resource_id => l_resource_id,
265        x_user_id     => l_current_user_id,
266        x_login_id    => l_current_login_id,
267        x_user_status => l_current_user_status
268        );
269     IF (p_check_login_user = FND_API.G_TRUE) THEN
270        -- Check if user is login and has the required privilege.
271        IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
272           -- User is not login.
273           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
274               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
275               FND_MSG_PUB.Add;
276           END IF;
277           RAISE  FND_API.G_EXC_ERROR;
278        END IF;
279        AMV_USER_PVT.Is_Administrator
280        (
281            p_api_version         => 1.0,
282            x_return_status       => x_return_status,
283            x_msg_count           => x_msg_count,
284            x_msg_data            => x_msg_data,
285            p_check_login_user    => FND_API.G_FALSE,
286            p_resource_id         => l_resource_id,
287            x_result_flag         => l_admin_flag
288        );
289        IF (l_admin_flag <> FND_API.G_TRUE) THEN
290           -- User is not an administrator.
291           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
292               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
293               FND_MSG_PUB.Add;
294           END IF;
295           RAISE  FND_API.G_EXC_ERROR;
296        END IF;
297     END IF;
298     -- This is to make database happy
299     IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
300         l_current_login_id := -1;
301         l_current_user_id  := -1;
302     END IF;
303     IF (p_content_type_id <> FND_API.G_MISS_NUM) THEN
304        -- Check if user pass the valid content type id
305        IF AMV_UTILITY_PVT.Is_ContentTypeIdValid(p_content_type_id) = TRUE THEN
306            l_content_type_id := p_content_type_id;
307        ELSE
308           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
309               FND_MESSAGE.Set_name('AMV','AMV_RECORD_ID_MISSING');
310               FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
311               FND_MESSAGE.Set_Token('ID', to_char(p_content_type_id));
312               FND_MSG_PUB.Add;
313           END IF;
314           RAISE FND_API.G_EXC_ERROR;
315        END IF;
316     ELSIF (p_content_type_name <> FND_API.G_MISS_CHAR) THEN
317        OPEN  Check_ValidContTypeName_csr(p_content_type_name);
318        FETCH Check_ValidContTypeName_csr Into l_content_type_id;
319        IF (Check_ValidContTypeName_csr%NOTFOUND) THEN
320           CLOSE Check_ValidContTypeName_csr;
321           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
322               FND_MESSAGE.Set_name('AMV','AMV_RECORD_NAME_MISSING');
323               FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
324               FND_MESSAGE.Set_Token('NAME',  p_content_type_name);
325               FND_MSG_PUB.Add;
326           END IF;
327           RAISE FND_API.G_EXC_ERROR;
328        END IF;
329        CLOSE Check_ValidContTypeName_csr;
330     ELSE
331        IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
332            FND_MESSAGE.Set_name('AMV','AMV_NEED_RECORD_NAME_OR_ID');
333            FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
334            FND_MSG_PUB.Add;
335        END IF;
336        RAISE FND_API.G_EXC_ERROR;
337     END IF;
338     --
339     -- Check if any item uses this content type. If so, error out.
340     OPEN  Get_Item_csr (l_content_type_id);
341     FETCH Get_Item_csr INTO l_item_id;
342     IF (Get_Item_csr%FOUND) THEN
343        CLOSE Get_Item_csr;
344        IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
345            FND_MESSAGE.Set_name('AMV','AMV_ITEM_USING_ATTR');
346            FND_MESSAGE.Set_Token('RECORDID', TO_CHAR(l_item_id) );
347            FND_MSG_PUB.Add;
348        END IF;
349        RAISE FND_API.G_EXC_ERROR;
350     ELSE
351        CLOSE Get_Item_csr;
352     END IF;
353     -- Now do the deleting:
354     Delete from amv_c_content_types
355     where content_type_id = l_content_type_id;
356     --
357     AMV_I_CONTENT_TYPES_PKG.DELETE_ROW
358     (
359        X_CONTENT_TYPE_ID => l_content_type_id
360     );
361     --Standard check of commit
362     IF FND_API.To_Boolean ( p_commit ) THEN
363         COMMIT WORK;
364     END IF;
365     --Standard call to get message count and if count=1, get the message
366     FND_MSG_PUB.Count_And_Get (
367        p_encoded => FND_API.G_FALSE,
368        p_count   => x_msg_count,
369        p_data    => x_msg_data
370        );
371 EXCEPTION
372    WHEN FND_API.G_EXC_ERROR THEN
373        ROLLBACK TO  Delete_ContentType_Pvt;
374        x_return_status := FND_API.G_RET_STS_ERROR;
375        -- Standard call to get message count and if count=1, get the message
376        FND_MSG_PUB.Count_And_Get (
377           p_encoded => FND_API.G_FALSE,
378           p_count   => x_msg_count,
379           p_data    => x_msg_data
380           );
381    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
382        ROLLBACK TO  Delete_ContentType_Pvt;
383        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
384        -- Standard call to get message count and if count=1, get the message
385        FND_MSG_PUB.Count_And_Get (
386           p_encoded => FND_API.G_FALSE,
387           p_count   => x_msg_count,
388           p_data    => x_msg_data
389           );
390    WHEN OTHERS THEN
391        ROLLBACK TO  Delete_ContentType_Pvt;
392        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
393        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
394           FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
395        END IF;
396        -- Standard call to get message count and if count=1, get the message
397        FND_MSG_PUB.Count_And_Get (
398           p_encoded => FND_API.G_FALSE,
399           p_count   => x_msg_count,
400           p_data    => x_msg_data
401           );
402 --
403 END Delete_ContentType;
407     p_api_version            IN  NUMBER,
404 --------------------------------------------------------------------------------
405 PROCEDURE Update_ContentType
406 (
408     p_init_msg_list          IN  VARCHAR2 := FND_API.G_FALSE,
409     p_commit                 IN  VARCHAR2 := FND_API.G_FALSE,
410     p_validation_level       IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
411     x_return_status          OUT NOCOPY  VARCHAR2,
412     x_msg_count              OUT NOCOPY  NUMBER,
413     x_msg_data               OUT NOCOPY  VARCHAR2,
414     p_check_login_user       IN  VARCHAR2 := FND_API.G_TRUE,
415     p_content_type_id        IN  NUMBER   := FND_API.G_MISS_NUM,
416     p_content_type_name      IN  VARCHAR2 := FND_API.G_MISS_CHAR,
417     p_content_type_new_name  IN  VARCHAR2 := FND_API.G_MISS_CHAR,
418     p_cnt_type_description   IN  VARCHAR2 := FND_API.G_MISS_CHAR
419 ) IS
420 l_api_name             CONSTANT VARCHAR2(30) := 'Update_ContentType';
421 l_api_version          CONSTANT NUMBER := 1.0;
422 l_resource_id          NUMBER  := -1;
423 l_current_user_id      NUMBER  := -1;
424 l_current_login_id     NUMBER  := -1;
425 l_current_user_status  VARCHAR2(80);
426 --
427 l_admin_flag           VARCHAR2(1);
428 l_content_type_id      NUMBER;
429 l_object_version       NUMBER;
430 --
431 CURSOR Get_Version_csr(p_ctype_id IN NUMBER) IS
432 Select
433    object_version_number
434 from  Amv_i_content_types_b
435 where content_type_id = p_ctype_id;
436 --
437 --
438 BEGIN
439     -- Standard call to check for call compatibility.
440     SAVEPOINT  Update_ContentType_Pvt;
441     IF NOT FND_API.Compatible_API_Call (
442          l_api_version,
443          p_api_version,
444          l_api_name,
445          G_PKG_NAME) THEN
446         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
447     END IF;
448     --Initialize message list if p_init_msg_list is TRUE.
449     IF FND_API.To_Boolean (p_init_msg_list) THEN
450        FND_MSG_PUB.initialize;
451     END IF;
452     -- Initialize API return status to success
453     x_return_status := FND_API.G_RET_STS_SUCCESS;
454     -- Get the current (login) user id.
455     AMV_UTILITY_PVT.Get_UserInfo(
456        x_resource_id => l_resource_id,
457        x_user_id     => l_current_user_id,
458        x_login_id    => l_current_login_id,
459        x_user_status => l_current_user_status
460        );
461     IF (p_check_login_user = FND_API.G_TRUE) THEN
462        -- Check if user is login and has the required privilege.
463        IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
464           -- User is not login.
465           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
466               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
467               FND_MSG_PUB.Add;
468           END IF;
469           RAISE  FND_API.G_EXC_ERROR;
470        END IF;
471        AMV_USER_PVT.Is_Administrator
472        (
473            p_api_version         => 1.0,
474            x_return_status       => x_return_status,
475            x_msg_count           => x_msg_count,
476            x_msg_data            => x_msg_data,
477            p_check_login_user    => FND_API.G_FALSE,
478            p_resource_id         => l_resource_id,
479            x_result_flag         => l_admin_flag
480        );
481        IF (l_admin_flag <> FND_API.G_TRUE) THEN
482           -- User is not an administrator.
483           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
484               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
485               FND_MSG_PUB.Add;
486           END IF;
487           RAISE  FND_API.G_EXC_ERROR;
488        END IF;
489     END IF;
490     -- This is to make database happy
491     IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
492         l_current_login_id := -1;
493         l_current_user_id  := -1;
494     END IF;
495     -- Ensure the name is not used yet.
496     OPEN  Check_DupContTypeName_csr(p_content_type_new_name);
497     FETCH Check_DupContTypeName_csr INTO l_content_type_id;
498     IF Check_DupContTypeName_csr%FOUND THEN
499         CLOSE Check_DupContTypeName_csr;
500         IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
501             FND_MESSAGE.Set_name('AMV','AMV_RECORD_NAME_DUPLICATED');
502             FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
503             FND_MESSAGE.Set_Token('NAME', p_content_type_new_name);
504             FND_MSG_PUB.Add;
505         END IF;
506         RAISE FND_API.G_EXC_ERROR;
507     END IF;
508     CLOSE Check_DupContTypeName_csr;
509     --
510     IF (p_content_type_id <> FND_API.G_MISS_NUM) THEN
511        -- Check if user pass the valid content type id
512        IF AMV_UTILITY_PVT.Is_ContentTypeIdValid(p_content_type_id) = TRUE THEN
513            l_content_type_id := p_content_type_id;
514        ELSE
515           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
516               FND_MESSAGE.Set_name('AMV','AMV_RECORD_ID_MISSING');
517               FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
518               FND_MESSAGE.Set_Token('ID', to_char(p_content_type_id));
519               FND_MSG_PUB.Add;
520           END IF;
521           RAISE FND_API.G_EXC_ERROR;
522        END IF;
523     ELSIF (p_content_type_name <> FND_API.G_MISS_CHAR) THEN
524        OPEN  Check_ValidContTypeName_csr(p_content_type_name);
525        FETCH Check_ValidContTypeName_csr Into l_content_type_id;
526        IF (Check_ValidContTypeName_csr%NOTFOUND) THEN
527           CLOSE Check_ValidContTypeName_csr;
528           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
529               FND_MESSAGE.Set_name('AMV','AMV_RECORD_NAME_MISSING');
530               FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
531               FND_MESSAGE.Set_Token('NAME',  p_content_type_name);
532               FND_MSG_PUB.Add;
533           END IF;
534           RAISE FND_API.G_EXC_ERROR;
535        END IF;
536        CLOSE Check_ValidContTypeName_csr;
537     ELSE
538        IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
539            FND_MESSAGE.Set_name('AMV','AMV_NEED_RECORD_NAME_OR_ID');
540            FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
541            FND_MSG_PUB.Add;
542        END IF;
543        RAISE FND_API.G_EXC_ERROR;
544     END IF;
545     -- Get the current version number
546     OPEN  Get_Version_csr(l_content_type_id);
547     FETCH  Get_Version_csr INTO l_object_version;
548     CLOSE  Get_Version_csr;
549     -- Debug Message
550     IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
551         FND_MESSAGE.Set_name('AMV','Updating Content Type.');
552         FND_MSG_PUB.Add;
553     END IF;
554     -- Now do the updating:
555     AMV_I_CONTENT_TYPES_PKG.UPDATE_ROW
556         (
557            X_CONTENT_TYPE_ID =>l_content_type_id,
558            X_OBJECT_VERSION_NUMBER => l_object_version + 1,
559            X_CONTENT_TYPE_NAME => p_content_type_new_name,
560            X_DESCRIPTION       => p_cnt_type_description,
561            X_LAST_UPDATE_DATE  => sysdate,
562            X_LAST_UPDATED_BY   => l_current_user_id,
563            X_LAST_UPDATE_LOGIN => l_current_login_id
564         );
565     --Standard check of commit
566     IF FND_API.To_Boolean ( p_commit ) THEN
567         COMMIT WORK;
568     END IF;
569     --Standard call to get message count and if count=1, get the message
570     FND_MSG_PUB.Count_And_Get (
571        p_encoded => FND_API.G_FALSE,
572        p_count   => x_msg_count,
573        p_data    => x_msg_data
574        );
575 EXCEPTION
576    WHEN FND_API.G_EXC_ERROR THEN
577        ROLLBACK TO  Update_ContentType_Pvt;
578        x_return_status := FND_API.G_RET_STS_ERROR;
579        -- Standard call to get message count and if count=1, get the message
580        FND_MSG_PUB.Count_And_Get (
581           p_encoded => FND_API.G_FALSE,
582           p_count   => x_msg_count,
583           p_data    => x_msg_data
584           );
585    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
586        ROLLBACK TO  Update_ContentType_Pvt;
587        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
588        -- Standard call to get message count and if count=1, get the message
589        FND_MSG_PUB.Count_And_Get (
590           p_encoded => FND_API.G_FALSE,
591           p_count   => x_msg_count,
595        ROLLBACK TO  Update_ContentType_Pvt;
592           p_data    => x_msg_data
593           );
594    WHEN OTHERS THEN
596        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
597        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
598           FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
599        END IF;
600        -- Standard call to get message count and if count=1, get the message
601        FND_MSG_PUB.Count_And_Get (
602           p_encoded => FND_API.G_FALSE,
603           p_count   => x_msg_count,
604           p_data    => x_msg_data
605           );
606 END Update_ContentType;
607 --
608 --------------------------------------------------------------------------------
609 PROCEDURE Get_ContentType
610 (
611     p_api_version         IN  NUMBER,
612     p_init_msg_list       IN  VARCHAR2 := FND_API.G_FALSE,
613     p_validation_level    IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
614     x_return_status       OUT NOCOPY  VARCHAR2,
615     x_msg_count           OUT NOCOPY  NUMBER,
616     x_msg_data            OUT NOCOPY  VARCHAR2,
617     p_check_login_user    IN  VARCHAR2 := FND_API.G_TRUE,
618     p_content_type_id     IN  NUMBER   := FND_API.G_MISS_NUM,
619     p_content_type_name   IN  VARCHAR2 := FND_API.G_MISS_CHAR,
620     x_content_type_obj    OUT NOCOPY  AMV_CONTENT_TYPE_OBJ_TYPE
621 ) IS
622 l_api_name             CONSTANT VARCHAR2(30) := 'Get_ContentType';
623 l_api_version          CONSTANT NUMBER := 1.0;
624 l_resource_id          NUMBER  := -1;
625 l_current_user_id      NUMBER  := -1;
626 l_current_login_id     NUMBER  := -1;
627 l_current_user_status  VARCHAR2(80);
628 --
629 l_content_type_id       NUMBER;
630 --
631 CURSOR Get_CntTypeRecord_csr (p_ID IN NUMBER) IS
632 Select
633     B.CONTENT_TYPE_ID,
634     B.OBJECT_VERSION_NUMBER,
635     T.CONTENT_TYPE_NAME,
636     T.DESCRIPTION,
640     B.CREATED_BY,
637     T.LANGUAGE,
638     T.SOURCE_LANG,
639     B.CREATION_DATE,
641     B.LAST_UPDATE_DATE,
642     B.LAST_UPDATED_BY,
643     B.LAST_UPDATE_LOGIN
644 From   AMV_I_CONTENT_TYPES_TL T, AMV_I_CONTENT_TYPES_B B
645 Where  B.CONTENT_TYPE_ID = T.CONTENT_TYPE_ID
646 And    T.LANGUAGE = userenv('LANG')
647 And    B.CONTENT_TYPE_ID = p_ID;
648 --
649 l_content_type_rec  Get_CntTypeRecord_csr%ROWTYPE;
650 --
651 BEGIN
652     -- Standard call to check for call compatibility.
653     IF NOT FND_API.Compatible_API_Call (
654          l_api_version,
655          p_api_version,
656          l_api_name,
657          G_PKG_NAME) THEN
658         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
659     END IF;
660     --Initialize message list if p_init_msg_list is TRUE.
661     IF FND_API.To_Boolean (p_init_msg_list) THEN
662        FND_MSG_PUB.initialize;
663     END IF;
664     -- Initialize API return status to success
665     x_return_status := FND_API.G_RET_STS_SUCCESS;
666     -- Get the current (login) user id.
667     AMV_UTILITY_PVT.Get_UserInfo(
668        x_resource_id => l_resource_id,
669        x_user_id     => l_current_user_id,
670        x_login_id    => l_current_login_id,
671        x_user_status => l_current_user_status
672        );
673     IF (p_check_login_user = FND_API.G_TRUE) THEN
674        -- Check if user is login and has the required privilege.
675        IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
676           -- User is not login.
677           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
678               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
679               FND_MSG_PUB.Add;
680           END IF;
681           RAISE  FND_API.G_EXC_ERROR;
682        END IF;
683     END IF;
684     -- This is to make database happy
685     IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
686         l_current_login_id := -1;
687         l_current_user_id  := -1;
688     END IF;
689     IF (p_content_type_id <> FND_API.G_MISS_NUM) THEN
690        -- Check if user pass the valid content type id
691        IF AMV_UTILITY_PVT.Is_ContentTypeIdValid(p_content_type_id) = TRUE THEN
692            l_content_type_id := p_content_type_id;
693        ELSE
694           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
695               FND_MESSAGE.Set_name('AMV','AMV_RECORD_ID_MISSING');
696               FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
697               FND_MESSAGE.Set_Token('ID', to_char(p_content_type_id));
698               FND_MSG_PUB.Add;
699           END IF;
700           RAISE FND_API.G_EXC_ERROR;
701        END IF;
702     ELSIF (p_content_type_name <> FND_API.G_MISS_CHAR) THEN
703        OPEN  Check_ValidContTypeName_csr(p_content_type_name);
707           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
704        FETCH Check_ValidContTypeName_csr Into l_content_type_id;
705        IF (Check_ValidContTypeName_csr%NOTFOUND) THEN
706           CLOSE Check_ValidContTypeName_csr;
708               FND_MESSAGE.Set_name('AMV','AMV_RECORD_NAME_MISSING');
709               FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
710               FND_MESSAGE.Set_Token('NAME',  p_content_type_name);
711               FND_MSG_PUB.Add;
712           END IF;
713           RAISE FND_API.G_EXC_ERROR;
714        END IF;
715        CLOSE Check_ValidContTypeName_csr;
716     ELSE
717        IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
718            FND_MESSAGE.Set_name('AMV','AMV_NEED_RECORD_NAME_OR_ID');
719            FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
720            FND_MSG_PUB.Add;
721        END IF;
722        RAISE FND_API.G_EXC_ERROR;
723     END IF;
724     -- Now query and return the content type record
725     OPEN  Get_CntTypeRecord_csr(l_content_type_id);
726     FETCH Get_CntTypeRecord_csr INTO l_content_type_rec;
727     IF (Get_CntTypeRecord_csr%NOTFOUND) THEN
728         CLOSE Get_CntTypeRecord_csr;
729         IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
730             FND_MESSAGE.Set_name('AMV','AMV_RECORD_NOT_FOUND');
731             FND_MESSAGE.Set_Token('RECORD', 'AMV_CONTENTTYPE_TK', TRUE);
732             FND_MSG_PUB.Add;
733         END IF;
734         RAISE FND_API.G_EXC_ERROR;
735     ELSE
736         x_content_type_obj.content_type_id := l_content_type_rec.content_type_id;
737         x_content_type_obj.object_version_number := l_content_type_rec.object_version_number;
738         x_content_type_obj.content_type_name := l_content_type_rec.content_type_name;
739         x_content_type_obj.description := l_content_type_rec.description;
740         x_content_type_obj.language := l_content_type_rec.language;
741         x_content_type_obj.source_lang := l_content_type_rec.source_lang;
742         x_content_type_obj.creation_date := l_content_type_rec.creation_date;
743         x_content_type_obj.created_by := l_content_type_rec.created_by;
744         x_content_type_obj.last_update_date := l_content_type_rec.last_update_date;
745         x_content_type_obj.last_updated_by := l_content_type_rec.last_updated_by;
746         x_content_type_obj.last_update_login := l_content_type_rec.last_update_login;
747 
748      /* x_content_type_obj := AMV_CONTENT_TYPE_OBJ_TYPE
749            (
750               l_content_type_rec.content_type_id,
751               l_content_type_rec.object_version_number,
752               l_content_type_rec.content_type_name,
753               l_content_type_rec.description,
754               l_content_type_rec.language,
755               l_content_type_rec.source_lang,
756               l_content_type_rec.creation_date,
757               l_content_type_rec.created_by,
758               l_content_type_rec.last_update_date,
759               l_content_type_rec.last_updated_by,
760               l_content_type_rec.last_update_login
761            );
762      */
763     END IF;
764     CLOSE Get_CntTypeRecord_csr;
765     --Standard call to get message count and if count=1, get the message
766     FND_MSG_PUB.Count_And_Get (
767        p_encoded => FND_API.G_FALSE,
768        p_count   => x_msg_count,
769        p_data    => x_msg_data
770        );
771 EXCEPTION
772    WHEN FND_API.G_EXC_ERROR THEN
773        x_return_status := FND_API.G_RET_STS_ERROR;
774        -- Standard call to get message count and if count=1, get the message
775        FND_MSG_PUB.Count_And_Get (
776           p_encoded => FND_API.G_FALSE,
777           p_count   => x_msg_count,
778           p_data    => x_msg_data
779           );
780    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
781        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
782        -- Standard call to get message count and if count=1, get the message
786           p_data    => x_msg_data
783        FND_MSG_PUB.Count_And_Get (
784           p_encoded => FND_API.G_FALSE,
785           p_count   => x_msg_count,
787           );
788    WHEN OTHERS THEN
789        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
790        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
791             FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
792        END IF;
793        -- Standard call to get message count and if count=1, get the message
794        FND_MSG_PUB.Count_And_Get (
795           p_encoded => FND_API.G_FALSE,
796           p_count   => x_msg_count,
797           p_data    => x_msg_data
798           );
799 --
800 END Get_ContentType;
801 --
802 --------------------------------------------------------------------------------
803 PROCEDURE Find_ContentType
804 (
805     p_api_version             IN  NUMBER,
806     p_init_msg_list           IN  VARCHAR2 := FND_API.G_FALSE,
807     p_validation_level        IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
808     x_return_status           OUT NOCOPY  VARCHAR2,
809     x_msg_count               OUT NOCOPY  NUMBER,
810     x_msg_data                OUT NOCOPY  VARCHAR2,
811     p_check_login_user        IN  VARCHAR2 := FND_API.G_TRUE,
812     p_content_type_name       IN  VARCHAR2 := FND_API.G_MISS_CHAR,
813     p_cnt_type_description    IN  VARCHAR2 := FND_API.G_MISS_CHAR,
814     p_subset_request_obj      IN  AMV_REQUEST_OBJ_TYPE,
815     x_subset_return_obj       OUT NOCOPY  AMV_RETURN_OBJ_TYPE,
816     x_content_type_obj_varray OUT NOCOPY  AMV_CONTENT_TYPE_OBJ_VARRAY
817 ) IS
818 l_api_name             CONSTANT VARCHAR2(30) := 'Find_ContentType';
819 l_api_version          CONSTANT NUMBER := 1.0;
820 l_resource_id          NUMBER  := -1;
821 l_current_user_id      NUMBER  := -1;
822 l_current_login_id     NUMBER  := -1;
823 l_current_user_status  VARCHAR2(80);
824 --
825 l_cursor             CursorType;
826 l_sql_statement      VARCHAR2(2000);
827 l_sql_statement2     VARCHAR2(2000);
828 l_where_clause       VARCHAR2(2000);
829 l_total_count        NUMBER := 1;
830 l_fetch_count        NUMBER := 0;
831 l_start_with         NUMBER;
832 l_total_record_count NUMBER;
833 --
834 l_content_type_id    NUMBER;
835 l_object_version_number  NUMBER;
836 l_content_type_name  VARCHAR2(80);
837 l_description        VARCHAR2(2000);
838 l_language           VARCHAR2(4);
839 l_source_lang        VARCHAR2(4);
840 l_creation_date      DATE;
841 l_created_by         NUMBER;
842 l_last_update_date   DATE;
843 l_last_updated_by    NUMBER;
844 l_last_update_login  NUMBER;
845 --
846 BEGIN
847     -- Standard call to check for call compatibility.
848     IF NOT FND_API.Compatible_API_Call (
849          l_api_version,
850          p_api_version,
851          l_api_name,
852          G_PKG_NAME) THEN
853         RAISE  FND_API.G_EXC_UNEXPECTED_ERROR;
854     END IF;
855     --Initialize message list if p_init_msg_list is TRUE.
856     IF FND_API.To_Boolean (p_init_msg_list) THEN
857        FND_MSG_PUB.initialize;
858     END IF;
859     -- Initialize API return status to success
860     x_return_status := FND_API.G_RET_STS_SUCCESS;
861     -- Get the current (login) user id.
862     AMV_UTILITY_PVT.Get_UserInfo(
863        x_resource_id => l_resource_id,
864        x_user_id     => l_current_user_id,
865        x_login_id    => l_current_login_id,
866        x_user_status => l_current_user_status
867        );
868     IF (p_check_login_user = FND_API.G_TRUE) THEN
869        -- Check if user is login and has the required privilege.
870        IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
871           -- User is not login.
872           IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
873               FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
874               FND_MSG_PUB.Add;
875           END IF;
876           RAISE  FND_API.G_EXC_ERROR;
877        END IF;
878     END IF;
879     -- This is to make database happy
880     IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
881         l_current_login_id := -1;
882         l_current_user_id  := -1;
883     END IF;
884     -- Now create SQL statement and find the results:
885     l_sql_statement :=
886        'Select ' ||
887            'B.CONTENT_TYPE_ID, ' ||
888            'B.OBJECT_VERSION_NUMBER, ' ||
889            'T.CONTENT_TYPE_NAME, ' ||
890            'T.DESCRIPTION, ' ||
891            'T.LANGUAGE, ' ||
892            'T.SOURCE_LANG, ' ||
893            'B.CREATION_DATE, ' ||
894            'B.CREATED_BY, ' ||
895            'B.LAST_UPDATE_DATE, ' ||
896            'B.LAST_UPDATED_BY, ' ||
897            'B.LAST_UPDATE_LOGIN ' ||
898        'From   AMV_I_CONTENT_TYPES_TL T, AMV_I_CONTENT_TYPES_B B ';
899     l_sql_statement2 :=
900        'Select count(*) ' ||
901        'From   AMV_I_CONTENT_TYPES_TL T, AMV_I_CONTENT_TYPES_B B ';
902     --
903     l_where_clause :=
904        'Where  B.CONTENT_TYPE_ID = T.CONTENT_TYPE_ID ' ||
905        'And    T.LANGUAGE = userenv(''LANG'') ';
906     IF (p_content_type_name IS NOT NULL AND
907         p_content_type_name <> FND_API.G_MISS_CHAR) THEN
908         l_where_clause := l_where_clause ||
909              'And T.CONTENT_TYPE_NAME Like ''' || p_content_type_name || ''' ';
910     END IF;
911     IF (p_cnt_type_description IS NOT NULL AND
912         p_cnt_type_description <> FND_API.G_MISS_CHAR) THEN
913         l_where_clause := l_where_clause ||
914              'And T.DESCRIPTION Like ''' || p_cnt_type_description || ''' ';
915     END IF;
916     l_sql_statement := l_sql_statement ||
920     IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
917          l_where_clause || 'ORDER BY T.CONTENT_TYPE_NAME ';
918     l_sql_statement2 := l_sql_statement2 || l_where_clause;
919     --
921        FND_MESSAGE.Set_name('AMV','AMV_API_DEBUG_MESSAGE');
922        FND_MESSAGE.Set_Token('ROW', l_sql_statement);
923        FND_MSG_PUB.Add;
924        --
925        FND_MESSAGE.Set_name('AMV','AMV_API_DEBUG_MESSAGE');
926        FND_MESSAGE.Set_Token('ROW', l_sql_statement2);
927        FND_MSG_PUB.Add;
928     END IF;
929 
930     --Execute the SQL statements to get the total count:
931     IF (p_subset_request_obj.return_total_count_flag = FND_API.G_TRUE) THEN
932         OPEN  l_cursor FOR l_sql_statement2;
933         FETCH l_cursor INTO l_total_record_count;
934         CLOSE l_cursor;
935     END IF;
936     --dbms_output.put_line('Total=' || l_total_record_count);
937     --Execute the SQL statements to get records
938     l_start_with := p_subset_request_obj.start_record_position;
939     x_content_type_obj_varray := AMV_CONTENT_TYPE_OBJ_VARRAY();
943          l_content_type_id,
940     OPEN l_cursor FOR l_sql_statement;
941     LOOP
942       FETCH l_cursor INTO
944          l_object_version_number,
945          l_content_type_name,
946          l_description,
947          l_language,
948          l_source_lang,
949          l_creation_date,
950          l_created_by,
951          l_last_update_date,
952          l_last_updated_by,
953          l_last_update_login;
954       EXIT WHEN l_cursor%NOTFOUND;
955       IF (l_start_with <= l_total_count AND
956           l_fetch_count < p_subset_request_obj.records_requested) THEN
957          l_fetch_count := l_fetch_count + 1;
958          x_content_type_obj_varray.extend;
959          x_content_type_obj_varray(l_fetch_count).content_type_id := l_content_type_id;
960          x_content_type_obj_varray(l_fetch_count).object_version_number := l_object_version_number;
961          x_content_type_obj_varray(l_fetch_count).content_type_name := l_content_type_name;
962          x_content_type_obj_varray(l_fetch_count).description := l_description;
963          x_content_type_obj_varray(l_fetch_count).language := l_language;
964          x_content_type_obj_varray(l_fetch_count).source_lang := l_source_lang;
965          x_content_type_obj_varray(l_fetch_count).creation_date := l_creation_date;
966          x_content_type_obj_varray(l_fetch_count).created_by := l_created_by;
967          x_content_type_obj_varray(l_fetch_count).last_update_date := l_last_update_date;
968          x_content_type_obj_varray(l_fetch_count).last_updated_by := l_last_updated_by;
969          x_content_type_obj_varray(l_fetch_count).last_update_login := l_last_update_login;
970 
971 /*
972          x_content_type_obj_varray(l_fetch_count) := amv_content_type_obj_type
973            (
974               l_content_type_id,
975               l_object_version_number,
976               l_content_type_name,
977               l_description,
978               l_language,
979               l_source_lang,
980               l_creation_date,
981               l_created_by,
982               l_last_update_date,
983               l_last_updated_by,
984               l_last_update_login
985            );
986 */
987       END IF;
988       IF (l_fetch_count >= p_subset_request_obj.records_requested) THEN
989          exit;
990       END IF;
991       l_total_count := l_total_count + 1;
992     END LOOP;
993     CLOSE l_cursor;
994     x_subset_return_obj.returned_record_count := l_fetch_count;
995     x_subset_return_obj.next_record_position := p_subset_request_obj.start_record_position + l_fetch_count;
996     x_subset_return_obj.total_record_count := l_total_record_count;
997 
998  /*:= AMV_RETURN_OBJ_TYPE
999        (
1000           l_fetch_count,
1001           p_subset_request_obj.start_record_position + l_fetch_count,
1002           l_total_record_count
1003        );
1004  */
1005 
1006     --Standard call to get message count and if count=1, get the message
1007     FND_MSG_PUB.Count_And_Get (
1008        p_encoded => FND_API.G_FALSE,
1009        p_count   => x_msg_count,
1010        p_data    => x_msg_data
1011        );
1012 EXCEPTION
1013    WHEN FND_API.G_EXC_ERROR THEN
1014        x_return_status := FND_API.G_RET_STS_ERROR;
1015        -- Standard call to get message count and if count=1, get the message
1016        FND_MSG_PUB.Count_And_Get (
1017           p_encoded => FND_API.G_FALSE,
1018           p_count   => x_msg_count,
1019           p_data    => x_msg_data
1020           );
1021    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1022        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1023        -- Standard call to get message count and if count=1, get the message
1024        FND_MSG_PUB.Count_And_Get (
1025           p_encoded => FND_API.G_FALSE,
1026           p_count   => x_msg_count,
1027           p_data    => x_msg_data
1028           );
1029    WHEN OTHERS THEN
1030        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1031        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1032           FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1033        END IF;
1034        -- Standard call to get message count and if count=1, get the message
1035        FND_MSG_PUB.Count_And_Get (
1036           p_encoded => FND_API.G_FALSE,
1037           p_count   => x_msg_count,
1038           p_data    => x_msg_data
1039           );
1040 --
1041 END Find_ContentType;
1042 --
1043 --
1044 --------------------------------------------------------------------------------
1045 END amv_content_type_pvt;