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