[Home] [Help]
PACKAGE BODY: APPS.FUN_RULE_CRIT_PARAMS_PUB
Source
1 PACKAGE BODY FUN_RULE_CRIT_PARAMS_PUB AS
2 /*$Header: FUNXTMRULRCPPUB.pls 120.1 2006/01/10 12:17:36 ammishra noship $ */
3
4
5 ------------------------------------
6 -- declaration of private procedures
7 ------------------------------------
8
9
10 PROCEDURE do_create_rule_crit_param(
11 p_rule_crit_param_rec IN OUT NOCOPY RULE_CRIT_PARAMS_REC_TYPE,
12 x_criteria_param_id OUT NOCOPY NUMBER,
13 x_return_status IN OUT NOCOPY VARCHAR2
14 );
15
16 PROCEDURE do_create_dup_rule_crit_param(
17 p_from_rule_object_id IN NUMBER,
18 p_to_rule_object_id IN NUMBER,
19 x_return_status IN OUT NOCOPY VARCHAR2
20 );
21
22 PROCEDURE do_update_rule_crit_param(
23 p_rule_crit_param_rec IN OUT NOCOPY RULE_CRIT_PARAMS_REC_TYPE,
24 p_object_version_number IN OUT NOCOPY NUMBER,
25 x_return_status IN OUT NOCOPY VARCHAR2
26 );
27
28
29 --------------------------------------
30 -- private procedures and functions
31 --------------------------------------
32
33 /*===========================================================================+
34 | PROCEDURE
35 | do_create_rule_crit_param
36 |
37 | DESCRIPTION
38 | Creates rules criteria Parameter
39 |
40 | SCOPE - PRIVATE
41 |
42 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
43 |
44 | ARGUMENTS : IN:
45 | OUT:
46 | IN/ OUT:
47 | p_rule_crit_param_rec
48 | x_return_status
49 |
50 | RETURNS : NONE
51 |
52 | NOTES
53 |
54 | MODIFICATION HISTORY
55 | 10-Sep-2004 Amulya Mishra Created.
56 +===========================================================================*/
57
58 PROCEDURE do_create_rule_crit_param(
59 p_rule_crit_param_rec IN OUT NOCOPY RULE_CRIT_PARAMS_REC_TYPE,
60 x_criteria_param_id OUT NOCOPY NUMBER,
61 x_return_status IN OUT NOCOPY VARCHAR2
62 ) IS
63
64 l_rowid rowid;
65 BEGIN
66
67 -- call for validations.
68 FUN_RULE_VALIDATE_PKG.validate_rule_criteria_params(
69 'C',
70 p_rule_crit_param_rec,
71 l_rowid,
72 x_return_status
73 );
74
75
76 IF x_return_status = fnd_api.g_ret_sts_error THEN
77 RAISE fnd_api.g_exc_error;
78 END IF;
79
80
81 FUN_RULE_CRIT_PARAMS_PKG.Insert_Row (
82 X_ROWID =>l_rowid,
83 X_CRITERIA_PARAM_ID =>p_rule_crit_param_rec.criteria_param_id,
84 X_RULE_OBJECT_ID =>p_rule_crit_param_rec.rule_object_id,
85 X_PARAM_NAME =>p_rule_crit_param_rec.param_name,
86 X_DATA_TYPE =>p_rule_crit_param_rec.data_type,
87 X_FLEX_VALUE_SET_ID =>p_rule_crit_param_rec.flex_value_set_id,
88 X_CREATED_BY_MODULE =>p_rule_crit_param_rec.created_by_module,
89 X_USER_PARAM_NAME =>p_rule_crit_param_rec.user_param_name,
90 X_DESCRIPTION =>p_rule_crit_param_rec.description,
91 X_TIP_TEXT =>p_rule_crit_param_rec.tiptext
92 );
93 x_criteria_param_id := p_rule_crit_param_rec.criteria_param_id;
94
95 END;
96
97 /*===========================================================================+
98 | PROCEDURE
99 | do_create_dup_rule_crit_param
100 |
101 | DESCRIPTION
102 | Duplicates rules criteria Parameter from one Rule Object to Another.
103 |
104 | SCOPE - PRIVATE
105 |
106 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
107 |
108 | ARGUMENTS : IN:
109 | OUT:
110 | IN/ OUT:
111 | p_rule_crit_param_rec
112 | x_return_status
113 |
114 | RETURNS : NONE
115 |
116 | NOTES
117 |
118 | MODIFICATION HISTORY
119 | 10-Sep-2004 Amulya Mishra Created.
120 +===========================================================================*/
121
122 PROCEDURE do_create_dup_rule_crit_param(
123 p_from_rule_object_id IN NUMBER,
124 p_to_rule_object_id IN NUMBER,
125 x_return_status IN OUT NOCOPY VARCHAR2
126 ) IS
127
128 l_rowid rowid;
129
130 CURSOR RULE_CRIT_PARAMS_VL_CUR
131 IS
132 SELECT
133 B.criteria_param_id,
134 B.rule_object_id,
135 B.param_name,
136 TL.user_param_name,
137 TL.description,
138 tip_text,
139 B.data_type,
140 B.flex_value_set_id,
141 B.created_by_module
142 FROM FUN_RULE_CRIT_PARAMS_B B, FUN_RULE_CRIT_PARAMS_TL TL
143 WHERE B.RULE_OBJECT_ID = p_from_rule_object_id
144 AND B.CRITERIA_PARAM_ID = TL.CRITERIA_PARAM_ID
145 AND TL.LANGUAGE='US';
146
147 l_rule_crit_param_rec RULE_CRIT_PARAMS_REC_TYPE;
148 x_criteria_param_id NUMBER;
149 x_msg_count NUMBER;
150 x_msg_data VARCHAR2(2000);
151 l_count NUMBER := 0;
152 l_rule_object_id NUMBER;
153
154 BEGIN
155
156 -- Validate if p_to_rule_object_id exists or not
157
158 BEGIN
159 SELECT RULE_OBJECT_ID INTO l_rule_object_id
160 FROM FUN_RULE_OBJECTS_B WHERE RULE_OBJECT_ID = p_to_rule_object_id;
161 EXCEPTION
162 WHEN NO_DATA_FOUND THEN
163 fnd_message.set_name('FUN', 'FUN_RULE_INVALID_ROB');
164 fnd_msg_pub.add;
165 x_return_status := fnd_api.g_ret_sts_error;
166 END;
167
168 FOR C_REC IN RULE_CRIT_PARAMS_VL_CUR LOOP
169 l_count := l_count + 1;
170 l_rule_crit_param_rec.criteria_param_id := null;
171 l_rule_crit_param_rec.rule_object_id := p_to_rule_object_id;
172 l_rule_crit_param_rec.param_name := c_rec.param_name;
173 l_rule_crit_param_rec.user_param_name := c_rec.user_param_name;
174 l_rule_crit_param_rec.description := c_rec.description;
175 l_rule_crit_param_rec.tiptext := c_rec.tip_text;
176 l_rule_crit_param_rec.data_type := c_rec.data_type;
177 l_rule_crit_param_rec.flex_value_set_id := c_rec.flex_value_set_id;
178 l_rule_crit_param_rec.created_by_module := c_rec.created_by_module;
179
180
181
182 create_rule_crit_param(
183 p_init_msg_list => FND_API.G_TRUE,
184 p_rule_crit_param_rec => l_rule_crit_param_rec,
185 x_criteria_param_id => x_criteria_param_id,
186 x_return_status => x_return_status,
187 x_msg_count => x_msg_count,
188 x_msg_data => x_msg_data);
189
190
191
192 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
193 RAISE FND_API.G_EXC_ERROR;
194 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
195 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
196 END IF;
197
198
199 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
200
201 -- standard call to get message count and if count is 1, get message info.
202 FND_MSG_PUB.Count_And_Get(
203 p_encoded => FND_API.G_FALSE,
204 p_count => x_msg_count,
205 p_data => x_msg_data);
206 END IF;
207
208 END LOOP;
209
210 IF l_count = 0 THEN
211 RAISE NO_DATA_FOUND;
212 END IF;
213
214 EXCEPTION
215 WHEN NO_DATA_FOUND THEN
216
217 x_return_status := FND_API.G_RET_STS_ERROR;
218 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_INVALID_ROB');
219 FND_MSG_PUB.ADD;
220 FND_MSG_PUB.Count_And_Get(
221 p_encoded => FND_API.G_FALSE,
222 p_count => x_msg_count,
223 p_data => x_msg_data);
224 RAISE FND_API.G_EXC_ERROR;
225
226 END;
227
228 /*===========================================================================+
229 | PROCEDURE
230 | do_update_rule_crit_param
231 |
232 | DESCRIPTION
233 | Updates rules criteria Parameter
234 |
235 | SCOPE - PRIVATE
236 |
237 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
238 |
239 | ARGUMENTS : IN:
240 | OUT:
241 | IN/ OUT:
242 | p_rule_crit_param_rec
243 | p_object_version_number
244 | x_return_status
245 |
246 | RETURNS : NONE
247 |
248 | NOTES
249 |
250 | MODIFICATION HISTORY
251 |
252 +===========================================================================*/
253
254 PROCEDURE do_update_rule_crit_param(
255 p_rule_crit_param_rec IN OUT NOCOPY RULE_CRIT_PARAMS_REC_TYPE,
256 p_object_version_number IN OUT NOCOPY NUMBER,
257 x_return_status IN OUT NOCOPY VARCHAR2
258 ) IS
259
260 l_object_version_number NUMBER;
261 l_rowid ROWID;
262 l_dummy VARCHAR2(1) := 'N';
263
264 BEGIN
265
266 -- check whether record has been updated by another user. If not, lock it.
267 BEGIN
268 SELECT OBJECT_VERSION_NUMBER,
269 ROWID
270 INTO l_object_version_number,
271 l_rowid
272 FROM FUN_RULE_CRIT_PARAMS_B
273 WHERE PARAM_NAME = p_rule_crit_param_rec.param_name
274 AND RULE_OBJECT_ID = p_rule_crit_param_rec.rule_object_id
275 FOR UPDATE OF PARAM_NAME NOWAIT;
276
277 IF NOT ((p_object_version_number is null and l_object_version_number is null)
278 OR (p_object_version_number = l_object_version_number))
279 THEN
280 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_RECORD_CHANGED');
281 FND_MESSAGE.SET_TOKEN('TABLE', 'FUN_RULE_CRIT_PARAMS');
282 FND_MSG_PUB.ADD;
283 RAISE FND_API.G_EXC_ERROR;
284 END IF;
285
286 p_object_version_number := nvl(l_object_version_number, 1) + 1;
287
288 EXCEPTION WHEN NO_DATA_FOUND THEN
289 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_NO_RECORD');
290 FND_MESSAGE.SET_TOKEN('RECORD', 'FUN_RULE_CRIT_PARAMS');
291 FND_MESSAGE.SET_TOKEN('VALUE', 'param_name');
292 FND_MSG_PUB.ADD;
293 RAISE FND_API.G_EXC_ERROR;
294 END;
295
296
297 -- Validate for Rule Object Instance, never ever update the criteria parameters for a rule object instance.
298
299 BEGIN
300 SELECT 'Y' INTO l_dummy
301 FROM FUN_RULE_OBJECTS_B
302 WHERE RULE_OBJECT_ID = p_rule_crit_param_rec.rule_object_id
303 AND INSTANCE_LABEL IS NULL AND ORG_ID IS NULL;
304
305 EXCEPTION WHEN NO_DATA_FOUND THEN
306 l_dummy := 'N';
307 END;
308
309 IF(l_dummy = 'N') THEN
310 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_NO_UPDATE_PARAM');
311 FND_MSG_PUB.ADD;
312 RAISE FND_API.G_EXC_ERROR;
313 END IF;
314
315
316 -- call for validations.
320 l_rowid,
317 FUN_RULE_VALIDATE_PKG.validate_rule_criteria_params(
318 'U',
319 p_rule_crit_param_rec,
321 x_return_status
322 );
323
324 IF x_return_status = fnd_api.g_ret_sts_error THEN
325 RAISE fnd_api.g_exc_error;
326 END IF;
327
328
329 -- call to table-handler.
330 FUN_RULE_CRIT_PARAMS_PKG.UPDATE_ROW (
331 X_CRITERIA_PARAM_ID =>p_rule_crit_param_rec.criteria_param_id,
332 X_RULE_OBJECT_ID =>p_rule_crit_param_rec.rule_object_id,
333 X_PARAM_NAME =>p_rule_crit_param_rec.param_name,
334 X_DATA_TYPE =>p_rule_crit_param_rec.data_type,
335 X_FLEX_VALUE_SET_ID =>p_rule_crit_param_rec.flex_value_set_id,
336 X_CREATED_BY_MODULE =>p_rule_crit_param_rec.created_by_module,
337 X_USER_PARAM_NAME =>p_rule_crit_param_rec.user_param_name,
338 X_DESCRIPTION =>p_rule_crit_param_rec.description,
339 X_TIP_TEXT =>p_rule_crit_param_rec.tiptext
340 );
341
342 END;
343
344 /**
345 * PROCEDURE create_rule_crit_param
346 *
347 * DESCRIPTION
348 * Creates rules criteria objects.
349 *
350 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
351 *
352 *
353 * ARGUMENTS
354 * IN:
355 * p_init_msg_list Initialize message stack if it is set to
356 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
357 * p_rule_crit_param_rec Rules Criteria parameter record
358 * IN/OUT:
359 * OUT:
360 * x_return_status Return status after the call. The status can
361 * be FND_API.G_RET_STS_SUCCESS (success),
362 * FND_API.G_RET_STS_ERROR (error),
363 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
364 * x_msg_count Number of messages in message stack.
365 * x_msg_data Message text if x_msg_count is 1.
366 *
367 * NOTES
368 *
369 * MODIFICATION HISTORY
370 *
371 * 10-Sep-2004 Amulya Mishra Created.
372 *
373 */
374
375 PROCEDURE create_rule_crit_param(
376 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
377 p_rule_crit_param_rec IN RULE_CRIT_PARAMS_REC_TYPE,
378 x_criteria_param_id OUT NOCOPY NUMBER,
379 x_return_status OUT NOCOPY VARCHAR2,
380 x_msg_count OUT NOCOPY NUMBER,
381 x_msg_data OUT NOCOPY VARCHAR2
382 ) IS
383
384 l_rule_crit_param_rec RULE_CRIT_PARAMS_REC_TYPE:= p_rule_crit_param_rec;
385
386 BEGIN
387
388 -- standard start of API savepoint
389 SAVEPOINT create_rule_crit_param;
390
391 -- initialize message list if p_init_msg_list is set to TRUE.
392 IF FND_API.to_Boolean(p_init_msg_list) THEN
393 FND_MSG_PUB.initialize;
394 END IF;
395
396 -- initialize API return status to success.
397 x_return_status := FND_API.G_RET_STS_SUCCESS;
398
399 --Derive the Datatype for ValuSet Based Criteria Param and internally overwrite the same.
400 IF(l_rule_crit_param_rec.flex_value_set_id IS NOT NULL) THEN
401 --Validate if the flex_calue_set_id is Valid or not.
402 IF (NOT FUN_RULE_VALIDATE_PKG.validate_flex_value_set_id (l_rule_crit_param_rec.flex_value_set_id)) THEN
403 fnd_message.set_name('FUN', 'FUN_RULE_INVALID_VALUESET');
404 fnd_msg_pub.add;
405 x_return_status := fnd_api.g_ret_sts_error;
406 ELSE
407 l_rule_crit_param_rec.data_type := FUN_RULE_UTILITY_PKG.getValueSetDataType(l_rule_crit_param_rec.flex_value_set_id);
408 END IF;
409 END IF;
410
411 IF(l_rule_crit_param_rec.data_type IS NULL or
412 l_rule_crit_param_rec.data_type = '') THEN
413 l_rule_crit_param_rec.data_type := 'STRINGS';
414 END IF;
415
416 -- call to business logic.
417 do_create_rule_crit_param(
418 l_rule_crit_param_rec,
419 x_criteria_param_id,
420 x_return_status);
421
422 -- standard call to get message count and if count is 1, get message info.
423 FND_MSG_PUB.Count_And_Get(
424 p_encoded => FND_API.G_FALSE,
425 p_count => x_msg_count,
426 p_data => x_msg_data);
427
428
429
430 EXCEPTION
431 WHEN FND_API.G_EXC_ERROR THEN
432 ROLLBACK TO create_rule_crit_param;
433 x_return_status := FND_API.G_RET_STS_ERROR;
434 FND_MSG_PUB.Count_And_Get(
435 p_encoded => FND_API.G_FALSE,
436 p_count => x_msg_count,
437 p_data => x_msg_data);
438
439 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
440 ROLLBACK TO create_rule_crit_param;
441 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
442 FND_MSG_PUB.Count_And_Get(
443 p_encoded => FND_API.G_FALSE,
444 p_count => x_msg_count,
445 p_data => x_msg_data);
446
447 WHEN OTHERS THEN
448 ROLLBACK TO create_rule_crit_param;
449 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
450 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
451 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
452 FND_MSG_PUB.ADD;
453 FND_MSG_PUB.Count_And_Get(
457 END create_rule_crit_param;
454 p_encoded => FND_API.G_FALSE,
455 p_count => x_msg_count,
456 p_data => x_msg_data);
458
459 /**
460 * Use this routine to create duplicate Criteria Parameters for a Rule Object and
461 * its related information.With this API you can create a record in the
462 * FUN_RULE_CRIT_PARAMS_* table.
463 *
464 * p_init_msg_list Initialize message stack if it is set to FND_API.G_TRUE. Default is FND_API.G_FALSE.
465 * p_from_rule_object_id Rule Object Id from which you need to create parameters.
466 * p_to_rule_object_id Rule Object Id For/To which you need to create parameters from p_from_rule_object_id.
467 * x_return_status Return status after the call.
468 * x_msg_count Number of messages in message stack.
469 * x_msg_data Message text if x_msg_count is 1.
470 *
471 * 27-Dec-2005 Amulya Mishra Created
472 */
473
474 PROCEDURE create_dup_rule_crit_params(
475 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
476 p_from_rule_object_id IN NUMBER,
477 p_to_rule_object_id IN NUMBER,
478 x_return_status OUT NOCOPY VARCHAR2,
479 x_msg_count OUT NOCOPY NUMBER,
480 x_msg_data OUT NOCOPY VARCHAR2
481 )IS
482
483 BEGIN
484 -- standard start of API savepoint
485 SAVEPOINT create_rule_dup_crit_param;
486
487 -- initialize message list if p_init_msg_list is set to TRUE.
488 IF FND_API.to_Boolean(p_init_msg_list) THEN
489 FND_MSG_PUB.initialize;
490 END IF;
491
492 -- initialize API return status to success.
493 x_return_status := FND_API.G_RET_STS_SUCCESS;
494
495 -- call to business logic.
496 do_create_dup_rule_crit_param(
497 p_from_rule_object_id,
498 p_to_rule_object_id,
499 x_return_status);
500
501 -- standard call to get message count and if count is 1, get message info.
502 FND_MSG_PUB.Count_And_Get(
503 p_encoded => FND_API.G_FALSE,
504 p_count => x_msg_count,
505 p_data => x_msg_data);
506
507
508
509 EXCEPTION
510 WHEN FND_API.G_EXC_ERROR THEN
511 ROLLBACK TO create_rule_dup_crit_param;
512 x_return_status := FND_API.G_RET_STS_ERROR;
513 FND_MSG_PUB.Count_And_Get(
514 p_encoded => FND_API.G_FALSE,
515 p_count => x_msg_count,
516 p_data => x_msg_data);
517
518 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
519 ROLLBACK TO create_rule_dup_crit_param;
520 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
521 FND_MSG_PUB.Count_And_Get(
522 p_encoded => FND_API.G_FALSE,
523 p_count => x_msg_count,
524 p_data => x_msg_data);
525
526 WHEN OTHERS THEN
527 ROLLBACK TO create_rule_dup_crit_param;
528 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
529 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
530 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
531 FND_MSG_PUB.ADD;
532 FND_MSG_PUB.Count_And_Get(
533 p_encoded => FND_API.G_FALSE,
534 p_count => x_msg_count,
535 p_data => x_msg_data);
536
537
538 END create_dup_rule_crit_params;
539
540 /**
541 * PROCEDURE update_rule_crit_param
542 *
543 * DESCRIPTION
544 * Updates Rules Criteria parameter.
545 *
546 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
547 *
548 * ARGUMENTS
549 * IN:
550 * p_init_msg_list Initialize message stack if it is set to
551 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
552 * p_rule_crit_param_rec Rules Criteria parameter record.
553 * IN/OUT:
554 * p_object_version_number Used for locking the being updated record.
555 * OUT:
556 * x_return_status Return status after the call. The status can
557 * be FND_API.G_RET_STS_SUCCESS (success),
558 * FND_API.G_RET_STS_ERROR (error),
559 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
560 * x_msg_count Number of messages in message stack.
561 * x_msg_data Message text if x_msg_count is 1.
562 *
563 * NOTES
564 *
565 * MODIFICATION HISTORY
566 *
567 * 10-Sep-2004 Amulya Mishra Created.
568 *
569 */
570
571 PROCEDURE update_rule_crit_param (
572 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
573 p_rule_crit_param_rec IN RULE_CRIT_PARAMS_REC_TYPE,
574 p_object_version_number IN OUT NOCOPY NUMBER,
575 x_return_status OUT NOCOPY VARCHAR2,
576 x_msg_count OUT NOCOPY NUMBER,
577 x_msg_data OUT NOCOPY VARCHAR2
578 ) IS
579
580 l_rule_crit_param_rec RULE_CRIT_PARAMS_REC_TYPE := p_rule_crit_param_rec;
581 l_old_rule_crit_param_rec RULE_CRIT_PARAMS_REC_TYPE;
582
583 BEGIN
584 -- standard start of API savepoint
585 SAVEPOINT update_rule_crit_param;
586
587 -- initialize message list if p_init_msg_list is set to TRUE.
588 IF FND_API.to_Boolean(p_init_msg_list) THEN
589 FND_MSG_PUB.initialize;
593 x_return_status := FND_API.G_RET_STS_SUCCESS;
590 END IF;
591
592 -- initialize API return status to success.
594
595 -- Get old records. Will be used by business event system.
596 get_rule_crit_param_rec (
597 p_rule_object_id => l_rule_crit_param_rec.rule_object_id,
598 p_param_name => l_rule_crit_param_rec.param_name,
599 x_rule_crit_param_rec => l_old_rule_crit_param_rec,
600 x_return_status => x_return_status,
601 x_msg_count => x_msg_count,
602 x_msg_data => x_msg_data );
603
604 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
605 RAISE FND_API.G_EXC_ERROR;
606 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
607 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
608 END IF;
609
610 --Derive the Datatype for ValuSet Based Criteria Param and internally overwrite the same.
611 IF(l_rule_crit_param_rec.flex_value_set_id IS NOT NULL) THEN
612 l_rule_crit_param_rec.data_type := FUN_RULE_UTILITY_PKG.getValueSetDataType(l_rule_crit_param_rec.flex_value_set_id);
613 END IF;
614
615 IF(l_rule_crit_param_rec.data_type IS NULL or
616 l_rule_crit_param_rec.data_type = '') THEN
617 l_rule_crit_param_rec.data_type := 'STRINGS';
618 END IF;
619
620 -- call to business logic.
621 do_update_rule_crit_param(
622 l_rule_crit_param_rec,
623 p_object_version_number,
624 x_return_status);
625
626 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
627
628 -- standard call to get message count and if count is 1, get message info.
629 FND_MSG_PUB.Count_And_Get(
630 p_encoded => FND_API.G_FALSE,
631 p_count => x_msg_count,
632 p_data => x_msg_data);
633 END IF;
634
635
636
637 EXCEPTION
638 WHEN FND_API.G_EXC_ERROR THEN
639 ROLLBACK TO update_rule_crit_param;
640 x_return_status := FND_API.G_RET_STS_ERROR;
641 FND_MSG_PUB.Count_And_Get(
642 p_encoded => FND_API.G_FALSE,
643 p_count => x_msg_count,
644 p_data => x_msg_data);
645
646 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
647 ROLLBACK TO update_rule_crit_param;
648 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
649 FND_MSG_PUB.Count_And_Get(
650 p_encoded => FND_API.G_FALSE,
651 p_count => x_msg_count,
652 p_data => x_msg_data);
653
654 WHEN OTHERS THEN
655 ROLLBACK TO update_rule_crit_param;
656 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
657 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
658 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
659 FND_MSG_PUB.ADD;
660 FND_MSG_PUB.Count_And_Get(
661 p_encoded => FND_API.G_FALSE,
662 p_count => x_msg_count,
663 p_data => x_msg_data);
664 END update_rule_crit_param;
665
666
667 /**
668 * PROCEDURE get_rule_crit_param_rec
669 *
670 * DESCRIPTION
671 * Gets rules criteria Param record.
672 *
673 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
674 * FUN_RULE_CRIT_PARAMS_PKG.Select_Row
675 *
676 * ARGUMENTS
677 * IN:
678 * p_init_msg_list Initialize message stack if it is set to
679 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
680 * p_param_name Rule criteria object name..
681 * IN/OUT:
682 * OUT:
683 * x_rule_crit_param_rec Returned rule criteria param record.
684 * x_return_status Return status after the call. The status can
685 * be FND_API.G_RET_STS_SUCCESS (success),
686 * FND_API.G_RET_STS_ERROR (error),
687 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
688 * x_msg_count Number of messages in message stack.
689 * x_msg_data Message text if x_msg_count is 1.
690 *
691 * NOTES
692 *
693 * MODIFICATION HISTORY
694 *
695 * 10-Sep-2004 Amulya Mishra Created.
696 *
697 */
698
699 PROCEDURE get_rule_crit_param_rec (
700 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
701 p_rule_object_id IN NUMBER,
702 p_param_name IN VARCHAR2,
703 x_rule_crit_param_rec OUT NOCOPY RULE_CRIT_PARAMS_REC_TYPE,
704 x_return_status OUT NOCOPY VARCHAR2,
705 x_msg_count OUT NOCOPY NUMBER,
706 x_msg_data OUT NOCOPY VARCHAR2
707 ) IS
708 cpid number;
709 BEGIN
710
711 --Initialize message list if p_init_msg_list is set to TRUE.
712 IF FND_API.to_Boolean(p_init_msg_list) THEN
713 FND_MSG_PUB.initialize;
714 END IF;
715
716 --Initialize API return status to success.
717 x_return_status := FND_API.G_RET_STS_SUCCESS;
718
719 SELECT cp.criteria_param_id
720 INTO cpid
721 FROM fun_rule_crit_params_b cp
722 where cp.rule_object_id = p_rule_object_id
723 and cp.param_name = p_param_name;
724
725 x_rule_crit_param_rec.criteria_param_id := cpid;
726
727 FUN_RULE_CRIT_PARAMS_PKG.Select_Row (
731 X_USER_PARAM_NAME =>x_rule_crit_param_rec.user_param_name,
728 X_CRITERIA_PARAM_ID =>x_rule_crit_param_rec.criteria_param_id,
729 X_RULE_OBJECT_ID =>x_rule_crit_param_rec.rule_object_id,
730 X_PARAM_NAME =>x_rule_crit_param_rec.param_name,
732 X_DESCRIPTION =>x_rule_crit_param_rec.description,
733 X_TIP_TEXT =>x_rule_crit_param_rec.tiptext,
734 X_DATA_TYPE =>x_rule_crit_param_rec.data_type,
735 X_FLEX_VALUE_SET_ID =>x_rule_crit_param_rec.flex_value_set_id,
736 X_CREATED_BY_MODULE =>x_rule_crit_param_rec.created_by_module
737 );
738
739 --Standard call to get message count and if count is 1, get message info.
740 FND_MSG_PUB.Count_And_Get(
741 p_encoded => FND_API.G_FALSE,
742 p_count => x_msg_count,
743 p_data => x_msg_data );
744
745
746 EXCEPTION
747 WHEN FND_API.G_EXC_ERROR THEN
748 x_return_status := FND_API.G_RET_STS_ERROR;
749
750 FND_MSG_PUB.Count_And_Get(
751 p_encoded => FND_API.G_FALSE,
752 p_count => x_msg_count,
753 p_data => x_msg_data );
754
755 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
756 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
757
758 FND_MSG_PUB.Count_And_Get(
759 p_encoded => FND_API.G_FALSE,
760 p_count => x_msg_count,
761 p_data => x_msg_data );
762
763 WHEN OTHERS THEN
764 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
765
766 FND_MESSAGE.SET_NAME( 'FUN', 'FUN_RULE_API_OTHERS_EXCEP' );
767 FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
768 FND_MSG_PUB.ADD;
769
770 FND_MSG_PUB.Count_And_Get(
771 p_encoded => FND_API.G_FALSE,
772 p_count => x_msg_count,
773 p_data => x_msg_data );
774
775 END get_rule_crit_param_rec;
776
777
778 /**
779 * PROCEDURE delete_rule_crit_param
780 *
781 * DESCRIPTION
782 * Deletes Rule Criteria Params.
783 *
784 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
785 *
786 *
787 * ARGUMENTS
788 * IN:
789 * p_init_msg_list Initialize message stack if it is set to
790 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
791 * p_param_name Object Param Name.
792 * p_rule_object_id Rule Object Id
793 * IN/OUT:
794 * OUT:
795 * x_return_status Return status after the call. The status can
796 * be FND_API.G_RET_STS_SUCCESS (success),
797 * FND_API.G_RET_STS_ERROR (error),
798 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
799 * x_msg_count Number of messages in message stack.
800 * x_msg_data Message text if x_msg_count is 1.
801 *
802 * NOTES
803 *
804 * MODIFICATION HISTORY
805 *
806 * 10-Sep-2004 Amulya Mishra Created.
807 *
808 */
809
810 PROCEDURE delete_rule_crit_param(
811 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
812 p_criteria_param_id IN NUMBER,
813 x_return_status OUT NOCOPY VARCHAR2,
814 x_msg_count OUT NOCOPY NUMBER,
815 x_msg_data OUT NOCOPY VARCHAR2
816 ) IS
817
818
819 BEGIN
820
821 -- standard start of API savepoint
822 SAVEPOINT delete_rule_crit_param;
823
824 -- initialize message list if p_init_msg_list is set to TRUE.
825 IF FND_API.to_Boolean(p_init_msg_list) THEN
826 FND_MSG_PUB.initialize;
827 END IF;
828
829 -- initialize API return status to success.
830 x_return_status := FND_API.G_RET_STS_SUCCESS;
831
832 -- call to table-handler.
833 FUN_RULE_CRIT_PARAMS_PKG.Delete_Row (
834 X_CRITERIA_PARAM_ID =>p_criteria_param_id
835 );
836
837
838 -- standard call to get message count and if count is 1, get message info.
839 FND_MSG_PUB.Count_And_Get(
840 p_encoded => FND_API.G_FALSE,
841 p_count => x_msg_count,
842 p_data => x_msg_data);
843
844
845 EXCEPTION
846 WHEN FND_API.G_EXC_ERROR THEN
847 ROLLBACK TO delete_rule_crit_param;
848 x_return_status := FND_API.G_RET_STS_ERROR;
849 FND_MSG_PUB.Count_And_Get(
850 p_encoded => FND_API.G_FALSE,
851 p_count => x_msg_count,
852 p_data => x_msg_data);
853
854 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
855 ROLLBACK TO delete_rule_crit_param;
856 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
857 FND_MSG_PUB.Count_And_Get(
858 p_encoded => FND_API.G_FALSE,
859 p_count => x_msg_count,
860 p_data => x_msg_data);
861
862 WHEN OTHERS THEN
863 ROLLBACK TO delete_rule_crit_param;
864 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
865 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
866 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
867 FND_MSG_PUB.ADD;
868 FND_MSG_PUB.Count_And_Get(
869 p_encoded => FND_API.G_FALSE,
870 p_count => x_msg_count,
871 p_data => x_msg_data);
872 END delete_rule_crit_param;
873
874 END FUN_RULE_CRIT_PARAMS_PUB;