DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_PTE_UTIL

Source


1 PACKAGE BODY QP_Pte_Util AS
2 /* $Header: QPXUPTEB.pls 120.1 2005/06/12 23:51:52 appldev  $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Pte_Util';
7 
8 --  Procedure Clear_Dependent_Attr
9 
10 PROCEDURE Clear_Dependent_Attr
11 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
12 ,   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
13 ,   p_old_PTE_rec                   IN  QP_Attr_Map_PUB.Pte_Rec_Type :=
14                                         QP_Attr_Map_PUB.G_MISS_PTE_REC
15 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
16 )
17 IS
18 l_index                       NUMBER := 0;
19 l_src_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
20 l_dep_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
21 BEGIN
22 
23     --  Load out record
24 
25     x_PTE_rec := p_PTE_rec;
26 
27     --  If attr_id is missing compare old and new records and for
28     --  every changed attribute clear its dependent fields.
29 
30     IF p_attr_id = FND_API.G_MISS_NUM THEN
31 
32         IF NOT QP_GLOBALS.Equal(p_PTE_rec.description,p_old_PTE_rec.description)
33         THEN
34             l_index := l_index + 1;
35             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_DESCRIPTION;
36         END IF;
37 
38         IF NOT QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,p_old_PTE_rec.enabled_flag)
39         THEN
40             l_index := l_index + 1;
41             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_ENABLED;
42         END IF;
43 
44         IF NOT QP_GLOBALS.Equal(p_PTE_rec.end_date_active,p_old_PTE_rec.end_date_active)
45         THEN
46             l_index := l_index + 1;
47             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_END_DATE_ACTIVE;
48         END IF;
49 
50         IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_code,p_old_PTE_rec.lookup_code)
51         THEN
52             l_index := l_index + 1;
53             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP;
54         END IF;
55 
56         IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_type,p_old_PTE_rec.lookup_type)
57         THEN
58             l_index := l_index + 1;
59             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP_TYPE;
60         END IF;
61 
62         IF NOT QP_GLOBALS.Equal(p_PTE_rec.meaning,p_old_PTE_rec.meaning)
63         THEN
64             l_index := l_index + 1;
65             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_MEANING;
66         END IF;
67 
68         IF NOT QP_GLOBALS.Equal(p_PTE_rec.start_date_active,p_old_PTE_rec.start_date_active)
69         THEN
70             l_index := l_index + 1;
71             l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_START_DATE_ACTIVE;
72         END IF;
73 
74     ELSIF p_attr_id = G_DESCRIPTION THEN
75         l_index := l_index + 1;
76         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_DESCRIPTION;
77     ELSIF p_attr_id = G_ENABLED THEN
78         l_index := l_index + 1;
79         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_ENABLED;
80     ELSIF p_attr_id = G_END_DATE_ACTIVE THEN
81         l_index := l_index + 1;
82         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_END_DATE_ACTIVE;
83     ELSIF p_attr_id = G_LOOKUP THEN
84         l_index := l_index + 1;
85         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP;
86     ELSIF p_attr_id = G_LOOKUP_TYPE THEN
87         l_index := l_index + 1;
88         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_LOOKUP_TYPE;
89     ELSIF p_attr_id = G_MEANING THEN
90         l_index := l_index + 1;
91         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_MEANING;
92     ELSIF p_attr_id = G_START_DATE_ACTIVE THEN
93         l_index := l_index + 1;
94         l_src_attr_tbl(l_index) := QP_PTE_UTIL.G_START_DATE_ACTIVE;
95     END IF;
96 
97 END Clear_Dependent_Attr;
98 
99 --  Procedure Apply_Attribute_Changes
100 
101 PROCEDURE Apply_Attribute_Changes
102 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
103 ,   p_old_PTE_rec                   IN  QP_Attr_Map_PUB.Pte_Rec_Type :=
104                                         QP_Attr_Map_PUB.G_MISS_PTE_REC
105 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
106 )
107 IS
108 BEGIN
109 
110     --  Load out record
111 
112     x_PTE_rec := p_PTE_rec;
113 
114     IF NOT QP_GLOBALS.Equal(p_PTE_rec.description,p_old_PTE_rec.description)
115     THEN
116         NULL;
117     END IF;
118 
119     IF NOT QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,p_old_PTE_rec.enabled_flag)
120     THEN
121         NULL;
122     END IF;
123 
124     IF NOT QP_GLOBALS.Equal(p_PTE_rec.end_date_active,p_old_PTE_rec.end_date_active)
125     THEN
126         NULL;
127     END IF;
128 
129     IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_code,p_old_PTE_rec.lookup_code)
130     THEN
131         NULL;
132     END IF;
133 
134     IF NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_type,p_old_PTE_rec.lookup_type)
135     THEN
136         NULL;
137     END IF;
138 
139     IF NOT QP_GLOBALS.Equal(p_PTE_rec.meaning,p_old_PTE_rec.meaning)
140     THEN
141         NULL;
142     END IF;
143 
144     IF NOT QP_GLOBALS.Equal(p_PTE_rec.start_date_active,p_old_PTE_rec.start_date_active)
145     THEN
146         NULL;
147     END IF;
148 
149 END Apply_Attribute_Changes;
150 
151 --  Function Complete_Record
152 
153 FUNCTION Complete_Record
154 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
155 ,   p_old_PTE_rec                   IN  QP_Attr_Map_PUB.Pte_Rec_Type
156 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
157 IS
158 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
159 BEGIN
160 
161     IF l_PTE_rec.description = FND_API.G_MISS_CHAR THEN
162         l_PTE_rec.description := p_old_PTE_rec.description;
163     END IF;
164 
165     IF l_PTE_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
166         l_PTE_rec.enabled_flag := p_old_PTE_rec.enabled_flag;
167     END IF;
168 
169     IF l_PTE_rec.end_date_active = FND_API.G_MISS_DATE THEN
170         l_PTE_rec.end_date_active := p_old_PTE_rec.end_date_active;
171     END IF;
172 
173     IF l_PTE_rec.lookup_code = FND_API.G_MISS_CHAR THEN
174         l_PTE_rec.lookup_code := p_old_PTE_rec.lookup_code;
175     END IF;
176 
177     IF l_PTE_rec.lookup_type = FND_API.G_MISS_CHAR THEN
178         l_PTE_rec.lookup_type := p_old_PTE_rec.lookup_type;
179     END IF;
180 
181     IF l_PTE_rec.meaning = FND_API.G_MISS_CHAR THEN
182         l_PTE_rec.meaning := p_old_PTE_rec.meaning;
183     END IF;
184 
185     IF l_PTE_rec.start_date_active = FND_API.G_MISS_DATE THEN
186         l_PTE_rec.start_date_active := p_old_PTE_rec.start_date_active;
187     END IF;
188 
189     RETURN l_PTE_rec;
190 
191 END Complete_Record;
192 
193 --  Function Convert_Miss_To_Null
194 
195 FUNCTION Convert_Miss_To_Null
196 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
197 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
198 IS
199 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
200 BEGIN
201 
202     IF l_PTE_rec.description = FND_API.G_MISS_CHAR THEN
203         l_PTE_rec.description := NULL;
204     END IF;
205 
206     IF l_PTE_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
207         l_PTE_rec.enabled_flag := NULL;
208     END IF;
209 
210     IF l_PTE_rec.end_date_active = FND_API.G_MISS_DATE THEN
211         l_PTE_rec.end_date_active := NULL;
212     END IF;
213 
214     IF l_PTE_rec.lookup_code = FND_API.G_MISS_CHAR THEN
215         l_PTE_rec.lookup_code := NULL;
216     END IF;
217 
218     IF l_PTE_rec.lookup_type = FND_API.G_MISS_CHAR THEN
219         l_PTE_rec.lookup_type := NULL;
220     END IF;
221 
222     IF l_PTE_rec.meaning = FND_API.G_MISS_CHAR THEN
223         l_PTE_rec.meaning := NULL;
224     END IF;
225 
226     IF l_PTE_rec.start_date_active = FND_API.G_MISS_DATE THEN
227         l_PTE_rec.start_date_active := NULL;
228     END IF;
229 
230     RETURN l_PTE_rec;
231 
232 END Convert_Miss_To_Null;
233 
234 --  Procedure Update_Row
235 
236 PROCEDURE Update_Row
237 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
238 )
239 IS
240 BEGIN
241 
242    null;
243 /*
244     UPDATE  QP_LOOKUPS
245     SET     DESCRIPTION                    = p_PTE_rec.description
246     ,       ENABLED_FLAG                   = p_PTE_rec.enabled_flag
247     ,       END_DATE_ACTIVE                = p_PTE_rec.end_date_active
248     ,       LOOKUP_CODE                    = p_PTE_rec.lookup_code
249     ,       LOOKUP_TYPE                    = p_PTE_rec.lookup_type
250     ,       MEANING                        = p_PTE_rec.meaning
251     ,       START_DATE_ACTIVE              = p_PTE_rec.start_date_active
252     WHERE   LOOKUP_CODE = p_PTE_rec.lookup_code
253     ;
254 */
255 
256 EXCEPTION
257 
258     WHEN OTHERS THEN
259 
260         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
261         THEN
262             FND_MSG_PUB.Add_Exc_Msg
263             (   G_PKG_NAME
264             ,   'Update_Row'
265             );
266         END IF;
267 
268         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
269 
270 END Update_Row;
271 
272 --  Procedure Insert_Row
273 
274 PROCEDURE Insert_Row
275 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
276 )
277 IS
278 BEGIN
279 
280     null;
281 /*
282     INSERT  INTO QP_LOOKUPS
283     (       DESCRIPTION
284     ,       ENABLED_FLAG
285     ,       END_DATE_ACTIVE
286     ,       LOOKUP_CODE
287     ,       LOOKUP_TYPE
288     ,       MEANING
289     ,       START_DATE_ACTIVE
290     )
291     VALUES
292     (       p_PTE_rec.description
293     ,       p_PTE_rec.enabled_flag
294     ,       p_PTE_rec.end_date_active
295     ,       p_PTE_rec.lookup_code
296     ,       p_PTE_rec.lookup_type
297     ,       p_PTE_rec.meaning
298     ,       p_PTE_rec.start_date_active
299     );
300 */
301 
302 EXCEPTION
303 
304     WHEN OTHERS THEN
305 
306         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
307         THEN
308             FND_MSG_PUB.Add_Exc_Msg
309             (   G_PKG_NAME
310             ,   'Insert_Row'
311             );
312         END IF;
313 
314         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
315 
316 END Insert_Row;
317 
318 --  Procedure Delete_Row
319 
320 PROCEDURE Delete_Row
321 (   p_lookup_code                   IN  VARCHAR2
322 )
323 IS
324 BEGIN
325     null;
326 /*
327     DELETE  FROM QP_LOOKUPS
328     WHERE   LOOKUP_CODE = p_lookup_code
329     ;
330 */
331 
332 EXCEPTION
333 
334     WHEN OTHERS THEN
335 
336         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
337         THEN
338             FND_MSG_PUB.Add_Exc_Msg
339             (   G_PKG_NAME
340             ,   'Delete_Row'
341             );
342         END IF;
343 
344         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
345 
346 END Delete_Row;
347 
348 --  Function Query_Row
349 
350 FUNCTION Query_Row
351 (   p_lookup_code                   IN  VARCHAR2
352 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
353 IS
354 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type;
355 BEGIN
356 
357     SELECT  DESCRIPTION
358     ,       ENABLED_FLAG
359     ,       END_DATE_ACTIVE
360     ,       LOOKUP_CODE
361     ,       LOOKUP_TYPE
362     ,       MEANING
363     ,       START_DATE_ACTIVE
364     INTO    l_PTE_rec.description
365     ,       l_PTE_rec.enabled_flag
366     ,       l_PTE_rec.end_date_active
367     ,       l_PTE_rec.lookup_code
368     ,       l_PTE_rec.lookup_type
369     ,       l_PTE_rec.meaning
370     ,       l_PTE_rec.start_date_active
371     FROM    QP_LOOKUPS
372     WHERE   LOOKUP_CODE = p_lookup_code
373     ;
374 
375     RETURN l_PTE_rec;
376 
377 EXCEPTION
378 
379     WHEN OTHERS THEN
380 
381         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
382         THEN
383             FND_MSG_PUB.Add_Exc_Msg
384             (   G_PKG_NAME
385             ,   'Query_Row'
386             );
387         END IF;
388 
389         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
390 
391 END Query_Row;
392 
393 --  Procedure       lock_Row
394 --
395 
396 PROCEDURE Lock_Row
397 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
398 ,   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
399 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
400 )
401 IS
402 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type;
403 BEGIN
404     null;
405 /*
406     SELECT  DESCRIPTION
407     ,       ENABLED_FLAG
408     ,       END_DATE_ACTIVE
409     ,       LOOKUP_CODE
410     ,       LOOKUP_TYPE
411     ,       MEANING
412     ,       START_DATE_ACTIVE
413     INTO    l_PTE_rec.description
414     ,       l_PTE_rec.enabled_flag
415     ,       l_PTE_rec.end_date_active
416     ,       l_PTE_rec.lookup_code
417     ,       l_PTE_rec.lookup_type
418     ,       l_PTE_rec.meaning
419     ,       l_PTE_rec.start_date_active
420     FROM    QP_LOOKUPS
421     WHERE   LOOKUP_CODE = p_PTE_rec.lookup_code
422         FOR UPDATE NOWAIT;
423 
424     --  Row locked. Compare IN attributes to DB attributes.
425 
426     IF  QP_GLOBALS.Equal(p_PTE_rec.description,
427                          l_PTE_rec.description)
428     AND QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,
429                          l_PTE_rec.enabled_flag)
430     AND QP_GLOBALS.Equal(p_PTE_rec.end_date_active,
431                          l_PTE_rec.end_date_active)
432     AND QP_GLOBALS.Equal(p_PTE_rec.lookup_code,
433                          l_PTE_rec.lookup_code)
434     AND QP_GLOBALS.Equal(p_PTE_rec.lookup_type,
435                          l_PTE_rec.lookup_type)
436     AND QP_GLOBALS.Equal(p_PTE_rec.meaning,
437                          l_PTE_rec.meaning)
438     AND QP_GLOBALS.Equal(p_PTE_rec.start_date_active,
439                          l_PTE_rec.start_date_active)
440     THEN
441 
442         --  Row has not changed. Set out parameter.
443 
444         x_PTE_rec                      := l_PTE_rec;
445 
446         --  Set return status
447 
448         x_return_status                := FND_API.G_RET_STS_SUCCESS;
449         x_PTE_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
450 
451     ELSE
452 
453         --  Row has changed by another user.
454 
455         x_return_status                := FND_API.G_RET_STS_ERROR;
456         x_PTE_rec.return_status        := FND_API.G_RET_STS_ERROR;
457 
458         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
459         THEN
460 
461             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
462             FND_MSG_PUB.Add;
463 
464         END IF;
465 
466     END IF;
467 */
468 EXCEPTION
469 
470     WHEN NO_DATA_FOUND THEN
471 
472         x_return_status                := FND_API.G_RET_STS_ERROR;
473         x_PTE_rec.return_status        := FND_API.G_RET_STS_ERROR;
474 
475         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
476         THEN
477 
478             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
479             FND_MSG_PUB.Add;
480 
481         END IF;
482     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
483 
484         x_return_status                := FND_API.G_RET_STS_ERROR;
485         x_PTE_rec.return_status        := FND_API.G_RET_STS_ERROR;
486 
487         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
488         THEN
489 
490             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
491             FND_MSG_PUB.Add;
492 
493         END IF;
494     WHEN OTHERS THEN
495 
496         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
497         x_PTE_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
498 
499         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
500         THEN
501             FND_MSG_PUB.Add_Exc_Msg
502             (   G_PKG_NAME
503             ,   'Lock_Row'
504             );
505         END IF;
506 
507 END Lock_Row;
508 
509 --  Function Get_Values
510 
511 FUNCTION Get_Values
512 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
513 ,   p_old_PTE_rec                   IN  QP_Attr_Map_PUB.Pte_Rec_Type :=
514                                         QP_Attr_Map_PUB.G_MISS_PTE_REC
515 ) RETURN QP_Attr_Map_PUB.Pte_Val_Rec_Type
516 IS
517 l_PTE_val_rec                 QP_Attr_Map_PUB.Pte_Val_Rec_Type;
518 BEGIN
519 
520     IF p_PTE_rec.enabled_flag IS NOT NULL AND
521         p_PTE_rec.enabled_flag <> FND_API.G_MISS_CHAR AND
522         NOT QP_GLOBALS.Equal(p_PTE_rec.enabled_flag,
523         p_old_PTE_rec.enabled_flag)
524     THEN
525         l_PTE_val_rec.enabled := QP_Id_To_Value.Enabled
526         (   p_enabled_flag                => p_PTE_rec.enabled_flag
527         );
528     END IF;
529 
530     IF p_PTE_rec.lookup_code IS NOT NULL AND
531         p_PTE_rec.lookup_code <> FND_API.G_MISS_CHAR AND
532         NOT QP_GLOBALS.Equal(p_PTE_rec.lookup_code,
533         p_old_PTE_rec.lookup_code)
534     THEN
535         l_PTE_val_rec.lookup := QP_Id_To_Value.Lookup
536         (   p_lookup_code                 => p_PTE_rec.lookup_code
537         );
538     END IF;
539 
540     RETURN l_PTE_val_rec;
541 
542 END Get_Values;
543 
544 --  Function Get_Ids
545 
546 FUNCTION Get_Ids
547 (   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
548 ,   p_PTE_val_rec                   IN  QP_Attr_Map_PUB.Pte_Val_Rec_Type
549 ) RETURN QP_Attr_Map_PUB.Pte_Rec_Type
550 IS
551 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type;
552 BEGIN
553 
554     --  initialize  return_status.
555 
556     l_PTE_rec.return_status := FND_API.G_RET_STS_SUCCESS;
557 
558     --  initialize l_PTE_rec.
559 
560     l_PTE_rec := p_PTE_rec;
561 
562     IF  p_PTE_val_rec.enabled <> FND_API.G_MISS_CHAR
563     THEN
564 
565         IF p_PTE_rec.enabled_flag <> FND_API.G_MISS_CHAR THEN
566 
567             l_PTE_rec.enabled_flag := p_PTE_rec.enabled_flag;
568 
569             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
570             THEN
571 
572                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
573                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','enabled');
574                 FND_MSG_PUB.Add;
575 
576             END IF;
577 
578         ELSE
579 
580             l_PTE_rec.enabled_flag := QP_Value_To_Id.enabled
581             (   p_enabled                     => p_PTE_val_rec.enabled
582             );
583 
584             IF l_PTE_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
585                 l_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
586             END IF;
587 
588         END IF;
589 
590     END IF;
591 
592     IF  p_PTE_val_rec.lookup <> FND_API.G_MISS_CHAR
593     THEN
594 
595         IF p_PTE_rec.lookup_code <> FND_API.G_MISS_CHAR THEN
596 
597             l_PTE_rec.lookup_code := p_PTE_rec.lookup_code;
598 
599             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
600             THEN
601 
602                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
603                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','lookup');
604                 FND_MSG_PUB.Add;
605 
606             END IF;
607 
608         ELSE
609 
610             l_PTE_rec.lookup_code := QP_Value_To_Id.lookup
611             (   p_lookup                      => p_PTE_val_rec.lookup
612             );
613 
614             IF l_PTE_rec.lookup_code = FND_API.G_MISS_CHAR THEN
615                 l_PTE_rec.return_status := FND_API.G_RET_STS_ERROR;
616             END IF;
617 
618         END IF;
619 
620     END IF;
621 
622 
623     RETURN l_PTE_rec;
624 
625 END Get_Ids;
626 
627 END QP_Pte_Util;