DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_SOU

Source


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