[Home] [Help]
PACKAGE BODY: APPS.AMS_PROD_TEMPLATE_PVT
Source
1 PACKAGE BODY AMS_Prod_Template_PVT as
2 /* $Header: amsvptmb.pls 115.8 2002/12/04 20:00:47 musman ship $ */
3 -- ===============================================================
4 -- Start of Comments
5 -- Package name
6 -- AMS_Prod_Template_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_Prod_Template_PVT';
18 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amsvptmb.pls';
19
20
21
22 -- Hint: Primary key needs to be returned.
23 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
24 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
25 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
26
27 PROCEDURE Create_Prod_Template(
28 p_api_version_number IN NUMBER,
29 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
30 p_commit IN VARCHAR2 := FND_API.G_FALSE,
31 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
32
33 x_return_status OUT NOCOPY VARCHAR2,
34 x_msg_count OUT NOCOPY NUMBER,
35 x_msg_data OUT NOCOPY VARCHAR2,
36
37 p_prod_template_rec IN prod_template_rec_type := g_miss_prod_template_rec,
38 x_template_id OUT NOCOPY NUMBER
39 )
40
41 IS
42 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Prod_Template';
43 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
44 l_return_status_full VARCHAR2(1);
45 l_object_version_number NUMBER := 1;
46 l_org_id NUMBER := FND_API.G_MISS_NUM;
47 l_TEMPLATE_ID NUMBER;
48 l_dummy NUMBER;
49
50 CURSOR c_id IS
51 SELECT AMS_PROD_TEMPLATES_B_s.NEXTVAL
52 FROM dual;
53
54 CURSOR c_id_exists (l_id IN NUMBER) IS
55 SELECT 1
56 FROM AMS_PROD_TEMPLATES_B
57 WHERE TEMPLATE_ID = l_id;
58
59 CURSOR c_get_prod_attr
60 IS
61 SELECT stp.parent_setup_attribute,
62 stp.setup_attribute
63 FROM ams_setup_types stp
64 WHERE stp.object_type = 'PTMP'
65 AND stp.setup_attribute not in ('AMS_PROD_SUPP_SRV','AMS_PROD_WARRN','AMS_PROD_COV_TEMP'
66 ,'AMS_PROD_DUR_VAL','AMS_PROD_DUR_PER','AMS_CONTRACT_ITEM_TYPE')
67 --,'AMS_SUBSCRIPTION_DEPENDENCY')
68 ORDER BY display_sequence_no;
69
70 l_get_prod_attr c_get_prod_attr%ROWTYPE;
71
72 CURSOR c_get_service_attr
73 IS
74 SELECT stp.parent_setup_attribute,
75 stp.setup_attribute
76 FROM ams_setup_types stp
77 WHERE stp.object_type = 'PTMP'
78 AND parent_setup_attribute not in ('AMS_INVENTORY','AMS_BILL_OF_MATERIAL')
79 AND setup_attribute not in ('AMS_PROD_RET','AMS_PROD_SHP','AMS_PROD_BACK_ORD','AMS_PROD_SRP','AMS_BILLING_TYPE','AMS_SUBSCRIPTION_DEPENDENCY','AMS_CONTRACT_ITEM_TYPE')
80 ORDER BY display_sequence_no;
81
82 l_get_service_attr c_get_service_attr%ROWTYPE;
83
84 BEGIN
85 -- Standard Start of API savepoint
86 SAVEPOINT CREATE_Prod_Template_PVT;
87
88 -- Standard call to check for call compatibility.
89 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
90 p_api_version_number,
91 l_api_name,
92 G_PKG_NAME)
93 THEN
94 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
95 END IF;
96
97 -- Initialize message list if p_init_msg_list is set to TRUE.
98 IF FND_API.to_Boolean( p_init_msg_list )
99 THEN
100 FND_MSG_PUB.initialize;
101 END IF;
102
103 -- Debug Message
104 IF (AMS_DEBUG_HIGH_ON) THEN
105
106 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
107 END IF;
108
109
110 -- Initialize API return status to SUCCESS
111 x_return_status := FND_API.G_RET_STS_SUCCESS;
112
113 -- Local variable initialization
114
115 IF p_prod_template_rec.TEMPLATE_ID IS NULL
116 OR p_prod_template_rec.TEMPLATE_ID = FND_API.g_miss_num
117 THEN
118 LOOP
119 l_dummy := NULL;
120 OPEN c_id;
121 FETCH c_id INTO l_TEMPLATE_ID;
122 CLOSE c_id;
123
124 OPEN c_id_exists(l_TEMPLATE_ID);
125 FETCH c_id_exists INTO l_dummy;
126 CLOSE c_id_exists;
127 EXIT WHEN l_dummy IS NULL;
128 END LOOP;
129 END IF;
130
131 -- =========================================================================
132 -- Validate Environment
133 -- =========================================================================
134
135 IF FND_GLOBAL.User_Id IS NULL
136 THEN
137 AMS_Utility_PVT.Error_Message(p_message_name => 'USER_PROFILE_MISSING');
138 RAISE FND_API.G_EXC_ERROR;
139 END IF;
140
141 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
142 THEN
143 -- Debug message
144 IF (AMS_DEBUG_HIGH_ON) THEN
145
146 AMS_UTILITY_PVT.debug_message('Private API: Validate_Prod_Template');
147 END IF;
148
149 -- Invoke validation procedures
150 Validate_prod_template(
151 p_api_version_number => 1.0,
152 p_init_msg_list => FND_API.G_FALSE,
153 p_validation_level => p_validation_level,
154 p_validation_mode => JTF_PLSQL_API.g_create,
155 p_prod_template_rec => p_prod_template_rec,
156 x_return_status => x_return_status,
157 x_msg_count => x_msg_count,
158 x_msg_data => x_msg_data);
159 END IF;
160
161 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
162 RAISE FND_API.G_EXC_ERROR;
163 END IF;
164
165
166 INSERT INTO AMS_PROD_TEMPLATES_B(
167 template_id,
168 last_update_date,
169 last_updated_by,
170 creation_date,
171 created_by,
172 object_version_number,
173 last_update_login,
174 product_service_flag
175 ) VALUES (
176 DECODE( l_template_id, FND_API.g_miss_num, NULL, l_template_id)
177 ,SYSDATE
178 ,fnd_global.user_id
179 ,SYSDATE
180 ,fnd_global.user_id
181 ,l_object_version_number
182 ,FND_GLOBAL.CONC_LOGIN_ID
183 ,DECODE( p_prod_template_rec.product_service_flag, FND_API.g_miss_char, NULL, p_prod_template_rec.product_service_flag)
184 );
185
186
187 INSERT INTO AMS_PROD_TEMPLATES_TL(
188 template_id
189 ,language
190 ,source_lang
191 ,last_update_date
192 ,last_updated_by
193 ,last_update_login
194 ,creation_date
195 ,created_by
196 ,template_name
197 ,description
198 ) SELECT
199 DECODE( l_template_id, FND_API.g_miss_num, NULL, l_template_id),
200 l.language_code,
201 USERENV('LANG'),
202 sysdate,
203 FND_GLOBAL.user_id,
204 FND_GLOBAL.conc_login_id,
205 sysdate,
206 FND_GLOBAL.user_id,
207 DECODE( p_prod_template_rec.template_name, FND_API.g_miss_char, NULL, p_prod_template_rec.template_name),
208 DECODE( p_prod_template_rec.description, FND_API.g_miss_char, NULL, p_prod_template_rec.description)
209 FROM fnd_languages l
210 WHERE l.installed_flag IN ('I','B')
211 AND NOT EXISTS(
212 SELECT NULL
213 FROM AMS_PROD_TEMPLATES_TL t
214 WHERE t.template_id = DECODE( l_template_id, FND_API.g_miss_num, NULL, l_template_id)
215 AND t.language = l.language_code ) ;
216
217 x_template_id := l_template_id;
218
219
220 IF p_prod_template_rec.product_service_flag= 'P'
221 THEN
222
223 OPEN c_get_prod_attr;
224 LOOP
225 FETCH c_get_prod_attr INTO l_get_prod_attr;
226 EXIT WHEN c_get_prod_attr%NOTFOUND;
227
228 INSERT INTO ams_prod_template_attr
229 (
230 template_attribute_id
231 ,template_id
232 ,last_update_date
233 ,last_updated_by
234 ,creation_date
235 ,created_by
236 ,object_version_number
237 ,last_update_login
238 ,parent_attribute_code
239 ,parent_select_all
240 ,attribute_code
241 ,default_flag
242 ,editable_flag
243 ,hide_flag
244 ) VALUES
245 ( ams_prod_template_attr_s.nextval,
246 x_template_id,
247 SYSDATE,
248 fnd_global.user_id,
249 SYSDATE,
250 fnd_global.user_id,
251 1,
252 FND_GLOBAL.CONC_LOGIN_ID,
253 l_get_prod_attr.parent_setup_attribute,
254 'Y',
255 l_get_prod_attr.setup_attribute,
256 'Y',
257 'Y',
258 'N') ;
259 END LOOP;
260 CLOSE c_get_prod_attr;
261
262 ELSIF p_prod_template_rec.product_service_flag= 'S'
263 THEN
264 OPEN c_get_service_attr;
265 LOOP
266 FETCH c_get_service_attr INTO l_get_service_attr;
267 EXIT WHEN c_get_service_attr%NOTFOUND;
268 INSERT INTO ams_prod_template_attr
269 (
270 template_attribute_id
271 ,template_id
272 ,last_update_date
273 ,last_updated_by
274 ,creation_date
275 ,created_by
276 ,object_version_number
277 ,last_update_login
278 ,parent_attribute_code
279 ,parent_select_all
280 ,attribute_code
281 ,default_flag
282 ,editable_flag
283 ,hide_flag
284 ) VALUES
285 (ams_prod_template_attr_s.nextval,
286 x_template_id,
287 SYSDATE,
288 fnd_global.user_id,
289 SYSDATE,
290 fnd_global.user_id,
291 1,
292 FND_GLOBAL.CONC_LOGIN_ID,
293 l_get_service_attr.parent_setup_attribute,
294 'Y',
295 l_get_service_attr.setup_attribute,
296 'Y',
297 'Y',
298 'N');
299 END LOOP;
300 CLOSE c_get_service_attr;
301 END IF;
302
303
304 /*
305 SELECT ams_prod_template_attr_s.nextval,
306 x_template_id,
307 SYSDATE,
308 fnd_global.user_id,
309 SYSDATE,
310 fnd_global.user_id,
311 1,
312 FND_GLOBAL.CONC_LOGIN_ID,
313 stp.parent_setup_attribute,
314 'N',
315 stp.setup_attribute,
316 'N',
317 'N',
318 'N'
319 FROM ams_setup_types stp
320 WHERE stp.object_type = 'PTMP'
321 AND parent_setup_attribute not in ('AMS_INVENTORY','AMS_BILL_OF_MATERIAL')
322 AND setup_attribute not in ('AMS_PROD_RET','AMS_PROD_SHP','AMS_PROD_BACK_ORD','AMS_PROD_SRP','AMS_BILLING_TYPE') ;
323 */
324
325 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
326 RAISE FND_API.G_EXC_ERROR;
327 END IF;
328 --
329 -- End of API body
330 --
331
332 -- Standard check for p_commit
333 IF FND_API.to_Boolean( p_commit )
334 THEN
335 COMMIT WORK;
336 END IF;
337
338
339 -- Debug Message
340 IF (AMS_DEBUG_HIGH_ON) THEN
341
342 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
343 END IF;
344
345 -- Standard call to get message count and if count is 1, get message info.
346 FND_MSG_PUB.Count_And_Get
347 (p_count => x_msg_count,
351
348 p_data => x_msg_data
349 );
350 EXCEPTION
352 WHEN AMS_Utility_PVT.resource_locked THEN
353 x_return_status := FND_API.g_ret_sts_error;
354 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
355
356 WHEN FND_API.G_EXC_ERROR THEN
357 ROLLBACK TO CREATE_Prod_Template_PVT;
358 x_return_status := FND_API.G_RET_STS_ERROR;
359 -- Standard call to get message count and if count=1, get the message
360 FND_MSG_PUB.Count_And_Get (
361 p_encoded => FND_API.G_FALSE,
362 p_count => x_msg_count,
363 p_data => x_msg_data
364 );
365
366 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
367 ROLLBACK TO CREATE_Prod_Template_PVT;
368 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
369 -- Standard call to get message count and if count=1, get the message
370 FND_MSG_PUB.Count_And_Get (
371 p_encoded => FND_API.G_FALSE,
372 p_count => x_msg_count,
373 p_data => x_msg_data
374 );
375
376 WHEN OTHERS THEN
377 ROLLBACK TO CREATE_Prod_Template_PVT;
378 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
379 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
380 THEN
381 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
382 END IF;
383 -- Standard call to get message count and if count=1, get the message
384 FND_MSG_PUB.Count_And_Get (
385 p_encoded => FND_API.G_FALSE,
386 p_count => x_msg_count,
387 p_data => x_msg_data
388 );
389 End Create_Prod_Template;
390
391
392 PROCEDURE Update_Prod_Template(
393 p_api_version_number IN NUMBER,
394 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
395 p_commit IN VARCHAR2 := FND_API.G_FALSE,
396 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
397
398 x_return_status OUT NOCOPY VARCHAR2,
399 x_msg_count OUT NOCOPY NUMBER,
400 x_msg_data OUT NOCOPY VARCHAR2,
401
402 p_prod_template_rec IN prod_template_rec_type
403 )
404
405 IS
406
407 CURSOR c_get_prod_template(p_template_id NUMBER) IS
408 SELECT *
409 FROM AMS_PROD_TEMPLATES_B
410 WHERE template_id =p_template_id;
411 -- Hint: Developer need to provide Where clause
412
413 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Prod_Template';
414 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
415 -- Local Variables
416 l_object_version_number NUMBER;
417 l_TEMPLATE_ID NUMBER;
418 l_ref_prod_template_rec c_get_Prod_Template%ROWTYPE ;
419 l_tar_prod_template_rec AMS_Prod_Template_PVT.prod_template_rec_type := P_prod_template_rec;
420 l_rowid ROWID;
421
422 BEGIN
423 -- Standard Start of API savepoint
424 SAVEPOINT UPDATE_Prod_Template_PVT;
425
426 -- Standard call to check for call compatibility.
427 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
428 p_api_version_number,
429 l_api_name,
430 G_PKG_NAME)
431 THEN
432 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
433 END IF;
434
435 -- Initialize message list if p_init_msg_list is set to TRUE.
436 IF FND_API.to_Boolean( p_init_msg_list )
437 THEN
438 FND_MSG_PUB.initialize;
439 END IF;
440
441 -- Debug Message
442 IF (AMS_DEBUG_HIGH_ON) THEN
443
444 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
445 END IF;
446
447
448 -- Initialize API return status to SUCCESS
449 x_return_status := FND_API.G_RET_STS_SUCCESS;
450
451 -- Debug Message
452 IF (AMS_DEBUG_HIGH_ON) THEN
453
454 AMS_UTILITY_PVT.debug_message('Private API: - Open Cursor to Select');
455 END IF;
456
457 /*
458 OPEN c_get_Prod_Template( l_tar_prod_template_rec.template_id);
459
460 FETCH c_get_Prod_Template INTO l_ref_prod_template_rec ;
461
462 If ( c_get_Prod_Template%NOTFOUND) THEN
463 AMS_Utility_PVT.Error_Message(p_message_name => 'API_MISSING_UPDATE_TARGET',
464 p_token_name => 'INFO',
465 p_token_value => 'Prod_Template') ;
466 RAISE FND_API.G_EXC_ERROR;
467 END IF;
468 -- Debug Message
469 IF (AMS_DEBUG_HIGH_ON) THEN
470
471 AMS_UTILITY_PVT.debug_message('Private API: - Close Cursor');
472 END IF;
473 CLOSE c_get_Prod_Template;
474 */
475
476
477 If (l_tar_prod_template_rec.object_version_number is NULL or
478 l_tar_prod_template_rec.object_version_number = FND_API.G_MISS_NUM ) Then
479 AMS_Utility_PVT.Error_Message(p_message_name => 'API_VERSION_MISSING',
480 p_token_name => 'COLUMN',
481 p_token_value => 'Last_Update_Date') ;
482 raise FND_API.G_EXC_ERROR;
483 End if;
487 p_token_name => 'INFO',
484 -- Check Whether record has been changed by someone else
485 If (l_tar_prod_template_rec.object_version_number <> l_ref_prod_template_rec.object_version_number) Then
486 AMS_Utility_PVT.Error_Message(p_message_name => 'API_RECORD_CHANGED',
488 p_token_value => 'Prod_Template') ;
489 raise FND_API.G_EXC_ERROR;
490 End if;
491 IF ( P_validation_level >= FND_API.G_VALID_LEVEL_FULL)
492 THEN
493 -- Debug message
494 IF (AMS_DEBUG_HIGH_ON) THEN
495
496 AMS_UTILITY_PVT.debug_message('Private API: Validate_Prod_Template');
497 END IF;
498
499 -- Invoke validation procedures
500 Validate_prod_template(
501 p_api_version_number => 1.0,
502 p_init_msg_list => FND_API.G_FALSE,
503 p_validation_level => p_validation_level,
504 p_validation_mode => JTF_PLSQL_API.g_update,
505 p_prod_template_rec => p_prod_template_rec,
506 x_return_status => x_return_status,
507 x_msg_count => x_msg_count,
508 x_msg_data => x_msg_data);
509 END IF;
510
511 IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
512 RAISE FND_API.G_EXC_ERROR;
513 END IF;
514
515 Update AMS_PROD_TEMPLATES_B
516 SET template_id = DECODE( p_prod_template_rec.template_id, FND_API.g_miss_num, template_id, p_prod_template_rec.template_id),
517 last_update_date = sysdate,
518 last_updated_by = fnd_global.user_id,
519 object_version_number = p_prod_template_rec.object_version_number +1,
520 last_update_login = FND_GLOBAL.CONC_LOGIN_ID,
521 product_service_flag = DECODE(p_prod_template_rec.product_service_flag, FND_API.g_miss_char, product_service_flag, p_prod_template_rec.product_service_flag)
522 WHERE TEMPLATE_ID = p_prod_template_rec.template_id
523 AND object_version_number = p_prod_template_rec.object_version_number;
524
525 If (SQL%NOTFOUND) then
526 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
527 End If;
528
529
530 UPDATE AMS_PROD_TEMPLATES_TL
531 SET template_name = DECODE( p_prod_template_rec.template_name, FND_API.g_miss_char, template_name, p_prod_template_rec.template_name)
532 ,description = DECODE(p_prod_template_rec.description,FND_API.g_miss_char,description,p_prod_template_rec.description)
533 ,last_update_date = sysdate
534 ,last_updated_by = fnd_global.user_id
535 ,last_update_login = FND_GLOBAL.CONC_LOGIN_ID
536 ,source_lang = USERENV('LANG')
537 WHERE TEMPLATE_ID = p_prod_template_rec.template_id
538 AND USERENV('LANG') IN (language, source_lang);
539
540 If (SQL%NOTFOUND) then
541 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
542 End If;
543
544
545 -- Standard check for p_commit
546 IF FND_API.to_Boolean( p_commit )
547 THEN
548 COMMIT WORK;
549 END IF;
550
551
552 -- Debug Message
553 IF (AMS_DEBUG_HIGH_ON) THEN
554
555 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
556 END IF;
557
558 -- Standard call to get message count and if count is 1, get message info.
559 FND_MSG_PUB.Count_And_Get
560 (p_count => x_msg_count,
561 p_data => x_msg_data
562 );
563 EXCEPTION
564
565 WHEN AMS_Utility_PVT.resource_locked THEN
566 x_return_status := FND_API.g_ret_sts_error;
567 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
568
569 WHEN FND_API.G_EXC_ERROR THEN
570 ROLLBACK TO UPDATE_Prod_Template_PVT;
571 x_return_status := FND_API.G_RET_STS_ERROR;
572 -- Standard call to get message count and if count=1, get the message
573 FND_MSG_PUB.Count_And_Get (
574 p_encoded => FND_API.G_FALSE,
575 p_count => x_msg_count,
576 p_data => x_msg_data
577 );
578
579 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
580 ROLLBACK TO UPDATE_Prod_Template_PVT;
581 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
582 -- Standard call to get message count and if count=1, get the message
583 FND_MSG_PUB.Count_And_Get (
584 p_encoded => FND_API.G_FALSE,
585 p_count => x_msg_count,
586 p_data => x_msg_data
587 );
588
589 WHEN OTHERS THEN
590 ROLLBACK TO UPDATE_Prod_Template_PVT;
591 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
592 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
593 THEN
594 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
595 END IF;
596 -- Standard call to get message count and if count=1, get the message
597 FND_MSG_PUB.Count_And_Get (
598 p_encoded => FND_API.G_FALSE,
599 p_count => x_msg_count,
600 p_data => x_msg_data
601 );
602 End Update_Prod_Template;
603
604
605 PROCEDURE Delete_Prod_Template(
606 p_api_version_number IN NUMBER,
607 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
608 p_commit IN VARCHAR2 := FND_API.G_FALSE,
612 x_msg_data OUT NOCOPY VARCHAR2,
609 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
610 x_return_status OUT NOCOPY VARCHAR2,
611 x_msg_count OUT NOCOPY NUMBER,
613 p_template_id IN NUMBER,
614 p_object_version_number IN NUMBER
615 )
616
617 IS
618 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Prod_Template';
619 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
620 l_object_version_number NUMBER;
621
622 BEGIN
623 -- Standard Start of API savepoint
624 SAVEPOINT DELETE_Prod_Template_PVT;
625
626 -- Standard call to check for call compatibility.
627 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
628 p_api_version_number,
629 l_api_name,
630 G_PKG_NAME)
631 THEN
632 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
633 END IF;
634
635 -- Initialize message list if p_init_msg_list is set to TRUE.
636 IF FND_API.to_Boolean( p_init_msg_list )
637 THEN
638 FND_MSG_PUB.initialize;
639 END IF;
640
641 -- Debug Message
642 IF (AMS_DEBUG_HIGH_ON) THEN
643
644 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
645 END IF;
646
647
648 -- Initialize API return status to SUCCESS
649 x_return_status := FND_API.G_RET_STS_SUCCESS;
650
651 --
652 -- Api body
653 --
654 -- Debug Message
655 IF (AMS_DEBUG_HIGH_ON) THEN
656 AMS_UTILITY_PVT.debug_message( 'Private API: Calling delete table handler');
657 END IF;
658 /*
659 IF p_template_id = 1000
660 OR p_template_id = 1001
661 THEN
662 */
663 IF p_template_id < 10000
664 THEN
665 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
666 THEN
667 FND_MESSAGE.set_name('AMS', 'AMS_API_CANNOT_DELETE');
668 FND_MSG_PUB.add;
669 END IF;
670 RAISE FND_API.g_exc_error;
671 END IF;
672
673 DELETE FROM AMS_PROD_TEMPLATES_B
674 WHERE TEMPLATE_ID = p_TEMPLATE_ID
675 AND object_version_number = p_object_version_number;
676
677 IF (SQL%NOTFOUND) THEN
678 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
679 THEN
680 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
681 FND_MSG_PUB.add;
682 END IF;
683 RAISE FND_API.g_exc_error;
684 END IF;
685
686 DELETE FROM AMS_PROD_TEMPLATES_TL
687 WHERE TEMPLATE_ID = p_TEMPLATE_ID;
688
689 IF (SQL%NOTFOUND) THEN
690 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
691 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 DELETE FROM ams_prod_template_attr
699 WHERE template_id = p_template_id;
700
701 DELETE FROM ams_templ_responsibility
702 WHERE template_id = p_template_id;
703
704 --
705 -- End of API body
706 --
707
708 -- Standard check for p_commit
709 IF FND_API.to_Boolean( p_commit )
710 THEN
711 COMMIT WORK;
712 END IF;
713
714
715 -- Debug Message
716 IF (AMS_DEBUG_HIGH_ON) THEN
717
718 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
719 END IF;
720
721 -- Standard call to get message count and if count is 1, get message info.
722 FND_MSG_PUB.Count_And_Get
723 (p_count => x_msg_count,
724 p_data => x_msg_data
725 );
726 EXCEPTION
727
728 WHEN AMS_Utility_PVT.resource_locked THEN
729 x_return_status := FND_API.g_ret_sts_error;
730 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
731
732 WHEN FND_API.G_EXC_ERROR THEN
733 ROLLBACK TO DELETE_Prod_Template_PVT;
734 x_return_status := FND_API.G_RET_STS_ERROR;
735 -- Standard call to get message count and if count=1, get the message
736 FND_MSG_PUB.Count_And_Get (
737 p_encoded => FND_API.G_FALSE,
738 p_count => x_msg_count,
739 p_data => x_msg_data
740 );
741
742 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
743 ROLLBACK TO DELETE_Prod_Template_PVT;
744 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
745 -- Standard call to get message count and if count=1, get the message
746 FND_MSG_PUB.Count_And_Get (
747 p_encoded => FND_API.G_FALSE,
748 p_count => x_msg_count,
749 p_data => x_msg_data
750 );
751
752 WHEN OTHERS THEN
753 ROLLBACK TO DELETE_Prod_Template_PVT;
754 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
758 END IF;
755 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
756 THEN
757 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
759 -- Standard call to get message count and if count=1, get the message
760 FND_MSG_PUB.Count_And_Get (
761 p_encoded => FND_API.G_FALSE,
762 p_count => x_msg_count,
763 p_data => x_msg_data
764 );
765 End Delete_Prod_Template;
766
767
768
769 -- Hint: Primary key needs to be returned.
770 PROCEDURE Lock_Prod_Template(
771 p_api_version_number IN NUMBER,
772 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
773
774 x_return_status OUT NOCOPY VARCHAR2,
775 x_msg_count OUT NOCOPY NUMBER,
776 x_msg_data OUT NOCOPY VARCHAR2,
777
778 p_template_id IN NUMBER,
779 p_object_version IN NUMBER
780 )
781
782 IS
783 L_API_NAME CONSTANT VARCHAR2(30) := 'Lock_Prod_Template';
784 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
785 L_FULL_NAME CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
786 l_TEMPLATE_ID NUMBER;
787
788 CURSOR c_Prod_Template IS
789 SELECT TEMPLATE_ID
790 FROM AMS_PROD_TEMPLATES_B
791 WHERE TEMPLATE_ID = p_TEMPLATE_ID
792 AND object_version_number = p_object_version
793 FOR UPDATE NOWAIT;
794
795 BEGIN
796
797 -- Debug Message
798 IF (AMS_DEBUG_HIGH_ON) THEN
799
800 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
801 END IF;
802
803 -- Initialize message list if p_init_msg_list is set to TRUE.
804 IF FND_API.to_Boolean( p_init_msg_list )
805 THEN
806 FND_MSG_PUB.initialize;
807 END IF;
808
809 -- Standard call to check for call compatibility.
810 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
811 p_api_version_number,
812 l_api_name,
813 G_PKG_NAME)
814 THEN
815 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
816 END IF;
817
818
819 -- Initialize API return status to SUCCESS
820 x_return_status := FND_API.G_RET_STS_SUCCESS;
821
822
823 ------------------------ lock -------------------------
824
825 IF (AMS_DEBUG_HIGH_ON) THEN
826
827
828
829 AMS_Utility_PVT.debug_message(l_full_name||': start');
830
831 END IF;
832 OPEN c_Prod_Template;
833
834 FETCH c_Prod_Template INTO l_TEMPLATE_ID;
835
836 IF (c_Prod_Template%NOTFOUND) THEN
837 CLOSE c_Prod_Template;
838 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
839 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
840 FND_MSG_PUB.add;
841 END IF;
842 RAISE FND_API.g_exc_error;
843 END IF;
844
845 CLOSE c_Prod_Template;
846
847 -------------------- finish --------------------------
848 FND_MSG_PUB.count_and_get(
849 p_encoded => FND_API.g_false,
850 p_count => x_msg_count,
851 p_data => x_msg_data);
852 IF (AMS_DEBUG_HIGH_ON) THEN
853
854 AMS_Utility_PVT.debug_message(l_full_name ||': end');
855 END IF;
856 EXCEPTION
857
858 WHEN AMS_Utility_PVT.resource_locked THEN
859 x_return_status := FND_API.g_ret_sts_error;
860 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
861
862 WHEN FND_API.G_EXC_ERROR THEN
863 ROLLBACK TO LOCK_Prod_Template_PVT;
864 x_return_status := FND_API.G_RET_STS_ERROR;
865 -- Standard call to get message count and if count=1, get the message
866 FND_MSG_PUB.Count_And_Get (
867 p_encoded => FND_API.G_FALSE,
868 p_count => x_msg_count,
869 p_data => x_msg_data
870 );
871
872 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
873 ROLLBACK TO LOCK_Prod_Template_PVT;
874 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
875 -- Standard call to get message count and if count=1, get the message
876 FND_MSG_PUB.Count_And_Get (
877 p_encoded => FND_API.G_FALSE,
878 p_count => x_msg_count,
879 p_data => x_msg_data
880 );
881
882 WHEN OTHERS THEN
883 ROLLBACK TO LOCK_Prod_Template_PVT;
884 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
885 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
886 THEN
887 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
888 END IF;
889 -- Standard call to get message count and if count=1, get the message
890 FND_MSG_PUB.Count_And_Get (
891 p_encoded => FND_API.G_FALSE,
892 p_count => x_msg_count,
893 p_data => x_msg_data
894 );
895 End Lock_Prod_Template;
896
897
901 x_return_status OUT NOCOPY VARCHAR2)
898 PROCEDURE check_prod_template_uk_items(
899 p_prod_template_rec IN prod_template_rec_type,
900 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
902 IS
903
904 l_valid_flag VARCHAR2(1);
905
906 CURSOR c_check_unique(p_name IN VARCHAR2)
907 IS
908 SELECT 'Y'
909 FROM ams_prod_templates_tl
910 WHERE template_name = p_name;
911
912
913 CURSOR c_check_unik_upd(p_name IN VARCHAR2
914 ,p_template_id IN NUMBER)
915 IS
916 SELECT 'Y'
917 FROM ams_prod_templates_tl
918 WHERE template_name = p_name
919 AND template_id <> p_template_id;
920
921
922
923 BEGIN
924 x_return_status := FND_API.g_ret_sts_success;
925 IF p_validation_mode = JTF_PLSQL_API.g_create THEN
926 l_valid_flag := AMS_Utility_PVT.check_uniqueness(
927 'AMS_PROD_TEMPLATES_B',
928 'TEMPLATE_ID = ''' || p_prod_template_rec.TEMPLATE_ID ||''''
929 );
930 ELSE
931 l_valid_flag := AMS_Utility_PVT.check_uniqueness(
932 'AMS_PROD_TEMPLATES_B',
933 'TEMPLATE_ID = ''' || p_prod_template_rec.TEMPLATE_ID ||
934 ''' AND TEMPLATE_ID <> ' || p_prod_template_rec.TEMPLATE_ID
935 );
936 END IF;
937
938 IF l_valid_flag = FND_API.g_false THEN
939 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_TEMPLATE_ID_DUPLICATE');
940 x_return_status := FND_API.g_ret_sts_error;
941 RETURN;
942 END IF;
943
944 IF p_prod_template_rec.template_name IS NOT NULL
945 AND p_prod_template_rec.template_name <> FND_API.g_miss_char
946 THEN
947
948 IF p_validation_mode =JTF_PLSQL_API.g_create
949 THEN
950 OPEN c_check_unique(p_prod_template_rec.template_name);
951 FETCH c_check_unique INTO l_valid_flag;
952 CLOSE c_check_unique;
953
954 ELSIF p_validation_mode =JTF_PLSQL_API.g_update
955 THEN
956 OPEN c_check_unik_upd(p_prod_template_rec.template_name,p_prod_template_rec.template_id);
957 FETCH c_check_unik_upd INTO l_valid_flag;
958 CLOSE c_check_unik_upd;
959 END IF;
960
961 IF (AMS_DEBUG_HIGH_ON) THEN
962
963
964
965 AMS_UTILITY_PVT.debug_message('l_valid_flag:'||l_valid_flag||' vd mode:'|| p_validation_mode||' g_create:'||JTF_PLSQL_API.g_create);
966
967 END IF;
968
969 IF l_valid_flag = 'Y'
970 THEN
971 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
972 THEN
973 FND_MESSAGE.set_name('AMS','AMS_dup_name');
974 FND_MSG_PUB.add;
975 END IF;
976 x_return_status := FND_API.g_ret_sts_error;
977 RETURN;
978 END IF;
979
980 END IF;
981
982
983 END check_prod_template_uk_items;
984
985 PROCEDURE check_prod_template_req_items(
986 p_prod_template_rec IN prod_template_rec_type,
987 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
988 x_return_status OUT NOCOPY VARCHAR2
989 )
990 IS
991 BEGIN
992 x_return_status := FND_API.g_ret_sts_success;
993
994
995
996
997 IF p_prod_template_rec.template_name = FND_API.g_miss_char
1001 x_return_status := FND_API.g_ret_sts_error;
998 OR p_prod_template_rec.template_name IS NULL THEN
999 FND_MESSAGE.set_name('AMS', 'AMS_API_MISSING_FIELD');
1000 FND_MESSAGE.set_token('MISS_FIELD','TEMPLATE_NAME');
1002 RETURN;
1003 END IF;
1004
1005 IF p_validation_mode = JTF_PLSQL_API.g_update THEN
1006
1007 IF p_prod_template_rec.template_id IS NULL THEN
1008 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_prod_template_NO_template_id');
1009 x_return_status := FND_API.g_ret_sts_error;
1010 RETURN;
1011 END IF;
1012
1013 END IF;
1014
1015 END check_prod_template_req_items;
1016
1017 PROCEDURE check_prod_template_FK_items(
1018 p_prod_template_rec IN prod_template_rec_type,
1019 x_return_status OUT NOCOPY VARCHAR2
1020 )
1021 IS
1022 BEGIN
1023 x_return_status := FND_API.g_ret_sts_success;
1024
1025 -- Enter custom code here
1026
1027 END check_prod_template_FK_items;
1028
1029 PROCEDURE check_template_lkup_items(
1030 p_prod_template_rec IN prod_template_rec_type,
1031 x_return_status OUT NOCOPY VARCHAR2
1032 )
1033 IS
1034 BEGIN
1035 x_return_status := FND_API.g_ret_sts_success;
1036
1037 -- Enter custom code here
1038
1039 END check_template_lkup_items;
1040
1041 PROCEDURE Check_prod_template_Items (
1042 P_prod_template_rec IN prod_template_rec_type,
1043 p_validation_mode IN VARCHAR2,
1044 x_return_status OUT NOCOPY VARCHAR2
1045 )
1046 IS
1047 BEGIN
1048
1049 -- Check Items Uniqueness API calls
1050
1051 check_prod_template_uk_items(
1052 p_prod_template_rec => p_prod_template_rec,
1053 p_validation_mode => p_validation_mode,
1054 x_return_status => x_return_status);
1055 IF x_return_status <> FND_API.g_ret_sts_success THEN
1056 RETURN;
1057 END IF;
1058
1059 -- Check Items Required/NOT NULL API calls
1060
1061 check_prod_template_req_items(
1062 p_prod_template_rec => p_prod_template_rec,
1063 p_validation_mode => p_validation_mode,
1064 x_return_status => x_return_status);
1065 IF x_return_status <> FND_API.g_ret_sts_success THEN
1066 RETURN;
1067 END IF;
1068 -- Check Items Foreign Keys API calls
1069
1070 check_prod_template_FK_items(
1071 p_prod_template_rec => p_prod_template_rec,
1072 x_return_status => x_return_status);
1073 IF x_return_status <> FND_API.g_ret_sts_success THEN
1074 RETURN;
1075 END IF;
1076 -- Check Items Lookups
1077
1078 check_template_lkup_items(
1079 p_prod_template_rec => p_prod_template_rec,
1080 x_return_status => x_return_status);
1081 IF x_return_status <> FND_API.g_ret_sts_success THEN
1082 RETURN;
1083 END IF;
1084
1085 END Check_prod_template_Items;
1086
1087
1088
1089 PROCEDURE Complete_prod_template_Rec (
1090 p_prod_template_rec IN prod_template_rec_type,
1091 x_complete_rec OUT NOCOPY prod_template_rec_type)
1092 IS
1093 l_return_status VARCHAR2(1);
1094
1095 CURSOR c_complete IS
1096 SELECT *
1097 FROM ams_prod_templates_b
1098 WHERE template_id = p_prod_template_rec.template_id;
1099 l_prod_template_rec c_complete%ROWTYPE;
1100 BEGIN
1101 x_complete_rec := p_prod_template_rec;
1102
1103
1104 OPEN c_complete;
1105 FETCH c_complete INTO l_prod_template_rec;
1106 CLOSE c_complete;
1107
1108 -- template_id
1109 IF p_prod_template_rec.template_id = FND_API.g_miss_num THEN
1110 x_complete_rec.template_id := l_prod_template_rec.template_id;
1111 END IF;
1112
1113 -- last_update_date
1114 IF p_prod_template_rec.last_update_date = FND_API.g_miss_date THEN
1115 x_complete_rec.last_update_date := l_prod_template_rec.last_update_date;
1116 END IF;
1117
1118 -- last_updated_by
1119 IF p_prod_template_rec.last_updated_by = FND_API.g_miss_num THEN
1120 x_complete_rec.last_updated_by := l_prod_template_rec.last_updated_by;
1121 END IF;
1122
1123 -- creation_date
1124 IF p_prod_template_rec.creation_date = FND_API.g_miss_date THEN
1125 x_complete_rec.creation_date := l_prod_template_rec.creation_date;
1126 END IF;
1127
1128 -- created_by
1129 IF p_prod_template_rec.created_by = FND_API.g_miss_num THEN
1130 x_complete_rec.created_by := l_prod_template_rec.created_by;
1131 END IF;
1132
1133 -- object_version_number
1134 IF p_prod_template_rec.object_version_number = FND_API.g_miss_num THEN
1135 x_complete_rec.object_version_number := l_prod_template_rec.object_version_number;
1136 END IF;
1137
1138 -- last_update_login
1139 IF p_prod_template_rec.last_update_login = FND_API.g_miss_num THEN
1140 x_complete_rec.last_update_login := l_prod_template_rec.last_update_login;
1141 END IF;
1142
1143 -- security_group_id
1144 IF p_prod_template_rec.security_group_id = FND_API.g_miss_num THEN
1145 x_complete_rec.security_group_id := l_prod_template_rec.security_group_id;
1146 END IF;
1147
1148 -- product_service_flag
1149 IF p_prod_template_rec.product_service_flag = FND_API.g_miss_char THEN
1150 x_complete_rec.product_service_flag := l_prod_template_rec.product_service_flag;
1151 END IF;
1152 -- Note: Developers need to modify the procedure
1153 -- to handle any business specific requirements.
1154 END Complete_prod_template_Rec;
1155 PROCEDURE Validate_prod_template(
1156 p_api_version_number IN NUMBER,
1157 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1161 x_return_status OUT NOCOPY VARCHAR2,
1158 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1159 p_prod_template_rec IN prod_template_rec_type,
1160 p_validation_mode IN VARCHAR2,
1162 x_msg_count OUT NOCOPY NUMBER,
1163 x_msg_data OUT NOCOPY VARCHAR2
1164 )
1165 IS
1166 L_API_NAME CONSTANT VARCHAR2(30) := 'Validate_Prod_Template';
1167 L_API_VERSION_NUMBER CONSTANT NUMBER := 1.0;
1168 l_object_version_number NUMBER;
1169 l_prod_template_rec AMS_Prod_Template_PVT.prod_template_rec_type;
1170
1171 BEGIN
1172 -- Standard Start of API savepoint
1173 SAVEPOINT VALIDATE_Prod_Template_;
1174
1175 -- Standard call to check for call compatibility.
1176 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1177 p_api_version_number,
1178 l_api_name,
1179 G_PKG_NAME)
1180 THEN
1181 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1182 END IF;
1183
1184 -- Initialize message list if p_init_msg_list is set to TRUE.
1185 IF FND_API.to_Boolean( p_init_msg_list )
1186 THEN
1187 FND_MSG_PUB.initialize;
1188 END IF;
1189 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1190 Check_prod_template_Items(
1191 p_prod_template_rec => p_prod_template_rec,
1192 p_validation_mode => p_validation_mode,
1193 x_return_status => x_return_status
1194 );
1195
1196 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1197 RAISE FND_API.G_EXC_ERROR;
1198 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1199 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1200 END IF;
1201 END IF;
1202
1203 Complete_prod_template_Rec(
1204 p_prod_template_rec => p_prod_template_rec,
1205 x_complete_rec => l_prod_template_rec
1206 );
1207
1208 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
1209 Validate_prod_template_Rec(
1210 p_api_version_number => 1.0,
1211 p_init_msg_list => FND_API.G_FALSE,
1212 x_return_status => x_return_status,
1213 x_msg_count => x_msg_count,
1214 x_msg_data => x_msg_data,
1215 p_prod_template_rec => l_prod_template_rec);
1216
1217 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1218 RAISE FND_API.G_EXC_ERROR;
1219 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1220 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1221 END IF;
1222 END IF;
1223
1224
1225 -- Debug Message
1226 IF (AMS_DEBUG_HIGH_ON) THEN
1227
1228 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'start');
1229 END IF;
1230
1231
1232 -- Initialize API return status to SUCCESS
1233 x_return_status := FND_API.G_RET_STS_SUCCESS;
1234
1235
1236 -- Debug Message
1237 IF (AMS_DEBUG_HIGH_ON) THEN
1238
1239 AMS_UTILITY_PVT.debug_message('Private API: ' || l_api_name || 'end');
1240 END IF;
1241
1242 -- Standard call to get message count and if count is 1, get message info.
1243 FND_MSG_PUB.Count_And_Get
1244 (p_count => x_msg_count,
1245 p_data => x_msg_data
1246 );
1247 EXCEPTION
1248
1249 WHEN AMS_Utility_PVT.resource_locked THEN
1250 x_return_status := FND_API.g_ret_sts_error;
1251 AMS_Utility_PVT.Error_Message(p_message_name => 'AMS_API_RESOURCE_LOCKED');
1252
1253 WHEN FND_API.G_EXC_ERROR THEN
1254 ROLLBACK TO VALIDATE_Prod_Template_;
1255 x_return_status := FND_API.G_RET_STS_ERROR;
1256 -- Standard call to get message count and if count=1, get the message
1257 FND_MSG_PUB.Count_And_Get (
1258 p_encoded => FND_API.G_FALSE,
1259 p_count => x_msg_count,
1260 p_data => x_msg_data
1261 );
1262
1263 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1264 ROLLBACK TO VALIDATE_Prod_Template_;
1265 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1266 -- Standard call to get message count and if count=1, get the message
1267 FND_MSG_PUB.Count_And_Get (
1268 p_encoded => FND_API.G_FALSE,
1269 p_count => x_msg_count,
1270 p_data => x_msg_data
1271 );
1272
1273 WHEN OTHERS THEN
1274 ROLLBACK TO VALIDATE_Prod_Template_;
1275 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1276 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1277 THEN
1278 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1279 END IF;
1280 -- Standard call to get message count and if count=1, get the message
1281 FND_MSG_PUB.Count_And_Get (
1282 p_encoded => FND_API.G_FALSE,
1283 p_count => x_msg_count,
1284 p_data => x_msg_data
1285 );
1286 End Validate_Prod_Template;
1287
1288
1289 PROCEDURE Validate_prod_template_rec(
1290 p_api_version_number IN NUMBER,
1291 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1292 x_return_status OUT NOCOPY VARCHAR2,
1293 x_msg_count OUT NOCOPY NUMBER,
1294 x_msg_data OUT NOCOPY VARCHAR2,
1295 p_prod_template_rec IN prod_template_rec_type
1296 )
1297 IS
1298 BEGIN
1299 -- Initialize message list if p_init_msg_list is set to TRUE.
1300 IF FND_API.to_Boolean( p_init_msg_list )
1301 THEN
1302 FND_MSG_PUB.initialize;
1303 END IF;
1304
1305 -- Initialize API return status to SUCCESS
1306 x_return_status := FND_API.G_RET_STS_SUCCESS;
1307
1308 -- Hint: Validate data
1309 -- If data not valid
1310 -- THEN
1311 -- x_return_status := FND_API.G_RET_STS_ERROR;
1312
1313 -- Debug Message
1314 IF (AMS_DEBUG_HIGH_ON) THEN
1315
1316 AMS_UTILITY_PVT.debug_message('Private API: Validate_dm_model_rec');
1317 END IF;
1318 -- Standard call to get message count and if count is 1, get message info.
1319 FND_MSG_PUB.Count_And_Get
1320 (p_count => x_msg_count,
1321 p_data => x_msg_data
1322 );
1323 END Validate_prod_template_Rec;
1324
1325 END AMS_Prod_Template_PVT;