DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_LIMIT_ATTRS_UTIL

Source


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