DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_TEMPLATE_ATTR_PVT

Source


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