[Home] [Help]
PACKAGE BODY: APPS.QP_ATTRIBUTES_PVT
Source
1 PACKAGE BODY QP_Attributes_PVT AS
2 /* $Header: QPXVATRB.pls 120.2 2005/07/06 04:51:47 appldev ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'QP_Attributes_PVT';
7
8 -- Con
9
10 PROCEDURE Con
11 ( p_validation_level IN NUMBER
12 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
13 , p_CON_rec IN QP_Attributes_PUB.Con_Rec_Type
14 , p_old_CON_rec IN QP_Attributes_PUB.Con_Rec_Type
15 , x_CON_rec OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Con_Rec_Type
16 , x_old_CON_rec OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Con_Rec_Type
17 )
18 IS
19 l_return_status VARCHAR2(1);
20 l_control_rec QP_GLOBALS.Control_Rec_Type;
21 l_CON_rec QP_Attributes_PUB.Con_Rec_Type := p_CON_rec;
22 l_p_CON_rec QP_Attributes_PUB.Con_Rec_Type;
23 l_old_CON_rec QP_Attributes_PUB.Con_Rec_Type := p_old_CON_rec;
24 BEGIN
25
26 -- Load API control record
27
28 l_control_rec := QP_GLOBALS.Init_Control_Rec
29 ( p_operation => l_CON_rec.operation
30 , p_control_rec => p_control_rec
31 );
32
33 -- Set record return status.
34
35 l_CON_rec.return_status := FND_API.G_RET_STS_SUCCESS;
36
37 -- Prepare record.
38
39 IF l_CON_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
40
41 l_CON_rec.db_flag := FND_API.G_FALSE;
42
43 -- Set missing old record elements to NULL.
44
45 l_old_CON_rec :=
46 QP_Con_Util.Convert_Miss_To_Null (l_old_CON_rec);
47
48 ELSIF l_CON_rec.operation = QP_GLOBALS.G_OPR_UPDATE
49 OR l_CON_rec.operation = QP_GLOBALS.G_OPR_DELETE
50 THEN
51
52 l_CON_rec.db_flag := FND_API.G_TRUE;
53
54 -- Query Old if missing
55
56 IF l_old_CON_rec.prc_context_id = FND_API.G_MISS_NUM
57 THEN
58
59 l_old_CON_rec := QP_Con_Util.Query_Row
60 ( p_prc_context_id => l_CON_rec.prc_context_id
61 );
62
63 ELSE
64
65 -- Set missing old record elements to NULL.
66
67 l_old_CON_rec :=
68 QP_Con_Util.Convert_Miss_To_Null (l_old_CON_rec);
69
70 END IF;
71
72 -- Complete new record from old
73
74 l_CON_rec := QP_Con_Util.Complete_Record
75 ( p_CON_rec => l_CON_rec
76 , p_old_CON_rec => l_old_CON_rec
77 );
78
79 END IF;
80
81 -- Attribute level validation.
82
83
84 IF l_control_rec.default_attributes
85 OR l_control_rec.change_attributes
86 THEN
87
88 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
89
90 QP_Validate_Con.Attributes
91 ( x_return_status => l_return_status
92 , p_CON_rec => l_CON_rec
93 , p_old_CON_rec => l_old_CON_rec
94 );
95
96 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
97 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
98 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
99 RAISE FND_API.G_EXC_ERROR;
100 END IF;
101
102 END IF;
103
104 END IF;
105
106 -- Clear dependent attributes.
107
108
109 IF l_control_rec.change_attributes THEN
110 l_p_CON_rec := l_CON_rec;
111 QP_Con_Util.Clear_Dependent_Attr
112 ( p_CON_rec => l_p_CON_rec
113 , p_old_CON_rec => l_old_CON_rec
114 , x_CON_rec => l_CON_rec
115 );
116
117 END IF;
118
119 -- Default missing attributes
120
121 IF l_control_rec.default_attributes
122 OR l_control_rec.change_attributes
123 THEN
124 l_p_CON_rec := l_CON_rec;
125 QP_Default_Con.Attributes
126 ( p_CON_rec => l_p_CON_rec
127 , x_CON_rec => l_CON_rec
128 );
129
130 END IF;
131
132 -- Apply attribute changes
133
134 IF l_control_rec.default_attributes
135 OR l_control_rec.change_attributes
136 THEN
137 l_p_CON_rec := l_CON_rec;
138 QP_Con_Util.Apply_Attribute_Changes
139 ( p_CON_rec => l_p_CON_rec
140 , p_old_CON_rec => l_old_CON_rec
141 , x_CON_rec => l_CON_rec
142 );
143
144 END IF;
145
146 -- Entity level validation.
147
148 IF l_control_rec.validate_entity THEN
149
150 IF l_CON_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
151
152 QP_Validate_Con.Entity_Delete
153 ( x_return_status => l_return_status
154 , p_CON_rec => l_CON_rec
155 );
156
157 ELSE
158
159 QP_Validate_Con.Entity
160 ( x_return_status => l_return_status
161 , p_CON_rec => l_CON_rec
162 , p_old_CON_rec => l_old_CON_rec
163 );
164
165 END IF;
166
167 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
168 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
169 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
170 RAISE FND_API.G_EXC_ERROR;
171 END IF;
172
173 END IF;
174
175 -- Step 4. Write to DB
176
177 IF l_control_rec.write_to_db THEN
178
179 IF l_CON_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
180
181 QP_Con_Util.Delete_Row
182 ( p_prc_context_id => l_CON_rec.prc_context_id
183 );
184
185 ELSE
186
187 -- Get Who Information
188
189 l_CON_rec.last_update_date := SYSDATE;
190 l_CON_rec.last_updated_by := FND_GLOBAL.USER_ID;
191 l_CON_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
192
193 IF l_CON_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
194
195 QP_Con_Util.Update_Row (l_CON_rec);
196
197 ELSIF l_CON_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
198
199 l_CON_rec.creation_date := SYSDATE;
200 l_CON_rec.created_by := FND_GLOBAL.USER_ID;
201
202 QP_Con_Util.Insert_Row (l_CON_rec);
203
204 END IF;
205
206 END IF;
207
208 END IF;
209
210 -- Load OUT parameters
211
212 x_CON_rec := l_CON_rec;
213 x_old_CON_rec := l_old_CON_rec;
214
215 EXCEPTION
216
217 WHEN FND_API.G_EXC_ERROR THEN
218
219 l_CON_rec.return_status := FND_API.G_RET_STS_ERROR;
220 x_CON_rec := l_CON_rec;
221 x_old_CON_rec := l_old_CON_rec;
222 RAISE;
223
224 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
225
226 l_CON_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
227 x_CON_rec := l_CON_rec;
228 x_old_CON_rec := l_old_CON_rec;
229
230 RAISE;
231
232 WHEN OTHERS THEN
233
234 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
235 THEN
236 OE_MSG_PUB.Add_Exc_Msg
237 ( G_PKG_NAME
238 , 'Con'
239 );
240 END IF;
241
242 l_CON_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
243 x_CON_rec := l_CON_rec;
244 x_old_CON_rec := l_old_CON_rec;
245
246 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
247
248 END Con;
249
250 -- Segs
251
252 PROCEDURE Segs
253 ( p_validation_level IN NUMBER
254 , p_control_rec IN QP_GLOBALS.Control_Rec_Type
255 , p_SEG_tbl IN QP_Attributes_PUB.Seg_Tbl_Type
256 , p_old_SEG_tbl IN QP_Attributes_PUB.Seg_Tbl_Type
257 , x_SEG_tbl OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Tbl_Type
258 , x_old_SEG_tbl OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Tbl_Type
259 )
260 IS
261 l_return_status VARCHAR2(1);
262 l_control_rec QP_GLOBALS.Control_Rec_Type;
263 l_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
264 l_p_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
265 l_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
266 l_old_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
267 l_old_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
268 BEGIN
269
270 -- Init local table variables.
271
272 l_SEG_tbl := p_SEG_tbl;
273 l_old_SEG_tbl := p_old_SEG_tbl;
274
275 FOR I IN 1..l_SEG_tbl.COUNT LOOP
276 BEGIN
277
278 -- Load local records.
279
280 l_SEG_rec := l_SEG_tbl(I);
281
282 IF l_old_SEG_tbl.EXISTS(I) THEN
283 l_old_SEG_rec := l_old_SEG_tbl(I);
284 ELSE
285 l_old_SEG_rec := QP_Attributes_PUB.G_MISS_SEG_REC;
286 END IF;
287
288 -- Load API control record
289
290 l_control_rec := QP_GLOBALS.Init_Control_Rec
291 ( p_operation => l_SEG_rec.operation
292 , p_control_rec => p_control_rec
293 );
294
295 -- Set record return status.
296
297 l_SEG_rec.return_status := FND_API.G_RET_STS_SUCCESS;
298
299 -- Prepare record.
300
301 IF l_SEG_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
302
303 l_SEG_rec.db_flag := FND_API.G_FALSE;
304
305 -- Set missing old record elements to NULL.
306
307 l_old_SEG_rec :=
308 QP_Seg_Util.Convert_Miss_To_Null (l_old_SEG_rec);
309
310 ELSIF l_SEG_rec.operation = QP_GLOBALS.G_OPR_UPDATE
311 OR l_SEG_rec.operation = QP_GLOBALS.G_OPR_DELETE
312 THEN
313
314 l_SEG_rec.db_flag := FND_API.G_TRUE;
315
316 -- Query Old if missing
317
318 IF l_old_SEG_rec.segment_id = FND_API.G_MISS_NUM
319 THEN
320
321 l_old_SEG_rec := QP_Seg_Util.Query_Row
322 ( p_segment_id => l_SEG_rec.segment_id
323 );
324
325 ELSE
326
327 -- Set missing old record elements to NULL.
328
329 l_old_SEG_rec :=
330 QP_Seg_Util.Convert_Miss_To_Null (l_old_SEG_rec);
331
332 END IF;
333
334 -- Complete new record from old
335
336 l_SEG_rec := QP_Seg_Util.Complete_Record
337 ( p_SEG_rec => l_SEG_rec
338 , p_old_SEG_rec => l_old_SEG_rec
339 );
340
341 END IF;
342
343 -- Attribute level validation.
344
345 IF l_control_rec.default_attributes
346 OR l_control_rec.change_attributes
347 THEN
348
349 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
350
351 QP_Validate_Seg.Attributes
352 ( x_return_status => l_return_status
353 , p_SEG_rec => l_SEG_rec
354 , p_old_SEG_rec => l_old_SEG_rec
355 );
356
357 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
358 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
359 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
360 RAISE FND_API.G_EXC_ERROR;
361 END IF;
362
363 END IF;
364
365 END IF;
366
367 -- Clear dependent attributes.
368
369 IF l_control_rec.change_attributes THEN
370 l_p_SEG_rec := l_SEG_rec;
371 QP_Seg_Util.Clear_Dependent_Attr
372 ( p_SEG_rec => l_p_SEG_rec
373 , p_old_SEG_rec => l_old_SEG_rec
374 , x_SEG_rec => l_SEG_rec
375 );
376
377 END IF;
378
379 -- Default missing attributes
380
381 IF l_control_rec.default_attributes
382 OR l_control_rec.change_attributes
383 THEN
384 l_p_SEG_rec := l_SEG_rec;
385 QP_Default_Seg.Attributes
386 ( p_SEG_rec => l_p_SEG_rec
387 , x_SEG_rec => l_SEG_rec
388 );
389
390 END IF;
391
392 -- Apply attribute changes
393
394 IF l_control_rec.default_attributes
395 OR l_control_rec.change_attributes
396 THEN
397 l_p_SEG_rec := l_SEG_rec;
398 QP_Seg_Util.Apply_Attribute_Changes
399 ( p_SEG_rec => l_p_SEG_rec
400 , p_old_SEG_rec => l_old_SEG_rec
401 , x_SEG_rec => l_SEG_rec
402 );
403
404 END IF;
405
406 -- Entity level validation.
407
408 IF l_control_rec.validate_entity THEN
409
410 IF l_SEG_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
411
412 QP_Validate_Seg.Entity_Delete
413 ( x_return_status => l_return_status
414 , p_SEG_rec => l_SEG_rec
415 );
416
417 ELSE
418
419 QP_Validate_Seg.Entity
420 ( x_return_status => l_return_status
421 , p_SEG_rec => l_SEG_rec
425 END IF;
422 , p_old_SEG_rec => l_old_SEG_rec
423 );
424
426
427 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
428 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
429 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
430 RAISE FND_API.G_EXC_ERROR;
431 END IF;
432
433 END IF;
434
435 -- Step 4. Write to DB
436
437 IF l_control_rec.write_to_db THEN
438
439 IF l_SEG_rec.operation = QP_GLOBALS.G_OPR_DELETE THEN
440
441 QP_Seg_Util.Delete_Row
442 ( p_segment_id => l_SEG_rec.segment_id
443 );
444
445 ELSE
446
447 -- Get Who Information
448
449 l_SEG_rec.last_update_date := SYSDATE;
450 l_SEG_rec.last_updated_by := FND_GLOBAL.USER_ID;
451 l_SEG_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
452
453 IF l_SEG_rec.operation = QP_GLOBALS.G_OPR_UPDATE THEN
454
455 QP_Seg_Util.Update_Row (l_SEG_rec);
456
457 ELSIF l_SEG_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
458
459 l_SEG_rec.creation_date := SYSDATE;
460 l_SEG_rec.created_by := FND_GLOBAL.USER_ID;
461
462 QP_Seg_Util.Insert_Row (l_SEG_rec);
463
464 END IF;
465
466 END IF;
467
468 END IF;
469
470 -- Load tables.
471
472 l_SEG_tbl(I) := l_SEG_rec;
473 l_old_SEG_tbl(I) := l_old_SEG_rec;
474
475 -- For loop exception handler.
476
477
478 EXCEPTION
479
480 WHEN FND_API.G_EXC_ERROR THEN
481
482 l_SEG_rec.return_status := FND_API.G_RET_STS_ERROR;
483 l_SEG_tbl(I) := l_SEG_rec;
484 l_old_SEG_tbl(I) := l_old_SEG_rec;
485
486 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
487
488 l_SEG_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
489 l_SEG_tbl(I) := l_SEG_rec;
490 l_old_SEG_tbl(I) := l_old_SEG_rec;
491 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
492
493 WHEN OTHERS THEN
494
495 l_SEG_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
496 l_SEG_tbl(I) := l_SEG_rec;
497 l_old_SEG_tbl(I) := l_old_SEG_rec;
498
499 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
500 THEN
501 OE_MSG_PUB.Add_Exc_Msg
502 ( G_PKG_NAME
503 , 'Segs'
504 );
505 END IF;
506
507 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
508
509 END;
510 END LOOP;
511
512 -- Load OUT parameters
513
514 x_SEG_tbl := l_SEG_tbl;
515 x_old_SEG_tbl := l_old_SEG_tbl;
516
517 EXCEPTION
518
519 WHEN FND_API.G_EXC_ERROR THEN
520
521 RAISE;
522
523 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
524
525
526 RAISE;
527
528 WHEN OTHERS THEN
529
530 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
531 THEN
532 OE_MSG_PUB.Add_Exc_Msg
533 ( G_PKG_NAME
534 , 'Segs'
535 );
536 END IF;
537
538
539 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
540
541 END Segs;
542
543 -- Start of Comments
544 -- API name Process_Attributes
545 -- Type Private
546 -- Function
547 --
548 -- Pre-reqs
549 --
550 -- Parameters
551 --
552 -- Version Current version = 1.0
553 -- Initial version = 1.0
554 --
555 -- Notes
556 --
557 -- End of Comments
558
559 PROCEDURE Process_Attributes
560 ( p_api_version_number IN NUMBER
561 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
562 , p_commit IN VARCHAR2 := FND_API.G_FALSE
563 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
564 , p_control_rec IN QP_GLOBALS.Control_Rec_Type :=
565 QP_GLOBALS.G_MISS_CONTROL_REC
566 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
567 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
568 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
569 , p_CON_rec IN QP_Attributes_PUB.Con_Rec_Type :=
570 QP_Attributes_PUB.G_MISS_CON_REC
571 , p_old_CON_rec IN QP_Attributes_PUB.Con_Rec_Type :=
572 QP_Attributes_PUB.G_MISS_CON_REC
573 , p_SEG_tbl IN QP_Attributes_PUB.Seg_Tbl_Type :=
574 QP_Attributes_PUB.G_MISS_SEG_TBL
575 , p_old_SEG_tbl IN QP_Attributes_PUB.Seg_Tbl_Type :=
576 QP_Attributes_PUB.G_MISS_SEG_TBL
577 , x_CON_rec OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Con_Rec_Type
578 , x_SEG_tbl OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Tbl_Type
579 )
580 IS
584 l_control_rec QP_GLOBALS.Control_Rec_Type;
581 l_api_version_number CONSTANT NUMBER := 1.0;
582 l_api_name CONSTANT VARCHAR2(30):= 'Process_Attributes';
583 l_return_status VARCHAR2(1);
585 l_p_CON_rec QP_Attributes_PUB.Con_Rec_Type := p_CON_rec;
586 l_CON_rec QP_Attributes_PUB.Con_Rec_Type := p_CON_rec;
587 l_p_old_CON_rec QP_Attributes_PUB.Con_Rec_Type := p_old_CON_rec;
588 l_old_CON_rec QP_Attributes_PUB.Con_Rec_Type := p_old_CON_rec;
589 l_p_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
590 l_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
591 l_p_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
592 l_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
593 l_old_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
594 l_p_old_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
595 l_old_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
596 BEGIN
597
598 -- Standard call to check for call compatibility
599
600 IF NOT FND_API.Compatible_API_Call
601 ( l_api_version_number
602 , p_api_version_number
603 , l_api_name
604 , G_PKG_NAME
605 )
606 THEN
607 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
608 END IF;
609
610 -- Initialize message list.
611
612 IF FND_API.to_Boolean(p_init_msg_list) THEN
613 OE_MSG_PUB.initialize;
614 END IF;
615
616 -- Init local table variables.
617
618 l_SEG_tbl := p_SEG_tbl;
619 l_old_SEG_tbl := p_old_SEG_tbl;
620
621 -- Con
622
623 Con
624 ( p_validation_level => p_validation_level
625 , p_control_rec => p_control_rec
626 , p_CON_rec => l_p_CON_rec
627 , p_old_CON_rec => l_p_old_CON_rec
628 , x_CON_rec => l_CON_rec
629 , x_old_CON_rec => l_old_CON_rec
630 );
631
632 -- Perform CON group requests.
633
634 IF p_control_rec.process AND
635 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
636 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_CON)
637 THEN
638
639 NULL;
640
641 END IF;
642
643 -- Load parent key if missing and operation is create.
644
645 FOR I IN 1..l_SEG_tbl.COUNT LOOP
646
647 l_SEG_rec := l_SEG_tbl(I);
648
649 IF l_SEG_rec.operation = QP_GLOBALS.G_OPR_CREATE
650 AND (l_SEG_rec.prc_context_id IS NULL OR
651 l_SEG_rec.prc_context_id = FND_API.G_MISS_NUM)
652 THEN
653
654 -- Copy parent_id.
655
656 l_SEG_tbl(I).prc_context_id := l_CON_rec.prc_context_id;
657 END IF;
658 END LOOP;
659
660 l_p_SEG_tbl := l_SEG_tbl;
661 l_p_old_SEG_tbl := l_old_SEG_tbl;
662
663 -- Segs
664
665 Segs
666 ( p_validation_level => p_validation_level
667 , p_control_rec => p_control_rec
668 , p_SEG_tbl => l_p_SEG_tbl
669 , p_old_SEG_tbl => l_p_old_SEG_tbl
670 , x_SEG_tbl => l_SEG_tbl
671 , x_old_SEG_tbl => l_old_SEG_tbl
672 );
673
674 -- Perform SEG group requests.
675
676 IF p_control_rec.process AND
677 (p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL OR
678 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_SEG)
679 THEN
680
681 NULL;
682
683 END IF;
684
685 -- Step 6. Perform Object group logic
686
687 IF p_control_rec.process AND
688 p_control_rec.process_entity = QP_GLOBALS.G_ENTITY_ALL
689 THEN
690
691 NULL;
692
693 END IF;
694
695 -- Done processing, load OUT parameters.
696
697 x_CON_rec := l_CON_rec;
698 x_SEG_tbl := l_SEG_tbl;
699
700 -- Clear API cache.
701
702 IF p_control_rec.clear_api_cache THEN
703
704 NULL;
705
706 END IF;
707
708 -- Clear API request tbl.
709
710 IF p_control_rec.clear_api_requests THEN
711
712 NULL;
713
714 END IF;
715
716 -- Derive return status.
717
718 x_return_status := FND_API.G_RET_STS_SUCCESS;
719
720 IF l_CON_rec.return_status = FND_API.G_RET_STS_ERROR THEN
721 x_return_status := FND_API.G_RET_STS_ERROR;
722 END IF;
723
724 FOR I IN 1..l_SEG_tbl.COUNT LOOP
725
726 IF l_SEG_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
727 x_return_status := FND_API.G_RET_STS_ERROR;
728 END IF;
729
730 END LOOP;
731
732 -- Get message count and data
733
734 OE_MSG_PUB.Count_And_Get
735 ( p_count => x_msg_count
736 , p_data => x_msg_data
737 );
738
739
740 EXCEPTION
741
742 WHEN FND_API.G_EXC_ERROR THEN
743
744 x_return_status := FND_API.G_RET_STS_ERROR;
745
746 -- Get message count and data
747
748 OE_MSG_PUB.Count_And_Get
749 ( p_count => x_msg_count
750 , p_data => x_msg_data
751 );
752
756
753 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
754
755 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
757 -- Get message count and data
758
759 OE_MSG_PUB.Count_And_Get
760 ( p_count => x_msg_count
761 , p_data => x_msg_data
762 );
763
764 WHEN OTHERS THEN
765
766 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
767
768 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
769 THEN
770 OE_MSG_PUB.Add_Exc_Msg
771 ( G_PKG_NAME
772 , 'Process_Attributes'
773 );
774 END IF;
775
776 -- Get message count and data
777
778 OE_MSG_PUB.Count_And_Get
779 ( p_count => x_msg_count
780 , p_data => x_msg_data
781 );
782
783 END Process_Attributes;
784
785 -- Start of Comments
786 -- API name Lock_Attributes
787 -- Type Private
788 -- Function
789 --
790 -- Pre-reqs
791 --
792 -- Parameters
793 --
794 -- Version Current version = 1.0
795 -- Initial version = 1.0
796 --
797 -- Notes
798 --
799 -- End of Comments
800
801 PROCEDURE Lock_Attributes
802 ( p_api_version_number IN NUMBER
803 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
804 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
805 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
806 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
807 , p_CON_rec IN QP_Attributes_PUB.Con_Rec_Type :=
808 QP_Attributes_PUB.G_MISS_CON_REC
809 , p_SEG_tbl IN QP_Attributes_PUB.Seg_Tbl_Type :=
810 QP_Attributes_PUB.G_MISS_SEG_TBL
811 , x_CON_rec OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Con_Rec_Type
812 , x_SEG_tbl OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Tbl_Type
813 )
814 IS
815 l_api_version_number CONSTANT NUMBER := 1.0;
816 l_api_name CONSTANT VARCHAR2(30):= 'Lock_Attributes';
817 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
818 l_SEG_rec QP_Attributes_PUB.Seg_Rec_Type;
819 BEGIN
820
821 -- Standard call to check for call compatibility
822
823 IF NOT FND_API.Compatible_API_Call
824 ( l_api_version_number
825 , p_api_version_number
826 , l_api_name
827 , G_PKG_NAME
828 )
829 THEN
830 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
831 END IF;
832
833 -- Initialize message list.
834
835 IF FND_API.to_Boolean(p_init_msg_list) THEN
836 OE_MSG_PUB.initialize;
837 END IF;
838
839 -- Set Savepoint
840
841 SAVEPOINT Lock_Attributes_PVT;
842
843 -- Lock CON
844
845 IF p_CON_rec.operation = QP_GLOBALS.G_OPR_LOCK THEN
846
847 QP_Con_Util.Lock_Row
848 ( p_CON_rec => p_CON_rec
849 , x_CON_rec => x_CON_rec
850 , x_return_status => l_return_status
851 );
852
853 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
854 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
855 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
856 RAISE FND_API.G_EXC_ERROR;
857 END IF;
858
859
860 END IF;
861
862 -- Lock SEG
863
864 FOR I IN 1..p_SEG_tbl.COUNT LOOP
865
866 IF p_SEG_tbl(I).operation = QP_GLOBALS.G_OPR_LOCK THEN
867
868 QP_Seg_Util.Lock_Row
869 ( p_SEG_rec => p_SEG_tbl(I)
870 , x_SEG_rec => l_SEG_rec
871 , x_return_status => l_return_status
872 );
873
874 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
875 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
876 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
877 RAISE FND_API.G_EXC_ERROR;
878 END IF;
879
880 x_SEG_tbl(I) := l_SEG_rec;
881
882 END IF;
883
884 END LOOP;
885
886 -- Set return status
887
888 x_return_status := FND_API.G_RET_STS_SUCCESS;
889
890 -- Get message count and data
891
892 OE_MSG_PUB.Count_And_Get
893 ( p_count => x_msg_count
894 , p_data => x_msg_data
895 );
896
897
898 EXCEPTION
899
900 WHEN FND_API.G_EXC_ERROR THEN
901
902 x_return_status := FND_API.G_RET_STS_ERROR;
903
904 -- Get message count and data
905
906 OE_MSG_PUB.Count_And_Get
907 ( p_count => x_msg_count
908 , p_data => x_msg_data
909 );
910
911 -- Rollback
912
913 ROLLBACK TO Lock_Attributes_PVT;
914
915 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
916
917 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
918
919 -- Get message count and data
920
921 OE_MSG_PUB.Count_And_Get
925
922 ( p_count => x_msg_count
923 , p_data => x_msg_data
924 );
926 -- Rollback
927
928 ROLLBACK TO Lock_Attributes_PVT;
929
930 WHEN OTHERS THEN
931
932 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
933
934 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
935 THEN
936 OE_MSG_PUB.Add_Exc_Msg
937 ( G_PKG_NAME
938 , 'Lock_Attributes'
939 );
940 END IF;
941
942 -- Get message count and data
943
944 OE_MSG_PUB.Count_And_Get
945 ( p_count => x_msg_count
946 , p_data => x_msg_data
947 );
948
949 -- Rollback
950
951 ROLLBACK TO Lock_Attributes_PVT;
952
953 END Lock_Attributes;
954
955 -- Start of Comments
956 -- API name Get_Attributes
957 -- Type Private
958 -- Function
959 --
960 -- Pre-reqs
961 --
962 -- Parameters
963 --
964 -- Version Current version = 1.0
965 -- Initial version = 1.0
966 --
967 -- Notes
968 --
969 -- End of Comments
970
971 PROCEDURE Get_Attributes
972 ( p_api_version_number IN NUMBER
973 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
974 , x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
975 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
976 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
977 , p_prc_context_id IN NUMBER
978 , x_CON_rec OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Con_Rec_Type
979 , x_SEG_tbl OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Tbl_Type
980 )
981 IS
982 l_api_version_number CONSTANT NUMBER := 1.0;
983 l_api_name CONSTANT VARCHAR2(30):= 'Get_Attributes';
984 l_CON_rec QP_Attributes_PUB.Con_Rec_Type;
985 l_SEG_tbl QP_Attributes_PUB.Seg_Tbl_Type;
986 BEGIN
987
988 -- Standard call to check for call compatibility
989
990 IF NOT FND_API.Compatible_API_Call
991 ( l_api_version_number
992 , p_api_version_number
993 , l_api_name
994 , G_PKG_NAME
995 )
996 THEN
997 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
998 END IF;
999
1000 -- Initialize message list.
1001
1002 IF FND_API.to_Boolean(p_init_msg_list) THEN
1003 OE_MSG_PUB.initialize;
1004 END IF;
1005
1006 -- Get CON ( parent = CON )
1007
1008 l_CON_rec := QP_Con_Util.Query_Row
1009 ( p_prc_context_id => p_prc_context_id
1010 );
1011
1012 -- Get SEG ( parent = CON )
1013
1014 l_SEG_tbl := QP_Seg_Util.Query_Rows
1015 ( p_prc_context_id => l_CON_rec.prc_context_id
1016 );
1017
1018
1019 -- Load out parameters
1020
1021 x_CON_rec := l_CON_rec;
1022 x_SEG_tbl := l_SEG_tbl;
1023
1024 -- Set return status
1025
1026 x_return_status := FND_API.G_RET_STS_SUCCESS;
1027
1028 -- Get message count and data
1029
1030 OE_MSG_PUB.Count_And_Get
1031 ( p_count => x_msg_count
1032 , p_data => x_msg_data
1033 );
1034
1035
1036 EXCEPTION
1037
1038 WHEN FND_API.G_EXC_ERROR THEN
1039
1040 x_return_status := FND_API.G_RET_STS_ERROR;
1041
1042 -- Get message count and data
1043
1044 OE_MSG_PUB.Count_And_Get
1045 ( p_count => x_msg_count
1046 , p_data => x_msg_data
1047 );
1048
1049 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1050
1051 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1052
1053 -- Get message count and data
1054
1055 OE_MSG_PUB.Count_And_Get
1056 ( p_count => x_msg_count
1057 , p_data => x_msg_data
1058 );
1059
1060 WHEN OTHERS THEN
1061
1062 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1063
1064 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1065 THEN
1066 OE_MSG_PUB.Add_Exc_Msg
1067 ( G_PKG_NAME
1068 , 'Get_Attributes'
1069 );
1070 END IF;
1071
1072 -- Get message count and data
1073
1074 OE_MSG_PUB.Count_And_Get
1075 ( p_count => x_msg_count
1076 , p_data => x_msg_data
1077 );
1078
1079 END Get_Attributes;
1080
1081 END QP_Attributes_PVT;