DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_LIMITS_UTIL

Source


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