DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_RULE_GROUP_PVT

Source


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