[Home] [Help]
PACKAGE BODY: APPS.QP_QP_FORM_PSG
Source
1 PACKAGE BODY QP_QP_Form_Psg AS
2 /* $Header: QPXFPSGB.pls 120.2 2005/07/18 18:33:10 appldev ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'QP_QP_Form_Psg';
7
8 -- Global variables holding cached record.
9
10 g_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
11 g_db_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
12
13 -- Forward declaration of procedures maintaining entity record cache.
14
15 PROCEDURE Write_PSG
16 ( p_PSG_rec IN QP_Attr_Map_PUB.Psg_Rec_Type
17 , p_db_record IN BOOLEAN := FALSE
18 );
19
20 FUNCTION Get_PSG
21 ( p_db_record IN BOOLEAN := FALSE
22 , p_segment_pte_id IN NUMBER
23 )
24 RETURN QP_Attr_Map_PUB.Psg_Rec_Type;
25
26 PROCEDURE Clear_PSG;
27
28 -- Global variable holding performed operations.
29
30 g_opr__tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
31
32 -- Procedure : Default_Attributes
33 --
34
35 PROCEDURE Default_Attributes
36 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
37 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
38 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 , x_attribute1 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
40 , x_attribute10 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
41 , x_attribute11 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 , x_attribute12 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 , x_attribute13 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 , x_attribute14 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 , x_attribute15 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 , x_attribute2 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 , x_attribute3 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 , x_attribute4 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 , x_attribute5 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 , x_attribute6 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 , x_attribute7 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 , x_attribute8 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 , x_attribute9 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 , x_context OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 , x_limits_enabled OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 , x_lov_enabled OUT NOCOPY /* file.sql.39 change */ VARCHAR2
57 , x_pte_code OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 , x_seeded_sourcing_method OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 , x_segment_id OUT NOCOPY /* file.sql.39 change */ NUMBER
60 , x_segment_level OUT NOCOPY /* file.sql.39 change */ VARCHAR2
61 , x_segment_pte_id OUT NOCOPY /* file.sql.39 change */ NUMBER
62 , x_sourcing_enabled OUT NOCOPY /* file.sql.39 change */ VARCHAR2
63 , x_sourcing_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
64 , x_user_sourcing_method OUT NOCOPY /* file.sql.39 change */ VARCHAR2
65 , x_pte OUT NOCOPY /* file.sql.39 change */ VARCHAR2
66 , x_segment OUT NOCOPY /* file.sql.39 change */ VARCHAR2
67 , x_segment_pte OUT NOCOPY /* file.sql.39 change */ VARCHAR2
68 )
69 IS
70 l_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
71 l_PSG_val_rec QP_Attr_Map_PUB.Psg_Val_Rec_Type;
72 l_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
73 l_control_rec QP_GLOBALS.Control_Rec_Type;
74 l_return_status VARCHAR2(1);
75 l_x_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
76 l_x_RQT_rec QP_Attr_Map_PUB.Rqt_Rec_Type;
77 l_x_RQT_tbl QP_Attr_Map_PUB.Rqt_Tbl_Type;
78 l_x_SSC_rec QP_Attr_Map_PUB.Ssc_Rec_Type;
79 l_x_SSC_tbl QP_Attr_Map_PUB.Ssc_Tbl_Type;
80 l_x_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
81 l_x_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
82 l_x_SOU_rec QP_Attr_Map_PUB.Sou_Rec_Type;
83 l_x_SOU_tbl QP_Attr_Map_PUB.Sou_Tbl_Type;
84 l_x_FNA_rec QP_Attr_Map_PUB.Fna_Rec_Type;
85 l_x_FNA_tbl QP_Attr_Map_PUB.Fna_Tbl_Type;
86 BEGIN
87
88 -- Set control flags.
89
90 l_control_rec.controlled_operation := TRUE;
91 l_control_rec.default_attributes := TRUE;
92
93 l_control_rec.change_attributes := FALSE;
94 l_control_rec.validate_entity := FALSE;
95 l_control_rec.write_to_DB := FALSE;
96 l_control_rec.process := FALSE;
97
98 -- Instruct API to retain its caches
99
100 l_control_rec.clear_api_cache := FALSE;
101 l_control_rec.clear_api_requests := FALSE;
102
103 -- Load IN parameters if any exist
104
105
106 -- Defaulting of flex values is currently done by the form.
107 -- Set flex attributes to NULL in order to avoid defaulting them.
108
109 l_PSG_rec.attribute1 := NULL;
110 l_PSG_rec.attribute10 := NULL;
111 l_PSG_rec.attribute11 := NULL;
112 l_PSG_rec.attribute12 := NULL;
113 l_PSG_rec.attribute13 := NULL;
114 l_PSG_rec.attribute14 := NULL;
115 l_PSG_rec.attribute15 := NULL;
116 l_PSG_rec.attribute2 := NULL;
117 l_PSG_rec.attribute3 := NULL;
118 l_PSG_rec.attribute4 := NULL;
119 l_PSG_rec.attribute5 := NULL;
120 l_PSG_rec.attribute6 := NULL;
121 l_PSG_rec.attribute7 := NULL;
122 l_PSG_rec.attribute8 := NULL;
123 l_PSG_rec.attribute9 := NULL;
124 l_PSG_rec.context := NULL;
125
126 -- Set Operation to Create
127
128 l_PSG_rec.operation := QP_GLOBALS.G_OPR_CREATE;
129
130 -- Populate PSG table
131
132 l_PSG_tbl(1) := l_PSG_rec;
133
134 -- Call QP_Attr_Map_PVT.Process_Attr_Mapping
135
136 QP_Attr_Map_PVT.Process_Attr_Mapping
137 ( p_api_version_number => 1.0
138 , p_init_msg_list => FND_API.G_TRUE
139 , x_return_status => l_return_status
140 , x_msg_count => x_msg_count
141 , x_msg_data => x_msg_data
142 , p_control_rec => l_control_rec
143 , p_PSG_tbl => l_PSG_tbl
144 , x_PTE_rec => l_x_PTE_rec
145 , x_RQT_tbl => l_x_RQT_tbl
146 , x_SSC_tbl => l_x_SSC_tbl
147 , x_PSG_tbl => l_x_PSG_tbl
148 , x_SOU_tbl => l_x_SOU_tbl
149 , x_FNA_tbl => l_x_FNA_tbl
150 );
151
152 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
153 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
154 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
155 RAISE FND_API.G_EXC_ERROR;
156 END IF;
157
158
159 -- Unload out tbl
160
161 l_x_PSG_rec := l_x_PSG_tbl(1);
162
163 -- Load OUT parameters.
164
165 x_attribute1 := l_x_PSG_rec.attribute1;
166 x_attribute10 := l_x_PSG_rec.attribute10;
167 x_attribute11 := l_x_PSG_rec.attribute11;
168 x_attribute12 := l_x_PSG_rec.attribute12;
169 x_attribute13 := l_x_PSG_rec.attribute13;
170 x_attribute14 := l_x_PSG_rec.attribute14;
171 x_attribute15 := l_x_PSG_rec.attribute15;
172 x_attribute2 := l_x_PSG_rec.attribute2;
173 x_attribute3 := l_x_PSG_rec.attribute3;
174 x_attribute4 := l_x_PSG_rec.attribute4;
175 x_attribute5 := l_x_PSG_rec.attribute5;
176 x_attribute6 := l_x_PSG_rec.attribute6;
177 x_attribute7 := l_x_PSG_rec.attribute7;
178 x_attribute8 := l_x_PSG_rec.attribute8;
179 x_attribute9 := l_x_PSG_rec.attribute9;
180 x_context := l_x_PSG_rec.context;
181 x_limits_enabled := l_x_PSG_rec.limits_enabled;
182 x_lov_enabled := l_x_PSG_rec.lov_enabled;
183 x_pte_code := l_x_PSG_rec.pte_code;
184 x_seeded_sourcing_method := l_x_PSG_rec.seeded_sourcing_method;
185 x_segment_id := l_x_PSG_rec.segment_id;
186 x_segment_level := l_x_PSG_rec.segment_level;
187 x_segment_pte_id := l_x_PSG_rec.segment_pte_id;
188 x_sourcing_enabled := l_x_PSG_rec.sourcing_enabled;
189 x_sourcing_status := l_x_PSG_rec.sourcing_status;
190 x_user_sourcing_method := l_x_PSG_rec.user_sourcing_method;
191
192 -- Load display out parameters if any
193
194 l_PSG_val_rec := QP_Psg_Util.Get_Values
195 ( p_PSG_rec => l_x_PSG_rec
196 );
197 x_pte := l_PSG_val_rec.pte;
198 x_segment := l_PSG_val_rec.segment;
199 x_segment_pte := l_PSG_val_rec.segment_pte;
200
201 -- Write to cache.
202 -- Set db_flag to False before writing to cache
203
204 l_x_PSG_rec.db_flag := FND_API.G_FALSE;
205
206 Write_PSG
207 ( p_PSG_rec => l_x_PSG_rec
208 );
209
210 -- Set return status.
211
212 x_return_status := FND_API.G_RET_STS_SUCCESS;
213
214 -- Get message count and data
215
216 OE_MSG_PUB.Count_And_Get
217 ( p_count => x_msg_count
218 , p_data => x_msg_data
219 );
220
221
222 EXCEPTION
223
224 WHEN FND_API.G_EXC_ERROR THEN
225
226 x_return_status := FND_API.G_RET_STS_ERROR;
227
228 -- Get message count and data
229
230 OE_MSG_PUB.Count_And_Get
231 ( p_count => x_msg_count
232 , p_data => x_msg_data
233 );
234
235 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
236
237 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
238
239 -- Get message count and data
240
241 OE_MSG_PUB.Count_And_Get
242 ( p_count => x_msg_count
243 , p_data => x_msg_data
244 );
245
246 WHEN OTHERS THEN
247
248 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
249
250 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
251 THEN
252 OE_MSG_PUB.Add_Exc_Msg
253 ( G_PKG_NAME
254 , 'Default_Attributes'
255 );
256 END IF;
257
258 -- Get message count and data
259
260 OE_MSG_PUB.Count_And_Get
261 ( p_count => x_msg_count
262 , p_data => x_msg_data
263 );
264
265 END Default_Attributes;
266
267 -- Procedure : Change_Attribute
268 --
269
270 PROCEDURE Change_Attribute
271 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
272 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
273 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
274 , p_segment_pte_id IN NUMBER
275 , p_attr_id IN NUMBER
276 , p_attr_value IN VARCHAR2
277 , p_attribute1 IN VARCHAR2
278 , p_attribute10 IN VARCHAR2
279 , p_attribute11 IN VARCHAR2
280 , p_attribute12 IN VARCHAR2
281 , p_attribute13 IN VARCHAR2
282 , p_attribute14 IN VARCHAR2
283 , p_attribute15 IN VARCHAR2
284 , p_attribute2 IN VARCHAR2
285 , p_attribute3 IN VARCHAR2
286 , p_attribute4 IN VARCHAR2
287 , p_attribute5 IN VARCHAR2
288 , p_attribute6 IN VARCHAR2
289 , p_attribute7 IN VARCHAR2
290 , p_attribute8 IN VARCHAR2
291 , p_attribute9 IN VARCHAR2
292 , p_context IN VARCHAR2
293 , x_attribute1 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
294 , x_attribute10 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
295 , x_attribute11 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
296 , x_attribute12 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
297 , x_attribute13 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
298 , x_attribute14 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
299 , x_attribute15 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
300 , x_attribute2 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
301 , x_attribute3 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
302 , x_attribute4 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
303 , x_attribute5 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
304 , x_attribute6 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
305 , x_attribute7 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
306 , x_attribute8 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
307 , x_attribute9 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
308 , x_context OUT NOCOPY /* file.sql.39 change */ VARCHAR2
309 , x_limits_enabled OUT NOCOPY /* file.sql.39 change */ VARCHAR2
310 , x_lov_enabled OUT NOCOPY /* file.sql.39 change */ VARCHAR2
311 , x_pte_code OUT NOCOPY /* file.sql.39 change */ VARCHAR2
312 , x_seeded_sourcing_method OUT NOCOPY /* file.sql.39 change */ VARCHAR2
313 , x_segment_id OUT NOCOPY /* file.sql.39 change */ NUMBER
314 , x_segment_level OUT NOCOPY /* file.sql.39 change */ VARCHAR2
315 , x_segment_pte_id OUT NOCOPY /* file.sql.39 change */ NUMBER
316 , x_sourcing_enabled OUT NOCOPY /* file.sql.39 change */ VARCHAR2
317 , x_sourcing_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
318 , x_user_sourcing_method OUT NOCOPY /* file.sql.39 change */ VARCHAR2
319 , x_pte OUT NOCOPY /* file.sql.39 change */ VARCHAR2
320 , x_segment OUT NOCOPY /* file.sql.39 change */ VARCHAR2
321 , x_segment_pte OUT NOCOPY /* file.sql.39 change */ VARCHAR2
322 )
323 IS
324 l_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
325 l_old_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
326 l_PSG_val_rec QP_Attr_Map_PUB.Psg_Val_Rec_Type;
327 l_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
328 l_old_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
329 l_control_rec QP_GLOBALS.Control_Rec_Type;
330 l_return_status VARCHAR2(1);
331 l_x_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
332 l_x_RQT_rec QP_Attr_Map_PUB.Rqt_Rec_Type;
333 l_x_RQT_tbl QP_Attr_Map_PUB.Rqt_Tbl_Type;
334 l_x_SSC_rec QP_Attr_Map_PUB.Ssc_Rec_Type;
335 l_x_SSC_tbl QP_Attr_Map_PUB.Ssc_Tbl_Type;
336 l_x_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
337 l_x_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
338 l_x_SOU_rec QP_Attr_Map_PUB.Sou_Rec_Type;
339 l_x_SOU_tbl QP_Attr_Map_PUB.Sou_Tbl_Type;
340 l_x_FNA_rec QP_Attr_Map_PUB.Fna_Rec_Type;
341 l_x_FNA_tbl QP_Attr_Map_PUB.Fna_Tbl_Type;
342 BEGIN
343
344 -- Set control flags.
345
346 l_control_rec.controlled_operation := TRUE;
347 l_control_rec.change_attributes := TRUE;
348
349 l_control_rec.default_attributes := FALSE;
350 l_control_rec.validate_entity := FALSE;
351 l_control_rec.write_to_DB := FALSE;
352 l_control_rec.process := FALSE;
353
354 -- Instruct API to retain its caches
355
356 l_control_rec.clear_api_cache := FALSE;
357 l_control_rec.clear_api_requests := FALSE;
358
359 -- Read PSG from cache
360
361 l_PSG_rec := Get_PSG
362 ( p_db_record => FALSE
363 , p_segment_pte_id => p_segment_pte_id
364 );
365
366 l_old_PSG_rec := l_PSG_rec;
367
368 IF p_attr_id = QP_Psg_Util.G_LIMITS_ENABLED THEN
369 l_PSG_rec.limits_enabled := p_attr_value;
370 ELSIF p_attr_id = QP_Psg_Util.G_LOV_ENABLED THEN
371 l_PSG_rec.lov_enabled := p_attr_value;
372 ELSIF p_attr_id = QP_Psg_Util.G_PTE THEN
373 l_PSG_rec.pte_code := p_attr_value;
374 ELSIF p_attr_id = QP_Psg_Util.G_SEEDED_SOURCING_METHOD THEN
375 l_PSG_rec.seeded_sourcing_method := p_attr_value;
376 ELSIF p_attr_id = QP_Psg_Util.G_SEGMENT THEN
377 l_PSG_rec.segment_id := TO_NUMBER(p_attr_value);
378 ELSIF p_attr_id = QP_Psg_Util.G_SEGMENT_LEVEL THEN
379 l_PSG_rec.segment_level := p_attr_value;
380 ELSIF p_attr_id = QP_Psg_Util.G_SEGMENT_PTE THEN
381 l_PSG_rec.segment_pte_id := TO_NUMBER(p_attr_value);
382 ELSIF p_attr_id = QP_Psg_Util.G_SOURCING_ENABLED THEN
383 l_PSG_rec.sourcing_enabled := p_attr_value;
384 ELSIF p_attr_id = QP_Psg_Util.G_SOURCING_STATUS THEN
385 l_PSG_rec.sourcing_status := p_attr_value;
386 ELSIF p_attr_id = QP_Psg_Util.G_USER_SOURCING_METHOD THEN
387 l_PSG_rec.user_sourcing_method := p_attr_value;
388 ELSIF p_attr_id = QP_Psg_Util.G_ATTRIBUTE1
389 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE10
390 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE11
391 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE12
392 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE13
393 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE14
394 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE15
395 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE2
396 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE3
397 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE4
398 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE5
399 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE6
400 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE7
401 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE8
402 OR p_attr_id = QP_Psg_Util.G_ATTRIBUTE9
403 OR p_attr_id = QP_Psg_Util.G_CONTEXT
404 THEN
405
406 l_PSG_rec.attribute1 := p_attribute1;
407 l_PSG_rec.attribute10 := p_attribute10;
408 l_PSG_rec.attribute11 := p_attribute11;
409 l_PSG_rec.attribute12 := p_attribute12;
410 l_PSG_rec.attribute13 := p_attribute13;
411 l_PSG_rec.attribute14 := p_attribute14;
412 l_PSG_rec.attribute15 := p_attribute15;
413 l_PSG_rec.attribute2 := p_attribute2;
414 l_PSG_rec.attribute3 := p_attribute3;
415 l_PSG_rec.attribute4 := p_attribute4;
416 l_PSG_rec.attribute5 := p_attribute5;
417 l_PSG_rec.attribute6 := p_attribute6;
418 l_PSG_rec.attribute7 := p_attribute7;
419 l_PSG_rec.attribute8 := p_attribute8;
420 l_PSG_rec.attribute9 := p_attribute9;
421 l_PSG_rec.context := p_context;
422
423 ELSE
424
425 -- Unexpected error, unrecognized attribute
426
427 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
428 THEN
429 OE_MSG_PUB.Add_Exc_Msg
430 ( G_PKG_NAME
431 , 'Change_Attribute'
432 , 'Unrecognized attribute'
433 );
434 END IF;
435
436 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
437
438 END IF;
439
440 -- Set Operation.
441
442 IF FND_API.To_Boolean(l_PSG_rec.db_flag) THEN
443 l_PSG_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
444 ELSE
445 l_PSG_rec.operation := QP_GLOBALS.G_OPR_CREATE;
446 END IF;
447
448 -- Populate PSG table
449
450 l_PSG_tbl(1) := l_PSG_rec;
451 l_old_PSG_tbl(1) := l_old_PSG_rec;
452
453 -- Call QP_Attr_Map_PVT.Process_Attr_Mapping
454
455 QP_Attr_Map_PVT.Process_Attr_Mapping
456 ( p_api_version_number => 1.0
457 , p_init_msg_list => FND_API.G_TRUE
458 , p_validation_level => FND_API.G_VALID_LEVEL_NONE
459 , x_return_status => l_return_status
460 , x_msg_count => x_msg_count
461 , x_msg_data => x_msg_data
462 , p_control_rec => l_control_rec
463 , p_PSG_tbl => l_PSG_tbl
464 , p_old_PSG_tbl => l_old_PSG_tbl
465 , x_PTE_rec => l_x_PTE_rec
466 , x_RQT_tbl => l_x_RQT_tbl
467 , x_SSC_tbl => l_x_SSC_tbl
468 , x_PSG_tbl => l_x_PSG_tbl
469 , x_SOU_tbl => l_x_SOU_tbl
470 , x_FNA_tbl => l_x_FNA_tbl
471 );
472
473 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
474 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
475 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
476 RAISE FND_API.G_EXC_ERROR;
477 END IF;
478
479
480 -- Unload out tbl
481
482 l_x_PSG_rec := l_x_PSG_tbl(1);
483
484 -- Init OUT parameters to missing.
485
486 x_attribute1 := FND_API.G_MISS_CHAR;
487 x_attribute10 := FND_API.G_MISS_CHAR;
488 x_attribute11 := FND_API.G_MISS_CHAR;
489 x_attribute12 := FND_API.G_MISS_CHAR;
490 x_attribute13 := FND_API.G_MISS_CHAR;
491 x_attribute14 := FND_API.G_MISS_CHAR;
492 x_attribute15 := FND_API.G_MISS_CHAR;
493 x_attribute2 := FND_API.G_MISS_CHAR;
494 x_attribute3 := FND_API.G_MISS_CHAR;
495 x_attribute4 := FND_API.G_MISS_CHAR;
496 x_attribute5 := FND_API.G_MISS_CHAR;
497 x_attribute6 := FND_API.G_MISS_CHAR;
498 x_attribute7 := FND_API.G_MISS_CHAR;
499 x_attribute8 := FND_API.G_MISS_CHAR;
500 x_attribute9 := FND_API.G_MISS_CHAR;
501 x_context := FND_API.G_MISS_CHAR;
502 x_limits_enabled := FND_API.G_MISS_CHAR;
503 x_lov_enabled := FND_API.G_MISS_CHAR;
504 x_pte_code := FND_API.G_MISS_CHAR;
505 x_seeded_sourcing_method := FND_API.G_MISS_CHAR;
506 x_segment_id := FND_API.G_MISS_NUM;
507 x_segment_level := FND_API.G_MISS_CHAR;
508 x_segment_pte_id := FND_API.G_MISS_NUM;
509 x_sourcing_enabled := FND_API.G_MISS_CHAR;
510 x_sourcing_status := FND_API.G_MISS_CHAR;
511 x_user_sourcing_method := FND_API.G_MISS_CHAR;
512 x_pte := FND_API.G_MISS_CHAR;
513 x_segment := FND_API.G_MISS_CHAR;
514 x_segment_pte := FND_API.G_MISS_CHAR;
515
516 -- Load display out parameters if any
517
518 l_PSG_val_rec := QP_Psg_Util.Get_Values
519 ( p_PSG_rec => l_x_PSG_rec
520 , p_old_PSG_rec => l_PSG_rec
521 );
522
523 -- Return changed attributes.
524
525 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute1,
526 l_PSG_rec.attribute1)
527 THEN
528 x_attribute1 := l_x_PSG_rec.attribute1;
529 END IF;
530
531 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute10,
532 l_PSG_rec.attribute10)
533 THEN
534 x_attribute10 := l_x_PSG_rec.attribute10;
535 END IF;
536
537 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute11,
538 l_PSG_rec.attribute11)
539 THEN
540 x_attribute11 := l_x_PSG_rec.attribute11;
541 END IF;
542
543 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute12,
544 l_PSG_rec.attribute12)
545 THEN
546 x_attribute12 := l_x_PSG_rec.attribute12;
547 END IF;
548
549 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute13,
550 l_PSG_rec.attribute13)
551 THEN
552 x_attribute13 := l_x_PSG_rec.attribute13;
553 END IF;
554
555 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute14,
556 l_PSG_rec.attribute14)
557 THEN
558 x_attribute14 := l_x_PSG_rec.attribute14;
559 END IF;
560
561 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute15,
562 l_PSG_rec.attribute15)
563 THEN
564 x_attribute15 := l_x_PSG_rec.attribute15;
565 END IF;
566
567 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute2,
568 l_PSG_rec.attribute2)
569 THEN
570 x_attribute2 := l_x_PSG_rec.attribute2;
571 END IF;
572
573 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute3,
574 l_PSG_rec.attribute3)
575 THEN
576 x_attribute3 := l_x_PSG_rec.attribute3;
577 END IF;
578
579 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute4,
580 l_PSG_rec.attribute4)
581 THEN
582 x_attribute4 := l_x_PSG_rec.attribute4;
583 END IF;
584
585 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute5,
586 l_PSG_rec.attribute5)
587 THEN
588 x_attribute5 := l_x_PSG_rec.attribute5;
589 END IF;
590
591 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute6,
592 l_PSG_rec.attribute6)
593 THEN
594 x_attribute6 := l_x_PSG_rec.attribute6;
595 END IF;
596
597 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute7,
598 l_PSG_rec.attribute7)
599 THEN
600 x_attribute7 := l_x_PSG_rec.attribute7;
601 END IF;
602
603 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute8,
604 l_PSG_rec.attribute8)
605 THEN
606 x_attribute8 := l_x_PSG_rec.attribute8;
607 END IF;
608
609 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.attribute9,
610 l_PSG_rec.attribute9)
611 THEN
612 x_attribute9 := l_x_PSG_rec.attribute9;
613 END IF;
614
615 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.context,
616 l_PSG_rec.context)
617 THEN
618 x_context := l_x_PSG_rec.context;
619 END IF;
620
621 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.limits_enabled,
622 l_PSG_rec.limits_enabled)
623 THEN
624 x_limits_enabled := l_x_PSG_rec.limits_enabled;
625 END IF;
626
627 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.lov_enabled,
628 l_PSG_rec.lov_enabled)
629 THEN
630 x_lov_enabled := l_x_PSG_rec.lov_enabled;
631 END IF;
632
633 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.pte_code,
634 l_PSG_rec.pte_code)
635 THEN
636 x_pte_code := l_x_PSG_rec.pte_code;
637 x_pte := l_PSG_val_rec.pte;
638 END IF;
639
640 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.seeded_sourcing_method,
641 l_PSG_rec.seeded_sourcing_method)
642 THEN
643 x_seeded_sourcing_method := l_x_PSG_rec.seeded_sourcing_method;
644 END IF;
645
646 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.segment_id,
647 l_PSG_rec.segment_id)
648 THEN
649 x_segment_id := l_x_PSG_rec.segment_id;
650 x_segment := l_PSG_val_rec.segment;
651 END IF;
652
653 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.segment_level,
654 l_PSG_rec.segment_level)
655 THEN
656 x_segment_level := l_x_PSG_rec.segment_level;
657 END IF;
658
659 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.segment_pte_id,
660 l_PSG_rec.segment_pte_id)
661 THEN
662 x_segment_pte_id := l_x_PSG_rec.segment_pte_id;
663 x_segment_pte := l_PSG_val_rec.segment_pte;
664 END IF;
665
666 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.sourcing_enabled,
667 l_PSG_rec.sourcing_enabled)
668 THEN
669 x_sourcing_enabled := l_x_PSG_rec.sourcing_enabled;
670 END IF;
671
672 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.sourcing_status,
673 l_PSG_rec.sourcing_status)
674 THEN
675 x_sourcing_status := l_x_PSG_rec.sourcing_status;
676 END IF;
677
678 IF NOT QP_GLOBALS.Equal(l_x_PSG_rec.user_sourcing_method,
679 l_PSG_rec.user_sourcing_method)
680 THEN
681 x_user_sourcing_method := l_x_PSG_rec.user_sourcing_method;
682 END IF;
683
684
685 -- Write to cache.
686
687 Write_PSG
688 ( p_PSG_rec => l_x_PSG_rec
689 );
690
691 -- Set return status.
692
693 x_return_status := FND_API.G_RET_STS_SUCCESS;
694
695 -- Get message count and data
696
697 OE_MSG_PUB.Count_And_Get
698 ( p_count => x_msg_count
699 , p_data => x_msg_data
700 );
701
702
703 EXCEPTION
704
705 WHEN FND_API.G_EXC_ERROR THEN
706
707 x_return_status := FND_API.G_RET_STS_ERROR;
708
709 -- Get message count and data
710
711 OE_MSG_PUB.Count_And_Get
712 ( p_count => x_msg_count
713 , p_data => x_msg_data
714 );
715
716 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
717
718 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
719
720 -- Get message count and data
721
722 OE_MSG_PUB.Count_And_Get
723 ( p_count => x_msg_count
724 , p_data => x_msg_data
725 );
726
727 WHEN OTHERS THEN
728
729 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
730
731 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
732 THEN
733 OE_MSG_PUB.Add_Exc_Msg
734 ( G_PKG_NAME
735 , 'Change_Attribute'
736 );
737 END IF;
738
739 -- Get message count and data
740
741 OE_MSG_PUB.Count_And_Get
742 ( p_count => x_msg_count
743 , p_data => x_msg_data
744 );
745
746 END Change_Attribute;
747
748 -- Procedure Validate_And_Write
749 --
750
751 PROCEDURE Validate_And_Write
752 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
753 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
754 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
755 , p_segment_pte_id IN NUMBER
756 , x_creation_date OUT NOCOPY /* file.sql.39 change */ DATE
757 , x_created_by OUT NOCOPY /* file.sql.39 change */ NUMBER
758 , x_last_update_date OUT NOCOPY /* file.sql.39 change */ DATE
759 , x_last_updated_by OUT NOCOPY /* file.sql.39 change */ NUMBER
760 , x_last_update_login OUT NOCOPY /* file.sql.39 change */ NUMBER
761 )
762 IS
763 l_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
764 l_old_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
765 l_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
766 l_old_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
767 l_control_rec QP_GLOBALS.Control_Rec_Type;
768 l_return_status VARCHAR2(1);
769 l_x_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
770 l_x_RQT_rec QP_Attr_Map_PUB.Rqt_Rec_Type;
771 l_x_RQT_tbl QP_Attr_Map_PUB.Rqt_Tbl_Type;
772 l_x_SSC_rec QP_Attr_Map_PUB.Ssc_Rec_Type;
773 l_x_SSC_tbl QP_Attr_Map_PUB.Ssc_Tbl_Type;
774 l_x_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
775 l_x_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
776 l_x_SOU_rec QP_Attr_Map_PUB.Sou_Rec_Type;
777 l_x_SOU_tbl QP_Attr_Map_PUB.Sou_Tbl_Type;
778 l_x_FNA_rec QP_Attr_Map_PUB.Fna_Rec_Type;
779 l_x_FNA_tbl QP_Attr_Map_PUB.Fna_Tbl_Type;
780 BEGIN
781
782 -- Set control flags.
783
784 l_control_rec.controlled_operation := TRUE;
785 l_control_rec.validate_entity := TRUE;
786 l_control_rec.write_to_DB := TRUE;
787
788 l_control_rec.default_attributes := FALSE;
789 l_control_rec.change_attributes := FALSE;
790 l_control_rec.process := FALSE;
791
792 -- Instruct API to retain its caches
793
794 l_control_rec.clear_api_cache := FALSE;
795 l_control_rec.clear_api_requests := FALSE;
796
797 -- Read PSG from cache
798
799 l_old_PSG_rec := Get_PSG
800 ( p_db_record => TRUE
801 , p_segment_pte_id => p_segment_pte_id
802 );
803
804 l_PSG_rec := Get_PSG
805 ( p_db_record => FALSE
806 , p_segment_pte_id => p_segment_pte_id
807 );
808
809 -- Set Operation.
810
811 IF FND_API.To_Boolean(l_PSG_rec.db_flag) THEN
812 l_PSG_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
813 ELSE
814 l_PSG_rec.operation := QP_GLOBALS.G_OPR_CREATE;
815 END IF;
816
817 -- Populate PSG table
818
819 l_PSG_tbl(1) := l_PSG_rec;
820 l_old_PSG_tbl(1) := l_old_PSG_rec;
821
822 -- Call QP_Attr_Map_PVT.Process_Attr_Mapping
823
824 QP_Attr_Map_PVT.Process_Attr_Mapping
825 ( p_api_version_number => 1.0
826 , p_init_msg_list => FND_API.G_TRUE
827 , x_return_status => l_return_status
828 , x_msg_count => x_msg_count
829 , x_msg_data => x_msg_data
830 , p_control_rec => l_control_rec
831 , p_PSG_tbl => l_PSG_tbl
832 , p_old_PSG_tbl => l_old_PSG_tbl
833 , x_PTE_rec => l_x_PTE_rec
834 , x_RQT_tbl => l_x_RQT_tbl
835 , x_SSC_tbl => l_x_SSC_tbl
836 , x_PSG_tbl => l_x_PSG_tbl
837 , x_SOU_tbl => l_x_SOU_tbl
838 , x_FNA_tbl => l_x_FNA_tbl
839 );
840
841 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
842 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
843 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
844 RAISE FND_API.G_EXC_ERROR;
845 END IF;
846
847
848 -- Load OUT parameters.
849
850 l_x_PSG_rec := l_x_PSG_tbl(1);
851
852 x_creation_date := l_x_PSG_rec.creation_date;
853 x_created_by := l_x_PSG_rec.created_by;
854 x_last_update_date := l_x_PSG_rec.last_update_date;
855 x_last_updated_by := l_x_PSG_rec.last_updated_by;
856 x_last_update_login := l_x_PSG_rec.last_update_login;
857
858 -- Clear PSG record cache
859
860 Clear_PSG;
861
862 -- Keep track of performed operations.
863
864 l_old_PSG_rec.operation := l_PSG_rec.operation;
865
866
867 -- Set return status.
868
869 x_return_status := FND_API.G_RET_STS_SUCCESS;
870
871 -- Get message count and data
872
873 OE_MSG_PUB.Count_And_Get
874 ( p_count => x_msg_count
875 , p_data => x_msg_data
876 );
877
878
879 EXCEPTION
880
881 WHEN FND_API.G_EXC_ERROR THEN
882
883 x_return_status := FND_API.G_RET_STS_ERROR;
884
885 -- Get message count and data
886
887 OE_MSG_PUB.Count_And_Get
888 ( p_count => x_msg_count
889 , p_data => x_msg_data
890 );
891
892 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
893
894 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
895
896 -- Get message count and data
897
898 OE_MSG_PUB.Count_And_Get
899 ( p_count => x_msg_count
900 , p_data => x_msg_data
901 );
902
903 WHEN OTHERS THEN
904
905 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
906
907 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
908 THEN
909 OE_MSG_PUB.Add_Exc_Msg
910 ( G_PKG_NAME
911 , 'Validate_And_Write'
912 );
913 END IF;
914
915 -- Get message count and data
916
917 OE_MSG_PUB.Count_And_Get
918 ( p_count => x_msg_count
919 , p_data => x_msg_data
920 );
921
922 END Validate_And_Write;
923
924 -- Procedure Delete_Row
925 --
926
927 PROCEDURE Delete_Row
928 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
929 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
930 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
931 , p_segment_pte_id IN NUMBER
932 )
933 IS
934 l_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
935 l_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
936 l_control_rec QP_GLOBALS.Control_Rec_Type;
937 l_return_status VARCHAR2(1);
938 l_x_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
939 l_x_RQT_rec QP_Attr_Map_PUB.Rqt_Rec_Type;
940 l_x_RQT_tbl QP_Attr_Map_PUB.Rqt_Tbl_Type;
941 l_x_SSC_rec QP_Attr_Map_PUB.Ssc_Rec_Type;
942 l_x_SSC_tbl QP_Attr_Map_PUB.Ssc_Tbl_Type;
943 l_x_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
944 l_x_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
945 l_x_SOU_rec QP_Attr_Map_PUB.Sou_Rec_Type;
946 l_x_SOU_tbl QP_Attr_Map_PUB.Sou_Tbl_Type;
947 l_x_FNA_rec QP_Attr_Map_PUB.Fna_Rec_Type;
948 l_x_FNA_tbl QP_Attr_Map_PUB.Fna_Tbl_Type;
949 BEGIN
950
951 -- Set control flags.
952
953 l_control_rec.controlled_operation := TRUE;
954 l_control_rec.validate_entity := TRUE;
955 l_control_rec.write_to_DB := TRUE;
956
957 l_control_rec.default_attributes := FALSE;
958 l_control_rec.change_attributes := FALSE;
959 l_control_rec.process := FALSE;
960
961 -- Instruct API to retain its caches
962
963 l_control_rec.clear_api_cache := FALSE;
964 l_control_rec.clear_api_requests := FALSE;
965
966 -- Read DB record from cache
967
968 l_PSG_rec := Get_PSG
969 ( p_db_record => TRUE
970 , p_segment_pte_id => p_segment_pte_id
971 );
972
973 -- Set Operation.
974
975 l_PSG_rec.operation := QP_GLOBALS.G_OPR_DELETE;
976
977 -- Populate PSG table
978
979 l_PSG_tbl(1) := l_PSG_rec;
980
981 -- Call QP_Attr_Map_PVT.Process_Attr_Mapping
982
983 QP_Attr_Map_PVT.Process_Attr_Mapping
984 ( p_api_version_number => 1.0
985 , p_init_msg_list => FND_API.G_TRUE
986 , x_return_status => l_return_status
987 , x_msg_count => x_msg_count
988 , x_msg_data => x_msg_data
989 , p_control_rec => l_control_rec
990 , p_PSG_tbl => l_PSG_tbl
991 , x_PTE_rec => l_x_PTE_rec
992 , x_RQT_tbl => l_x_RQT_tbl
993 , x_SSC_tbl => l_x_SSC_tbl
994 , x_PSG_tbl => l_x_PSG_tbl
995 , x_SOU_tbl => l_x_SOU_tbl
996 , x_FNA_tbl => l_x_FNA_tbl
997 );
998
999 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1000 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1001 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1002 RAISE FND_API.G_EXC_ERROR;
1003 END IF;
1004
1005
1006 -- Clear PSG record cache
1007
1008 Clear_PSG;
1009
1010 -- Set return status.
1011
1012 x_return_status := FND_API.G_RET_STS_SUCCESS;
1013
1014 -- Get message count and data
1015
1016 OE_MSG_PUB.Count_And_Get
1017 ( p_count => x_msg_count
1018 , p_data => x_msg_data
1019 );
1020
1021
1022 EXCEPTION
1023
1024 WHEN FND_API.G_EXC_ERROR THEN
1025
1026 x_return_status := FND_API.G_RET_STS_ERROR;
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 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1036
1037 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1038
1039 -- Get message count and data
1040
1041 OE_MSG_PUB.Count_And_Get
1042 ( p_count => x_msg_count
1043 , p_data => x_msg_data
1044 );
1045
1046 WHEN OTHERS THEN
1047
1048 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1049
1050 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1051 THEN
1052 OE_MSG_PUB.Add_Exc_Msg
1053 ( G_PKG_NAME
1054 , 'Delete_Row'
1055 );
1056 END IF;
1057
1058 -- Get message count and data
1059
1060 OE_MSG_PUB.Count_And_Get
1061 ( p_count => x_msg_count
1062 , p_data => x_msg_data
1063 );
1064
1065 END Delete_Row;
1066
1067 -- Procedure Process_Entity
1068 --
1069
1070 PROCEDURE Process_Entity
1071 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1072 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
1073 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1074 )
1075 IS
1076 l_control_rec QP_GLOBALS.Control_Rec_Type;
1077 l_return_status VARCHAR2(1);
1078 l_x_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
1079 l_x_RQT_rec QP_Attr_Map_PUB.Rqt_Rec_Type;
1080 l_x_RQT_tbl QP_Attr_Map_PUB.Rqt_Tbl_Type;
1081 l_x_SSC_rec QP_Attr_Map_PUB.Ssc_Rec_Type;
1082 l_x_SSC_tbl QP_Attr_Map_PUB.Ssc_Tbl_Type;
1083 l_x_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
1084 l_x_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
1085 l_x_SOU_rec QP_Attr_Map_PUB.Sou_Rec_Type;
1086 l_x_SOU_tbl QP_Attr_Map_PUB.Sou_Tbl_Type;
1087 l_x_FNA_rec QP_Attr_Map_PUB.Fna_Rec_Type;
1088 l_x_FNA_tbl QP_Attr_Map_PUB.Fna_Tbl_Type;
1089 BEGIN
1090
1091 -- Set control flags.
1092
1093 l_control_rec.controlled_operation := TRUE;
1094 l_control_rec.process := TRUE;
1095 l_control_rec.process_entity := QP_GLOBALS.G_ENTITY_PSG;
1096
1097 l_control_rec.default_attributes := FALSE;
1098 l_control_rec.change_attributes := FALSE;
1099 l_control_rec.validate_entity := FALSE;
1100 l_control_rec.write_to_DB := FALSE;
1101
1102 -- Instruct API to clear its request table
1103
1104 l_control_rec.clear_api_cache := FALSE;
1105 l_control_rec.clear_api_requests := FALSE;
1106
1107 -- Call QP_Attr_Map_PVT.Process_Attr_Mapping
1108
1109 QP_Attr_Map_PVT.Process_Attr_Mapping
1110 ( p_api_version_number => 1.0
1111 , p_init_msg_list => FND_API.G_TRUE
1112 , x_return_status => l_return_status
1113 , x_msg_count => x_msg_count
1114 , x_msg_data => x_msg_data
1115 , p_control_rec => l_control_rec
1116 , x_PTE_rec => l_x_PTE_rec
1117 , x_RQT_tbl => l_x_RQT_tbl
1118 , x_SSC_tbl => l_x_SSC_tbl
1119 , x_PSG_tbl => l_x_PSG_tbl
1120 , x_SOU_tbl => l_x_SOU_tbl
1121 , x_FNA_tbl => l_x_FNA_tbl
1122 );
1123
1124 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1125 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1126 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1127 RAISE FND_API.G_EXC_ERROR;
1128 END IF;
1129
1130
1131 -- Set return status.
1132
1133 x_return_status := FND_API.G_RET_STS_SUCCESS;
1134
1135 -- Get message count and data
1136
1137 OE_MSG_PUB.Count_And_Get
1138 ( p_count => x_msg_count
1139 , p_data => x_msg_data
1140 );
1141
1142
1143 EXCEPTION
1144
1145 WHEN FND_API.G_EXC_ERROR THEN
1146
1147 x_return_status := FND_API.G_RET_STS_ERROR;
1148
1149 -- Get message count and data
1150
1151 OE_MSG_PUB.Count_And_Get
1152 ( p_count => x_msg_count
1153 , p_data => x_msg_data
1154 );
1155
1156 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1157
1158 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1159
1160 -- Get message count and data
1161
1162 OE_MSG_PUB.Count_And_Get
1163 ( p_count => x_msg_count
1164 , p_data => x_msg_data
1165 );
1166
1167 WHEN OTHERS THEN
1168
1169 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1170
1171 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1172 THEN
1173 OE_MSG_PUB.Add_Exc_Msg
1174 ( G_PKG_NAME
1175 , 'Process_Entity'
1176 );
1177 END IF;
1178
1179 -- Get message count and data
1180
1181 OE_MSG_PUB.Count_And_Get
1182 ( p_count => x_msg_count
1183 , p_data => x_msg_data
1184 );
1185
1186 END Process_Entity;
1187
1188 -- Procedure lock_Row
1189 --
1190
1191 PROCEDURE Lock_Row
1192 ( x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1193 , x_msg_count OUT NOCOPY /* file.sql.39 change */ NUMBER
1194 , x_msg_data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1195 , p_attribute1 IN VARCHAR2
1196 , p_attribute10 IN VARCHAR2
1197 , p_attribute11 IN VARCHAR2
1198 , p_attribute12 IN VARCHAR2
1199 , p_attribute13 IN VARCHAR2
1200 , p_attribute14 IN VARCHAR2
1201 , p_attribute15 IN VARCHAR2
1202 , p_attribute2 IN VARCHAR2
1203 , p_attribute3 IN VARCHAR2
1204 , p_attribute4 IN VARCHAR2
1205 , p_attribute5 IN VARCHAR2
1206 , p_attribute6 IN VARCHAR2
1207 , p_attribute7 IN VARCHAR2
1208 , p_attribute8 IN VARCHAR2
1209 , p_attribute9 IN VARCHAR2
1210 , p_context IN VARCHAR2
1211 , p_created_by IN NUMBER
1212 , p_creation_date IN DATE
1213 , p_last_updated_by IN NUMBER
1214 , p_last_update_date IN DATE
1215 , p_last_update_login IN NUMBER
1216 , p_limits_enabled IN VARCHAR2
1217 , p_lov_enabled IN VARCHAR2
1218 , p_program_application_id IN NUMBER
1219 , p_program_id IN NUMBER
1220 , p_program_update_date IN DATE
1221 , p_pte_code IN VARCHAR2
1222 , p_seeded_sourcing_method IN VARCHAR2
1223 , p_segment_id IN NUMBER
1224 , p_segment_level IN VARCHAR2
1225 , p_segment_pte_id IN NUMBER
1226 , p_sourcing_enabled IN VARCHAR2
1227 , p_sourcing_status IN VARCHAR2
1228 , p_user_sourcing_method IN VARCHAR2
1229 )
1230 IS
1231 l_return_status VARCHAR2(1);
1232 l_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
1233 l_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
1234 l_x_PTE_rec QP_Attr_Map_PUB.Pte_Rec_Type;
1235 l_x_RQT_rec QP_Attr_Map_PUB.Rqt_Rec_Type;
1236 l_x_RQT_tbl QP_Attr_Map_PUB.Rqt_Tbl_Type;
1237 l_x_SSC_rec QP_Attr_Map_PUB.Ssc_Rec_Type;
1238 l_x_SSC_tbl QP_Attr_Map_PUB.Ssc_Tbl_Type;
1239 l_x_PSG_rec QP_Attr_Map_PUB.Psg_Rec_Type;
1240 l_x_PSG_tbl QP_Attr_Map_PUB.Psg_Tbl_Type;
1241 l_x_SOU_rec QP_Attr_Map_PUB.Sou_Rec_Type;
1242 l_x_SOU_tbl QP_Attr_Map_PUB.Sou_Tbl_Type;
1243 l_x_FNA_rec QP_Attr_Map_PUB.Fna_Rec_Type;
1244 l_x_FNA_tbl QP_Attr_Map_PUB.Fna_Tbl_Type;
1245 BEGIN
1246
1247 -- Load PSG record
1248
1249 l_PSG_rec.attribute1 := p_attribute1;
1250 l_PSG_rec.attribute10 := p_attribute10;
1251 l_PSG_rec.attribute11 := p_attribute11;
1252 l_PSG_rec.attribute12 := p_attribute12;
1253 l_PSG_rec.attribute13 := p_attribute13;
1254 l_PSG_rec.attribute14 := p_attribute14;
1255 l_PSG_rec.attribute15 := p_attribute15;
1256 l_PSG_rec.attribute2 := p_attribute2;
1257 l_PSG_rec.attribute3 := p_attribute3;
1258 l_PSG_rec.attribute4 := p_attribute4;
1259 l_PSG_rec.attribute5 := p_attribute5;
1260 l_PSG_rec.attribute6 := p_attribute6;
1261 l_PSG_rec.attribute7 := p_attribute7;
1262 l_PSG_rec.attribute8 := p_attribute8;
1263 l_PSG_rec.attribute9 := p_attribute9;
1264 l_PSG_rec.context := p_context;
1265 l_PSG_rec.created_by := p_created_by;
1266 l_PSG_rec.creation_date := p_creation_date;
1267 l_PSG_rec.last_updated_by := p_last_updated_by;
1268 l_PSG_rec.last_update_date := p_last_update_date;
1269 l_PSG_rec.last_update_login := p_last_update_login;
1270 l_PSG_rec.limits_enabled := p_limits_enabled;
1271 l_PSG_rec.lov_enabled := p_lov_enabled;
1272 l_PSG_rec.program_application_id := p_program_application_id;
1273 l_PSG_rec.program_id := p_program_id;
1274 l_PSG_rec.program_update_date := p_program_update_date;
1275 l_PSG_rec.pte_code := p_pte_code;
1276 l_PSG_rec.seeded_sourcing_method := p_seeded_sourcing_method;
1277 l_PSG_rec.segment_id := p_segment_id;
1278 l_PSG_rec.segment_level := p_segment_level;
1279 l_PSG_rec.segment_pte_id := p_segment_pte_id;
1280 l_PSG_rec.sourcing_enabled := p_sourcing_enabled;
1281 l_PSG_rec.sourcing_status := p_sourcing_status;
1282 l_PSG_rec.user_sourcing_method := p_user_sourcing_method;
1283
1284 -- Populate PSG table
1285
1286 l_PSG_tbl(1) := l_PSG_rec;
1287
1288 -- Call QP_Attr_Map_PVT.Lock_Attr_Mapping
1289
1290 QP_Attr_Map_PVT.Lock_Attr_Mapping
1291 ( p_api_version_number => 1.0
1292 , p_init_msg_list => FND_API.G_TRUE
1293 , x_return_status => l_return_status
1294 , x_msg_count => x_msg_count
1295 , x_msg_data => x_msg_data
1296 , p_PSG_tbl => l_PSG_tbl
1297 , x_PTE_rec => l_x_PTE_rec
1298 , x_RQT_tbl => l_x_RQT_tbl
1299 , x_SSC_tbl => l_x_SSC_tbl
1300 , x_PSG_tbl => l_x_PSG_tbl
1301 , x_SOU_tbl => l_x_SOU_tbl
1302 , x_FNA_tbl => l_x_FNA_tbl
1303 );
1304
1305 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1306
1307 -- Set DB flag and write record to cache.
1308
1309 l_x_PSG_rec.db_flag := FND_API.G_TRUE;
1310
1311 Write_PSG
1312 ( p_PSG_rec => l_x_PSG_rec
1313 , p_db_record => TRUE
1314 );
1315
1316 END IF;
1317
1318 -- Set return status.
1319
1320 x_return_status := l_return_status;
1321
1322 -- Get message count and data
1323
1324 OE_MSG_PUB.Count_And_Get
1325 ( p_count => x_msg_count
1326 , p_data => x_msg_data
1327 );
1328
1329
1330 EXCEPTION
1331
1332 WHEN OTHERS THEN
1333
1334 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1335 THEN
1336 OE_MSG_PUB.Add_Exc_Msg
1337 ( G_PKG_NAME
1338 , 'Lock_Row'
1339 );
1340 END IF;
1341
1342 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1343
1344 -- Get message count and data
1345
1346 OE_MSG_PUB.Count_And_Get
1347 ( p_count => x_msg_count
1348 , p_data => x_msg_data
1349 );
1350
1351
1352
1353 END Lock_Row;
1354
1355 -- Procedures maintaining PSG record cache.
1356
1357 PROCEDURE Write_PSG
1358 ( p_PSG_rec IN QP_Attr_Map_PUB.Psg_Rec_Type
1359 , p_db_record IN BOOLEAN := FALSE
1360 )
1361 IS
1362 BEGIN
1363
1364 g_PSG_rec := p_PSG_rec;
1365
1366 IF p_db_record THEN
1367
1368 g_db_PSG_rec := p_PSG_rec;
1369
1370 END IF;
1371
1372 END Write_Psg;
1373
1374 FUNCTION Get_PSG
1375 ( p_db_record IN BOOLEAN := FALSE
1376 , p_segment_pte_id IN NUMBER
1377 )
1378 RETURN QP_Attr_Map_PUB.Psg_Rec_Type
1379 IS
1380 BEGIN
1381
1382 IF p_segment_pte_id <> g_PSG_rec.segment_pte_id
1383 THEN
1384
1385 -- Query row from DB
1386
1387 g_PSG_rec := QP_Psg_Util.Query_Row
1388 ( p_segment_pte_id => p_segment_pte_id
1389 );
1390
1391 g_PSG_rec.db_flag := FND_API.G_TRUE;
1392
1393 -- Load DB record
1394
1395 g_db_PSG_rec := g_PSG_rec;
1396
1397 END IF;
1398
1399 IF p_db_record THEN
1400
1401 RETURN g_db_PSG_rec;
1402
1403 ELSE
1404
1405 RETURN g_PSG_rec;
1406
1407 END IF;
1408
1409 END Get_Psg;
1410
1411 PROCEDURE Clear_Psg
1412 IS
1413 BEGIN
1414
1415 g_PSG_rec := QP_Attr_Map_PUB.G_MISS_PSG_REC;
1416 g_db_PSG_rec := QP_Attr_Map_PUB.G_MISS_PSG_REC;
1417
1418 END Clear_Psg;
1419
1420 END QP_QP_Form_Psg;