[Home] [Help]
PACKAGE BODY: APPS.FUN_RICH_MESSAGES_PUB
Source
1 PACKAGE BODY FUN_RICH_MESSAGES_PUB AS
2 /*$Header: FUNXTMRULRTMPUB.pls 120.0 2005/06/20 04:30:08 ammishra noship $ */
3
4
5 ------------------------------------
6 -- declaration of private procedures
7 ------------------------------------
8
9
10 PROCEDURE do_create_rich_messages(
11 p_rich_messages_rec IN OUT NOCOPY RICH_MESSAGES_REC_TYPE,
12 p_message_text IN OUT NOCOPY CLOB,
13 x_message_name OUT NOCOPY VARCHAR2,
14 x_return_status IN OUT NOCOPY VARCHAR2
15 );
16
17 PROCEDURE do_update_rich_messages(
18 p_rich_messages_rec IN OUT NOCOPY RICH_MESSAGES_REC_TYPE,
19 p_message_text IN OUT NOCOPY CLOB,
20 p_object_version_number IN OUT NOCOPY NUMBER,
21 x_return_status IN OUT NOCOPY VARCHAR2
22 );
23
24
25 --------------------------------------
26 -- private procedures and functions
27 --------------------------------------
28
29 /*===========================================================================+
30 | PROCEDURE
31 | do_create_rich_messages
32 |
33 | DESCRIPTION
34 | Creates Rich Text Messages
35 |
36 | SCOPE - PRIVATE
37 |
38 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
39 |
40 | ARGUMENTS : IN:
41 | OUT:
42 | IN/ OUT:
43 | p_rich_messages_rec
44 | x_return_status
45 |
46 | RETURNS : NONE
47 |
48 | NOTES
49 |
50 | MODIFICATION HISTORY
51 | 10-Sep-2004 Amulya Mishra Created.
52 +===========================================================================*/
53
54 PROCEDURE do_create_rich_messages(
55 p_rich_messages_rec IN OUT NOCOPY RICH_MESSAGES_REC_TYPE,
56 p_message_text IN OUT NOCOPY CLOB,
57 x_message_name OUT NOCOPY VARCHAR2,
58 x_return_status IN OUT NOCOPY VARCHAR2
59 ) IS
60
61 l_rowid rowid:= NULL;
62
63
64 BEGIN
65
66
67 -- validate the input record
68 FUN_RULE_VALIDATE_PKG.validate_rich_messages(
69 'C',
70 p_rich_messages_rec,
71 l_rowid,
72 x_return_status
73 );
74
75
76
77 IF x_return_status = fnd_api.g_ret_sts_error THEN
78 RAISE fnd_api.g_exc_error;
79 END IF;
80
81
82
83 FUN_RICH_MESSAGES_PKG.Insert_Row (
84 X_ROWID =>l_rowid,
85 X_APPLICATION_ID =>p_rich_messages_rec.application_id,
86 X_MESSAGE_TEXT =>p_message_text,
87 X_MESSAGE_NAME =>p_rich_messages_rec.MESSAGE_NAME,
88 X_CREATED_BY_MODULE =>p_rich_messages_rec.created_by_module
89 );
90
91
92
93 END;
94
95 /*===========================================================================+
96 | PROCEDURE
97 | do_update_rich_messages
98 |
99 | DESCRIPTION
100 | Updates Rich Text Messages
101 |
102 | SCOPE - PRIVATE
103 |
104 | EXETERNAL PROCEDURES/FUNCTIONS ACCESSED
105 |
106 | ARGUMENTS : IN:
107 | OUT:
108 | IN/ OUT:
109 | p_rich_messages_rec
110 | p_object_version_number
111 | x_return_status
112 |
113 | RETURNS : NONE
114 |
115 | NOTES
116 |
117 | MODIFICATION HISTORY
118 |
119 +===========================================================================*/
120
121 PROCEDURE do_update_rich_messages(
122 p_rich_messages_rec IN OUT NOCOPY RICH_MESSAGES_REC_TYPE,
123 p_message_text IN OUT NOCOPY CLOB,
124 p_object_version_number IN OUT NOCOPY NUMBER,
125 x_return_status IN OUT NOCOPY VARCHAR2
126 ) IS
127
128 l_object_version_number NUMBER;
129 l_rowid ROWID;
130 BEGIN
131
132
133 -- check whether record has been updated by another user. If not, lock it.
134 BEGIN
135 SELECT OBJECT_VERSION_NUMBER,
136 ROWID
137 INTO l_object_version_number,
138 l_rowid
139 FROM FUN_RICH_MESSAGES_B
140 WHERE MESSAGE_NAME = p_rich_messages_rec.message_name
141 AND APPLICATION_ID = p_rich_messages_rec.application_id
142 FOR UPDATE OF MESSAGE_NAME NOWAIT;
143
144
145 IF NOT ((p_object_version_number is null and l_object_version_number is null)
146 OR (p_object_version_number = l_object_version_number))
147 THEN
148
149 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_RECORD_CHANGED');
150 FND_MESSAGE.SET_TOKEN('TABLE', 'FUN_RICH_MESSAGES');
151 FND_MSG_PUB.ADD;
152 RAISE FND_API.G_EXC_ERROR;
153 END IF;
154
155 p_object_version_number := nvl(l_object_version_number, 1) + 1;
156
157 EXCEPTION WHEN NO_DATA_FOUND THEN
158 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_NO_RECORD');
159 FND_MESSAGE.SET_TOKEN('RECORD', 'FUN_RICH_MESSAGES');
160 FND_MESSAGE.SET_TOKEN('VALUE', 'MESSAGE_NAME');
161 FND_MSG_PUB.ADD;
162 RAISE FND_API.G_EXC_ERROR;
163 END;
164
165
166 -- call for validations.
167 FUN_RULE_VALIDATE_PKG.validate_rich_messages(
168 'U',
169 p_rich_messages_rec,
170 l_rowid,
171 x_return_status
172 );
173
174
175 IF x_return_status = fnd_api.g_ret_sts_error THEN
176 RAISE fnd_api.g_exc_error;
177 END IF;
178
179 -- call to table-handler.
180 FUN_RICH_MESSAGES_PKG.Update_Row (
181 X_APPLICATION_ID =>p_rich_messages_rec.application_id,
182 X_MESSAGE_TEXT =>p_message_text,
183 X_MESSAGE_NAME =>p_rich_messages_rec.message_name,
184 X_CREATED_BY_MODULE =>p_rich_messages_rec.created_by_module
185 );
186
187 END;
188
189 /**
190 * PROCEDURE create_rich_messages
191 *
192 * DESCRIPTION
193 * Creates Riche Text Messages.
194 *
195 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
196 *
197 *
198 * ARGUMENTS
199 * IN:
200 * p_init_msg_list Initialize message stack if it is set to
201 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
202 * p_rich_messages_rec Rich text Messages record.
203 * IN/OUT:
204 * OUT:
205 * x_return_status Return status after the call. The status can
206 * be FND_API.G_RET_STS_SUCCESS (success),
207 * FND_API.G_RET_STS_ERROR (error),
208 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
209 * x_msg_count Number of messages in message stack.
210 * x_msg_data Message text if x_msg_count is 1.
211 *
212 * NOTES
213 *
214 * MODIFICATION HISTORY
215 *
216 * 10-Sep-2004 Amulya Mishra Created.
217 *
218 */
219
220 PROCEDURE create_rich_messages(
221 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
222 p_rich_messages_rec IN RICH_MESSAGES_REC_TYPE,
223 p_message_text IN CLOB,
224 x_message_name OUT NOCOPY VARCHAR2,
225 x_return_status OUT NOCOPY VARCHAR2,
226 x_msg_count OUT NOCOPY NUMBER,
227 x_msg_data OUT NOCOPY VARCHAR2
228 ) IS
229
230 l_rich_messages_rec RICH_MESSAGES_REC_TYPE:= p_rich_messages_rec;
231 l_message_text CLOB := p_message_text;
232
233 BEGIN
234
235 -- standard start of API savepoint
236 SAVEPOINT create_rich_messages;
237
238 -- initialize message list if p_init_msg_list is set to TRUE.
239 IF FND_API.to_Boolean(p_init_msg_list) THEN
240 FND_MSG_PUB.initialize;
241 END IF;
242
243 -- initialize API return status to success.
244 x_return_status := FND_API.G_RET_STS_SUCCESS;
245
246
247
248 -- call to business logic.
249 do_create_rich_messages(
250 l_rich_messages_rec,
251 l_rich_messages_rec.message_name,
252 l_message_text,
253 x_return_status);
254
255
256 -- standard call to get message count and if count is 1, get message info.
257 FND_MSG_PUB.Count_And_Get(
258 p_encoded => FND_API.G_FALSE,
259 p_count => x_msg_count,
260 p_data => x_msg_data);
261
262
263 EXCEPTION
264 WHEN FND_API.G_EXC_ERROR THEN
265 ROLLBACK TO create_rich_messages;
266 x_return_status := FND_API.G_RET_STS_ERROR;
267 FND_MSG_PUB.Count_And_Get(
268 p_encoded => FND_API.G_FALSE,
269 p_count => x_msg_count,
270 p_data => x_msg_data);
271
272 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
273 ROLLBACK TO create_rich_messages;
274 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
275 FND_MSG_PUB.Count_And_Get(
276 p_encoded => FND_API.G_FALSE,
277 p_count => x_msg_count,
278 p_data => x_msg_data);
279
280 WHEN OTHERS THEN
281 ROLLBACK TO create_rich_messages;
282 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
283 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
284 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
285 FND_MSG_PUB.ADD;
286 FND_MSG_PUB.Count_And_Get(
287 p_encoded => FND_API.G_FALSE,
288 p_count => x_msg_count,
289 p_data => x_msg_data);
290 END create_rich_messages;
291
292 /**
293 * PROCEDURE update_rich_messages
294 *
295 * DESCRIPTION
296 * Updates Rich Text Messages
297 *
298 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
299 *
300 * ARGUMENTS
301 * IN:
302 * p_init_msg_list Initialize message stack if it is set to
303 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
304 * p_rich_messages_rec Rich Text Message record.
305 * IN/OUT:
306 * p_object_version_number Used for locking the being updated record.
307 * OUT:
308 * x_return_status Return status after the call. The status can
309 * be FND_API.G_RET_STS_SUCCESS (success),
310 * FND_API.G_RET_STS_ERROR (error),
311 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
312 * x_msg_count Number of messages in message stack.
313 * x_msg_data Message text if x_msg_count is 1.
314 *
315 * NOTES
316 *
317 * MODIFICATION HISTORY
318 *
319 * 10-Sep-2004 Amulya Mishra Created.
320 *
321 */
322
323 PROCEDURE update_rich_messages (
324 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
325 p_rich_messages_rec IN RICH_MESSAGES_REC_TYPE,
326 p_message_text IN CLOB,
327 p_object_version_number IN OUT NOCOPY NUMBER,
328 x_return_status OUT NOCOPY VARCHAR2,
329 x_msg_count OUT NOCOPY NUMBER,
330 x_msg_data OUT NOCOPY VARCHAR2
331 ) IS
332
333 l_rich_messages_rec RICH_MESSAGES_REC_TYPE := p_rich_messages_rec;
334 l_old_rich_messages_rec RICH_MESSAGES_REC_TYPE;
335 l_message_text CLOB := p_message_text;
336
337 BEGIN
338 -- standard start of API savepoint
339 SAVEPOINT update_rich_messages;
340
341 -- initialize message list if p_init_msg_list is set to TRUE.
342 IF FND_API.to_Boolean(p_init_msg_list) THEN
343 FND_MSG_PUB.initialize;
344 END IF;
345
346 -- initialize API return status to success.
347 x_return_status := FND_API.G_RET_STS_SUCCESS;
348
349 -- Get old records. Will be used by business event system.
350 get_rich_messages_rec (
351 p_message_name => l_rich_messages_rec.message_name,
352 p_application_id => l_rich_messages_rec.application_id,
353 x_message_text => l_message_text,
354 x_rich_messages_rec => l_old_rich_messages_rec,
355 x_return_status => x_return_status,
356 x_msg_count => x_msg_count,
357 x_msg_data => x_msg_data );
358
359 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
360 RAISE FND_API.G_EXC_ERROR;
361 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
362 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
363 END IF;
364
365 -- call to business logic.
366 do_update_rich_messages(
367 l_rich_messages_rec,
368 l_message_text,
369 p_object_version_number,
370 x_return_status);
371
372 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
373
374 -- standard call to get message count and if count is 1, get message info.
375 FND_MSG_PUB.Count_And_Get(
376 p_encoded => FND_API.G_FALSE,
377 p_count => x_msg_count,
378 p_data => x_msg_data);
379 END IF;
380
381
382 EXCEPTION
383 WHEN FND_API.G_EXC_ERROR THEN
384 ROLLBACK TO update_rich_messages;
385 x_return_status := FND_API.G_RET_STS_ERROR;
386 FND_MSG_PUB.Count_And_Get(
387 p_encoded => FND_API.G_FALSE,
388 p_count => x_msg_count,
389 p_data => x_msg_data);
390
391 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
392 ROLLBACK TO update_rich_messages;
393 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
394 FND_MSG_PUB.Count_And_Get(
395 p_encoded => FND_API.G_FALSE,
396 p_count => x_msg_count,
397 p_data => x_msg_data);
398
399 WHEN OTHERS THEN
400 ROLLBACK TO update_rich_messages;
401 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
402 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
403 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
404 FND_MSG_PUB.ADD;
405 FND_MSG_PUB.Count_And_Get(
406 p_encoded => FND_API.G_FALSE,
407 p_count => x_msg_count,
408 p_data => x_msg_data);
409 END update_rich_messages;
410
411
412 /**
413 * PROCEDURE get_rich_messages_rec
414 *
415 * DESCRIPTION
416 * Gets Rich Text Message record.
417 *
418 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
419 * FUN_RICH_MESSAGES_PKG.Select_Row
420 *
421 * ARGUMENTS
422 * IN:
423 * p_init_msg_list Initialize message stack if it is set to
424 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
425 * p_message_name Rich Text Message name.
426 * p_application_id Application Id
427 * p_language_code Language code.
428 * IN/OUT:
429 * OUT:
430 * x_rich_messages_rec Returns Rich Text Message record.
431 * x_return_status Return status after the call. The status can
432 * be FND_API.G_RET_STS_SUCCESS (success),
433 * FND_API.G_RET_STS_ERROR (error),
434 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
435 * x_msg_count Number of messages in message stack.
436 * x_msg_data Message text if x_msg_count is 1.
437 *
438 * NOTES
439 *
440 * MODIFICATION HISTORY
441 *
442 * 10-Sep-2004 Amulya Mishra Created.
443 *
444 */
445
446 PROCEDURE get_rich_messages_rec (
447 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
448 p_message_name IN VARCHAR2,
449 p_application_id IN NUMBER,
450 x_message_text OUT NOCOPY CLOB,
451 x_rich_messages_rec OUT NOCOPY RICH_MESSAGES_REC_TYPE,
452 x_return_status OUT NOCOPY VARCHAR2,
453 x_msg_count OUT NOCOPY NUMBER,
454 x_msg_data OUT NOCOPY VARCHAR2
455 ) IS
456
457 BEGIN
458
459 --Initialize message list if p_init_msg_list is set to TRUE.
460 IF FND_API.to_Boolean(p_init_msg_list) THEN
461 FND_MSG_PUB.initialize;
462 END IF;
463
464 --Initialize API return status to success.
465 x_return_status := FND_API.G_RET_STS_SUCCESS;
466
467 --Check whether primary key has been passed in.
468 IF p_message_name IS NULL OR
469 p_message_name = FND_API.G_MISS_CHAR THEN
470 FND_MESSAGE.SET_NAME( 'FUN', 'FUN_RULE_API_MISSING_COLUMN' );
471 FND_MESSAGE.SET_TOKEN( 'COLUMN', 'p_message_name' );
472 FND_MSG_PUB.ADD;
473 RAISE FND_API.G_EXC_ERROR;
474 END IF;
475
476
477 x_rich_messages_rec.message_name := p_message_name;
478 x_rich_messages_rec.application_id := p_application_id;
479
480 FUN_RICH_MESSAGES_PKG.Select_Row (
481 X_APPLICATION_ID =>x_rich_messages_rec.application_id,
482 X_MESSAGE_NAME =>x_rich_messages_rec.message_name,
483 X_MESSAGE_TEXT =>x_message_text,
484 X_CREATED_BY_MODULE =>x_rich_messages_rec.created_by_module
485 );
486
487
488 --Standard call to get message count and if count is 1, get message info.
489 FND_MSG_PUB.Count_And_Get(
490 p_encoded => FND_API.G_FALSE,
491 p_count => x_msg_count,
492 p_data => x_msg_data );
493
494 EXCEPTION
495 WHEN FND_API.G_EXC_ERROR THEN
496 x_return_status := FND_API.G_RET_STS_ERROR;
497
498 FND_MSG_PUB.Count_And_Get(
499 p_encoded => FND_API.G_FALSE,
500 p_count => x_msg_count,
501 p_data => x_msg_data );
502
503 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
504 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
505
506 FND_MSG_PUB.Count_And_Get(
507 p_encoded => FND_API.G_FALSE,
508 p_count => x_msg_count,
509 p_data => x_msg_data );
510
511 WHEN OTHERS THEN
512 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
513
514 FND_MESSAGE.SET_NAME( 'FUN', 'FUN_RULE_API_OTHERS_EXCEP' );
515 FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
516 FND_MSG_PUB.ADD;
517
518 FND_MSG_PUB.Count_And_Get(
519 p_encoded => FND_API.G_FALSE,
520 p_count => x_msg_count,
521 p_data => x_msg_data );
522
523 END get_rich_messages_rec;
524
525 /**
526 * PROCEDURE delete_RICH_MESSAGES
527 *
528 * DESCRIPTION
529 * Deletes Rich Text Message.
530 *
531 * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
532 *
533 *
534 * ARGUMENTS
535 * IN:
536 * p_init_msg_list Initialize message stack if it is set to
537 * FND_API.G_TRUE. Default is FND_API.G_FALSE.
538 * p_message_name Message Name.
539 * p_application_id Application Id
540 * IN/OUT:
541 * OUT:
542 * x_return_status Return status after the call. The status can
543 * be FND_API.G_RET_STS_SUCCESS (success),
544 * FND_API.G_RET_STS_ERROR (error),
545 * FND_API.G_RET_STS_UNEXP_ERROR (unexpected error).
546 * x_msg_count Number of messages in message stack.
547 * x_msg_data Message text if x_msg_count is 1.
548 *
549 * NOTES
550 *
551 * MODIFICATION HISTORY
552 *
553 * 10-Sep-2004 Amulya Mishra Created.
554 *
555 */
556
557 PROCEDURE delete_RICH_MESSAGES(
558 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
559 p_message_name IN VARCHAR2,
560 p_language_code IN VARCHAR2,
561 p_application_id IN NUMBER,
562 x_return_status OUT NOCOPY VARCHAR2,
563 x_msg_count OUT NOCOPY NUMBER,
564 x_msg_data OUT NOCOPY VARCHAR2
565 ) IS
566
567
568 BEGIN
569
570 -- initialize message list if p_init_msg_list is set to TRUE.
571 IF FND_API.to_Boolean(p_init_msg_list) THEN
572 FND_MSG_PUB.initialize;
573 END IF;
574
575 -- initialize API return status to success.
576 x_return_status := FND_API.G_RET_STS_SUCCESS;
577
578 -- call to table-handler.
579 FUN_RICH_MESSAGES_PKG.Delete_Row (
580 X_MESSAGE_NAME =>p_message_name,
581 X_APPLICATION_ID =>p_application_id
582 );
583
584 -- standard call to get message count and if count is 1, get message info.
585 FND_MSG_PUB.Count_And_Get(
586 p_encoded => FND_API.G_FALSE,
587 p_count => x_msg_count,
588 p_data => x_msg_data);
589
590
591
592 EXCEPTION
593 WHEN FND_API.G_EXC_ERROR THEN
594 ROLLBACK TO delete_rich_messages;
595 x_return_status := FND_API.G_RET_STS_ERROR;
596 FND_MSG_PUB.Count_And_Get(
597 p_encoded => FND_API.G_FALSE,
598 p_count => x_msg_count,
599 p_data => x_msg_data);
600
601 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
602 ROLLBACK TO delete_rich_messages;
603 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
604 FND_MSG_PUB.Count_And_Get(
605 p_encoded => FND_API.G_FALSE,
606 p_count => x_msg_count,
607 p_data => x_msg_data);
608
609 WHEN OTHERS THEN
610 ROLLBACK TO delete_rich_messages;
611 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
612 FND_MESSAGE.SET_NAME('FUN', 'FUN_RULE_API_OTHERS_EXCEP');
613 FND_MESSAGE.SET_TOKEN('ERROR' ,SQLERRM);
614 FND_MSG_PUB.ADD;
615 FND_MSG_PUB.Count_And_Get(
616 p_encoded => FND_API.G_FALSE,
617 p_count => x_msg_count,
618 p_data => x_msg_data);
619 END delete_rich_messages;
620
621
622 END FUN_RICH_MESSAGES_PUB;