[Home] [Help]
PACKAGE BODY: APPS.AMS_MESSAGES_PVT
Source
1 PACKAGE BODY AMS_Messages_PVT AS
2 /* $Header: amsvmsgb.pls 115.22 2002/11/15 21:02:26 abhola ship $ */
3
4 g_pkg_name CONSTANT VARCHAR2(30) := 'AMS_Messages_PVT';
5
6 /*****************************************************************************/
7 -- Procedure: create_msg
8 --
9 -- History
10 -- 01/04/2000 julou created
11 -- 11/29/2000 musman bug 1519059 fix.Changed the cursor in check_uk_items procedure.
12 -------------------------------------------------------------------------------
13 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
14 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
15 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
16
17 PROCEDURE create_msg
18 (
19 p_api_version IN NUMBER,
20 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
21 p_commit IN VARCHAR2 := FND_API.g_false,
22 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
23
24 x_return_status OUT NOCOPY VARCHAR2,
25 x_msg_count OUT NOCOPY NUMBER,
26 x_msg_data OUT NOCOPY VARCHAR2,
27
28 p_msg_rec IN msg_rec_type,
29 x_msg_id OUT NOCOPY NUMBER
30 )
31 IS
32
33 l_api_version CONSTANT NUMBER := 1.0;
34 l_api_name CONSTANT VARCHAR2(30) := 'create_msg';
35 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
36 l_return_status VARCHAR2(1);
37 l_msg_rec msg_rec_type := p_msg_rec;
38 l_msg_count NUMBER;
39
40 CURSOR c_msg_seq IS
41 SELECT AMS_MESSAGES_B_S.NEXTVAL
42 FROM DUAL;
43
44 CURSOR c_msg_count(msg_id IN NUMBER) IS
45 SELECT COUNT(*)
46 FROM AMS_MESSAGES_VL
47 WHERE message_id = msg_id;
48
49 BEGIN
50 -- initialize
51 SAVEPOINT create_msg;
52
53 IF FND_API.to_boolean(p_init_msg_list) THEN
54 FND_MSG_PUB.initialize;
55 END IF;
56
57
58 IF (AMS_DEBUG_HIGH_ON) THEN
59
60
61
62
63
64 AMS_Utility_PVT.debug_message(l_full_name || ': start');
65
66
67 END IF;
68
69 IF NOT FND_API.compatible_api_call
70 (
71 l_api_version,
72 p_api_version,
73 l_api_name,
74 g_pkg_name
75 )
76 THEN
77 RAISE FND_API.g_exc_unexpected_error;
78 END IF;
79
80 x_return_status := FND_API.g_ret_sts_success;
81
82 -- validate
83 IF (AMS_DEBUG_HIGH_ON) THEN
84
85 AMS_Utility_PVT.debug_message(l_full_name || ': validate');
86 END IF;
87 validate_msg
88 (
89 p_api_version => l_api_version,
90 p_init_msg_list => p_init_msg_list,
91 p_validation_level => p_validation_level,
92 x_return_status => l_return_status,
93 x_msg_count => x_msg_count,
94 x_msg_data => x_msg_data,
95 p_msg_rec => l_msg_rec
96 );
97
98 IF l_return_status = FND_API.g_ret_sts_error THEN
99 RAISE FND_API.g_exc_error;
100 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
101 RAISE FND_API.g_exc_unexpected_error;
102 END IF;
103
104 -- insert
105 IF (AMS_DEBUG_HIGH_ON) THEN
106
107 AMS_Utility_PVT.debug_message(l_full_name || ': insert');
108 END IF;
109
110 IF l_msg_rec.message_id IS NULL THEN
111 LOOP
112 OPEN c_msg_seq;
113 FETCH c_msg_seq INTO l_msg_rec.message_id;
114 CLOSE c_msg_seq;
115
116 OPEN c_msg_count(l_msg_rec.message_id);
117 FETCH c_msg_count INTO l_msg_count;
118 CLOSE c_msg_count;
119
120 EXIT WHEN l_msg_count = 0;
121 END LOOP;
122 END IF;
123
124 /*
125 AMS_ObjectAttribute_PVT.create_object_attributes
126 (
127 p_api_version => p_api_version,
128 p_init_msg_list => p_init_msg_list,
129 p_validation_level => p_validation_level,
130 x_return_status => x_return_status,
131 x_msg_count => x_msg_count,
132 x_msg_data => x_msg_data,
133 p_object_type => 'MESG',
134 p_object_id => l_msg_rec.message_id,
135 p_setup_id => 1000
136 );
137 */
138
139 INSERT INTO AMS_MESSAGES_B
140 (
141 message_id,
142 last_update_date,
143 last_updated_by,
144 creation_date,
145 created_by,
146 last_update_login,
147 object_version_number,
148 date_effective_from,
149 date_effective_to,
150 active_flag,
151 message_type_code,
152 owner_user_id,
153 country_id,
154 custom_setup_id,
155 attribute_category,
156 attribute1,
157 attribute2,
158 attribute3,
159 attribute4,
160 attribute5,
161 attribute6,
162 attribute7,
163 attribute8,
164 attribute9,
165 attribute10,
166 attribute11,
167 attribute12,
168 attribute13,
169 attribute14,
170 attribute15
171 )
172 VALUES
173 (
174 l_msg_rec.message_id,
175 SYSDATE,
176 FND_GLOBAL.user_id,
177 SYSDATE,
178 FND_GLOBAL.user_id,
179 FND_GLOBAL.conc_login_id,
180 1,
181 l_msg_rec.date_effective_from,
182 l_msg_rec.date_effective_to,
183 l_msg_rec.active_flag,
184 l_msg_rec.message_type_code,
185 l_msg_rec.owner_user_id,
186 l_msg_rec.country_id,
187 1000,
188 l_msg_rec.attribute_category,
189 l_msg_rec.attribute1,
190 l_msg_rec.attribute2,
191 l_msg_rec.attribute3,
192 l_msg_rec.attribute4,
193 l_msg_rec.attribute5,
194 l_msg_rec.attribute6,
195 l_msg_rec.attribute7,
196 l_msg_rec.attribute8,
197 l_msg_rec.attribute9,
198 l_msg_rec.attribute10,
199 l_msg_rec.attribute11,
200 l_msg_rec.attribute12,
201 l_msg_rec.attribute13,
202 l_msg_rec.attribute14,
203 l_msg_rec.attribute15
204 );
205
206 INSERT INTO AMS_MESSAGES_TL
207 (
208 message_id,
209 language,
210 last_update_date,
211 last_updated_by,
212 creation_date,
213 created_by,
214 last_update_login,
215 source_lang,
216 message_name,
217 description
218 )
219 SELECT
220 l_msg_rec.message_id,
221 l.language_code,
222 SYSDATE,
223 FND_GLOBAL.user_id,
224 SYSDATE,
225 FND_GLOBAL.user_id,
226 FND_GLOBAL.conc_login_id,
227 USERENV('LANG'),
228 l_msg_rec.message_name,
229 l_msg_rec.description
230 FROM fnd_languages l
231 WHERE l.installed_flag in ('I', 'B')
232 AND NOT EXISTS
233 (
234 SELECT NULL
235 FROM AMS_MESSAGES_TL t
236 WHERE t.message_id = l_msg_rec.message_id
237 AND t.language = l.language_code
238 );
239
240 -- finish
241 x_msg_id := l_msg_rec.message_id;
242
243 IF FND_API.to_boolean(p_commit) THEN
244 COMMIT;
245 END IF;
246
247 FND_MSG_PUB.count_and_get
248 (
249 p_encoded => FND_API.g_false,
250 p_count => x_msg_count,
251 p_data => x_msg_data
252 );
253
254 IF (AMS_DEBUG_HIGH_ON) THEN
255
256
257
258 AMS_Utility_PVT.debug_message(l_full_name||': end');
259
260 END IF;
261
262 EXCEPTION
263
264 WHEN FND_API.g_exc_error THEN
265 ROLLBACK TO create_msg;
266 x_return_status := FND_API.g_ret_sts_error;
267 FND_MSG_PUB.count_and_get
268 (
269 p_encoded => FND_API.g_false,
270 p_count => x_msg_count,
271 p_data => x_msg_data
272 );
273
274 WHEN FND_API.g_exc_unexpected_error THEN
275 ROLLBACK TO create_msg;
276 x_return_status := FND_API.g_ret_sts_unexp_error;
277 FND_MSG_PUB.count_and_get
278 (
279 p_encoded => FND_API.g_false,
280 p_count => x_msg_count,
281 p_data => x_msg_data
282 );
283
284 WHEN OTHERS THEN
285 ROLLBACK TO create_msg;
286 x_return_status :=FND_API.g_ret_sts_unexp_error;
287 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
288 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
289 END IF;
290 FND_MSG_PUB.count_and_get
291 (
292 p_encoded => FND_API.g_false,
293 p_count => x_msg_count,
294 p_data => x_msg_data
295 );
296
297 END create_msg;
298
299
300 /*****************************************************************************/
301 -- Procedure: update_msg
302 --
303 -- History
304 -- 01/04/2000 julou created
305 -------------------------------------------------------------------------------
306 PROCEDURE update_msg
307 (
308 p_api_version IN NUMBER,
309 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
310 p_commit IN VARCHAR2 := FND_API.g_false,
311 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
312
313 x_return_status OUT NOCOPY VARCHAR2,
314 x_msg_count OUT NOCOPY NUMBER,
315 x_msg_data OUT NOCOPY VARCHAR2,
316
317 p_msg_rec IN msg_rec_type
318 )
319 IS
320
321 l_api_version CONSTANT NUMBER := 1.0;
322 l_api_name CONSTANT VARCHAR2(30) := 'update_msg';
323 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
324 l_return_status VARCHAR2(1);
325 l_msg_rec msg_rec_type := p_msg_rec;
326
327 BEGIN
328
329 -- initialize
330 SAVEPOINT update_msg;
331
332 IF FND_API.to_boolean(p_init_msg_list) THEN
333 FND_MSG_PUB.initialize;
334 END IF;
335
336 IF (AMS_DEBUG_HIGH_ON) THEN
337
338
339
340 AMS_Utility_PVT.debug_message(l_full_name || ': start');
341
342 END IF;
343
344 IF NOT FND_API.compatible_api_call
345 (
346 l_api_version,
347 p_api_version,
348 l_api_name,
349 g_pkg_name
350 )
351 THEN
352 RAISE FND_API.g_exc_unexpected_error;
353 END IF;
354
355 x_return_status := FND_API.g_ret_sts_success;
356
357 -- complete record
358 complete_msg_rec
359 (
360 p_msg_rec,
361 l_msg_rec
362 );
363
364 -- validate
365 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
366 IF (AMS_DEBUG_HIGH_ON) THEN
367
368 AMS_Utility_PVT.debug_message(l_full_name || ': validate');
369 END IF;
370
371 check_items
372 (
373 p_validation_mode => JTF_PLSQL_API.g_update,
374 x_return_status => l_return_status,
375 p_msg_rec => l_msg_rec
376 );
377
378 IF l_return_status = FND_API.g_ret_sts_error THEN
379 RAISE FND_API.g_exc_error;
380 ELSIF l_return_status = FND_API.g_ret_sts_unexp_error THEN
381 RAISE FND_API.g_exc_unexpected_error;
382 END IF;
383 END IF;
384 /*
385 -- complete record
386 complete_msg_rec
387 (
388 p_msg_rec,
389 l_msg_rec
390 );
391 */
392 -- record level
393 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
394 IF (AMS_DEBUG_HIGH_ON) THEN
395
396 AMS_Utility_PVT.debug_message(l_full_name||': check record');
397 END IF;
398 check_record
399 (
400 p_msg_rec => p_msg_rec,
401 p_complete_rec => l_msg_rec,
402 x_return_status => l_return_status
403 );
404
405 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
406 RAISE FND_API.g_exc_unexpected_error;
407 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
408 RAISE FND_API.g_exc_error;
409 END IF;
410 END IF;
411
412 -- update
413 IF (AMS_DEBUG_HIGH_ON) THEN
414
415 AMS_Utility_PVT.debug_message(l_full_name||': update');
416 END IF;
417
418 UPDATE AMS_MESSAGES_B SET
419 last_update_date = SYSDATE,
420 last_updated_by = FND_GLOBAL.user_id,
421 last_update_login = FND_GLOBAL.conc_login_id,
422 object_version_number = l_msg_rec.object_version_number + 1,
423 date_effective_from = l_msg_rec.date_effective_from,
424 date_effective_to = l_msg_rec.date_effective_to,
425 active_flag = l_msg_rec.active_flag,
426 message_type_code = l_msg_rec.message_type_code,
427 owner_user_id = l_msg_rec.owner_user_id,
428 attribute_category = l_msg_rec.attribute_category,
429 attribute1 = l_msg_rec.attribute1,
430 attribute2 = l_msg_rec.attribute2,
431 attribute3 = l_msg_rec.attribute3,
432 attribute4 = l_msg_rec.attribute4,
433 attribute5 = l_msg_rec.attribute5,
434 attribute6 = l_msg_rec.attribute6,
435 attribute7 = l_msg_rec.attribute7,
436 attribute8 = l_msg_rec.attribute8,
437 attribute9 = l_msg_rec.attribute9,
438 attribute10 = l_msg_rec.attribute10,
439 attribute11 = l_msg_rec.attribute11,
440 attribute12 = l_msg_rec.attribute12,
441 attribute13 = l_msg_rec.attribute13,
442 attribute14 = l_msg_rec.attribute14,
443 attribute15 = l_msg_rec.attribute15
444 WHERE message_id = l_msg_rec.message_id
445 AND object_version_number = l_msg_rec.object_version_number;
446
447 IF (SQL%NOTFOUND) THEN
448 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
449 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
450 FND_MSG_PUB.add;
451 END IF;
452 RAISE FND_API.g_exc_error;
453 END IF;
454
455 UPDATE AMS_MESSAGES_TL SET
456 last_update_date = SYSDATE,
457 last_updated_by = FND_GLOBAL.user_id,
458 last_update_login = FND_GLOBAL.conc_login_id,
459 source_lang = USERENV('LANG'),
460 message_name = l_msg_rec.message_name,
461 description = l_msg_rec.description
462 WHERE message_id = l_msg_rec.message_id
463 AND USERENV('LANG') IN (language, source_lang);
464
465 IF (SQL%NOTFOUND) THEN
466 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
467 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
468 FND_MSG_PUB.add;
469 END IF;
470 RAISE FND_API.g_exc_error;
471 END IF;
472
473 -- finish
474 IF FND_API.to_boolean(p_commit) THEN
475 COMMIT;
476 END IF;
477
478 FND_MSG_PUB.count_and_get
479 (
480 P_ENCODED => FND_API.g_false,
481 p_count => x_msg_count,
482 p_data => x_msg_data
483 );
484
485 IF (AMS_DEBUG_HIGH_ON) THEN
486
487
488
489 AMS_Utility_PVT.debug_message(l_full_name || ': end');
490
491 END IF;
492
493 EXCEPTION
494
495 WHEN FND_API.g_exc_error THEN
496 ROLLBACK TO update_msg;
497 x_return_status := FND_API.g_ret_sts_error;
498 FND_MSG_PUB.count_and_get
499 (
503 );
500 p_encoded => FND_API.g_false,
501 p_count => x_msg_count,
502 p_data => x_msg_data
504
505 WHEN FND_API.g_exc_unexpected_error THEN
506 ROLLBACK TO update_msg;
507 x_return_status := FND_API.g_ret_sts_unexp_error;
508 FND_MSG_PUB.count_and_get
509 (
510 p_encoded => FND_API.g_false,
511 p_count => x_msg_count,
512 p_data => x_msg_data
513 );
514
515 WHEN OTHERS THEN
516 ROLLBACK TO update_msg;
517 x_return_status :=FND_API.g_ret_sts_unexp_error;
518 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
519 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
520 END IF;
521 FND_MSG_PUB.count_and_get
522 (
523 p_encoded => FND_API.g_false,
524 p_count => x_msg_count,
525 p_data => x_msg_data
526 );
527
528 END update_msg;
529
530
531 /*****************************************************************************/
532 -- Procedure: delete_msg
533 --
534 -- History
535 -- 01/04/2000 julou created
536 -------------------------------------------------------------------------------
537 PROCEDURE delete_msg
538 (
539 p_api_version IN NUMBER,
540 P_init_msg_list IN VARCHAR2 := FND_API.g_false,
541 p_commit IN VARCHAR2 := FND_API.g_false,
542
543 x_return_status OUT NOCOPY VARCHAR2,
544 x_msg_count OUT NOCOPY NUMBER,
545 x_msg_data OUT NOCOPY VARCHAR2,
546
547 p_msg_id IN NUMBER,
548 p_object_version IN NUMBER
549 )
550 IS
551
552 l_api_version CONSTANT NUMBER := 1.0;
553 l_api_name CONSTANT VARCHAR2(30) := 'delete_msg';
554 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
555
556 BEGIN
557 -- initialize
558 SAVEPOINT delete_msg;
559
560 IF (AMS_DEBUG_HIGH_ON) THEN
561
562
563
564 AMS_Utility_PVT.debug_message(l_full_name || ': start');
565
566 END IF;
567
568 IF FND_API.to_boolean(p_init_msg_list) THEN
569 FND_MSG_PUB.initialize;
570 END IF;
571
572 IF NOT FND_API.compatible_api_call
573 (
574 l_api_version,
575 p_api_version,
576 l_api_name,
577 g_pkg_name
578 )
579 THEN
580 RAISE FND_API.g_exc_unexpected_error;
581 END IF;
582
583 x_return_status := FND_API.g_ret_sts_success;
584
585 -- delete
586 IF (AMS_DEBUG_HIGH_ON) THEN
587
588 AMS_Utility_PVT.debug_message(l_full_name || ': delete');
589 END IF;
590
591 DELETE FROM AMS_MESSAGES_TL
592 WHERE message_id = p_msg_id;
593
594 IF (SQL%NOTFOUND) THEN
595 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
596 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
597 FND_MSG_PUB.add;
598 END IF;
599 RAISE FND_API.g_exc_error;
600 END IF;
601
602 DELETE FROM AMS_MESSAGES_B
603 WHERE message_id = p_msg_id
604 AND object_version_number = p_object_version;
605
606 IF (SQL%NOTFOUND) THEN
607 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
608 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
609 FND_MSG_PUB.add;
610 END IF;
611 RAISE FND_API.g_exc_error;
612 END IF;
613
614 -- finish
615 IF FND_API.to_boolean(p_commit) THEN
616 COMMIT;
617 END IF;
618
619 FND_MSG_PUB.count_and_get
620 (
621 P_ENCODED => FND_API.g_false,
622 p_count => x_msg_count,
623 p_data => x_msg_data
624 );
625
626 IF (AMS_DEBUG_HIGH_ON) THEN
627
628
629
630 AMS_Utility_PVT.debug_message(l_full_name || ': end');
631
632 END IF;
633
634 EXCEPTION
635
636 WHEN FND_API.g_exc_error THEN
637 ROLLBACK TO delete_msg;
638 x_return_status := FND_API.g_ret_sts_error;
639 FND_MSG_PUB.count_and_get
640 (
641 p_encoded => FND_API.g_false,
642 p_count => x_msg_count,
643 p_data => x_msg_data
644 );
645
646 WHEN FND_API.g_exc_unexpected_error THEN
647 ROLLBACK TO delete_msg;
648 x_return_status := FND_API.g_ret_sts_unexp_error;
649 FND_MSG_PUB.count_and_get
650 (
651 p_encoded => FND_API.g_false,
652 p_count => x_msg_count,
653 p_data => x_msg_data
654 );
655
656 WHEN OTHERS THEN
657 ROLLBACK TO delete_msg;
658 x_return_status :=FND_API.g_ret_sts_unexp_error;
659 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
660 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
661 END IF;
662 FND_MSG_PUB.count_and_get
663 (
664 p_encoded => FND_API.g_false,
665 p_count => x_msg_count,
666 p_data => x_msg_data
670
667 );
668
669 END delete_msg;
671
672 /*****************************************************************************/
673 -- Procedure: lock_msg
674 --
675 -- History
676 -- 01/04/2000 julou created
677 -------------------------------------------------------------------------------
678 PROCEDURE lock_msg
679 (
680 p_api_version IN NUMBER,
681 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
682
683 x_return_status OUT NOCOPY VARCHAR2,
684 x_msg_count OUT NOCOPY NUMBER,
685 x_msg_data OUT NOCOPY VARCHAR2,
686
687 p_msg_id IN NUMBER,
688 p_object_version IN NUMBER
689 )
690 IS
691
692 l_api_version CONSTANT NUMBER := 1.0;
693 l_api_name CONSTANT VARCHAR2(30) := 'lock_msg';
694 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
695 l_msg_id NUMBER;
696
697 CURSOR c_msg_b IS
698 SELECT message_id
699 FROM AMS_MESSAGES_B
700 WHERE message_id = p_msg_id
701 AND object_version_number = p_object_version
702 FOR UPDATE OF message_id NOWAIT;
703
704 CURSOR c_msg_tl IS
705 SELECT message_id
706 FROM AMS_MESSAGES_TL
707 WHERE message_id = p_msg_id
708 AND USERENV('LANG') IN (language, source_lang)
709 FOR UPDATE OF message_id NOWAIT;
710
711 BEGIN
712 -- initialize
713 IF (AMS_DEBUG_HIGH_ON) THEN
714
715 AMS_Utility_PVT.debug_message(l_full_name || ': start');
716 END IF;
717
718 IF FND_API.to_boolean(p_init_msg_list) THEN
719 FND_MSG_PUB.initialize;
720 END IF;
721
722 IF NOT FND_API.compatible_api_call
723 (
724 l_api_version,
725 p_api_version,
726 l_api_name,
727 g_pkg_name
728 )
729 THEN
730 RAISE FND_API.g_exc_unexpected_error;
731 END IF;
732
733 x_return_status := FND_API.g_ret_sts_success;
734
735 -- lock
736 IF (AMS_DEBUG_HIGH_ON) THEN
737
738 AMS_Utility_PVT.debug_message(l_full_name || ': lock');
739 END IF;
740
741 OPEN c_msg_b;
742 FETCH c_msg_b INTO l_msg_id;
743 IF (c_msg_b%NOTFOUND) THEN
744 CLOSE c_msg_b;
745 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
746 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
747 FND_MSG_PUB.add;
748 END IF;
749 RAISE FND_API.g_exc_error;
750 END IF;
751 CLOSE c_msg_b;
752
753 OPEN c_msg_tl;
754 FETCH c_msg_tl INTO l_msg_id;
755 IF (c_msg_tl%NOTFOUND) THEN
756 CLOSE c_msg_tl;
757 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
758 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
759 FND_MSG_PUB.add;
760 END IF;
761 RAISE FND_API.g_exc_error;
762 END IF;
763 CLOSE c_msg_tl;
764
765 -- finish
766 FND_MSG_PUB.count_and_get
767 (
768 p_encoded => FND_API.g_false,
769 p_count => x_msg_count,
770 p_data => x_msg_data
771 );
772
773 IF (AMS_DEBUG_HIGH_ON) THEN
774
775
776
777 AMS_Utility_PVT.debug_message(l_full_name || ': end');
778
779 END IF;
780
781 EXCEPTION
782
783 WHEN AMS_Utility_PVT.resource_locked THEN
784 x_return_status := FND_API.g_ret_sts_error;
785 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
786 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
787 FND_MSG_PUB.add;
788 END IF;
789 FND_MSG_PUB.count_and_get
790 (
791 p_encoded => FND_API.g_false,
792 p_count => x_msg_count,
793 p_data => x_msg_data
794 );
795
796 WHEN FND_API.g_exc_error THEN
797 x_return_status := FND_API.g_ret_sts_error;
798 FND_MSG_PUB.count_and_get
799 (
800 p_encoded => FND_API.g_false,
801 p_count => x_msg_count,
802 p_data => x_msg_data
803 );
804
805 WHEN FND_API.g_exc_unexpected_error THEN
806 x_return_status := FND_API.g_ret_sts_unexp_error;
807 FND_MSG_PUB.count_and_get
808 (
809 p_encoded => FND_API.g_false,
810 p_count => x_msg_count,
811 p_data => x_msg_data
812 );
813
814 WHEN OTHERS THEN
815 x_return_status :=FND_API.g_ret_sts_unexp_error;
816 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
817 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
818 END IF;
819 FND_MSG_PUB.count_and_get
820 (
821 p_encoded => FND_API.g_false,
822 p_count => x_msg_count,
823 p_data => x_msg_data
824 );
825
826 END lock_msg;
827
828
829 /*****************************************************************************/
830 -- PROCEDURE
831 -- validate_msg
832 --
833 -- HISTORY
837 (
834 -- 01/04/2000 julou Created.
835 --------------------------------------------------------------------
836 PROCEDURE validate_msg
838 p_api_version IN NUMBER,
839 P_init_msg_list IN VARCHAR2 := FND_API.g_false,
840 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
841
842 x_return_status OUT NOCOPY VARCHAR2,
843 x_msg_count OUT NOCOPY NUMBER,
844 x_msg_data OUT NOCOPY VARCHAR2,
845
846 p_msg_rec IN msg_rec_type
847 )
848 IS
849
850 l_api_version CONSTANT NUMBER := 1.0;
851 l_api_name CONSTANT VARCHAR2(30) := 'validate_msg';
852 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name ||'.'|| l_api_name;
853
854 l_return_status VARCHAR2(1);
855
856 BEGIN
857
858 ----------------------- initialize --------------------
859 IF (AMS_DEBUG_HIGH_ON) THEN
860
861 AMS_Utility_PVT.debug_message(l_full_name||': start');
862 END IF;
863
864 IF NOT FND_API.compatible_api_call
865 (
866 l_api_version,
867 p_api_version,
868 l_api_name,
869 g_pkg_name
870 )
871 THEN
872 RAISE FND_API.g_exc_unexpected_error;
873 END IF;
874
875 x_return_status := FND_API.g_ret_sts_success;
876
877 ---------------------- validate ------------------------
878 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item THEN
879 IF (AMS_DEBUG_HIGH_ON) THEN
880
881 AMS_Utility_PVT.debug_message(l_full_name||': check items');
882 END IF;
883 check_items
884 (
885 p_validation_mode => JTF_PLSQL_API.g_create,
886 x_return_status => l_return_status,
887 p_msg_rec => p_msg_rec
888 );
889
890 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
891 RAISE FND_API.g_exc_unexpected_error;
892 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
893 RAISE FND_API.g_exc_error;
894 END IF;
895 END IF;
896
897 -- record level
898 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record THEN
899 IF (AMS_DEBUG_HIGH_ON) THEN
900
901 AMS_Utility_PVT.debug_message(l_full_name||': check record');
902 END IF;
903 check_record
904 (
905 p_msg_rec => p_msg_rec,
906 p_complete_rec => p_msg_rec,
907 x_return_status => l_return_status
908 );
909
910 IF l_return_status = FND_API.g_ret_sts_unexp_error THEN
911 RAISE FND_API.g_exc_unexpected_error;
912 ELSIF l_return_status = FND_API.g_ret_sts_error THEN
913 RAISE FND_API.g_exc_error;
914 END IF;
915 END IF;
916 -------------------- finish --------------------------
917 FND_MSG_PUB.count_and_get
918 (
919 p_encoded => FND_API.g_false,
920 p_count => x_msg_count,
921 p_data => x_msg_data
922 );
923
924 IF (AMS_DEBUG_HIGH_ON) THEN
925
926
927
928 AMS_Utility_PVT.debug_message(l_full_name ||': end');
929
930 END IF;
931
932 EXCEPTION
933 WHEN FND_API.g_exc_error THEN
934 x_return_status := FND_API.g_ret_sts_error;
935 FND_MSG_PUB.count_and_get
936 (
937 p_encoded => FND_API.g_false,
938 p_count => x_msg_count,
939 p_data => x_msg_data
940 );
941
942 WHEN FND_API.g_exc_unexpected_error THEN
943 x_return_status := FND_API.g_ret_sts_unexp_error ;
944 FND_MSG_PUB.count_and_get
945 (
946 p_encoded => FND_API.g_false,
947 p_count => x_msg_count,
948 p_data => x_msg_data
949 );
950
951 WHEN OTHERS THEN
952 x_return_status := FND_API.g_ret_sts_unexp_error;
953 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_unexp_error) THEN
954 FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
955 END IF;
956
957 FND_MSG_PUB.count_and_get
958 (
959 p_encoded => FND_API.g_false,
960 p_count => x_msg_count,
961 p_data => x_msg_data
962 );
963
964 END validate_msg;
965
966 /*****************************************************************************/
967 -- Procedure: check_items
968 --
969 -- History
970 -- 01/04/2000 julou created
971 -------------------------------------------------------------------------------
972 PROCEDURE check_items
973 (
974 p_validation_mode IN VARCHAR2,
975 x_return_status OUT NOCOPY VARCHAR2,
976 p_msg_rec IN msg_rec_type
977 )
978 IS
979
980 l_api_version CONSTANT NUMBER := 1.0;
981 l_api_name CONSTANT VARCHAR2(30) := 'check_items';
982 l_full_name CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
983
984 BEGIN
985 -- initialize
986 IF (AMS_DEBUG_HIGH_ON) THEN
987
988 AMS_Utility_PVT.debug_message(l_full_name || ': start');
992
989 END IF;
990
991 x_return_status := FND_API.g_ret_sts_success;
993 -- check required items
994 IF (AMS_DEBUG_HIGH_ON) THEN
995
996 AMS_Utility_PVT.debug_message(l_full_name || ': check required items');
997 END IF;
998 check_req_items
999 (
1000 p_validation_mode => p_validation_mode,
1001 p_msg_rec => p_msg_rec,
1002 x_return_status => x_return_status
1003 );
1004
1005 IF x_return_status <> FND_API.g_ret_sts_success THEN
1006 RETURN;
1007 END IF;
1008
1009 -- check unique key items
1010 IF (AMS_DEBUG_HIGH_ON) THEN
1011
1012 AMS_Utility_PVT.debug_message(l_full_name || ': check uk items');
1013 END IF;
1014 check_uk_items
1015 (
1016 p_validation_mode => p_validation_mode,
1017 p_msg_rec => p_msg_rec,
1018 x_return_status => x_return_status
1019 );
1020
1021 IF x_return_status <> FND_API.g_ret_sts_success THEN
1022 RETURN;
1023 END IF;
1024
1025 END check_items;
1026
1027
1028 /*****************************************************************************/
1029 -- Procedure: check_req_items
1030 --
1031 -- History
1032 -- 01/04/2000 julou created
1033 -------------------------------------------------------------------------------
1034 PROCEDURE check_req_items
1035 (
1036 p_validation_mode IN VARCHAR2,
1037 p_msg_rec IN msg_rec_type,
1038 x_return_status OUT NOCOPY VARCHAR2
1039 )
1040 IS
1041
1042 BEGIN
1043
1044 x_return_status := FND_API.g_ret_sts_success;
1045
1046 -- check message_id
1047 IF p_msg_rec.message_id IS NULL
1048 AND p_validation_mode = JTF_PLSQL_API.g_update THEN
1049 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1050 FND_MESSAGE.set_name('AMS', 'AMS_MSG_NO_MSG_ID');
1051 FND_MSG_PUB.add;
1052 END IF;
1053
1054 x_return_status := FND_API.g_ret_sts_error;
1055 RETURN;
1056 END IF;
1057
1058 -- check object_version_number
1059 IF p_msg_rec.object_version_number IS NULL
1060 AND p_validation_mode = JTF_PLSQL_API.g_update
1061 THEN
1062 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1063 FND_MESSAGE.set_name('AMS', 'AMS_NO_OBJ_VER_NUM');
1064 FND_MSG_PUB.add;
1065 END IF;
1066
1067 x_return_status := FND_API.g_ret_sts_error;
1068 RETURN;
1069 END IF;
1070
1071 -- check active_flag
1072 IF p_msg_rec.active_flag IS NULL THEN
1073 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1074 FND_MESSAGE.set_name('AMS', 'AMS_MSG_BAD_ACTIVE_FLAG');
1075 FND_MSG_PUB.add;
1076 END IF;
1077
1078 x_return_status := FND_API.g_ret_sts_error;
1079 RETURN;
1080 END IF;
1081
1082 IF p_msg_rec.active_flag <> 'Y'
1083 AND p_msg_rec.active_flag <> 'N'
1084 AND p_msg_rec.active_flag <> FND_API.g_miss_char
1085 THEN
1086 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1087 FND_MESSAGE.set_name('AMS', 'AMS_MSG_BAD_ACTIVE_FLAG');
1088 FND_MSG_PUB.add;
1089 END IF;
1090
1091 x_return_status := FND_API.g_ret_sts_error;
1092 RETURN;
1093 END IF;
1094
1095 -- check message_name
1096 IF p_msg_rec.message_name IS NULL THEN
1097 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1098 FND_MESSAGE.set_name('AMS', 'AMS_MSG_NO_MSG_NAME');
1099 FND_MSG_PUB.add;
1100 END IF;
1101
1102 x_return_status := FND_API.g_ret_sts_error;
1103 RETURN;
1104 END IF;
1105
1106 END check_req_items;
1107
1108
1109 /*****************************************************************************/
1110 -- Procedure: check_uk_items
1111 --
1112 -- History
1113 -- 01/04/2000 julou created
1114 -------------------------------------------------------------------------------
1115 PROCEDURE check_uk_items
1116 (
1117 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
1118 p_msg_rec IN msg_rec_type,
1119 x_return_status OUT NOCOPY VARCHAR2
1120 )
1121 IS
1122
1123 l_uk_flag VARCHAR2(1);
1124
1125 cursor check_name_with_id(l_msg_id IN NUMBER, l_msg_name IN VARCHAR2) IS
1126 SELECT ''
1127 FROM AMS_MESSAGES_TL
1128 WHERE message_id <> l_msg_id
1129 AND message_name = l_msg_name
1130 AND language = USERENV('LANG');
1131
1132
1133 cursor check_name_without_id(l_msg_name IN VARCHAR2) IS
1134 SELECT ''
1135 FROM AMS_MESSAGES_TL
1136 WHERE message_name = l_msg_name
1137 AND language = USERENV('LANG');
1138 l_dummy VARCHAR2(1);
1139 l_flag VARCHAR2(1);
1140
1141 BEGIN
1142
1143 x_return_status := FND_API.g_ret_sts_success;
1144
1145 -- check PK, if message_id is passed in, must check if it is duplicate
1146 IF p_validation_mode = JTF_PLSQL_API.g_create
1147 AND p_msg_rec.message_id IS NOT NULL
1148 THEN
1149 l_uk_flag := AMS_Utility_PVT.check_uniqueness
1153 );
1150 (
1151 'AMS_MESSAGES_VL',
1152 'message_id = ' || p_msg_rec.message_id
1154 END IF;
1155
1156 IF l_uk_flag = FND_API.g_false THEN
1157 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1158 FND_MESSAGE.set_name('AMS', 'AMS_MSG_DUPLICATE_MSG_ID');
1159 FND_MSG_PUB.add;
1160 END IF;
1161
1162 x_return_status := FND_API.g_ret_sts_error;
1163 RETURN;
1164 END IF;
1165
1166 -- check message_name, language
1167 /********
1168 IF p_msg_rec.message_id IS NOT NULL THEN
1169 l_uk_flag := AMS_Utility_PVT.check_uniqueness
1170 (
1171 'AMS_MESSAGES_TL',
1172 'message_id<> ' || p_msg_rec.message_id
1173 || ' AND message_name = '''
1174 || p_msg_rec.message_name
1175 || ''' AND language = ''' || USERENV('LANG') || ''''
1176 );
1177 ELSE
1178 l_uk_flag := AMS_Utility_PVT.check_uniqueness
1179 (
1180 'AMS_MESSAGES_TL',
1181 'message_name = ''' || p_msg_rec.message_name
1182 ||''' AND language = ''' || USERENV('LANG') || ''''
1183 );
1184 END IF;
1185
1186 IF l_uk_flag = FND_API.g_false THEN
1187 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1188 FND_MESSAGE.set_name('AMS', 'AMS_MSG_DUP_NAME_LANG');
1189 FND_MSG_PUB.add;
1190 END IF;
1191
1192 ***************/
1193 l_flag := 'N';
1194
1195 IF p_msg_rec.message_id IS NOT NULL THEN
1196 OPEN check_name_with_id(p_msg_rec.message_id,p_msg_rec.message_name);
1197 FETCH check_name_with_id INTO l_dummy;
1198 IF (check_name_with_id%FOUND) THEN
1199 l_flag := 'Y';
1200 END IF;
1201 CLOSE check_name_with_id;
1202 ELSE
1203 OPEN check_name_without_id(p_msg_rec.message_name);
1204 FETCH check_name_without_id INTO l_dummy;
1205 if (check_name_without_id%FOUND) then
1206 l_flag := 'Y';
1207 end if;
1208 CLOSE check_name_without_id;
1209
1210 END IF;
1211
1212 IF ( l_flag = 'Y') THEN
1213 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1214 FND_MESSAGE.set_name('AMS', 'AMS_MSG_DUP_NAME_LANG');
1215 FND_MSG_PUB.add;
1216 END IF;
1217 x_return_status := FND_API.g_ret_sts_error;
1218 RETURN;
1219 END IF;
1220
1221 END check_uk_items;
1222
1223
1224 /*****************************************************************************/
1225 -- PROCEDURE
1226 -- check_record
1227 --
1228 -- HISTORY
1229 -- 01/04/2000 julou Created.
1230 -------------------------------------------------------------------------------
1231 PROCEDURE check_record
1232 (
1233 p_msg_rec IN msg_rec_type,
1234 p_complete_rec IN msg_rec_type,
1235 x_return_status OUT NOCOPY VARCHAR2
1236 )
1237 IS
1238
1239 l_date_from DATE;
1240 l_date_to DATE;
1241
1242 BEGIN
1243
1244 x_return_status := FND_API.g_ret_sts_success;
1245
1246 -- check that date_effective_from <= date_effective_to
1247 IF p_complete_rec.date_effective_from <> FND_API.g_miss_date
1248 AND p_complete_rec.date_effective_from IS NOT NULL
1249 AND p_complete_rec.date_effective_to <> FND_API.g_miss_date
1250 AND p_complete_rec.date_effective_to IS NOT NULL
1251 THEN
1252 l_date_from := p_complete_rec.date_effective_from;
1253 l_date_to := p_complete_rec.date_effective_to;
1254 IF l_date_from > l_date_to THEN
1255 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1256 FND_MESSAGE.set_name('AMS', 'AMS_MESG_INVALID_DATES');
1257 FND_MSG_PUB.add;
1258 END IF;
1259
1260 x_return_status := FND_API.g_ret_sts_error;
1261 RETURN;
1262 END IF;
1263 END IF;
1264
1265 END check_record;
1266
1267
1268 /*****************************************************************************/
1269 -- Procedure: complete_rec
1270 --
1271 -- History
1272 -- 01/04/2000 julou created
1273 -------------------------------------------------------------------------------
1274 PROCEDURE complete_msg_rec
1275 (
1276 p_msg_rec IN msg_rec_type,
1277 x_complete_rec OUT NOCOPY msg_rec_type
1278 )
1279 IS
1280
1281 CURSOR c_msg IS
1282 SELECT * FROM AMS_MESSAGES_VL
1283 WHERE message_id = p_msg_rec.message_id;
1284
1285 l_msg_rec c_msg%ROWTYPE;
1286
1287 BEGIN
1288
1289 x_complete_rec := p_msg_rec;
1290
1291 OPEN c_msg;
1292 FETCH c_msg INTO l_msg_rec;
1293 IF (c_msg%NOTFOUND) THEN
1294 CLOSE c_msg;
1295 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1296 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1297 FND_MSG_PUB.add;
1298 END IF;
1299 RAISE FND_API.g_exc_error;
1300 END IF;
1301 CLOSE c_msg;
1302
1303 IF p_msg_rec.date_effective_from = FND_API.g_miss_date THEN
1304 x_complete_rec.date_effective_from := l_msg_rec.date_effective_from;
1305 END IF;
1306
1307 IF p_msg_rec.date_effective_to = FND_API.g_miss_date THEN
1308 x_complete_rec.date_effective_to := l_msg_rec.date_effective_to;
1309 END IF;
1310
1311 IF p_msg_rec.active_flag = FND_API.g_miss_char THEN
1312 x_complete_rec.active_flag := l_msg_rec.active_flag;
1313 END IF;
1314
1315 IF p_msg_rec.message_name = FND_API.g_miss_char THEN
1316 x_complete_rec.message_name := l_msg_rec.message_name;
1317 END IF;
1318
1319 IF p_msg_rec.description = FND_API.g_miss_char THEN
1320 x_complete_rec.description := l_msg_rec.description;
1321 END IF;
1322
1323 IF p_msg_rec.owner_user_id = FND_API.g_miss_num THEN
1324 x_complete_rec.owner_user_id := l_msg_rec.owner_user_id;
1325 END IF;
1326
1327 IF p_msg_rec.message_type_code = FND_API.g_miss_char THEN
1328 x_complete_rec.message_type_code := l_msg_rec.message_type_code;
1329 END IF;
1330
1331 END complete_msg_rec;
1332
1333
1334 /****************************************************************************/
1335 -- Procedure
1336 -- init_rec
1337 --
1338 -- HISTORY
1339 -- 01/04/2000 julou Created.
1340 ------------------------------------------------------------------------------
1341 PROCEDURE init_rec
1342 (
1343 x_msg_rec OUT NOCOPY msg_rec_type
1344 )
1345 IS
1346
1347 BEGIN
1348
1349 x_msg_rec.message_id := FND_API.g_miss_num;
1350 x_msg_rec.country_id := FND_API.g_miss_num;
1351 x_msg_rec.last_update_date := FND_API.g_miss_date;
1352 x_msg_rec.last_updated_by := FND_API.g_miss_num;
1353 x_msg_rec.creation_date := FND_API.g_miss_date;
1354 x_msg_rec.created_by := FND_API.g_miss_num;
1355 x_msg_rec.last_update_login := FND_API.g_miss_num;
1356 x_msg_rec.object_version_number := FND_API.g_miss_num;
1357 x_msg_rec.date_effective_from := FND_API.g_miss_date;
1358 x_msg_rec.date_effective_to := FND_API.g_miss_date;
1359 x_msg_rec.active_flag := 'Y';
1360 x_msg_rec.message_type_code := FND_API.g_miss_char;
1361 x_msg_rec.owner_user_id := FND_API.g_miss_num;
1362 x_msg_rec.message_name := FND_API.g_miss_char;
1363 x_msg_rec.description := FND_API.g_miss_char;
1364
1365 END init_rec;
1366
1367 END AMS_Messages_PVT;