DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_LIMITS_PUB

Source


1 PACKAGE BODY QP_Limits_PUB AS
2 /* $Header: QPXPLMTB.pls 120.5 2006/10/25 06:55:19 nirmkuma ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Limits_PUB';
7 
8 --  Forward declaration of Procedure Id_To_Value
9 
10 PROCEDURE Id_To_Value
11 (   p_LIMITS_rec                    IN  Limits_Rec_Type
12 ,   p_LIMIT_ATTRS_tbl               IN  Limit_Attrs_Tbl_Type
13 ,   p_LIMIT_BALANCES_tbl            IN  Limit_Balances_Tbl_Type
14 ,   x_LIMITS_val_rec                OUT NOCOPY /* file.sql.39 change */ Limits_Val_Rec_Type
15 ,   x_LIMIT_ATTRS_val_tbl           OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Val_Tbl_Type
16 ,   x_LIMIT_BALANCES_val_tbl        OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Val_Tbl_Type
17 );
18 
19 --  Forward declaration of procedure Value_To_Id
20 
21 PROCEDURE Value_To_Id
22 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
23 ,   p_LIMITS_rec                    IN  Limits_Rec_Type
24 ,   p_LIMITS_val_rec                IN  Limits_Val_Rec_Type
25 ,   p_LIMIT_ATTRS_tbl               IN  Limit_Attrs_Tbl_Type
26 ,   p_LIMIT_ATTRS_val_tbl           IN  Limit_Attrs_Val_Tbl_Type
27 ,   p_LIMIT_BALANCES_tbl            IN  Limit_Balances_Tbl_Type
28 ,   p_LIMIT_BALANCES_val_tbl        IN  Limit_Balances_Val_Tbl_Type
29 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ Limits_Rec_Type
30 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Tbl_Type
31 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Tbl_Type
32 );
33 
34 --  Start of Comments
35 --  API name    Process_Limits
36 --  Type        Public
37 --  Function
38 --
39 --  Pre-reqs
40 --
41 --  Parameters
42 --
43 --  Version     Current version = 1.0
44 --              Initial version = 1.0
45 --
46 --  Notes
47 --
48 --  End of Comments
49 
50 PROCEDURE Process_Limits
51 (   p_api_version_number            IN  NUMBER
52 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
53 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
54 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
55 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
57 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 ,   p_LIMITS_rec                    IN  Limits_Rec_Type :=
59                                         G_MISS_LIMITS_REC
60 ,   p_LIMITS_val_rec                IN  Limits_Val_Rec_Type :=
61                                         G_MISS_LIMITS_VAL_REC
62 ,   p_LIMIT_ATTRS_tbl               IN  Limit_Attrs_Tbl_Type :=
63                                         G_MISS_LIMIT_ATTRS_TBL
64 ,   p_LIMIT_ATTRS_val_tbl           IN  Limit_Attrs_Val_Tbl_Type :=
65                                         G_MISS_LIMIT_ATTRS_VAL_TBL
66 ,   p_LIMIT_BALANCES_tbl            IN  Limit_Balances_Tbl_Type :=
67                                         G_MISS_LIMIT_BALANCES_TBL
68 ,   p_LIMIT_BALANCES_val_tbl        IN  Limit_Balances_Val_Tbl_Type :=
69                                         G_MISS_LIMIT_BALANCES_VAL_TBL
70 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ Limits_Rec_Type
71 ,   x_LIMITS_val_rec                OUT NOCOPY /* file.sql.39 change */ Limits_Val_Rec_Type
72 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Tbl_Type
73 ,   x_LIMIT_ATTRS_val_tbl           OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Val_Tbl_Type
74 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Tbl_Type
75 ,   x_LIMIT_BALANCES_val_tbl        OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Val_Tbl_Type
76 )
77 IS
78 l_api_version_number          CONSTANT NUMBER := 1.0;
79 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Limits';
80 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
81 l_return_status               VARCHAR2(1);
82 l_LIMITS_rec                  Limits_Rec_Type;
83 l_p_LIMITS_rec                  Limits_Rec_Type;
84 l_LIMIT_ATTRS_tbl             Limit_Attrs_Tbl_Type;
85 l_p_LIMIT_ATTRS_tbl             Limit_Attrs_Tbl_Type;
86 l_LIMIT_BALANCES_tbl          Limit_Balances_Tbl_Type;
87 l_p_LIMIT_BALANCES_tbl          Limit_Balances_Tbl_Type;
88 l_qp_status                   VARCHAR2(1);
89 BEGIN
90 
91      SAVEPOINT QP_Process_Limits;
92     --  Standard call to check for call compatibility
93 
94     IF NOT FND_API.Compatible_API_Call
95            (   l_api_version_number
96            ,   p_api_version_number
97            ,   l_api_name
98            ,   G_PKG_NAME
99            )
100     THEN
101         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
102     END IF;
103 
104      -- BOI not available when QP not installed
105 
106     l_qp_status := QP_UTIL.GET_QP_STATUS;
107 
108     IF l_qp_status = 'N'
109     THEN
110 
111         l_return_status := FND_API.G_RET_STS_ERROR;
112         FND_MESSAGE.SET_NAME('QP','QP_PRICING_NOT_INSTALLED');
113         OE_MSG_PUB.Add;
114         RAISE FND_API.G_EXC_ERROR;
115 
116     END IF;
117 
118     --  Perform Value to Id conversion
119 
120     Value_To_Id
121     (   x_return_status               => l_return_status
122     ,   p_LIMITS_rec                  => p_LIMITS_rec
123     ,   p_LIMITS_val_rec              => p_LIMITS_val_rec
124     ,   p_LIMIT_ATTRS_tbl             => p_LIMIT_ATTRS_tbl
125     ,   p_LIMIT_ATTRS_val_tbl         => p_LIMIT_ATTRS_val_tbl
126     ,   p_LIMIT_BALANCES_tbl          => p_LIMIT_BALANCES_tbl
127     ,   p_LIMIT_BALANCES_val_tbl      => p_LIMIT_BALANCES_val_tbl
128     ,   x_LIMITS_rec                  => l_LIMITS_rec
129     ,   x_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
130     ,   x_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
131     );
132 
133     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
134         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
135     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
136         RAISE FND_API.G_EXC_ERROR;
137     END IF;
138 
139 
140     --  Call QP_Limits_PVT.Process_Limits
141     -- rbagri - set the called_from_ui indicator to 'N', as  QP_Limits_PVT.Process_Limits is
142     -- being called from public package
143 
144     l_control_rec.called_from_ui := 'N';
145     l_p_LIMITS_rec := l_LIMITS_rec;
146     l_p_LIMIT_ATTRS_tbl := l_LIMIT_ATTRS_tbl;
147     l_p_LIMIT_BALANCES_tbl := l_LIMIT_BALANCES_tbl;
148     QP_Limits_PVT.Process_Limits
149     (   p_api_version_number          => 1.0
150     ,   p_init_msg_list               => p_init_msg_list
151     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
152     ,   p_commit                      => p_commit
153     ,   x_return_status               => x_return_status
154     ,   x_msg_count                   => x_msg_count
155     ,   x_msg_data                    => x_msg_data
156     ,   p_control_rec                 => l_control_rec
157     ,   p_LIMITS_rec                  => l_p_LIMITS_rec
158     ,   p_LIMIT_ATTRS_tbl             => l_p_LIMIT_ATTRS_tbl
159     ,   p_LIMIT_BALANCES_tbl          => l_p_LIMIT_BALANCES_tbl
160     ,   x_LIMITS_rec                  => l_LIMITS_rec
161     ,   x_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
162     ,   x_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
163     );
164 
165     --  Load Id OUT parameters.
166 
167     x_LIMITS_rec                   := l_LIMITS_rec;
168     x_LIMIT_ATTRS_tbl              := l_LIMIT_ATTRS_tbl;
169     x_LIMIT_BALANCES_tbl           := l_LIMIT_BALANCES_tbl;
170 
171     --  If p_return_values is TRUE then convert Ids to Values.
172 
173     IF FND_API.to_Boolean(p_return_values) THEN
174 
175         Id_To_Value
176         (   p_LIMITS_rec                  => l_LIMITS_rec
177         ,   p_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
178         ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
179         ,   x_LIMITS_val_rec              => x_LIMITS_val_rec
180         ,   x_LIMIT_ATTRS_val_tbl         => x_LIMIT_ATTRS_val_tbl
181         ,   x_LIMIT_BALANCES_val_tbl      => x_LIMIT_BALANCES_val_tbl
182         );
183 
184     END IF;
185 --Roll Back the transaction if the return status is not success and it is called from API, bug #5345652
186 
187         If x_return_status <> 'S' AND l_control_rec.called_from_ui='N' THEN
188              --   Rollback;
189      Rollback TO QP_Process_Limits;
190         END IF;
191 
192 
193 EXCEPTION
194 
195     WHEN FND_API.G_EXC_ERROR THEN
196 
197         x_return_status := FND_API.G_RET_STS_ERROR;
198 
199         --  Get message count and data
200 
201         OE_MSG_PUB.Count_And_Get
202         (   p_count                       => x_msg_count
203         ,   p_data                        => x_msg_data
204         );
205 --Roll Back the transaction if the return status is not success and it is called from API, bug #5345652
206         If l_control_rec.called_from_ui='N' THEN
207            Rollback TO QP_Process_Limits;
208         END IF;
209 
210     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
211 
212         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
213 
214         --  Get message count and data
215 
216         OE_MSG_PUB.Count_And_Get
217         (   p_count                       => x_msg_count
218         ,   p_data                        => x_msg_data
219         );
220 --Roll Back the transaction if the return status is not success and it is called from API, bug #5345652
221         If l_control_rec.called_from_ui='N' THEN
222            Rollback TO QP_Process_Limits;
223         END IF;
224 
225     WHEN OTHERS THEN
226 
227         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
228 
229         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
230         THEN
231             OE_MSG_PUB.Add_Exc_Msg
232             (   G_PKG_NAME
233             ,   'Process_Limits'
234             );
235         END IF;
236 
237         --  Get message count and data
238 
239         OE_MSG_PUB.Count_And_Get
240         (   p_count                       => x_msg_count
241         ,   p_data                        => x_msg_data
242         );
243 --Roll Back the transaction if the return status is not success and it is called from API, bug #5345652
244         If l_control_rec.called_from_ui='N' THEN
245           Rollback TO QP_Process_Limits;
246         END IF;
247 
248 END Process_Limits;
249 
250 --  Start of Comments
251 --  API name    Lock_Limits
252 --  Type        Public
253 --  Function
254 --
255 --  Pre-reqs
256 --
257 --  Parameters
258 --
259 --  Version     Current version = 1.0
260 --              Initial version = 1.0
261 --
262 --  Notes
263 --
264 --  End of Comments
265 
266 PROCEDURE Lock_Limits
267 (   p_api_version_number            IN  NUMBER
268 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
269 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
270 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
271 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
272 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
273 ,   p_LIMITS_rec                    IN  Limits_Rec_Type :=
274                                         G_MISS_LIMITS_REC
275 ,   p_LIMITS_val_rec                IN  Limits_Val_Rec_Type :=
276                                         G_MISS_LIMITS_VAL_REC
277 ,   p_LIMIT_ATTRS_tbl               IN  Limit_Attrs_Tbl_Type :=
278                                         G_MISS_LIMIT_ATTRS_TBL
279 ,   p_LIMIT_ATTRS_val_tbl           IN  Limit_Attrs_Val_Tbl_Type :=
280                                         G_MISS_LIMIT_ATTRS_VAL_TBL
281 ,   p_LIMIT_BALANCES_tbl            IN  Limit_Balances_Tbl_Type :=
282                                         G_MISS_LIMIT_BALANCES_TBL
283 ,   p_LIMIT_BALANCES_val_tbl        IN  Limit_Balances_Val_Tbl_Type :=
284                                         G_MISS_LIMIT_BALANCES_VAL_TBL
285 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ Limits_Rec_Type
286 ,   x_LIMITS_val_rec                OUT NOCOPY /* file.sql.39 change */ Limits_Val_Rec_Type
287 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Tbl_Type
288 ,   x_LIMIT_ATTRS_val_tbl           OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Val_Tbl_Type
289 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Tbl_Type
290 ,   x_LIMIT_BALANCES_val_tbl        OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Val_Tbl_Type
291 )
292 IS
293 l_api_version_number          CONSTANT NUMBER := 1.0;
294 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Limits';
295 l_return_status               VARCHAR2(1);
296 l_LIMITS_rec                  Limits_Rec_Type;
297 l_p_LIMITS_rec                  Limits_Rec_Type;
298 l_LIMIT_ATTRS_tbl             Limit_Attrs_Tbl_Type;
299 l_p_LIMIT_ATTRS_tbl             Limit_Attrs_Tbl_Type;
300 l_LIMIT_BALANCES_tbl          Limit_Balances_Tbl_Type;
301 l_p_LIMIT_BALANCES_tbl          Limit_Balances_Tbl_Type;
302 BEGIN
303 
304     --  Standard call to check for call compatibility
305 
306     IF NOT FND_API.Compatible_API_Call
307            (   l_api_version_number
308            ,   p_api_version_number
309            ,   l_api_name
310            ,   G_PKG_NAME
311            )
312     THEN
313         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
314     END IF;
315 
316     --  Perform Value to Id conversion
317 
318     Value_To_Id
319     (   x_return_status               => l_return_status
320     ,   p_LIMITS_rec                  => p_LIMITS_rec
321     ,   p_LIMITS_val_rec              => p_LIMITS_val_rec
322     ,   p_LIMIT_ATTRS_tbl             => p_LIMIT_ATTRS_tbl
323     ,   p_LIMIT_ATTRS_val_tbl         => p_LIMIT_ATTRS_val_tbl
324     ,   p_LIMIT_BALANCES_tbl          => p_LIMIT_BALANCES_tbl
325     ,   p_LIMIT_BALANCES_val_tbl      => p_LIMIT_BALANCES_val_tbl
326     ,   x_LIMITS_rec                  => l_LIMITS_rec
327     ,   x_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
328     ,   x_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
329     );
330 
331     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
332         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
333     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
334         RAISE FND_API.G_EXC_ERROR;
335     END IF;
336 
337 
338     --  Call QP_Limits_PVT.Lock_Limits
339     l_p_LIMITS_rec := l_LIMITS_rec;
340     l_p_LIMIT_ATTRS_tbl := l_LIMIT_ATTRS_tbl;
341     l_p_LIMIT_BALANCES_tbl := l_LIMIT_BALANCES_tbl;
342     QP_Limits_PVT.Lock_Limits
343     (   p_api_version_number          => 1.0
344     ,   p_init_msg_list               => p_init_msg_list
345     ,   x_return_status               => x_return_status
346     ,   x_msg_count                   => x_msg_count
347     ,   x_msg_data                    => x_msg_data
348     ,   p_LIMITS_rec                  => l_p_LIMITS_rec
349     ,   p_LIMIT_ATTRS_tbl             => l_p_LIMIT_ATTRS_tbl
350     ,   p_LIMIT_BALANCES_tbl          => l_p_LIMIT_BALANCES_tbl
351     ,   x_LIMITS_rec                  => l_LIMITS_rec
352     ,   x_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
353     ,   x_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
354     );
355 
356     --  Load Id OUT parameters.
357 
358     x_LIMITS_rec                   := l_LIMITS_rec;
359     x_LIMIT_ATTRS_tbl              := l_LIMIT_ATTRS_tbl;
360     x_LIMIT_BALANCES_tbl           := l_LIMIT_BALANCES_tbl;
361 
362     --  If p_return_values is TRUE then convert Ids to Values.
363 
364     IF FND_API.to_Boolean(p_return_values) THEN
365 
366         Id_To_Value
367         (   p_LIMITS_rec                  => l_LIMITS_rec
368         ,   p_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
369         ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
370         ,   x_LIMITS_val_rec              => x_LIMITS_val_rec
371         ,   x_LIMIT_ATTRS_val_tbl         => x_LIMIT_ATTRS_val_tbl
372         ,   x_LIMIT_BALANCES_val_tbl      => x_LIMIT_BALANCES_val_tbl
373         );
374 
375     END IF;
376 
377 EXCEPTION
378 
379     WHEN FND_API.G_EXC_ERROR THEN
380 
381         x_return_status := FND_API.G_RET_STS_ERROR;
382 
383         --  Get message count and data
384 
385         OE_MSG_PUB.Count_And_Get
386         (   p_count                       => x_msg_count
387         ,   p_data                        => x_msg_data
388         );
389 
390     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
391 
392         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
393 
394         --  Get message count and data
395 
396         OE_MSG_PUB.Count_And_Get
397         (   p_count                       => x_msg_count
398         ,   p_data                        => x_msg_data
399         );
400 
401     WHEN OTHERS THEN
402 
403         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
404 
405         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
406         THEN
407             OE_MSG_PUB.Add_Exc_Msg
408             (   G_PKG_NAME
409             ,   'Lock_Limits'
410             );
411         END IF;
412 
413         --  Get message count and data
414 
415         OE_MSG_PUB.Count_And_Get
416         (   p_count                       => x_msg_count
417         ,   p_data                        => x_msg_data
418         );
419 
420 END Lock_Limits;
421 
422 --  Start of Comments
423 --  API name    Get_Limits
424 --  Type        Public
425 --  Function
426 --
427 --  Pre-reqs
428 --
429 --  Parameters
430 --
431 --  Version     Current version = 1.0
432 --              Initial version = 1.0
433 --
434 --  Notes
435 --
436 --  End of Comments
437 
438 PROCEDURE Get_Limits
439 (   p_api_version_number            IN  NUMBER
440 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
441 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
442 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
443 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
444 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
445 ,   p_limit_id                      IN  NUMBER :=
446                                         FND_API.G_MISS_NUM
447 ,   p_limit                         IN  VARCHAR2 :=
448                                         FND_API.G_MISS_CHAR
449 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ Limits_Rec_Type
450 ,   x_LIMITS_val_rec                OUT NOCOPY /* file.sql.39 change */ Limits_Val_Rec_Type
451 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Tbl_Type
452 ,   x_LIMIT_ATTRS_val_tbl           OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Val_Tbl_Type
453 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Tbl_Type
454 ,   x_LIMIT_BALANCES_val_tbl        OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Val_Tbl_Type
455 )
456 IS
457 l_api_version_number          CONSTANT NUMBER := 1.0;
458 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Limits';
459 l_limit_id                    NUMBER := p_limit_id;
460 l_LIMITS_rec                  QP_Limits_PUB.Limits_Rec_Type;
461 l_LIMIT_ATTRS_tbl             QP_Limits_PUB.Limit_Attrs_Tbl_Type;
462 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
463 BEGIN
464 
465     --  Standard call to check for call compatibility
466 
467     IF NOT FND_API.Compatible_API_Call
468            (   l_api_version_number
469            ,   p_api_version_number
470            ,   l_api_name
471            ,   G_PKG_NAME
472            )
473     THEN
474         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
475     END IF;
476 
477     --  Standard check for Val/ID conversion
478 
479     IF  p_limit = FND_API.G_MISS_CHAR
480     THEN
481 
482         l_limit_id := p_limit_id;
483 
484     ELSIF p_limit_id <> FND_API.G_MISS_NUM THEN
485 
486         l_limit_id := p_limit_id;
487 
488         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
489         THEN
490 
491             FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
492             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','limit');
493             OE_MSG_PUB.Add;
494 
495         END IF;
496 
497     ELSE
498 
499         --  Convert Value to Id
500 
501         l_limit_id := QP_Value_To_Id.limit
502         (   p_limit                       => p_limit
503         );
504 
505         IF l_limit_id = FND_API.G_MISS_NUM THEN
506             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
507             THEN
508 
509                 FND_MESSAGE.SET_NAME('QP','Invalid Business Object Value');
510                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','limit');
511                 OE_MSG_PUB.Add;
512 
513             END IF;
514         END IF;
515 
516         RAISE FND_API.G_EXC_ERROR;
517 
518     END IF;
519 
520 
521     --  Call QP_Limits_PVT.Get_Limits
522 
523     QP_Limits_PVT.Get_Limits
524     (   p_api_version_number          => 1.0
525     ,   p_init_msg_list               => p_init_msg_list
526     ,   x_return_status               => x_return_status
527     ,   x_msg_count                   => x_msg_count
528     ,   x_msg_data                    => x_msg_data
529     ,   p_limit_id                    => l_limit_id
530     ,   x_LIMITS_rec                  => l_LIMITS_rec
531     ,   x_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
532     ,   x_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
533     );
534 
535     --  Load Id OUT parameters.
536 
537     x_LIMITS_rec                   := l_LIMITS_rec;
538     x_LIMIT_ATTRS_tbl              := l_LIMIT_ATTRS_tbl;
539     x_LIMIT_BALANCES_tbl           := l_LIMIT_BALANCES_tbl;
540 
541     --  If p_return_values is TRUE then convert Ids to Values.
542 
543     IF FND_API.TO_BOOLEAN(p_return_values) THEN
544 
545         Id_To_Value
546         (   p_LIMITS_rec                  => l_LIMITS_rec
547         ,   p_LIMIT_ATTRS_tbl             => l_LIMIT_ATTRS_tbl
548         ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
549         ,   x_LIMITS_val_rec              => x_LIMITS_val_rec
550         ,   x_LIMIT_ATTRS_val_tbl         => x_LIMIT_ATTRS_val_tbl
551         ,   x_LIMIT_BALANCES_val_tbl      => x_LIMIT_BALANCES_val_tbl
552         );
553 
554     END IF;
555 
556     --  Set return status
557 
558     x_return_status := FND_API.G_RET_STS_SUCCESS;
559 
560     --  Get message count and data
561 
562     OE_MSG_PUB.Count_And_Get
563     (   p_count                       => x_msg_count
564     ,   p_data                        => x_msg_data
565     );
566 
567 
568 EXCEPTION
569 
570     WHEN FND_API.G_EXC_ERROR THEN
571 
572         x_return_status := FND_API.G_RET_STS_ERROR;
573 
574         --  Get message count and data
575 
576         OE_MSG_PUB.Count_And_Get
577         (   p_count                       => x_msg_count
578         ,   p_data                        => x_msg_data
579         );
580 
581     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
582 
583         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
584 
585         --  Get message count and data
586 
587         OE_MSG_PUB.Count_And_Get
588         (   p_count                       => x_msg_count
589         ,   p_data                        => x_msg_data
590         );
591 
592     WHEN OTHERS THEN
593 
594         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
595 
596         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
597         THEN
598             OE_MSG_PUB.Add_Exc_Msg
599             (   G_PKG_NAME
600             ,   'Get_Limits'
601             );
602         END IF;
603 
604         --  Get message count and data
605 
606         OE_MSG_PUB.Count_And_Get
607         (   p_count                       => x_msg_count
608         ,   p_data                        => x_msg_data
609         );
610 
611 END Get_Limits;
612 
613 --  Procedure Id_To_Value
614 
615 PROCEDURE Id_To_Value
616 (   p_LIMITS_rec                    IN  Limits_Rec_Type
617 ,   p_LIMIT_ATTRS_tbl               IN  Limit_Attrs_Tbl_Type
618 ,   p_LIMIT_BALANCES_tbl            IN  Limit_Balances_Tbl_Type
619 ,   x_LIMITS_val_rec                OUT NOCOPY /* file.sql.39 change */ Limits_Val_Rec_Type
620 ,   x_LIMIT_ATTRS_val_tbl           OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Val_Tbl_Type
621 ,   x_LIMIT_BALANCES_val_tbl        OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Val_Tbl_Type
622 )
623 IS
624 BEGIN
625 
626     --  Convert LIMITS
627 
628     x_LIMITS_val_rec := QP_Limits_Util.Get_Values(p_LIMITS_rec);
629 
630     --  Convert LIMIT_ATTRS
631 
632     FOR I IN 1..p_LIMIT_ATTRS_tbl.COUNT LOOP
633         x_LIMIT_ATTRS_val_tbl(I) :=
634             QP_Limit_Attrs_Util.Get_Values(p_LIMIT_ATTRS_tbl(I));
635     END LOOP;
636 
637     --  Convert LIMIT_BALANCES
638 
639     FOR I IN 1..p_LIMIT_BALANCES_tbl.COUNT LOOP
640         x_LIMIT_BALANCES_val_tbl(I) :=
641             QP_Limit_Balances_Util.Get_Values(p_LIMIT_BALANCES_tbl(I));
642     END LOOP;
643 
644 EXCEPTION
645 
646     WHEN OTHERS THEN
647 
648         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
649         THEN
650             OE_MSG_PUB.Add_Exc_Msg
651             (   G_PKG_NAME
652             ,   'Id_To_Value'
653             );
654         END IF;
655 
656         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
657 
658 END Id_To_Value;
659 
660 --  Procedure Value_To_Id
661 
662 PROCEDURE Value_To_Id
663 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
664 ,   p_LIMITS_rec                    IN  Limits_Rec_Type
665 ,   p_LIMITS_val_rec                IN  Limits_Val_Rec_Type
666 ,   p_LIMIT_ATTRS_tbl               IN  Limit_Attrs_Tbl_Type
667 ,   p_LIMIT_ATTRS_val_tbl           IN  Limit_Attrs_Val_Tbl_Type
668 ,   p_LIMIT_BALANCES_tbl            IN  Limit_Balances_Tbl_Type
669 ,   p_LIMIT_BALANCES_val_tbl        IN  Limit_Balances_Val_Tbl_Type
670 ,   x_LIMITS_rec                    OUT NOCOPY /* file.sql.39 change */ Limits_Rec_Type
671 ,   x_LIMIT_ATTRS_tbl               OUT NOCOPY /* file.sql.39 change */ Limit_Attrs_Tbl_Type
672 ,   x_LIMIT_BALANCES_tbl            OUT NOCOPY /* file.sql.39 change */ Limit_Balances_Tbl_Type
673 )
674 IS
675 l_LIMITS_rec                  Limits_Rec_Type;
676 l_LIMIT_ATTRS_rec             Limit_Attrs_Rec_Type;
677 l_LIMIT_BALANCES_rec          Limit_Balances_Rec_Type;
678 l_index                       BINARY_INTEGER;
679 BEGIN
680 
681     --  Init x_return_status.
682 
683     x_return_status := FND_API.G_RET_STS_SUCCESS;
684 
685     --  Convert LIMITS
686 
687     l_LIMITS_rec := QP_Limits_Util.Get_Ids
688     (   p_LIMITS_rec                  => p_LIMITS_rec
689     ,   p_LIMITS_val_rec              => p_LIMITS_val_rec
690     );
691 
692     x_LIMITS_rec                   := l_LIMITS_rec;
693 
694     IF l_LIMITS_rec.return_status = FND_API.G_RET_STS_ERROR THEN
695         x_return_status := FND_API.G_RET_STS_ERROR;
696     END IF;
697 
698     --  Convert LIMIT_ATTRS
699 
700     x_LIMIT_ATTRS_tbl := p_LIMIT_ATTRS_tbl;
701 
702     l_index := p_LIMIT_ATTRS_val_tbl.FIRST;
703 
704     WHILE l_index IS NOT NULL LOOP
705 
706         l_LIMIT_ATTRS_rec := QP_Limit_Attrs_Util.Get_Ids
707         (   p_LIMIT_ATTRS_rec             => p_LIMIT_ATTRS_tbl(l_index)
708         ,   p_LIMIT_ATTRS_val_rec         => p_LIMIT_ATTRS_val_tbl(l_index)
709         );
710 
711         x_LIMIT_ATTRS_tbl(l_index)     := l_LIMIT_ATTRS_rec;
712 
713         IF l_LIMIT_ATTRS_rec.return_status = FND_API.G_RET_STS_ERROR THEN
714             x_return_status := FND_API.G_RET_STS_ERROR;
715         END IF;
716 
717         l_index := p_LIMIT_ATTRS_val_tbl.NEXT(l_index);
718 
719     END LOOP;
720 
721     --  Convert LIMIT_BALANCES
722 
723     x_LIMIT_BALANCES_tbl := p_LIMIT_BALANCES_tbl;
724 
725     l_index := p_LIMIT_BALANCES_val_tbl.FIRST;
726 
727     WHILE l_index IS NOT NULL LOOP
728 
729         l_LIMIT_BALANCES_rec := QP_Limit_Balances_Util.Get_Ids
730         (   p_LIMIT_BALANCES_rec          => p_LIMIT_BALANCES_tbl(l_index)
731         ,   p_LIMIT_BALANCES_val_rec      => p_LIMIT_BALANCES_val_tbl(l_index)
732         );
733 
734         x_LIMIT_BALANCES_tbl(l_index)  := l_LIMIT_BALANCES_rec;
735 
736         IF l_LIMIT_BALANCES_rec.return_status = FND_API.G_RET_STS_ERROR THEN
737             x_return_status := FND_API.G_RET_STS_ERROR;
738         END IF;
739 
740         l_index := p_LIMIT_BALANCES_val_tbl.NEXT(l_index);
741 
742     END LOOP;
743 
744 EXCEPTION
745 
746     WHEN OTHERS THEN
747 
748         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
749         THEN
750             OE_MSG_PUB.Add_Exc_Msg
751             (   G_PKG_NAME
752             ,   'Value_To_Id'
753             );
754         END IF;
755 
756         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
757 
758 END Value_To_Id;
759 
760 END QP_Limits_PUB;