[Home] [Help]
PACKAGE BODY: APPS.PSB_ALLOCRULE_PERCENTS_PVT
Source
1 PACKAGE BODY PSB_ALLOCRULE_PERCENTS_PVT AS
2 /* $Header: PSBVARPB.pls 120.2 2005/07/13 11:23:16 shtripat ship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_ALLOCRULE_PERCENTS_PVT';
5 G_DBUG VARCHAR2(2000);
6
7 /* ----------------------------------------------------------------------- */
8
9 PROCEDURE Insert_Row
10 ( p_api_version IN NUMBER,
11 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
12 p_commit IN VARCHAR2 := FND_API.G_FALSE,
13 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
14 p_return_status OUT NOCOPY VARCHAR2,
15 p_msg_count OUT NOCOPY NUMBER,
16 p_msg_data OUT NOCOPY VARCHAR2,
17 P_ALLOCATION_RULE_PERCENT_ID IN OUT NOCOPY NUMBER,
18 P_ALLOCATION_RULE_ID IN NUMBER,
19 P_PERIOD_NUM IN NUMBER,
20 P_MONTHLY IN NUMBER,
21 P_QUARTERLY IN NUMBER,
22 P_SEMI_ANNUAL IN NUMBER,
23 P_ATTRIBUTE1 IN VARCHAR2,
24 P_ATTRIBUTE2 IN VARCHAR2,
25 P_ATTRIBUTE3 IN VARCHAR2,
26 P_ATTRIBUTE4 IN VARCHAR2,
27 P_ATTRIBUTE5 IN VARCHAR2,
28 P_CONTEXT IN VARCHAR2,
29 P_LAST_UPDATE_DATE IN DATE,
30 P_LAST_UPDATED_BY IN NUMBER,
31 P_LAST_UPDATE_LOGIN IN NUMBER,
32 P_CREATED_BY IN NUMBER,
33 P_CREATION_DATE IN DATE
34 ) IS
35
36 l_api_name CONSTANT VARCHAR2(30) := 'Insert_Row';
37 l_api_version CONSTANT NUMBER := 1.0;
38 l_allocation_rule_percent_id NUMBER ;
39
40
41 CURSOR C IS
42 select PSB_Allocrule_percents_S.NEXTVAL from DUAL ;
43 BEGIN
44
45 -- Standard Start of API savepoint
46
47 SAVEPOINT Insert_Row_Pvt;
48
49 -- Standard call to check for call compatibility.
50
51 if not FND_API.Compatible_API_Call (l_api_version,
52 p_api_version,
53 l_api_name,
54 G_PKG_NAME)
55 then
56 raise FND_API.G_EXC_UNEXPECTED_ERROR;
57 end if;
58
59 -- Initialize message list if p_init_msg_list is set to TRUE.
60
61 if FND_API.to_Boolean (p_init_msg_list) then
62 FND_MSG_PUB.initialize;
63 end if;
64
65 -- Initialize API return status to success
66
67 p_return_status := FND_API.G_RET_STS_SUCCESS;
68
69 -- API body
70 OPEN C;
71
72 FETCH C into l_allocation_rule_percent_id;
73 P_allocation_rule_percent_id := l_allocation_rule_percent_id;
74 CLOSE C;
75
76 INSERT INTO PSB_ALLOCRULE_PERCENTS (
77 allocation_rule_percent_id,
78 allocation_rule_id,
79 number_of_periods,
80 period_num,
81 percent,
82 last_update_date,
83 last_updated_by,
84 last_update_login,
85 created_by,
86 creation_date,
87 attribute1,
88 attribute2,
89 attribute3,
90 attribute4,
91 attribute5,
92 context)
93 VALUES (
94 P_ALLOCATION_RULE_PERCENT_ID,
95 P_ALLOCATION_RULE_ID,
96 12,
97 P_PERIOD_NUM,
98 P_MONTHLY,
99 P_LAST_UPDATE_DATE,
100 P_LAST_UPDATED_BY,
101 P_LAST_UPDATE_LOGIN,
102 P_CREATED_BY,
103 P_CREATION_DATE,
104 P_ATTRIBUTE1,
105 P_ATTRIBUTE2,
106 P_ATTRIBUTE3,
107 P_ATTRIBUTE4,
108 P_ATTRIBUTE5,
109 P_CONTEXT);
110
111 OPEN C;
112
113 FETCH C into l_allocation_rule_percent_id;
114 P_allocation_rule_percent_id := l_allocation_rule_percent_id;
115 CLOSE C;
116
117 INSERT INTO PSB_ALLOCRULE_PERCENTS (
118 allocation_rule_percent_id,
119 allocation_rule_id,
120 number_of_periods,
121 period_num,
122 percent,
123 last_update_date,
124 last_updated_by,
125 last_update_login,
126 created_by,
127 creation_date,
128 attribute1,
129 attribute2,
130 attribute3,
131 attribute4,
132 attribute5,
133 context)
134 VALUES (
135 P_ALLOCATION_RULE_PERCENT_ID,
136 P_ALLOCATION_RULE_ID,
137 4,
138 P_PERIOD_NUM,
139 P_QUARTERLY,
140 P_LAST_UPDATE_DATE,
141 P_LAST_UPDATED_BY,
142 P_LAST_UPDATE_LOGIN,
143 P_CREATED_BY,
144 P_CREATION_DATE,
145 P_ATTRIBUTE1,
146 P_ATTRIBUTE2,
147 P_ATTRIBUTE3,
148 P_ATTRIBUTE4,
149 P_ATTRIBUTE5,
150 P_CONTEXT);
151
152 OPEN C;
153
154 FETCH C into l_allocation_rule_percent_id;
155 P_allocation_rule_percent_id := l_allocation_rule_percent_id;
156 CLOSE C;
157
158 INSERT INTO PSB_ALLOCRULE_PERCENTS (
159 allocation_rule_percent_id,
160 allocation_rule_id,
161 number_of_periods,
162 period_num,
163 percent,
164 last_update_date,
165 last_updated_by,
166 last_update_login,
167 created_by,
168 creation_date,
169 attribute1,
170 attribute2,
171 attribute3,
172 attribute4,
173 attribute5,
174 context)
175 VALUES (
176 P_ALLOCATION_RULE_PERCENT_ID,
177 P_ALLOCATION_RULE_ID,
178 2,
179 P_PERIOD_NUM,
180 P_SEMI_ANNUAL,
181 P_LAST_UPDATE_DATE,
182 P_LAST_UPDATED_BY,
183 P_LAST_UPDATE_LOGIN,
184 P_CREATED_BY,
185 P_CREATION_DATE,
186 P_ATTRIBUTE1,
187 P_ATTRIBUTE2,
188 P_ATTRIBUTE3,
189 P_ATTRIBUTE4,
190 P_ATTRIBUTE5,
191 P_CONTEXT);
192
193
194 -- End of API body.
195
196 -- Standard check of p_commit.
197
198 if FND_API.to_Boolean (p_commit) then
199 commit work;
200 end if;
201
202 -- Standard call to get message count and if count is 1, get message info.
203
204 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
205 p_data => p_msg_data);
206
207 EXCEPTION
208
209 when FND_API.G_EXC_ERROR then
210
211 rollback to Insert_Row_Pvt;
212
213 p_return_status := FND_API.G_RET_STS_ERROR;
214
215 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
216 p_data => p_msg_data);
217
218
219 when FND_API.G_EXC_UNEXPECTED_ERROR then
220
221 rollback to Insert_Row_Pvt;
222
223 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
224
225 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
226 p_data => p_msg_data);
227
228
229 when OTHERS then
230
231 rollback to Insert_Row_Pvt;
232
233 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
234
235 if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
236
237 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
238 l_api_name);
239 end if;
240
241 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
242 p_data => p_msg_data);
243
244 END Insert_Row;
245
246 PROCEDURE Update_Row
247 ( p_api_version IN NUMBER,
248 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
249 p_commit IN VARCHAR2 := FND_API.G_FALSE,
250 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
251 p_return_status OUT NOCOPY VARCHAR2,
252 p_msg_count OUT NOCOPY NUMBER,
253 p_msg_data OUT NOCOPY VARCHAR2,
254 P_ALLOCATION_RULE_ID IN NUMBER,
255 P_PERIOD_NUM IN NUMBER,
256 P_MONTHLY IN NUMBER,
257 P_QUARTERLY IN NUMBER,
258 P_SEMI_ANNUAL IN NUMBER,
259 P_ATTRIBUTE1 IN VARCHAR2,
260 P_ATTRIBUTE2 IN VARCHAR2,
261 P_ATTRIBUTE3 IN VARCHAR2,
262 P_ATTRIBUTE4 IN VARCHAR2,
263 P_ATTRIBUTE5 IN VARCHAR2,
264 P_CONTEXT IN VARCHAR2,
265 P_LAST_UPDATE_DATE IN DATE,
266 P_LAST_UPDATED_BY IN NUMBER,
267 P_LAST_UPDATE_LOGIN IN NUMBER
268 ) IS
269
270 l_api_name CONSTANT VARCHAR2(30) := 'Update_Row';
271 l_api_version CONSTANT NUMBER := 1.0;
272
273 BEGIN
274
275 -- Standard Start of API savepoint
276
277 SAVEPOINT Update_Row_Pvt;
278
279 -- Standard call to check for call compatibility.
280
281 if not FND_API.Compatible_API_Call (l_api_version,
282 p_api_version,
283 l_api_name,
284 G_PKG_NAME)
285 then
286 raise FND_API.G_EXC_UNEXPECTED_ERROR;
287 end if;
288
289 -- Initialize message list if p_init_msg_list is set to TRUE.
290
291 if FND_API.to_Boolean (p_init_msg_list) then
292 FND_MSG_PUB.initialize;
293 end if;
294
295 -- Initialize API return status to success
296
297 p_return_status := FND_API.G_RET_STS_SUCCESS;
298
299 -- API body
300
301 UPDATE PSB_ALLOCRULE_PERCENTS
302 SET
303 percent = P_MONTHLY,
304 last_update_date = P_LAST_UPDATE_DATE,
305 last_updated_by = P_LAST_UPDATED_BY,
306 last_update_login = P_LAST_UPDATE_LOGIN,
307 attribute1 = P_ATTRIBUTE1,
308 attribute2 = P_ATTRIBUTE2,
309 attribute3 = P_ATTRIBUTE3,
310 attribute4 = P_ATTRIBUTE4,
311 attribute5 = P_ATTRIBUTE5,
312 context = P_CONTEXT
313 WHERE allocation_rule_id = P_ALLOCATION_RULE_ID
314 AND number_of_periods = 12
315 AND period_num = P_PERIOD_NUM;
316
317 IF (SQL%NOTFOUND) THEN
318 RAISE NO_DATA_FOUND;
319 END IF;
320
321
322 UPDATE PSB_ALLOCRULE_PERCENTS
323 SET
324 percent = P_QUARTERLY,
325 last_update_date = P_LAST_UPDATE_DATE,
326 last_updated_by = P_LAST_UPDATED_BY,
327 last_update_login = P_LAST_UPDATE_LOGIN,
328 attribute1 = P_ATTRIBUTE1,
329 attribute2 = P_ATTRIBUTE2,
330 attribute3 = P_ATTRIBUTE3,
331 attribute4 = P_ATTRIBUTE4,
332 attribute5 = P_ATTRIBUTE5,
333 context = P_CONTEXT
334 WHERE allocation_rule_id = P_ALLOCATION_RULE_ID
335 AND number_of_periods = 4
336 AND period_num = P_PERIOD_NUM;
337
338 IF (SQL%NOTFOUND) THEN
339 RAISE NO_DATA_FOUND;
340 END IF;
341
342 UPDATE PSB_ALLOCRULE_PERCENTS
343 SET
344 percent = P_SEMI_ANNUAL,
345 last_update_date = P_LAST_UPDATE_DATE,
346 last_updated_by = P_LAST_UPDATED_BY,
347 last_update_login = P_LAST_UPDATE_LOGIN,
348 attribute1 = P_ATTRIBUTE1,
349 attribute2 = P_ATTRIBUTE2,
350 attribute3 = P_ATTRIBUTE3,
351 attribute4 = P_ATTRIBUTE4,
352 attribute5 = P_ATTRIBUTE5,
353 context = P_CONTEXT
354 WHERE allocation_rule_id = P_ALLOCATION_RULE_ID
355 AND number_of_periods = 2
356 AND period_num = P_PERIOD_NUM;
357
358 IF (SQL%NOTFOUND) THEN
359 RAISE NO_DATA_FOUND;
360 END IF;
361
362 -- Standard check of p_commit.
363
364 if FND_API.to_Boolean (p_commit) then
365 commit work;
366 end if;
367
368 -- Standard call to get message count and if count is 1, get message info.
369
370 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
371 p_data => p_msg_data);
372
373 EXCEPTION
374
375 when FND_API.G_EXC_ERROR then
376
377 rollback to Update_Row_Pvt;
378
379 p_return_status := FND_API.G_RET_STS_ERROR;
380
381 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
382 p_data => p_msg_data);
383
384
385 when FND_API.G_EXC_UNEXPECTED_ERROR then
386
387 rollback to Update_Row_Pvt;
388
389 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
390
391 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
392 p_data => p_msg_data);
393
394
395 when OTHERS then
396
397 rollback to Update_Row_Pvt;
398
399 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
400
401 if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
402
403 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
404 l_api_name);
405 end if;
406
407 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
408 p_data => p_msg_data);
409
410 END Update_Row;
411
412 PROCEDURE Delete_Row
413 ( p_api_version IN NUMBER,
414 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
415 p_commit IN VARCHAR2 := FND_API.G_FALSE,
416 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
417 p_return_status OUT NOCOPY VARCHAR2,
418 p_msg_count OUT NOCOPY NUMBER,
419 p_msg_data OUT NOCOPY VARCHAR2,
420 P_ALLOCATION_RULE_ID IN NUMBER,
421 P_PERIOD_NUM IN NUMBER
422 ) IS
423
424 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Row';
425 l_api_version CONSTANT NUMBER := 1.0;
426
427 CURSOR C IS
428 select PSB_Allocrule_percents_S.NEXTVAL from DUAL ;
429 BEGIN
430
431 -- Standard Start of API savepoint
432
433 SAVEPOINT Delete_Row_Pvt;
434
435 -- Standard call to check for call compatibility.
436
437 if not FND_API.Compatible_API_Call (l_api_version,
438 p_api_version,
439 l_api_name,
440 G_PKG_NAME)
441 then
442 raise FND_API.G_EXC_UNEXPECTED_ERROR;
443 end if;
444
445 -- Initialize message list if p_init_msg_list is set to TRUE.
446
447 if FND_API.to_Boolean (p_init_msg_list) then
448 FND_MSG_PUB.initialize;
449 end if;
450
451 -- Initialize API return status to success
452
453 p_return_status := FND_API.G_RET_STS_SUCCESS;
454
455 -- API body
456
457 DELETE FROM PSB_ALLOCRULE_PERCENTS
458 WHERE ALLOCATION_RULE_ID = P_ALLOCATION_RULE_ID
459 AND PERIOD_NUM = P_PERIOD_NUM;
460
461 IF (SQL%NOTFOUND) THEN
462 RAISE NO_DATA_FOUND;
463 END IF;
464
465 -- End of API body.
466
467 -- Standard check of p_commit.
468
469 if FND_API.to_Boolean (p_commit) then
470 commit work;
471 end if;
472
473 -- Standard call to get message count and if count is 1, get message info.
474
475 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
476 p_data => p_msg_data);
477
478 EXCEPTION
479
480 when FND_API.G_EXC_ERROR then
481
482 rollback to Delete_Row_Pvt;
483
484 p_return_status := FND_API.G_RET_STS_ERROR;
485
489
486 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
487 p_data => p_msg_data);
488
490 when FND_API.G_EXC_UNEXPECTED_ERROR then
491
492 rollback to Delete_Row_Pvt;
493
494 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
495
496 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
497 p_data => p_msg_data);
498
499
500 when OTHERS then
501
502 rollback to Delete_Row_Pvt;
503
504 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
505
506 if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
507
508 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
509 l_api_name);
510 end if;
511
512 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
513 p_data => p_msg_data);
514
515 END Delete_Row;
516
517 PROCEDURE Lock_Row
518 ( p_api_version IN NUMBER,
519 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
520 p_commit IN VARCHAR2 := FND_API.G_FALSE,
521 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
522 p_return_status OUT NOCOPY VARCHAR2,
523 p_msg_count OUT NOCOPY NUMBER,
524 p_msg_data OUT NOCOPY VARCHAR2,
525 p_lock_row OUT NOCOPY VARCHAR2,
526 P_ALLOCATION_RULE_ID IN NUMBER,
527 P_PERIOD_NUM IN NUMBER,
528 P_MONTHLY IN NUMBER,
529 P_QUARTERLY IN NUMBER,
530 P_SEMI_ANNUAL IN NUMBER
531 ) IS
532
533 l_api_name CONSTANT VARCHAR2(30) := 'Lock_Row';
534 l_api_version CONSTANT NUMBER := 1.0;
535 l_lock_row1 number(1);
536 l_lock_row2 number(1);
537 l_lock_row3 number(1);
538
539 Counter NUMBER;
540 CURSOR C IS
541 SELECT ALLOCATION_RULE_ID,
542 PERIOD_NUM,
543 NUMBER_OF_PERIODS,
544 PERCENT
545 FROM PSB_ALLOCRULE_PERCENTS
546 WHERE ALLOCATION_RULE_ID = P_ALLOCATION_RULE_ID
547 AND PERIOD_NUM = P_PERIOD_NUM
548 ORDER BY NUMBER_OF_PERIODS
549 FOR UPDATE OF PERCENT NOWAIT;
550
551 Recinfo C%ROWTYPE;
552 BEGIN
553
554 -- Standard Start of API savepoint
555
556 SAVEPOINT Lock_Row_Pvt;
557
558 -- Standard call to check for call compatibility.
559
560 if not FND_API.Compatible_API_Call (l_api_version,
561 p_api_version,
562 l_api_name,
563 G_PKG_NAME)
564 then
565 raise FND_API.G_EXC_UNEXPECTED_ERROR;
566 end if;
567
568 -- Initialize message list if p_init_msg_list is set to TRUE.
569
570 if FND_API.to_Boolean (p_init_msg_list) then
571 FND_MSG_PUB.initialize;
572 end if;
573
574 -- Initialize API return status to success
575
576 p_return_status := FND_API.G_RET_STS_SUCCESS;
577
578 -- API body
579
580 OPEN C;
581
582
583 FETCH C INTO Recinfo;
584
585 IF (C%NOTFOUND) THEN
586 CLOSE C;
587 FND_MESSAGE.Set_Name('FND','FORM_RECORD_DELETED');
588 FND_MSG_PUB.Add;
589 RAISE FND_API.G_EXC_ERROR;
590 END IF;
591
592 IF ((Recinfo.allocation_rule_id = P_ALLOCATION_RULE_ID) AND
593 ( (Recinfo.period_num = P_PERIOD_NUM) OR
594 ((Recinfo.period_num IS NULL ) AND (P_PERIOD_NUM IS NULL)))
595 AND ( (Recinfo.number_of_periods = 2) OR
596 ((Recinfo.number_of_periods IS NULL ) AND (P_SEMI_ANNUAL IS NULL)))
597 AND ( (Recinfo.percent = P_SEMI_ANNUAL) OR
598 ((Recinfo.percent IS NULL ) AND (P_SEMI_ANNUAL IS NULL)))) THEN
599 l_lock_row1 := 1;
600 ELSE
601 FND_MESSAGE.Set_Name('FND','FORM_RECORD_CHANGED');
602 FND_MSG_PUB.Add;
603 RAISE FND_API.G_EXC_ERROR;
604 END IF;
605
606 FETCH C INTO Recinfo;
607
608 IF (C%NOTFOUND) THEN
609 CLOSE C;
610 FND_MESSAGE.Set_Name('FND','FORM_RECORD_DELETED');
611 FND_MSG_PUB.Add;
612 RAISE FND_API.G_EXC_ERROR;
613 END IF;
614
615 IF ((Recinfo.allocation_rule_id = P_ALLOCATION_RULE_ID) AND
616 ( (Recinfo.period_num = P_PERIOD_NUM) OR
617 ((Recinfo.period_num IS NULL ) AND (P_PERIOD_NUM IS NULL)))
618 AND ( (Recinfo.number_of_periods = 4) OR
619 ((Recinfo.number_of_periods IS NULL ) AND (P_QUARTERLY IS NULL)))
620 AND ( (Recinfo.percent = P_QUARTERLY) OR
621 ((Recinfo.percent IS NULL ) AND (P_QUARTERLY IS NULL)))) THEN
622 l_lock_row2 := 1;
623 ELSE
624 FND_MESSAGE.Set_Name('FND','FORM_RECORD_CHANGED');
625 FND_MSG_PUB.Add;
626 RAISE FND_API.G_EXC_ERROR;
627 END IF;
628
629 FETCH C INTO Recinfo;
630
631 IF (C%NOTFOUND) THEN
632 CLOSE C;
633 FND_MESSAGE.Set_Name('FND','FORM_RECORD_DELETED');
634 FND_MSG_PUB.Add;
635 RAISE FND_API.G_EXC_ERROR;
636 END IF;
637
638 IF ((Recinfo.allocation_rule_id = P_ALLOCATION_RULE_ID) AND
639 ( (Recinfo.period_num = P_PERIOD_NUM) OR
640 ((Recinfo.period_num IS NULL ) AND (P_PERIOD_NUM IS NULL)))
644 ((Recinfo.percent IS NULL ) AND (P_MONTHLY IS NULL)))) THEN
641 AND ( (Recinfo.number_of_periods = 12) OR
642 ((Recinfo.number_of_periods IS NULL ) AND (P_MONTHLY IS NULL)))
643 AND ( (Recinfo.percent = P_MONTHLY) OR
645 l_lock_row3 := 1;
646 ELSE
647 FND_MESSAGE.Set_Name('FND','FORM_RECORD_CHANGED');
648 FND_MSG_PUB.Add;
649 RAISE FND_API.G_EXC_ERROR;
650 END IF;
651
652
653 CLOSE C;
654 if ((l_lock_row1 = 1) AND (l_lock_row2 = 1) AND (l_lock_row3 = 1))then
655 p_lock_row := FND_API.G_TRUE;
656 end if;
657 -- Standard check of p_commit.
658
659 if FND_API.to_Boolean (p_commit) then
660 commit work;
661 end if;
662
663 -- Standard call to get message count and if count is 1, get message info.
664
665 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
666 p_data => p_msg_data);
667
668 EXCEPTION
669
670 when FND_API.G_EXC_ERROR then
671
672 rollback to Lock_Row_Pvt;
673
674 p_return_status := FND_API.G_RET_STS_ERROR;
675
676 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
677 p_data => p_msg_data);
678
679
680 when FND_API.G_EXC_UNEXPECTED_ERROR then
681
682 rollback to Lock_Row_Pvt;
683
684 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
685
686 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
687 p_data => p_msg_data);
688
689
690 when OTHERS then
691
692 rollback to Lock_Row_Pvt;
693
694 p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
695
696 if FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) then
697
698 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME,
699 l_api_name);
700 end if;
701
702 FND_MSG_PUB.Count_And_Get (p_count => p_msg_count,
703 p_data => p_msg_data);
704
705 END Lock_Row;
706
707 -- API body
708 -- Get Debug Information
709
710 -- This Module is used to retrieve Debug Information for this routine. It
711 -- prints Debug Information when run as a Batch Process from SQL*Plus. For
712 -- the Debug Information to be printed on the Screen, the SQL*Plus parameter
713 -- 'Serveroutput' should be set to 'ON'
714
715 FUNCTION get_debug RETURN VARCHAR2 IS
716 BEGIN
717
718 return(g_dbug);
719
720 END get_debug;
721
722 /* ----------------------------------------------------------------------- */
723
724 END PSB_ALLOCRULE_PERCENTS_PVT;