[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;