DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CATEGORY_PVT

Source


1 PACKAGE BODY AMS_Category_PVT as
2 /* $Header: amsvctyb.pls 120.2 2005/11/23 05:23:52 vmodur noship $ */
3 --
4 -- NAME
5 --   AMS_Category_PVT
6 --
7 -- HISTORY
8 --  01/04/2000  sugupta     CREATED
9 --  06/01/2000  khung       add two new columns accrued_liability_account
10 --                          and ded_adjustment_account
11 --  07/10/2000  khung       add columns in complete_category_rec for bug
12 --                          1349969 fix
13 --  06/19/2001  musman      checking the foreign exists for category_id in
14 --                          ams_deliverables_all_b table for bug 1794454 fix.
15 --  07/11/2001  musman      changed the message name from AMS_CAT_CANNOT_MODIFY_SEED
16 --                          to AMS_CAT_CANNOT_MOD_SEED for bug 1877146 fix.
17 --  07/26/2001  musman      In the validate_cty_records the return_status was set to
18 --                          Expected error though its not an error.Bug fix for #1880798
19 --  08/30/2001  musman      In the Validate_Cty_Child_Enty the commented out the foreign key check to
20 --                          Ams_deliv_offerings_b,since was not existing anymore.Bug fix for #1966294
21 --  11/02/2001  musman      Implementing that the categories can be disabled only if the
22 --                          child categories are disabled.
23 --  12/20/2004  vmodur      Bug 3847393 in 11.5.11
24 --  09/30/2005  vmodur      Added Ledger_Id
25 --  11/23/2005  vmodur      Missed Bug 4064984 in R12 shipped using Bug 4755142
26 
27 --
28 G_PACKAGE_NAME  CONSTANT VARCHAR2(30):='AMS_Category_PVT';
29 G_FILE_NAME     CONSTANT VARCHAR2(12):='amsvctyb.pls';
30 
31 -- Debug mode
32 --g_debug boolean := FALSE;
33 g_debug boolean := TRUE;
34 
35 --
36 -- Procedure and function declarations.
37 
38 
39 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
40 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
41 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
42 
43 PROCEDURE Validate_Category_Cross_Record
44 ( p_category_rec        IN      category_rec_type,
45   x_return_status       OUT NOCOPY     VARCHAR2
46 );
47 
48 PROCEDURE Validate_Category_Cross_Entity
49 ( p_category_rec        IN      category_rec_type,
50   x_return_status       OUT NOCOPY     VARCHAR2
51 );
52 
53 -- Start of Comments
54 --
55 -- NAME
56 --   Create_Category
57 --
58 -- PURPOSE
59 --   This procedure is to create a category record that satisfy caller needs
60 --
61 -- NOTES
62 --
63 --
64 -- HISTORY
65 --   01/04/2000        sugupta            created
66 -- End of Comments
67 
68 PROCEDURE Create_Category
69 ( p_api_version                 IN      NUMBER,
70   p_init_msg_list               IN      VARCHAR2    := FND_API.g_false,
71   p_commit                      IN      VARCHAR2    := FND_API.g_false,
72   p_validation_level            IN      NUMBER      := FND_API.g_valid_level_full,
73   x_return_status               OUT NOCOPY     VARCHAR2,
74   x_msg_count                   OUT NOCOPY     NUMBER,
75   x_msg_data                    OUT NOCOPY     VARCHAR2,
76 
77   p_category_rec                IN      category_rec_type,
78   x_category_id                 OUT NOCOPY     NUMBER
79 ) IS
80 
81         l_api_name              CONSTANT        VARCHAR2(30)  := 'Create_Category';
82         l_api_version           CONSTANT        NUMBER        := 1.0;
83                 l_full_name   CONSTANT VARCHAR2(60) := G_PACKAGE_NAME ||'.'|| l_api_name;
84 
85         -- Status Local Variables
86         l_return_status         VARCHAR2(1);  -- Return value from procedures
87         l_category_rec          category_rec_type := p_category_rec;
88                 l_count                         NUMBER;
89 
90         CURSOR C_category_seq IS
91         SELECT ams_categories_b_s.NEXTVAL
92           FROM dual;
93 
94         CURSOR C_category_count(my_category_id VARCHAR2) IS
95         SELECT COUNT(*)
96           FROM AMS_CATEGORIES_B
97          WHERE category_id = my_category_id;
98 
99        CURSOR c_findParentofParent ( l_parent_parent_id IN NUMBER ) IS
100          SELECT parent_category_id
101            FROM AMS_CATEGORIES_B
102           WHERE category_id = l_parent_parent_id;
103 
104        l_parent_id NUMBER;
105 
106   BEGIN
107 
108         -- Standard Start of API savepoint
109         SAVEPOINT Create_Category_PVT;
110    IF (AMS_DEBUG_HIGH_ON) THEN
111 
112    AMS_Utility_PVT.debug_message(l_full_name||': start');
113    END IF;
114 
115         -- Standard call to check for call compatibility.
116         IF NOT FND_API.Compatible_API_Call ( l_api_version,
117                                              p_api_version,
118                                              l_api_name,
119                                              G_PACKAGE_NAME)
120         THEN
121                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
122         END IF;
123 
124         -- Initialize message list IF p_init_msg_list is set to TRUE.
125         IF FND_API.to_Boolean( p_init_msg_list )
126         THEN
127                 FND_MSG_PUB.initialize;
128         END IF;
129 
130 
131         --  Initialize API return status to success
132         x_return_status := FND_API.G_RET_STS_SUCCESS;
133 
134    ----------------------- validate -----------------------
135    IF (AMS_DEBUG_HIGH_ON) THEN
136 
137    AMS_Utility_PVT.debug_message(l_full_name ||': validate');
138    END IF;
139 
140         Validate_Category
141         ( p_api_version                 => 1.0
142           ,p_init_msg_list              => p_init_msg_list
143           ,p_validation_level           => p_validation_level
144           ,x_return_status              => l_return_status
145           ,x_msg_count                  => x_msg_count
146           ,x_msg_data                   => x_msg_data
147 
148           ,p_category_rec               => l_category_rec
149           );
150 
151         -- If any errors happen abort API.
152         IF l_return_status = FND_API.G_RET_STS_ERROR
153         THEN
154                 RAISE FND_API.G_EXC_ERROR;
155 
156         ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
157         THEN
158                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
159         END IF;
160    -------------------------- insert --------------------------
161    IF (AMS_DEBUG_HIGH_ON) THEN
162 
163    AMS_Utility_PVT.debug_message(l_full_name ||': insert');
164    END IF;
165 
166         -- Set the value for the PK.
167 
168    IF l_category_rec.category_id IS NULL THEN
169            LOOP
170                         OPEN C_category_seq;
171                         FETCH C_category_seq INTO l_category_rec.category_id;
172                         CLOSE C_category_seq;
173 
174                   OPEN C_category_count(l_category_rec.category_id);
175                   FETCH C_category_count INTO l_count;
176                   CLOSE C_category_count;
177 
178                   EXIT WHEN l_count = 0;
179            END LOOP;
180    END IF;
181 
182    ----------- For DELV and METR , we can only have one level of hierarchy --------
183    -----------  code added by abhola START ----------------------------------------
184    if (L_CATEGORY_REC.PARENT_CATEGORY_ID IS NOT NULL ) AND
185       (L_CATEGORY_REC.ARC_CATEGORY_CREATED_FOR in ('DELV','METR'))
186    then
187 
188      OPEN c_findParentofParent(L_CATEGORY_REC.PARENT_CATEGORY_ID);
189      FETCH c_findParentofParent INTO l_parent_id;
190      CLOSE c_findParentofParent;
191 
192        if ( l_parent_id  IS NOT NULL ) then
193              IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
194                FND_MESSAGE.set_name('AMS', 'AMS_INVALID_CAT_LEVEL');
195                FND_MSG_PUB.add;
196             END IF;
197             RAISE FND_API.g_exc_error;
198       end if;
199 
200   end if;
201 
202    ------------- code added by abhola END ------------------------------------------
203         --
204         -- Insert into the base table.
205         --
206     INSERT INTO AMS_CATEGORIES_B (
207     CATEGORY_ID,
208     CREATION_DATE,
209     CREATED_BY,
210     LAST_UPDATE_DATE,
211     LAST_UPDATED_BY,
212     LAST_UPDATE_LOGIN,
213     OBJECT_VERSION_NUMBER,
214     ARC_CATEGORY_CREATED_FOR,
215     ENABLED_FLAG,
216     PARENT_CATEGORY_ID
217     ,ATTRIBUTE_CATEGORY
218          ,ATTRIBUTE1
219          ,ATTRIBUTE2
220          ,ATTRIBUTE3
221          ,ATTRIBUTE4
222          ,ATTRIBUTE5
223          ,ATTRIBUTE6
224          ,ATTRIBUTE7
225          ,ATTRIBUTE8
226          ,ATTRIBUTE9
227          ,ATTRIBUTE10
228          ,ATTRIBUTE11
229          ,ATTRIBUTE12
230          ,ATTRIBUTE13
231          ,ATTRIBUTE14
232          ,ATTRIBUTE15
233      ,ACCRUED_LIABILITY_ACCOUNT
234      ,DED_ADJUSTMENT_ACCOUNT
235      ,BUDGET_CODE_SUFFIX
236      ,LEDGER_ID
237         ) VALUES (
238     L_CATEGORY_REC.CATEGORY_ID,
239         SYSDATE,
240     FND_GLOBAL.user_id,
241     SYSDATE,
242     FND_GLOBAL.user_id,
243     FND_GLOBAL.conc_login_id,
244     1,                                  -- object_version_number
245     L_CATEGORY_REC.ARC_CATEGORY_CREATED_FOR,
246     nvl(L_CATEGORY_REC.ENABLED_FLAG,'Y'),
247     L_CATEGORY_REC.PARENT_CATEGORY_ID,
248     L_CATEGORY_REC.ATTRIBUTE_CATEGORY,
249     L_CATEGORY_REC.ATTRIBUTE1,
250     L_CATEGORY_REC.ATTRIBUTE2,
251     L_CATEGORY_REC.ATTRIBUTE3,
252     L_CATEGORY_REC.ATTRIBUTE4,
253     L_CATEGORY_REC.ATTRIBUTE5,
254     L_CATEGORY_REC.ATTRIBUTE6,
255     L_CATEGORY_REC.ATTRIBUTE7,
256     L_CATEGORY_REC.ATTRIBUTE8,
257     L_CATEGORY_REC.ATTRIBUTE9,
258     L_CATEGORY_REC.ATTRIBUTE10,
259     L_CATEGORY_REC.ATTRIBUTE11,
260     L_CATEGORY_REC.ATTRIBUTE12,
261     L_CATEGORY_REC.ATTRIBUTE13,
262     L_CATEGORY_REC.ATTRIBUTE14,
263     L_CATEGORY_REC.ATTRIBUTE15,
264     L_CATEGORY_REC.ACCRUED_LIABILITY_ACCOUNT,
265     L_CATEGORY_REC.DED_ADJUSTMENT_ACCOUNT,
266     L_CATEGORY_REC.BUDGET_CODE_SUFFIX,
267     L_CATEGORY_REC.LEDGER_ID
268 );
269 
270         INSERT INTO AMS_CATEGORIES_TL (
271             CATEGORY_NAME,
272             DESCRIPTION,
273             LAST_UPDATE_DATE,
274             LAST_UPDATED_BY,
275             CREATION_DATE,
276             CREATED_BY,
277             LAST_UPDATE_LOGIN,
278             CATEGORY_ID,
279             LANGUAGE,
280             SOURCE_LANG
281         ) SELECT
282             l_category_rec.CATEGORY_NAME,
283             l_category_rec.DESCRIPTION,
284                 sysdate,
285             FND_GLOBAL.User_Id,
286             sysdate,
287             FND_GLOBAL.User_Id,
288             FND_GLOBAL.Conc_Login_Id,
289             l_category_rec.category_id,
290             L.LANGUAGE_CODE,
291             userenv('LANG')
292             FROM FND_LANGUAGES L
293            WHERE L.INSTALLED_FLAG in ('I', 'B')
294              AND NOT EXISTS
295                 (SELECT NULL
296                    FROM AMS_CATEGORIES_TL T
297                   WHERE T.CATEGORY_ID = l_category_rec.category_id
298                     AND T.LANGUAGE = L.LANGUAGE_CODE);
299 
300         -- set OUT value
301         x_category_id := l_category_rec.category_id;
302 
303         -- Standard check of p_commit.
304         IF FND_API.To_Boolean ( p_commit )
305         THEN
306                 COMMIT WORK;
307         END IF;
308 
309                         -- Standard call to get message count AND IF count is 1, get message info.
310         FND_MSG_PUB.Count_AND_Get
311         ( p_count       =>      x_msg_count,
312           p_data        =>      x_msg_data,
313                   p_encoded     =>      FND_API.G_FALSE
314         );
315 
316            IF (AMS_DEBUG_HIGH_ON) THEN
317 
318 
319 
320            AMS_Utility_PVT.debug_message(l_full_name ||': end');
321 
322            END IF;
323 
324   EXCEPTION
325 
326         WHEN FND_API.G_EXC_ERROR
327         THEN
328                 ROLLBACK TO Create_Category_PVT;
329                 x_return_status := FND_API.G_RET_STS_ERROR ;
330 
331                 FND_MSG_PUB.Count_AND_Get
332                 ( p_count       =>      x_msg_count,
333                   p_data        =>      x_msg_data,
334                           p_encoded     =>      FND_API.G_FALSE
335                 );
336 
337         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
338         THEN
339                 ROLLBACK TO Create_Category_PVT;
340                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
341 
342                 FND_MSG_PUB.Count_AND_Get
343                 ( p_count       =>      x_msg_count,
344                   p_data        =>      x_msg_data,
345                           p_encoded     =>      FND_API.G_FALSE
346                     );
347 
348         WHEN OTHERS THEN
349 
350                 ROLLBACK TO Create_Category_PVT;
351                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
352 
353                 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
354                 THEN
355                         FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
356                 END IF;
357 
358                 FND_MSG_PUB.Count_AND_Get
359                 ( p_count       =>      x_msg_count,
360                   p_data        =>      x_msg_data,
361                   p_encoded     =>      FND_API.G_FALSE
362                 );
363 
364 END Create_Category;
365 
366 
367 -- Start of Comments
368 --
369 -- NAME
370 --   Update_category
371 --
372 -- PURPOSE
373 --   This procedure is to update a category record that satisfy caller needs
374 --
375 -- NOTES
376 --
377 --
378 -- HISTORY
379 --   01/04/2000        sugupta            created
380 -- End of Comments
381 
382 PROCEDURE Update_Category
383 ( p_api_version         IN     NUMBER,
384   p_init_msg_list       IN     VARCHAR2 := FND_API.g_false,
385   p_commit              IN     VARCHAR2 := FND_API.g_false,
386   p_validation_level    IN     NUMBER   := FND_API.g_valid_level_full,
387   x_return_status       OUT NOCOPY    VARCHAR2,
388   x_msg_count           OUT NOCOPY    NUMBER,
389   x_msg_data            OUT NOCOPY    VARCHAR2,
390 
391   p_category_rec        IN     category_rec_type
392 ) IS
393         l_api_name      CONSTANT VARCHAR2(30)  := 'Update_Category';
394         l_api_version   CONSTANT NUMBER        := 1.0;
395         l_full_name     CONSTANT VARCHAR2(60) := G_PACKAGE_NAME ||'.'|| l_api_name;
396 
397         -- Status Local Variables
398         l_return_status VARCHAR2(1);  -- Return value from procedures
399         l_category_rec  category_rec_type;
400 
401 
402       CURSOR c_findParentofParent ( l_parent_parent_id IN NUMBER ) IS
403          SELECT parent_category_id
404            FROM AMS_CATEGORIES_B
405           WHERE category_id = l_parent_parent_id;
406 
407        l_parent_id NUMBER;
408 
409   BEGIN
410 
411         -- Standard Start of API savepoint
412        SAVEPOINT Update_Category_PVT;
413        --IF (AMS_DEBUG_HIGH_ON) THENAMS_Utility_PVT.debug_message(l_full_name||': start');END IF;
414 
415         -- Standard call to check for call compatibility.
416         IF NOT FND_API.Compatible_API_Call ( l_api_version,
417                                              p_api_version,
418                                              l_api_name,
422         END IF;
419                                              G_PACKAGE_NAME)
420         THEN
421             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
423 
424         -- Initialize message list IF p_init_msg_list is set to TRUE.
425         IF FND_API.to_Boolean( p_init_msg_list )
426             THEN
427             FND_MSG_PUB.initialize;
428         END IF;
429 
430         --  Initialize API return status to success
431         x_return_status := FND_API.G_RET_STS_SUCCESS;
432 
433  ----------------------- validate ----------------------
434    -- IF (AMS_DEBUG_HIGH_ON) THEN  AMS_Utility_PVT.debug_message(l_full_name ||': validate'); END IF;
435 
436   -- replace g_miss_char/num/date with current column values
437    complete_category_rec(p_category_rec, l_category_rec);
438 
439     Validate_Category
440     ( p_api_version         => 1.0
441       ,p_init_msg_list      => p_init_msg_list
442       ,p_validation_level   => p_validation_level
443       ,x_return_status      => l_return_status
444       ,x_msg_count          => x_msg_count
445       ,x_msg_data           => x_msg_data
446       ,p_category_rec       => l_category_rec
447     );
448 
449     -- If any errors happen abort API.
450     IF l_return_status = FND_API.G_RET_STS_ERROR
451     THEN
452         RAISE FND_API.G_EXC_ERROR;
453     ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
454 
455     THEN
456         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
457     END IF;
458 
459 
460    ----------- For DELV and METR , we can only have one level of hierarchy --------
461    -----------  code added by abhola START ----------------------------------------
462    if (L_CATEGORY_REC.PARENT_CATEGORY_ID IS NOT NULL ) AND
463       (L_CATEGORY_REC.ARC_CATEGORY_CREATED_FOR in ('DELV','METR'))
464    then
465 
466      OPEN c_findParentofParent(L_CATEGORY_REC.PARENT_CATEGORY_ID);
467      FETCH c_findParentofParent INTO l_parent_id;
468      CLOSE c_findParentofParent;
469 
470        if ( l_parent_id  IS NOT NULL ) then
471              IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
472                FND_MESSAGE.set_name('AMS', 'AMS_INVALID_CAT_LEVEL');
473                FND_MSG_PUB.add;
474             END IF;
475             RAISE FND_API.g_exc_error;
476       end if;
477 
478   end if;
479 
480    ------------- code added by abhola END ------------------------------------------
481 
482 
483    -------------------------- update --------------------
484     -- IF (AMS_DEBUG_HIGH_ON) THEN  AMS_Utility_PVT.debug_message(l_full_name ||': update before SEED Data Check'); END IF;
485 
486     -- seeded category if category_id < 10000
487     -- and created_by = 0 or 1 -- Bug 4064984
488     -- user cannot modify or delete seeded category
489     -- exception: enabled_flag can be modified
490     IF (l_category_rec.created_by IN (0,1) AND l_category_rec.category_id < 10000) THEN
491         UPDATE AMS_CATEGORIES_B
492         SET
493             LAST_UPDATE_DATE = SYSDATE,
494             LAST_UPDATED_BY = FND_GLOBAL.user_id,
495             LAST_UPDATE_LOGIN = FND_GLOBAL.conc_login_id,
496             OBJECT_VERSION_NUMBER = L_CATEGORY_REC.OBJECT_VERSION_NUMBER + 1,
497             ENABLED_FLAG = L_CATEGORY_REC.ENABLED_FLAG
498         WHERE
499             CATEGORY_ID = l_category_rec.category_id;
500 
501         IF (SQL%NOTFOUND) THEN
502           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
503              FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
504              FND_MSG_PUB.add;
505           END IF;
506           RAISE FND_API.g_exc_error;
507         END IF;
508 
509         UPDATE AMS_CATEGORIES_TL
510         SET
511             LAST_UPDATE_DATE = sysdate,
512             LAST_UPDATED_BY = FND_GLOBAL.User_Id,
513             LAST_UPDATE_LOGIN = FND_GLOBAL.Conc_Login_Id,
514             SOURCE_LANG = userenv('LANG')
515         WHERE
516             CATEGORY_ID = p_category_rec.category_id
517           AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
518 
519         IF (SQL%NOTFOUND) THEN
520              IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
521                FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
522                FND_MSG_PUB.add;
523             END IF;
524             RAISE FND_API.g_exc_error;
525         END IF;
526 
527     ELSE -- l_category_rec.l_category_id >= 10000 or non-seeded with seq < 10000
528 
529         UPDATE AMS_CATEGORIES_B
530         SET
531             LAST_UPDATE_DATE = SYSDATE,
532             LAST_UPDATED_BY = FND_GLOBAL.user_id,
533             LAST_UPDATE_LOGIN = FND_GLOBAL.conc_login_id,
534             OBJECT_VERSION_NUMBER = L_CATEGORY_REC.OBJECT_VERSION_NUMBER + 1,
535             ARC_CATEGORY_CREATED_FOR = L_CATEGORY_REC.ARC_CATEGORY_CREATED_FOR,
536             ENABLED_FLAG = L_CATEGORY_REC.ENABLED_FLAG,
537             PARENT_CATEGORY_ID = L_CATEGORY_REC.PARENT_CATEGORY_ID,
538             ATTRIBUTE_CATEGORY = L_CATEGORY_REC.ATTRIBUTE_CATEGORY,
539             ATTRIBUTE1 = L_CATEGORY_REC.ATTRIBUTE1,
540             ATTRIBUTE2 = L_CATEGORY_REC.ATTRIBUTE2,
541             ATTRIBUTE3 = L_CATEGORY_REC.ATTRIBUTE3,
542             ATTRIBUTE4 = L_CATEGORY_REC.ATTRIBUTE4,
546             ATTRIBUTE8 = L_CATEGORY_REC.ATTRIBUTE8,
543             ATTRIBUTE5 = L_CATEGORY_REC.ATTRIBUTE5,
544             ATTRIBUTE6 = L_CATEGORY_REC.ATTRIBUTE6,
545             ATTRIBUTE7 = L_CATEGORY_REC.ATTRIBUTE7,
547             ATTRIBUTE9 = L_CATEGORY_REC.ATTRIBUTE9,
548             ATTRIBUTE10 = L_CATEGORY_REC.ATTRIBUTE10,
549             ATTRIBUTE11 = L_CATEGORY_REC.ATTRIBUTE11,
550             ATTRIBUTE12 = L_CATEGORY_REC.ATTRIBUTE12,
551             ATTRIBUTE13 = L_CATEGORY_REC.ATTRIBUTE13,
552             ATTRIBUTE14 = L_CATEGORY_REC.ATTRIBUTE14,
553             ATTRIBUTE15 = L_CATEGORY_REC.ATTRIBUTE15,
554             ACCRUED_LIABILITY_ACCOUNT = L_CATEGORY_REC.ACCRUED_LIABILITY_ACCOUNT,
555             DED_ADJUSTMENT_ACCOUNT = L_CATEGORY_REC.DED_ADJUSTMENT_ACCOUNT,
556             BUDGET_CODE_SUFFIX  = L_CATEGORY_REC.BUDGET_CODE_SUFFIX,
557             LEDGER_ID = L_CATEGORY_REC.LEDGER_ID
558         WHERE
559             CATEGORY_ID = l_category_rec.category_id;
560 
561         IF (SQL%NOTFOUND) THEN
562           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
563              FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
564              FND_MSG_PUB.add;
565           END IF;
566           RAISE FND_API.g_exc_error;
567         END IF;
568 
569         UPDATE AMS_CATEGORIES_TL
570         SET
571             CATEGORY_NAME = l_category_rec.CATEGORY_NAME,
572             DESCRIPTION = l_category_rec.DESCRIPTION,
573             LAST_UPDATE_DATE = sysdate,
574             LAST_UPDATED_BY = FND_GLOBAL.User_Id,
575             LAST_UPDATE_LOGIN = FND_GLOBAL.Conc_Login_Id,
576             SOURCE_LANG = userenv('LANG')
577         WHERE
578             CATEGORY_ID = p_category_rec.category_id
579           AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
580 
581         IF (SQL%NOTFOUND) THEN
582           IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
583              FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
584              FND_MSG_PUB.add;
585           END IF;
586           RAISE FND_API.g_exc_error;
587         END IF;
588 
589     END IF;
590 
591    -------------------- finish --------------------------
592 
593       --IF (AMS_DEBUG_HIGH_ON) THENAMS_Utility_PVT.debug_message(l_full_name ||': After update');END IF;
594         -- Standard check of p_commit.
595         IF FND_API.To_Boolean ( p_commit )
596         THEN
597             COMMIT WORK;
598         END IF;
599 
600         -- Standard call to get message count AND IF count is 1, get message info.
601         FND_MSG_PUB.Count_AND_Get
602         (       p_count =>      x_msg_count,
603             p_data      =>      x_msg_data,
604             p_encoded   =>      FND_API.G_FALSE
605         );
606    IF (AMS_DEBUG_HIGH_ON) THEN
607 
608    AMS_Utility_PVT.debug_message(l_full_name ||': end');
609    END IF;
610 
611   EXCEPTION
612 
613     WHEN FND_API.G_EXC_ERROR
614     THEN
615         ROLLBACK TO Update_Category_PVT;
616         x_return_status := FND_API.G_RET_STS_ERROR ;
617 
618         FND_MSG_PUB.Count_AND_Get
619         ( p_count       =>      x_msg_count,
620           p_data        =>      x_msg_data,
621           p_encoded     =>      FND_API.G_FALSE
622         );
623 
624     WHEN FND_API.G_EXC_UNEXPECTED_ERROR
625     THEN
626         ROLLBACK TO Update_Category_PVT;
627         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
628 
629         FND_MSG_PUB.Count_AND_Get
630         ( p_count       =>      x_msg_count,
631           p_data        =>      x_msg_data,
632           p_encoded     =>      FND_API.G_FALSE
633         );
634 
635     /*
636     WHEN OTHERS THEN
637 
638     ROLLBACK TO Update_Category_PVT;
639         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
640 
641         IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
642         THEN
643                 FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
644         END IF;
645 
646         FND_MSG_PUB.Count_AND_Get
647         ( p_count       =>      x_msg_count,
648           p_data        =>      x_msg_data,
649           p_encoded     =>      FND_API.G_FALSE
650         );
651    */
652 
653 END Update_Category;
654 
655 -- Start of Comments
656 --
657 -- NAME
658 --   Delete_category
659 --
660 -- PURPOSE
661 --   This procedure is to delete a category record that satisfy caller needs
662 --
663 -- NOTES
664 --
665 --
666 -- HISTORY
667 --   01/04/2000        sugupta            created
668 -- End of Comments
669 
670 PROCEDURE Delete_Category
671 ( p_api_version         IN     NUMBER,
672   p_init_msg_list       IN     VARCHAR2    := FND_API.g_false,
673   p_commit              IN     VARCHAR2    := FND_API.g_false,
674   p_validation_level    IN     NUMBER      := FND_API.g_valid_level_full,
675   x_return_status       OUT NOCOPY    VARCHAR2,
676   x_msg_count           OUT NOCOPY    NUMBER,
677   x_msg_data            OUT NOCOPY    VARCHAR2,
678 
679   p_category_id         IN     NUMBER,
680   p_object_version      IN  NUMBER
681 ) IS
682 
683         l_api_name              CONSTANT VARCHAR2(30)  := 'Delete_Category';
684         l_api_version           CONSTANT NUMBER        := 1.0;
688         l_return_status         VARCHAR2(1);  -- Return value from procedures
685         l_full_name   CONSTANT VARCHAR2(60) := G_PACKAGE_NAME ||'.'|| l_api_name;
686 
687         -- Status Local Variables
689         l_return_val            VARCHAR2(1);
690         l_category_id    NUMBER := p_category_id;
691 
692   BEGIN
693 
694         -- Standard Start of API savepoint
695         SAVEPOINT Delete_Category_PVT;
696         IF (AMS_DEBUG_HIGH_ON) THEN
697 
698         AMS_Utility_PVT.debug_message(l_full_name||': start');
699         END IF;
700 
701         -- Standard call to check for call compatibility.
702         IF NOT FND_API.Compatible_API_Call ( l_api_version,
703                                            p_api_version,
704                                            l_api_name,
705                                            G_PACKAGE_NAME)
706         THEN
707             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
708         END IF;
709 
710         -- Initialize message list IF p_init_msg_list is set to TRUE.
711         IF FND_API.to_Boolean( p_init_msg_list )
712         THEN
713             FND_MSG_PUB.initialize;
714         END IF;
715 
716         --  Initialize API return status to success
717         x_return_status := FND_API.G_RET_STS_SUCCESS;
718 
719   ------------------------ delete ------------------------
720    IF (AMS_DEBUG_HIGH_ON) THEN
721 
722    AMS_Utility_PVT.debug_message(l_full_name ||': delete');
723    END IF;
724 
725         -- Perform the database operation
726 
727         -- Check all child tables if data exists (child entities validation)
728 
729         Validate_Cty_Child_Enty
730         ( p_category_id         => l_category_id,
731           x_return_status               => l_return_status
732         );
733 
734         -- If any errors happen abort API.
735         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
736         THEN
737             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
738         ELSIF l_return_status = FND_API.G_RET_STS_ERROR
739         THEN
740             RAISE FND_API.G_EXC_ERROR;
741         END IF;
742 
743         -- seeded category if category_id < 10000
744         -- user cannot modify or delete seeded category
745         IF (l_category_id < 10000 ) THEN
746             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
747                THEN
748                 FND_MESSAGE.set_name('AMS', 'AMS_CAT_CANNOT_MOD_SEED');
749                 FND_MSG_PUB.add;
750             END IF;
751             RAISE FND_API.g_exc_error;
752         END IF;
753 
754        delete from AMS_CATEGORIES_B
755        where  category_id = l_category_id
756         and object_version_number = p_object_version;
757 
758         IF (SQL%NOTFOUND) THEN
759             IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
760                THEN
761                 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
762                 FND_MSG_PUB.add;
763             END IF;
764             RAISE FND_API.g_exc_error;
765         END IF;
766 
767 
768            delete from AMS_CATEGORIES_TL
769            where  category_id = l_category_id
770            AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
771 
772            IF (SQL%NOTFOUND) THEN
773                   IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
774                         THEN
775                          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
776                          FND_MSG_PUB.add;
777                   END IF;
778                   RAISE FND_API.g_exc_error;
779            END IF;
780 
781                 -- Call Private API to cascade delete any children data if necessary
782 
783    -------------------- finish --------------------------
784         -- Standard check of p_commit.
785         IF FND_API.To_Boolean ( p_commit )
786         THEN
787                 COMMIT WORK;
788         END IF;
789 
790         -- Standard call to get message count AND IF count is 1, get message info.
791         FND_MSG_PUB.Count_AND_Get
792         ( p_count       =>      x_msg_count,
793           p_data        =>      x_msg_data,
794                   p_encoded     =>      FND_API.G_FALSE
795         );
796    IF (AMS_DEBUG_HIGH_ON) THEN
797 
798    AMS_Utility_PVT.debug_message(l_full_name ||': end');
799    END IF;
800 
801   EXCEPTION
802 
803         WHEN FND_API.G_EXC_ERROR
804         THEN
805                 ROLLBACK TO Delete_Category_PVT;
806                 x_return_status := FND_API.G_RET_STS_ERROR ;
807 
808                 FND_MSG_PUB.Count_AND_Get
809                 ( p_count           =>      x_msg_count,
810                   p_data            =>      x_msg_data,
811                           p_encoded         =>      FND_API.G_FALSE
812                 );
813 
814 
815         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
816         THEN
817                 ROLLBACK TO Delete_Category_PVT;
818                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
819 
820                 FND_MSG_PUB.Count_AND_Get
821                 ( p_count           =>      x_msg_count,
822                   p_data            =>      x_msg_data,
826         WHEN OTHERS THEN
823                           p_encoded         =>      FND_API.G_FALSE
824                 );
825 
827 
828                 ROLLBACK TO Delete_Category_PVT;
829                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
830 
831                 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
832                 THEN
833                         FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
834                 END IF;
835 
836                 FND_MSG_PUB.Count_AND_Get
837                 ( p_count           =>      x_msg_count,
838                   p_data            =>      x_msg_data,
839                           p_encoded         =>      FND_API.G_FALSE
840                 );
841 
842 END Delete_Category;
843 
844 -- Start of Comments
845 --
846 -- NAME
847 --   Lock_category
848 --
849 -- PURPOSE
850 --   This procedure is to lock a category record that satisfy caller needs
851 --
852 -- NOTES
853 --
854 --
855 -- HISTORY
856 --   01/04/2000        sugupta            created
857 -- End of Comments
858 
859 PROCEDURE Lock_Category
860 ( p_api_version                 IN     NUMBER,
861   p_init_msg_list               IN     VARCHAR2    := FND_API.g_false,
862   p_validation_level            IN     NUMBER      := FND_API.g_valid_level_full,
863   x_return_status               OUT NOCOPY    VARCHAR2,
864   x_msg_count                   OUT NOCOPY    NUMBER,
865   x_msg_data                    OUT NOCOPY    VARCHAR2,
866 
867   p_category_id         IN     NUMBER,
868   p_object_version    IN  NUMBER
869 ) IS
870 
871         l_api_name              CONSTANT VARCHAR2(30)  := 'Lock_Category';
872         l_api_version           CONSTANT NUMBER        := 1.0;
873                 l_full_name   CONSTANT VARCHAR2(60) := G_PACKAGE_NAME ||'.'|| l_api_name;
874 
875         -- Status Local Variables
876         l_return_status         VARCHAR2(1);  -- Return value from procedures
877 
878         CURSOR C_ams_categories_b IS
879         SELECT ARC_CATEGORY_CREATED_FOR,
880                PARENT_CATEGORY_ID
881           FROM AMS_CATEGORIES_B
882          WHERE category_id = p_category_id
883                  and object_version_number = p_object_version
884            FOR UPDATE of category_id NOWAIT;
885         Recinfo C_ams_categories_b%ROWTYPE;
886 
887         CURSOR C_ams_categories_tl IS
888         SELECT CATEGORY_NAME,
889                DESCRIPTION,
890                    decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
891           FROM AMS_CATEGORIES_TL
892          WHERE CATEGORY_ID = p_CATEGORY_ID
893            AND userenv('LANG') in (LANGUAGE, SOURCE_LANG)
894            FOR UPDATE OF CATEGORY_ID NOWAIT;
895          Tlinfo C_ams_categories_tl%ROWTYPE;
896 
897   BEGIN
898      IF (AMS_DEBUG_HIGH_ON) THEN
899 
900      AMS_Utility_PVT.debug_message(l_full_name||': start');
901      END IF;
902         -- Standard call to check for call compatibility.
903         IF NOT FND_API.Compatible_API_Call ( l_api_version,
904                                            p_api_version,
905                                            l_api_name,
906                                            G_PACKAGE_NAME)
907         THEN
908                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
909         END IF;
910 
911         -- Initialize message list if p_init_msg_list is set to TRUE.
912         IF FND_API.to_Boolean( p_init_msg_list ) THEN
913                 FND_MSG_PUB.initialize;
914         END IF;
915         --  Initialize API return status to success
916         x_return_status := FND_API.G_RET_STS_SUCCESS;
917 
918   ------------------------ lock -------------------------
919    IF (AMS_DEBUG_HIGH_ON) THEN
920 
921    AMS_Utility_PVT.debug_message(l_full_name||': lock');
922    END IF;
923 
924         -- Perform the database operation
925         OPEN C_ams_categories_b;
926         FETCH C_ams_categories_b INTO Recinfo;
927         IF (C_ams_categories_b%NOTFOUND) THEN
928         CLOSE C_ams_categories_b;
929                 -- Error, check the msg level and added an error message to the
930                 -- API message list
931         IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
932          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
933          FND_MSG_PUB.add;
934                 END IF;
935 
936                 RAISE FND_API.G_EXC_ERROR;
937         END IF;
938 
939         CLOSE C_ams_categories_b;
940 
941         open C_ams_categories_tl ;
942         close C_ams_categories_tl;
943 
944         -- Standard call to get message count AND IF count is 1, get message info.
945         FND_MSG_PUB.Count_AND_Get
946         ( p_count           =>      x_msg_count,
947           p_data            =>      x_msg_data,
948                         p_encoded           =>      FND_API.G_FALSE
949         );
950    IF (AMS_DEBUG_HIGH_ON) THEN
951 
952    AMS_Utility_PVT.debug_message(l_full_name ||': end');
953    END IF;
954 
955   EXCEPTION
956 
957         WHEN FND_API.G_EXC_ERROR
958         THEN
959                 x_return_status := FND_API.G_RET_STS_ERROR ;
960 
961                 FND_MSG_PUB.Count_AND_Get
962                 ( p_count           =>      x_msg_count,
966 
963                   p_data            =>      x_msg_data,
964                   p_encoded         =>      FND_API.G_FALSE
965                 );
967         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
968         THEN
969                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
970 
971                 FND_MSG_PUB.Count_AND_Get
972                 ( p_count           =>      x_msg_count,
973                   p_data            =>      x_msg_data,
974                   p_encoded         =>      FND_API.G_FALSE
975                 );
976 
977         WHEN AMS_Utility_PVT.RESOURCE_LOCKED
978         THEN
979                 x_return_status := FND_API.G_RET_STS_ERROR ;
980 
981                 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
982                 THEN -- MMSG
983                         FND_MESSAGE.SET_NAME('AMS','AMS_API_RESOURCE_LOCKED');
984                         FND_MSG_PUB.Add;
985                 END IF;
986 
987                 FND_MSG_PUB.Count_AND_Get
988                 ( p_count           =>      x_msg_count,
989                   p_data            =>      x_msg_data,
990                   p_encoded         =>      FND_API.G_FALSE
991                 );
992 
993         WHEN OTHERS THEN
994 
995                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
996 
997                 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
998                 THEN
999                         FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
1000                 END IF;
1001 
1002                 FND_MSG_PUB.Count_AND_Get
1003                 ( p_count           =>      x_msg_count,
1004                   p_data            =>      x_msg_data,
1005                   p_encoded         =>      FND_API.G_FALSE
1006                 );
1007 
1008 END Lock_Category;
1009 
1010 -- Start of Comments
1011 --
1012 -- NAME
1013 --   Validate_Category
1014 --
1015 -- PURPOSE
1016 --   This procedure is to validate a category record that satisfy caller needs
1017 --
1018 -- NOTES
1019 --
1020 --
1021 -- HISTORY
1022 --   01/04/2000        sugupta            created
1023 -- End of Comments
1024 
1025 PROCEDURE Validate_Category
1026 ( p_api_version                 IN     NUMBER,
1027   p_init_msg_list               IN     VARCHAR2    := FND_API.g_false,
1028   p_validation_level            IN     NUMBER      := FND_API.g_valid_level_full,
1029   x_return_status               OUT NOCOPY    VARCHAR2,
1030   x_msg_count                   OUT NOCOPY    NUMBER,
1031   x_msg_data                    OUT NOCOPY    VARCHAR2,
1032 
1033   p_category_rec                IN     category_rec_type
1034 ) IS
1035 
1036         l_api_name              CONSTANT VARCHAR2(30)  := 'Validate_Category';
1037         l_api_version           CONSTANT NUMBER        := 1.0;
1038                 l_full_name   CONSTANT VARCHAR2(60) := G_PACKAGE_NAME ||'.'|| l_api_name;
1039 
1040         -- Status Local Variables
1041         l_return_status         VARCHAR2(1);  -- Return value from procedures
1042         l_category_rec          category_rec_type := p_category_rec;
1043                 l_category_id           AMS_CATEGORIES_VL.CATEGORY_ID%TYPE;
1044 
1045   BEGIN
1046  ----------------------- initialize --------------------
1047    IF (AMS_DEBUG_HIGH_ON) THEN
1048 
1049    AMS_Utility_PVT.debug_message(l_full_name||': start');
1050    END IF;
1051 
1052         -- Standard call to check for call compatibility.
1053         IF NOT FND_API.Compatible_API_Call ( l_api_version,
1054                                            p_api_version,
1055                                            l_api_name,
1056                                            G_PACKAGE_NAME)
1057         THEN
1058                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1059         END IF;
1060 
1061         -- Initialize message list if p_init_msg_list is set to TRUE.
1062         IF FND_API.to_Boolean( p_init_msg_list )
1063                 THEN
1064                 FND_MSG_PUB.initialize;
1065         END IF;
1066 
1067         --  Initialize API return status to success
1068         x_return_status := FND_API.G_RET_STS_SUCCESS;
1069 
1070 -- step 1
1071         -- Validate all required parameters -- combined with step 2
1072         -- Note: We need to pass all columns when you call Update_Category API.
1073         -- This means that we always need to validate required parameters even  in
1074         -- update mode.
1075 
1076 -- step2
1077         -- Validate all non missing attributes (Item level validation)
1078 
1079         IF p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_ITEM
1080         THEN
1081 
1082                 Check_Req_Cty_Items
1083                 ( p_category_rec                => l_category_rec,
1084                   x_return_status               => l_return_status
1085                 );
1086 
1087                 -- If any errors happen abort API.
1088                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1089                 THEN
1090                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1091 
1092                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR
1093                 THEN
1094                         RAISE FND_API.G_EXC_ERROR;
1095                 END IF;
1096 
1097                 Validate_Cty_Items
1101 
1098                 ( p_category_rec                => l_category_rec,
1099                   x_return_status               => l_return_status
1100                 );
1102                 -- If any errors happen abort API.
1103                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1104                 THEN
1105                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1106 
1107                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR
1108                 THEN
1109                         RAISE FND_API.G_EXC_ERROR;
1110                 END IF;
1111 
1112                 Validate_Category_Cross_Record
1113                 ( p_category_rec                => l_category_rec
1114                  ,x_return_status               => l_return_status
1115                 );
1116 
1117                 -- If any errors happen abort API.
1118                 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1119                         RAISE FND_API.G_EXC_ERROR;
1120                 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1121                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1122                 END IF;
1123 
1124                 IF (AMS_DEBUG_HIGH_ON) THEN
1125 
1126 
1127 
1128                 AMS_UTILITY_PVT.debug_message('the return status after Validate_Category_Cross_Rec :'||x_return_status);
1129 
1130                 END IF;
1131         END IF;
1132 
1133         -- Step 3.
1134         -- Perform cross attribute validation and missing attribute checks. Record
1135         -- level validation.
1136         IF p_validation_level >= JTF_PLSQL_API.G_VALID_LEVEL_RECORD
1137         THEN
1138 
1139                 Validate_Cty_Record
1140                 ( p_api_version                 => 1.0,
1141                   p_init_msg_list               => FND_API.G_FALSE,
1142                   x_return_status               => l_return_status,
1143                   x_msg_count                   => x_msg_count,
1144                   x_msg_data                    => x_msg_data,
1145 
1146                   p_category_rec                => l_category_rec
1147                 );
1148 
1149                 -- If any errors happen abort API.
1150                 IF l_return_status = FND_API.G_RET_STS_ERROR
1151                 THEN
1152                         RAISE FND_API.G_EXC_ERROR;
1153 
1154                 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
1155                 THEN
1156                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1157                 END IF;
1158 
1159         -- Step 4.
1160         -- Perform cross record validation. Cross Record level validation.
1161 
1162                 Validate_Category_Cross_Record
1163                 ( p_category_rec                => l_category_rec
1164                  ,x_return_status               => l_return_status
1165                 );
1166 
1167                 -- If any errors happen abort API.
1168                 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1169                         RAISE FND_API.G_EXC_ERROR;
1170                 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1171                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1172                 END IF;
1173 
1174 
1175         -- Step 5.
1176         -- Perform cross entity validation. Cross entity level validation.
1177 
1178                 Validate_Category_Cross_Entity
1179                 ( p_category_rec                => l_category_rec
1180                  ,x_return_status               => l_return_status
1181                 );
1182 
1183                 -- If any errors happen abort API.
1184                 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
1185                         RAISE FND_API.G_EXC_ERROR;
1186                 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1187                         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1188                 END IF;
1189 
1190         --
1191         END IF;
1192         -- Standard call to get message count AND IF count is 1, get message info.
1193         FND_MSG_PUB.Count_AND_Get
1194         ( p_count       =>      x_msg_count,
1195           p_data        =>      x_msg_data,
1196           p_encoded     =>      FND_API.G_FALSE
1197         );
1198 
1199   EXCEPTION
1200 
1201         WHEN FND_API.G_EXC_ERROR
1202         THEN
1203                 x_return_status := FND_API.G_RET_STS_ERROR ;
1204 
1205                 FND_MSG_PUB.Count_AND_Get
1206                 ( p_count       =>      x_msg_count,
1207                   p_data        =>      x_msg_data,
1208                   p_encoded     =>      FND_API.G_FALSE
1209                 );
1210 
1211         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1212         THEN
1213                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1214 
1215                 FND_MSG_PUB.Count_AND_Get
1216                 ( p_count       =>      x_msg_count,
1217                   p_data        =>      x_msg_data,
1218                   p_encoded     =>      FND_API.G_FALSE
1219                 );
1220 
1221         WHEN OTHERS THEN
1222 
1223                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1224 
1225                 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1226                 THEN
1230                 FND_MSG_PUB.Count_AND_Get
1227                         FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
1228                 END IF;
1229 
1231                 ( p_count       =>      x_msg_count,
1232                   p_data        =>      x_msg_data,
1233                           p_encoded     =>      FND_API.G_FALSE
1234                 );
1235 
1236 END Validate_Category;
1237 
1238 -- Start of Comments
1239 --
1240 -- NAME
1241 --   Validate_Cty_Items
1242 --
1243 -- PURPOSE
1244 --   This procedure is to validate category items
1245 --
1246 -- NOTES
1247 --
1248 --
1249 -- HISTORY
1250 --   01/04/2000        sugupta            created
1251 -- End of Comments
1252 
1253 PROCEDURE Validate_Cty_Items
1254 ( p_category_rec                IN     category_rec_type,
1255   x_return_status               OUT NOCOPY    VARCHAR2
1256 ) IS
1257 
1258         l_table_name    VARCHAR2(30);
1259         l_pk_name       VARCHAR2(30);
1260         l_pk_value      VARCHAR2(30);
1261         l_additional_where_clause VARCHAR2(4000) := ' enabled_flag = ''Y''';
1262 
1263 BEGIN
1264         --  Initialize API/Procedure return status to success
1265         x_return_status := FND_API.G_RET_STS_SUCCESS;
1266 
1267         -- Check FK parameter: PARENT_CATEGORY_ID
1268         -- Do not validate FK if NULL
1269 
1270         IF p_category_rec.PARENT_CATEGORY_ID <> FND_API.g_miss_num AND
1271                 p_category_rec.PARENT_CATEGORY_ID is NOT NULL THEN
1272 
1273                         l_table_name := 'AMS_CATEGORIES_B';
1274                         l_pk_name := 'CATEGORY_ID';
1275                         l_pk_value := p_category_rec.PARENT_CATEGORY_ID;
1276 
1277                         IF AMS_Utility_PVT.Check_FK_Exists (
1278                          p_table_name                   => l_table_name
1279                          ,p_pk_name                     => l_pk_name
1280                          ,p_pk_value                    => l_pk_value
1281                          ,p_additional_where_clause     => l_additional_where_clause -- Bug 3847393 in 11.5.10.1R
1282                         ) = FND_API.G_FALSE
1283                         THEN
1284                                 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1285                                 THEN
1286                                         FND_MESSAGE.set_name('AMS', 'AMS_CAT_BAD_PARENT_CAT_ID');
1287                                         FND_MSG_PUB.add;
1288                                 END IF;
1289                                 x_return_status := FND_API.G_RET_STS_ERROR;
1290                                 -- If any errors happen abort API/Procedure.
1291                                 RETURN;
1292 
1293                         END IF;  -- check_fk_exists
1294         END IF;
1295         IF (AMS_DEBUG_HIGH_ON) THEN
1296 
1297         AMS_UTILITY_PVT.debug_message('the return status after primary check :'||x_return_status);
1298         END IF;
1299 
1300         IF p_category_rec.enabled_flag <> FND_API.g_miss_char
1301       AND p_category_rec.enabled_flag IS NOT NULL
1302    THEN
1303       IF AMS_Utility_PVT.is_Y_or_N(p_category_rec.enabled_flag) = FND_API.g_false
1304       THEN
1305          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1306          THEN
1307             FND_MESSAGE.set_name('AMS', 'AMS_CAT_BAD_ENABLED_FLAG');
1308             FND_MSG_PUB.add;
1309          END IF;
1310          x_return_status := FND_API.g_ret_sts_error;
1311          RETURN;
1312       END IF;
1313    END IF;
1314    IF (AMS_DEBUG_HIGH_ON) THEN
1315 
1316    AMS_UTILITY_PVT.debug_message('the return status after enabled flag :'||x_return_status);
1317    END IF;
1318 
1319 END Validate_Cty_Items;
1320 
1321 -- Start of Comments
1322 --
1323 -- NAME
1324 --   Validate_Cty_Record
1325 --
1326 -- PURPOSE
1327 --   This procedure is to validate category record
1328 --
1329 -- NOTES
1330 --
1331 --
1332 -- HISTORY
1333 --   01/04/2000        sugupta            created
1334 -- End of Comments
1335 
1336 PROCEDURE Validate_Cty_Record
1337 ( p_api_version                 IN     NUMBER,
1338   p_init_msg_list               IN     VARCHAR2    := FND_API.g_false,
1339   x_return_status               OUT NOCOPY    VARCHAR2,
1340   x_msg_count                   OUT NOCOPY    NUMBER,
1341   x_msg_data                    OUT NOCOPY    VARCHAR2,
1342 
1343   p_category_rec                IN     category_rec_type
1344 ) IS
1345 
1346         l_api_name              CONSTANT VARCHAR2(30)  := 'Validate_Cty_Record';
1347         l_api_version           CONSTANT NUMBER        := 1.0;
1348                 l_full_name   CONSTANT VARCHAR2(60) := G_PACKAGE_NAME ||'.'|| l_api_name;
1349 
1350         -- Status Local Variables
1351         l_return_status         VARCHAR2(1);  -- Return value from procedures
1352         --l_category_rec                category_rec_type := p_category_rec;
1353 
1354         cursor  get_parent_det (l_parent_cat_id IN NUMBER ) is
1355         select  ARC_CATEGORY_CREATED_FOR
1356          from   AMS_CATEGORIES_B
1357         where   category_id = l_parent_cat_id;
1358 
1359         l_parent_cr_for  varchar2(30);
1360 
1361 	CURSOR get_enabled_child (l_parent_cat_id IN NUMBER)
1362 	IS
1363 	SELECT COUNT(*)
1364 	FROM ams_categories_b
1368 
1365 	WHERE parent_category_id = l_parent_cat_id
1366 	AND enabled_flag = 'Y';
1367 
1369 	l_count NUMBER := 0;
1370 
1371   BEGIN
1372 
1373         -- Standard call to check for call compatibility.
1374         IF NOT FND_API.Compatible_API_Call ( l_api_version,
1375                                            p_api_version,
1376                                            l_api_name,
1377                                            G_PACKAGE_NAME)
1378         THEN
1379                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1380         END IF;
1381 
1382         -- Initialize message list if p_init_msg_list is set to TRUE.
1383         IF FND_API.to_Boolean( p_init_msg_list )
1384         THEN
1385                 FND_MSG_PUB.initialize;
1386         END IF;
1387         --  Initialize API return status to success
1388         x_return_status := FND_API.G_RET_STS_SUCCESS;
1389 
1390 
1391         /* Cannot disable Category if it is being used anywhere */
1392         /*
1393         -- Its commented out because this is not the intended functionality.
1394 
1395          IF ( p_category_rec.PARENT_CATEGORY_ID <> FND_API.g_miss_num AND
1396               p_category_rec.PARENT_CATEGORY_ID is NOT NULL  AND
1397               p_category_rec.ENABLED_FLAG = 'N' ) THEN
1398 
1399                 IF
1400                 (AMS_Utility_PVT.Check_FK_Exists
1401                 ( p_table_name          => 'AMS_DELIVERABLES_ALL_B'
1402                   ,p_pk_name            => 'CATEGORY_TYPE_ID'
1403                   ,p_pk_value           => p_category_rec.PARENT_CATEGORY_ID
1404                 ) = FND_API.G_TRUE )
1405 
1406                 OR
1407 
1408                 (AMS_Utility_PVT.Check_FK_Exists
1409                 ( p_table_name          => 'AMS_ACT_CATEGORIES'
1410                   ,p_pk_name            => 'CATEGORY_ID'
1411                   ,p_pk_value           => p_category_rec.PARENT_CATEGORY_ID
1412                 ) = FND_API.G_TRUE )
1413 
1414                 OR
1415 
1416                 (AMS_Utility_PVT.Check_FK_Exists
1417                 ( p_table_name          => 'AMS_METRICS_ALL_B'
1418                   ,p_pk_name            => 'METRIC_CATEGORY'
1419                   ,p_pk_value           => p_category_rec.PARENT_CATEGORY_ID
1420                 ) = FND_API.G_TRUE )
1421 
1422                 OR
1423 
1424                 (AMS_Utility_PVT.Check_FK_Exists
1425                 ( p_table_name          => 'OZF_FUNDS_ALL_B'
1426                   ,p_pk_name            => 'CATEGORY_ID'
1427                   ,p_pk_value           => p_category_rec.PARENT_CATEGORY_ID
1428                 ) = FND_API.G_TRUE )
1429 
1430 
1431                 THEN
1432                         -- FK checking
1433                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1434                         THEN -- MMSG
1435                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DISABLE');
1436                         FND_MSG_PUB.Add;
1437                         END IF;
1438                              x_return_status := FND_API.g_ret_sts_error;
1439                          RETURN;
1440                 END IF;
1441 
1442 
1443         END IF;
1444         */
1445         /* Cannot disable a category if it has the enabled sub -category */
1446 	IF ( p_category_rec.CATEGORY_ID <> FND_API.g_miss_num
1447 	AND  p_category_rec.CATEGORY_ID is NOT NULL
1448 	AND  p_category_rec.ENABLED_FLAG = 'N' )
1449 	THEN
1450 
1451 
1452            OPEN get_enabled_child(p_category_rec.CATEGORY_ID);
1453 	   FETCH get_enabled_child INTO l_count;
1454 	   CLOSE get_enabled_child;
1455 
1456            IF l_count > 0 THEN
1457 
1458               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1459 	      THEN -- MMSG
1460 	         FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DISABLE_PARENT');
1461 		 FND_MSG_PUB.Add;
1462 	      END IF;
1463 
1464 	      x_return_status := FND_API.g_ret_sts_error;
1465 	      RETURN;
1466 	   END IF;
1467 	END IF;
1468 
1469         /* Parent Category created for has to be the same as category created for */
1470         IF  (p_category_rec.PARENT_CATEGORY_ID IS NOT NULL) THEN
1471            open get_parent_det(p_category_rec.PARENT_CATEGORY_ID);
1472            fetch  get_parent_det into l_parent_cr_for;
1473 
1474            IF (l_parent_cr_for <> p_category_rec.ARC_CATEGORY_CREATED_FOR)
1475            THEN
1476               FND_MESSAGE.Set_Name('AMS', 'AMS_INV_PARENT_CR_FOR');
1477               FND_MSG_PUB.Add;
1478 
1479                x_return_status := FND_API.g_ret_sts_error;
1480                RETURN;
1481            END IF;
1482 
1483            /*  bug fix for #1880798 */
1484            -- x_return_status := FND_API.get_ret_sts_error;
1485            -- RETURN;
1486 
1487          END IF;
1488 
1489         -- Standard call to get message count AND IF count is 1, get message info.
1490         FND_MSG_PUB.Count_AND_Get
1491         ( p_count       =>      x_msg_count,
1492           p_data        =>      x_msg_data,
1493           p_encoded     =>      FND_API.G_FALSE
1494         );
1495 
1496   EXCEPTION
1497 
1498         WHEN FND_API.G_EXC_ERROR
1499         THEN
1500                 x_return_status := FND_API.G_RET_STS_ERROR ;
1501 
1502                 FND_MSG_PUB.Count_AND_Get
1506                 );
1503                 ( p_count           =>      x_msg_count,
1504                   p_data            =>      x_msg_data,
1505                   p_encoded         =>      FND_API.G_FALSE
1507 
1508         WHEN FND_API.G_EXC_UNEXPECTED_ERROR
1509         THEN
1510                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1511                 FND_MSG_PUB.Count_AND_Get
1512                 ( p_count           =>      x_msg_count,
1513                   p_data            =>      x_msg_data,
1514                   p_encoded         =>      FND_API.G_FALSE
1515                 );
1516 
1517         WHEN OTHERS THEN
1518 
1519                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1520 
1521                 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
1522                 THEN
1523                         FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
1524                 END IF;
1525 
1526                 FND_MSG_PUB.Count_AND_Get
1527                 ( p_count       =>      x_msg_count,
1528                   p_data        =>      x_msg_data,
1529                   p_encoded     =>      FND_API.G_FALSE
1530                 );
1531 
1532 END Validate_Cty_Record;
1533 
1534 -- Start of Comments
1535 --
1536 -- NAME
1537 --   Validate_Category_Cross_Record
1538 --
1539 -- PURPOSE
1540 --   This procedure is to validate cross record AMS_Category_VL items
1541 --
1542 -- NOTES
1543 --
1544 --
1545 -- HISTORY
1546 --   01/04/2000        sugupta            created
1547 -- End of Comments
1548 
1549 PROCEDURE Validate_Category_Cross_Record
1550 ( p_category_rec        IN     category_rec_type,
1551   x_return_status       OUT NOCOPY    VARCHAR2
1552 ) IS
1553 
1554         -- Status Local Variables
1555         l_return_status         VARCHAR2(1);  -- Return value from procedures
1556         l_item_name             VARCHAR2(30);  -- Return value from procedures
1557         l_dummy NUMBER;
1558         cursor c_ctg_name_crt(ctg_name_in IN VARCHAR2, ctg_id_in IN NUMBER,ctg_arc_in IN VARCHAR2) IS
1559         SELECT 1 FROM DUAL WHERE EXISTS (select 1 from AMS_CATEGORIES_TL t,
1560                                                                   AMS_CATEGORIES_B b
1561                            where t.category_name = ctg_name_in
1562                            and b.arc_category_created_for = ctg_arc_in
1563                            and language = userenv('LANG')
1564                            and t.category_id = b.category_id
1565                            --and t.category_id = ctg_id_in
1566                            --and b.category_id = ctg_id_in
1567                            );
1568         cursor c_ctg_name_updt(ctg_name_in IN VARCHAR2, ctg_id_in IN NUMBER,ctg_arc_in IN VARCHAR2) IS
1569         SELECT 1 FROM DUAL WHERE EXISTS (select 1 from AMS_CATEGORIES_TL t,
1570                                                                   AMS_CATEGORIES_B b
1571                            where t.category_name = ctg_name_in
1572                            and b.arc_category_created_for = ctg_arc_in
1573                            and language = userenv('LANG')
1574                            and t.category_id = b.category_id
1575                            and t.category_id <> ctg_id_in
1576                            and b.category_id <> ctg_id_in);
1577 
1578 
1579 BEGIN
1580         --  Initialize API/Procedure return status to success
1581         x_return_status := FND_API.G_RET_STS_SUCCESS;
1582         l_item_name := 'CATEGORY_NAME, LANGUAGE';
1583 
1584 
1585         -- Check unique keys: CATEGORY_NAME, LANGUAGE
1586 
1587         -- Insert mode
1588         IF p_category_rec.category_id IS NULL
1589         THEN
1590 
1591                 /* bug 1490374
1592                 if AMS_Utility_PVT.Check_Uniqueness
1593                 (p_table_name => 'AMS_CATEGORIES_TL',
1594                  p_where_clause => 'category_name = '
1595                                 || ''''
1596                                 || p_category_rec.category_name
1597                                 || ''''
1598                                 || ' and language = userenv('
1599                                 || ''''
1600                                 || 'LANG'
1601                                 || ''''
1602                                 || ')'
1603                 ) = FND_API.G_FALSE then
1604             */
1605             open c_ctg_name_crt(p_category_rec.category_name, p_category_rec.category_id, p_category_rec.arc_category_created_for);
1606                   fetch c_ctg_name_crt into l_dummy;
1607                   close c_ctg_name_crt;
1608                   IF l_dummy = 1 THEN
1609 
1610                         -- invalid item
1611                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1612                         THEN -- MMSG
1613                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_DUPLICATE_NAME');
1614                                 FND_MSG_PUB.Add;
1615                         END IF;
1616                         x_return_status := FND_API.G_RET_STS_ERROR;
1617                         -- If any errors happen abort API/Procedure.
1618                         return;
1619                 END IF;
1620 
1621         -- Update mode
1622         ELSE
1623            /* bug # 1490374
1624                 if AMS_Utility_PVT.Check_Uniqueness
1628                                 || p_category_rec.category_name
1625                 (p_table_name => 'AMS_CATEGORIES_TL',
1626                  p_where_clause => 'category_name = '
1627                                 || ''''
1629                                 || ''''
1630                                 || ' and language = userenv('
1631                                 || ''''
1632                                 || 'LANG'
1633                                 || ''''
1634                                 || ')'
1635                                 || ' and category_id <>'
1636                                 || p_category_rec.category_id
1637                 ) = FND_API.G_FALSE then
1638                    */
1639             open c_ctg_name_updt(p_category_rec.category_name, p_category_rec.category_id,p_category_rec.arc_category_created_for);
1640                   fetch c_ctg_name_updt into l_dummy;
1641                   close c_ctg_name_updt;
1642                   IF l_dummy = 1 THEN
1643 
1644                         -- invalid item
1645                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1646                         THEN -- MMSG
1647                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_DUPLICATE_NAME');
1648                                 FND_MSG_PUB.Add;
1649                         END IF;
1650                         x_return_status := FND_API.G_RET_STS_ERROR;
1651                         -- If any errors happen abort API/Procedure.
1652                         return;
1653                 END IF;
1654 
1655         END IF;
1656 
1657 
1658 END Validate_Category_Cross_Record;
1659 
1660 -- Start of Comments
1661 --
1662 -- NAME
1663 --   Validate_Category_Cross_Entity
1664 --
1665 -- PURPOSE
1666 --   This procedure is to validate cross entity AMS_CATEGORIES_VL items
1667 --
1668 -- NOTES
1669 --CATEGORY_ID
1670 --
1671 -- HISTORY
1672 --   01/04/2000        cklee            created
1673 -- End of Comments
1674 
1675 PROCEDURE Validate_Category_Cross_Entity
1676 ( p_category_rec        IN      category_rec_type,
1677   x_return_status       OUT NOCOPY     VARCHAR2
1678 ) IS
1679 
1680 BEGIN
1681         --  Initialize API/Procedure return status to success
1682         x_return_status := FND_API.G_RET_STS_SUCCESS;
1683 
1684 END Validate_Category_Cross_Entity;
1685 
1686 
1687 -- Start of Comments
1688 --
1689 -- NAME
1690 --   Validate_Cty_Child_Enty
1691 --
1692 -- PURPOSE
1693 --   This procedure is to check if category child table's data exists
1694 --
1695 -- NOTES
1696 --   This procedure is an example for referential integrity check
1697 --
1698 --
1699 -- HISTORY
1700 --   01/04/2000        sugupta            created
1701 -- End of Comments
1702 
1703 PROCEDURE Validate_Cty_Child_Enty
1704 ( p_category_id         IN     NUMBER,
1705   x_return_status               OUT NOCOPY    VARCHAR2
1706 ) IS
1707 
1708         l_category_id   NUMBER := p_category_id;
1709 
1710         l_message_name  VARCHAR2(255);
1711         l_pk_value      VARCHAR2(30);
1712 
1713   BEGIN
1714 
1715         --  Initialize API/Procedure return status to success
1716         x_return_status := FND_API.G_RET_STS_SUCCESS;
1717         l_pk_value := l_category_id;
1718 
1719                 IF AMS_Utility_PVT.Check_FK_Exists
1720                 ( p_table_name          => 'AMS_CATEGORIES_B'
1721                   ,p_pk_name            => 'PARENT_CATEGORY_ID'
1722                   ,p_pk_value           => l_pk_value
1723                 ) = FND_API.G_TRUE
1724                 THEN
1725                         -- FK checking
1726                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1727                         THEN -- MMSG
1728                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_PARENT');
1729                         FND_MSG_PUB.Add;
1730                         END IF;
1731                         x_return_status := FND_API.g_ret_sts_error;
1732                      RETURN;
1733                 END IF;
1734 
1735                 IF AMS_Utility_PVT.Check_FK_Exists
1736                 ( p_table_name          => 'AMS_ACT_CATEGORIES'
1737                   ,p_pk_name            => 'CATEGORY_ID'
1738                   ,p_pk_value           => l_pk_value
1739                 ) = FND_API.G_TRUE
1740                 THEN
1741                         -- FK checking
1742                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1743                         THEN -- MMSG
1744                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_ACT');
1745                         FND_MSG_PUB.Add;
1746                         END IF;
1747                         x_return_status := FND_API.g_ret_sts_error;
1748                          RETURN;
1749                 END IF;
1750 
1751 
1752                 IF AMS_Utility_PVT.Check_FK_Exists
1753                 ( p_table_name          => 'AMS_METRICS_ALL_B'
1754                   ,p_pk_name            => 'METRIC_CATEGORY'
1755                   ,p_pk_value           => l_pk_value
1756                 ) = FND_API.G_TRUE
1757                 THEN
1758                         -- FK checking
1759                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1763                         END IF;
1760                         THEN -- MMSG
1761                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_METRICS');
1762                         FND_MSG_PUB.Add;
1764                         x_return_status := FND_API.g_ret_sts_error;
1765                          RETURN;
1766                 END IF;
1767 
1768                 IF AMS_Utility_PVT.Check_FK_Exists
1769                 ( p_table_name          => 'AMS_METRICS_ALL_B'
1770                   ,p_pk_name            => 'METRIC_SUB_CATEGORY'
1771                   ,p_pk_value           => l_pk_value
1772                 ) = FND_API.G_TRUE
1773                 THEN
1774                         -- FK checking
1775                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1776                         THEN -- MMSG
1777                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_METRICS');
1778                         FND_MSG_PUB.Add;
1779                         END IF;
1780                         x_return_status := FND_API.g_ret_sts_error;
1781                          RETURN;
1782                 END IF;
1783                 /********
1784                    --commented by musman for bug fix # 1966294
1785 		   -- this AMS_DELIV_OFFERINGS_B table doesn't exists.
1786 
1787                 IF AMS_Utility_PVT.Check_FK_Exists
1788                 ( p_table_name          => 'AMS_DELIV_OFFERINGS_B'
1789                   ,p_pk_name            => 'CATEGORY_TYPE_ID'
1790                   ,p_pk_value           => l_pk_value
1791                 ) = FND_API.G_TRUE
1792                 THEN
1793                         -- FK checking
1794                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1795                         THEN -- MMSG
1796                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_DELV');
1797                         FND_MSG_PUB.Add;
1798                         END IF;
1799                         x_return_status := FND_API.g_ret_sts_error;
1800                          RETURN;
1801                 END IF;
1802                 *********************************/
1803                 /*  added by abhola */
1804                 /* added for DELV and FUNDs */
1805 
1806 
1807                 IF (AMS_DEBUG_HIGH_ON) THEN
1808 
1809 
1810 
1811 
1812 
1813                 AMS_UTILITY_PVT.debug_message(' checking the AMS_DELIVERABLES_ALL_B for cat ');
1814 
1815 
1816                 END IF;
1817 
1818                 IF AMS_Utility_PVT.Check_FK_Exists
1819                 ( p_table_name          => 'AMS_DELIVERABLES_ALL_B'
1820                   ,p_pk_name            => 'CATEGORY_TYPE_ID'
1821                   ,p_pk_value           => l_pk_value
1822                 ) = FND_API.G_TRUE
1823                 THEN
1824                         -- FK checking
1825                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1826                         THEN -- MMSG
1827                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_DELV');
1828                         FND_MSG_PUB.Add;
1829                         END IF;
1830                              x_return_status := FND_API.g_ret_sts_error;
1831                          RETURN;
1832                 END IF;
1833 
1834                 /* added by musman fix for 1794454 */
1835                 IF (AMS_DEBUG_HIGH_ON) THEN
1836 
1837                 AMS_UTILITY_PVT.debug_message(' checking the AMS_DELIVERABLES_ALL_B for sub cat ');
1838                 END IF;
1839                 IF AMS_Utility_PVT.Check_FK_Exists
1840                 ( p_table_name          => 'AMS_DELIVERABLES_ALL_B'
1841                   ,p_pk_name            => 'CATEGORY_SUB_TYPE_ID'
1842                   ,p_pk_value           => l_pk_value
1843                 ) = FND_API.G_TRUE
1844                 THEN
1845                         -- FK checking
1846                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1847                         THEN -- MMSG
1848                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_DELV');
1849                         FND_MSG_PUB.Add;
1850                         END IF;
1851                              x_return_status := FND_API.g_ret_sts_error;
1852                          RETURN;
1853                 END IF;
1854 
1855 
1856                 IF (AMS_DEBUG_HIGH_ON) THEN
1857 
1858 
1859 
1860 
1861 
1862                 AMS_UTILITY_PVT.debug_message(' checking the ozf_funds_all_b for cat ');
1863 
1864 
1865                 END IF;
1866                 IF (AMS_DEBUG_HIGH_ON) THEN
1867 
1868                 AMS_UTILITY_PVT.debug_message(' the val of AMS_Utility_PVT.Check_FK_Exists : '||AMS_Utility_PVT.Check_FK_Exists
1869                 ( p_table_name          => 'OZF_FUNDS_ALL_B'
1870                   ,p_pk_name            => 'CATEGORY_ID'
1871                   ,p_pk_value           => l_pk_value
1872                 ));
1873                 END IF;
1874                 IF AMS_Utility_PVT.Check_FK_Exists
1875                 ( p_table_name          => 'OZF_FUNDS_ALL_B'
1876                   ,p_pk_name            => 'CATEGORY_ID'
1877                   ,p_pk_value           => l_pk_value
1878                 ) = FND_API.G_TRUE
1879                 THEN
1880                         -- FK checking
1884                         FND_MSG_PUB.Add;
1881                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1882                         THEN -- MMSG
1883                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_ACT');
1885                         END IF;
1886                              x_return_status := FND_API.g_ret_sts_error;
1887                          RETURN;
1888                 END IF;
1889                 /******** end addition by abhola ***************/
1890 
1891                 /****** commented by ABHOLA
1892 
1893                 IF AMS_Utility_PVT.Check_FK_Exists
1894                 ( p_table_name          => 'AMS_DELIV_OFFERINGS_B'
1895                   ,p_pk_name            => 'CATEGORY_SUB_TYPE_ID'
1896                   ,p_pk_value           => l_pk_value
1897                 ) = FND_API.G_TRUE
1898                 THEN
1899                         -- FK checking
1900                         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1901                         THEN -- MMSG
1902                                 FND_MESSAGE.Set_Name('AMS', 'AMS_CAT_CANT_DEL_DELV');
1903                         FND_MSG_PUB.Add;
1904                         END IF;
1905                         x_return_status := FND_API.g_ret_sts_error;
1906                          RETURN;
1907                 END IF;
1908                ***************  end by ABHOLA ****************/
1909 /*
1910   EXCEPTION
1911         WHEN others THEN
1912                 null;
1913 */
1914 
1915 END Validate_Cty_Child_Enty;
1916 
1917 
1918 -- Start of Comments
1919 --
1920 -- NAME
1921 --   Check_Req_Cty_Items
1922 --
1923 -- PURPOSE
1924 --   This procedure is to check required parameters that satisfy caller needs
1925 --
1926 -- NOTES
1927 --
1928 --
1929 -- HISTORY
1930 --   01/04/2000        sugupta            created
1931 -- End of Comments
1932 
1933 PROCEDURE Check_Req_Cty_Items
1934 ( p_category_rec                IN     category_rec_type,
1935   x_return_status               OUT NOCOPY    VARCHAR2
1936 ) IS
1937 
1938 BEGIN
1939 
1940         --  Initialize API/Procedure return status to success
1941         x_return_status := FND_API.G_RET_STS_SUCCESS;
1942 
1943         -- Check required parameters
1944         --
1945         -- CATEGORY_NAME
1946 
1947         IF (p_category_rec.CATEGORY_NAME = FND_API.G_MISS_CHAR OR
1948             p_category_rec.CATEGORY_NAME IS NULL)
1949         THEN
1950 
1951          IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1952       THEN
1953          FND_MESSAGE.set_name('AMS', 'AMS_CAT_NO_CAT_NAME');
1954          FND_MSG_PUB.add;
1955       END IF;
1956       x_return_status := FND_API.g_ret_sts_error;
1957       RETURN;
1958         END IF;
1959 
1960   EXCEPTION
1961         WHEN OTHERS THEN
1962                 NULL;
1963 
1964 END Check_Req_Cty_Items;
1965 
1966 PROCEDURE complete_category_rec(
1967    p_category_rec       IN  category_rec_type,
1968    x_complete_rec  OUT NOCOPY category_rec_type
1969 ) IS
1970 
1971    CURSOR c_cat IS
1972    SELECT *
1973      FROM ams_categories_vl
1974     WHERE category_id = p_category_rec.category_id;
1975 
1976    l_category_rec  c_cat%ROWTYPE;
1977 
1978 BEGIN
1979    x_complete_rec := p_category_rec;
1980 
1981    OPEN c_cat;
1982    FETCH c_cat INTO l_category_rec;
1983    IF c_cat%NOTFOUND THEN
1984       CLOSE c_cat;
1985       IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1986          FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1987          FND_MSG_PUB.add;
1988       END IF;
1989       RAISE FND_API.g_exc_error;
1990    END IF;
1991    CLOSE c_cat;
1992 
1993    IF p_category_rec.ARC_CATEGORY_CREATED_FOR = FND_API.g_miss_char THEN
1994       x_complete_rec.ARC_CATEGORY_CREATED_FOR := l_category_rec.ARC_CATEGORY_CREATED_FOR;
1995    END IF;
1996    IF p_category_rec.ENABLED_FLAG = FND_API.g_miss_char THEN
1997       x_complete_rec.ENABLED_FLAG := l_category_rec.ENABLED_FLAG;
1998    END IF;
1999 
2000    IF p_category_rec.PARENT_CATEGORY_ID = FND_API.g_miss_num THEN
2001       x_complete_rec.PARENT_CATEGORY_ID := l_category_rec.PARENT_CATEGORY_ID;
2002    END IF;
2003 
2004    IF p_category_rec.CATEGORY_NAME = FND_API.g_miss_char THEN
2005       x_complete_rec.CATEGORY_NAME := l_category_rec.CATEGORY_NAME;
2006    END IF;
2007 
2008    IF p_category_rec.DESCRIPTION = FND_API.g_miss_char THEN
2009       x_complete_rec.DESCRIPTION := l_category_rec.DESCRIPTION;
2010    END IF;
2011 
2012    IF p_category_rec.ACCRUED_LIABILITY_ACCOUNT = FND_API.g_miss_num THEN
2013       x_complete_rec.ACCRUED_LIABILITY_ACCOUNT := l_category_rec.ACCRUED_LIABILITY_ACCOUNT;
2014    END IF;
2015 
2016    IF p_category_rec.DED_ADJUSTMENT_ACCOUNT = FND_API.g_miss_num THEN
2017       x_complete_rec.DED_ADJUSTMENT_ACCOUNT := l_category_rec.DED_ADJUSTMENT_ACCOUNT;
2018    END IF;
2019 
2020 END complete_category_rec;
2021 
2022 /*********************** server side TEST CASE *****************************************/
2023 
2024 -- Start of Comments
2025 --
2026 -- NAME
2027 --   Unit_Test_Insert
2028 --   Unit_Test_Delete
2029 --   Unit_Test_Update
2030 --   Unit_Test_Lock
2031 --
2032 -- PURPOSE
2036 --
2033 --   These procedures are to test each procedure that satisfy caller needs
2034 --
2035 -- NOTES
2037 --
2038 -- HISTORY
2039 --   01/04/2000        sugupta            created
2040 -- End of Comments
2041 
2042 --********************************************************
2043 /* 0614
2044 PROCEDURE Unit_Test_Insert
2045 IS
2046 
2047         -- local variables
2048         l_act_category_rec              category_rec_type;
2049         l_return_status                 VARCHAR2(1);
2050         l_msg_count                     NUMBER;
2051         l_msg_data                      VARCHAR2(200);
2052         l_category_id                   AMS_CATEGORIES_VL.CATEGORY_ID%TYPE;
2053 
2054         l_category_req_item_rec         category_rec_type;
2055         l_Category_validate_item_rec    category_rec_type;
2056         l_Category_default_item_rec     category_rec_type;
2057         l_Category_validate_row_rec     category_rec_type;
2058 
2059   BEGIN
2060 
2061 -- turned on debug mode
2062 IF AMS_Category_PVT.g_debug = TRUE THEN
2063 
2064         l_category_rec.CATEGORY_ID := 1234;
2065         l_category_rec.ARC_CATEGORY_CREATED_FOR := 'hung';
2066         l_category_rec.CATEGORY_NAME := 'sugupta_category';
2067 
2068 
2069         AMS_Category_PVT.Create_Category (
2070          p_api_version                  => 1.0 -- p_api_version
2071         ,p_init_msg_list                => FND_API.G_FALSE
2072         ,p_commit                       => FND_API.G_FALSE
2073         ,p_validation_level             => FND_API.G_VALID_LEVEL_FULL
2074         ,x_return_status                => l_return_status
2075         ,x_msg_count                    => l_msg_count
2076         ,x_msg_data                     => l_msg_data
2077 
2078         ,p_PK                           => FND_API.G_TRUE
2079         ,p_default                      => FND_API.G_TRUE
2080         ,p_Category_req_item_rec        => l_Category_req_item_rec
2081         ,p_Category_validate_item_rec   => l_Category_validate_item_rec
2082         ,p_Category_default_item_rec    => l_Category_default_item_rec
2083         ,p_Category_validate_row_rec    => l_Category_validate_row_rec
2084         ,p_category_rec                 => l_category_rec
2085         ,x_category_id                  => l_category_id
2086         );
2087 
2088         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2089         ELSE
2090                 commit work;
2091         END IF;
2092 
2093         NULL;
2094 
2095 ELSE
2096 END IF;
2097 
2098 
2099 END Unit_Test_Insert;
2100 
2101 --********************************************************
2102 
2103 PROCEDURE Unit_Test_Delete
2104 IS
2105 
2106         -- local variables
2107         l_category_rec          category_rec_type;
2108         l_return_status         VARCHAR2(1);
2109         l_msg_count             NUMBER;
2110         l_msg_data              VARCHAR2(200);
2111         l_category_id           AMS_CATEGORIES_VL.CATEGORY_ID%TYPE;
2112 
2113         l_Category_req_item_rec         category_rec_type;
2114         l_Category_validate_item_rec    category_rec_type;
2115         l_Category_default_item_rec     category_rec_type;
2116         l_Category_validate_row_rec     category_rec_type;
2117 
2118 BEGIN
2119 
2120 -- turned on debug mode
2121 IF AMS_Category_PVT.g_debug = TRUE
2122 THEN
2123 
2124         l_category_rec.category_id := 1234;
2125 
2126 
2127         AMS_Category_PVT.Delete_Category (
2128          p_api_version          => 1.0 -- p_api_version
2129         ,p_init_msg_list        => FND_API.G_FALSE
2130         ,p_commit               => FND_API.G_FALSE
2131         ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
2132         ,p_category_rec         => l_category_rec
2133 
2134         ,x_return_status        => l_return_status
2135         ,x_msg_count            => l_msg_count
2136         ,x_msg_data             => l_msg_data
2137         );
2138 
2139         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2140         ELSE
2141                 commit work;
2142         END IF;
2143 
2144         NULL;
2145 
2146 ELSE
2147 END IF;
2148 
2149 
2150 END Unit_Test_Delete;
2151 
2152 
2153 --********************************************************
2154 
2155 PROCEDURE Unit_Test_Update
2156 IS
2157 
2158         -- local variables
2159         l_category_rec          category_rec_type;
2160         l_return_status         VARCHAR2(1);
2161         l_msg_count             NUMBER;
2162         l_msg_data              VARCHAR2(200);
2163         l_category_id           AMS_CATEGORIES_VL.CATEGORY_ID%TYPE;
2164 
2165         l_Category_req_item_rec         category_rec_type;
2166         l_Category_validate_item_rec    category_rec_type;
2167         l_Category_default_item_rec     category_rec_type;
2168         l_Category_validate_row_rec     category_rec_type;
2169 
2170         cursor C(my_category_id NUMBER) is
2171         select *
2172           from AMS_CATEGORIES_VL
2173          WHERE CATEGORY_ID = my_category_id;
2174   BEGIN
2175 
2176 -- turned on debug mode
2177 IF AMS_Category_PVT.g_debug = TRUE
2178 THEN
2179 
2180         l_category_id := 1234;
2184         l_category_rec.NOTES := 'NOTES UPDATED1';
2181         OPEN C(l_category_id);
2182         FETCH C INTO l_category_rec;
2183 
2185 
2186 
2187         AMS_Category_PVT.Update_Category (
2188          p_api_version          => 1.0 -- p_api_version
2189         ,p_init_msg_list        => FND_API.G_FALSE
2190         ,p_commit               => FND_API.G_FALSE
2191         ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
2192         ,p_category_rec         => l_category_rec
2193 
2194         ,x_return_status        => l_return_status
2195         ,x_msg_count            => l_msg_count
2196         ,x_msg_data             => l_msg_data
2197         );
2198 
2199         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
2200         THEN
2201         ELSE
2202                 commit work;
2203         END IF;
2204 
2205         NULL;
2206 
2207 ELSE
2208 END IF;
2209 
2210 
2211 END Unit_Test_Update;
2212 
2213 
2214 --********************************************************
2215 
2216 
2217 PROCEDURE Unit_Test_Lock
2218 IS
2219 
2220         -- local variables
2221         l_category_rec          category_rec_type;
2222         l_return_status         VARCHAR2(1);
2223         l_msg_count             NUMBER;
2224         l_msg_data              VARCHAR2(200);
2225         l_category_id           AMS_CATEGORIES_VL.CATEGORY_ID%TYPE;
2226 
2227         l_Category_req_item_rec         category_rec_type;
2228         l_Category_validate_item_rec    category_rec_type;
2229         l_Category_default_item_rec     category_rec_type;
2230         l_Category_validate_row_rec     category_rec_type;
2231 
2232 
2233         cursor C(my_category_id NUMBER) is
2234          select * from AMS_CATEGORIES_B WHERE CATEGORY_ID = my_category_id;
2235   BEGIN
2236 
2237 -- turned on debug mode
2238 IF AMS_Category_PVT.g_debug = TRUE
2239 THEN
2240 
2241         l_category_rec.category_id := 1234;
2242         l_category_rec.NOTES := 'server side test';
2243 
2244 
2245         AMS_Category_PVT.Lock_Category (
2246          p_api_version          => 1.0 -- p_api_version
2247         ,p_init_msg_list        => FND_API.G_FALSE
2248         ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
2249         ,p_category_rec         => l_category_rec
2250 
2251         ,x_return_status        => l_return_status
2252         ,x_msg_count            => l_msg_count
2253         ,x_msg_data             => l_msg_data
2254         );
2255 
2256         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2257                 --RAISE FND_API.G_EXC_ERROR;
2258         END IF;
2259 
2260         NULL;
2261 
2262 ELSE
2263 END IF;
2264 
2265 
2266 END Unit_Test_Lock;
2267 
2268 /*********************** server side TEST CASE *****************************************/
2269 
2270 /*
2271 
2272 PROCEDURE Unit_Test_Act_Insert
2273 is
2274 
2275         -- local variables
2276         l_act_category_rec              AMS_ACT_CATEGORIES%ROWTYPE;
2277         l_return_status                 VARCHAR2(1);
2278         l_msg_count                     NUMBER;
2279         l_msg_data                      VARCHAR2(200);
2280         l_act_category_id               AMS_ACT_CATEGORIES.ACTIVITY_CATEGORY_ID%TYPE;
2281 
2282         l_act_category_req_item_rec             Act_category_rec_type;
2283         l_act_cty_validate_item_rec     Act_category_rec_type;
2284         l_act_cty_default_item_rec      Act_category_rec_type;
2285         l_act_cty_validate_row_rec      Act_category_rec_type;
2286 
2287   BEGIN
2288 
2289         -- turned on debug mode
2290     IF AMS_Category_PVT.G_DEBUG = TRUE THEN
2291 
2292 --********************************************************
2293 -- Insert case 1
2294 
2295         l_act_category_rec.ACTIVITY_CATEGORY_ID := 1234;
2296         l_act_category_rec.ACT_CATEGORY_USED_BY_ID := 1000;
2297         l_act_category_rec.ARC_ACT_CATEGORY_USED_BY := 1000;
2298         l_act_category_rec.CATEGORY_ID := 1234;
2299 
2300 
2301         AMS_Category_PVT.Create_Act_Category (
2302         p_api_version                   => 1.0 -- p_api_version
2303         ,p_init_msg_list                => FND_API.G_FALSE
2304         ,p_commit                       => FND_API.G_FALSE
2305         ,p_validation_level             => FND_API.G_VALID_LEVEL_FULL
2306         ,x_return_status                => l_return_status
2307         ,x_msg_count                    => l_msg_count
2308         ,x_msg_data                     => l_msg_data
2309 
2310         ,p_PK                           => FND_API.G_TRUE
2311         ,p_default                      => FND_API.G_TRUE
2312         ,p_Category_req_item_rec        => l_act_category_req_item_rec
2313         ,p_Category_validate_item_rec   => l_act_cty_validate_item_rec
2314         ,p_Category_default_item_rec    => l_act_cty_default_item_rec
2315         ,p_Category_validate_row_rec    => l_act_cty_validate_row_rec
2316         ,p_category_rec                 => l_act_category_rec
2317         ,x_act_category_id              => l_act_category_id
2318         );
2319 
2320         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
2321         THEN
2322         ELSE
2323                 commit work;
2324         END IF;
2328     ELSE
2325 
2326         null;
2327 
2329     END IF;
2330 
2331 END Unit_Test_Act_Insert;
2332 
2333 
2334 PROCEDURE Unit_Test_Act_Delete
2335 is
2336 
2337         -- local variables
2338         l_act_category_rec              AMS_ACT_CATEGORIES%ROWTYPE;
2339         l_return_status                 VARCHAR2(1);
2340         l_msg_count                     NUMBER;
2341         l_msg_data                      VARCHAR2(200);
2342         l_act_category_id               AMS_ACT_CATEGORIES.ACTIVITY_CATEGORY_ID%TYPE;
2343 
2344         l_act_category_req_item_rec     act_category_rec_type;
2345         l_act_cty_validate_item_rec     act_category_rec_type;
2346         l_act_cty_default_item_rec      act_category_rec_type;
2347         l_act_cty_validate_row_rec      act_category_rec_type;
2348 
2349   BEGIN
2350 
2351         -- turned on debug mode
2352     IF AMS_Category_PVT.G_DEBUG = TRUE THEN
2353 
2354 
2355 -- Delete test case 1
2356         l_act_category_rec.activity_category_id := 1234;
2357         AMS_Category_PVT.Delete_Act_Category (
2358          p_api_version          => 1.0 -- p_api_version
2359         ,p_init_msg_list        => FND_API.G_FALSE
2360         ,p_commit               => FND_API.G_FALSE
2361         ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
2362         ,p_category_rec         => l_act_category_rec
2363 
2364         ,x_return_status        => l_return_status
2365         ,x_msg_count            => l_msg_count
2366         ,x_msg_data             => l_msg_data
2367         );
2368 
2369         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
2370         ELSE
2371                 commit work;
2372         END IF;
2373 
2374         null;
2375 
2376     ELSE
2377     END IF;
2378 
2379 END Unit_Test_Act_Delete;
2380 
2381 
2382 
2383 PROCEDURE Unit_Test_Act_Update
2384 is
2385 
2386         -- local variables
2387         l_act_category_rec              AMS_ACT_CATEGORIES%ROWTYPE;
2388         l_return_status                 VARCHAR2(1);
2389         l_msg_count                     NUMBER;
2390         l_msg_data                      VARCHAR2(200);
2391         l_act_category_id               AMS_ACT_CATEGORIES.ACTIVITY_CATEGORY_ID%TYPE;
2392 
2393         l_act_category_req_item_rec     act_category_rec_type;
2394         l_act_cty_validate_item_rec     act_category_rec_type;
2395         l_act_cty_default_item_rec      act_category_rec_type;
2396         l_act_cty_validate_row_rec      act_category_rec_type;
2397 
2398         CURSOR C(my_act_category_id NUMBER) is
2399         SELECT *
2400           FROM AMS_ACT_CATEGORIES
2401          WHERE ACTIVITY_CATEGORY_ID = my_act_category_id;
2402 
2403   BEGIN
2404 
2405         -- turned on debug mode
2406     IF AMS_Category_PVT.G_DEBUG = TRUE THEN
2407 
2408 
2409 -- Update test case 1
2410 
2411         l_act_category_id := 1234;
2412         OPEN C(l_act_category_id);
2413         FETCH C INTO l_act_category_rec;
2414 
2415         l_act_category_rec.ATTRIBUTE1 := 'ATTRIBUTE1 UPDATED1';
2416 
2417 
2418         AMS_Category_PVT.Update_Act_Category (
2419          p_api_version          => 1.0 -- p_api_version
2420         ,p_init_msg_list        => FND_API.G_FALSE
2421         ,p_commit               => FND_API.G_FALSE
2422         ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
2423         ,p_category_rec         => l_act_category_rec
2424 
2425         ,x_return_status        => l_return_status
2426         ,x_msg_count            => l_msg_count
2427         ,x_msg_data             => l_msg_data
2428         );
2429 
2430         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
2431         THEN
2432         ELSE
2433                 commit work;
2434         END IF;
2435         CLOSE C;
2436 
2437         null;
2438 
2439     ELSE
2440     END IF;
2441 
2442 END Unit_Test_Act_Update;
2443 
2444 
2445 PROCEDURE Unit_Test_Act_Lock
2446 is
2447 
2448         -- local variables
2449         l_act_category_rec              AMS_ACT_CATEGORIES%ROWTYPE;
2450         l_return_status                 VARCHAR2(1);
2451         l_msg_count                     NUMBER;
2452         l_msg_data                      VARCHAR2(200);
2453         l_act_category_id               AMS_ACT_CATEGORIES.ACTIVITY_CATEGORY_ID%TYPE;
2454 
2455         l_act_category_req_item_rec     act_category_rec_type;
2456         l_act_cty_validate_item_rec     act_category_rec_type;
2457         l_act_cty_default_item_rec      act_category_rec_type;
2458         l_act_cty_validate_row_rec      act_category_rec_type;
2459 
2460   BEGIN
2461 
2462         -- turned on debug mode
2463     IF AMS_Category_PVT.G_DEBUG = TRUE THEN
2464 
2465 
2466 --********************************************************
2467 -- Lock test case 1
2468 
2469         l_act_category_rec.activity_category_id := 1234;
2470 
2471 
2472         AMS_Category_PVT.Lock_Act_Category (
2473          p_api_version          => 1.0 -- p_api_version
2474         ,p_init_msg_list        => FND_API.G_FALSE
2475         ,p_validation_level     => FND_API.G_VALID_LEVEL_FULL
2476         ,p_category_rec         => l_act_category_rec
2477 
2481         );
2478         ,x_return_status        => l_return_status
2479         ,x_msg_count            => l_msg_count
2480         ,x_msg_data             => l_msg_data
2482 
2483         IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
2484         THEN
2485                 --RAISE FND_API.G_EXC_ERROR;
2486         END IF;
2487 
2488 
2489         null;
2490 
2491     ELSE
2492     END IF;
2493 
2494 END Unit_Test_Act_Lock;
2495 */
2496 END AMS_Category_PVT;