DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_LIMIT_BALANCES_UTIL

Source


1 PACKAGE BODY QP_Limit_Balances_Util AS
2 /* $Header: QPXULMBB.pls 120.1 2005/06/10 02:17:54 appldev  $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Limit_Balances_Util';
7 
8 --  Procedure Clear_Dependent_Attr
9 
10 PROCEDURE Clear_Dependent_Attr
11 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
12 ,   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
13 ,   p_old_LIMIT_BALANCES_rec        IN  QP_Limits_PUB.Limit_Balances_Rec_Type :=
14                                         QP_Limits_PUB.G_MISS_LIMIT_BALANCES_REC
15 ,   x_LIMIT_BALANCES_rec            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Rec_Type
16 )
17 IS
18 l_index                       NUMBER := 0;
19 l_src_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
20 l_dep_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
21 BEGIN
22 
23     --  Load out record
24 
25     x_LIMIT_BALANCES_rec := p_LIMIT_BALANCES_rec;
26 
27     --  If attr_id is missing compare old and new records and for
28     --  every changed attribute clear its dependent fields.
29 
30     IF p_attr_id = FND_API.G_MISS_NUM THEN
31 
32         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute1,p_old_LIMIT_BALANCES_rec.attribute1)
33         THEN
34             l_index := l_index + 1;
35             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE1;
36         END IF;
37 
38         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute10,p_old_LIMIT_BALANCES_rec.attribute10)
39         THEN
40             l_index := l_index + 1;
41             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE10;
42         END IF;
43 
44         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute11,p_old_LIMIT_BALANCES_rec.attribute11)
45         THEN
46             l_index := l_index + 1;
47             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE11;
48         END IF;
49 
50         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute12,p_old_LIMIT_BALANCES_rec.attribute12)
51         THEN
52             l_index := l_index + 1;
53             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE12;
54         END IF;
55 
56         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute13,p_old_LIMIT_BALANCES_rec.attribute13)
57         THEN
58             l_index := l_index + 1;
59             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE13;
60         END IF;
61 
62         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute14,p_old_LIMIT_BALANCES_rec.attribute14)
63         THEN
64             l_index := l_index + 1;
65             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE14;
66         END IF;
67 
68         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute15,p_old_LIMIT_BALANCES_rec.attribute15)
69         THEN
70             l_index := l_index + 1;
71             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE15;
72         END IF;
73 
74         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute2,p_old_LIMIT_BALANCES_rec.attribute2)
75         THEN
76             l_index := l_index + 1;
77             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE2;
78         END IF;
79 
80         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute3,p_old_LIMIT_BALANCES_rec.attribute3)
81         THEN
82             l_index := l_index + 1;
83             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE3;
84         END IF;
85 
86         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute4,p_old_LIMIT_BALANCES_rec.attribute4)
87         THEN
88             l_index := l_index + 1;
89             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE4;
90         END IF;
91 
92         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute5,p_old_LIMIT_BALANCES_rec.attribute5)
93         THEN
94             l_index := l_index + 1;
95             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE5;
96         END IF;
97 
98         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute6,p_old_LIMIT_BALANCES_rec.attribute6)
99         THEN
100             l_index := l_index + 1;
101             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE6;
102         END IF;
103 
104         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute7,p_old_LIMIT_BALANCES_rec.attribute7)
105         THEN
106             l_index := l_index + 1;
107             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE7;
108         END IF;
109 
110         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute8,p_old_LIMIT_BALANCES_rec.attribute8)
111         THEN
112             l_index := l_index + 1;
113             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE8;
114         END IF;
115 
116         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute9,p_old_LIMIT_BALANCES_rec.attribute9)
117         THEN
118             l_index := l_index + 1;
119             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE9;
120         END IF;
121 
122         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.available_amount,p_old_LIMIT_BALANCES_rec.available_amount)
123         THEN
124             l_index := l_index + 1;
125             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_AVAILABLE_AMOUNT;
126         END IF;
127 
128         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.consumed_amount,p_old_LIMIT_BALANCES_rec.consumed_amount)
129         THEN
130             l_index := l_index + 1;
131             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CONSUMED_AMOUNT;
132         END IF;
133 
134         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.context,p_old_LIMIT_BALANCES_rec.context)
135         THEN
136             l_index := l_index + 1;
137             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CONTEXT;
138         END IF;
139 
140         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.created_by,p_old_LIMIT_BALANCES_rec.created_by)
141         THEN
142             l_index := l_index + 1;
143             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CREATED_BY;
144         END IF;
145 
146         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.creation_date,p_old_LIMIT_BALANCES_rec.creation_date)
147         THEN
148             l_index := l_index + 1;
149             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CREATION_DATE;
150         END IF;
151 
152         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_updated_by,p_old_LIMIT_BALANCES_rec.last_updated_by)
153         THEN
154             l_index := l_index + 1;
155             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LAST_UPDATED_BY;
156         END IF;
157 
158         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_update_date,p_old_LIMIT_BALANCES_rec.last_update_date)
159         THEN
160             l_index := l_index + 1;
161             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LAST_UPDATE_DATE;
162         END IF;
163 
164         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_update_login,p_old_LIMIT_BALANCES_rec.last_update_login)
165         THEN
166             l_index := l_index + 1;
167             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LAST_UPDATE_LOGIN;
168         END IF;
169 
170         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_balance_id,p_old_LIMIT_BALANCES_rec.limit_balance_id)
171         THEN
172             l_index := l_index + 1;
173             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LIMIT_BALANCE;
174         END IF;
175 
176         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_id,p_old_LIMIT_BALANCES_rec.limit_id)
177         THEN
178             l_index := l_index + 1;
179             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LIMIT;
180         END IF;
181 
182         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_application_id,p_old_LIMIT_BALANCES_rec.program_application_id)
183         THEN
184             l_index := l_index + 1;
185             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_PROGRAM_APPLICATION;
186         END IF;
187 
188         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_id,p_old_LIMIT_BALANCES_rec.program_id)
189         THEN
190             l_index := l_index + 1;
191             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_PROGRAM;
192         END IF;
193 
194         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_update_date,p_old_LIMIT_BALANCES_rec.program_update_date)
195         THEN
196             l_index := l_index + 1;
197             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_PROGRAM_UPDATE_DATE;
198         END IF;
199 
200         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.request_id,p_old_LIMIT_BALANCES_rec.request_id)
201         THEN
202             l_index := l_index + 1;
203             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_REQUEST;
204         END IF;
205 
206         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.reserved_amount,p_old_LIMIT_BALANCES_rec.reserved_amount)
207         THEN
208             l_index := l_index + 1;
209             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_RESERVED_AMOUNT;
210         END IF;
211 
212         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_type,p_old_LIMIT_BALANCES_rec.multival_attr1_type)
213         THEN
214             l_index := l_index + 1;
215             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_TYPE;
216         END IF;
217 
218         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_context,p_old_LIMIT_BALANCES_rec.multival_attr1_context)
219         THEN
220             l_index := l_index + 1;
221             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_CONTEXT;
222         END IF;
223 
224         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attribute1,p_old_LIMIT_BALANCES_rec.multival_attribute1)
225         THEN
226             l_index := l_index + 1;
227             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTRIBUTE1;
228         END IF;
229 
230         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_value,p_old_LIMIT_BALANCES_rec.multival_attr1_value)
231         THEN
232             l_index := l_index + 1;
233             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_VALUE;
234         END IF;
235 
236         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_datatype,p_old_LIMIT_BALANCES_rec.multival_attr1_datatype)
237         THEN
238             l_index := l_index + 1;
239             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_DATATYPE;
240         END IF;
241 
242         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_type,p_old_LIMIT_BALANCES_rec.multival_attr2_type)
243         THEN
244             l_index := l_index + 1;
245             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_TYPE;
246         END IF;
247 
248         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_context,p_old_LIMIT_BALANCES_rec.multival_attr2_context)
249         THEN
250             l_index := l_index + 1;
251             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_CONTEXT;
252         END IF;
253 
254         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attribute2,p_old_LIMIT_BALANCES_rec.multival_attribute2)
255         THEN
256             l_index := l_index + 1;
257             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTRIBUTE2;
258         END IF;
259 
260         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_value,p_old_LIMIT_BALANCES_rec.multival_attr2_value)
261         THEN
262             l_index := l_index + 1;
263             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_VALUE;
264         END IF;
265 
266         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_datatype,p_old_LIMIT_BALANCES_rec.multival_attr2_datatype)
267         THEN
268             l_index := l_index + 1;
269             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_DATATYPE;
270         END IF;
271 
272         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attr_context,p_old_LIMIT_BALANCES_rec.organization_attr_context)
273         THEN
274             l_index := l_index + 1;
275             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ORGANIZATION_ATTR_CONTEXT;
276         END IF;
277 
278         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attribute,p_old_LIMIT_BALANCES_rec.organization_attribute)
279         THEN
280             l_index := l_index + 1;
281             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ORGANIZATION_ATTRIBUTE;
282         END IF;
283 
284         IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attr_value,p_old_LIMIT_BALANCES_rec.organization_attr_value)
285         THEN
286             l_index := l_index + 1;
287             l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ORGANIZATION_ATTR_VALUE;
288         END IF;
289 
290     ELSIF p_attr_id = G_ATTRIBUTE1 THEN
291         l_index := l_index + 1;
292         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE1;
293     ELSIF p_attr_id = G_ATTRIBUTE10 THEN
294         l_index := l_index + 1;
295         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE10;
296     ELSIF p_attr_id = G_ATTRIBUTE11 THEN
297         l_index := l_index + 1;
298         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE11;
299     ELSIF p_attr_id = G_ATTRIBUTE12 THEN
300         l_index := l_index + 1;
301         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE12;
302     ELSIF p_attr_id = G_ATTRIBUTE13 THEN
303         l_index := l_index + 1;
304         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE13;
305     ELSIF p_attr_id = G_ATTRIBUTE14 THEN
306         l_index := l_index + 1;
307         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE14;
308     ELSIF p_attr_id = G_ATTRIBUTE15 THEN
309         l_index := l_index + 1;
310         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE15;
311     ELSIF p_attr_id = G_ATTRIBUTE2 THEN
312         l_index := l_index + 1;
313         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE2;
314     ELSIF p_attr_id = G_ATTRIBUTE3 THEN
315         l_index := l_index + 1;
316         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE3;
317     ELSIF p_attr_id = G_ATTRIBUTE4 THEN
318         l_index := l_index + 1;
319         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE4;
320     ELSIF p_attr_id = G_ATTRIBUTE5 THEN
321         l_index := l_index + 1;
322         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE5;
323     ELSIF p_attr_id = G_ATTRIBUTE6 THEN
324         l_index := l_index + 1;
325         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE6;
326     ELSIF p_attr_id = G_ATTRIBUTE7 THEN
327         l_index := l_index + 1;
328         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE7;
329     ELSIF p_attr_id = G_ATTRIBUTE8 THEN
330         l_index := l_index + 1;
331         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE8;
332     ELSIF p_attr_id = G_ATTRIBUTE9 THEN
333         l_index := l_index + 1;
334         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ATTRIBUTE9;
335     ELSIF p_attr_id = G_AVAILABLE_AMOUNT THEN
336         l_index := l_index + 1;
337         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_AVAILABLE_AMOUNT;
338     ELSIF p_attr_id = G_CONSUMED_AMOUNT THEN
339         l_index := l_index + 1;
340         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CONSUMED_AMOUNT;
341     ELSIF p_attr_id = G_CONTEXT THEN
342         l_index := l_index + 1;
343         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CONTEXT;
344     ELSIF p_attr_id = G_CREATED_BY THEN
345         l_index := l_index + 1;
346         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CREATED_BY;
347     ELSIF p_attr_id = G_CREATION_DATE THEN
348         l_index := l_index + 1;
349         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_CREATION_DATE;
350     ELSIF p_attr_id = G_LAST_UPDATED_BY THEN
351         l_index := l_index + 1;
352         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LAST_UPDATED_BY;
353     ELSIF p_attr_id = G_LAST_UPDATE_DATE THEN
354         l_index := l_index + 1;
355         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LAST_UPDATE_DATE;
356     ELSIF p_attr_id = G_LAST_UPDATE_LOGIN THEN
357         l_index := l_index + 1;
358         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LAST_UPDATE_LOGIN;
359     ELSIF p_attr_id = G_LIMIT_BALANCE THEN
360         l_index := l_index + 1;
361         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LIMIT_BALANCE;
362     ELSIF p_attr_id = G_LIMIT THEN
363         l_index := l_index + 1;
364         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_LIMIT;
365     ELSIF p_attr_id = G_PROGRAM_APPLICATION THEN
366         l_index := l_index + 1;
367         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_PROGRAM_APPLICATION;
368     ELSIF p_attr_id = G_PROGRAM THEN
369         l_index := l_index + 1;
370         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_PROGRAM;
371     ELSIF p_attr_id = G_PROGRAM_UPDATE_DATE THEN
372         l_index := l_index + 1;
373         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_PROGRAM_UPDATE_DATE;
374     ELSIF p_attr_id = G_REQUEST THEN
375         l_index := l_index + 1;
376         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_REQUEST;
377     ELSIF p_attr_id = G_RESERVED_AMOUNT THEN
378         l_index := l_index + 1;
379         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_RESERVED_AMOUNT;
380     ELSIF p_attr_id = G_MULTIVAL_ATTR1_TYPE THEN
381         l_index := l_index + 1;
382         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_TYPE;
383     ELSIF p_attr_id = G_MULTIVAL_ATTR1_CONTEXT THEN
384         l_index := l_index + 1;
385         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_CONTEXT;
386     ELSIF p_attr_id = G_MULTIVAL_ATTRIBUTE1 THEN
387         l_index := l_index + 1;
388         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTRIBUTE1;
389     ELSIF p_attr_id = G_MULTIVAL_ATTR1_VALUE THEN
390         l_index := l_index + 1;
391         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_VALUE;
392     ELSIF p_attr_id = G_MULTIVAL_ATTR1_DATATYPE THEN
393         l_index := l_index + 1;
394         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR1_DATATYPE;
395     ELSIF p_attr_id = G_MULTIVAL_ATTR2_TYPE THEN
396         l_index := l_index + 1;
397         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_TYPE;
398     ELSIF p_attr_id = G_MULTIVAL_ATTR2_CONTEXT THEN
399         l_index := l_index + 1;
400         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_CONTEXT;
401     ELSIF p_attr_id = G_MULTIVAL_ATTRIBUTE2 THEN
402         l_index := l_index + 1;
403         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTRIBUTE2;
404     ELSIF p_attr_id = G_MULTIVAL_ATTR2_VALUE THEN
405         l_index := l_index + 1;
406         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_VALUE;
407     ELSIF p_attr_id = G_MULTIVAL_ATTR2_DATATYPE THEN
408         l_index := l_index + 1;
409         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_MULTIVAL_ATTR2_DATATYPE;
410     ELSIF p_attr_id = G_ORGANIZATION_ATTR_CONTEXT THEN
411         l_index := l_index + 1;
412         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ORGANIZATION_ATTR_CONTEXT;
413     ELSIF p_attr_id = G_ORGANIZATION_ATTRIBUTE THEN
414         l_index := l_index + 1;
415         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ORGANIZATION_ATTRIBUTE;
416     ELSIF p_attr_id = G_ORGANIZATION_ATTR_VALUE THEN
417         l_index := l_index + 1;
418         l_src_attr_tbl(l_index) := QP_LIMIT_BALANCES_UTIL.G_ORGANIZATION_ATTR_VALUE;
419     END IF;
420 
421 END Clear_Dependent_Attr;
422 
423 --  Procedure Apply_Attribute_Changes
424 
425 PROCEDURE Apply_Attribute_Changes
426 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
427 ,   p_old_LIMIT_BALANCES_rec        IN  QP_Limits_PUB.Limit_Balances_Rec_Type :=
428                                         QP_Limits_PUB.G_MISS_LIMIT_BALANCES_REC
429 ,   x_LIMIT_BALANCES_rec            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Rec_Type
430 )
431 IS
432 BEGIN
433 
434     --  Load out record
435 
436     x_LIMIT_BALANCES_rec := p_LIMIT_BALANCES_rec;
437 
438     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute1,p_old_LIMIT_BALANCES_rec.attribute1)
439     THEN
440         NULL;
441     END IF;
442 
443     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute10,p_old_LIMIT_BALANCES_rec.attribute10)
444     THEN
445         NULL;
446     END IF;
447 
448     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute11,p_old_LIMIT_BALANCES_rec.attribute11)
449     THEN
450         NULL;
451     END IF;
452 
453     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute12,p_old_LIMIT_BALANCES_rec.attribute12)
454     THEN
455         NULL;
456     END IF;
457 
458     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute13,p_old_LIMIT_BALANCES_rec.attribute13)
459     THEN
460         NULL;
461     END IF;
462 
463     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute14,p_old_LIMIT_BALANCES_rec.attribute14)
464     THEN
465         NULL;
466     END IF;
467 
468     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute15,p_old_LIMIT_BALANCES_rec.attribute15)
469     THEN
470         NULL;
471     END IF;
472 
473     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute2,p_old_LIMIT_BALANCES_rec.attribute2)
474     THEN
475         NULL;
476     END IF;
477 
478     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute3,p_old_LIMIT_BALANCES_rec.attribute3)
479     THEN
480         NULL;
481     END IF;
482 
483     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute4,p_old_LIMIT_BALANCES_rec.attribute4)
484     THEN
485         NULL;
486     END IF;
487 
488     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute5,p_old_LIMIT_BALANCES_rec.attribute5)
489     THEN
490         NULL;
491     END IF;
492 
493     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute6,p_old_LIMIT_BALANCES_rec.attribute6)
494     THEN
495         NULL;
496     END IF;
497 
498     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute7,p_old_LIMIT_BALANCES_rec.attribute7)
499     THEN
500         NULL;
501     END IF;
502 
503     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute8,p_old_LIMIT_BALANCES_rec.attribute8)
504     THEN
505         NULL;
506     END IF;
507 
508     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute9,p_old_LIMIT_BALANCES_rec.attribute9)
509     THEN
510         NULL;
511     END IF;
512 
513     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.available_amount,p_old_LIMIT_BALANCES_rec.available_amount)
514     THEN
515         NULL;
516     END IF;
517 
518     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.consumed_amount,p_old_LIMIT_BALANCES_rec.consumed_amount)
519     THEN
520         NULL;
521     END IF;
522 
523     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.context,p_old_LIMIT_BALANCES_rec.context)
524     THEN
525         NULL;
526     END IF;
527 
528     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.created_by,p_old_LIMIT_BALANCES_rec.created_by)
529     THEN
530         NULL;
531     END IF;
532 
533     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.creation_date,p_old_LIMIT_BALANCES_rec.creation_date)
534     THEN
535         NULL;
536     END IF;
537 
538     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_updated_by,p_old_LIMIT_BALANCES_rec.last_updated_by)
539     THEN
540         NULL;
541     END IF;
542 
543     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_update_date,p_old_LIMIT_BALANCES_rec.last_update_date)
544     THEN
545         NULL;
546     END IF;
547 
548     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_update_login,p_old_LIMIT_BALANCES_rec.last_update_login)
549     THEN
550         NULL;
551     END IF;
552 
553     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_balance_id,p_old_LIMIT_BALANCES_rec.limit_balance_id)
554     THEN
555         NULL;
556     END IF;
557 
558     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_id,p_old_LIMIT_BALANCES_rec.limit_id)
559     THEN
560         NULL;
561     END IF;
562 
563     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_application_id,p_old_LIMIT_BALANCES_rec.program_application_id)
564     THEN
565         NULL;
566     END IF;
567 
568     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_id,p_old_LIMIT_BALANCES_rec.program_id)
569     THEN
570         NULL;
571     END IF;
572 
573     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_update_date,p_old_LIMIT_BALANCES_rec.program_update_date)
574     THEN
575         NULL;
576     END IF;
577 
578     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.request_id,p_old_LIMIT_BALANCES_rec.request_id)
579     THEN
580         NULL;
581     END IF;
582 
583     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.reserved_amount,p_old_LIMIT_BALANCES_rec.reserved_amount)
584     THEN
585         NULL;
586     END IF;
587 
588     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_type,p_old_LIMIT_BALANCES_rec.multival_attr1_type)
589     THEN
590         NULL;
591     END IF;
592 
593     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_context,p_old_LIMIT_BALANCES_rec.multival_attr1_context)
594     THEN
595         NULL;
596     END IF;
597 
598     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attribute1,p_old_LIMIT_BALANCES_rec.multival_attribute1)
599     THEN
600         NULL;
601     END IF;
602 
603     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_value,p_old_LIMIT_BALANCES_rec.multival_attr1_value)
604     THEN
605         NULL;
606     END IF;
607 
608     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_datatype,p_old_LIMIT_BALANCES_rec.multival_attr1_datatype)
609     THEN
610         NULL;
611     END IF;
612 
613     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_type,p_old_LIMIT_BALANCES_rec.multival_attr2_type)
614     THEN
615         NULL;
616     END IF;
617 
618     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_context,p_old_LIMIT_BALANCES_rec.multival_attr2_context)
619     THEN
620         NULL;
621     END IF;
622 
623     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attribute2,p_old_LIMIT_BALANCES_rec.multival_attribute2)
624     THEN
625         NULL;
626     END IF;
627 
628     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_value,p_old_LIMIT_BALANCES_rec.multival_attr2_value)
629     THEN
630         NULL;
631     END IF;
632 
633     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_datatype,p_old_LIMIT_BALANCES_rec.multival_attr2_datatype)
634     THEN
635         NULL;
636     END IF;
637 
638     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attr_context,p_old_LIMIT_BALANCES_rec.organization_attr_context)
639     THEN
640         NULL;
641     END IF;
642 
643     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attribute,p_old_LIMIT_BALANCES_rec.organization_attribute)
644     THEN
645         NULL;
646     END IF;
647 
648     IF NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attr_value,p_old_LIMIT_BALANCES_rec.organization_attr_value)
649     THEN
650         NULL;
651     END IF;
652 
653 
654 END Apply_Attribute_Changes;
655 
656 --  Function Complete_Record
657 
658 FUNCTION Complete_Record
659 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
660 ,   p_old_LIMIT_BALANCES_rec        IN  QP_Limits_PUB.Limit_Balances_Rec_Type
661 ) RETURN QP_Limits_PUB.Limit_Balances_Rec_Type
662 IS
663 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type := p_LIMIT_BALANCES_rec;
664 BEGIN
665 
666     IF l_LIMIT_BALANCES_rec.attribute1 = FND_API.G_MISS_CHAR THEN
667         l_LIMIT_BALANCES_rec.attribute1 := p_old_LIMIT_BALANCES_rec.attribute1;
668     END IF;
669 
670     IF l_LIMIT_BALANCES_rec.attribute10 = FND_API.G_MISS_CHAR THEN
671         l_LIMIT_BALANCES_rec.attribute10 := p_old_LIMIT_BALANCES_rec.attribute10;
672     END IF;
673 
674     IF l_LIMIT_BALANCES_rec.attribute11 = FND_API.G_MISS_CHAR THEN
675         l_LIMIT_BALANCES_rec.attribute11 := p_old_LIMIT_BALANCES_rec.attribute11;
676     END IF;
677 
678     IF l_LIMIT_BALANCES_rec.attribute12 = FND_API.G_MISS_CHAR THEN
679         l_LIMIT_BALANCES_rec.attribute12 := p_old_LIMIT_BALANCES_rec.attribute12;
680     END IF;
681 
682     IF l_LIMIT_BALANCES_rec.attribute13 = FND_API.G_MISS_CHAR THEN
683         l_LIMIT_BALANCES_rec.attribute13 := p_old_LIMIT_BALANCES_rec.attribute13;
684     END IF;
685 
686     IF l_LIMIT_BALANCES_rec.attribute14 = FND_API.G_MISS_CHAR THEN
687         l_LIMIT_BALANCES_rec.attribute14 := p_old_LIMIT_BALANCES_rec.attribute14;
688     END IF;
689 
690     IF l_LIMIT_BALANCES_rec.attribute15 = FND_API.G_MISS_CHAR THEN
691         l_LIMIT_BALANCES_rec.attribute15 := p_old_LIMIT_BALANCES_rec.attribute15;
692     END IF;
693 
694     IF l_LIMIT_BALANCES_rec.attribute2 = FND_API.G_MISS_CHAR THEN
695         l_LIMIT_BALANCES_rec.attribute2 := p_old_LIMIT_BALANCES_rec.attribute2;
696     END IF;
697 
698     IF l_LIMIT_BALANCES_rec.attribute3 = FND_API.G_MISS_CHAR THEN
699         l_LIMIT_BALANCES_rec.attribute3 := p_old_LIMIT_BALANCES_rec.attribute3;
700     END IF;
701 
702     IF l_LIMIT_BALANCES_rec.attribute4 = FND_API.G_MISS_CHAR THEN
703         l_LIMIT_BALANCES_rec.attribute4 := p_old_LIMIT_BALANCES_rec.attribute4;
704     END IF;
705 
706     IF l_LIMIT_BALANCES_rec.attribute5 = FND_API.G_MISS_CHAR THEN
707         l_LIMIT_BALANCES_rec.attribute5 := p_old_LIMIT_BALANCES_rec.attribute5;
708     END IF;
709 
710     IF l_LIMIT_BALANCES_rec.attribute6 = FND_API.G_MISS_CHAR THEN
711         l_LIMIT_BALANCES_rec.attribute6 := p_old_LIMIT_BALANCES_rec.attribute6;
712     END IF;
713 
714     IF l_LIMIT_BALANCES_rec.attribute7 = FND_API.G_MISS_CHAR THEN
715         l_LIMIT_BALANCES_rec.attribute7 := p_old_LIMIT_BALANCES_rec.attribute7;
716     END IF;
717 
718     IF l_LIMIT_BALANCES_rec.attribute8 = FND_API.G_MISS_CHAR THEN
719         l_LIMIT_BALANCES_rec.attribute8 := p_old_LIMIT_BALANCES_rec.attribute8;
720     END IF;
721 
722     IF l_LIMIT_BALANCES_rec.attribute9 = FND_API.G_MISS_CHAR THEN
723         l_LIMIT_BALANCES_rec.attribute9 := p_old_LIMIT_BALANCES_rec.attribute9;
724     END IF;
725 
726     IF l_LIMIT_BALANCES_rec.available_amount = FND_API.G_MISS_NUM THEN
727         l_LIMIT_BALANCES_rec.available_amount := p_old_LIMIT_BALANCES_rec.available_amount;
728     END IF;
729 
730     IF l_LIMIT_BALANCES_rec.consumed_amount = FND_API.G_MISS_NUM THEN
731         l_LIMIT_BALANCES_rec.consumed_amount := p_old_LIMIT_BALANCES_rec.consumed_amount;
732     END IF;
733 
734     IF l_LIMIT_BALANCES_rec.context = FND_API.G_MISS_CHAR THEN
735         l_LIMIT_BALANCES_rec.context := p_old_LIMIT_BALANCES_rec.context;
736     END IF;
737 
738     IF l_LIMIT_BALANCES_rec.created_by = FND_API.G_MISS_NUM THEN
739         l_LIMIT_BALANCES_rec.created_by := p_old_LIMIT_BALANCES_rec.created_by;
740     END IF;
741 
742     IF l_LIMIT_BALANCES_rec.creation_date = FND_API.G_MISS_DATE THEN
743         l_LIMIT_BALANCES_rec.creation_date := p_old_LIMIT_BALANCES_rec.creation_date;
744     END IF;
745 
746     IF l_LIMIT_BALANCES_rec.last_updated_by = FND_API.G_MISS_NUM THEN
747         l_LIMIT_BALANCES_rec.last_updated_by := p_old_LIMIT_BALANCES_rec.last_updated_by;
748     END IF;
749 
750     IF l_LIMIT_BALANCES_rec.last_update_date = FND_API.G_MISS_DATE THEN
751         l_LIMIT_BALANCES_rec.last_update_date := p_old_LIMIT_BALANCES_rec.last_update_date;
752     END IF;
753 
754     IF l_LIMIT_BALANCES_rec.last_update_login = FND_API.G_MISS_NUM THEN
755         l_LIMIT_BALANCES_rec.last_update_login := p_old_LIMIT_BALANCES_rec.last_update_login;
756     END IF;
757 
758     IF l_LIMIT_BALANCES_rec.limit_balance_id = FND_API.G_MISS_NUM THEN
759         l_LIMIT_BALANCES_rec.limit_balance_id := p_old_LIMIT_BALANCES_rec.limit_balance_id;
760     END IF;
761 
762     IF l_LIMIT_BALANCES_rec.limit_id = FND_API.G_MISS_NUM THEN
763         l_LIMIT_BALANCES_rec.limit_id := p_old_LIMIT_BALANCES_rec.limit_id;
764     END IF;
765 
766     IF l_LIMIT_BALANCES_rec.program_application_id = FND_API.G_MISS_NUM THEN
767         l_LIMIT_BALANCES_rec.program_application_id := p_old_LIMIT_BALANCES_rec.program_application_id;
768     END IF;
769 
770     IF l_LIMIT_BALANCES_rec.program_id = FND_API.G_MISS_NUM THEN
771         l_LIMIT_BALANCES_rec.program_id := p_old_LIMIT_BALANCES_rec.program_id;
772     END IF;
773 
774     IF l_LIMIT_BALANCES_rec.program_update_date = FND_API.G_MISS_DATE THEN
775         l_LIMIT_BALANCES_rec.program_update_date := p_old_LIMIT_BALANCES_rec.program_update_date;
776     END IF;
777 
778     IF l_LIMIT_BALANCES_rec.request_id = FND_API.G_MISS_NUM THEN
779         l_LIMIT_BALANCES_rec.request_id := p_old_LIMIT_BALANCES_rec.request_id;
780     END IF;
781 
782     IF l_LIMIT_BALANCES_rec.reserved_amount = FND_API.G_MISS_NUM THEN
783         l_LIMIT_BALANCES_rec.reserved_amount := p_old_LIMIT_BALANCES_rec.reserved_amount;
784     END IF;
785 
786     IF l_LIMIT_BALANCES_rec.multival_attr1_type = FND_API.G_MISS_CHAR THEN
787         l_LIMIT_BALANCES_rec.multival_attr1_type := p_old_LIMIT_BALANCES_rec.multival_attr1_type;
788     END IF;
789 
790     IF l_LIMIT_BALANCES_rec.multival_attr1_context = FND_API.G_MISS_CHAR THEN
791         l_LIMIT_BALANCES_rec.multival_attr1_context := p_old_LIMIT_BALANCES_rec.multival_attr1_context;
792     END IF;
793 
794     IF l_LIMIT_BALANCES_rec.multival_attribute1 = FND_API.G_MISS_CHAR THEN
795         l_LIMIT_BALANCES_rec.multival_attribute1 := p_old_LIMIT_BALANCES_rec.multival_attribute1;
796     END IF;
797 
798     IF l_LIMIT_BALANCES_rec.multival_attr1_value = FND_API.G_MISS_CHAR THEN
799         l_LIMIT_BALANCES_rec.multival_attr1_value := p_old_LIMIT_BALANCES_rec.multival_attr1_value;
800     END IF;
801 
802     IF l_LIMIT_BALANCES_rec.multival_attr1_datatype = FND_API.G_MISS_CHAR THEN
803         l_LIMIT_BALANCES_rec.multival_attr1_datatype := p_old_LIMIT_BALANCES_rec.multival_attr1_datatype;
804     END IF;
805 
806     IF l_LIMIT_BALANCES_rec.multival_attr2_type = FND_API.G_MISS_CHAR THEN
807         l_LIMIT_BALANCES_rec.multival_attr2_type := p_old_LIMIT_BALANCES_rec.multival_attr2_type;
808     END IF;
809 
810     IF l_LIMIT_BALANCES_rec.multival_attr2_context = FND_API.G_MISS_CHAR THEN
811         l_LIMIT_BALANCES_rec.multival_attr2_context := p_old_LIMIT_BALANCES_rec.multival_attr2_context;
812     END IF;
813 
814     IF l_LIMIT_BALANCES_rec.multival_attribute2 = FND_API.G_MISS_CHAR THEN
815         l_LIMIT_BALANCES_rec.multival_attribute2 := p_old_LIMIT_BALANCES_rec.multival_attribute2;
816     END IF;
817 
818     IF l_LIMIT_BALANCES_rec.multival_attr2_value = FND_API.G_MISS_CHAR THEN
819         l_LIMIT_BALANCES_rec.multival_attr2_value := p_old_LIMIT_BALANCES_rec.multival_attr2_value;
820     END IF;
821 
822     IF l_LIMIT_BALANCES_rec.multival_attr2_datatype = FND_API.G_MISS_CHAR THEN
823         l_LIMIT_BALANCES_rec.multival_attr2_datatype := p_old_LIMIT_BALANCES_rec.multival_attr2_datatype;
824     END IF;
825 
826     IF l_LIMIT_BALANCES_rec.organization_attr_context = FND_API.G_MISS_CHAR THEN
827         l_LIMIT_BALANCES_rec.organization_attr_context := p_old_LIMIT_BALANCES_rec.organization_attr_context;
828     END IF;
829 
830     IF l_LIMIT_BALANCES_rec.organization_attribute = FND_API.G_MISS_CHAR THEN
831         l_LIMIT_BALANCES_rec.organization_attribute := p_old_LIMIT_BALANCES_rec.organization_attribute;
832     END IF;
833 
834     IF l_LIMIT_BALANCES_rec.organization_attr_value = FND_API.G_MISS_CHAR THEN
835         l_LIMIT_BALANCES_rec.organization_attr_value := p_old_LIMIT_BALANCES_rec.organization_attr_value;
836     END IF;
837 
838     RETURN l_LIMIT_BALANCES_rec;
839 
840 END Complete_Record;
841 
842 --  Function Convert_Miss_To_Null
843 
844 FUNCTION Convert_Miss_To_Null
845 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
846 ) RETURN QP_Limits_PUB.Limit_Balances_Rec_Type
847 IS
848 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type := p_LIMIT_BALANCES_rec;
849 BEGIN
850 
851     IF l_LIMIT_BALANCES_rec.attribute1 = FND_API.G_MISS_CHAR THEN
852         l_LIMIT_BALANCES_rec.attribute1 := NULL;
853     END IF;
854 
855     IF l_LIMIT_BALANCES_rec.attribute10 = FND_API.G_MISS_CHAR THEN
856         l_LIMIT_BALANCES_rec.attribute10 := NULL;
857     END IF;
858 
859     IF l_LIMIT_BALANCES_rec.attribute11 = FND_API.G_MISS_CHAR THEN
860         l_LIMIT_BALANCES_rec.attribute11 := NULL;
861     END IF;
862 
863     IF l_LIMIT_BALANCES_rec.attribute12 = FND_API.G_MISS_CHAR THEN
864         l_LIMIT_BALANCES_rec.attribute12 := NULL;
865     END IF;
866 
867     IF l_LIMIT_BALANCES_rec.attribute13 = FND_API.G_MISS_CHAR THEN
868         l_LIMIT_BALANCES_rec.attribute13 := NULL;
869     END IF;
870 
871     IF l_LIMIT_BALANCES_rec.attribute14 = FND_API.G_MISS_CHAR THEN
872         l_LIMIT_BALANCES_rec.attribute14 := NULL;
873     END IF;
874 
875     IF l_LIMIT_BALANCES_rec.attribute15 = FND_API.G_MISS_CHAR THEN
876         l_LIMIT_BALANCES_rec.attribute15 := NULL;
877     END IF;
878 
879     IF l_LIMIT_BALANCES_rec.attribute2 = FND_API.G_MISS_CHAR THEN
880         l_LIMIT_BALANCES_rec.attribute2 := NULL;
881     END IF;
882 
883     IF l_LIMIT_BALANCES_rec.attribute3 = FND_API.G_MISS_CHAR THEN
884         l_LIMIT_BALANCES_rec.attribute3 := NULL;
885     END IF;
886 
887     IF l_LIMIT_BALANCES_rec.attribute4 = FND_API.G_MISS_CHAR THEN
888         l_LIMIT_BALANCES_rec.attribute4 := NULL;
889     END IF;
890 
891     IF l_LIMIT_BALANCES_rec.attribute5 = FND_API.G_MISS_CHAR THEN
892         l_LIMIT_BALANCES_rec.attribute5 := NULL;
893     END IF;
894 
895     IF l_LIMIT_BALANCES_rec.attribute6 = FND_API.G_MISS_CHAR THEN
896         l_LIMIT_BALANCES_rec.attribute6 := NULL;
897     END IF;
898 
899     IF l_LIMIT_BALANCES_rec.attribute7 = FND_API.G_MISS_CHAR THEN
900         l_LIMIT_BALANCES_rec.attribute7 := NULL;
901     END IF;
902 
903     IF l_LIMIT_BALANCES_rec.attribute8 = FND_API.G_MISS_CHAR THEN
904         l_LIMIT_BALANCES_rec.attribute8 := NULL;
905     END IF;
906 
907     IF l_LIMIT_BALANCES_rec.attribute9 = FND_API.G_MISS_CHAR THEN
908         l_LIMIT_BALANCES_rec.attribute9 := NULL;
909     END IF;
910 
911     IF l_LIMIT_BALANCES_rec.available_amount = FND_API.G_MISS_NUM THEN
912         l_LIMIT_BALANCES_rec.available_amount := NULL;
913     END IF;
914 
915     IF l_LIMIT_BALANCES_rec.consumed_amount = FND_API.G_MISS_NUM THEN
916         l_LIMIT_BALANCES_rec.consumed_amount := NULL;
917     END IF;
918 
919     IF l_LIMIT_BALANCES_rec.context = FND_API.G_MISS_CHAR THEN
920         l_LIMIT_BALANCES_rec.context := NULL;
921     END IF;
922 
923     IF l_LIMIT_BALANCES_rec.created_by = FND_API.G_MISS_NUM THEN
924         l_LIMIT_BALANCES_rec.created_by := NULL;
925     END IF;
926 
927     IF l_LIMIT_BALANCES_rec.creation_date = FND_API.G_MISS_DATE THEN
928         l_LIMIT_BALANCES_rec.creation_date := NULL;
929     END IF;
930 
931     IF l_LIMIT_BALANCES_rec.last_updated_by = FND_API.G_MISS_NUM THEN
932         l_LIMIT_BALANCES_rec.last_updated_by := NULL;
933     END IF;
934 
935     IF l_LIMIT_BALANCES_rec.last_update_date = FND_API.G_MISS_DATE THEN
936         l_LIMIT_BALANCES_rec.last_update_date := NULL;
937     END IF;
938 
939     IF l_LIMIT_BALANCES_rec.last_update_login = FND_API.G_MISS_NUM THEN
940         l_LIMIT_BALANCES_rec.last_update_login := NULL;
941     END IF;
942 
943     IF l_LIMIT_BALANCES_rec.limit_balance_id = FND_API.G_MISS_NUM THEN
944         l_LIMIT_BALANCES_rec.limit_balance_id := NULL;
945     END IF;
946 
947     IF l_LIMIT_BALANCES_rec.limit_id = FND_API.G_MISS_NUM THEN
948         l_LIMIT_BALANCES_rec.limit_id := NULL;
949     END IF;
950 
951     IF l_LIMIT_BALANCES_rec.program_application_id = FND_API.G_MISS_NUM THEN
952         l_LIMIT_BALANCES_rec.program_application_id := NULL;
953     END IF;
954 
955     IF l_LIMIT_BALANCES_rec.program_id = FND_API.G_MISS_NUM THEN
956         l_LIMIT_BALANCES_rec.program_id := NULL;
957     END IF;
958 
959     IF l_LIMIT_BALANCES_rec.program_update_date = FND_API.G_MISS_DATE THEN
960         l_LIMIT_BALANCES_rec.program_update_date := NULL;
961     END IF;
962 
963     IF l_LIMIT_BALANCES_rec.request_id = FND_API.G_MISS_NUM THEN
964         l_LIMIT_BALANCES_rec.request_id := NULL;
965     END IF;
966 
967     IF l_LIMIT_BALANCES_rec.reserved_amount = FND_API.G_MISS_NUM THEN
968         l_LIMIT_BALANCES_rec.reserved_amount := NULL;
969     END IF;
970 
971     IF l_LIMIT_BALANCES_rec.multival_attr1_type = FND_API.G_MISS_CHAR THEN
972         l_LIMIT_BALANCES_rec.multival_attr1_type := NULL;
973     END IF;
974 
975     IF l_LIMIT_BALANCES_rec.multival_attr1_context = FND_API.G_MISS_CHAR THEN
976         l_LIMIT_BALANCES_rec.multival_attr1_context := NULL;
977     END IF;
978 
979     IF l_LIMIT_BALANCES_rec.multival_attribute1 = FND_API.G_MISS_CHAR THEN
980         l_LIMIT_BALANCES_rec.multival_attribute1 := NULL;
981     END IF;
982 
983     IF l_LIMIT_BALANCES_rec.multival_attr1_value = FND_API.G_MISS_CHAR THEN
984         l_LIMIT_BALANCES_rec.multival_attr1_value := NULL;
985     END IF;
986 
987     IF l_LIMIT_BALANCES_rec.multival_attr1_datatype = FND_API.G_MISS_CHAR THEN
988         l_LIMIT_BALANCES_rec.multival_attr1_datatype := NULL;
989     END IF;
990 
991     IF l_LIMIT_BALANCES_rec.multival_attr2_type = FND_API.G_MISS_CHAR THEN
992         l_LIMIT_BALANCES_rec.multival_attr2_type := NULL;
993     END IF;
994 
995     IF l_LIMIT_BALANCES_rec.multival_attr2_context = FND_API.G_MISS_CHAR THEN
996         l_LIMIT_BALANCES_rec.multival_attr2_context := NULL;
997     END IF;
998 
999     IF l_LIMIT_BALANCES_rec.multival_attribute2 = FND_API.G_MISS_CHAR THEN
1000         l_LIMIT_BALANCES_rec.multival_attribute2 := NULL;
1001     END IF;
1002 
1003     IF l_LIMIT_BALANCES_rec.multival_attr2_value = FND_API.G_MISS_CHAR THEN
1004         l_LIMIT_BALANCES_rec.multival_attr2_value := NULL;
1005     END IF;
1006 
1007     IF l_LIMIT_BALANCES_rec.multival_attr2_datatype = FND_API.G_MISS_CHAR THEN
1008         l_LIMIT_BALANCES_rec.multival_attr2_datatype := NULL;
1009     END IF;
1010 
1011     IF l_LIMIT_BALANCES_rec.organization_attr_context = FND_API.G_MISS_CHAR THEN
1012         l_LIMIT_BALANCES_rec.organization_attr_context := NULL;
1013     END IF;
1014 
1015     IF l_LIMIT_BALANCES_rec.organization_attribute = FND_API.G_MISS_CHAR THEN
1016         l_LIMIT_BALANCES_rec.organization_attribute := NULL;
1017     END IF;
1018 
1019     IF l_LIMIT_BALANCES_rec.organization_attr_value = FND_API.G_MISS_CHAR THEN
1020         l_LIMIT_BALANCES_rec.organization_attr_value := NULL;
1021     END IF;
1022 
1023     RETURN l_LIMIT_BALANCES_rec;
1024 
1025 END Convert_Miss_To_Null;
1026 
1027 --  Procedure Update_Row
1028 
1029 PROCEDURE Update_Row
1030 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
1031 )
1032 IS
1033 l_check_active_flag VARCHAR2(1);
1034 l_active_flag VARCHAR2(1);
1035 BEGIN
1036   SELECT active_flag
1037        INTO l_active_flag
1038        FROM QP_LIMITS a,QP_LIST_HEADERS_B b
1039        WHERE a.limit_id=p_LIMIT_BALANCES_rec.limit_id
1040        AND   b.list_header_id=a.list_header_id;
1041 
1042 
1043     UPDATE  QP_LIMIT_BALANCES
1044     SET     ATTRIBUTE1                     = p_LIMIT_BALANCES_rec.attribute1
1045     ,       ATTRIBUTE10                    = p_LIMIT_BALANCES_rec.attribute10
1046     ,       ATTRIBUTE11                    = p_LIMIT_BALANCES_rec.attribute11
1047     ,       ATTRIBUTE12                    = p_LIMIT_BALANCES_rec.attribute12
1048     ,       ATTRIBUTE13                    = p_LIMIT_BALANCES_rec.attribute13
1049     ,       ATTRIBUTE14                    = p_LIMIT_BALANCES_rec.attribute14
1050     ,       ATTRIBUTE15                    = p_LIMIT_BALANCES_rec.attribute15
1051     ,       ATTRIBUTE2                     = p_LIMIT_BALANCES_rec.attribute2
1052     ,       ATTRIBUTE3                     = p_LIMIT_BALANCES_rec.attribute3
1053     ,       ATTRIBUTE4                     = p_LIMIT_BALANCES_rec.attribute4
1054     ,       ATTRIBUTE5                     = p_LIMIT_BALANCES_rec.attribute5
1055     ,       ATTRIBUTE6                     = p_LIMIT_BALANCES_rec.attribute6
1056     ,       ATTRIBUTE7                     = p_LIMIT_BALANCES_rec.attribute7
1057     ,       ATTRIBUTE8                     = p_LIMIT_BALANCES_rec.attribute8
1058     ,       ATTRIBUTE9                     = p_LIMIT_BALANCES_rec.attribute9
1059     ,       AVAILABLE_AMOUNT               = p_LIMIT_BALANCES_rec.available_amount
1060     ,       CONSUMED_AMOUNT                = p_LIMIT_BALANCES_rec.consumed_amount
1061     ,       CONTEXT                        = p_LIMIT_BALANCES_rec.context
1062     ,       CREATED_BY                     = p_LIMIT_BALANCES_rec.created_by
1063     ,       CREATION_DATE                  = p_LIMIT_BALANCES_rec.creation_date
1064     ,       LAST_UPDATED_BY                = p_LIMIT_BALANCES_rec.last_updated_by
1065     ,       LAST_UPDATE_DATE               = p_LIMIT_BALANCES_rec.last_update_date
1066     ,       LAST_UPDATE_LOGIN              = p_LIMIT_BALANCES_rec.last_update_login
1067     ,       LIMIT_BALANCE_ID               = p_LIMIT_BALANCES_rec.limit_balance_id
1068     ,       LIMIT_ID                       = p_LIMIT_BALANCES_rec.limit_id
1069     ,       PROGRAM_APPLICATION_ID         = p_LIMIT_BALANCES_rec.program_application_id
1070     ,       PROGRAM_ID                     = p_LIMIT_BALANCES_rec.program_id
1071     ,       PROGRAM_UPDATE_DATE            = p_LIMIT_BALANCES_rec.program_update_date
1072     ,       REQUEST_ID                     = p_LIMIT_BALANCES_rec.request_id
1073     ,       RESERVED_AMOUNT                = p_LIMIT_BALANCES_rec.reserved_amount
1074     ,       MULTIVAL_ATTR1_TYPE            = p_LIMIT_BALANCES_rec.multival_attr1_type
1075     ,       MULTIVAL_ATTR1_CONTEXT         = p_LIMIT_BALANCES_rec.multival_attr1_context
1076     ,       MULTIVAL_ATTRIBUTE1            = p_LIMIT_BALANCES_rec.multival_attribute1
1077     ,       MULTIVAL_ATTR1_VALUE           = p_LIMIT_BALANCES_rec.multival_attr1_value
1078     ,       MULTIVAL_ATTR1_DATATYPE        = p_LIMIT_BALANCES_rec.multival_attr1_datatype
1079     ,       MULTIVAL_ATTR2_TYPE            = p_LIMIT_BALANCES_rec.multival_attr2_type
1080     ,       MULTIVAL_ATTR2_CONTEXT         = p_LIMIT_BALANCES_rec.multival_attr2_context
1081     ,       MULTIVAL_ATTRIBUTE2            = p_LIMIT_BALANCES_rec.multival_attribute2
1082     ,       MULTIVAL_ATTR2_VALUE           = p_LIMIT_BALANCES_rec.multival_attr2_value
1083     ,       MULTIVAL_ATTR2_DATATYPE        = p_LIMIT_BALANCES_rec.multival_attr2_datatype
1084     ,       ORGANIZATION_ATTR_CONTEXT      = p_LIMIT_BALANCES_rec.organization_attr_context
1085     ,       ORGANIZATION_ATTRIBUTE         = p_LIMIT_BALANCES_rec.organization_attribute
1086     ,       ORGANIZATION_ATTR_VALUE        = p_LIMIT_BALANCES_rec.organization_attr_value
1087     WHERE   LIMIT_BALANCE_ID = p_LIMIT_BALANCES_rec.limit_balance_id
1088     ;
1089 
1090 
1091 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1092 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1093 
1094 IF(p_LIMIT_BALANCES_rec.multival_attr1_context IS NOT NULL)
1095 AND  (p_LIMIT_BALANCES_rec.multival_attribute1 IS NOT NULL) THEN
1096 UPDATE qp_pte_segments SET used_in_setup='Y'
1097 WHERE nvl(used_in_setup,'N')='N'
1098 AND segment_id IN
1099 (SELECT a.segment_id
1100  FROM   qp_segments_b a,qp_prc_contexts_b b
1101  WHERE  a.segment_mapping_column=p_LIMIT_BALANCES_rec.multival_attribute1
1102  AND    a.prc_context_id=b.prc_context_id
1103  AND b.prc_context_type = p_LIMIT_BALANCES_rec.multival_attr1_type
1104  AND    b.prc_context_code=p_LIMIT_BALANCES_rec.multival_attr1_context);
1105 END IF;
1106 
1107 IF(p_LIMIT_BALANCES_rec.multival_attr2_context IS NOT NULL) AND
1108   (p_LIMIT_BALANCES_rec.multival_attribute2 IS NOT NULL) THEN
1109 UPDATE qp_pte_segments SET used_in_setup='Y'
1110 WHERE nvl(used_in_setup,'N')='N'
1111 AND segment_id IN
1112 (SELECT a.segment_id
1113  FROM   qp_segments_b a,qp_prc_contexts_b b
1114  WHERE  a.segment_mapping_column=p_LIMIT_BALANCES_rec.multival_attribute2
1115  AND    a.prc_context_id=b.prc_context_id
1116  AND b.prc_context_type = p_LIMIT_BALANCES_rec.multival_attr2_type
1117  AND    b.prc_context_code=p_LIMIT_BALANCES_rec.multival_attr2_context);
1118 END IF;
1119 END IF;
1120 
1121 
1122 EXCEPTION
1123 
1124     WHEN OTHERS THEN
1125 
1126         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1127         THEN
1128             OE_MSG_PUB.Add_Exc_Msg
1129             (   G_PKG_NAME
1130             ,   'Update_Row'
1131             );
1132         END IF;
1133 
1134         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1135 
1136 END Update_Row;
1137 
1138 --  Procedure Insert_Row
1139 
1140 PROCEDURE Insert_Row
1141 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
1142 )
1143 IS
1144 l_check_active_flag VARCHAR2(1);
1145 l_active_flag VARCHAR2(1);
1146 BEGIN
1147 SELECT active_flag
1148        INTO l_active_flag
1149        FROM QP_LIMITS a,QP_LIST_HEADERS_B b
1150        WHERE a.limit_id=p_LIMIT_BALANCES_rec.limit_id
1151        AND   b.list_header_id=a.list_header_id;
1152 
1153     INSERT  INTO QP_LIMIT_BALANCES
1154     (       ATTRIBUTE1
1155     ,       ATTRIBUTE10
1156     ,       ATTRIBUTE11
1157     ,       ATTRIBUTE12
1158     ,       ATTRIBUTE13
1159     ,       ATTRIBUTE14
1160     ,       ATTRIBUTE15
1161     ,       ATTRIBUTE2
1162     ,       ATTRIBUTE3
1163     ,       ATTRIBUTE4
1164     ,       ATTRIBUTE5
1165     ,       ATTRIBUTE6
1166     ,       ATTRIBUTE7
1167     ,       ATTRIBUTE8
1168     ,       ATTRIBUTE9
1169     ,       AVAILABLE_AMOUNT
1170     ,       CONSUMED_AMOUNT
1171     ,       CONTEXT
1172     ,       CREATED_BY
1173     ,       CREATION_DATE
1174     ,       LAST_UPDATED_BY
1175     ,       LAST_UPDATE_DATE
1176     ,       LAST_UPDATE_LOGIN
1177     ,       LIMIT_BALANCE_ID
1178     ,       LIMIT_ID
1179     ,       PROGRAM_APPLICATION_ID
1180     ,       PROGRAM_ID
1181     ,       PROGRAM_UPDATE_DATE
1182     ,       REQUEST_ID
1183     ,       RESERVED_AMOUNT
1184     ,       MULTIVAL_ATTR1_TYPE
1185     ,       MULTIVAL_ATTR1_CONTEXT
1186     ,       MULTIVAL_ATTRIBUTE1
1187     ,       MULTIVAL_ATTR1_VALUE
1188     ,       MULTIVAL_ATTR1_DATATYPE
1189     ,       MULTIVAL_ATTR2_TYPE
1190     ,       MULTIVAL_ATTR2_CONTEXT
1191     ,       MULTIVAL_ATTRIBUTE2
1192     ,       MULTIVAL_ATTR2_VALUE
1193     ,       MULTIVAL_ATTR2_DATATYPE
1194     ,       ORGANIZATION_ATTR_CONTEXT
1195     ,       ORGANIZATION_ATTRIBUTE
1196     ,       ORGANIZATION_ATTR_VALUE
1197     )
1198     VALUES
1199     (       p_LIMIT_BALANCES_rec.attribute1
1200     ,       p_LIMIT_BALANCES_rec.attribute10
1201     ,       p_LIMIT_BALANCES_rec.attribute11
1202     ,       p_LIMIT_BALANCES_rec.attribute12
1203     ,       p_LIMIT_BALANCES_rec.attribute13
1204     ,       p_LIMIT_BALANCES_rec.attribute14
1205     ,       p_LIMIT_BALANCES_rec.attribute15
1206     ,       p_LIMIT_BALANCES_rec.attribute2
1207     ,       p_LIMIT_BALANCES_rec.attribute3
1208     ,       p_LIMIT_BALANCES_rec.attribute4
1209     ,       p_LIMIT_BALANCES_rec.attribute5
1210     ,       p_LIMIT_BALANCES_rec.attribute6
1211     ,       p_LIMIT_BALANCES_rec.attribute7
1212     ,       p_LIMIT_BALANCES_rec.attribute8
1213     ,       p_LIMIT_BALANCES_rec.attribute9
1214     ,       p_LIMIT_BALANCES_rec.available_amount
1215     ,       p_LIMIT_BALANCES_rec.consumed_amount
1216     ,       p_LIMIT_BALANCES_rec.context
1217     ,       p_LIMIT_BALANCES_rec.created_by
1218     ,       p_LIMIT_BALANCES_rec.creation_date
1219     ,       p_LIMIT_BALANCES_rec.last_updated_by
1220     ,       p_LIMIT_BALANCES_rec.last_update_date
1221     ,       p_LIMIT_BALANCES_rec.last_update_login
1222     ,       p_LIMIT_BALANCES_rec.limit_balance_id
1223     ,       p_LIMIT_BALANCES_rec.limit_id
1224     ,       p_LIMIT_BALANCES_rec.program_application_id
1225     ,       p_LIMIT_BALANCES_rec.program_id
1226     ,       p_LIMIT_BALANCES_rec.program_update_date
1227     ,       p_LIMIT_BALANCES_rec.request_id
1228     ,       p_LIMIT_BALANCES_rec.reserved_amount
1229     ,       p_LIMIT_BALANCES_rec.multival_attr1_type
1230     ,       p_LIMIT_BALANCES_rec.multival_attr1_context
1231     ,       p_LIMIT_BALANCES_rec.multival_attribute1
1232     ,       p_LIMIT_BALANCES_rec.multival_attr1_value
1233     ,       p_LIMIT_BALANCES_rec.multival_attr1_datatype
1234     ,       p_LIMIT_BALANCES_rec.multival_attr2_type
1235     ,       p_LIMIT_BALANCES_rec.multival_attr2_context
1236     ,       p_LIMIT_BALANCES_rec.multival_attribute2
1237     ,       p_LIMIT_BALANCES_rec.multival_attr2_value
1238     ,       p_LIMIT_BALANCES_rec.multival_attr2_datatype
1239     ,       p_LIMIT_BALANCES_rec.organization_attr_context
1240     ,       p_LIMIT_BALANCES_rec.organization_attribute
1241     ,       p_LIMIT_BALANCES_rec.organization_attr_value
1242     );
1243 
1244 l_check_active_flag:=nvl(fnd_profile.value('QP_BUILD_ATTRIBUTES_MAPPING_OPTIONS'),'N');
1245 IF (l_check_active_flag='N') OR (l_check_active_flag='Y' AND l_active_flag='Y') THEN
1246 IF(p_LIMIT_BALANCES_rec.multival_attr1_context IS NOT NULL)
1247 AND (p_LIMIT_BALANCES_rec.multival_attribute1 IS NOT NULL) THEN
1248 UPDATE qp_pte_segments SET used_in_setup='Y'
1249 WHERE nvl(used_in_setup,'N')='N'
1250 AND segment_id IN
1251 (SELECT a.segment_id
1252  FROM   qp_segments_b a,qp_prc_contexts_b b
1253  WHERE  a.segment_mapping_column=p_LIMIT_BALANCES_rec.multival_attribute1
1254  AND    a.prc_context_id=b.prc_context_id
1255  AND b.prc_context_type = p_LIMIT_BALANCES_rec.multival_attr1_type
1256  AND    b.prc_context_code=p_LIMIT_BALANCES_rec.multival_attr1_context);
1257 END IF;
1258 
1259 IF(p_LIMIT_BALANCES_rec.multival_attr2_context IS NOT NULL) AND
1260   (p_LIMIT_BALANCES_rec.multival_attribute2 IS NOT NULL) THEN
1261 UPDATE qp_pte_segments SET used_in_setup='Y'
1262 WHERE nvl(used_in_setup,'N')='N'
1263 AND segment_id IN
1264 (SELECT a.segment_id
1265  FROM   qp_segments_b a,qp_prc_contexts_b b
1266  WHERE  a.segment_mapping_column=p_LIMIT_BALANCES_rec.multival_attribute2
1267  AND    a.prc_context_id=b.prc_context_id
1268  AND b.prc_context_type = p_LIMIT_BALANCES_rec.multival_attr2_type
1269  AND    b.prc_context_code=p_LIMIT_BALANCES_rec.multival_attr2_context);
1270 END IF;
1271 END IF;
1272 
1273 EXCEPTION
1274 
1275     WHEN OTHERS THEN
1276 
1277         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1278         THEN
1279             OE_MSG_PUB.Add_Exc_Msg
1280             (   G_PKG_NAME
1281             ,   'Insert_Row'
1282             );
1283         END IF;
1284 
1285         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1286 
1287 END Insert_Row;
1288 
1289 --  Procedure Delete_Row
1290 
1291 PROCEDURE Delete_Row
1292 (   p_limit_balance_id              IN  NUMBER
1293 )
1294 IS
1295 BEGIN
1296 
1297     DELETE  FROM QP_LIMIT_BALANCES
1298     WHERE   LIMIT_BALANCE_ID = p_limit_balance_id
1299     ;
1300 
1301 
1302 
1303 EXCEPTION
1304 
1305     WHEN OTHERS THEN
1306 
1307         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1308         THEN
1309             OE_MSG_PUB.Add_Exc_Msg
1310             (   G_PKG_NAME
1311             ,   'Delete_Row'
1312             );
1313         END IF;
1314 
1315         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1316 
1317 END Delete_Row;
1318 
1319 --  Function Query_Row
1320 
1321 FUNCTION Query_Row
1322 (   p_limit_balance_id              IN  NUMBER
1323 ) RETURN QP_Limits_PUB.Limit_Balances_Rec_Type
1324 IS
1325 BEGIN
1326 
1327     RETURN Query_Rows
1328         (   p_limit_balance_id            => p_limit_balance_id
1329         )(1);
1330 
1331 END Query_Row;
1332 
1333 --  Function Query_Rows
1334 
1335 --
1336 
1337 FUNCTION Query_Rows
1338 (   p_limit_balance_id              IN  NUMBER :=
1339                                         FND_API.G_MISS_NUM
1340 ,   p_limit_id                      IN  NUMBER :=
1341                                         FND_API.G_MISS_NUM
1342 ) RETURN QP_Limits_PUB.Limit_Balances_Tbl_Type
1343 IS
1344 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
1345 l_LIMIT_BALANCES_tbl          QP_Limits_PUB.Limit_Balances_Tbl_Type;
1346 
1347 CURSOR l_LIMIT_BALANCES_csr IS
1348     SELECT  ATTRIBUTE1
1349     ,       ATTRIBUTE10
1350     ,       ATTRIBUTE11
1351     ,       ATTRIBUTE12
1352     ,       ATTRIBUTE13
1353     ,       ATTRIBUTE14
1354     ,       ATTRIBUTE15
1355     ,       ATTRIBUTE2
1356     ,       ATTRIBUTE3
1357     ,       ATTRIBUTE4
1358     ,       ATTRIBUTE5
1359     ,       ATTRIBUTE6
1360     ,       ATTRIBUTE7
1361     ,       ATTRIBUTE8
1362     ,       ATTRIBUTE9
1363     ,       AVAILABLE_AMOUNT
1364     ,       CONSUMED_AMOUNT
1365     ,       CONTEXT
1366     ,       CREATED_BY
1367     ,       CREATION_DATE
1368     ,       LAST_UPDATED_BY
1369     ,       LAST_UPDATE_DATE
1370     ,       LAST_UPDATE_LOGIN
1371     ,       LIMIT_BALANCE_ID
1372     ,       LIMIT_ID
1373     ,       PROGRAM_APPLICATION_ID
1374     ,       PROGRAM_ID
1375     ,       PROGRAM_UPDATE_DATE
1376     ,       REQUEST_ID
1377     ,       RESERVED_AMOUNT
1378     ,       MULTIVAL_ATTR1_TYPE
1379     ,       MULTIVAL_ATTR1_CONTEXT
1380     ,       MULTIVAL_ATTRIBUTE1
1381     ,       MULTIVAL_ATTR1_VALUE
1382     ,       MULTIVAL_ATTR1_DATATYPE
1383     ,       MULTIVAL_ATTR2_TYPE
1384     ,       MULTIVAL_ATTR2_CONTEXT
1385     ,       MULTIVAL_ATTRIBUTE2
1386     ,       MULTIVAL_ATTR2_VALUE
1387     ,       MULTIVAL_ATTR2_DATATYPE
1388     ,       ORGANIZATION_ATTR_CONTEXT
1389     ,       ORGANIZATION_ATTRIBUTE
1390     ,       ORGANIZATION_ATTR_VALUE
1391     FROM    QP_LIMIT_BALANCES
1392     WHERE ( LIMIT_BALANCE_ID = p_limit_balance_id
1393     )
1394     OR (    LIMIT_ID = p_limit_id
1395     );
1396 
1397 BEGIN
1398 
1399     IF
1400     (p_limit_balance_id IS NOT NULL
1401      AND
1402      p_limit_balance_id <> FND_API.G_MISS_NUM)
1403     AND
1404     (p_limit_id IS NOT NULL
1405      AND
1406      p_limit_id <> FND_API.G_MISS_NUM)
1407     THEN
1408             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1409             THEN
1410                 OE_MSG_PUB.Add_Exc_Msg
1411                 (   G_PKG_NAME
1412                 ,   'Query Rows'
1413                 ,   'Keys are mutually exclusive: limit_balance_id = '|| p_limit_balance_id || ', limit_id = '|| p_limit_id
1414                 );
1415             END IF;
1416 
1417         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1418 
1419     END IF;
1420 
1421 
1422     --  Loop over fetched records
1423 
1424     FOR l_implicit_rec IN l_LIMIT_BALANCES_csr LOOP
1425 
1426         l_LIMIT_BALANCES_rec.attribute1 := l_implicit_rec.ATTRIBUTE1;
1427         l_LIMIT_BALANCES_rec.attribute10 := l_implicit_rec.ATTRIBUTE10;
1428         l_LIMIT_BALANCES_rec.attribute11 := l_implicit_rec.ATTRIBUTE11;
1429         l_LIMIT_BALANCES_rec.attribute12 := l_implicit_rec.ATTRIBUTE12;
1430         l_LIMIT_BALANCES_rec.attribute13 := l_implicit_rec.ATTRIBUTE13;
1431         l_LIMIT_BALANCES_rec.attribute14 := l_implicit_rec.ATTRIBUTE14;
1432         l_LIMIT_BALANCES_rec.attribute15 := l_implicit_rec.ATTRIBUTE15;
1433         l_LIMIT_BALANCES_rec.attribute2 := l_implicit_rec.ATTRIBUTE2;
1434         l_LIMIT_BALANCES_rec.attribute3 := l_implicit_rec.ATTRIBUTE3;
1435         l_LIMIT_BALANCES_rec.attribute4 := l_implicit_rec.ATTRIBUTE4;
1436         l_LIMIT_BALANCES_rec.attribute5 := l_implicit_rec.ATTRIBUTE5;
1437         l_LIMIT_BALANCES_rec.attribute6 := l_implicit_rec.ATTRIBUTE6;
1438         l_LIMIT_BALANCES_rec.attribute7 := l_implicit_rec.ATTRIBUTE7;
1439         l_LIMIT_BALANCES_rec.attribute8 := l_implicit_rec.ATTRIBUTE8;
1440         l_LIMIT_BALANCES_rec.attribute9 := l_implicit_rec.ATTRIBUTE9;
1441         l_LIMIT_BALANCES_rec.available_amount := l_implicit_rec.AVAILABLE_AMOUNT;
1442         l_LIMIT_BALANCES_rec.consumed_amount := l_implicit_rec.CONSUMED_AMOUNT;
1443         l_LIMIT_BALANCES_rec.context   := l_implicit_rec.CONTEXT;
1444         l_LIMIT_BALANCES_rec.created_by := l_implicit_rec.CREATED_BY;
1445         l_LIMIT_BALANCES_rec.creation_date := l_implicit_rec.CREATION_DATE;
1446         l_LIMIT_BALANCES_rec.last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
1447         l_LIMIT_BALANCES_rec.last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
1448         l_LIMIT_BALANCES_rec.last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
1449         l_LIMIT_BALANCES_rec.limit_balance_id := l_implicit_rec.LIMIT_BALANCE_ID;
1450         l_LIMIT_BALANCES_rec.limit_id  := l_implicit_rec.LIMIT_ID;
1451         l_LIMIT_BALANCES_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
1452         l_LIMIT_BALANCES_rec.program_id := l_implicit_rec.PROGRAM_ID;
1453         l_LIMIT_BALANCES_rec.program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
1454         l_LIMIT_BALANCES_rec.request_id := l_implicit_rec.REQUEST_ID;
1455         l_LIMIT_BALANCES_rec.reserved_amount := l_implicit_rec.RESERVED_AMOUNT;
1456         l_LIMIT_BALANCES_rec.multival_attr1_type := l_implicit_rec.MULTIVAL_ATTR1_TYPE;
1457         l_LIMIT_BALANCES_rec.multival_attr1_context := l_implicit_rec.MULTIVAL_ATTR1_CONTEXT;
1458         l_LIMIT_BALANCES_rec.multival_attribute1 := l_implicit_rec.MULTIVAL_ATTRIBUTE1;
1459         l_LIMIT_BALANCES_rec.multival_attr1_value := l_implicit_rec.MULTIVAL_ATTR1_VALUE;
1460         l_LIMIT_BALANCES_rec.multival_attr1_datatype := l_implicit_rec.MULTIVAL_ATTR1_DATATYPE;
1461         l_LIMIT_BALANCES_rec.multival_attr2_type := l_implicit_rec.MULTIVAL_ATTR2_TYPE;
1462         l_LIMIT_BALANCES_rec.multival_attr2_context := l_implicit_rec.MULTIVAL_ATTR2_CONTEXT;
1463         l_LIMIT_BALANCES_rec.multival_attribute2 := l_implicit_rec.MULTIVAL_ATTRIBUTE2;
1464         l_LIMIT_BALANCES_rec.multival_attr2_value := l_implicit_rec.MULTIVAL_ATTR2_VALUE;
1465         l_LIMIT_BALANCES_rec.multival_attr2_datatype := l_implicit_rec.MULTIVAL_ATTR2_DATATYPE;
1466         l_LIMIT_BALANCES_rec.organization_attr_context := l_implicit_rec.ORGANIZATION_ATTR_CONTEXT;
1467         l_LIMIT_BALANCES_rec.organization_attribute := l_implicit_rec.ORGANIZATION_ATTRIBUTE;
1468         l_LIMIT_BALANCES_rec.organization_attr_value := l_implicit_rec.ORGANIZATION_ATTR_VALUE;
1469 
1470         l_LIMIT_BALANCES_tbl(l_LIMIT_BALANCES_tbl.COUNT + 1) := l_LIMIT_BALANCES_rec;
1471 
1472     END LOOP;
1473 
1474 
1475     --  PK sent and no rows found
1476 
1477     IF
1478     (p_limit_balance_id IS NOT NULL
1479      AND
1480      p_limit_balance_id <> FND_API.G_MISS_NUM)
1481     AND
1482     (l_LIMIT_BALANCES_tbl.COUNT = 0)
1483     THEN
1484         RAISE NO_DATA_FOUND;
1485     END IF;
1486 
1487 
1488     --  Return fetched table
1489 
1490     RETURN l_LIMIT_BALANCES_tbl;
1491 
1492 EXCEPTION
1493 
1494     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1495 
1496         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1497 
1498     WHEN OTHERS THEN
1499 
1500         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1501         THEN
1502             OE_MSG_PUB.Add_Exc_Msg
1503             (   G_PKG_NAME
1504             ,   'Query_Rows'
1505             );
1506         END IF;
1507 
1508         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1509 
1510 END Query_Rows;
1511 
1512 --  Procedure       lock_Row
1513 --
1514 
1515 PROCEDURE Lock_Row
1516 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1517 ,   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
1518 ,   x_LIMIT_BALANCES_rec            OUT NOCOPY /* file.sql.39 change */ QP_Limits_PUB.Limit_Balances_Rec_Type
1519 )
1520 IS
1521 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
1522 BEGIN
1523 
1524     SELECT  ATTRIBUTE1
1525     ,       ATTRIBUTE10
1526     ,       ATTRIBUTE11
1527     ,       ATTRIBUTE12
1528     ,       ATTRIBUTE13
1529     ,       ATTRIBUTE14
1530     ,       ATTRIBUTE15
1531     ,       ATTRIBUTE2
1532     ,       ATTRIBUTE3
1533     ,       ATTRIBUTE4
1534     ,       ATTRIBUTE5
1535     ,       ATTRIBUTE6
1536     ,       ATTRIBUTE7
1537     ,       ATTRIBUTE8
1538     ,       ATTRIBUTE9
1539     ,       AVAILABLE_AMOUNT
1540     ,       CONSUMED_AMOUNT
1541     ,       CONTEXT
1542     ,       CREATED_BY
1543     ,       CREATION_DATE
1544     ,       LAST_UPDATED_BY
1545     ,       LAST_UPDATE_DATE
1546     ,       LAST_UPDATE_LOGIN
1547     ,       LIMIT_BALANCE_ID
1548     ,       LIMIT_ID
1549     ,       PROGRAM_APPLICATION_ID
1550     ,       PROGRAM_ID
1551     ,       PROGRAM_UPDATE_DATE
1552     ,       REQUEST_ID
1553     ,       RESERVED_AMOUNT
1554     ,       MULTIVAL_ATTR1_TYPE
1555     ,       MULTIVAL_ATTR1_CONTEXT
1556     ,       MULTIVAL_ATTRIBUTE1
1557     ,       MULTIVAL_ATTR1_VALUE
1558     ,       MULTIVAL_ATTR1_DATATYPE
1559     ,       MULTIVAL_ATTR2_TYPE
1560     ,       MULTIVAL_ATTR2_CONTEXT
1561     ,       MULTIVAL_ATTRIBUTE2
1562     ,       MULTIVAL_ATTR2_VALUE
1563     ,       MULTIVAL_ATTR2_DATATYPE
1564     ,       ORGANIZATION_ATTR_CONTEXT
1565     ,       ORGANIZATION_ATTRIBUTE
1566     ,       ORGANIZATION_ATTR_VALUE
1567     INTO    l_LIMIT_BALANCES_rec.attribute1
1568     ,       l_LIMIT_BALANCES_rec.attribute10
1569     ,       l_LIMIT_BALANCES_rec.attribute11
1570     ,       l_LIMIT_BALANCES_rec.attribute12
1571     ,       l_LIMIT_BALANCES_rec.attribute13
1572     ,       l_LIMIT_BALANCES_rec.attribute14
1573     ,       l_LIMIT_BALANCES_rec.attribute15
1574     ,       l_LIMIT_BALANCES_rec.attribute2
1575     ,       l_LIMIT_BALANCES_rec.attribute3
1576     ,       l_LIMIT_BALANCES_rec.attribute4
1577     ,       l_LIMIT_BALANCES_rec.attribute5
1578     ,       l_LIMIT_BALANCES_rec.attribute6
1579     ,       l_LIMIT_BALANCES_rec.attribute7
1580     ,       l_LIMIT_BALANCES_rec.attribute8
1581     ,       l_LIMIT_BALANCES_rec.attribute9
1582     ,       l_LIMIT_BALANCES_rec.available_amount
1583     ,       l_LIMIT_BALANCES_rec.consumed_amount
1584     ,       l_LIMIT_BALANCES_rec.context
1585     ,       l_LIMIT_BALANCES_rec.created_by
1586     ,       l_LIMIT_BALANCES_rec.creation_date
1587     ,       l_LIMIT_BALANCES_rec.last_updated_by
1588     ,       l_LIMIT_BALANCES_rec.last_update_date
1589     ,       l_LIMIT_BALANCES_rec.last_update_login
1590     ,       l_LIMIT_BALANCES_rec.limit_balance_id
1591     ,       l_LIMIT_BALANCES_rec.limit_id
1592     ,       l_LIMIT_BALANCES_rec.program_application_id
1593     ,       l_LIMIT_BALANCES_rec.program_id
1594     ,       l_LIMIT_BALANCES_rec.program_update_date
1595     ,       l_LIMIT_BALANCES_rec.request_id
1596     ,       l_LIMIT_BALANCES_rec.reserved_amount
1597     ,       l_LIMIT_BALANCES_rec.multival_attr1_type
1598     ,       l_LIMIT_BALANCES_rec.multival_attr1_context
1599     ,       l_LIMIT_BALANCES_rec.multival_attribute1
1600     ,       l_LIMIT_BALANCES_rec.multival_attr1_value
1601     ,       l_LIMIT_BALANCES_rec.multival_attr1_datatype
1602     ,       l_LIMIT_BALANCES_rec.multival_attr2_type
1603     ,       l_LIMIT_BALANCES_rec.multival_attr2_context
1604     ,       l_LIMIT_BALANCES_rec.multival_attribute2
1605     ,       l_LIMIT_BALANCES_rec.multival_attr2_value
1606     ,       l_LIMIT_BALANCES_rec.multival_attr2_datatype
1607     ,       l_LIMIT_BALANCES_rec.organization_attr_context
1608     ,       l_LIMIT_BALANCES_rec.organization_attribute
1609     ,       l_LIMIT_BALANCES_rec.organization_attr_value
1610     FROM    QP_LIMIT_BALANCES
1611     WHERE   LIMIT_BALANCE_ID = p_LIMIT_BALANCES_rec.limit_balance_id
1612         FOR UPDATE NOWAIT;
1613 
1614     --  Row locked. Compare IN attributes to DB attributes.
1615 
1616     IF  QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute1,
1617                          l_LIMIT_BALANCES_rec.attribute1)
1618     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute10,
1619                          l_LIMIT_BALANCES_rec.attribute10)
1620     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute11,
1621                          l_LIMIT_BALANCES_rec.attribute11)
1622     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute12,
1623                          l_LIMIT_BALANCES_rec.attribute12)
1624     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute13,
1625                          l_LIMIT_BALANCES_rec.attribute13)
1626     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute14,
1627                          l_LIMIT_BALANCES_rec.attribute14)
1628     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute15,
1629                          l_LIMIT_BALANCES_rec.attribute15)
1630     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute2,
1631                          l_LIMIT_BALANCES_rec.attribute2)
1632     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute3,
1633                          l_LIMIT_BALANCES_rec.attribute3)
1634     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute4,
1635                          l_LIMIT_BALANCES_rec.attribute4)
1636     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute5,
1637                          l_LIMIT_BALANCES_rec.attribute5)
1638     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute6,
1639                          l_LIMIT_BALANCES_rec.attribute6)
1640     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute7,
1641                          l_LIMIT_BALANCES_rec.attribute7)
1642     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute8,
1643                          l_LIMIT_BALANCES_rec.attribute8)
1644     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.attribute9,
1645                          l_LIMIT_BALANCES_rec.attribute9)
1646     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.available_amount,
1647                          l_LIMIT_BALANCES_rec.available_amount)
1648     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.consumed_amount,
1649                          l_LIMIT_BALANCES_rec.consumed_amount)
1650     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.context,
1651                          l_LIMIT_BALANCES_rec.context)
1652     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.created_by,
1653                          l_LIMIT_BALANCES_rec.created_by)
1654     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.creation_date,
1655                          l_LIMIT_BALANCES_rec.creation_date)
1656     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_updated_by,
1657                          l_LIMIT_BALANCES_rec.last_updated_by)
1658     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_update_date,
1659                          l_LIMIT_BALANCES_rec.last_update_date)
1660     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.last_update_login,
1661                          l_LIMIT_BALANCES_rec.last_update_login)
1662     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_balance_id,
1663                          l_LIMIT_BALANCES_rec.limit_balance_id)
1664     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_id,
1665                          l_LIMIT_BALANCES_rec.limit_id)
1666     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_application_id,
1667                          l_LIMIT_BALANCES_rec.program_application_id)
1668     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_id,
1669                          l_LIMIT_BALANCES_rec.program_id)
1670     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.program_update_date,
1671                          l_LIMIT_BALANCES_rec.program_update_date)
1672     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.request_id,
1673                          l_LIMIT_BALANCES_rec.request_id)
1674     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.reserved_amount,
1675                          l_LIMIT_BALANCES_rec.reserved_amount)
1676     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_type,
1677                          l_LIMIT_BALANCES_rec.multival_attr1_type)
1678     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_context,
1679                          l_LIMIT_BALANCES_rec.multival_attr1_context)
1680     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attribute1,
1681                          l_LIMIT_BALANCES_rec.multival_attribute1)
1682     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_value,
1683                          l_LIMIT_BALANCES_rec.multival_attr1_value)
1684     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr1_datatype,
1685                          l_LIMIT_BALANCES_rec.multival_attr1_datatype)
1686     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_type,
1687                          l_LIMIT_BALANCES_rec.multival_attr2_type)
1688     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_context,
1689                          l_LIMIT_BALANCES_rec.multival_attr2_context)
1690     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attribute2,
1691                          l_LIMIT_BALANCES_rec.multival_attribute2)
1692     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_value,
1693                          l_LIMIT_BALANCES_rec.multival_attr2_value)
1694     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.multival_attr2_datatype,
1695                          l_LIMIT_BALANCES_rec.multival_attr2_datatype)
1696     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attr_context,
1697                          l_LIMIT_BALANCES_rec.organization_attr_context)
1698     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attribute,
1699                          l_LIMIT_BALANCES_rec.organization_attribute)
1700     AND QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.organization_attr_value,
1701                          l_LIMIT_BALANCES_rec.organization_attr_value)
1702     THEN
1703 
1704         --  Row has not changed. Set out parameter.
1705 
1706         x_LIMIT_BALANCES_rec           := l_LIMIT_BALANCES_rec;
1707 
1708         --  Set return status
1709 
1710         x_return_status                := FND_API.G_RET_STS_SUCCESS;
1711         x_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_SUCCESS;
1712 
1713     ELSE
1714 
1715         --  Row has changed by another user.
1716 
1717         x_return_status                := FND_API.G_RET_STS_ERROR;
1718         x_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_ERROR;
1719 
1720         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1721         THEN
1722 
1723             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
1724             OE_MSG_PUB.Add;
1725 
1726         END IF;
1727 
1728     END IF;
1729 
1730 EXCEPTION
1731 
1732     WHEN NO_DATA_FOUND THEN
1733 
1734         x_return_status                := FND_API.G_RET_STS_ERROR;
1735         x_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_ERROR;
1736 
1737         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1738         THEN
1739 
1740             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
1741             OE_MSG_PUB.Add;
1742 
1743         END IF;
1744     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
1745 
1746         x_return_status                := FND_API.G_RET_STS_ERROR;
1747         x_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_ERROR;
1748 
1749         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1750         THEN
1751 
1752             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
1753             OE_MSG_PUB.Add;
1754 
1755         END IF;
1756     WHEN OTHERS THEN
1757 
1758         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
1759         x_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1760 
1761         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1762         THEN
1763             OE_MSG_PUB.Add_Exc_Msg
1764             (   G_PKG_NAME
1765             ,   'Lock_Row'
1766             );
1767         END IF;
1768 
1769 END Lock_Row;
1770 
1771 --  Function Get_Values
1772 
1773 FUNCTION Get_Values
1774 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
1775 ,   p_old_LIMIT_BALANCES_rec        IN  QP_Limits_PUB.Limit_Balances_Rec_Type :=
1776                                         QP_Limits_PUB.G_MISS_LIMIT_BALANCES_REC
1777 ) RETURN QP_Limits_PUB.Limit_Balances_Val_Rec_Type
1778 IS
1779 l_LIMIT_BALANCES_val_rec      QP_Limits_PUB.Limit_Balances_Val_Rec_Type;
1780 BEGIN
1781 
1782     IF p_LIMIT_BALANCES_rec.limit_balance_id IS NOT NULL AND
1783         p_LIMIT_BALANCES_rec.limit_balance_id <> FND_API.G_MISS_NUM AND
1784         NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_balance_id,
1785         p_old_LIMIT_BALANCES_rec.limit_balance_id)
1786     THEN
1787         l_LIMIT_BALANCES_val_rec.limit_balance := QP_Id_To_Value.Limit_Balance
1788         (   p_limit_balance_id            => p_LIMIT_BALANCES_rec.limit_balance_id
1789         );
1790     END IF;
1791 
1792     IF p_LIMIT_BALANCES_rec.limit_id IS NOT NULL AND
1793         p_LIMIT_BALANCES_rec.limit_id <> FND_API.G_MISS_NUM AND
1794         NOT QP_GLOBALS.Equal(p_LIMIT_BALANCES_rec.limit_id,
1795         p_old_LIMIT_BALANCES_rec.limit_id)
1796     THEN
1797         l_LIMIT_BALANCES_val_rec.limit := QP_Id_To_Value.Limit
1798         (   p_limit_id                    => p_LIMIT_BALANCES_rec.limit_id
1799         );
1800     END IF;
1801 
1802     RETURN l_LIMIT_BALANCES_val_rec;
1803 
1804 END Get_Values;
1805 
1806 --  Function Get_Ids
1807 
1808 FUNCTION Get_Ids
1809 (   p_LIMIT_BALANCES_rec            IN  QP_Limits_PUB.Limit_Balances_Rec_Type
1810 ,   p_LIMIT_BALANCES_val_rec        IN  QP_Limits_PUB.Limit_Balances_Val_Rec_Type
1811 ) RETURN QP_Limits_PUB.Limit_Balances_Rec_Type
1812 IS
1813 l_LIMIT_BALANCES_rec          QP_Limits_PUB.Limit_Balances_Rec_Type;
1814 BEGIN
1815 
1816     --  initialize  return_status.
1817 
1818     l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_SUCCESS;
1819 
1820     --  initialize l_LIMIT_BALANCES_rec.
1821 
1822     l_LIMIT_BALANCES_rec := p_LIMIT_BALANCES_rec;
1823 
1824     IF  p_LIMIT_BALANCES_val_rec.limit_balance <> FND_API.G_MISS_CHAR
1825     THEN
1826 
1827         IF p_LIMIT_BALANCES_rec.limit_balance_id <> FND_API.G_MISS_NUM THEN
1828 
1829             l_LIMIT_BALANCES_rec.limit_balance_id := p_LIMIT_BALANCES_rec.limit_balance_id;
1830 
1831             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1832             THEN
1833 
1834                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1835                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','limit_balance');
1836                 OE_MSG_PUB.Add;
1837 
1838             END IF;
1839 
1840         ELSE
1841 
1842             l_LIMIT_BALANCES_rec.limit_balance_id := QP_Value_To_Id.limit_balance
1843             (   p_limit_balance               => p_LIMIT_BALANCES_val_rec.limit_balance
1844             );
1845 
1846             IF l_LIMIT_BALANCES_rec.limit_balance_id = FND_API.G_MISS_NUM THEN
1847                 l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_ERROR;
1848             END IF;
1849 
1850         END IF;
1851 
1852     END IF;
1853 
1854     IF  p_LIMIT_BALANCES_val_rec.limit <> FND_API.G_MISS_CHAR
1855     THEN
1856 
1857         IF p_LIMIT_BALANCES_rec.limit_id <> FND_API.G_MISS_NUM THEN
1858 
1859             l_LIMIT_BALANCES_rec.limit_id := p_LIMIT_BALANCES_rec.limit_id;
1860 
1861             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1862             THEN
1863 
1864                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1865                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','limit');
1866                 OE_MSG_PUB.Add;
1867 
1868             END IF;
1869 
1870         ELSE
1871 
1872             l_LIMIT_BALANCES_rec.limit_id := QP_Value_To_Id.limit
1873             (   p_limit                       => p_LIMIT_BALANCES_val_rec.limit
1874             );
1875 
1876             IF l_LIMIT_BALANCES_rec.limit_id = FND_API.G_MISS_NUM THEN
1877                 l_LIMIT_BALANCES_rec.return_status := FND_API.G_RET_STS_ERROR;
1878             END IF;
1879 
1880         END IF;
1881 
1882     END IF;
1883 
1884 
1885     RETURN l_LIMIT_BALANCES_rec;
1886 
1887 END Get_Ids;
1888 
1889 END QP_Limit_Balances_Util;