[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;