DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_LIMITS_PVT

Source


1 PACKAGE BODY QP_Limits_PVT AS
2 /* $Header: QPXVLMTB.pls 120.3 2005/10/03 07:28:10 prarasto ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Limits_PVT';
7 
8 --  Limits
9 
10 PROCEDURE Limits
11 (   p_validation_level              IN  NUMBER
12 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
13 ,   p_LIMITS_rec                    IN  QP_Limits_PUB.Limits_Rec_Type
14 ,   p_old_LIMITS_rec                IN  QP_Limits_PUB.Limits_Rec_Type
15 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limits_Rec_Type
16 ,   x_old_LIMITS_rec                OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limits_Rec_Type
17 )
18 IS
19 l_return_status               VARCHAR2(1);
20 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
21 l_LIMITS_rec                  QP_Limits_PUB.Limits_Rec_Type := p_LIMITS_rec;
22 l_old_LIMITS_rec              QP_Limits_PUB.Limits_Rec_Type := p_old_LIMITS_rec;
23 
24 l_p_LIMITS_rec		      QP_Limits_PUB.Limits_Rec_Type; --[prarasto]
25 
26 BEGIN
27 
28     --  Load API control record
29 
30     l_control_rec := QP_GLOBALS.Init_Control_Rec
31     (   p_operation     => l_LIMITS_rec.operation
32     ,   p_control_rec   => p_control_rec
33     );
34 
35     --  Set record return status.
36 
37     l_LIMITS_rec.return_status     := FND_API.G_RET_STS_SUCCESS;
38 
39     --  Prepare record.
40 
41     IF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
42 
43         l_LIMITS_rec.db_flag := FND_API.G_FALSE;
44 
45         --  Set missing old record elements to NULL.
46 
47         l_old_LIMITS_rec :=
48         QP_Limits_Util.Convert_Miss_To_Null (l_old_LIMITS_rec);
49 
50     ELSIF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_UPDATE
51     OR    l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_DELETE
52     THEN
53 
54         l_LIMITS_rec.db_flag := FND_API.G_TRUE;
55 
56         --  Query Old if missing
57 
58         IF  l_old_LIMITS_rec.limit_id = FND_API.G_MISS_NUM
59         THEN
60 
61             l_old_LIMITS_rec := QP_Limits_Util.Query_Row
62             (   p_limit_id                    => l_LIMITS_rec.limit_id
63             );
64 
65         ELSE
66 
67             --  Set missing old record elements to NULL.
68 
69             l_old_LIMITS_rec :=
70             QP_Limits_Util.Convert_Miss_To_Null (l_old_LIMITS_rec);
71 
72         END IF;
73 
74         --  Complete new record from old
75         --dbms_output.put_line('Processing Limits - Calling QP_Limits_Util.Complete_Record ' || l_return_status);
76         oe_debug_pub.add('Processing Limits - Calling QP_Limits_Util.Complete_Record ' || l_return_status);
77 
78         l_LIMITS_rec := QP_Limits_Util.Complete_Record
79         (   p_LIMITS_rec                  => l_LIMITS_rec
80         ,   p_old_LIMITS_rec              => l_old_LIMITS_rec
81         );
82 
83     END IF;
84 
85     --  Attribute level validation.
86 
87     IF  l_control_rec.default_attributes
88     OR  l_control_rec.change_attributes
89     THEN
90 
91         IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
92     --dbms_output.put_line('Processing Limits - Calling QP_Validate_Limits.Attributes' || l_return_status);
93     oe_debug_pub.add('Processing Limits - Calling QP_Validate_Limits.Attributes' || l_return_status);
94             QP_Validate_Limits.Attributes
95             (   x_return_status               => l_return_status
96             ,   p_LIMITS_rec                  => l_LIMITS_rec
97             ,   p_old_LIMITS_rec              => l_old_LIMITS_rec
98             );
99 
100     oe_debug_pub.add('Processing Limits - After QP_Validate_Limits.Attributes ' || l_return_status);
101             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
102                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
103             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
104                 RAISE FND_API.G_EXC_ERROR;
105             END IF;
106 
107         END IF;
108 
109     END IF;
110 
111         --  Clear dependent attributes.
112     --dbms_output.put_line('Processing Limits - Calling QP_Limits_Util.Clear_Dependent_Attr' || l_return_status);
113     oe_debug_pub.add('Processing Limits - Calling QP_Limits_Util.Clear_Dependent_Attr' || l_return_status);
114     IF  l_control_rec.change_attributes THEN
115 
116 	l_p_LIMITS_rec	:= l_LIMITS_rec; --[prarasto]
117 
118         QP_Limits_Util.Clear_Dependent_Attr
119         (   p_LIMITS_rec                  => l_p_LIMITS_rec
120         ,   p_old_LIMITS_rec              => l_old_LIMITS_rec
121         ,   x_LIMITS_rec                  => l_LIMITS_rec
122         );
123 
124     END IF;
125 
126     --  Default missing attributes
127 
128     IF  l_control_rec.default_attributes
129     OR  l_control_rec.change_attributes
130     THEN
131     --dbms_output.put_line('Limit ID Before calling Default Package ' || l_LIMITS_rec.limit_id);
132     oe_debug_pub.add('Limit ID Before calling Default Package ' || l_LIMITS_rec.limit_id);
133     --dbms_output.put_line('Processing Limits - Calling QP_Default_Limits.Attributes' || l_return_status);
134     oe_debug_pub.add('Processing Limits - Calling QP_Default_Limits.Attributes' || l_return_status);
135         IF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
136 
137 	l_p_LIMITS_rec	:= l_LIMITS_rec; --[prarasto]
138 
139            QP_Default_Limits.Attributes
140            (   p_LIMITS_rec                  => l_p_LIMITS_rec
141            ,   x_LIMITS_rec                  => l_LIMITS_rec
142            );
143         END IF;
144     --dbms_output.put_line('Limit ID After calling Default Package ' || l_LIMITS_rec.limit_id);
145     oe_debug_pub.add('Limit ID After calling Default Package ' || l_LIMITS_rec.limit_id);
146 
147     END IF;
148 
149     --  Apply attribute changes
150 
151     IF  l_control_rec.default_attributes
152     OR  l_control_rec.change_attributes
153     THEN
154     --dbms_output.put_line('Processing Limits - Calling QP_Limits_Util.Apply_Attribute_Changes' || l_return_status);
155     oe_debug_pub.add('Processing Limits - Calling QP_Limits_Util.Apply_Attribute_Changes' || l_return_status);
156 
157 	l_p_LIMITS_rec	:= l_LIMITS_rec; --[prarasto]
158 
159         QP_Limits_Util.Apply_Attribute_Changes
160         (   p_LIMITS_rec                  => l_p_LIMITS_rec
161         ,   p_old_LIMITS_rec              => l_old_LIMITS_rec
162         ,   x_LIMITS_rec                  => l_LIMITS_rec
163         );
164 
165     END IF;
166 
167     --  Entity level validation.
168 
169     IF l_control_rec.validate_entity THEN
170 
171         IF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_CREATE  OR
172            l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
173 
174             QP_Validate_Limits.Entity
175             (   x_return_status               => l_return_status
176             ,   p_LIMITS_rec                  => l_LIMITS_rec
177             ,   p_old_LIMITS_rec              => l_old_LIMITS_rec
178             );
179 
180         END IF;
181 
182         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
183             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
184         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
185             RAISE FND_API.G_EXC_ERROR;
186         END IF;
187 
188         IF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
189 
190             QP_Validate_Limits.Entity_Delete
191             (   x_return_status               => l_return_status
192             ,   p_LIMITS_rec                  => l_LIMITS_rec
193             );
194 
195         ELSIF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
196 
197             QP_Validate_Limits.Entity_Update
198             (   x_return_status               => l_return_status
199             ,   p_LIMITS_rec                  => l_LIMITS_rec
200             );
201         END IF;
202 
203 
204         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
205             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
206         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
207             RAISE FND_API.G_EXC_ERROR;
208         END IF;
209 
210     END IF;
211 
212     --  Step 4. Write to DB
213 
214     IF l_control_rec.write_to_db THEN
215     --dbms_output.put_line('Processing Limits - Calling QP_Limits_Util.PRE_WRITE_PROCESS' || l_return_status);
216     oe_debug_pub.add('Processing Limits - Calling QP_Limits_Util.PRE_WRITE_PROCESS' || l_return_status);
217 
218     	l_p_LIMITS_rec  := l_LIMITS_rec; --[prarasto]
219 
220         QP_Limits_Util.PRE_WRITE_PROCESS
221         ( p_LIMITS_rec      => l_p_LIMITS_rec
222         , p_old_LIMITS_rec  => l_old_LIMITS_rec
223         , x_LIMITS_rec      => l_LIMITS_rec
224         );
225     --dbms_output.put_line('Limit ID After calling PRE_WRITE_PROCESS ' || l_LIMITS_rec.limit_id);
226     oe_debug_pub.add('Limit ID After calling PRE_WRITE_PROCESS ' || l_LIMITS_rec.limit_id);
227 
228     END IF;
229 
230     IF l_control_rec.write_to_db THEN
231 
232         IF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
233         --dbms_output.put_line('Processing Limits - QP_Limits_Util.Delete_Row' || l_return_status);
234         oe_debug_pub.add('Processing Limits - QP_Limits_Util.Delete_Row' || l_return_status);
235             QP_Limits_Util.Delete_Row
236             (   p_limit_id                    => l_LIMITS_rec.limit_id
237             );
238 
239         ELSE
240 
241             --  Get Who Information
242 
243             l_LIMITS_rec.last_update_date  := SYSDATE;
244             l_LIMITS_rec.last_updated_by   := FND_GLOBAL.USER_ID;
245             l_LIMITS_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
246 
247             IF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
248             --dbms_output.put_line('Processing Limits - QP_Limits_Util.Update_Row' || l_return_status);
249             oe_debug_pub.add('Processing Limits - QP_Limits_Util.Update_Row' || l_return_status);
250                 QP_Limits_Util.Update_Row (l_LIMITS_rec);
251 
252             ELSIF l_LIMITS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
253 
254                 l_LIMITS_rec.creation_date     := SYSDATE;
255                 l_LIMITS_rec.created_by        := FND_GLOBAL.USER_ID;
256             --dbms_output.put_line('Processing Limits - QP_Limits_Util.Insert_Row' || l_return_status);
257             oe_debug_pub.add('Processing Limits - QP_Limits_Util.Insert_Row' || l_return_status);
258                 QP_Limits_Util.Insert_Row (l_LIMITS_rec);
259 
260             END IF;
261 
262         END IF;
263 
264     END IF;
265 
266     --  Load OUT parameters
267 
268     x_LIMITS_rec                   := l_LIMITS_rec;
269     x_old_LIMITS_rec               := l_old_LIMITS_rec;
270 
271 EXCEPTION
272     WHEN FND_API.G_EXC_ERROR THEN
273    --dbms_output.put_line('Processing Limits - In Exception' || l_return_status);
274     oe_debug_pub.add('Processing Limits - In Exception' || l_return_status);
275 
276         l_LIMITS_rec.return_status     := FND_API.G_RET_STS_ERROR;
277         x_LIMITS_rec                   := l_LIMITS_rec;
278         x_old_LIMITS_rec               := l_old_LIMITS_rec;
279         RAISE;
280 
281     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
282 
283         l_LIMITS_rec.return_status     := FND_API.G_RET_STS_UNEXP_ERROR;
284         x_LIMITS_rec                   := l_LIMITS_rec;
285         x_old_LIMITS_rec               := l_old_LIMITS_rec;
286 
287         RAISE;
288 
289     WHEN OTHERS THEN
290 
291         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
292         THEN
293             OE_MSG_PUB.Add_Exc_Msg
294             (   G_PKG_NAME
295             ,   'Limits'
296             );
297         END IF;
298 
299         l_LIMITS_rec.return_status     := FND_API.G_RET_STS_UNEXP_ERROR;
300         x_LIMITS_rec                   := l_LIMITS_rec;
301         x_old_LIMITS_rec               := l_old_LIMITS_rec;
302 
303         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
304 
305 END Limits;
306 
307 --  Limit_Attrss
308 
309 PROCEDURE Limit_Attrss
310 (   p_validation_level              IN  NUMBER
311 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
312 ,   p_LIMIT_ATTRS_tbl               IN  QP_Limits_PUB.Limit_Attrs_Tbl_Type
313 ,   p_old_LIMIT_ATTRS_tbl           IN  QP_Limits_PUB.Limit_Attrs_Tbl_Type
314 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Attrs_Tbl_Type
315 ,   x_old_LIMIT_ATTRS_tbl           OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Attrs_Tbl_Type
316 )
317 IS
318 l_return_status               VARCHAR2(1);
319 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
320 l_LIMIT_ATTRS_rec             QP_Limits_PUB.Limit_Attrs_Rec_Type;
321 l_LIMIT_ATTRS_tbl             QP_Limits_PUB.Limit_Attrs_Tbl_Type;
322 l_old_LIMIT_ATTRS_rec         QP_Limits_PUB.Limit_Attrs_Rec_Type;
323 l_old_LIMIT_ATTRS_tbl         QP_Limits_PUB.Limit_Attrs_Tbl_Type;
324 
325 l_p_LIMIT_ATTRS_rec	      QP_Limits_PUB.Limit_Attrs_Rec_Type; --[prarasto]
326 BEGIN
327 
328     --  Init local table variables.
329 
330     l_LIMIT_ATTRS_tbl              := p_LIMIT_ATTRS_tbl;
331     l_old_LIMIT_ATTRS_tbl          := p_old_LIMIT_ATTRS_tbl;
332 
333     FOR I IN 1..l_LIMIT_ATTRS_tbl.COUNT LOOP
334     BEGIN
335 
336         --  Load local records.
337 
338         l_LIMIT_ATTRS_rec := l_LIMIT_ATTRS_tbl(I);
339 
340         IF l_old_LIMIT_ATTRS_tbl.EXISTS(I) THEN
341             l_old_LIMIT_ATTRS_rec := l_old_LIMIT_ATTRS_tbl(I);
342         ELSE
343             l_old_LIMIT_ATTRS_rec := QP_Limits_PUB.G_MISS_LIMIT_ATTRS_REC;
344         END IF;
345 
346         --  Load API control record
347 
348         l_control_rec := QP_GLOBALS.Init_Control_Rec
349         (   p_operation     => l_LIMIT_ATTRS_rec.operation
350         ,   p_control_rec   => p_control_rec
351         );
352 
353         --  Set record return status.
354 
355         l_LIMIT_ATTRS_rec.return_status := FND_API.G_RET_STS_SUCCESS;
356 
357         --  Prepare record.
358 
359         IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
360 
361             l_LIMIT_ATTRS_rec.db_flag := FND_API.G_FALSE;
362 
363             --  Set missing old record elements to NULL.
364 
365             l_old_LIMIT_ATTRS_rec :=
366             QP_Limit_Attrs_Util.Convert_Miss_To_Null (l_old_LIMIT_ATTRS_rec);
367 
368         ELSIF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_UPDATE
369         OR    l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_DELETE
370         THEN
371 
372             l_LIMIT_ATTRS_rec.db_flag := FND_API.G_TRUE;
373 
374             --  Query Old if missing
375 
376             IF  l_old_LIMIT_ATTRS_rec.limit_attribute_id = FND_API.G_MISS_NUM
377             THEN
378 
379                 l_old_LIMIT_ATTRS_rec := QP_Limit_Attrs_Util.Query_Row
380                 (   p_limit_attribute_id          => l_LIMIT_ATTRS_rec.limit_attribute_id
381                 );
382 
383             ELSE
384 
385                 --  Set missing old record elements to NULL.
386 
387                 l_old_LIMIT_ATTRS_rec :=
388                 QP_Limit_Attrs_Util.Convert_Miss_To_Null (l_old_LIMIT_ATTRS_rec);
389 
390             END IF;
391 
392             --  Complete new record from old
393 
394             l_LIMIT_ATTRS_rec := QP_Limit_Attrs_Util.Complete_Record
395             (   p_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
396             ,   p_old_LIMIT_ATTRS_rec         => l_old_LIMIT_ATTRS_rec
397             );
398 
399         END IF;
400 
401         --  Attribute level validation.
402 
403         IF  l_control_rec.default_attributes
404         OR  l_control_rec.change_attributes
405         THEN
406 
407             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
408             --dbms_output.put_line('Processing Limit Attributes- Calling QP_Validate_Limit_Attrs.Attributes' || l_return_status);
409             oe_debug_pub.add('Processing Limit Attributes- Calling QP_Validate_Limit_Attrs.Attributes' || l_return_status);
410 
411                 QP_Validate_Limit_Attrs.Attributes
412                 (   x_return_status               => l_return_status
413                 ,   p_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
414                 ,   p_old_LIMIT_ATTRS_rec         => l_old_LIMIT_ATTRS_rec
415                 );
416 
417             --dbms_output.put_line('Processing Limit Attributes- After QP_Validate_Limit_Attrs.Attributes' || l_return_status);
418            oe_debug_pub.add('Processing Limit Attributes- After QP_Validate_Limit_Attrs.Attributes' || l_return_status);
419                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
420                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
421                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
422                     RAISE FND_API.G_EXC_ERROR;
423                 END IF;
424 
425             END IF;
426 
427         END IF;
428 
429             --  Clear dependent attributes.
430 
431         IF  l_control_rec.change_attributes THEN
432 
433 	    l_p_LIMIT_ATTRS_rec	:= l_LIMIT_ATTRS_rec; --[prarasto]
434 
435             QP_Limit_Attrs_Util.Clear_Dependent_Attr
436             (   p_LIMIT_ATTRS_rec             => l_p_LIMIT_ATTRS_rec
437             ,   p_old_LIMIT_ATTRS_rec         => l_old_LIMIT_ATTRS_rec
438             ,   x_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
439             );
440 
441         END IF;
442 
443         --  Default missing attributes
444 
445         IF  l_control_rec.default_attributes
446         OR  l_control_rec.change_attributes
447         THEN
448 
449             IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
450 
451 	       l_p_LIMIT_ATTRS_rec	:= l_LIMIT_ATTRS_rec; --[prarasto]
452 
453                QP_Default_Limit_Attrs.Attributes
454                (   p_LIMIT_ATTRS_rec             => l_p_LIMIT_ATTRS_rec
455                ,   x_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
456                );
457             END IF;
458 
459         END IF;
460 
461         --  Apply attribute changes
462 
463         IF  l_control_rec.default_attributes
464         OR  l_control_rec.change_attributes
465         THEN
466 
467             --dbms_output.put_line('Processing Limit Attributes- Calling QP_Limit_Attrs_Util.Apply_Attribute_Changes' || l_return_status);
468             oe_debug_pub.add('Processing Limit Attributes- Calling QP_Limit_Attrs_Util.Apply_Attribute_Changes' || l_return_status);
469 
470 	    l_p_LIMIT_ATTRS_rec	:= l_LIMIT_ATTRS_rec; --[prarasto]
471 
472             QP_Limit_Attrs_Util.Apply_Attribute_Changes
473             (   p_LIMIT_ATTRS_rec             => l_p_LIMIT_ATTRS_rec
474             ,   p_old_LIMIT_ATTRS_rec         => l_old_LIMIT_ATTRS_rec
475             ,   x_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
476             );
477 
478         END IF;
479 
480         --  Entity level validation.
481 
482         IF l_control_rec.validate_entity THEN
483 
484             IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_CREATE OR
485                l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
486 
487             --dbms_output.put_line('Processing Limit Attributes- Calling QP_Validate_Limit_Attrs.Entity' || l_return_status);
488             oe_debug_pub.add('Processing Limit Attributes- Calling QP_Validate_Limit_Attrs.Entity' || l_return_status);
489                 QP_Validate_Limit_Attrs.Entity
490                 (   x_return_status               => l_return_status
491                 ,   p_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
492                 ,   p_old_LIMIT_ATTRS_rec         => l_old_LIMIT_ATTRS_rec
493                 );
494 
495             END IF;
496 
497             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
498                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
499             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
500                 RAISE FND_API.G_EXC_ERROR;
501             END IF;
502 
503             --dbms_output.put_line('Processing Limit Attributes- After QP_Validate_Limit_Attrs.Entity' || l_return_status);
504             IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
505 
506                 QP_Validate_Limit_Attrs.Entity_Insert
507                 (   x_return_status               => l_return_status
508                 ,   p_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
509                 );
510 
511             ELSIF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
512 
513                 QP_Validate_Limit_Attrs.Entity_Delete
514                 (   x_return_status               => l_return_status
515                 ,   p_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
516                 );
517 
518             ELSIF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
519 
520                 QP_Validate_Limit_Attrs.Entity_Update
521                 (   x_return_status               => l_return_status
522                 ,   p_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
523                 );
524 
525             END IF;
526 
527 
528             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
529                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
530             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
531                 RAISE FND_API.G_EXC_ERROR;
532             END IF;
533 
534         END IF;
535 
536         --  Step 4. Write to DB
537 
538         IF l_control_rec.write_to_db THEN
539 
540             --dbms_output.put_line('Processing Limit Attributes- Calling QP_Limit_Attrs_Util.PRE_WRITE_PROCESS' || l_return_status);
541             oe_debug_pub.add('Processing Limit Attributes- Calling QP_Limit_Attrs_Util.PRE_WRITE_PROCESS' || l_return_status);
542 	    l_p_LIMIT_ATTRS_rec	:= l_LIMIT_ATTRS_rec; --[prarasto]
543 
544             QP_Limit_Attrs_Util.PRE_WRITE_PROCESS
545             ( p_LIMIT_ATTRS_rec      => l_p_LIMIT_ATTRS_rec
546             , p_old_LIMIT_ATTRS_rec  => l_old_LIMIT_ATTRS_rec
547             , x_LIMIT_ATTRS_rec      => l_LIMIT_ATTRS_rec
548             );
549 
550         END IF;
551 
552         IF l_control_rec.write_to_db THEN
553 
554             IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
555 
556                 QP_Limit_Attrs_Util.Delete_Row
557                 (   p_limit_attribute_id          => l_LIMIT_ATTRS_rec.limit_attribute_id
558                 );
559 
560             ELSE
561 
562                 --  Get Who Information
563 
564                 l_LIMIT_ATTRS_rec.last_update_date := SYSDATE;
565                 l_LIMIT_ATTRS_rec.last_updated_by := FND_GLOBAL.USER_ID;
566                 l_LIMIT_ATTRS_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
567 
568                 IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
569 
570                     QP_Limit_Attrs_Util.Update_Row (l_LIMIT_ATTRS_rec);
571 
572                 ELSIF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
573 
574                     l_LIMIT_ATTRS_rec.creation_date := SYSDATE;
575                     l_LIMIT_ATTRS_rec.created_by   := FND_GLOBAL.USER_ID;
576 
577             --dbms_output.put_line('Processing Limit Attributes- Calling QP_Limit_Attrs_Util.Insert_Row' || l_return_status);
578             oe_debug_pub.add('Processing Limit Attributes- Calling QP_Limit_Attrs_Util.Insert_Row' || l_return_status);
579                     QP_Limit_Attrs_Util.Insert_Row (l_LIMIT_ATTRS_rec);
580 
581                 END IF;
582 
583             END IF;
584 
585         END IF;
586 
587         --  Load tables.
588 
589         l_LIMIT_ATTRS_tbl(I)           := l_LIMIT_ATTRS_rec;
590         l_old_LIMIT_ATTRS_tbl(I)       := l_old_LIMIT_ATTRS_rec;
591 
592     --  For loop exception handler.
593 
594 
595     EXCEPTION
596 
597         WHEN FND_API.G_EXC_ERROR THEN
598 
599             --dbms_output.put_line('Processing Limit Attributes- In Exception' || l_return_status);
600             oe_debug_pub.add('Processing Limit Attributes- In Exception' || l_return_status);
601             l_LIMIT_ATTRS_rec.return_status := FND_API.G_RET_STS_ERROR;
602             l_LIMIT_ATTRS_tbl(I)           := l_LIMIT_ATTRS_rec;
603             l_old_LIMIT_ATTRS_tbl(I)       := l_old_LIMIT_ATTRS_rec;
604 
605         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
606 
607             l_LIMIT_ATTRS_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
608             l_LIMIT_ATTRS_tbl(I)           := l_LIMIT_ATTRS_rec;
609             l_old_LIMIT_ATTRS_tbl(I)       := l_old_LIMIT_ATTRS_rec;
610             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
611 
612         WHEN OTHERS THEN
613 
614             l_LIMIT_ATTRS_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
615             l_LIMIT_ATTRS_tbl(I)           := l_LIMIT_ATTRS_rec;
616             l_old_LIMIT_ATTRS_tbl(I)       := l_old_LIMIT_ATTRS_rec;
617 
618             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
619             THEN
620                 OE_MSG_PUB.Add_Exc_Msg
621                 (   G_PKG_NAME
622                 ,   'Limit_Attrss'
623                 );
624             END IF;
625 
626             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
627 
628     END;
629     END LOOP;
630 
631     --  Load OUT parameters
632 
633     x_LIMIT_ATTRS_tbl              := l_LIMIT_ATTRS_tbl;
634     x_old_LIMIT_ATTRS_tbl          := l_old_LIMIT_ATTRS_tbl;
635 
636 EXCEPTION
637 
638     WHEN FND_API.G_EXC_ERROR THEN
639 
640         RAISE;
641 
642     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
643 
644 
645         RAISE;
646 
647     WHEN OTHERS THEN
648 
649         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
650         THEN
651             OE_MSG_PUB.Add_Exc_Msg
652             (   G_PKG_NAME
653             ,   'Limit_Attrss'
654             );
655         END IF;
656 
657 
658         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
659 
660 END Limit_Attrss;
661 
662 --  Limit_Balancess
663 
664 PROCEDURE Limit_Balancess
665 (   p_validation_level              IN  NUMBER
666 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
667 ,   p_LIMIT_BALANCES_tbl            IN  QP_Limits_PUB.Limit_Balances_Tbl_Type
668 ,   p_old_LIMIT_BALANCES_tbl        IN  QP_Limits_PUB.Limit_Balances_Tbl_Type
669 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Tbl_Type
670 ,   x_old_LIMIT_BALANCES_tbl        OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Tbl_Type
671 )
672 IS
673 l_return_status               VARCHAR2(1);
674 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
675 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
676 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
677 l_old_LIMIT_BALANCES_rec      QP_Limits_PUB.Limit_Balances_Rec_Type;
678 l_old_LIMIT_BALANCES_tbl      QP_Limits_PUB.Limit_Balances_Tbl_Type;
679 
680 l_p_LIMIT_BALANCES_rec	      QP_Limits_PUB.Limit_Balances_Rec_Type; --[prarasto]
681 BEGIN
682 
683     --  Init local table variables.
684 
685     l_LIMIT_BALANCES_tbl           := p_LIMIT_BALANCES_tbl;
686     l_old_LIMIT_BALANCES_tbl       := p_old_LIMIT_BALANCES_tbl;
687 
688             --dbms_output.put_line('Inside Limit Balances -  ' || l_return_status);
689             oe_debug_pub.add('Inside Limit Balances -  ' || l_return_status);
690     FOR I IN 1..l_LIMIT_BALANCES_tbl.COUNT LOOP
691     BEGIN
692 
693         --  Load local records.
694 
695         l_LIMIT_BALANCES_rec := l_LIMIT_BALANCES_tbl(I);
696 
697         IF l_old_LIMIT_BALANCES_tbl.EXISTS(I) THEN
698             l_old_LIMIT_BALANCES_rec := l_old_LIMIT_BALANCES_tbl(I);
699         ELSE
700             l_old_LIMIT_BALANCES_rec := QP_Limits_PUB.G_MISS_LIMIT_BALANCES_REC;
701         END IF;
702 
703         --  Load API control record
704 
705         l_control_rec := QP_GLOBALS.Init_Control_Rec
706         (   p_operation     => l_LIMIT_BALANCES_rec.operation
707         ,   p_control_rec   => p_control_rec
708         );
709 
710         --  Set record return status.
711 
712             --dbms_output.put_line('Inside Limit Balances 1-  ' || l_return_status);
713             oe_debug_pub.add('Inside Limit Balances 1-  ' || l_return_status);
714         l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_SUCCESS;
715 
716         --  Prepare record.
717 
718         IF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
719 
720             l_LIMIT_BALANCES_rec.db_flag := FND_API.G_FALSE;
721 
722             --  Set missing old record elements to NULL.
723 
724             l_old_LIMIT_BALANCES_rec :=
725             QP_Limit_Balances_Util.Convert_Miss_To_Null (l_old_LIMIT_BALANCES_rec);
726 
727         ELSIF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_UPDATE
728         OR    l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_DELETE
729         THEN
730 
731             l_LIMIT_BALANCES_rec.db_flag := FND_API.G_TRUE;
732 
733             --  Query Old if missing
734 
735             IF  l_old_LIMIT_BALANCES_rec.limit_balance_id = FND_API.G_MISS_NUM
736             THEN
737 
738                 l_old_LIMIT_BALANCES_rec := QP_Limit_Balances_Util.Query_Row
739                 (   p_limit_balance_id            => l_LIMIT_BALANCES_rec.limit_balance_id
740                 );
741 
742             ELSE
743 
744                 --  Set missing old record elements to NULL.
745 
746                 l_old_LIMIT_BALANCES_rec :=
747                 QP_Limit_Balances_Util.Convert_Miss_To_Null (l_old_LIMIT_BALANCES_rec);
748 
749             END IF;
750 
751             --  Complete new record from old
752 
753             --dbms_output.put_line('Processing Limit Balances - Calling QP_Limit_Balances_Util.Complete_Record ' || l_return_status);
754             oe_debug_pub.add('Processing Limit Balances - Calling QP_Limit_Balances_Util.Complete_Record ' || l_return_status);
755             l_LIMIT_BALANCES_rec := QP_Limit_Balances_Util.Complete_Record
756             (   p_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
757             ,   p_old_LIMIT_BALANCES_rec      => l_old_LIMIT_BALANCES_rec
758             );
759 
760         END IF;
761 
762         --  Attribute level validation.
763 
764             --dbms_output.put_line('Inside Limit Balances 2-  ' || l_return_status);
765             oe_debug_pub.add('Inside Limit Balances 2-  ' || l_return_status);
766         IF  l_control_rec.default_attributes
767         OR  l_control_rec.change_attributes
768         THEN
769 
770             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
771 
772             --dbms_output.put_line('Processing Limit Balances - Calling QP_Validate_Limit_Balances.Attributes ' || l_return_status);
773             oe_debug_pub.add('Processing Limit Balances - Calling QP_Validate_Limit_Balances.Attributes ' || l_return_status);
774                 QP_Validate_Limit_Balances.Attributes
775                 (   x_return_status               => l_return_status
776                 ,   p_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
777                 ,   p_old_LIMIT_BALANCES_rec      => l_old_LIMIT_BALANCES_rec
778                 );
779 
780             --dbms_output.put_line('Processing Limit Balances - After QP_Validate_Limit_Balances.Attributes ' || l_return_status);
781             oe_debug_pub.add('Processing Limit Balances - After QP_Validate_Limit_Balances.Attributes ' || l_return_status);
782                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
783                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
784                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
785                     RAISE FND_API.G_EXC_ERROR;
786                 END IF;
787 
788             END IF;
789 
790         END IF;
791 
792             --  Clear dependent attributes.
793 
794         IF  l_control_rec.change_attributes THEN
795 
796             --dbms_output.put_line('Processing Limit Balances - Calling QP_Limit_Balances_Util.Clear_Dependent_Attr ' || l_return_status);
797             oe_debug_pub.add('Processing Limit Balances - Calling QP_Limit_Balances_Util.Clear_Dependent_Attr ' || l_return_status);
798 
799 	    l_p_LIMIT_BALANCES_rec	:= l_LIMIT_BALANCES_rec; --[prarasto]
800 
801             QP_Limit_Balances_Util.Clear_Dependent_Attr
802             (   p_LIMIT_BALANCES_rec          => l_p_LIMIT_BALANCES_rec
803             ,   p_old_LIMIT_BALANCES_rec      => l_old_LIMIT_BALANCES_rec
804             ,   x_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
805             );
806 
807         END IF;
808 
809         --  Default missing attributes
810 
811         IF  l_control_rec.default_attributes
812         OR  l_control_rec.change_attributes
813         THEN
814 
815             --dbms_output.put_line('Processing Limit Balances - Calling QP_Default_Limit_Balances.Attributes ' || l_return_status);
816             oe_debug_pub.add('Processing Limit Balances - Calling QP_Default_Limit_Balances.Attributes ' || l_return_status);
817             IF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
818 
819                l_p_LIMIT_BALANCES_rec	:= l_LIMIT_BALANCES_rec; --[prarasto]
820 
821                QP_Default_Limit_Balances.Attributes
822                (   p_LIMIT_BALANCES_rec          => l_p_LIMIT_BALANCES_rec
823                ,   x_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
824                );
825             END IF;
826 
827         END IF;
828 
829         --  Apply attribute changes
830 
831         IF  l_control_rec.default_attributes
832         OR  l_control_rec.change_attributes
833         THEN
834 
835             --dbms_output.put_line('Processing Limit Balances - Calling QP_Limit_Balances_Util.Apply_Attribute_Changes ' || l_return_status);
836             oe_debug_pub.add('Processing Limit Balances - Calling QP_Limit_Balances_Util.Apply_Attribute_Changes ' || l_return_status);
837 
838             l_p_LIMIT_BALANCES_rec	:= l_LIMIT_BALANCES_rec; --[prarasto]
839 
840             QP_Limit_Balances_Util.Apply_Attribute_Changes
841             (   p_LIMIT_BALANCES_rec          => l_p_LIMIT_BALANCES_rec
842             ,   p_old_LIMIT_BALANCES_rec      => l_old_LIMIT_BALANCES_rec
843             ,   x_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
844             );
845 
846         END IF;
847 
848         --  Entity level validation.
849 
850         IF l_control_rec.validate_entity THEN
851 
852             IF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
853 
854                 QP_Validate_Limit_Balances.Entity_Delete
855                 (   x_return_status               => l_return_status
856                 ,   p_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
857                 );
858 
859             ELSE
860 
861                 QP_Validate_Limit_Balances.Entity
862                 (   x_return_status               => l_return_status
863                 ,   p_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
864                 ,   p_old_LIMIT_BALANCES_rec      => l_old_LIMIT_BALANCES_rec
865                 );
866 
867             END IF;
868 
869             --dbms_output.put_line('Processing Limit Balances - After QP_Validate_Limit_Balances.Entity ' || l_return_status);
870             oe_debug_pub.add('Processing Limit Balances - After QP_Validate_Limit_Balances.Entity ' || l_return_status);
871             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
872                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
873             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
874                 RAISE FND_API.G_EXC_ERROR;
875             END IF;
876 
877         END IF;
878 
879         --  Step 4. Write to DB
880 
881             --dbms_output.put_line('Processing Limit Balances - At write_to_db ' || l_return_status);
882             oe_debug_pub.add('Processing Limit Balances - At write_to_db ' || l_return_status);
883         IF l_control_rec.write_to_db THEN
884 
885             IF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
886 
887                 QP_Limit_Balances_Util.Delete_Row
888                 (   p_limit_balance_id            => l_LIMIT_BALANCES_rec.limit_balance_id
889                 );
890 
891             ELSE
892 
893                 --  Get Who Information
894 
895                 l_LIMIT_BALANCES_rec.last_update_date := SYSDATE;
896                 l_LIMIT_BALANCES_rec.last_updated_by := FND_GLOBAL.USER_ID;
897                 l_LIMIT_BALANCES_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
898 
899                 IF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
900 
901                     QP_Limit_Balances_Util.Update_Row (l_LIMIT_BALANCES_rec);
902 
903                 ELSIF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
904 
905                     l_LIMIT_BALANCES_rec.creation_date := SYSDATE;
906                     l_LIMIT_BALANCES_rec.created_by := FND_GLOBAL.USER_ID;
907 
908             --dbms_output.put_line('Processing Limit Balances - Calling QP_Limit_Balances_Util.Insert_Row ' || l_return_status);
909             oe_debug_pub.add('Processing Limit Balances - Calling QP_Limit_Balances_Util.Insert_Row ' || l_return_status);
910                     QP_Limit_Balances_Util.Insert_Row (l_LIMIT_BALANCES_rec);
911 
912                 END IF;
913 
914             END IF;
915 
916         END IF;
917 
918         --  Load tables.
919 
920         l_LIMIT_BALANCES_tbl(I)        := l_LIMIT_BALANCES_rec;
921         l_old_LIMIT_BALANCES_tbl(I)    := l_old_LIMIT_BALANCES_rec;
922 
923     --  For loop exception handler.
924 
925 
926     EXCEPTION
927 
928         WHEN FND_API.G_EXC_ERROR THEN
929 
930             l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_ERROR;
931             l_LIMIT_BALANCES_tbl(I)        := l_LIMIT_BALANCES_rec;
932             l_old_LIMIT_BALANCES_tbl(I)    := l_old_LIMIT_BALANCES_rec;
933 
934         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
935 
936             l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
937             l_LIMIT_BALANCES_tbl(I)        := l_LIMIT_BALANCES_rec;
938             l_old_LIMIT_BALANCES_tbl(I)    := l_old_LIMIT_BALANCES_rec;
939             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
940 
941         WHEN OTHERS THEN
942 
943             l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
944             l_LIMIT_BALANCES_tbl(I)        := l_LIMIT_BALANCES_rec;
945             l_old_LIMIT_BALANCES_tbl(I)    := l_old_LIMIT_BALANCES_rec;
946 
947             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
948             THEN
949                 OE_MSG_PUB.Add_Exc_Msg
950                 (   G_PKG_NAME
951                 ,   'Limit_Balancess'
952                 );
953             END IF;
954 
955             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
956 
957     END;
958     END LOOP;
959 
960     --  Load OUT parameters
961 
962     x_LIMIT_BALANCES_tbl           := l_LIMIT_BALANCES_tbl;
963     x_old_LIMIT_BALANCES_tbl       := l_old_LIMIT_BALANCES_tbl;
964 
965 EXCEPTION
966 
967     WHEN FND_API.G_EXC_ERROR THEN
968 
969         RAISE;
970 
971     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
972 
973 
974         RAISE;
975 
976     WHEN OTHERS THEN
977 
978         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
979         THEN
980             OE_MSG_PUB.Add_Exc_Msg
981             (   G_PKG_NAME
982             ,   'Limit_Balancess'
983             );
984         END IF;
985 
986 
987         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
988 
989 END Limit_Balancess;
990 
991 
992 --  Start of Comments
993 --  API name    Process_Limits
994 --  Type        Private
995 --  Function
996 --
997 --  Pre-reqs
998 --
999 --  Parameters
1000 --
1001 --  Version     Current version = 1.0
1002 --              Initial version = 1.0
1003 --
1004 --  Notes
1005 --
1006 --  End of Comments
1007 
1008 PROCEDURE Process_Limits
1009 (   p_api_version_number            IN  NUMBER
1010 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1011 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
1012 ,   p_validation_level              IN  NUMBER := FND_API.G_VALID_LEVEL_FULL
1013 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type :=
1014                                         QP_GLOBALS.G_MISS_CONTROL_REC
1015 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1016 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1017 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1018 ,   p_LIMITS_rec                    IN  QP_Limits_PUB.Limits_Rec_Type :=
1019                                         QP_Limits_PUB.G_MISS_LIMITS_REC
1020 ,   p_old_LIMITS_rec                IN  QP_Limits_PUB.Limits_Rec_Type :=
1021                                         QP_Limits_PUB.G_MISS_LIMITS_REC
1022 ,   p_LIMIT_ATTRS_tbl               IN  QP_Limits_PUB.Limit_Attrs_Tbl_Type :=
1023                                         QP_Limits_PUB.G_MISS_LIMIT_ATTRS_TBL
1024 ,   p_old_LIMIT_ATTRS_tbl           IN  QP_Limits_PUB.Limit_Attrs_Tbl_Type :=
1025                                         QP_Limits_PUB.G_MISS_LIMIT_ATTRS_TBL
1026 ,   p_LIMIT_BALANCES_tbl            IN  QP_Limits_PUB.Limit_Balances_Tbl_Type :=
1027                                         QP_Limits_PUB.G_MISS_LIMIT_BALANCES_TBL
1028 ,   p_old_LIMIT_BALANCES_tbl        IN  QP_Limits_PUB.Limit_Balances_Tbl_Type :=
1029                                         QP_Limits_PUB.G_MISS_LIMIT_BALANCES_TBL
1030 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limits_Rec_Type
1031 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Attrs_Tbl_Type
1032 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Tbl_Type
1033 )
1034 IS
1035 l_api_version_number          CONSTANT NUMBER := 1.0;
1036 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Limits';
1037 l_return_status               VARCHAR2(1);
1038 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1039 l_LIMITS_rec                  QP_Limits_PUB.Limits_Rec_Type := p_LIMITS_rec;
1040 l_old_LIMITS_rec              QP_Limits_PUB.Limits_Rec_Type := p_old_LIMITS_rec;
1041 l_LIMIT_ATTRS_rec             QP_Limits_PUB.Limit_Attrs_Rec_Type;
1042 l_LIMIT_ATTRS_tbl             QP_Limits_PUB.Limit_Attrs_Tbl_Type;
1043 l_old_LIMIT_ATTRS_rec         QP_Limits_PUB.Limit_Attrs_Rec_Type;
1044 l_old_LIMIT_ATTRS_tbl         QP_Limits_PUB.Limit_Attrs_Tbl_Type;
1045 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
1046 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
1047 l_old_LIMIT_BALANCES_rec      QP_Limits_PUB.Limit_Balances_Rec_Type;
1048 l_old_LIMIT_BALANCES_tbl      QP_Limits_PUB.Limit_Balances_Tbl_Type;
1049 
1050 l_p_LIMITS_rec		      QP_Limits_PUB.Limits_Rec_Type;     --[prarasto]
1051 l_p_old_LIMITS_rec	      QP_Limits_PUB.Limits_Rec_Type; --[prarasto]
1052 l_p_LIMIT_ATTRS_tbl	      QP_Limits_PUB.Limit_Attrs_Tbl_Type;     --[prarasto]
1053 l_p_old_LIMIT_ATTRS_tbl	      QP_Limits_PUB.Limit_Attrs_Tbl_Type; --[prarasto]
1054 l_p_LIMIT_BALANCES_tbl	      QP_Limits_PUB.Limit_Balances_Tbl_Type;     --[prarasto]
1055 l_p_old_LIMIT_BALANCES_tbl    QP_Limits_PUB.Limit_Balances_Tbl_Type; --[prarasto]
1056 
1057 BEGIN
1058 
1059     --  Standard call to check for call compatibility
1060 
1061     IF NOT FND_API.Compatible_API_Call
1062            (   l_api_version_number
1063            ,   p_api_version_number
1064            ,   l_api_name
1065            ,   G_PKG_NAME
1066            )
1067     THEN
1068         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1069     END IF;
1070 
1071     --  Initialize message list.
1072 
1073     IF FND_API.to_Boolean(p_init_msg_list) THEN
1074         OE_MSG_PUB.initialize;
1075     END IF;
1076 
1077     --  Init local table variables.
1078 
1079     l_LIMIT_ATTRS_tbl              := p_LIMIT_ATTRS_tbl;
1080     l_old_LIMIT_ATTRS_tbl          := p_old_LIMIT_ATTRS_tbl;
1081 
1082     --  Init local table variables.
1083 
1084     l_LIMIT_BALANCES_tbl           := p_LIMIT_BALANCES_tbl;
1085     l_old_LIMIT_BALANCES_tbl       := p_old_LIMIT_BALANCES_tbl;
1086 
1087     --  Limits
1088     --dbms_output.put_line('Processing Limits ' || l_return_status);
1089     oe_debug_pub.add('Processing Limits ' || l_return_status);
1090 
1091     l_p_LIMITS_rec	:= l_LIMITS_rec;     --[prarasto]
1092     l_p_old_LIMITS_rec	:= l_old_LIMITS_rec; --[prarasto]
1093 
1094     Limits
1095     (   p_validation_level            => p_validation_level
1096     ,   p_control_rec                 => p_control_rec
1097     ,   p_LIMITS_rec                  => l_p_LIMITS_rec
1098     ,   p_old_LIMITS_rec              => l_p_old_LIMITS_rec
1099     ,   x_LIMITS_rec                  => l_LIMITS_rec
1100     ,   x_old_LIMITS_rec              => l_old_LIMITS_rec
1101     );
1102             --dbms_output.put_line('Limit_Id' || l_LIMITS_rec.limit_id);
1103             oe_debug_pub.add('Limit_Id' || l_LIMITS_rec.limit_id);
1104 
1105     --  Perform LIMITS group requests.
1106 
1107     IF p_control_rec.process AND
1108         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1109         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_LIMITS)
1110     THEN
1111 
1112         NULL;
1113 
1114     END IF;
1115     IF p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_LIMITS
1116     THEN
1117 
1118         oe_debug_pub.add('Calling QP_DELAYED_REQESTS_PVT.Process_Delayed_Requests');
1119         -- FOR ATTR_EACH_EXISTS , NON_EACH_ATTR_COUNT , TOTAL_ATTR_COUNT
1120         QP_DELAYED_REQUESTS_PVT.Process_Delayed_Requests
1121            (
1122              x_return_status => l_return_status
1123            );
1124         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1125                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1126         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1127                   RAISE FND_API.G_EXC_ERROR;
1128         END IF;
1129     END IF;
1130 
1131     --  Load parent key if missing and operation is create.
1132 
1133     FOR I IN 1..l_LIMIT_ATTRS_tbl.COUNT LOOP
1134 
1135         l_LIMIT_ATTRS_rec := l_LIMIT_ATTRS_tbl(I);
1136 
1137             --dbms_output.put_line('XXXX Limit_ATTR_ID' || l_LIMIT_ATTRS_tbl(I).limit_id);
1138         IF l_LIMIT_ATTRS_rec.operation = QP_GLOBALS.G_OPR_CREATE
1139         AND (l_LIMIT_ATTRS_rec.limit_id IS NULL OR
1140             l_LIMIT_ATTRS_rec.limit_id = FND_API.G_MISS_NUM)
1141         THEN
1142 
1143             --  Copy parent_id.
1144 
1145             l_LIMIT_ATTRS_tbl(I).limit_id := l_LIMITS_rec.limit_id;
1146             --dbms_output.put_line('XXXX Limit_ATTR_ID' || l_LIMIT_ATTRS_tbl(I).limit_id);
1147             oe_debug_pub.add('Limit_ATTR_ID' || l_LIMIT_ATTRS_tbl(I).limit_id);
1148         END IF;
1149     END LOOP;
1150 
1151     --  Limit_Attrss
1152 
1153     --dbms_output.put_line('Processing Limit Attributes ');
1154     oe_debug_pub.add('Processing Limit Attributes ');
1155 
1156     l_p_LIMIT_ATTRS_tbl		:= l_LIMIT_ATTRS_tbl;     --[prarasto]
1157     l_p_old_LIMIT_ATTRS_tbl	:= l_old_LIMIT_ATTRS_tbl; --[prarasto]
1158 
1159     Limit_Attrss
1160     (   p_validation_level            => p_validation_level
1161     ,   p_control_rec                 => p_control_rec
1162     ,   p_LIMIT_ATTRS_tbl             => l_p_LIMIT_ATTRS_tbl
1163     ,   p_old_LIMIT_ATTRS_tbl         => l_p_old_LIMIT_ATTRS_tbl
1164     ,   x_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
1165     ,   x_old_LIMIT_ATTRS_tbl         => l_old_LIMIT_ATTRS_tbl
1166     );
1167 
1168     --  Perform LIMIT_ATTRS group requests.
1169 
1170     IF p_control_rec.process AND
1171         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1172         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_LIMIT_ATTRS)
1173     THEN
1174 
1175         NULL;
1176 
1177     END IF;
1178 
1179     --  Load parent key if missing and operation is create.
1180 
1181     FOR I IN 1..l_LIMIT_BALANCES_tbl.COUNT LOOP
1182 
1183         l_LIMIT_BALANCES_rec := l_LIMIT_BALANCES_tbl(I);
1184 
1185         IF l_LIMIT_BALANCES_rec.operation = QP_GLOBALS.G_OPR_CREATE
1186         AND (l_LIMIT_BALANCES_rec.limit_id IS NULL OR
1187             l_LIMIT_BALANCES_rec.limit_id = FND_API.G_MISS_NUM)
1188         THEN
1189 
1190             --  Copy parent_id.
1191 
1192             l_LIMIT_BALANCES_tbl(I).limit_id := l_LIMITS_rec.limit_id;
1193             --dbms_output.put_line('Limit_BAL_Id' || l_LIMIT_BALANCES_tbl(I).limit_id);
1194             oe_debug_pub.add('Limit_BAL_Id' || l_LIMIT_BALANCES_tbl(I).limit_id);
1195         END IF;
1196     END LOOP;
1197 
1198     --  Limit_Balancess
1199 
1200     --dbms_output.put_line('Processing Limit Balances ');
1201     oe_debug_pub.add('Processing Limit Balances ');
1202 
1203     l_p_LIMIT_BALANCES_tbl	:= l_LIMIT_BALANCES_tbl;     --[prarasto]
1204     l_p_old_LIMIT_BALANCES_tbl	:= l_old_LIMIT_BALANCES_tbl; --[prarasto]
1205 
1206     Limit_Balancess
1207     (   p_validation_level            => p_validation_level
1208     ,   p_control_rec                 => p_control_rec
1209     ,   p_LIMIT_BALANCES_tbl          => l_p_LIMIT_BALANCES_tbl
1210     ,   p_old_LIMIT_BALANCES_tbl      => l_p_old_LIMIT_BALANCES_tbl
1211     ,   x_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
1212     ,   x_old_LIMIT_BALANCES_tbl      => l_old_LIMIT_BALANCES_tbl
1213     );
1214 
1215     --  Perform LIMIT_BALANCES group requests.
1216 
1217     IF p_control_rec.process AND
1218         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1219         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_LIMIT_BALANCES)
1220     THEN
1221 
1222         NULL;
1223 
1224     END IF;
1225 
1226 
1227     --  Step 5. Perform Object group logic
1228 
1229     IF p_control_rec.process AND
1230         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL
1231     THEN
1232 -- FOR ATTR_EACH_EXISTS , NON_EACH_ATTR_COUNT , TOTAL_ATTR_COUNT
1233          QP_DELAYED_REQUESTS_PVT.Process_Delayed_Requests
1234             (
1235               x_return_status => l_return_status
1236             );
1237          IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1238                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1239          ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1240                    RAISE FND_API.G_EXC_ERROR;
1241          END IF;
1242          NULL;
1243 
1244     END IF;
1245 
1246     --  Done processing, load OUT parameters.
1247 
1248     x_LIMITS_rec                   := l_LIMITS_rec;
1249     x_LIMIT_ATTRS_tbl              := l_LIMIT_ATTRS_tbl;
1250     x_LIMIT_BALANCES_tbl           := l_LIMIT_BALANCES_tbl;
1251 
1252     --  Clear API cache.
1253 
1254     IF p_control_rec.clear_api_cache THEN
1255 
1256         NULL;
1257 
1258     END IF;
1259 
1260     --  Clear API request tbl.
1261 
1262     IF p_control_rec.clear_api_requests THEN
1263 
1264         NULL;
1265 
1266     END IF;
1267 
1268     --  Derive return status.
1269 
1270     x_return_status := FND_API.G_RET_STS_SUCCESS;
1271 
1272     IF l_LIMITS_rec.return_status = FND_API.G_RET_STS_ERROR THEN
1273         x_return_status := FND_API.G_RET_STS_ERROR;
1274     END IF;
1275 
1276     FOR I IN 1..l_LIMIT_ATTRS_tbl.COUNT LOOP
1277 
1278         IF l_LIMIT_ATTRS_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
1279             x_return_status := FND_API.G_RET_STS_ERROR;
1280         END IF;
1281 
1282     END LOOP;
1283 
1284     FOR I IN 1..l_LIMIT_BALANCES_tbl.COUNT LOOP
1285 
1286         IF l_LIMIT_BALANCES_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
1287             x_return_status := FND_API.G_RET_STS_ERROR;
1288         END IF;
1289 
1290     END LOOP;
1291 
1292     --  Get message count and data
1293 
1294     OE_MSG_PUB.Count_And_Get
1295     (   p_count                       => x_msg_count
1296     ,   p_data                        => x_msg_data
1297     );
1298 
1299 
1300 EXCEPTION
1301 
1302     WHEN FND_API.G_EXC_ERROR THEN
1303 
1304         x_return_status := FND_API.G_RET_STS_ERROR;
1305 
1306         --  Get message count and data
1307 
1308         OE_MSG_PUB.Count_And_Get
1309         (   p_count                       => x_msg_count
1310         ,   p_data                        => x_msg_data
1311         );
1312 
1313      --dbms_output.put_line('Proc Limits - EXCEPTION x_msg_count' || x_msg_count);
1314 
1315     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1316 
1317         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1318 
1319         --  Get message count and data
1320 
1321         OE_MSG_PUB.Count_And_Get
1322         (   p_count                       => x_msg_count
1323         ,   p_data                        => x_msg_data
1324         );
1325      --dbms_output.put_line('Proc Limits - EXCEPTION x_msg_count' || x_msg_count);
1326 
1327     WHEN OTHERS THEN
1328 
1329         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1330 
1331         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1332         THEN
1333             OE_MSG_PUB.Add_Exc_Msg
1334             (   G_PKG_NAME
1335             ,   'Process_Limits'
1336             );
1337         END IF;
1338 
1339         --  Get message count and data
1340 
1341         OE_MSG_PUB.Count_And_Get
1342         (   p_count                       => x_msg_count
1343         ,   p_data                        => x_msg_data
1344         );
1345      --dbms_output.put_line('Proc Limits - EXCEPTION x_msg_count' || x_msg_count);
1346 
1347 END Process_Limits;
1348 
1349 --  Start of Comments
1350 --  API name    Lock_Limits
1351 --  Type        Private
1352 --  Function
1353 --
1354 --  Pre-reqs
1355 --
1356 --  Parameters
1357 --
1358 --  Version     Current version = 1.0
1359 --              Initial version = 1.0
1360 --
1361 --  Notes
1362 --
1363 --  End of Comments
1364 
1365 PROCEDURE Lock_Limits
1366 (   p_api_version_number            IN  NUMBER
1367 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1368 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1369 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1370 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1371 ,   p_LIMITS_rec                    IN  QP_Limits_PUB.Limits_Rec_Type :=
1372                                         QP_Limits_PUB.G_MISS_LIMITS_REC
1373 ,   p_LIMIT_ATTRS_tbl               IN  QP_Limits_PUB.Limit_Attrs_Tbl_Type :=
1374                                         QP_Limits_PUB.G_MISS_LIMIT_ATTRS_TBL
1375 ,   p_LIMIT_BALANCES_tbl            IN  QP_Limits_PUB.Limit_Balances_Tbl_Type :=
1376                                         QP_Limits_PUB.G_MISS_LIMIT_BALANCES_TBL
1377 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limits_Rec_Type
1378 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Attrs_Tbl_Type
1379 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Tbl_Type
1380 )
1381 IS
1382 l_api_version_number          CONSTANT NUMBER := 1.0;
1383 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Limits';
1384 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1385 l_LIMIT_ATTRS_rec             QP_Limits_PUB.Limit_Attrs_Rec_Type;
1386 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
1387 BEGIN
1388 
1389     --  Standard call to check for call compatibility
1390 
1391     IF NOT FND_API.Compatible_API_Call
1392            (   l_api_version_number
1393            ,   p_api_version_number
1394            ,   l_api_name
1395            ,   G_PKG_NAME
1396            )
1397     THEN
1398         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1399     END IF;
1400 
1401     --  Initialize message list.
1402 
1403     IF FND_API.to_Boolean(p_init_msg_list) THEN
1404         OE_MSG_PUB.initialize;
1405     END IF;
1406 
1407     --  Set Savepoint
1408 
1409     SAVEPOINT Lock_Limits_PVT;
1410 
1411     --  Lock LIMITS
1412 
1413     IF p_LIMITS_rec.operation = QP_GLOBALS.G_OPR_LOCK THEN
1414 
1415         QP_Limits_Util.Lock_Row
1416         (   p_LIMITS_rec                  => p_LIMITS_rec
1417         ,   x_LIMITS_rec                  => x_LIMITS_rec
1418         ,   x_return_status               => l_return_status
1419         );
1420 
1421         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1422             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1423         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1424             RAISE FND_API.G_EXC_ERROR;
1425         END IF;
1426 
1427 
1428     END IF;
1429 
1430     --  Lock LIMIT_ATTRS
1431 
1432     FOR I IN 1..p_LIMIT_ATTRS_tbl.COUNT LOOP
1433 
1434         IF p_LIMIT_ATTRS_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
1435 
1436             QP_Limit_Attrs_Util.Lock_Row
1437             (   p_LIMIT_ATTRS_rec             => p_LIMIT_ATTRS_tbl(I)
1438             ,   x_LIMIT_ATTRS_rec             => l_LIMIT_ATTRS_rec
1439             ,   x_return_status               => l_return_status
1440             );
1441 
1442             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1443                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1444             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1445                 RAISE FND_API.G_EXC_ERROR;
1446             END IF;
1447 
1448             x_LIMIT_ATTRS_tbl(I)           := l_LIMIT_ATTRS_rec;
1449 
1450         END IF;
1451 
1452     END LOOP;
1453 
1454     --  Lock LIMIT_BALANCES
1455 
1456     FOR I IN 1..p_LIMIT_BALANCES_tbl.COUNT LOOP
1457 
1458         IF p_LIMIT_BALANCES_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
1459 
1460             QP_Limit_Balances_Util.Lock_Row
1461             (   p_LIMIT_BALANCES_rec          => p_LIMIT_BALANCES_tbl(I)
1462             ,   x_LIMIT_BALANCES_rec          => l_LIMIT_BALANCES_rec
1463             ,   x_return_status               => l_return_status
1464             );
1465 
1466             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1467                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1468             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1469                 RAISE FND_API.G_EXC_ERROR;
1470             END IF;
1471 
1472             x_LIMIT_BALANCES_tbl(I)        := l_LIMIT_BALANCES_rec;
1473 
1474         END IF;
1475 
1476     END LOOP;
1477 
1478     --  Set return status
1479 
1480     x_return_status := FND_API.G_RET_STS_SUCCESS;
1481 
1482     --  Get message count and data
1483 
1484     OE_MSG_PUB.Count_And_Get
1485     (   p_count                       => x_msg_count
1486     ,   p_data                        => x_msg_data
1487     );
1488 
1489 
1490 EXCEPTION
1491 
1492     WHEN FND_API.G_EXC_ERROR THEN
1493 
1494         x_return_status := FND_API.G_RET_STS_ERROR;
1495 
1496         --  Get message count and data
1497 
1498         OE_MSG_PUB.Count_And_Get
1499         (   p_count                       => x_msg_count
1500         ,   p_data                        => x_msg_data
1501         );
1502 
1503         --  Rollback
1504 
1505         ROLLBACK TO Lock_Limits_PVT;
1506 
1507     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1508 
1509         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1510 
1511         --  Get message count and data
1512 
1513         OE_MSG_PUB.Count_And_Get
1514         (   p_count                       => x_msg_count
1515         ,   p_data                        => x_msg_data
1516         );
1517 
1518         --  Rollback
1519 
1520         ROLLBACK TO Lock_Limits_PVT;
1521 
1522     WHEN OTHERS THEN
1523 
1524         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1525 
1526         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1527         THEN
1528             OE_MSG_PUB.Add_Exc_Msg
1529             (   G_PKG_NAME
1530             ,   'Lock_Limits'
1531             );
1532         END IF;
1533 
1534         --  Get message count and data
1535 
1536         OE_MSG_PUB.Count_And_Get
1537         (   p_count                       => x_msg_count
1538         ,   p_data                        => x_msg_data
1539         );
1540 
1541         --  Rollback
1542 
1543         ROLLBACK TO Lock_Limits_PVT;
1544 
1545 END Lock_Limits;
1546 
1547 --  Start of Comments
1548 --  API name    Get_Limits
1549 --  Type        Private
1550 --  Function
1551 --
1552 --  Pre-reqs
1553 --
1554 --  Parameters
1555 --
1556 --  Version     Current version = 1.0
1557 --              Initial version = 1.0
1558 --
1559 --  Notes
1560 --
1561 --  End of Comments
1562 
1563 PROCEDURE Get_Limits
1564 (   p_api_version_number            IN  NUMBER
1565 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1566 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1567 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1568 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1569 ,   p_limit_id                      IN  NUMBER
1570 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limits_Rec_Type
1571 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Attrs_Tbl_Type
1572 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Tbl_Type
1573 )
1574 IS
1575 l_api_version_number          CONSTANT NUMBER := 1.0;
1576 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Limits';
1577 l_LIMITS_rec                  QP_Limits_PUB.Limits_Rec_Type;
1578 l_LIMIT_ATTRS_tbl             QP_Limits_PUB.Limit_Attrs_Tbl_Type;
1579 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
1580 BEGIN
1581 
1582     --  Standard call to check for call compatibility
1583 
1584     IF NOT FND_API.Compatible_API_Call
1585            (   l_api_version_number
1586            ,   p_api_version_number
1587            ,   l_api_name
1588            ,   G_PKG_NAME
1589            )
1590     THEN
1591         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1592     END IF;
1593 
1594     --  Initialize message list.
1595 
1596     IF FND_API.to_Boolean(p_init_msg_list) THEN
1597         OE_MSG_PUB.initialize;
1598     END IF;
1599 
1600     --  Get LIMITS ( parent = LIMITS )
1601 
1602     l_LIMITS_rec :=  QP_Limits_Util.Query_Row
1603     (   p_limit_id            => p_limit_id
1604     );
1605 
1606         --  Get LIMIT_ATTRS ( parent = LIMITS )
1607 
1608         l_LIMIT_ATTRS_tbl :=  QP_Limit_Attrs_Util.Query_Rows
1609         (   p_limit_id              => l_LIMITS_rec.limit_id
1610         );
1611 
1612 
1613         --  Get LIMIT_BALANCES ( parent = LIMITS )
1614 
1615         l_LIMIT_BALANCES_tbl :=  QP_Limit_Balances_Util.Query_Rows
1616         (   p_limit_id              => l_LIMITS_rec.limit_id
1617         );
1618 
1619 
1620     --  Load out parameters
1621 
1622     x_LIMITS_rec                   := l_LIMITS_rec;
1623     x_LIMIT_ATTRS_tbl              := l_LIMIT_ATTRS_tbl;
1624     x_LIMIT_BALANCES_tbl           := l_LIMIT_BALANCES_tbl;
1625 
1626     --  Set return status
1627 
1628     x_return_status := FND_API.G_RET_STS_SUCCESS;
1629 
1630     --  Get message count and data
1631 
1632     OE_MSG_PUB.Count_And_Get
1633     (   p_count                       => x_msg_count
1634     ,   p_data                        => x_msg_data
1635     );
1636 
1637 
1638 EXCEPTION
1639 
1640     WHEN FND_API.G_EXC_ERROR THEN
1641 
1642         x_return_status := FND_API.G_RET_STS_ERROR;
1643 
1644         --  Get message count and data
1645 
1646         OE_MSG_PUB.Count_And_Get
1647         (   p_count                       => x_msg_count
1648         ,   p_data                        => x_msg_data
1649         );
1650 
1651     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1652 
1653         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1654 
1655         --  Get message count and data
1656 
1657         OE_MSG_PUB.Count_And_Get
1658         (   p_count                       => x_msg_count
1659         ,   p_data                        => x_msg_data
1660         );
1661 
1662     WHEN OTHERS THEN
1663 
1664         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1665 
1666         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1667         THEN
1668             OE_MSG_PUB.Add_Exc_Msg
1669             (   G_PKG_NAME
1670             ,   'Get_Limits'
1671             );
1672         END IF;
1673 
1674         --  Get message count and data
1675 
1676         OE_MSG_PUB.Count_And_Get
1677         (   p_count                       => x_msg_count
1678         ,   p_data                        => x_msg_data
1679         );
1680 
1681 END Get_Limits;
1682 
1683 END QP_Limits_PVT;