DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_LIMIT_BALANCES

Source


1 PACKAGE BODY QP_QP_Form_Limit_Balances AS
2 /* $Header: QPXFLMBB.pls 120.1 2005/06/13 03:35:48 appldev  $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_QP_Form_Limit_Balances';
7 
8 --  Global variables holding cached record.
9 
10 g_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
11 g_db_LIMIT_BALANCES_rec       QP_Limits_PUB.Limit_Balances_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_LIMIT_BALANCES
16 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_LIMIT_BALANCES
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_limit_balance_id              IN  NUMBER
23 )
24 RETURN QP_Limits_PUB.Limit_Balances_Rec_Type;
25 
26 PROCEDURE Clear_LIMIT_BALANCES;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Limits_PUB.Limit_Balances_Tbl_Type;
31 
32 --  Procedure : Default_Attributes
33 --
34 
35 PROCEDURE Default_Attributes
36 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
37 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
38 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
40 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
41 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_available_amount              OUT NOCOPY /* file.sql.39 change */ NUMBER
55 ,   x_consumed_amount               OUT NOCOPY /* file.sql.39 change */ NUMBER
56 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
57 ,   x_limit_balance_id              OUT NOCOPY /* file.sql.39 change */ NUMBER
58 ,   x_limit_id                      OUT NOCOPY /* file.sql.39 change */ NUMBER
59 ,   x_multival_attr1_type           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
60 ,   x_multival_attr1_context        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
61 ,   x_multival_attribute1           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
62 ,   x_multival_attr1_value          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
63 ,   x_multival_attr1_datatype       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
64 ,   x_multival_attr2_type           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
65 ,   x_multival_attr2_context        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
66 ,   x_multival_attribute2           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
67 ,   x_multival_attr2_value          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
68 ,   x_multival_attr2_datatype       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
69 ,   x_organization_attr_context     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
70 ,   x_organization_attribute        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
71 ,   x_organization_attr_value       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
72 ,   x_reserved_amount               OUT NOCOPY /* file.sql.39 change */ NUMBER
73 ,   x_limit_balance                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
74 ,   x_limit                         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
75 )
76 IS
77 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
78 l_LIMIT_BALANCES_val_rec      QP_Limits_PUB.Limit_Balances_Val_Rec_Type;
79 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
80 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
81 l_return_status               VARCHAR2(1);
82 l_x_LIMITS_rec                QP_Limits_PUB.Limits_Rec_Type;
83 l_x_LIMIT_ATTRS_rec           QP_Limits_PUB.Limit_Attrs_Rec_Type;
84 l_x_LIMIT_ATTRS_tbl           QP_Limits_PUB.Limit_Attrs_Tbl_Type;
85 l_x_LIMIT_BALANCES_rec        QP_Limits_PUB.Limit_Balances_Rec_Type;
86 l_x_LIMIT_BALANCES_tbl        QP_Limits_PUB.Limit_Balances_Tbl_Type;
87 BEGIN
88 
89     --  Set control flags.
90 
91     l_control_rec.controlled_operation := TRUE;
92     l_control_rec.default_attributes   := TRUE;
93 
94     l_control_rec.change_attributes    := FALSE;
95     l_control_rec.validate_entity      := FALSE;
96     l_control_rec.write_to_DB          := FALSE;
97     l_control_rec.process              := FALSE;
98 
99     --  Instruct API to retain its caches
100 
101     l_control_rec.clear_api_cache      := FALSE;
102     l_control_rec.clear_api_requests   := FALSE;
103 
104     --  Load IN parameters if any exist
105 
106 
107     --  Defaulting of flex values is currently done by the form.
108     --  Set flex attributes to NULL in order to avoid defaulting them.
109 
110     l_LIMIT_BALANCES_rec.attribute1               := NULL;
111     l_LIMIT_BALANCES_rec.attribute10              := NULL;
112     l_LIMIT_BALANCES_rec.attribute11              := NULL;
113     l_LIMIT_BALANCES_rec.attribute12              := NULL;
114     l_LIMIT_BALANCES_rec.attribute13              := NULL;
115     l_LIMIT_BALANCES_rec.attribute14              := NULL;
116     l_LIMIT_BALANCES_rec.attribute15              := NULL;
117     l_LIMIT_BALANCES_rec.attribute2               := NULL;
118     l_LIMIT_BALANCES_rec.attribute3               := NULL;
119     l_LIMIT_BALANCES_rec.attribute4               := NULL;
120     l_LIMIT_BALANCES_rec.attribute5               := NULL;
121     l_LIMIT_BALANCES_rec.attribute6               := NULL;
122     l_LIMIT_BALANCES_rec.attribute7               := NULL;
123     l_LIMIT_BALANCES_rec.attribute8               := NULL;
124     l_LIMIT_BALANCES_rec.attribute9               := NULL;
125     l_LIMIT_BALANCES_rec.context                  := NULL;
126 
127     --  Set Operation to Create
128 
129     l_LIMIT_BALANCES_rec.operation := QP_GLOBALS.G_OPR_CREATE;
130 
131     --  Populate LIMIT_BALANCES table
132 
133     l_LIMIT_BALANCES_tbl(1) := l_LIMIT_BALANCES_rec;
134 
135     --  Call QP_Limits_PVT.Process_Limits
136 
137     QP_Limits_PVT.Process_Limits
138     (   p_api_version_number          => 1.0
139     ,   p_init_msg_list               => FND_API.G_TRUE
140     ,   x_return_status               => l_return_status
141     ,   x_msg_count                   => x_msg_count
142     ,   x_msg_data                    => x_msg_data
143     ,   p_control_rec                 => l_control_rec
144     ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
145     ,   x_LIMITS_rec                  => l_x_LIMITS_rec
146     ,   x_LIMIT_ATTRS_tbl             => l_x_LIMIT_ATTRS_tbl
147     ,   x_LIMIT_BALANCES_tbl          => l_x_LIMIT_BALANCES_tbl
148     );
149 
150     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
151         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
152     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
153         RAISE FND_API.G_EXC_ERROR;
154     END IF;
155 
156 
157     --  Unload out tbl
158 
159     l_x_LIMIT_BALANCES_rec := l_x_LIMIT_BALANCES_tbl(1);
160 
161     --  Load OUT parameters.
162 
163     x_attribute1                   := l_x_LIMIT_BALANCES_rec.attribute1;
164     x_attribute10                  := l_x_LIMIT_BALANCES_rec.attribute10;
165     x_attribute11                  := l_x_LIMIT_BALANCES_rec.attribute11;
166     x_attribute12                  := l_x_LIMIT_BALANCES_rec.attribute12;
167     x_attribute13                  := l_x_LIMIT_BALANCES_rec.attribute13;
168     x_attribute14                  := l_x_LIMIT_BALANCES_rec.attribute14;
169     x_attribute15                  := l_x_LIMIT_BALANCES_rec.attribute15;
170     x_attribute2                   := l_x_LIMIT_BALANCES_rec.attribute2;
171     x_attribute3                   := l_x_LIMIT_BALANCES_rec.attribute3;
172     x_attribute4                   := l_x_LIMIT_BALANCES_rec.attribute4;
173     x_attribute5                   := l_x_LIMIT_BALANCES_rec.attribute5;
174     x_attribute6                   := l_x_LIMIT_BALANCES_rec.attribute6;
175     x_attribute7                   := l_x_LIMIT_BALANCES_rec.attribute7;
176     x_attribute8                   := l_x_LIMIT_BALANCES_rec.attribute8;
177     x_attribute9                   := l_x_LIMIT_BALANCES_rec.attribute9;
178     x_available_amount             := l_x_LIMIT_BALANCES_rec.available_amount;
179     x_consumed_amount              := l_x_LIMIT_BALANCES_rec.consumed_amount;
180     x_context                      := l_x_LIMIT_BALANCES_rec.context;
181     x_limit_balance_id             := l_x_LIMIT_BALANCES_rec.limit_balance_id;
182     x_limit_id                     := l_x_LIMIT_BALANCES_rec.limit_id;
183     x_multival_attr1_type          := l_x_LIMIT_BALANCES_rec.multival_attr1_type;
184     x_multival_attr1_context       := l_x_LIMIT_BALANCES_rec.multival_attr1_context;
185     x_multival_attribute1          := l_x_LIMIT_BALANCES_rec.multival_attribute1;
186     x_multival_attr1_value         := l_x_LIMIT_BALANCES_rec.multival_attr1_value;
187     x_multival_attr1_datatype      := l_x_LIMIT_BALANCES_rec.multival_attr1_datatype;
188     x_multival_attr2_type          := l_x_LIMIT_BALANCES_rec.multival_attr2_type;
189     x_multival_attr2_context       := l_x_LIMIT_BALANCES_rec.multival_attr2_context;
190     x_multival_attribute2          := l_x_LIMIT_BALANCES_rec.multival_attribute2;
191     x_multival_attr2_value         := l_x_LIMIT_BALANCES_rec.multival_attr2_value;
192     x_multival_attr2_datatype      := l_x_LIMIT_BALANCES_rec.multival_attr2_datatype;
193     x_organization_attr_context    := l_x_LIMIT_BALANCES_rec.organization_attr_context;
194     x_organization_attribute       := l_x_LIMIT_BALANCES_rec.organization_attribute;
195     x_organization_attr_value      := l_x_LIMIT_BALANCES_rec.organization_attr_value;
196     x_reserved_amount              := l_x_LIMIT_BALANCES_rec.reserved_amount;
197 
198     --  Load display out parameters if any
199 
200     l_LIMIT_BALANCES_val_rec := QP_Limit_Balances_Util.Get_Values
201     (   p_LIMIT_BALANCES_rec          => l_x_LIMIT_BALANCES_rec
202     );
203     x_limit_balance                := l_LIMIT_BALANCES_val_rec.limit_balance;
204     x_limit                        := l_LIMIT_BALANCES_val_rec.limit;
205 
206     --  Write to cache.
207     --  Set db_flag to False before writing to cache
208 
209     l_x_LIMIT_BALANCES_rec.db_flag := FND_API.G_FALSE;
210 
211     Write_LIMIT_BALANCES
212     (   p_LIMIT_BALANCES_rec          => l_x_LIMIT_BALANCES_rec
213     );
214 
215     --  Set return status.
216 
217     x_return_status := FND_API.G_RET_STS_SUCCESS;
218 
219     --  Get message count and data
220 
221     OE_MSG_PUB.Count_And_Get
222     (   p_count                       => x_msg_count
223     ,   p_data                        => x_msg_data
224     );
225 
226 
227 EXCEPTION
228 
229     WHEN FND_API.G_EXC_ERROR THEN
230 
231         x_return_status := FND_API.G_RET_STS_ERROR;
232 
233         --  Get message count and data
234 
235         OE_MSG_PUB.Count_And_Get
236         (   p_count                       => x_msg_count
237         ,   p_data                        => x_msg_data
238         );
239 
240     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
241 
242         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
243 
244         --  Get message count and data
245 
246         OE_MSG_PUB.Count_And_Get
247         (   p_count                       => x_msg_count
248         ,   p_data                        => x_msg_data
249         );
250 
251     WHEN OTHERS THEN
252 
253         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
254 
255         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
256         THEN
257             OE_MSG_PUB.Add_Exc_Msg
258             (   G_PKG_NAME
259             ,   'Default_Attributes'
260             );
261         END IF;
262 
263         --  Get message count and data
264 
265         OE_MSG_PUB.Count_And_Get
266         (   p_count                       => x_msg_count
267         ,   p_data                        => x_msg_data
268         );
269 
270 END Default_Attributes;
271 
272 --  Procedure   :   Change_Attribute
273 --
274 
275 PROCEDURE Change_Attribute
276 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
277 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
278 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
279 ,   p_limit_balance_id              IN  NUMBER
280 ,   p_attr_id                       IN  NUMBER
281 ,   p_attr_value                    IN  VARCHAR2
282 ,   p_attribute1                    IN  VARCHAR2
283 ,   p_attribute10                   IN  VARCHAR2
284 ,   p_attribute11                   IN  VARCHAR2
285 ,   p_attribute12                   IN  VARCHAR2
286 ,   p_attribute13                   IN  VARCHAR2
287 ,   p_attribute14                   IN  VARCHAR2
288 ,   p_attribute15                   IN  VARCHAR2
289 ,   p_attribute2                    IN  VARCHAR2
290 ,   p_attribute3                    IN  VARCHAR2
291 ,   p_attribute4                    IN  VARCHAR2
292 ,   p_attribute5                    IN  VARCHAR2
293 ,   p_attribute6                    IN  VARCHAR2
294 ,   p_attribute7                    IN  VARCHAR2
295 ,   p_attribute8                    IN  VARCHAR2
296 ,   p_attribute9                    IN  VARCHAR2
297 ,   p_context                       IN  VARCHAR2
298 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
299 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
300 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
301 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
302 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
303 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
304 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
305 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
306 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
307 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
308 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
309 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
310 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
311 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
312 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
313 ,   x_available_amount              OUT NOCOPY /* file.sql.39 change */ NUMBER
314 ,   x_consumed_amount               OUT NOCOPY /* file.sql.39 change */ NUMBER
315 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
316 ,   x_limit_balance_id              OUT NOCOPY /* file.sql.39 change */ NUMBER
317 ,   x_limit_id                      OUT NOCOPY /* file.sql.39 change */ NUMBER
318 ,   x_multival_attr1_type           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
319 ,   x_multival_attr1_context        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
320 ,   x_multival_attribute1           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
321 ,   x_multival_attr1_value          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
322 ,   x_multival_attr1_datatype       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
323 ,   x_multival_attr2_type           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
324 ,   x_multival_attr2_context        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
325 ,   x_multival_attribute2           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
326 ,   x_multival_attr2_value          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
327 ,   x_multival_attr2_datatype       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
328 ,   x_organization_attr_context     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
329 ,   x_organization_attribute        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
330 ,   x_organization_attr_value       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
331 ,   x_reserved_amount               OUT NOCOPY /* file.sql.39 change */ NUMBER
332 ,   x_limit_balance                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
333 ,   x_limit                         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
334 )
335 IS
336 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
337 l_old_LIMIT_BALANCES_rec      QP_Limits_PUB.Limit_Balances_Rec_Type;
338 l_LIMIT_BALANCES_val_rec      QP_Limits_PUB.Limit_Balances_Val_Rec_Type;
339 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
340 l_old_LIMIT_BALANCES_tbl      QP_Limits_PUB.Limit_Balances_Tbl_Type;
341 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
342 l_return_status               VARCHAR2(1);
343 l_x_LIMITS_rec                QP_Limits_PUB.Limits_Rec_Type;
344 l_x_LIMIT_ATTRS_rec           QP_Limits_PUB.Limit_Attrs_Rec_Type;
345 l_x_LIMIT_ATTRS_tbl           QP_Limits_PUB.Limit_Attrs_Tbl_Type;
346 l_x_LIMIT_BALANCES_rec        QP_Limits_PUB.Limit_Balances_Rec_Type;
347 l_x_LIMIT_BALANCES_tbl        QP_Limits_PUB.Limit_Balances_Tbl_Type;
348 BEGIN
349 
350     --  Set control flags.
351 
352     l_control_rec.controlled_operation := TRUE;
353     l_control_rec.change_attributes    := TRUE;
354 
355     l_control_rec.default_attributes   := FALSE;
356     l_control_rec.validate_entity      := FALSE;
357     l_control_rec.write_to_DB          := FALSE;
358     l_control_rec.process              := FALSE;
359 
360     --  Instruct API to retain its caches
361 
362     l_control_rec.clear_api_cache      := FALSE;
363     l_control_rec.clear_api_requests   := FALSE;
364 
365     --  Read LIMIT_BALANCES from cache
366 
367     l_LIMIT_BALANCES_rec := Get_LIMIT_BALANCES
368     (   p_db_record                   => FALSE
369     ,   p_limit_balance_id            => p_limit_balance_id
370     );
371 
372     l_old_LIMIT_BALANCES_rec       := l_LIMIT_BALANCES_rec;
373 
374     IF p_attr_id = QP_Limit_Balances_Util.G_AVAILABLE_AMOUNT THEN
375         l_LIMIT_BALANCES_rec.available_amount := TO_NUMBER(p_attr_value);
376     ELSIF p_attr_id = QP_Limit_Balances_Util.G_CONSUMED_AMOUNT THEN
377         l_LIMIT_BALANCES_rec.consumed_amount := TO_NUMBER(p_attr_value);
378     ELSIF p_attr_id = QP_Limit_Balances_Util.G_LIMIT_BALANCE THEN
379         l_LIMIT_BALANCES_rec.limit_balance_id := TO_NUMBER(p_attr_value);
380     ELSIF p_attr_id = QP_Limit_Balances_Util.G_LIMIT THEN
381         l_LIMIT_BALANCES_rec.limit_id := TO_NUMBER(p_attr_value);
382     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR1_TYPE THEN
383         l_LIMIT_BALANCES_rec.multival_attr1_type := p_attr_value;
384     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR1_CONTEXT THEN
385         l_LIMIT_BALANCES_rec.multival_attr1_context := p_attr_value;
386     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTRIBUTE1 THEN
387         l_LIMIT_BALANCES_rec.multival_attribute1 := p_attr_value;
388     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR1_VALUE THEN
389         l_LIMIT_BALANCES_rec.multival_attr1_value := p_attr_value;
390     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR1_DATATYPE THEN
391         l_LIMIT_BALANCES_rec.multival_attr1_datatype := p_attr_value;
392      ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR2_TYPE THEN
393         l_LIMIT_BALANCES_rec.multival_attr2_type := p_attr_value;
394     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR2_CONTEXT THEN
395         l_LIMIT_BALANCES_rec.multival_attr2_context := p_attr_value;
396     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTRIBUTE2 THEN
397         l_LIMIT_BALANCES_rec.multival_attribute2 := p_attr_value;
398     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR2_VALUE THEN
399         l_LIMIT_BALANCES_rec.multival_attr2_value := p_attr_value;
400     ELSIF p_attr_id = QP_Limit_Balances_Util.G_MULTIVAL_ATTR2_DATATYPE THEN
401         l_LIMIT_BALANCES_rec.multival_attr2_datatype := p_attr_value;
402     ELSIF p_attr_id = QP_Limit_Balances_Util.G_ORGANIZATION_ATTR_CONTEXT THEN
403         l_LIMIT_BALANCES_rec.organization_attr_context := p_attr_value;
404     ELSIF p_attr_id = QP_Limit_Balances_Util.G_ORGANIZATION_ATTRIBUTE THEN
405         l_LIMIT_BALANCES_rec.organization_attribute := p_attr_value;
406     ELSIF p_attr_id = QP_Limit_Balances_Util.G_ORGANIZATION_ATTR_VALUE THEN
407         l_LIMIT_BALANCES_rec.organization_attr_value := p_attr_value;
408     ELSIF p_attr_id = QP_Limit_Balances_Util.G_RESERVED_AMOUNT THEN
409         l_LIMIT_BALANCES_rec.reserved_amount := TO_NUMBER(p_attr_value);
410     ELSIF p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE1
411     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE10
412     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE11
413     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE12
414     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE13
415     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE14
416     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE15
417     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE2
418     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE3
419     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE4
420     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE5
421     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE6
422     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE7
423     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE8
424     OR     p_attr_id = QP_Limit_Balances_Util.G_ATTRIBUTE9
425     OR     p_attr_id = QP_Limit_Balances_Util.G_CONTEXT
426     THEN
427 
428         l_LIMIT_BALANCES_rec.attribute1 := p_attribute1;
429         l_LIMIT_BALANCES_rec.attribute10 := p_attribute10;
430         l_LIMIT_BALANCES_rec.attribute11 := p_attribute11;
431         l_LIMIT_BALANCES_rec.attribute12 := p_attribute12;
432         l_LIMIT_BALANCES_rec.attribute13 := p_attribute13;
433         l_LIMIT_BALANCES_rec.attribute14 := p_attribute14;
434         l_LIMIT_BALANCES_rec.attribute15 := p_attribute15;
435         l_LIMIT_BALANCES_rec.attribute2 := p_attribute2;
436         l_LIMIT_BALANCES_rec.attribute3 := p_attribute3;
437         l_LIMIT_BALANCES_rec.attribute4 := p_attribute4;
438         l_LIMIT_BALANCES_rec.attribute5 := p_attribute5;
439         l_LIMIT_BALANCES_rec.attribute6 := p_attribute6;
440         l_LIMIT_BALANCES_rec.attribute7 := p_attribute7;
441         l_LIMIT_BALANCES_rec.attribute8 := p_attribute8;
442         l_LIMIT_BALANCES_rec.attribute9 := p_attribute9;
443         l_LIMIT_BALANCES_rec.context   := p_context;
444 
445     ELSE
446 
447         --  Unexpected error, unrecognized attribute
448 
449         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
450         THEN
451             OE_MSG_PUB.Add_Exc_Msg
452             (   G_PKG_NAME
453             ,   'Change_Attribute'
454             ,   'Unrecognized attribute'
455             );
456         END IF;
457 
458         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
459 
460     END IF;
461 
462     --  Set Operation.
463 
464     IF FND_API.To_Boolean(l_LIMIT_BALANCES_rec.db_flag) THEN
465         l_LIMIT_BALANCES_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
466     ELSE
467         l_LIMIT_BALANCES_rec.operation := QP_GLOBALS.G_OPR_CREATE;
468     END IF;
469 
470     --  Populate LIMIT_BALANCES table
471 
472     l_LIMIT_BALANCES_tbl(1) := l_LIMIT_BALANCES_rec;
473     l_old_LIMIT_BALANCES_tbl(1) := l_old_LIMIT_BALANCES_rec;
474 
475     --  Call QP_Limits_PVT.Process_Limits
476 
477     QP_Limits_PVT.Process_Limits
478     (   p_api_version_number          => 1.0
479     ,   p_init_msg_list               => FND_API.G_TRUE
480     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
481     ,   x_return_status               => l_return_status
482     ,   x_msg_count                   => x_msg_count
483     ,   x_msg_data                    => x_msg_data
484     ,   p_control_rec                 => l_control_rec
485     ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
486     ,   p_old_LIMIT_BALANCES_tbl      => l_old_LIMIT_BALANCES_tbl
487     ,   x_LIMITS_rec                  => l_x_LIMITS_rec
488     ,   x_LIMIT_ATTRS_tbl             => l_x_LIMIT_ATTRS_tbl
489     ,   x_LIMIT_BALANCES_tbl          => l_x_LIMIT_BALANCES_tbl
490     );
491 
492     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
493         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
494     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
495         RAISE FND_API.G_EXC_ERROR;
496     END IF;
497 
498 
499     --  Unload out tbl
500 
501     l_x_LIMIT_BALANCES_rec := l_x_LIMIT_BALANCES_tbl(1);
502 
503     --  Init OUT parameters to missing.
504 
505     x_attribute1                   := FND_API.G_MISS_CHAR;
506     x_attribute10                  := FND_API.G_MISS_CHAR;
507     x_attribute11                  := FND_API.G_MISS_CHAR;
508     x_attribute12                  := FND_API.G_MISS_CHAR;
509     x_attribute13                  := FND_API.G_MISS_CHAR;
510     x_attribute14                  := FND_API.G_MISS_CHAR;
511     x_attribute15                  := FND_API.G_MISS_CHAR;
512     x_attribute2                   := FND_API.G_MISS_CHAR;
513     x_attribute3                   := FND_API.G_MISS_CHAR;
514     x_attribute4                   := FND_API.G_MISS_CHAR;
515     x_attribute5                   := FND_API.G_MISS_CHAR;
516     x_attribute6                   := FND_API.G_MISS_CHAR;
517     x_attribute7                   := FND_API.G_MISS_CHAR;
518     x_attribute8                   := FND_API.G_MISS_CHAR;
519     x_attribute9                   := FND_API.G_MISS_CHAR;
520     x_available_amount             := FND_API.G_MISS_NUM;
521     x_consumed_amount              := FND_API.G_MISS_NUM;
522     x_context                      := FND_API.G_MISS_CHAR;
523     x_limit_balance_id             := FND_API.G_MISS_NUM;
524     x_limit_id                     := FND_API.G_MISS_NUM;
525     x_multival_attr1_type          := FND_API.G_MISS_CHAR;
526     x_multival_attr1_context       := FND_API.G_MISS_CHAR;
527     x_multival_attribute1          := FND_API.G_MISS_CHAR;
528     x_multival_attr1_value         := FND_API.G_MISS_CHAR;
529     x_multival_attr1_datatype      := FND_API.G_MISS_CHAR;
530     x_multival_attr2_type          := FND_API.G_MISS_CHAR;
531     x_multival_attr2_context       := FND_API.G_MISS_CHAR;
532     x_multival_attribute2          := FND_API.G_MISS_CHAR;
533     x_multival_attr2_value         := FND_API.G_MISS_CHAR;
534     x_multival_attr2_datatype      := FND_API.G_MISS_CHAR;
535     x_organization_attr_context    := FND_API.G_MISS_CHAR;
536     x_organization_attribute       := FND_API.G_MISS_CHAR;
537     x_organization_attr_value      := FND_API.G_MISS_CHAR;
538     x_reserved_amount              := FND_API.G_MISS_NUM;
539     x_limit_balance                := FND_API.G_MISS_CHAR;
540     x_limit                        := FND_API.G_MISS_CHAR;
541 
542     --  Load display out parameters if any
543 
544     l_LIMIT_BALANCES_val_rec := QP_Limit_Balances_Util.Get_Values
545     (   p_LIMIT_BALANCES_rec          => l_x_LIMIT_BALANCES_rec
546     ,   p_old_LIMIT_BALANCES_rec      => l_LIMIT_BALANCES_rec
547     );
548 
549     --  Return changed attributes.
550 
551     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute1,
552                             l_LIMIT_BALANCES_rec.attribute1)
553     THEN
554         x_attribute1 := l_x_LIMIT_BALANCES_rec.attribute1;
555     END IF;
556 
557     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute10,
558                             l_LIMIT_BALANCES_rec.attribute10)
559     THEN
560         x_attribute10 := l_x_LIMIT_BALANCES_rec.attribute10;
561     END IF;
562 
563     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute11,
564                             l_LIMIT_BALANCES_rec.attribute11)
565     THEN
566         x_attribute11 := l_x_LIMIT_BALANCES_rec.attribute11;
567     END IF;
568 
569     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute12,
570                             l_LIMIT_BALANCES_rec.attribute12)
571     THEN
572         x_attribute12 := l_x_LIMIT_BALANCES_rec.attribute12;
573     END IF;
574 
575     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute13,
576                             l_LIMIT_BALANCES_rec.attribute13)
577     THEN
578         x_attribute13 := l_x_LIMIT_BALANCES_rec.attribute13;
579     END IF;
580 
581     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute14,
582                             l_LIMIT_BALANCES_rec.attribute14)
583     THEN
584         x_attribute14 := l_x_LIMIT_BALANCES_rec.attribute14;
585     END IF;
586 
587     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute15,
588                             l_LIMIT_BALANCES_rec.attribute15)
589     THEN
590         x_attribute15 := l_x_LIMIT_BALANCES_rec.attribute15;
591     END IF;
592 
593     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute2,
594                             l_LIMIT_BALANCES_rec.attribute2)
595     THEN
596         x_attribute2 := l_x_LIMIT_BALANCES_rec.attribute2;
597     END IF;
598 
599     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute3,
600                             l_LIMIT_BALANCES_rec.attribute3)
601     THEN
602         x_attribute3 := l_x_LIMIT_BALANCES_rec.attribute3;
603     END IF;
604 
605     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute4,
606                             l_LIMIT_BALANCES_rec.attribute4)
607     THEN
608         x_attribute4 := l_x_LIMIT_BALANCES_rec.attribute4;
609     END IF;
610 
611     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute5,
612                             l_LIMIT_BALANCES_rec.attribute5)
613     THEN
614         x_attribute5 := l_x_LIMIT_BALANCES_rec.attribute5;
615     END IF;
616 
617     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute6,
618                             l_LIMIT_BALANCES_rec.attribute6)
619     THEN
620         x_attribute6 := l_x_LIMIT_BALANCES_rec.attribute6;
621     END IF;
622 
623     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute7,
624                             l_LIMIT_BALANCES_rec.attribute7)
625     THEN
626         x_attribute7 := l_x_LIMIT_BALANCES_rec.attribute7;
627     END IF;
628 
629     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute8,
630                             l_LIMIT_BALANCES_rec.attribute8)
631     THEN
632         x_attribute8 := l_x_LIMIT_BALANCES_rec.attribute8;
633     END IF;
634 
635     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.attribute9,
636                             l_LIMIT_BALANCES_rec.attribute9)
637     THEN
638         x_attribute9 := l_x_LIMIT_BALANCES_rec.attribute9;
639     END IF;
640 
641     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.available_amount,
642                             l_LIMIT_BALANCES_rec.available_amount)
643     THEN
644         x_available_amount := l_x_LIMIT_BALANCES_rec.available_amount;
645     END IF;
646 
647     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.consumed_amount,
648                             l_LIMIT_BALANCES_rec.consumed_amount)
649     THEN
650         x_consumed_amount := l_x_LIMIT_BALANCES_rec.consumed_amount;
651     END IF;
652 
653     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.context,
654                             l_LIMIT_BALANCES_rec.context)
655     THEN
656         x_context := l_x_LIMIT_BALANCES_rec.context;
657     END IF;
658 
659     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.limit_balance_id,
660                             l_LIMIT_BALANCES_rec.limit_balance_id)
661     THEN
662         x_limit_balance_id := l_x_LIMIT_BALANCES_rec.limit_balance_id;
663         x_limit_balance := l_LIMIT_BALANCES_val_rec.limit_balance;
664     END IF;
665 
666     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.limit_id,
667                             l_LIMIT_BALANCES_rec.limit_id)
668     THEN
669         x_limit_id := l_x_LIMIT_BALANCES_rec.limit_id;
670         x_limit := l_LIMIT_BALANCES_val_rec.limit;
671     END IF;
672 
673     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr1_type,
674                             l_LIMIT_BALANCES_rec.multival_attr1_type)
675     THEN
676         x_multival_attr1_type := l_x_LIMIT_BALANCES_rec.multival_attr1_type;
677     END IF;
678 
679     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr1_context,
680                             l_LIMIT_BALANCES_rec.multival_attr1_context)
681     THEN
682         x_multival_attr1_context := l_x_LIMIT_BALANCES_rec.multival_attr1_context;
683     END IF;
684 
685     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attribute1,
686                             l_LIMIT_BALANCES_rec.multival_attribute1)
687     THEN
688         x_multival_attribute1 := l_x_LIMIT_BALANCES_rec.multival_attribute1;
689     END IF;
690 
691     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr1_value,
692                             l_LIMIT_BALANCES_rec.multival_attr1_value)
693     THEN
694         x_multival_attr1_value := l_x_LIMIT_BALANCES_rec.multival_attr1_value;
695     END IF;
696 
697     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr1_datatype,
698                             l_LIMIT_BALANCES_rec.multival_attr1_datatype)
699     THEN
700         x_multival_attr1_datatype := l_x_LIMIT_BALANCES_rec.multival_attr1_datatype;
701     END IF;
702 
703     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr2_type,
704                             l_LIMIT_BALANCES_rec.multival_attr2_type)
705     THEN
706         x_multival_attr2_type := l_x_LIMIT_BALANCES_rec.multival_attr2_type;
707     END IF;
708 
709     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr2_context,
710                             l_LIMIT_BALANCES_rec.multival_attr2_context)
711     THEN
712         x_multival_attr2_context := l_x_LIMIT_BALANCES_rec.multival_attr2_context;
713     END IF;
714 
715     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attribute2,
716                             l_LIMIT_BALANCES_rec.multival_attribute2)
717     THEN
718         x_multival_attribute2 := l_x_LIMIT_BALANCES_rec.multival_attribute2;
719     END IF;
720 
721     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr2_value,
722                             l_LIMIT_BALANCES_rec.multival_attr2_value)
723     THEN
724         x_multival_attr2_value := l_x_LIMIT_BALANCES_rec.multival_attr2_value;
725     END IF;
726 
727     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.multival_attr2_datatype,
728                             l_LIMIT_BALANCES_rec.multival_attr2_datatype)
729     THEN
730         x_multival_attr2_datatype := l_x_LIMIT_BALANCES_rec.multival_attr2_datatype;
731     END IF;
732 
733     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.organization_attr_context,
734                             l_LIMIT_BALANCES_rec.organization_attr_context)
735     THEN
736         x_organization_attr_context := l_x_LIMIT_BALANCES_rec.organization_attr_context;
737     END IF;
738 
739     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.organization_attribute,
740                             l_LIMIT_BALANCES_rec.organization_attribute)
741     THEN
742         x_organization_attribute := l_x_LIMIT_BALANCES_rec.organization_attribute;
743     END IF;
744 
745     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.organization_attr_value,
746                             l_LIMIT_BALANCES_rec.organization_attr_value)
747     THEN
748         x_organization_attr_value := l_x_LIMIT_BALANCES_rec.organization_attr_value;
749     END IF;
750 
751     IF NOT QP_GLOBALS.Equal(l_x_LIMIT_BALANCES_rec.reserved_amount,
752                             l_LIMIT_BALANCES_rec.reserved_amount)
753     THEN
754         x_reserved_amount := l_x_LIMIT_BALANCES_rec.reserved_amount;
755     END IF;
756 
757 
758     --  Write to cache.
759 
760     Write_LIMIT_BALANCES
761     (   p_LIMIT_BALANCES_rec          => l_x_LIMIT_BALANCES_rec
762     );
763 
764     --  Set return status.
765 
766     x_return_status := FND_API.G_RET_STS_SUCCESS;
767 
768     --  Get message count and data
769 
770     OE_MSG_PUB.Count_And_Get
771     (   p_count                       => x_msg_count
772     ,   p_data                        => x_msg_data
773     );
774 
775 
776 EXCEPTION
777 
778     WHEN FND_API.G_EXC_ERROR THEN
779 
780         x_return_status := FND_API.G_RET_STS_ERROR;
781 
782         --  Get message count and data
783 
784         OE_MSG_PUB.Count_And_Get
785         (   p_count                       => x_msg_count
786         ,   p_data                        => x_msg_data
787         );
788 
789     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
790 
791         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
792 
793         --  Get message count and data
794 
795         OE_MSG_PUB.Count_And_Get
796         (   p_count                       => x_msg_count
797         ,   p_data                        => x_msg_data
798         );
799 
800     WHEN OTHERS THEN
801 
802         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
803 
804         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
805         THEN
806             OE_MSG_PUB.Add_Exc_Msg
807             (   G_PKG_NAME
808             ,   'Change_Attribute'
809             );
810         END IF;
811 
812         --  Get message count and data
813 
814         OE_MSG_PUB.Count_And_Get
815         (   p_count                       => x_msg_count
816         ,   p_data                        => x_msg_data
817         );
818 
819 END Change_Attribute;
820 
821 --  Procedure       Validate_And_Write
822 --
823 
824 PROCEDURE Validate_And_Write
825 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
826 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
827 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
828 ,   p_limit_balance_id              IN  NUMBER
829 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
830 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
831 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
832 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
833 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
834 )
835 IS
836 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
837 l_old_LIMIT_BALANCES_rec      QP_Limits_PUB.Limit_Balances_Rec_Type;
838 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
839 l_old_LIMIT_BALANCES_tbl      QP_Limits_PUB.Limit_Balances_Tbl_Type;
840 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
841 l_return_status               VARCHAR2(1);
842 l_x_LIMITS_rec                QP_Limits_PUB.Limits_Rec_Type;
843 l_x_LIMIT_ATTRS_rec           QP_Limits_PUB.Limit_Attrs_Rec_Type;
844 l_x_LIMIT_ATTRS_tbl           QP_Limits_PUB.Limit_Attrs_Tbl_Type;
845 l_x_LIMIT_BALANCES_rec        QP_Limits_PUB.Limit_Balances_Rec_Type;
846 l_x_LIMIT_BALANCES_tbl        QP_Limits_PUB.Limit_Balances_Tbl_Type;
847 BEGIN
848 
849     --  Set control flags.
850 
851     l_control_rec.controlled_operation := TRUE;
852     l_control_rec.validate_entity      := TRUE;
853     l_control_rec.write_to_DB          := TRUE;
854 
855     l_control_rec.default_attributes   := FALSE;
856     l_control_rec.change_attributes    := FALSE;
857     l_control_rec.process              := FALSE;
858 
859     --  Instruct API to retain its caches
860 
861     l_control_rec.clear_api_cache      := FALSE;
862     l_control_rec.clear_api_requests   := FALSE;
863 
864     --  Read LIMIT_BALANCES from cache
865 
866     l_old_LIMIT_BALANCES_rec := Get_LIMIT_BALANCES
867     (   p_db_record                   => TRUE
868     ,   p_limit_balance_id            => p_limit_balance_id
869     );
870 
871     l_LIMIT_BALANCES_rec := Get_LIMIT_BALANCES
872     (   p_db_record                   => FALSE
873     ,   p_limit_balance_id            => p_limit_balance_id
874     );
875 
876     --  Set Operation.
877 
878     IF FND_API.To_Boolean(l_LIMIT_BALANCES_rec.db_flag) THEN
879         l_LIMIT_BALANCES_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
880     ELSE
881         l_LIMIT_BALANCES_rec.operation := QP_GLOBALS.G_OPR_CREATE;
882     END IF;
883 
884     --  Populate LIMIT_BALANCES table
885 
886     l_LIMIT_BALANCES_tbl(1) := l_LIMIT_BALANCES_rec;
887     l_old_LIMIT_BALANCES_tbl(1) := l_old_LIMIT_BALANCES_rec;
888 
889     --  Call QP_Limits_PVT.Process_Limits
890 
891     QP_Limits_PVT.Process_Limits
892     (   p_api_version_number          => 1.0
893     ,   p_init_msg_list               => FND_API.G_TRUE
894     ,   x_return_status               => l_return_status
895     ,   x_msg_count                   => x_msg_count
896     ,   x_msg_data                    => x_msg_data
897     ,   p_control_rec                 => l_control_rec
898     ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
899     ,   p_old_LIMIT_BALANCES_tbl      => l_old_LIMIT_BALANCES_tbl
900     ,   x_LIMITS_rec                  => l_x_LIMITS_rec
901     ,   x_LIMIT_ATTRS_tbl             => l_x_LIMIT_ATTRS_tbl
902     ,   x_LIMIT_BALANCES_tbl          => l_x_LIMIT_BALANCES_tbl
903     );
904 
905     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
906         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
907     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
908         RAISE FND_API.G_EXC_ERROR;
909     END IF;
910 
911 
912     --  Load OUT parameters.
913 
914     l_x_LIMIT_BALANCES_rec := l_x_LIMIT_BALANCES_tbl(1);
915 
916     x_creation_date                := l_x_LIMIT_BALANCES_rec.creation_date;
917     x_created_by                   := l_x_LIMIT_BALANCES_rec.created_by;
918     x_last_update_date             := l_x_LIMIT_BALANCES_rec.last_update_date;
919     x_last_updated_by              := l_x_LIMIT_BALANCES_rec.last_updated_by;
920     x_last_update_login            := l_x_LIMIT_BALANCES_rec.last_update_login;
921 
922     --  Clear LIMIT_BALANCES record cache
923 
924     Clear_LIMIT_BALANCES;
925 
926     --  Keep track of performed operations.
927 
928     l_old_LIMIT_BALANCES_rec.operation := l_LIMIT_BALANCES_rec.operation;
929 
930 
931     --  Set return status.
932 
933     x_return_status := FND_API.G_RET_STS_SUCCESS;
934 
935     --  Get message count and data
936 
937     OE_MSG_PUB.Count_And_Get
938     (   p_count                       => x_msg_count
939     ,   p_data                        => x_msg_data
940     );
941 
942 
943 EXCEPTION
944 
945     WHEN FND_API.G_EXC_ERROR THEN
946 
947         x_return_status := FND_API.G_RET_STS_ERROR;
948 
949         --  Get message count and data
950 
951         OE_MSG_PUB.Count_And_Get
952         (   p_count                       => x_msg_count
953         ,   p_data                        => x_msg_data
954         );
955 
956     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
957 
958         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
959 
960         --  Get message count and data
961 
962         OE_MSG_PUB.Count_And_Get
963         (   p_count                       => x_msg_count
964         ,   p_data                        => x_msg_data
965         );
966 
967     WHEN OTHERS THEN
968 
969         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
970 
971         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
972         THEN
973             OE_MSG_PUB.Add_Exc_Msg
974             (   G_PKG_NAME
975             ,   'Validate_And_Write'
976             );
977         END IF;
978 
979         --  Get message count and data
980 
981         OE_MSG_PUB.Count_And_Get
982         (   p_count                       => x_msg_count
983         ,   p_data                        => x_msg_data
984         );
985 
986 END Validate_And_Write;
987 
988 --  Procedure       Delete_Row
989 --
990 
991 PROCEDURE Delete_Row
992 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
993 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
994 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
995 ,   p_limit_balance_id              IN  NUMBER
996 )
997 IS
998 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
999 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
1000 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1001 l_return_status               VARCHAR2(1);
1002 l_x_LIMITS_rec                QP_Limits_PUB.Limits_Rec_Type;
1003 l_x_LIMIT_ATTRS_rec           QP_Limits_PUB.Limit_Attrs_Rec_Type;
1004 l_x_LIMIT_ATTRS_tbl           QP_Limits_PUB.Limit_Attrs_Tbl_Type;
1005 l_x_LIMIT_BALANCES_rec        QP_Limits_PUB.Limit_Balances_Rec_Type;
1006 l_x_LIMIT_BALANCES_tbl        QP_Limits_PUB.Limit_Balances_Tbl_Type;
1007 BEGIN
1008 
1009     --  Set control flags.
1010 
1011     l_control_rec.controlled_operation := TRUE;
1012     l_control_rec.validate_entity      := TRUE;
1013     l_control_rec.write_to_DB          := TRUE;
1014 
1015     l_control_rec.default_attributes   := FALSE;
1016     l_control_rec.change_attributes    := FALSE;
1017     l_control_rec.process              := FALSE;
1018 
1019     --  Instruct API to retain its caches
1020 
1021     l_control_rec.clear_api_cache      := FALSE;
1022     l_control_rec.clear_api_requests   := FALSE;
1023 
1024     --  Read DB record from cache
1025 
1026     l_LIMIT_BALANCES_rec := Get_LIMIT_BALANCES
1027     (   p_db_record                   => TRUE
1028     ,   p_limit_balance_id            => p_limit_balance_id
1029     );
1030 
1031     --  Set Operation.
1032 
1033     l_LIMIT_BALANCES_rec.operation := QP_GLOBALS.G_OPR_DELETE;
1034 
1035     --  Populate LIMIT_BALANCES table
1036 
1037     l_LIMIT_BALANCES_tbl(1) := l_LIMIT_BALANCES_rec;
1038 
1039     --  Call QP_Limits_PVT.Process_Limits
1040 
1041     QP_Limits_PVT.Process_Limits
1042     (   p_api_version_number          => 1.0
1043     ,   p_init_msg_list               => FND_API.G_TRUE
1044     ,   x_return_status               => l_return_status
1045     ,   x_msg_count                   => x_msg_count
1046     ,   x_msg_data                    => x_msg_data
1047     ,   p_control_rec                 => l_control_rec
1048     ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
1049     ,   x_LIMITS_rec                  => l_x_LIMITS_rec
1050     ,   x_LIMIT_ATTRS_tbl             => l_x_LIMIT_ATTRS_tbl
1051     ,   x_LIMIT_BALANCES_tbl          => l_x_LIMIT_BALANCES_tbl
1052     );
1053 
1054     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1055         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1056     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1057         RAISE FND_API.G_EXC_ERROR;
1058     END IF;
1059 
1060 
1061     --  Clear LIMIT_BALANCES record cache
1062 
1063     Clear_LIMIT_BALANCES;
1064 
1065     --  Set return status.
1066 
1067     x_return_status := FND_API.G_RET_STS_SUCCESS;
1068 
1069     --  Get message count and data
1070 
1071     OE_MSG_PUB.Count_And_Get
1072     (   p_count                       => x_msg_count
1073     ,   p_data                        => x_msg_data
1074     );
1075 
1076 
1077 EXCEPTION
1078 
1079     WHEN FND_API.G_EXC_ERROR THEN
1080 
1081         x_return_status := FND_API.G_RET_STS_ERROR;
1082 
1083         --  Get message count and data
1084 
1085         OE_MSG_PUB.Count_And_Get
1086         (   p_count                       => x_msg_count
1087         ,   p_data                        => x_msg_data
1088         );
1089 
1090     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1091 
1092         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1093 
1094         --  Get message count and data
1095 
1096         OE_MSG_PUB.Count_And_Get
1097         (   p_count                       => x_msg_count
1098         ,   p_data                        => x_msg_data
1099         );
1100 
1101     WHEN OTHERS THEN
1102 
1103         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1104 
1105         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1106         THEN
1107             OE_MSG_PUB.Add_Exc_Msg
1108             (   G_PKG_NAME
1109             ,   'Delete_Row'
1110             );
1111         END IF;
1112 
1113         --  Get message count and data
1114 
1115         OE_MSG_PUB.Count_And_Get
1116         (   p_count                       => x_msg_count
1117         ,   p_data                        => x_msg_data
1118         );
1119 
1120 END Delete_Row;
1121 
1122 --  Procedure       Process_Entity
1123 --
1124 
1125 PROCEDURE Process_Entity
1126 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1127 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1128 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1129 )
1130 IS
1131 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1132 l_return_status               VARCHAR2(1);
1133 l_x_LIMITS_rec                QP_Limits_PUB.Limits_Rec_Type;
1134 l_x_LIMIT_ATTRS_rec           QP_Limits_PUB.Limit_Attrs_Rec_Type;
1135 l_x_LIMIT_ATTRS_tbl           QP_Limits_PUB.Limit_Attrs_Tbl_Type;
1136 l_x_LIMIT_BALANCES_rec        QP_Limits_PUB.Limit_Balances_Rec_Type;
1137 l_x_LIMIT_BALANCES_tbl        QP_Limits_PUB.Limit_Balances_Tbl_Type;
1138 BEGIN
1139 
1140     --  Set control flags.
1141 
1142     l_control_rec.controlled_operation := TRUE;
1143     l_control_rec.process              := TRUE;
1144     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_LIMIT_BALANCES;
1145 
1146     l_control_rec.default_attributes   := FALSE;
1147     l_control_rec.change_attributes    := FALSE;
1148     l_control_rec.validate_entity      := FALSE;
1149     l_control_rec.write_to_DB          := FALSE;
1150 
1151     --  Instruct API to clear its request table
1152 
1153     l_control_rec.clear_api_cache      := FALSE;
1154     l_control_rec.clear_api_requests   := FALSE;
1155 
1156     --  Call QP_Limits_PVT.Process_Limits
1157 
1158     QP_Limits_PVT.Process_Limits
1159     (   p_api_version_number          => 1.0
1160     ,   p_init_msg_list               => FND_API.G_TRUE
1161     ,   x_return_status               => l_return_status
1162     ,   x_msg_count                   => x_msg_count
1163     ,   x_msg_data                    => x_msg_data
1164     ,   p_control_rec                 => l_control_rec
1165     ,   x_LIMITS_rec                  => l_x_LIMITS_rec
1166     ,   x_LIMIT_ATTRS_tbl             => l_x_LIMIT_ATTRS_tbl
1167     ,   x_LIMIT_BALANCES_tbl          => l_x_LIMIT_BALANCES_tbl
1168     );
1169 
1170     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1171         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1172     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1173         RAISE FND_API.G_EXC_ERROR;
1174     END IF;
1175 
1176 
1177     --  Set return status.
1178 
1179     x_return_status := FND_API.G_RET_STS_SUCCESS;
1180 
1181     --  Get message count and data
1182 
1183     OE_MSG_PUB.Count_And_Get
1184     (   p_count                       => x_msg_count
1185     ,   p_data                        => x_msg_data
1186     );
1187 
1188 
1189 EXCEPTION
1190 
1191     WHEN FND_API.G_EXC_ERROR THEN
1192 
1193         x_return_status := FND_API.G_RET_STS_ERROR;
1194 
1195         --  Get message count and data
1196 
1197         OE_MSG_PUB.Count_And_Get
1198         (   p_count                       => x_msg_count
1199         ,   p_data                        => x_msg_data
1200         );
1201 
1202     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1203 
1204         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1205 
1206         --  Get message count and data
1207 
1208         OE_MSG_PUB.Count_And_Get
1209         (   p_count                       => x_msg_count
1210         ,   p_data                        => x_msg_data
1211         );
1212 
1213     WHEN OTHERS THEN
1214 
1215         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1216 
1217         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1218         THEN
1219             OE_MSG_PUB.Add_Exc_Msg
1220             (   G_PKG_NAME
1221             ,   'Process_Entity'
1222             );
1223         END IF;
1224 
1225         --  Get message count and data
1226 
1227         OE_MSG_PUB.Count_And_Get
1228         (   p_count                       => x_msg_count
1229         ,   p_data                        => x_msg_data
1230         );
1231 
1232 END Process_Entity;
1233 
1234 --  Procedure       lock_Row
1235 --
1236 
1237 PROCEDURE Lock_Row
1238 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1239 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1240 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1241 ,   p_attribute1                    IN  VARCHAR2
1242 ,   p_attribute10                   IN  VARCHAR2
1243 ,   p_attribute11                   IN  VARCHAR2
1244 ,   p_attribute12                   IN  VARCHAR2
1245 ,   p_attribute13                   IN  VARCHAR2
1246 ,   p_attribute14                   IN  VARCHAR2
1247 ,   p_attribute15                   IN  VARCHAR2
1248 ,   p_attribute2                    IN  VARCHAR2
1249 ,   p_attribute3                    IN  VARCHAR2
1250 ,   p_attribute4                    IN  VARCHAR2
1251 ,   p_attribute5                    IN  VARCHAR2
1252 ,   p_attribute6                    IN  VARCHAR2
1253 ,   p_attribute7                    IN  VARCHAR2
1254 ,   p_attribute8                    IN  VARCHAR2
1255 ,   p_attribute9                    IN  VARCHAR2
1256 ,   p_available_amount              IN  NUMBER
1257 ,   p_consumed_amount               IN  NUMBER
1258 ,   p_context                       IN  VARCHAR2
1259 ,   p_created_by                    IN  NUMBER
1260 ,   p_creation_date                 IN  DATE
1261 ,   p_last_updated_by               IN  NUMBER
1262 ,   p_last_update_date              IN  DATE
1263 ,   p_last_update_login             IN  NUMBER
1264 ,   p_limit_balance_id              IN  NUMBER
1265 ,   p_limit_id                      IN  NUMBER
1266 ,   p_multival_attr1_type           IN  VARCHAR2
1267 ,   p_multival_attr1_context        IN  VARCHAR2
1268 ,   p_multival_attribute1           IN  VARCHAR2
1269 ,   p_multival_attr1_value          IN  VARCHAR2
1270 ,   p_multival_attr1_datatype       IN  VARCHAR2
1271 ,   p_multival_attr2_type           IN  VARCHAR2
1272 ,   p_multival_attr2_context        IN  VARCHAR2
1273 ,   p_multival_attribute2           IN  VARCHAR2
1274 ,   p_multival_attr2_value          IN  VARCHAR2
1275 ,   p_multival_attr2_datatype       IN  VARCHAR2
1276 ,   p_organization_attr_context     IN  VARCHAR2
1277 ,   p_organization_attribute        IN  VARCHAR2
1278 ,   p_organization_attr_value       IN  VARCHAR2
1279 ,   p_program_application_id        IN  NUMBER
1280 ,   p_program_id                    IN  NUMBER
1281 ,   p_program_update_date           IN  DATE
1282 ,   p_request_id                    IN  NUMBER
1283 ,   p_reserved_amount               IN  NUMBER
1284 )
1285 IS
1286 l_return_status               VARCHAR2(1);
1287 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
1288 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
1289 l_x_LIMITS_rec                QP_Limits_PUB.Limits_Rec_Type;
1290 l_x_LIMIT_ATTRS_rec           QP_Limits_PUB.Limit_Attrs_Rec_Type;
1291 l_x_LIMIT_ATTRS_tbl           QP_Limits_PUB.Limit_Attrs_Tbl_Type;
1292 l_x_LIMIT_BALANCES_rec        QP_Limits_PUB.Limit_Balances_Rec_Type;
1293 l_x_LIMIT_BALANCES_tbl        QP_Limits_PUB.Limit_Balances_Tbl_Type;
1294 BEGIN
1295 
1296     --  Load LIMIT_BALANCES record
1297 
1298     l_LIMIT_BALANCES_rec.attribute1 := p_attribute1;
1299     l_LIMIT_BALANCES_rec.attribute10 := p_attribute10;
1300     l_LIMIT_BALANCES_rec.attribute11 := p_attribute11;
1301     l_LIMIT_BALANCES_rec.attribute12 := p_attribute12;
1302     l_LIMIT_BALANCES_rec.attribute13 := p_attribute13;
1303     l_LIMIT_BALANCES_rec.attribute14 := p_attribute14;
1304     l_LIMIT_BALANCES_rec.attribute15 := p_attribute15;
1305     l_LIMIT_BALANCES_rec.attribute2 := p_attribute2;
1306     l_LIMIT_BALANCES_rec.attribute3 := p_attribute3;
1307     l_LIMIT_BALANCES_rec.attribute4 := p_attribute4;
1308     l_LIMIT_BALANCES_rec.attribute5 := p_attribute5;
1309     l_LIMIT_BALANCES_rec.attribute6 := p_attribute6;
1310     l_LIMIT_BALANCES_rec.attribute7 := p_attribute7;
1311     l_LIMIT_BALANCES_rec.attribute8 := p_attribute8;
1312     l_LIMIT_BALANCES_rec.attribute9 := p_attribute9;
1313     l_LIMIT_BALANCES_rec.available_amount := p_available_amount;
1314     l_LIMIT_BALANCES_rec.consumed_amount := p_consumed_amount;
1315     l_LIMIT_BALANCES_rec.context   := p_context;
1316     l_LIMIT_BALANCES_rec.created_by := p_created_by;
1317     l_LIMIT_BALANCES_rec.creation_date := p_creation_date;
1318     l_LIMIT_BALANCES_rec.last_updated_by := p_last_updated_by;
1319     l_LIMIT_BALANCES_rec.last_update_date := p_last_update_date;
1320     l_LIMIT_BALANCES_rec.last_update_login := p_last_update_login;
1321     l_LIMIT_BALANCES_rec.limit_balance_id := p_limit_balance_id;
1322     l_LIMIT_BALANCES_rec.limit_id  := p_limit_id;
1323     l_LIMIT_BALANCES_rec.multival_attr1_type := p_multival_attr1_type;
1324     l_LIMIT_BALANCES_rec.multival_attr1_context := p_multival_attr1_context;
1325     l_LIMIT_BALANCES_rec.multival_attribute1 := p_multival_attribute1;
1326     l_LIMIT_BALANCES_rec.multival_attr1_value := p_multival_attr1_value;
1327     l_LIMIT_BALANCES_rec.multival_attr1_datatype := p_multival_attr1_datatype;
1328     l_LIMIT_BALANCES_rec.multival_attr2_type := p_multival_attr2_type;
1329     l_LIMIT_BALANCES_rec.multival_attr2_context := p_multival_attr2_context;
1330     l_LIMIT_BALANCES_rec.multival_attribute2 := p_multival_attribute2;
1331     l_LIMIT_BALANCES_rec.multival_attr2_value := p_multival_attr2_value;
1332     l_LIMIT_BALANCES_rec.multival_attr2_datatype := p_multival_attr2_datatype;
1333     l_LIMIT_BALANCES_rec.organization_attr_context := p_organization_attr_context;
1334     l_LIMIT_BALANCES_rec.organization_attribute := p_organization_attribute;
1335     l_LIMIT_BALANCES_rec.organization_attr_value := p_organization_attr_value;
1336     l_LIMIT_BALANCES_rec.program_application_id := p_program_application_id;
1337     l_LIMIT_BALANCES_rec.program_id := p_program_id;
1338     l_LIMIT_BALANCES_rec.program_update_date := p_program_update_date;
1339     l_LIMIT_BALANCES_rec.request_id := p_request_id;
1340     l_LIMIT_BALANCES_rec.reserved_amount := p_reserved_amount;
1341 
1342     --  Populate LIMIT_BALANCES table
1343 
1344     l_LIMIT_BALANCES_tbl(1) := l_LIMIT_BALANCES_rec;
1345 
1346     --  Call QP_Limits_PVT.Lock_Limits
1347 
1348     QP_Limits_PVT.Lock_Limits
1349     (   p_api_version_number          => 1.0
1350     ,   p_init_msg_list               => FND_API.G_TRUE
1351     ,   x_return_status               => l_return_status
1352     ,   x_msg_count                   => x_msg_count
1353     ,   x_msg_data                    => x_msg_data
1354     ,   p_LIMIT_BALANCES_tbl          => l_LIMIT_BALANCES_tbl
1355     ,   x_LIMITS_rec                  => l_x_LIMITS_rec
1356     ,   x_LIMIT_ATTRS_tbl             => l_x_LIMIT_ATTRS_tbl
1357     ,   x_LIMIT_BALANCES_tbl          => l_x_LIMIT_BALANCES_tbl
1358     );
1359 
1360     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1361 
1362         --  Set DB flag and write record to cache.
1363 
1364         l_x_LIMIT_BALANCES_rec.db_flag := FND_API.G_TRUE;
1365 
1366         Write_LIMIT_BALANCES
1367         (   p_LIMIT_BALANCES_rec          => l_x_LIMIT_BALANCES_rec
1368         ,   p_db_record                   => TRUE
1369         );
1370 
1371     END IF;
1372 
1373     --  Set return status.
1374 
1375     x_return_status := l_return_status;
1376 
1377     --  Get message count and data
1378 
1379     OE_MSG_PUB.Count_And_Get
1380     (   p_count                       => x_msg_count
1381     ,   p_data                        => x_msg_data
1382     );
1383 
1384 
1385 EXCEPTION
1386 
1387     WHEN OTHERS THEN
1388 
1389         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1390         THEN
1391             OE_MSG_PUB.Add_Exc_Msg
1392             (   G_PKG_NAME
1393             ,   'Lock_Row'
1394             );
1395         END IF;
1396 
1397         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1398 
1399         --  Get message count and data
1400 
1401         OE_MSG_PUB.Count_And_Get
1402         (   p_count                       => x_msg_count
1403         ,   p_data                        => x_msg_data
1404         );
1405 
1406 
1407 
1408 END Lock_Row;
1409 
1410 --  Procedures maintaining LIMIT_BALANCES record cache.
1411 
1412 PROCEDURE Write_LIMIT_BALANCES
1413 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
1414 ,   p_db_record                     IN  BOOLEAN := FALSE
1415 )
1416 IS
1417 BEGIN
1418 
1419     g_LIMIT_BALANCES_rec := p_LIMIT_BALANCES_rec;
1420 
1421     IF p_db_record THEN
1422 
1423         g_db_LIMIT_BALANCES_rec := p_LIMIT_BALANCES_rec;
1424 
1425     END IF;
1426 
1427 END Write_Limit_Balances;
1428 
1429 FUNCTION Get_LIMIT_BALANCES
1430 (   p_db_record                     IN  BOOLEAN := FALSE
1431 ,   p_limit_balance_id              IN  NUMBER
1432 )
1433 RETURN QP_Limits_PUB.Limit_Balances_Rec_Type
1434 IS
1435 BEGIN
1436 
1437     IF  p_limit_balance_id <> g_LIMIT_BALANCES_rec.limit_balance_id
1438     THEN
1439 
1440         --  Query row from DB
1441 
1442         g_LIMIT_BALANCES_rec := QP_Limit_Balances_Util.Query_Row
1443         (   p_limit_balance_id            => p_limit_balance_id
1444         );
1445 
1446         g_LIMIT_BALANCES_rec.db_flag   := FND_API.G_TRUE;
1447 
1448         --  Load DB record
1449 
1450         g_db_LIMIT_BALANCES_rec        := g_LIMIT_BALANCES_rec;
1451 
1452     END IF;
1453 
1454     IF p_db_record THEN
1455 
1456         RETURN g_db_LIMIT_BALANCES_rec;
1457 
1458     ELSE
1459 
1460         RETURN g_LIMIT_BALANCES_rec;
1461 
1462     END IF;
1463 
1464 END Get_Limit_Balances;
1465 
1466 PROCEDURE Clear_Limit_Balances
1467 IS
1468 BEGIN
1469 
1470     g_LIMIT_BALANCES_rec           := QP_Limits_PUB.G_MISS_LIMIT_BALANCES_REC;
1471     g_db_LIMIT_BALANCES_rec        := QP_Limits_PUB.G_MISS_LIMIT_BALANCES_REC;
1472 
1473 END Clear_Limit_Balances;
1474 
1475 END QP_QP_Form_Limit_Balances;