DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_ATTR_MAP_PVT

Source


1 PACKAGE BODY QP_Attr_Map_PVT AS
2 /* $Header: QPXVMAPB.pls 120.6 2005/08/18 15:52:56 sfiresto ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Attr_Map_PVT';
7 
8 --  Pte
9 
10 PROCEDURE Pte
11 (   p_validation_level              IN  NUMBER
12 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
13 ,   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type
14 ,   p_old_PTE_rec                   IN  QP_Attr_Map_PUB.Pte_Rec_Type
15 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
16 ,   x_old_PTE_rec                   OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
17 )
18 IS
19 l_return_status               VARCHAR2(1);
20 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
21 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
22 l_p_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type;
23 l_old_PTE_rec                 QP_Attr_Map_PUB.Pte_Rec_Type := p_old_PTE_rec;
24 BEGIN
25 
26     --  Load API control record
27 
28     l_control_rec := QP_GLOBALS.Init_Control_Rec
29     (   p_operation     => l_PTE_rec.operation
30     ,   p_control_rec   => p_control_rec
31     );
32 
33     --  Set record return status.
34 
35     l_PTE_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
36 
37     --  Prepare record.
38 
39     IF l_PTE_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
40 
41         l_PTE_rec.db_flag := FND_API.G_FALSE;
42 
43         --  Set missing old record elements to NULL.
44 
45         l_old_PTE_rec :=
46         QP_Pte_Util.Convert_Miss_To_Null (l_old_PTE_rec);
47 
48     ELSIF l_PTE_rec.operation = QP_GLOBALS.G_OPR_UPDATE
49     OR    l_PTE_rec.operation = QP_GLOBALS.G_OPR_DELETE
50     THEN
51 
52         l_PTE_rec.db_flag := FND_API.G_TRUE;
53 
54         --  Query Old if missing
55 
56         IF  l_old_PTE_rec.lookup_code = FND_API.G_MISS_CHAR
57         THEN
58 
59             l_old_PTE_rec := QP_Pte_Util.Query_Row
60             (   p_lookup_code                 => l_PTE_rec.lookup_code
61             );
62 
63         ELSE
64 
65             --  Set missing old record elements to NULL.
66 
67             l_old_PTE_rec :=
68             QP_Pte_Util.Convert_Miss_To_Null (l_old_PTE_rec);
69 
70         END IF;
71 
72         --  Complete new record from old
73 
74         l_PTE_rec := QP_Pte_Util.Complete_Record
75         (   p_PTE_rec                     => l_PTE_rec
76         ,   p_old_PTE_rec                 => l_old_PTE_rec
77         );
78 
79     END IF;
80 
81     --  Attribute level validation.
82 
83     IF  l_control_rec.default_attributes
84     OR  l_control_rec.change_attributes
85     THEN
86 
87         IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
88 
89             QP_Validate_Pte.Attributes
90             (   x_return_status               => l_return_status
91             ,   p_PTE_rec                     => l_PTE_rec
92             ,   p_old_PTE_rec                 => l_old_PTE_rec
93             );
94 
95             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
96                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
97             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
98                 RAISE FND_API.G_EXC_ERROR;
99             END IF;
100 
101         END IF;
102 
103     END IF;
104 
105         --  Clear dependent attributes.
106 
107     IF  l_control_rec.change_attributes THEN
108         l_p_PTE_rec := l_PTE_rec;
109         QP_Pte_Util.Clear_Dependent_Attr
110         (   p_PTE_rec                     => l_p_PTE_rec
111         ,   p_old_PTE_rec                 => l_old_PTE_rec
112         ,   x_PTE_rec                     => l_PTE_rec
113         );
114 
115     END IF;
116 
117     --  Default missing attributes
118 
119     IF  l_control_rec.default_attributes
120     OR  l_control_rec.change_attributes
121     THEN
122         l_p_PTE_rec := l_PTE_rec;
123         QP_Default_Pte.Attributes
124         (   p_PTE_rec                     => l_p_PTE_rec
125         ,   x_PTE_rec                     => l_PTE_rec
126         );
127 
128     END IF;
129 
130     --  Apply attribute changes
131 
132     IF  l_control_rec.default_attributes
133     OR  l_control_rec.change_attributes
134     THEN
135         l_p_PTE_rec := l_PTE_rec;
136         QP_Pte_Util.Apply_Attribute_Changes
137         (   p_PTE_rec                     => l_p_PTE_rec
138         ,   p_old_PTE_rec                 => l_old_PTE_rec
139         ,   x_PTE_rec                     => l_PTE_rec
140         );
141 
142     END IF;
143 
144     --  Entity level validation.
145 
146     IF l_control_rec.validate_entity THEN
147 
148         IF l_PTE_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
149 
150             QP_Validate_Pte.Entity_Delete
151             (   x_return_status               => l_return_status
152             ,   p_PTE_rec                     => l_PTE_rec
153             );
154 
155         ELSE
156 
157             QP_Validate_Pte.Entity
158             (   x_return_status               => l_return_status
159             ,   p_PTE_rec                     => l_PTE_rec
160             ,   p_old_PTE_rec                 => l_old_PTE_rec
161             );
162 
163         END IF;
164 
165         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
166             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
167         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
168             RAISE FND_API.G_EXC_ERROR;
169         END IF;
170 
171     END IF;
172 
173     --  Step 4. Write to DB
174 
175     IF l_control_rec.write_to_db THEN
176 
177         IF l_PTE_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
178 
179             QP_Pte_Util.Delete_Row
180             (   p_lookup_code                 => l_PTE_rec.lookup_code
181             );
182 
183         ELSE
184 
185             --  Get Who Information
186 
187             --**l_PTE_rec.last_update_date     := SYSDATE;
188             --**l_PTE_rec.last_updated_by      := FND_GLOBAL.USER_ID;
189             --**l_PTE_rec.last_update_login    := FND_GLOBAL.LOGIN_ID;
190 
191             IF l_PTE_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
192 
193                 QP_Pte_Util.Update_Row (l_PTE_rec);
194 
195             ELSIF l_PTE_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
196 
197                 --**l_PTE_rec.creation_date        := SYSDATE;
198                 --**l_PTE_rec.created_by           := FND_GLOBAL.USER_ID;
199 
200                 QP_Pte_Util.Insert_Row (l_PTE_rec);
201 
202             END IF;
203 
204         END IF;
205 
206     END IF;
207 
208     --  Load OUT parameters
209 
210     x_PTE_rec                      := l_PTE_rec;
211     x_old_PTE_rec                  := l_old_PTE_rec;
212 
213 EXCEPTION
214 
215     WHEN FND_API.G_EXC_ERROR THEN
216 
217         l_PTE_rec.return_status        := FND_API.G_RET_STS_ERROR;
218         x_PTE_rec                      := l_PTE_rec;
219         x_old_PTE_rec                  := l_old_PTE_rec;
220         RAISE;
221 
222     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
223 
224         l_PTE_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
225         x_PTE_rec                      := l_PTE_rec;
226         x_old_PTE_rec                  := l_old_PTE_rec;
227 
228         RAISE;
229 
230     WHEN OTHERS THEN
231 
232         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
233         THEN
234             OE_MSG_PUB.Add_Exc_Msg
235             (   G_PKG_NAME
236             ,   'Pte'
237             );
238         END IF;
239 
240         l_PTE_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
241         x_PTE_rec                      := l_PTE_rec;
242         x_old_PTE_rec                  := l_old_PTE_rec;
243 
244         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
245 
246 END Pte;
247 
248 --  Rqts
249 
250 PROCEDURE Rqts
251 (   p_validation_level              IN  NUMBER
252 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
253 ,   p_RQT_tbl                       IN  QP_Attr_Map_PUB.Rqt_Tbl_Type
254 ,   p_old_RQT_tbl                   IN  QP_Attr_Map_PUB.Rqt_Tbl_Type
255 ,   x_RQT_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Rqt_Tbl_Type
256 ,   x_old_RQT_tbl                   OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Rqt_Tbl_Type
257 )
258 IS
259 l_return_status               VARCHAR2(1);
260 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
261 l_RQT_rec                     QP_Attr_Map_PUB.Rqt_Rec_Type;
262 l_p_RQT_rec                     QP_Attr_Map_PUB.Rqt_Rec_Type;
263 l_RQT_tbl                     QP_Attr_Map_PUB.Rqt_Tbl_Type;
264 l_old_RQT_rec                 QP_Attr_Map_PUB.Rqt_Rec_Type;
265 l_old_RQT_tbl                 QP_Attr_Map_PUB.Rqt_Tbl_Type;
266 BEGIN
267 
268     --  Init local table variables.
269 
270     l_RQT_tbl                      := p_RQT_tbl;
271     l_old_RQT_tbl                  := p_old_RQT_tbl;
272 
273     FOR I IN 1..l_RQT_tbl.COUNT LOOP
274     BEGIN
275 
276         --  Load local records.
277 
278         l_RQT_rec := l_RQT_tbl(I);
279 
280         IF l_old_RQT_tbl.EXISTS(I) THEN
281             l_old_RQT_rec := l_old_RQT_tbl(I);
282         ELSE
283             l_old_RQT_rec := QP_Attr_Map_PUB.G_MISS_RQT_REC;
284         END IF;
285 
286         --  Load API control record
287 
288         l_control_rec := QP_GLOBALS.Init_Control_Rec
289         (   p_operation     => l_RQT_rec.operation
290         ,   p_control_rec   => p_control_rec
291         );
292 
293         --  Set record return status.
294 
295         l_RQT_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
296 
297         --  Prepare record.
298 
299         IF l_RQT_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
300 
301             l_RQT_rec.db_flag := FND_API.G_FALSE;
302 
303             --  Set missing old record elements to NULL.
304 
305             l_old_RQT_rec :=
306             QP_Rqt_Util.Convert_Miss_To_Null (l_old_RQT_rec);
307 
308         ELSIF l_RQT_rec.operation = QP_GLOBALS.G_OPR_UPDATE
309         OR    l_RQT_rec.operation = QP_GLOBALS.G_OPR_DELETE
310         THEN
311 
312             l_RQT_rec.db_flag := FND_API.G_TRUE;
313 
314             --  Query Old if missing
315 
316             IF  l_old_RQT_rec.request_type_code = FND_API.G_MISS_CHAR
317             THEN
318 
319                 l_old_RQT_rec := QP_Rqt_Util.Query_Row
320                 (   p_request_type_code           => l_RQT_rec.request_type_code
321                 );
322 
323             ELSE
324 
325                 --  Set missing old record elements to NULL.
326 
327                 l_old_RQT_rec :=
328                 QP_Rqt_Util.Convert_Miss_To_Null (l_old_RQT_rec);
329 
330             END IF;
331 
332             --  Complete new record from old
333 
334             l_RQT_rec := QP_Rqt_Util.Complete_Record
335             (   p_RQT_rec                     => l_RQT_rec
336             ,   p_old_RQT_rec                 => l_old_RQT_rec
337             );
338 
339         END IF;
340 
341         --  Attribute level validation.
342 
343         IF  l_control_rec.default_attributes
344         OR  l_control_rec.change_attributes
345         THEN
346 
347             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
348 
349                 QP_Validate_Rqt.Attributes
350                 (   x_return_status               => l_return_status
351                 ,   p_RQT_rec                     => l_RQT_rec
352                 ,   p_old_RQT_rec                 => l_old_RQT_rec
353                 );
354 
355                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
356                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
357                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
358                     RAISE FND_API.G_EXC_ERROR;
359                 END IF;
360 
361             END IF;
362 
363         END IF;
364 
365             --  Clear dependent attributes.
366 
367         IF  l_control_rec.change_attributes THEN
368 
369             l_p_RQT_rec := l_RQT_rec;
370             QP_Rqt_Util.Clear_Dependent_Attr
371             (   p_RQT_rec                     => l_p_RQT_rec
372             ,   p_old_RQT_rec                 => l_old_RQT_rec
373             ,   x_RQT_rec                     => l_RQT_rec
374             );
375 
376         END IF;
377 
378         --  Default missing attributes
379 
380         IF  l_control_rec.default_attributes
381         OR  l_control_rec.change_attributes
382         THEN
383             l_p_RQT_rec := l_RQT_rec;
384             QP_Default_Rqt.Attributes
385             (   p_RQT_rec                     => l_p_RQT_rec
386             ,   x_RQT_rec                     => l_RQT_rec
387             );
388 
389         END IF;
390 
391         --  Apply attribute changes
392 
393         IF  l_control_rec.default_attributes
394         OR  l_control_rec.change_attributes
395         THEN
396             l_p_RQT_rec := l_RQT_rec;
397             QP_Rqt_Util.Apply_Attribute_Changes
398             (   p_RQT_rec                     => l_p_RQT_rec
399             ,   p_old_RQT_rec                 => l_old_RQT_rec
400             ,   x_RQT_rec                     => l_RQT_rec
401             );
402 
403         END IF;
404 
405         --  Entity level validation.
406 
407         IF l_control_rec.validate_entity THEN
408 
409             IF l_RQT_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
410 
411                 QP_Validate_Rqt.Entity_Delete
412                 (   x_return_status               => l_return_status
413                 ,   p_RQT_rec                     => l_RQT_rec
414                 );
415 
416             ELSE
417 
418                 QP_Validate_Rqt.Entity
419                 (   x_return_status               => l_return_status
420                 ,   p_RQT_rec                     => l_RQT_rec
421                 ,   p_old_RQT_rec                 => l_old_RQT_rec
422                 );
423 
424             END IF;
425 
426             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
427                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
428             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
429                 RAISE FND_API.G_EXC_ERROR;
430             END IF;
431 
432         END IF;
433 
434         --  Step 4. Write to DB
435 
436         IF l_control_rec.write_to_db THEN
437 
438             IF l_RQT_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
439 
440                 QP_Rqt_Util.Delete_Row
441                 (   p_request_type_code           => l_RQT_rec.request_type_code
442                 );
443 
444             ELSE
445 
446                 --  Get Who Information
447 
448                 l_RQT_rec.last_update_date     := SYSDATE;
449                 l_RQT_rec.last_updated_by      := FND_GLOBAL.USER_ID;
450                 l_RQT_rec.last_update_login    := FND_GLOBAL.LOGIN_ID;
451 
452                 IF l_RQT_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
453 
454                     QP_Rqt_Util.Update_Row (l_RQT_rec);
455 
456                 ELSIF l_RQT_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
457 
458                     l_RQT_rec.creation_date        := SYSDATE;
459                     l_RQT_rec.created_by           := FND_GLOBAL.USER_ID;
460 
461                     QP_Rqt_Util.Insert_Row (l_RQT_rec);
462 
463                 END IF;
464 
465             END IF;
466 
467         END IF;
468 
469         --  Load tables.
470 
471         l_RQT_tbl(I)                   := l_RQT_rec;
472         l_old_RQT_tbl(I)               := l_old_RQT_rec;
473 
474     --  For loop exception handler.
475 
476 
477     EXCEPTION
478 
479         WHEN FND_API.G_EXC_ERROR THEN
480 
481             l_RQT_rec.return_status        := FND_API.G_RET_STS_ERROR;
482             l_RQT_tbl(I)                   := l_RQT_rec;
483             l_old_RQT_tbl(I)               := l_old_RQT_rec;
484 
485         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
486 
487             l_RQT_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
488             l_RQT_tbl(I)                   := l_RQT_rec;
489             l_old_RQT_tbl(I)               := l_old_RQT_rec;
490             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
491 
492         WHEN OTHERS THEN
493 
494             l_RQT_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
495             l_RQT_tbl(I)                   := l_RQT_rec;
496             l_old_RQT_tbl(I)               := l_old_RQT_rec;
497 
498             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
499             THEN
500                 OE_MSG_PUB.Add_Exc_Msg
501                 (   G_PKG_NAME
502                 ,   'Rqts'
503                 );
504             END IF;
505 
506             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
507 
508     END;
509     END LOOP;
510 
511     --  Load OUT parameters
512 
513     x_RQT_tbl                      := l_RQT_tbl;
514     x_old_RQT_tbl                  := l_old_RQT_tbl;
515 
516 EXCEPTION
517 
518     WHEN FND_API.G_EXC_ERROR THEN
519 
520         RAISE;
521 
522     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
523 
524 
525         RAISE;
526 
527     WHEN OTHERS THEN
528 
529         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
530         THEN
531             OE_MSG_PUB.Add_Exc_Msg
532             (   G_PKG_NAME
533             ,   'Rqts'
534             );
535         END IF;
536 
537 
538         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
539 
540 END Rqts;
541 
542 --  Sscs
543 
544 PROCEDURE Sscs
545 (   p_validation_level              IN  NUMBER
546 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
547 ,   p_SSC_tbl                       IN  QP_Attr_Map_PUB.Ssc_Tbl_Type
548 ,   p_old_SSC_tbl                   IN  QP_Attr_Map_PUB.Ssc_Tbl_Type
549 ,   x_SSC_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Ssc_Tbl_Type
550 ,   x_old_SSC_tbl                   OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Ssc_Tbl_Type
551 )
552 IS
553 l_return_status               VARCHAR2(1);
554 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
555 l_SSC_rec                     QP_Attr_Map_PUB.Ssc_Rec_Type;
556 l_p_SSC_rec                     QP_Attr_Map_PUB.Ssc_Rec_Type;
557 l_SSC_tbl                     QP_Attr_Map_PUB.Ssc_Tbl_Type;
558 l_old_SSC_rec                 QP_Attr_Map_PUB.Ssc_Rec_Type;
559 l_old_SSC_tbl                 QP_Attr_Map_PUB.Ssc_Tbl_Type;
560 BEGIN
561 
562     --  Init local table variables.
563 
564     l_SSC_tbl                      := p_SSC_tbl;
565     l_old_SSC_tbl                  := p_old_SSC_tbl;
566 
567     FOR I IN 1..l_SSC_tbl.COUNT LOOP
568     BEGIN
569 
570         --  Load local records.
571 
572         l_SSC_rec := l_SSC_tbl(I);
573 
574         IF l_old_SSC_tbl.EXISTS(I) THEN
575             l_old_SSC_rec := l_old_SSC_tbl(I);
576         ELSE
577             l_old_SSC_rec := QP_Attr_Map_PUB.G_MISS_SSC_REC;
578         END IF;
579 
580         --  Load API control record
581 
582         l_control_rec := QP_GLOBALS.Init_Control_Rec
583         (   p_operation     => l_SSC_rec.operation
584         ,   p_control_rec   => p_control_rec
585         );
586 
587         --  Set record return status.
588 
589         l_SSC_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
590 
591         --  Prepare record.
592 
593         IF l_SSC_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
594 
595             l_SSC_rec.db_flag := FND_API.G_FALSE;
596 
597             --  Set missing old record elements to NULL.
598 
599             l_old_SSC_rec :=
600             QP_Ssc_Util.Convert_Miss_To_Null (l_old_SSC_rec);
601 
602         ELSIF l_SSC_rec.operation = QP_GLOBALS.G_OPR_UPDATE
603         OR    l_SSC_rec.operation = QP_GLOBALS.G_OPR_DELETE
604         THEN
605 
606             l_SSC_rec.db_flag := FND_API.G_TRUE;
607 
608             --  Query Old if missing
609 
610             IF  l_old_SSC_rec.pte_source_system_id = FND_API.G_MISS_NUM
611             THEN
612 
613                 l_old_SSC_rec := QP_Ssc_Util.Query_Row
614                 (   p_pte_source_system_id        => l_SSC_rec.pte_source_system_id
615                 );
616 
617             ELSE
618 
619                 --  Set missing old record elements to NULL.
620 
621                 l_old_SSC_rec :=
622                 QP_Ssc_Util.Convert_Miss_To_Null (l_old_SSC_rec);
623 
624             END IF;
625 
626             --  Complete new record from old
627 
628             l_SSC_rec := QP_Ssc_Util.Complete_Record
629             (   p_SSC_rec                     => l_SSC_rec
630             ,   p_old_SSC_rec                 => l_old_SSC_rec
631             );
632 
633         END IF;
634 
635         --  Attribute level validation.
636 
637         IF  l_control_rec.default_attributes
638         OR  l_control_rec.change_attributes
639         THEN
640 
641             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
642 
643                 QP_Validate_Ssc.Attributes
644                 (   x_return_status               => l_return_status
645                 ,   p_SSC_rec                     => l_SSC_rec
646                 ,   p_old_SSC_rec                 => l_old_SSC_rec
647                 );
648 
649                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
650                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
651                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
652                     RAISE FND_API.G_EXC_ERROR;
653                 END IF;
654 
655             END IF;
656 
657         END IF;
658 
659             --  Clear dependent attributes.
660 
661         IF  l_control_rec.change_attributes THEN
662             l_p_SSC_rec := l_SSC_rec;
663             QP_Ssc_Util.Clear_Dependent_Attr
664             (   p_SSC_rec                     => l_p_SSC_rec
665             ,   p_old_SSC_rec                 => l_old_SSC_rec
666             ,   x_SSC_rec                     => l_SSC_rec
667             );
668 
669         END IF;
670 
671         --  Default missing attributes
672 
673         IF  l_control_rec.default_attributes
674         OR  l_control_rec.change_attributes
675         THEN
676             l_p_SSC_rec := l_SSC_rec;
677             QP_Default_Ssc.Attributes
678             (   p_SSC_rec                     => l_p_SSC_rec
679             ,   x_SSC_rec                     => l_SSC_rec
680             );
681 
682         END IF;
683 
684         --  Apply attribute changes
685 
686         IF  l_control_rec.default_attributes
687         OR  l_control_rec.change_attributes
688         THEN
689             l_p_SSC_rec := l_SSC_rec;
690             QP_Ssc_Util.Apply_Attribute_Changes
691             (   p_SSC_rec                     => l_p_SSC_rec
692             ,   p_old_SSC_rec                 => l_old_SSC_rec
693             ,   x_SSC_rec                     => l_SSC_rec
694             );
695 
696         END IF;
697 
698         --  Entity level validation.
699 
700         IF l_control_rec.validate_entity THEN
701 
702             IF l_SSC_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
703 
704                 QP_Validate_Ssc.Entity_Delete
705                 (   x_return_status               => l_return_status
706                 ,   p_SSC_rec                     => l_SSC_rec
707                 );
708 
709             ELSE
710 
711                 QP_Validate_Ssc.Entity
712                 (   x_return_status               => l_return_status
713                 ,   p_SSC_rec                     => l_SSC_rec
714                 ,   p_old_SSC_rec                 => l_old_SSC_rec
715                 );
716 
717             END IF;
718 
719             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
720                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
721             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
722                 RAISE FND_API.G_EXC_ERROR;
723             END IF;
724 
725         END IF;
726 
727         --  Step 4. Write to DB
728 
729         IF l_control_rec.write_to_db THEN
730 
731             IF l_SSC_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
732 
733                 QP_Ssc_Util.Delete_Row
734                 (   p_pte_source_system_id        => l_SSC_rec.pte_source_system_id
735                 );
736 
737             ELSE
738 
739                 --  Get Who Information
740 
741                 l_SSC_rec.last_update_date     := SYSDATE;
742                 l_SSC_rec.last_updated_by      := FND_GLOBAL.USER_ID;
743                 l_SSC_rec.last_update_login    := FND_GLOBAL.LOGIN_ID;
744 
745                 IF l_SSC_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
746 
747                     QP_Ssc_Util.Update_Row (l_SSC_rec);
748 
749                 ELSIF l_SSC_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
750 
751                     l_SSC_rec.creation_date        := SYSDATE;
752                     l_SSC_rec.created_by           := FND_GLOBAL.USER_ID;
753 
754                     QP_Ssc_Util.Insert_Row (l_SSC_rec);
755 
756                 END IF;
757 
758             END IF;
759 
760         END IF;
761 
762         --  Load tables.
763 
764         l_SSC_tbl(I)                   := l_SSC_rec;
765         l_old_SSC_tbl(I)               := l_old_SSC_rec;
766 
767     --  For loop exception handler.
768 
769 
770     EXCEPTION
771 
772         WHEN FND_API.G_EXC_ERROR THEN
773 
774             l_SSC_rec.return_status        := FND_API.G_RET_STS_ERROR;
775             l_SSC_tbl(I)                   := l_SSC_rec;
776             l_old_SSC_tbl(I)               := l_old_SSC_rec;
777 
778         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
779 
780             l_SSC_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
781             l_SSC_tbl(I)                   := l_SSC_rec;
782             l_old_SSC_tbl(I)               := l_old_SSC_rec;
783             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
784 
785         WHEN OTHERS THEN
786 
787             l_SSC_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
788             l_SSC_tbl(I)                   := l_SSC_rec;
789             l_old_SSC_tbl(I)               := l_old_SSC_rec;
790 
791             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
792             THEN
793                 OE_MSG_PUB.Add_Exc_Msg
794                 (   G_PKG_NAME
795                 ,   'Sscs'
796                 );
797             END IF;
798 
799             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
800 
801     END;
802     END LOOP;
803 
804     --  Load OUT parameters
805 
806     x_SSC_tbl                      := l_SSC_tbl;
807     x_old_SSC_tbl                  := l_old_SSC_tbl;
808 
809 EXCEPTION
810 
811     WHEN FND_API.G_EXC_ERROR THEN
812 
813         RAISE;
814 
815     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
816 
817 
818         RAISE;
819 
820     WHEN OTHERS THEN
821 
822         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
823         THEN
824             OE_MSG_PUB.Add_Exc_Msg
825             (   G_PKG_NAME
826             ,   'Sscs'
827             );
828         END IF;
829 
830 
831         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
832 
833 END Sscs;
834 
835 --  Psgs
836 
837 PROCEDURE Psgs
838 (   p_validation_level              IN  NUMBER
839 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
840 ,   p_PSG_tbl                       IN  QP_Attr_Map_PUB.Psg_Tbl_Type
841 ,   p_old_PSG_tbl                   IN  QP_Attr_Map_PUB.Psg_Tbl_Type
842 ,   x_PSG_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Psg_Tbl_Type
843 ,   x_old_PSG_tbl                   OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Psg_Tbl_Type
844 )
845 IS
846 l_return_status               VARCHAR2(1);
847 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
848 l_PSG_rec                     QP_Attr_Map_PUB.Psg_Rec_Type;
849 l_p_PSG_rec                     QP_Attr_Map_PUB.Psg_Rec_Type;
850 l_PSG_tbl                     QP_Attr_Map_PUB.Psg_Tbl_Type;
851 l_old_PSG_rec                 QP_Attr_Map_PUB.Psg_Rec_Type;
852 l_old_PSG_tbl                 QP_Attr_Map_PUB.Psg_Tbl_Type;
853 BEGIN
854 
855     --  Init local table variables.
856 
857     l_PSG_tbl                      := p_PSG_tbl;
858     l_old_PSG_tbl                  := p_old_PSG_tbl;
859 
860     FOR I IN 1..l_PSG_tbl.COUNT LOOP
861     BEGIN
862 
863         --  Load local records.
864 
865         l_PSG_rec := l_PSG_tbl(I);
866 
867         IF l_old_PSG_tbl.EXISTS(I) THEN
868             l_old_PSG_rec := l_old_PSG_tbl(I);
869         ELSE
870             l_old_PSG_rec := QP_Attr_Map_PUB.G_MISS_PSG_REC;
871         END IF;
872 
873         --  Load API control record
874 
875         l_control_rec := QP_GLOBALS.Init_Control_Rec
876         (   p_operation     => l_PSG_rec.operation
877         ,   p_control_rec   => p_control_rec
878         );
879 
880         --  Set record return status.
881 
882         l_PSG_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
883 
884         --  Prepare record.
885 
886         IF l_PSG_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
887 
888             l_PSG_rec.db_flag := FND_API.G_FALSE;
889 
890             --  Set missing old record elements to NULL.
891 
892             l_old_PSG_rec :=
893             QP_Psg_Util.Convert_Miss_To_Null (l_old_PSG_rec);
894 
895         ELSIF l_PSG_rec.operation = QP_GLOBALS.G_OPR_UPDATE
896         OR    l_PSG_rec.operation = QP_GLOBALS.G_OPR_DELETE
897         THEN
898 
899             l_PSG_rec.db_flag := FND_API.G_TRUE;
900 
901             --  Query Old if missing
902 
903             IF  l_old_PSG_rec.segment_pte_id = FND_API.G_MISS_NUM
904             THEN
905 
906                 l_old_PSG_rec := QP_Psg_Util.Query_Row
907                 (   p_segment_pte_id              => l_PSG_rec.segment_pte_id
908                 );
909 
910             ELSE
911 
912                 --  Set missing old record elements to NULL.
913 
914                 l_old_PSG_rec :=
915                 QP_Psg_Util.Convert_Miss_To_Null (l_old_PSG_rec);
916 
917             END IF;
918 
919             --  Complete new record from old
920 
921             l_PSG_rec := QP_Psg_Util.Complete_Record
922             (   p_PSG_rec                     => l_PSG_rec
923             ,   p_old_PSG_rec                 => l_old_PSG_rec
924             );
925 
926         END IF;
927 
928         --  Attribute level validation.
929 
930         IF  l_control_rec.default_attributes
931         OR  l_control_rec.change_attributes
932         THEN
933 
934             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
935 
936                 QP_Validate_Psg.Attributes
937                 (   x_return_status               => l_return_status
938                 ,   p_PSG_rec                     => l_PSG_rec
939                 ,   p_old_PSG_rec                 => l_old_PSG_rec
940                 );
941 
942                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
943                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
944                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
945                     RAISE FND_API.G_EXC_ERROR;
946                 END IF;
947 
948             END IF;
949 
950         END IF;
951 
952             --  Clear dependent attributes.
953 
954         IF  l_control_rec.change_attributes THEN
955             l_p_PSG_rec := l_PSG_rec;
956             QP_Psg_Util.Clear_Dependent_Attr
957             (   p_PSG_rec                     => l_p_PSG_rec
958             ,   p_old_PSG_rec                 => l_old_PSG_rec
959             ,   x_PSG_rec                     => l_PSG_rec
960             );
961 
962         END IF;
963 
964         --  Default missing attributes
965 
966         IF  l_control_rec.default_attributes
967         OR  l_control_rec.change_attributes
968         THEN
969             l_p_PSG_rec := l_PSG_rec;
970             QP_Default_Psg.Attributes
971             (   p_PSG_rec                     => l_p_PSG_rec
972             ,   x_PSG_rec                     => l_PSG_rec
973             );
974 
975         END IF;
976 
977         --  Apply attribute changes
978 
979         IF  l_control_rec.default_attributes
980         OR  l_control_rec.change_attributes
981         THEN
982             l_p_PSG_rec := l_PSG_rec;
983             QP_Psg_Util.Apply_Attribute_Changes
984             (   p_PSG_rec                     => l_p_PSG_rec
985             ,   p_old_PSG_rec                 => l_old_PSG_rec
986             ,   x_PSG_rec                     => l_PSG_rec
987             );
988 
989         END IF;
990 
991         --  Entity level validation.
992 
993         IF l_control_rec.validate_entity THEN
994 
995             IF l_PSG_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
996 
997                 QP_Validate_Psg.Entity_Delete
998                 (   x_return_status               => l_return_status
999                 ,   p_PSG_rec                     => l_PSG_rec
1000                 );
1001 
1002             ELSE
1003 
1004                 QP_Validate_Psg.Entity
1005                 (   x_return_status               => l_return_status
1006                 ,   p_PSG_rec                     => l_PSG_rec
1007                 ,   p_old_PSG_rec                 => l_old_PSG_rec
1008                 );
1009 
1010             END IF;
1011 
1012             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1013                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1014             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1015                 RAISE FND_API.G_EXC_ERROR;
1016             END IF;
1017 
1018         END IF;
1019 
1020         --  Step 4. Write to DB
1021 
1022         IF l_control_rec.write_to_db THEN
1023 
1024             IF l_PSG_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1025 
1026                 QP_Psg_Util.Delete_Row
1027                 (   p_segment_pte_id              => l_PSG_rec.segment_pte_id
1028                 );
1029 
1030             ELSE
1031 
1032                 --  Get Who Information
1033 
1034                 l_PSG_rec.last_update_date     := SYSDATE;
1035                 l_PSG_rec.last_updated_by      := FND_GLOBAL.USER_ID;
1036                 l_PSG_rec.last_update_login    := FND_GLOBAL.LOGIN_ID;
1037 
1038                 IF l_PSG_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
1039 
1040                     QP_Psg_Util.Update_Row (l_PSG_rec);
1041 
1042                 ELSIF l_PSG_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1043 
1044                     l_PSG_rec.creation_date        := SYSDATE;
1045                     l_PSG_rec.created_by           := FND_GLOBAL.USER_ID;
1046 
1047                     QP_Psg_Util.Insert_Row (l_PSG_rec);
1048 
1049                 END IF;
1050 
1051             END IF;
1052 
1053         END IF;
1054 
1055         --  Load tables.
1056 
1057         l_PSG_tbl(I)                   := l_PSG_rec;
1058         l_old_PSG_tbl(I)               := l_old_PSG_rec;
1059 
1060     --  For loop exception handler.
1061 
1062 
1063     EXCEPTION
1064 
1065         WHEN FND_API.G_EXC_ERROR THEN
1066 
1067             l_PSG_rec.return_status        := FND_API.G_RET_STS_ERROR;
1068             l_PSG_tbl(I)                   := l_PSG_rec;
1069             l_old_PSG_tbl(I)               := l_old_PSG_rec;
1070 
1071         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1072 
1073             l_PSG_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1074             l_PSG_tbl(I)                   := l_PSG_rec;
1075             l_old_PSG_tbl(I)               := l_old_PSG_rec;
1076             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1077 
1078         WHEN OTHERS THEN
1079 
1080             l_PSG_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1081             l_PSG_tbl(I)                   := l_PSG_rec;
1082             l_old_PSG_tbl(I)               := l_old_PSG_rec;
1083 
1084             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1085             THEN
1086                 OE_MSG_PUB.Add_Exc_Msg
1087                 (   G_PKG_NAME
1088                 ,   'Psgs'
1089                 );
1090             END IF;
1091 
1092             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1093 
1094     END;
1095     END LOOP;
1096 
1097     --  Load OUT parameters
1098 
1099     x_PSG_tbl                      := l_PSG_tbl;
1100     x_old_PSG_tbl                  := l_old_PSG_tbl;
1101 
1102 EXCEPTION
1103 
1104     WHEN FND_API.G_EXC_ERROR THEN
1105 
1106         RAISE;
1107 
1108     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1109 
1110 
1111         RAISE;
1112 
1113     WHEN OTHERS THEN
1114 
1115         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1116         THEN
1117             OE_MSG_PUB.Add_Exc_Msg
1118             (   G_PKG_NAME
1119             ,   'Psgs'
1120             );
1121         END IF;
1122 
1123 
1124         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1125 
1126 END Psgs;
1127 
1128 --  Sous
1129 
1130 PROCEDURE Sous
1131 (   p_validation_level              IN  NUMBER
1132 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
1133 ,   p_SOU_tbl                       IN  QP_Attr_Map_PUB.Sou_Tbl_Type
1134 ,   p_old_SOU_tbl                   IN  QP_Attr_Map_PUB.Sou_Tbl_Type
1135 ,   x_SOU_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Tbl_Type
1136 ,   x_old_SOU_tbl                   OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Tbl_Type
1137 )
1138 IS
1139 l_return_status               VARCHAR2(1);
1140 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1141 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
1142 l_p_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
1143 l_SOU_tbl                     QP_Attr_Map_PUB.Sou_Tbl_Type;
1144 l_old_SOU_rec                 QP_Attr_Map_PUB.Sou_Rec_Type;
1145 l_old_SOU_tbl                 QP_Attr_Map_PUB.Sou_Tbl_Type;
1146 BEGIN
1147 
1148     --  Init local table variables.
1149 
1150     l_SOU_tbl                      := p_SOU_tbl;
1151     l_old_SOU_tbl                  := p_old_SOU_tbl;
1152 
1153     FOR I IN 1..l_SOU_tbl.COUNT LOOP
1154     BEGIN
1155 
1156         --  Load local records.
1157 
1158         l_SOU_rec := l_SOU_tbl(I);
1159 
1160         IF l_old_SOU_tbl.EXISTS(I) THEN
1161             l_old_SOU_rec := l_old_SOU_tbl(I);
1162         ELSE
1163             l_old_SOU_rec := QP_Attr_Map_PUB.G_MISS_SOU_REC;
1164         END IF;
1165 
1166         --  Load API control record
1167 
1168         l_control_rec := QP_GLOBALS.Init_Control_Rec
1169         (   p_operation     => l_SOU_rec.operation
1170         ,   p_control_rec   => p_control_rec
1171         );
1172 
1173         --  Set record return status.
1174 
1175         l_SOU_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
1176 
1177         --  Prepare record.
1178 
1179         IF l_SOU_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1180 
1181             l_SOU_rec.db_flag := FND_API.G_FALSE;
1182 
1183             --  Set missing old record elements to NULL.
1184 
1185             l_old_SOU_rec :=
1186             QP_Sou_Util.Convert_Miss_To_Null (l_old_SOU_rec);
1187 
1188         ELSIF l_SOU_rec.operation = QP_GLOBALS.G_OPR_UPDATE
1189         OR    l_SOU_rec.operation = QP_GLOBALS.G_OPR_DELETE
1190         THEN
1191 
1192             l_SOU_rec.db_flag := FND_API.G_TRUE;
1193 
1194             --  Query Old if missing
1195 
1196             IF  l_old_SOU_rec.attribute_sourcing_id = FND_API.G_MISS_NUM
1197             THEN
1198 
1199     oe_debug_pub.add('attribute_sou is missing');
1200                 l_old_SOU_rec := QP_Sou_Util.Query_Row
1201                 (   p_attribute_sourcing_id       => l_SOU_rec.attribute_sourcing_id
1202                 );
1203 
1204             ELSE
1205 
1206                 --  Set missing old record elements to NULL.
1207 
1208                 l_old_SOU_rec :=
1209                 QP_Sou_Util.Convert_Miss_To_Null (l_old_SOU_rec);
1210 
1211             END IF;
1212 
1213             --  Complete new record from old
1214 
1215             l_SOU_rec := QP_Sou_Util.Complete_Record
1216             (   p_SOU_rec                     => l_SOU_rec
1217             ,   p_old_SOU_rec                 => l_old_SOU_rec
1218             );
1219 
1220         END IF;
1221 
1222         --  Attribute level validation.
1223 
1224         IF  l_control_rec.default_attributes
1225         OR  l_control_rec.change_attributes
1226         THEN
1227 
1228             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
1229 
1230                 QP_Validate_Sou.Attributes
1231                 (   x_return_status               => l_return_status
1232                 ,   p_SOU_rec                     => l_SOU_rec
1233                 ,   p_old_SOU_rec                 => l_old_SOU_rec
1234                 );
1235 
1236                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1237                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1238                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1239                     RAISE FND_API.G_EXC_ERROR;
1240                 END IF;
1241 
1242             END IF;
1243 
1244         END IF;
1245 
1246             --  Clear dependent attributes.
1247 
1248         IF  l_control_rec.change_attributes THEN
1249             l_p_SOU_rec := l_SOU_rec;
1250             QP_Sou_Util.Clear_Dependent_Attr
1251             (   p_SOU_rec                     => l_p_SOU_rec
1252             ,   p_old_SOU_rec                 => l_old_SOU_rec
1253             ,   x_SOU_rec                     => l_SOU_rec
1254             );
1255 
1256         END IF;
1257 
1258         --  Default missing attributes
1259 
1260         IF  l_control_rec.default_attributes
1261         OR  l_control_rec.change_attributes
1262         THEN
1263             l_p_SOU_rec := l_SOU_rec;
1264             QP_Default_Sou.Attributes
1265             (   p_SOU_rec                     => l_p_SOU_rec
1266             ,   x_SOU_rec                     => l_SOU_rec
1267             );
1268 
1269         END IF;
1270 
1271         --  Apply attribute changes
1272 
1273         IF  l_control_rec.default_attributes
1274         OR  l_control_rec.change_attributes
1275         THEN
1276             l_p_SOU_rec := l_SOU_rec;
1277             QP_Sou_Util.Apply_Attribute_Changes
1278             (   p_SOU_rec                     => l_p_SOU_rec
1279             ,   p_old_SOU_rec                 => l_old_SOU_rec
1280             ,   x_SOU_rec                     => l_SOU_rec
1281             );
1282 
1283         END IF;
1284 
1285         --  Entity level validation.
1286 
1287         IF l_control_rec.validate_entity THEN
1288 
1289             IF l_SOU_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1290 
1291                 QP_Validate_Sou.Entity_Delete
1292                 (   x_return_status               => l_return_status
1293                 ,   p_SOU_rec                     => l_SOU_rec
1294                 );
1295 
1296             ELSE
1297 
1298                 QP_Validate_Sou.Entity
1299                 (   x_return_status               => l_return_status
1300                 ,   p_SOU_rec                     => l_SOU_rec
1301                 ,   p_old_SOU_rec                 => l_old_SOU_rec
1302                 );
1303 
1304             END IF;
1305 
1306             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1307                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1308             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1309                 RAISE FND_API.G_EXC_ERROR;
1310             END IF;
1311 
1312         END IF;
1313 
1314         --  Step 4. Write to DB
1315 
1316         IF l_control_rec.write_to_db THEN
1317 
1318             IF l_SOU_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1319 
1320                 QP_Sou_Util.Delete_Row
1321                 (   p_attribute_sourcing_id       => l_SOU_rec.attribute_sourcing_id
1322                 );
1323 
1324             ELSE
1325 
1326                 --  Get Who Information
1327 
1328                 l_SOU_rec.last_update_date     := SYSDATE;
1329                 l_SOU_rec.last_updated_by      := FND_GLOBAL.USER_ID;
1330                 l_SOU_rec.last_update_login    := FND_GLOBAL.LOGIN_ID;
1331 
1332                 IF l_SOU_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
1333 
1334                     QP_Sou_Util.Update_Row (l_SOU_rec);
1335 
1336                 ELSIF l_SOU_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1337 
1338                     l_SOU_rec.creation_date        := SYSDATE;
1339                     l_SOU_rec.created_by           := FND_GLOBAL.USER_ID;
1340 
1341                     QP_Sou_Util.Insert_Row (l_SOU_rec);
1342 
1343                 END IF;
1344 
1345             END IF;
1346 
1347         END IF;
1348 
1349         --  Load tables.
1350 
1351         l_SOU_tbl(I)                   := l_SOU_rec;
1352         l_old_SOU_tbl(I)               := l_old_SOU_rec;
1353 
1354     --  For loop exception handler.
1355 
1356 
1357     EXCEPTION
1358 
1359         WHEN FND_API.G_EXC_ERROR THEN
1360 
1361             l_SOU_rec.return_status        := FND_API.G_RET_STS_ERROR;
1362             l_SOU_tbl(I)                   := l_SOU_rec;
1363             l_old_SOU_tbl(I)               := l_old_SOU_rec;
1364 
1365         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1366 
1367             l_SOU_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1368             l_SOU_tbl(I)                   := l_SOU_rec;
1369             l_old_SOU_tbl(I)               := l_old_SOU_rec;
1370             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1371 
1372         WHEN OTHERS THEN
1373 
1374             l_SOU_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1375             l_SOU_tbl(I)                   := l_SOU_rec;
1376             l_old_SOU_tbl(I)               := l_old_SOU_rec;
1377 
1378             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1379             THEN
1380                 OE_MSG_PUB.Add_Exc_Msg
1381                 (   G_PKG_NAME
1382                 ,   'Sous'
1383                 );
1384             END IF;
1385 
1386             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1387 
1388     END;
1389     END LOOP;
1390 
1391     --  Load OUT parameters
1392 
1393     x_SOU_tbl                      := l_SOU_tbl;
1394     x_old_SOU_tbl                  := l_old_SOU_tbl;
1395 
1396 EXCEPTION
1397 
1398     WHEN FND_API.G_EXC_ERROR THEN
1399 
1400         RAISE;
1401 
1402     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1403 
1404 
1405         RAISE;
1406 
1407     WHEN OTHERS THEN
1408 
1409         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1410         THEN
1411             OE_MSG_PUB.Add_Exc_Msg
1412             (   G_PKG_NAME
1413             ,   'Sous'
1414             );
1415         END IF;
1416 
1417 
1418         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1419 
1420 END Sous;
1421 
1422 --  Fnas
1423 
1424 PROCEDURE Fnas
1425 (   p_validation_level              IN  NUMBER
1426 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type
1427 ,   p_FNA_tbl                       IN  QP_Attr_Map_PUB.Fna_Tbl_Type
1428 ,   p_old_FNA_tbl                   IN  QP_Attr_Map_PUB.Fna_Tbl_Type
1429 ,   x_FNA_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Fna_Tbl_Type
1430 ,   x_old_FNA_tbl                   OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Fna_Tbl_Type
1431 )
1432 IS
1433 l_return_status               VARCHAR2(1);
1434 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1435 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
1436 l_p_FNA_rec                   QP_Attr_Map_PUB.Fna_Rec_Type;
1437 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
1438 l_old_FNA_rec                 QP_Attr_Map_PUB.Fna_Rec_Type;
1439 l_old_FNA_tbl                 QP_Attr_Map_PUB.Fna_Tbl_Type;
1440 l_dummy_ret_status            VARCHAR2(1);
1441 BEGIN
1442 
1443     --  Init local table variables.
1444     l_FNA_tbl                      := p_FNA_tbl;
1445     l_old_FNA_tbl                  := p_old_FNA_tbl;
1446 
1447     FOR I IN 1..l_FNA_tbl.COUNT LOOP
1448     BEGIN
1449 
1450         --  Load local records.
1451 
1452         l_FNA_rec := l_FNA_tbl(I);
1453 
1454         IF l_old_FNA_tbl.EXISTS(I) THEN
1455             l_old_FNA_rec := l_old_FNA_tbl(I);
1456         ELSE
1457             l_old_FNA_rec := QP_Attr_Map_PUB.G_MISS_FNA_REC;
1458         END IF;
1459 
1460         --  Load API control record
1461 
1462         l_control_rec := QP_GLOBALS.Init_Control_Rec
1463         (   p_operation     => l_FNA_rec.operation
1464         ,   p_control_rec   => p_control_rec
1465         );
1466 
1467         --  Set record return status.
1468 
1469         l_FNA_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
1470 
1471         --  Prepare record.
1472 
1473         IF l_FNA_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1474 
1475             l_FNA_rec.db_flag := FND_API.G_FALSE;
1476 
1477             --  Set missing old record elements to NULL.
1478 
1479             l_old_FNA_rec :=
1480             QP_Fna_Util.Convert_Miss_To_Null (l_old_FNA_rec);
1481 
1482         ELSIF l_FNA_rec.operation = QP_GLOBALS.G_OPR_UPDATE
1483         OR    l_FNA_rec.operation = QP_GLOBALS.G_OPR_DELETE
1484         THEN
1485 
1486             l_FNA_rec.db_flag := FND_API.G_TRUE;
1487 
1488             --  Query Old if missing
1489 
1490             IF  l_old_FNA_rec.pte_sourcesystem_fnarea_id = FND_API.G_MISS_NUM
1491             THEN
1492 
1493                 l_old_FNA_rec := QP_Fna_Util.Query_Row
1494                 (   p_pte_sourcesystem_fnarea_id  => l_FNA_rec.pte_sourcesystem_fnarea_id
1495                 );
1496             ELSE
1497 
1498                 --  Set missing old record elements to NULL.
1499 
1500                 l_old_FNA_rec :=
1501                 QP_Fna_Util.Convert_Miss_To_Null (l_old_FNA_rec);
1502 
1503             END IF;
1504 
1505             --  Complete new record from old
1506 
1507             l_FNA_rec := QP_Fna_Util.Complete_Record
1508             (   p_FNA_rec                     => l_FNA_rec
1509             ,   p_old_FNA_rec                 => l_old_FNA_rec
1510             );
1511 
1512         END IF;
1513 
1514         --  Attribute level validation.
1515 
1516         IF  l_control_rec.default_attributes
1517         OR  l_control_rec.change_attributes
1518         THEN
1519 
1520             IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
1521 
1522                 QP_Validate_Fna.Attributes
1523                 (   x_return_status               => l_return_status
1524                 ,   p_FNA_rec                     => l_FNA_rec
1525                 ,   p_old_FNA_rec                 => l_old_FNA_rec
1526                 );
1527 
1528                 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1529                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1530                 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1531                     RAISE FND_API.G_EXC_ERROR;
1532                 END IF;
1533 
1534             END IF;
1535 
1536         END IF;
1537 
1538             --  Clear dependent attributes.
1539 
1540         IF  l_control_rec.change_attributes THEN
1541             l_p_FNA_rec := l_FNA_rec;
1542             QP_Fna_Util.Clear_Dependent_Attr
1543             (   p_FNA_rec                     => l_p_FNA_rec
1544             ,   p_old_FNA_rec                 => l_old_FNA_rec
1545             ,   x_FNA_rec                     => l_FNA_rec
1546             );
1547 
1548         END IF;
1549 
1550         --  Default missing attributes
1551 
1552         IF  l_control_rec.default_attributes
1553         OR  l_control_rec.change_attributes
1554         THEN
1555             l_p_FNA_rec := l_FNA_rec;
1556             QP_Default_Fna.Attributes
1557             (   p_FNA_rec                     => l_p_FNA_rec
1558             ,   x_FNA_rec                     => l_FNA_rec
1559             );
1560 
1561         END IF;
1562 
1563         --  Apply attribute changes
1564         IF  l_control_rec.default_attributes
1565         OR  l_control_rec.change_attributes
1566         THEN
1567             l_p_FNA_rec := l_FNA_rec;
1568             QP_Fna_Util.Apply_Attribute_Changes
1569             (   p_FNA_rec                     => l_p_FNA_rec
1570             ,   p_old_FNA_rec                 => l_old_FNA_rec
1571             ,   p_called_from_ui              => l_control_rec.called_from_ui
1572             ,   x_FNA_rec                     => l_FNA_rec
1573             );
1574 
1575         END IF;
1576 
1577         --  Entity level validation.
1578 
1579         IF l_control_rec.validate_entity THEN
1580 
1581             IF l_FNA_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1582 
1583                 QP_Validate_Fna.Entity_Delete
1584                 (   x_return_status               => l_return_status
1585                 ,   p_FNA_rec                     => l_FNA_rec
1586                 );
1587 
1588             ELSE
1589 
1590                 QP_Validate_Fna.Entity
1591                 (   x_return_status               => l_return_status
1592                 ,   p_FNA_rec                     => l_FNA_rec
1593                 ,   p_old_FNA_rec                 => l_old_FNA_rec
1594                 );
1595 
1596             END IF;
1597 
1598             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1599                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1600             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1601                 RAISE FND_API.G_EXC_ERROR;
1602             END IF;
1603 
1604         END IF;
1605 
1606         --  Step 4. Write to DB
1607 
1608         IF l_control_rec.write_to_db THEN
1609 
1610             IF l_FNA_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
1611 
1612                 QP_Fna_Util.Delete_Row
1613                 (   p_pte_sourcesystem_fnarea_id  => l_FNA_rec.pte_sourcesystem_fnarea_id
1614                 );
1615 
1616                 qp_delayed_requests_PVT.log_request(
1617                   p_entity_code => QP_GLOBALS.G_ENTITY_FNA,
1618                   p_entity_id  => l_FNA_rec.pte_source_system_id,
1619                   p_requesting_entity_code=> QP_GLOBALS.G_ENTITY_FNA,
1620                   p_requesting_entity_id => l_FNA_rec.pte_source_system_id,
1621                   p_request_type => QP_GLOBALS.G_CHECK_ENABLED_FUNC_AREAS,
1622                   x_return_status => l_dummy_ret_status);
1623 
1624                 IF l_control_rec.called_from_ui = 'N' THEN
1625                   QP_Fna_Util.Warn_Disable_Delete_Fna
1626                     ( p_action             => 'DELETE'
1627                     , p_called_from_ui     => l_control_rec.called_from_ui
1628                     , p_functional_area_id => l_FNA_rec.functional_area_id
1629                     , p_pte_ss_id          => l_FNA_rec.pte_source_system_id
1630                     );
1631                 END IF;
1632 
1633             ELSE
1634 
1635                 --  Get Who Information
1636 
1637                 l_FNA_rec.last_update_date     := SYSDATE;
1638                 l_FNA_rec.last_updated_by      := FND_GLOBAL.USER_ID;
1639                 l_FNA_rec.last_update_login    := FND_GLOBAL.LOGIN_ID;
1640 
1641                 IF l_FNA_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
1642 
1643                     QP_Fna_Util.Update_Row (l_FNA_rec);
1644 
1645                 ELSIF l_FNA_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
1646 
1647                     l_FNA_rec.creation_date        := SYSDATE;
1648                     l_FNA_rec.created_by           := FND_GLOBAL.USER_ID;
1649 
1650                     QP_Fna_Util.Insert_Row (l_FNA_rec);
1651 
1652                 END IF;
1653 
1654             END IF;
1655 
1656         END IF;
1657 
1658         --  Load tables.
1659 
1660         l_FNA_tbl(I)                   := l_FNA_rec;
1661         l_old_FNA_tbl(I)               := l_old_FNA_rec;
1662 
1663     --  For loop exception handler.
1664 
1665     EXCEPTION
1666 
1667         WHEN FND_API.G_EXC_ERROR THEN
1668 
1669             l_FNA_rec.return_status        := FND_API.G_RET_STS_ERROR;
1670             l_FNA_tbl(I)                   := l_FNA_rec;
1671             l_old_FNA_tbl(I)               := l_old_FNA_rec;
1672 
1673         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1674 
1675             l_FNA_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1676             l_FNA_tbl(I)                   := l_FNA_rec;
1677             l_old_FNA_tbl(I)               := l_old_FNA_rec;
1678             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1679 
1680         WHEN OTHERS THEN
1681 
1682             l_FNA_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1683             l_FNA_tbl(I)                   := l_FNA_rec;
1684             l_old_FNA_tbl(I)               := l_old_FNA_rec;
1685 
1686             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1687             THEN
1688                 OE_MSG_PUB.Add_Exc_Msg
1689                 (   G_PKG_NAME
1690                 ,   'Fnas'
1691                 );
1692             END IF;
1693 
1694             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1695 
1696     END;
1697     END LOOP;
1698 
1699     --  Load OUT parameters
1700 
1701     x_FNA_tbl                      := l_FNA_tbl;
1702     x_old_FNA_tbl                  := l_old_FNA_tbl;
1703 
1704 EXCEPTION
1705 
1706     WHEN FND_API.G_EXC_ERROR THEN
1707 
1708         if l_control_rec.called_from_ui = 'N' then
1709 	   qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1710 		(p_entity_code => QP_GLOBALS.G_ENTITY_FNA,
1711 	      p_entity_id => l_FNA_rec.pte_source_system_id,
1712 	      x_return_status => l_return_status );
1713         end if;
1714 
1715         RAISE;
1716 
1717     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1718 
1719 
1720         if l_control_rec.called_from_ui = 'N' then
1721 	   qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1722 		(p_entity_code => QP_GLOBALS.G_ENTITY_FNA,
1723 	      p_entity_id => l_FNA_rec.pte_source_system_id,
1724 	      x_return_status => l_return_status );
1725         end if;
1726 
1727         RAISE;
1728 
1729     WHEN OTHERS THEN
1730 
1731         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1732         THEN
1733             OE_MSG_PUB.Add_Exc_Msg
1734             (   G_PKG_NAME
1735             ,   'Fnas'
1736             );
1737         END IF;
1738 
1739 
1740         if l_control_rec.called_from_ui = 'N' then
1741 	   qp_delayed_requests_pvt.delete_reqs_for_deleted_entity
1742 		(p_entity_code => QP_GLOBALS.G_ENTITY_FNA,
1743 	      p_entity_id => l_FNA_rec.pte_source_system_id,
1744 	      x_return_status => l_return_status );
1745         end if;
1746 
1747         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1748 
1749 END Fnas;
1750 
1751 --  Start of Comments
1752 --  API name    Process_Attr_Mapping
1753 --  Type        Private
1754 --  Function
1755 --
1756 --  Pre-reqs
1757 --
1758 --  Parameters
1759 --
1760 --  Version     Current version = 1.0
1761 --              Initial version = 1.0
1762 --
1763 --  Notes
1764 --
1765 --  End of Comments
1766 
1767 PROCEDURE Process_Attr_Mapping
1768 (   p_api_version_number            IN  NUMBER
1769 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1770 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
1771 ,   p_validation_level              IN  NUMBER := FND_API.G_VALID_LEVEL_FULL
1772 ,   p_control_rec                   IN  QP_GLOBALS.Control_Rec_Type :=
1773                                         QP_GLOBALS.G_MISS_CONTROL_REC
1774 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1775 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1776 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1777 ,   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type :=
1778                                         QP_Attr_Map_PUB.G_MISS_PTE_REC
1779 ,   p_old_PTE_rec                   IN  QP_Attr_Map_PUB.Pte_Rec_Type :=
1780                                         QP_Attr_Map_PUB.G_MISS_PTE_REC
1781 ,   p_RQT_tbl                       IN  QP_Attr_Map_PUB.Rqt_Tbl_Type :=
1782                                         QP_Attr_Map_PUB.G_MISS_RQT_TBL
1783 ,   p_old_RQT_tbl                   IN  QP_Attr_Map_PUB.Rqt_Tbl_Type :=
1784                                         QP_Attr_Map_PUB.G_MISS_RQT_TBL
1785 ,   p_SSC_tbl                       IN  QP_Attr_Map_PUB.Ssc_Tbl_Type :=
1786                                         QP_Attr_Map_PUB.G_MISS_SSC_TBL
1787 ,   p_old_SSC_tbl                   IN  QP_Attr_Map_PUB.Ssc_Tbl_Type :=
1788                                         QP_Attr_Map_PUB.G_MISS_SSC_TBL
1789 ,   p_PSG_tbl                       IN  QP_Attr_Map_PUB.Psg_Tbl_Type :=
1790                                         QP_Attr_Map_PUB.G_MISS_PSG_TBL
1791 ,   p_old_PSG_tbl                   IN  QP_Attr_Map_PUB.Psg_Tbl_Type :=
1792                                         QP_Attr_Map_PUB.G_MISS_PSG_TBL
1793 ,   p_SOU_tbl                       IN  QP_Attr_Map_PUB.Sou_Tbl_Type :=
1794                                         QP_Attr_Map_PUB.G_MISS_SOU_TBL
1795 ,   p_old_SOU_tbl                   IN  QP_Attr_Map_PUB.Sou_Tbl_Type :=
1796                                         QP_Attr_Map_PUB.G_MISS_SOU_TBL
1797 ,   p_FNA_tbl                       IN  QP_Attr_Map_PUB.Fna_Tbl_Type :=
1798                                         QP_Attr_Map_PUB.G_MISS_FNA_TBL
1799 ,   p_old_FNA_tbl                   IN  QP_Attr_Map_PUB.Fna_Tbl_Type :=
1800                                         QP_Attr_Map_PUB.G_MISS_FNA_TBL
1801 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
1802 ,   x_RQT_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Rqt_Tbl_Type
1803 ,   x_SSC_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Ssc_Tbl_Type
1804 ,   x_PSG_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Psg_Tbl_Type
1805 ,   x_SOU_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Tbl_Type
1806 ,   x_FNA_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Fna_Tbl_Type
1807 )
1808 IS
1809 l_api_version_number          CONSTANT NUMBER := 1.0;
1810 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Attr_Mapping';
1811 l_return_status               VARCHAR2(1);
1812 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1813 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
1814 l_p_PTE_rec                   QP_Attr_Map_PUB.Pte_Rec_Type := p_PTE_rec;
1815 l_old_PTE_rec                 QP_Attr_Map_PUB.Pte_Rec_Type := p_old_PTE_rec;
1816 l_p_old_PTE_rec               QP_Attr_Map_PUB.Pte_Rec_Type := p_old_PTE_rec;
1817 l_RQT_rec                     QP_Attr_Map_PUB.Rqt_Rec_Type;
1818 l_RQT_tbl                     QP_Attr_Map_PUB.Rqt_Tbl_Type;
1819 l_p_RQT_tbl                   QP_Attr_Map_PUB.Rqt_Tbl_Type;
1820 l_old_RQT_rec                 QP_Attr_Map_PUB.Rqt_Rec_Type;
1821 l_old_RQT_tbl                 QP_Attr_Map_PUB.Rqt_Tbl_Type;
1822 l_p_old_RQT_tbl               QP_Attr_Map_PUB.Rqt_Tbl_Type;
1823 l_SSC_rec                     QP_Attr_Map_PUB.Ssc_Rec_Type;
1824 l_SSC_tbl                     QP_Attr_Map_PUB.Ssc_Tbl_Type;
1825 l_p_SSC_tbl                   QP_Attr_Map_PUB.Ssc_Tbl_Type;
1826 l_old_SSC_rec                 QP_Attr_Map_PUB.Ssc_Rec_Type;
1827 l_old_SSC_tbl                 QP_Attr_Map_PUB.Ssc_Tbl_Type;
1828 l_p_old_SSC_tbl               QP_Attr_Map_PUB.Ssc_Tbl_Type;
1829 l_PSG_rec                     QP_Attr_Map_PUB.Psg_Rec_Type;
1830 l_PSG_tbl                     QP_Attr_Map_PUB.Psg_Tbl_Type;
1831 l_p_PSG_tbl                   QP_Attr_Map_PUB.Psg_Tbl_Type;
1832 l_old_PSG_rec                 QP_Attr_Map_PUB.Psg_Rec_Type;
1833 l_old_PSG_tbl                 QP_Attr_Map_PUB.Psg_Tbl_Type;
1834 l_p_old_PSG_tbl               QP_Attr_Map_PUB.Psg_Tbl_Type;
1835 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
1836 l_SOU_tbl                     QP_Attr_Map_PUB.Sou_Tbl_Type;
1837 l_p_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
1838 l_old_SOU_rec                 QP_Attr_Map_PUB.Sou_Rec_Type;
1839 l_old_SOU_tbl                 QP_Attr_Map_PUB.Sou_Tbl_Type;
1840 l_p_old_SOU_tbl               QP_Attr_Map_PUB.Sou_Tbl_Type;
1841 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
1842 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
1843 l_p_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
1844 l_old_FNA_rec                 QP_Attr_Map_PUB.Fna_Rec_Type;
1845 l_old_FNA_tbl                 QP_Attr_Map_PUB.Fna_Tbl_Type;
1846 l_p_old_FNA_tbl               QP_Attr_Map_PUB.Fna_Tbl_Type;
1847 BEGIN
1848     oe_debug_pub.add('Entered process_attr_mapping.........................');
1849 
1850     --  Standard call to check for call compatibility
1851 
1852     IF NOT FND_API.Compatible_API_Call
1853            (   l_api_version_number
1854            ,   p_api_version_number
1855            ,   l_api_name
1856            ,   G_PKG_NAME
1857            )
1858     THEN
1859         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1860     END IF;
1861 
1862     --  Initialize message list.
1863 
1864     IF FND_API.to_Boolean(p_init_msg_list) THEN
1865         OE_MSG_PUB.initialize;
1866     END IF;
1867 
1868     --  Init local table variables.
1869 
1870     l_RQT_tbl                      := p_RQT_tbl;
1871     l_old_RQT_tbl                  := p_old_RQT_tbl;
1872 
1873     --  Init local table variables.
1874 
1875     l_SSC_tbl                      := p_SSC_tbl;
1876     l_old_SSC_tbl                  := p_old_SSC_tbl;
1877 
1878     --  Init local table variables.
1879 
1880     l_PSG_tbl                      := p_PSG_tbl;
1881     l_old_PSG_tbl                  := p_old_PSG_tbl;
1882 
1883     --  Init local table variables.
1884 
1885     l_SOU_tbl                      := p_SOU_tbl;
1886     l_old_SOU_tbl                  := p_old_SOU_tbl;
1887 
1888     --  Init local table variables.
1889 
1890     l_FNA_tbl                      := p_FNA_tbl;
1891     l_old_FNA_tbl                  := p_old_FNA_tbl;
1892 
1893     --  Pte
1894     l_p_PTE_rec := l_PTE_rec;
1895     l_p_old_PTE_rec := l_old_PTE_rec;
1896     Pte
1897     (   p_validation_level            => p_validation_level
1898     ,   p_control_rec                 => p_control_rec
1899     ,   p_PTE_rec                     => l_p_PTE_rec
1900     ,   p_old_PTE_rec                 => l_p_old_PTE_rec
1901     ,   x_PTE_rec                     => l_PTE_rec
1902     ,   x_old_PTE_rec                 => l_old_PTE_rec
1903     );
1904 
1905     --  Perform PTE group requests.
1906 
1907     IF p_control_rec.process AND
1908         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1909         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PTE)
1910     THEN
1911 
1912         NULL;
1913 
1914     END IF;
1915 
1916     --  Load parent key if missing and operation is create.
1917 
1918     FOR I IN 1..l_RQT_tbl.COUNT LOOP
1919 
1920         l_RQT_rec := l_RQT_tbl(I);
1921 
1922         IF l_RQT_rec.operation = QP_GLOBALS.G_OPR_CREATE
1923         --**AND (l_RQT_rec.lookup_code IS NULL OR
1924         AND (l_RQT_rec.pte_code IS NULL OR
1925         --**    l_RQT_rec.lookup_code = FND_API.G_MISS_CHAR)
1926             l_RQT_rec.pte_code = FND_API.G_MISS_CHAR)
1927         THEN
1928 
1929             --  Copy parent_id.
1930 
1931             --**l_RQT_tbl(I).lookup_code := l_PTE_rec.lookup_code;
1932             l_RQT_tbl(I).pte_code := l_PTE_rec.lookup_code;
1933         END IF;
1934     END LOOP;
1935 
1936     --  Rqts
1937     l_p_RQT_tbl := l_RQT_tbl;
1938     l_p_old_RQT_tbl := l_old_RQT_tbl;
1939     Rqts
1940     (   p_validation_level            => p_validation_level
1941     ,   p_control_rec                 => p_control_rec
1942     ,   p_RQT_tbl                     => l_p_RQT_tbl
1943     ,   p_old_RQT_tbl                 => l_p_old_RQT_tbl
1944     ,   x_RQT_tbl                     => l_RQT_tbl
1945     ,   x_old_RQT_tbl                 => l_old_RQT_tbl
1946     );
1947 
1948     --  Perform RQT group requests.
1949 
1950     IF p_control_rec.process AND
1951         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1952         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_RQT)
1953     THEN
1954 
1955         NULL;
1956 
1957     END IF;
1958 
1959     --  Load parent key if missing and operation is create.
1960 
1961     FOR I IN 1..l_SSC_tbl.COUNT LOOP
1962 
1963         l_SSC_rec := l_SSC_tbl(I);
1964 
1965         IF l_SSC_rec.operation = QP_GLOBALS.G_OPR_CREATE
1966         --**AND (l_SSC_rec.lookup_code IS NULL OR
1967         AND (l_SSC_rec.pte_code IS NULL OR
1968             --**l_SSC_rec.lookup_code = FND_API.G_MISS_CHAR)
1969             l_SSC_rec.pte_code = FND_API.G_MISS_CHAR)
1970         THEN
1971 
1972             --  Copy parent_id.
1973 
1974             --**l_SSC_tbl(I).lookup_code := l_PTE_rec.lookup_code;
1975             l_SSC_tbl(I).pte_code := l_PTE_rec.lookup_code;
1976         END IF;
1977     END LOOP;
1978 
1979     --  Sscs
1980     l_p_SSC_tbl := l_SSC_tbl;
1981     l_p_old_SSC_tbl := l_old_SSC_tbl;
1982     Sscs
1983     (   p_validation_level            => p_validation_level
1984     ,   p_control_rec                 => p_control_rec
1985     ,   p_SSC_tbl                     => l_p_SSC_tbl
1986     ,   p_old_SSC_tbl                 => l_p_old_SSC_tbl
1987     ,   x_SSC_tbl                     => l_SSC_tbl
1988     ,   x_old_SSC_tbl                 => l_old_SSC_tbl
1989     );
1990 
1991     --  Perform SSC group requests.
1992 
1993     IF p_control_rec.process AND
1994         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
1995         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_SSC)
1996     THEN
1997 
1998         NULL;
1999 
2000     END IF;
2001 
2002     --  Load parent key if missing and operation is create.
2003 
2004     FOR I IN 1..l_PSG_tbl.COUNT LOOP
2005 
2006         l_PSG_rec := l_PSG_tbl(I);
2007 
2008         IF l_PSG_rec.operation = QP_GLOBALS.G_OPR_CREATE
2009         --**AND (l_PSG_rec.lookup_code IS NULL OR
2010         AND (l_PSG_rec.pte_code IS NULL OR
2011             --**l_PSG_rec.lookup_code = FND_API.G_MISS_CHAR)
2012             l_PSG_rec.pte_code = FND_API.G_MISS_CHAR)
2013         THEN
2014 
2015             --  Copy parent_id.
2016 
2017             --**l_PSG_tbl(I).lookup_code := l_PTE_rec.lookup_code;
2018             l_PSG_tbl(I).pte_code := l_PTE_rec.lookup_code;
2019         END IF;
2020     END LOOP;
2021 
2022     --  Psgs
2023     l_p_PSG_tbl := l_PSG_tbl;
2024     l_p_old_PSG_tbl := l_old_PSG_tbl;
2025     Psgs
2026     (   p_validation_level            => p_validation_level
2027     ,   p_control_rec                 => p_control_rec
2028     ,   p_PSG_tbl                     => l_p_PSG_tbl
2029     ,   p_old_PSG_tbl                 => l_p_old_PSG_tbl
2030     ,   x_PSG_tbl                     => l_PSG_tbl
2031     ,   x_old_PSG_tbl                 => l_old_PSG_tbl
2032     );
2033 
2034     --  Perform PSG group requests.
2035     --dbms_output.put_line('in qp_qttr_mapping_pvt 1 ............................');
2036 
2037     IF p_control_rec.process AND
2038         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2039         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_PSG)
2040     THEN
2041 
2042         NULL;
2043 
2044     END IF;
2045 
2046     --  Load parent key if missing and operation is create.
2047 
2048     --dbms_output.put_line('in qp_qttr_mapping_pvt 2 ............................');
2049     --dbms_output.put_line('l_sou_tbl.count='||l_sou_tbl.count);
2050     FOR I IN 1..l_SOU_tbl.COUNT LOOP
2051 
2052         l_SOU_rec := l_SOU_tbl(I);
2053 
2054     --dbms_output.put_line('in qp_qttr_mapping_pvt 21 ............................');
2055         IF l_SOU_rec.operation = QP_GLOBALS.G_OPR_CREATE
2056         --**AND (l_SOU_rec.segment_pte_id IS NULL OR
2057         AND (l_SOU_rec.segment_id IS NULL OR
2058             --**l_SOU_rec.segment_pte_id = FND_API.G_MISS_NUM)
2059             l_SOU_rec.segment_id = FND_API.G_MISS_NUM)
2060         THEN
2061     --dbms_output.put_line('in qp_qttr_mapping_pvt inside 21 ............................');
2062     --dbms_output.put_line('l_sou_rec.psg_index='||l_sou_rec.psg_index);
2063 
2064        --** Added next line
2065         l_SOU_tbl(I).segment_id := l_PSG_rec.segment_id;
2066             --  Check If parent exists.
2067 
2068 /*
2069             IF l_PSG_tbl.EXISTS(l_SOU_rec.PSG_index) THEN
2070 
2071                 --  Copy parent_id.
2072     --dbms_output.put_line('in qp_qttr_mapping_pvt 22 ............................');
2073 
2074                 --**l_SOU_tbl(I).segment_pte_id := l_PSG_tbl(l_SOU_rec.PSG_index).segment_pte_id;
2075                 l_SOU_tbl(I).segment_id := l_PSG_tbl(l_SOU_rec.PSG_index).segment_id;
2076 
2077             ELSE
2078     --dbms_output.put_line('in qp_qttr_mapping_pvt 22 else ............................');
2079 
2080                 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
2081                 THEN
2082     --dbms_output.put_line('in qp_qttr_mapping_pvt 23 ............................');
2083 
2084                     FND_MESSAGE.SET_NAME('QP','QP_API_INV_PARENT_INDEX');
2085                     FND_MESSAGE.SET_TOKEN('ENTITY_NAME','SOU');
2086                     FND_MESSAGE.SET_TOKEN('ENTITY_INDEX',I);
2087                     FND_MESSAGE.SET_TOKEN('PARENT_INDEX',l_SOU_rec.PSG_index);
2088                     OE_MSG_PUB.Add;
2089 
2090                 END IF;
2091             END IF;
2092 */
2093             END IF;
2094     END LOOP;
2095 
2096     --  Sous
2097     --dbms_output.put_line('in qp_qttr_mapping_pvt 3 ............................');
2098 
2099     l_p_SOU_tbl := l_SOU_tbl;
2100     l_p_old_SOU_tbl := l_old_SOU_tbl;
2101     Sous
2102     (   p_validation_level            => p_validation_level
2103     ,   p_control_rec                 => p_control_rec
2104     ,   p_SOU_tbl                     => l_p_SOU_tbl
2105     ,   p_old_SOU_tbl                 => l_p_old_SOU_tbl
2106     ,   x_SOU_tbl                     => l_SOU_tbl
2107     ,   x_old_SOU_tbl                 => l_old_SOU_tbl
2108     );
2109     --dbms_output.put_line('in qp_qttr_mapping_pvt 4 ............................');
2110 
2111     --  Perform SOU group requests.
2112 
2113     IF p_control_rec.process AND
2114         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2115         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_SOU)
2116     THEN
2117 
2118         NULL;
2119 
2120     END IF;
2121 
2122     --  Load parent key if missing and operation is create.
2123     FOR I IN 1..l_FNA_tbl.COUNT LOOP
2124 
2125         l_FNA_rec := l_FNA_tbl(I);
2126 
2127         IF l_FNA_rec.operation = QP_GLOBALS.G_OPR_CREATE
2128         AND (l_FNA_rec.pte_source_system_id IS NULL OR
2129             l_FNA_rec.pte_source_system_id = FND_API.G_MISS_NUM)
2130         THEN
2131 
2132           -- Copy parent_id.
2133           l_FNA_tbl(I).pte_source_system_id := l_SSC_rec.pte_source_system_id;
2134         END IF;
2135 
2136     END LOOP;
2137 
2138     --  Fnas
2139 
2140     l_p_FNA_tbl := l_FNA_tbl;
2141     l_p_old_FNA_tbl := l_old_FNA_tbl;
2142     Fnas
2143     (   p_validation_level            => p_validation_level
2144     ,   p_control_rec                 => p_control_rec
2145     ,   p_FNA_tbl                     => l_p_FNA_tbl
2146     ,   p_old_FNA_tbl                 => l_p_old_FNA_tbl
2147     ,   x_FNA_tbl                     => l_FNA_tbl
2148     ,   x_old_FNA_tbl                 => l_old_FNA_tbl
2149     );
2150 
2151     --  Perform FNA group requests.
2152 
2153     IF p_control_rec.process AND
2154         (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
2155         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_FNA)
2156     THEN
2157 
2158         NULL;
2159 
2160     END IF;
2161 
2162     --  Step 6. Perform Object group logic
2163 
2164     IF p_control_rec.process AND
2165         p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL
2166     THEN
2167 
2168         NULL;
2169 
2170     END IF;
2171 
2172     --  Done processing, load OUT parameters.
2173 
2174     x_PTE_rec                      := l_PTE_rec;
2175     x_RQT_tbl                      := l_RQT_tbl;
2176     x_SSC_tbl                      := l_SSC_tbl;
2177     x_PSG_tbl                      := l_PSG_tbl;
2178     x_SOU_tbl                      := l_SOU_tbl;
2179     x_FNA_tbl                      := l_FNA_tbl;
2180 
2181     --  Clear API cache.
2182 
2183     IF p_control_rec.clear_api_cache THEN
2184 
2185         NULL;
2186 
2187     END IF;
2188 
2189     --  Clear API request tbl.
2190 
2191     IF p_control_rec.clear_api_requests THEN
2192 
2193         NULL;
2194 
2195     END IF;
2196 
2197     --  Derive return status.
2198 
2199     x_return_status := FND_API.G_RET_STS_SUCCESS;
2200 
2201     IF l_PTE_rec.return_status = FND_API.G_RET_STS_ERROR THEN
2202         x_return_status := FND_API.G_RET_STS_ERROR;
2203     END IF;
2204 
2205     FOR I IN 1..l_RQT_tbl.COUNT LOOP
2206 
2207         IF l_RQT_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2208             x_return_status := FND_API.G_RET_STS_ERROR;
2209         END IF;
2210 
2211     END LOOP;
2212 
2213     FOR I IN 1..l_SSC_tbl.COUNT LOOP
2214 
2215         IF l_SSC_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2216             x_return_status := FND_API.G_RET_STS_ERROR;
2217         END IF;
2218 
2219     END LOOP;
2220 
2221     FOR I IN 1..l_PSG_tbl.COUNT LOOP
2222 
2223         IF l_PSG_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2224             x_return_status := FND_API.G_RET_STS_ERROR;
2225         END IF;
2226 
2227     END LOOP;
2228 
2229     FOR I IN 1..l_SOU_tbl.COUNT LOOP
2230 
2231         IF l_SOU_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2232             x_return_status := FND_API.G_RET_STS_ERROR;
2233         END IF;
2234 
2235     END LOOP;
2236 
2237     FOR I IN 1..l_FNA_tbl.COUNT LOOP
2238 
2239         IF l_FNA_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
2240             x_return_status := FND_API.G_RET_STS_ERROR;
2241         END IF;
2242 
2243     END LOOP;
2244 
2245     --  Get message count and data
2246 
2247     OE_MSG_PUB.Count_And_Get
2248     (   p_count                       => x_msg_count
2249     ,   p_data                        => x_msg_data
2250     );
2251 
2252 
2253 EXCEPTION
2254 
2255     WHEN FND_API.G_EXC_ERROR THEN
2256 
2257         x_return_status := FND_API.G_RET_STS_ERROR;
2258 
2259          if p_control_rec.called_from_ui = 'N' then
2260 	   qp_delayed_requests_pvt.Clear_Request
2261 		(x_return_status => l_return_status);
2262         end if;
2263 
2264        --  Get message count and data
2265 
2266         OE_MSG_PUB.Count_And_Get
2267         (   p_count                       => x_msg_count
2268         ,   p_data                        => x_msg_data
2269         );
2270 
2271     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2272 
2273         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2274 
2275         if p_control_rec.called_from_ui = 'N' then
2276 	   qp_delayed_requests_pvt.Clear_Request
2277 		(x_return_status => l_return_status);
2278         end if;
2279 
2280         --  Get message count and data
2281 
2282         OE_MSG_PUB.Count_And_Get
2283         (   p_count                       => x_msg_count
2284         ,   p_data                        => x_msg_data
2285         );
2286 
2287     WHEN OTHERS THEN
2288 
2289         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2290 
2291         if p_control_rec.called_from_ui = 'N' then
2292 	   qp_delayed_requests_pvt.Clear_Request
2293 		(x_return_status => l_return_status);
2294         end if;
2295 
2296         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2297         THEN
2298             OE_MSG_PUB.Add_Exc_Msg
2299             (   G_PKG_NAME
2300             ,   'Process_Attr_Mapping'
2301             );
2302         END IF;
2303 
2304         --  Get message count and data
2305 
2306         OE_MSG_PUB.Count_And_Get
2307         (   p_count                       => x_msg_count
2308         ,   p_data                        => x_msg_data
2309         );
2310 
2311 END Process_Attr_Mapping;
2312 
2313 --  Start of Comments
2314 --  API name    Lock_Attr_Mapping
2315 --  Type        Private
2316 --  Function
2317 --
2318 --  Pre-reqs
2319 --
2320 --  Parameters
2321 --
2322 --  Version     Current version = 1.0
2323 --              Initial version = 1.0
2324 --
2325 --  Notes
2326 --
2327 --  End of Comments
2328 
2329 PROCEDURE Lock_Attr_Mapping
2330 (   p_api_version_number            IN  NUMBER
2331 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
2332 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2333 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2334 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2335 ,   p_PTE_rec                       IN  QP_Attr_Map_PUB.Pte_Rec_Type :=
2336                                         QP_Attr_Map_PUB.G_MISS_PTE_REC
2337 ,   p_RQT_tbl                       IN  QP_Attr_Map_PUB.Rqt_Tbl_Type :=
2338                                         QP_Attr_Map_PUB.G_MISS_RQT_TBL
2339 ,   p_SSC_tbl                       IN  QP_Attr_Map_PUB.Ssc_Tbl_Type :=
2340                                         QP_Attr_Map_PUB.G_MISS_SSC_TBL
2341 ,   p_PSG_tbl                       IN  QP_Attr_Map_PUB.Psg_Tbl_Type :=
2342                                         QP_Attr_Map_PUB.G_MISS_PSG_TBL
2343 ,   p_SOU_tbl                       IN  QP_Attr_Map_PUB.Sou_Tbl_Type :=
2344                                         QP_Attr_Map_PUB.G_MISS_SOU_TBL
2345 ,   p_FNA_tbl                       IN  QP_Attr_Map_PUB.Fna_Tbl_Type :=
2346                                         QP_Attr_Map_PUB.G_MISS_FNA_TBL
2347 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
2348 ,   x_RQT_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Rqt_Tbl_Type
2349 ,   x_SSC_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Ssc_Tbl_Type
2350 ,   x_PSG_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Psg_Tbl_Type
2351 ,   x_SOU_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Tbl_Type
2352 ,   x_FNA_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Fna_Tbl_Type
2353 )
2354 IS
2355 l_api_version_number          CONSTANT NUMBER := 1.0;
2356 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Attr_Mapping';
2357 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
2358 l_RQT_rec                     QP_Attr_Map_PUB.Rqt_Rec_Type;
2359 l_SSC_rec                     QP_Attr_Map_PUB.Ssc_Rec_Type;
2360 l_PSG_rec                     QP_Attr_Map_PUB.Psg_Rec_Type;
2361 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
2362 l_FNA_rec                     QP_Attr_Map_PUB.Fna_Rec_Type;
2363 BEGIN
2364 
2365     --  Standard call to check for call compatibility
2366 
2367     IF NOT FND_API.Compatible_API_Call
2368            (   l_api_version_number
2369            ,   p_api_version_number
2370            ,   l_api_name
2371            ,   G_PKG_NAME
2372            )
2373     THEN
2374         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2375     END IF;
2376 
2377     --  Initialize message list.
2378 
2379     IF FND_API.to_Boolean(p_init_msg_list) THEN
2380         OE_MSG_PUB.initialize;
2381     END IF;
2382 
2383     --  Set Savepoint
2384 
2385     SAVEPOINT Lock_Attr_Mapping_PVT;
2386 
2387     --  Lock PTE
2388 
2389     IF p_PTE_rec.operation = QP_GLOBALS.G_OPR_LOCK THEN
2390 
2391         QP_Pte_Util.Lock_Row
2392         (   p_PTE_rec                     => p_PTE_rec
2393         ,   x_PTE_rec                     => x_PTE_rec
2394         ,   x_return_status               => l_return_status
2395         );
2396 
2397         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2398             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2399         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2400             RAISE FND_API.G_EXC_ERROR;
2401         END IF;
2402 
2403 
2404     END IF;
2405 
2406     --  Lock RQT
2407 
2408     FOR I IN 1..p_RQT_tbl.COUNT LOOP
2409 
2410         IF p_RQT_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2411 
2412             QP_Rqt_Util.Lock_Row
2413             (   p_RQT_rec                     => p_RQT_tbl(I)
2414             ,   x_RQT_rec                     => l_RQT_rec
2415             ,   x_return_status               => l_return_status
2416             );
2417 
2418             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2419                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2420             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2421                 RAISE FND_API.G_EXC_ERROR;
2422             END IF;
2423 
2424             x_RQT_tbl(I)                   := l_RQT_rec;
2425 
2426         END IF;
2427 
2428     END LOOP;
2429 
2430     --  Lock SSC
2431 
2432     FOR I IN 1..p_SSC_tbl.COUNT LOOP
2433 
2434         IF p_SSC_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2435 
2436             QP_Ssc_Util.Lock_Row
2437             (   p_SSC_rec                     => p_SSC_tbl(I)
2438             ,   x_SSC_rec                     => l_SSC_rec
2439             ,   x_return_status               => l_return_status
2440             );
2441 
2442             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2443                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2444             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2445                 RAISE FND_API.G_EXC_ERROR;
2446             END IF;
2447 
2448             x_SSC_tbl(I)                   := l_SSC_rec;
2449 
2450         END IF;
2451 
2452     END LOOP;
2453 
2454     --  Lock PSG
2455 
2456     FOR I IN 1..p_PSG_tbl.COUNT LOOP
2457 
2458         IF p_PSG_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2459 
2460             QP_Psg_Util.Lock_Row
2461             (   p_PSG_rec                     => p_PSG_tbl(I)
2462             ,   x_PSG_rec                     => l_PSG_rec
2463             ,   x_return_status               => l_return_status
2464             );
2465 
2466             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2467                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2468             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2469                 RAISE FND_API.G_EXC_ERROR;
2470             END IF;
2471 
2472             x_PSG_tbl(I)                   := l_PSG_rec;
2473 
2474         END IF;
2475 
2476     END LOOP;
2477 
2478     --  Lock SOU
2479 
2480     FOR I IN 1..p_SOU_tbl.COUNT LOOP
2481 
2482         IF p_SOU_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2483 
2484             QP_Sou_Util.Lock_Row
2485             (   p_SOU_rec                     => p_SOU_tbl(I)
2486             ,   x_SOU_rec                     => l_SOU_rec
2487             ,   x_return_status               => l_return_status
2488             );
2489 
2490             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2491                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2492             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2493                 RAISE FND_API.G_EXC_ERROR;
2494             END IF;
2495 
2496             x_SOU_tbl(I)                   := l_SOU_rec;
2497 
2498         END IF;
2499 
2500     END LOOP;
2501 
2502     --  Lock FNA
2503 
2504     FOR I IN 1..p_FNA_tbl.COUNT LOOP
2505 
2506         IF p_FNA_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
2507 
2508             QP_Fna_Util.Lock_Row
2509             (   p_FNA_rec                     => p_FNA_tbl(I)
2510             ,   x_FNA_rec                     => l_FNA_rec
2511             ,   x_return_status               => l_return_status
2512             );
2513 
2514             IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2515                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2516             ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2517                 RAISE FND_API.G_EXC_ERROR;
2518             END IF;
2519 
2520             x_FNA_tbl(I)                   := l_FNA_rec;
2521 
2522         END IF;
2523 
2524     END LOOP;
2525 
2526     --  Set return status
2527 
2528     x_return_status := FND_API.G_RET_STS_SUCCESS;
2529 
2530     --  Get message count and data
2531 
2532     OE_MSG_PUB.Count_And_Get
2533     (   p_count                       => x_msg_count
2534     ,   p_data                        => x_msg_data
2535     );
2536 
2537 
2538 EXCEPTION
2539 
2540     WHEN FND_API.G_EXC_ERROR THEN
2541 
2542         x_return_status := FND_API.G_RET_STS_ERROR;
2543 
2544         --  Get message count and data
2545 
2546         OE_MSG_PUB.Count_And_Get
2547         (   p_count                       => x_msg_count
2548         ,   p_data                        => x_msg_data
2549         );
2550 
2551         --  Rollback
2552 
2553         ROLLBACK TO Lock_Attr_Mapping_PVT;
2554 
2555     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2556 
2557         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2558 
2559         --  Get message count and data
2560 
2561         OE_MSG_PUB.Count_And_Get
2562         (   p_count                       => x_msg_count
2563         ,   p_data                        => x_msg_data
2564         );
2565 
2566         --  Rollback
2567 
2568         ROLLBACK TO Lock_Attr_Mapping_PVT;
2569 
2570     WHEN OTHERS THEN
2571 
2572         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2573 
2574         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2575         THEN
2576             OE_MSG_PUB.Add_Exc_Msg
2577             (   G_PKG_NAME
2578             ,   'Lock_Attr_Mapping'
2579             );
2580         END IF;
2581 
2582         --  Get message count and data
2583 
2584         OE_MSG_PUB.Count_And_Get
2585         (   p_count                       => x_msg_count
2586         ,   p_data                        => x_msg_data
2587         );
2588 
2589         --  Rollback
2590 
2591         ROLLBACK TO Lock_Attr_Mapping_PVT;
2592 
2593 END Lock_Attr_Mapping;
2594 
2595 --  Start of Comments
2596 --  API name    Get_Attr_Mapping
2597 --  Type        Private
2598 --  Function
2599 --
2600 --  Pre-reqs
2601 --
2602 --  Parameters
2603 --
2604 --  Version     Current version = 1.0
2605 --              Initial version = 1.0
2606 --
2607 --  Notes
2608 --
2609 --  End of Comments
2610 
2611 PROCEDURE Get_Attr_Mapping
2612 (   p_api_version_number            IN  NUMBER
2613 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
2614 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2615 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2616 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2617 ,   p_lookup_code                   IN  VARCHAR2
2618 ,   x_PTE_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Pte_Rec_Type
2619 ,   x_RQT_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Rqt_Tbl_Type
2620 ,   x_SSC_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Ssc_Tbl_Type
2621 ,   x_PSG_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Psg_Tbl_Type
2622 ,   x_SOU_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Tbl_Type
2623 ,   x_FNA_tbl                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Fna_Tbl_Type
2624 )
2625 IS
2626 l_api_version_number          CONSTANT NUMBER := 1.0;
2627 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Attr_Mapping';
2628 l_PTE_rec                     QP_Attr_Map_PUB.Pte_Rec_Type;
2629 l_RQT_tbl                     QP_Attr_Map_PUB.Rqt_Tbl_Type;
2630 l_SSC_tbl                     QP_Attr_Map_PUB.Ssc_Tbl_Type;
2631 l_PSG_tbl                     QP_Attr_Map_PUB.Psg_Tbl_Type;
2632 l_SOU_tbl                     QP_Attr_Map_PUB.Sou_Tbl_Type;
2633 l_x_SOU_tbl                   QP_Attr_Map_PUB.Sou_Tbl_Type;
2634 l_FNA_tbl                     QP_Attr_Map_PUB.Fna_Tbl_Type;
2635 l_x_FNA_tbl                   QP_Attr_Map_PUB.Fna_Tbl_Type;
2636 BEGIN
2637 
2638     --  Standard call to check for call compatibility
2639 
2640     IF NOT FND_API.Compatible_API_Call
2641            (   l_api_version_number
2642            ,   p_api_version_number
2643            ,   l_api_name
2644            ,   G_PKG_NAME
2645            )
2646     THEN
2647         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2648     END IF;
2649 
2650     --  Initialize message list.
2651 
2652     IF FND_API.to_Boolean(p_init_msg_list) THEN
2653         OE_MSG_PUB.initialize;
2654     END IF;
2655 
2656     --  Get PTE ( parent = PTE )
2657 
2658     l_PTE_rec :=  QP_Pte_Util.Query_Row
2659     (   p_lookup_code         => p_lookup_code
2660     );
2661 
2662         --  Get RQT ( parent = PTE )
2663 
2664         l_RQT_tbl :=  QP_Rqt_Util.Query_Rows
2665         (   p_lookup_code           => l_PTE_rec.lookup_code
2666         );
2667 
2668 
2669         --  Get SSC ( parent = PTE )
2670 
2671         l_SSC_tbl :=  QP_Ssc_Util.Query_Rows
2672         (   p_lookup_code           => l_PTE_rec.lookup_code
2673         );
2674 
2675 
2676         --  Loop over SSC's children
2677 
2678         FOR I2 IN 1..l_SSC_tbl.COUNT LOOP
2679 
2680             --  Get FNA ( parent = SSC )
2681 
2682             l_FNA_tbl :=  QP_Fna_Util.Query_Rows
2683             (   p_pte_source_system_id    => l_SSC_tbl(I2).pte_source_system_id
2684             );
2685 
2686             FOR I3 IN 1..l_FNA_tbl.COUNT LOOP
2687                 l_FNA_tbl(I3).SSC_Index        := I2;
2688                 l_x_FNA_tbl
2689                 (l_x_FNA_tbl.COUNT + 1)        := l_FNA_tbl(I3);
2690             END LOOP;
2691 
2692 
2693         END LOOP;
2694         --  Get PSG ( parent = PTE )
2695 
2696         l_PSG_tbl :=  QP_Psg_Util.Query_Rows
2697         (   p_lookup_code           => l_PTE_rec.lookup_code
2698         );
2699 
2700 
2701         --  Loop over PSG's children
2702 
2703         FOR I2 IN 1..l_PSG_tbl.COUNT LOOP
2704 
2705             --  Get SOU ( parent = PSG )
2706 
2707     oe_debug_pub.add('qp_attr_mapping_pvt count='||l_PSG_tbl.count);
2708             l_SOU_tbl :=  QP_Sou_Util.Query_Rows
2709             (   p_segment_pte_id          => l_PSG_tbl(I2).segment_pte_id
2710             );
2711 
2712             FOR I3 IN 1..l_SOU_tbl.COUNT LOOP
2713                 l_SOU_tbl(I3).PSG_Index        := I2;
2714                 l_x_SOU_tbl
2715                 (l_x_SOU_tbl.COUNT + 1)        := l_SOU_tbl(I3);
2716             END LOOP;
2717 
2718 
2719         END LOOP;
2720 
2721 
2722     --  Load out parameters
2723 
2724     x_PTE_rec                      := l_PTE_rec;
2725     x_RQT_tbl                      := l_RQT_tbl;
2726     x_SSC_tbl                      := l_SSC_tbl;
2727     x_PSG_tbl                      := l_PSG_tbl;
2728     x_SOU_tbl                      := l_x_SOU_tbl;
2729     x_FNA_tbl                      := l_x_FNA_tbl;
2730 
2731     --  Set return status
2732 
2733     x_return_status := FND_API.G_RET_STS_SUCCESS;
2734 
2735     --  Get message count and data
2736 
2737     OE_MSG_PUB.Count_And_Get
2738     (   p_count                       => x_msg_count
2739     ,   p_data                        => x_msg_data
2740     );
2741 
2742 
2743 EXCEPTION
2744 
2745     WHEN FND_API.G_EXC_ERROR THEN
2746 
2747         x_return_status := FND_API.G_RET_STS_ERROR;
2748 
2749         --  Get message count and data
2750 
2751         OE_MSG_PUB.Count_And_Get
2752         (   p_count                       => x_msg_count
2753         ,   p_data                        => x_msg_data
2754         );
2755 
2756     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2757 
2758         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2759 
2760         --  Get message count and data
2761 
2762         OE_MSG_PUB.Count_And_Get
2763         (   p_count                       => x_msg_count
2764         ,   p_data                        => x_msg_data
2765         );
2766 
2767     WHEN OTHERS THEN
2768 
2769         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
2770 
2771         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2772         THEN
2773             OE_MSG_PUB.Add_Exc_Msg
2774             (   G_PKG_NAME
2775             ,   'Get_Attr_Mapping'
2776             );
2777         END IF;
2778 
2779         --  Get message count and data
2780 
2781         OE_MSG_PUB.Count_And_Get
2782         (   p_count                       => x_msg_count
2783         ,   p_data                        => x_msg_data
2784         );
2785 
2786 END Get_Attr_Mapping;
2787 
2788 --  Start of Comments
2789 --  API name    Check_Enabled_Fnas
2790 --  Type        Private
2791 --  Function  Executes Delayed Request to check for enabled functional areas
2792 --            within the updated PTE/SS combinations.  If there are any PTE/SS
2793 --            combinations that have no enabled fnareas, it adds warning
2794 --            messages to the stack.
2795 --
2796 --  Pre-reqs
2797 --
2798 --  Parameters
2799 --
2800 --  Version     Current version = 1.0
2801 --              Initial version = 1.0
2802 --
2803 --  Notes
2804 --
2805 --  End of Comments
2806 
2807 PROCEDURE Check_Enabled_Fnas
2808 ( x_msg_data       OUT NOCOPY VARCHAR2
2809 , x_msg_count      OUT NOCOPY NUMBER
2810 , x_return_status  OUT NOCOPY VARCHAR2)
2811 IS
2812 BEGIN
2813 
2814 -- Execute FNA delayed request to check for enabled functional areas
2815     QP_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
2816         (p_entity_code   => QP_GLOBALS.G_ENTITY_FNA
2817         ,p_delete        => FND_API.G_TRUE
2818         ,x_return_status => x_return_status
2819         );
2820 
2821     oe_msg_pub.Count_And_Get
2822     (   p_count                       => x_msg_count
2823     ,   p_data                        => x_msg_data
2824     );
2825 
2826 END Check_Enabled_Fnas;
2827 
2828 
2829 END QP_Attr_Map_PVT;