DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_LIMITS_UTIL

Source


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