DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_SOU_UTIL

Source


1 PACKAGE BODY QP_Sou_Util AS
2 /* $Header: QPXUSOUB.pls 120.1 2005/06/13 23:30:20 appldev  $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Sou_Util';
7 
8 --  Procedure Clear_Dependent_Attr
9 
10 PROCEDURE Clear_Dependent_Attr
11 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
12 ,   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
13 ,   p_old_SOU_rec                   IN  QP_Attr_Map_PUB.Sou_Rec_Type :=
14                                         QP_Attr_Map_PUB.G_MISS_SOU_REC
15 ,   x_SOU_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Rec_Type
16 )
17 IS
18 l_index                       NUMBER := 0;
19 l_src_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
20 l_dep_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
21 BEGIN
22 
23     --  Load out record
24 
25     x_SOU_rec := p_SOU_rec;
26 
27     --  If attr_id is missing compare old and new records and for
28     --  every changed attribute clear its dependent fields.
29 
30     IF p_attr_id = FND_API.G_MISS_NUM THEN
31 
32         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute1,p_old_SOU_rec.attribute1)
33         THEN
34             l_index := l_index + 1;
35             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE1;
36         END IF;
37 
38         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute10,p_old_SOU_rec.attribute10)
39         THEN
40             l_index := l_index + 1;
41             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE10;
42         END IF;
43 
44         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute11,p_old_SOU_rec.attribute11)
45         THEN
46             l_index := l_index + 1;
47             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE11;
48         END IF;
49 
50         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute12,p_old_SOU_rec.attribute12)
51         THEN
52             l_index := l_index + 1;
53             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE12;
54         END IF;
55 
56         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute13,p_old_SOU_rec.attribute13)
57         THEN
58             l_index := l_index + 1;
59             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE13;
60         END IF;
61 
62         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute14,p_old_SOU_rec.attribute14)
63         THEN
64             l_index := l_index + 1;
65             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE14;
66         END IF;
67 
68         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute15,p_old_SOU_rec.attribute15)
69         THEN
70             l_index := l_index + 1;
71             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE15;
72         END IF;
73 
74         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute2,p_old_SOU_rec.attribute2)
75         THEN
76             l_index := l_index + 1;
77             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE2;
78         END IF;
79 
80         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute3,p_old_SOU_rec.attribute3)
81         THEN
82             l_index := l_index + 1;
83             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE3;
84         END IF;
85 
86         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute4,p_old_SOU_rec.attribute4)
87         THEN
88             l_index := l_index + 1;
89             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE4;
90         END IF;
91 
92         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute5,p_old_SOU_rec.attribute5)
93         THEN
94             l_index := l_index + 1;
95             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE5;
96         END IF;
97 
98         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute6,p_old_SOU_rec.attribute6)
99         THEN
100             l_index := l_index + 1;
101             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE6;
102         END IF;
103 
104         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute7,p_old_SOU_rec.attribute7)
105         THEN
106             l_index := l_index + 1;
107             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE7;
108         END IF;
109 
110         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute8,p_old_SOU_rec.attribute8)
111         THEN
112             l_index := l_index + 1;
113             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE8;
114         END IF;
115 
116         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute9,p_old_SOU_rec.attribute9)
117         THEN
118             l_index := l_index + 1;
119             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE9;
120         END IF;
121 
122         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_id,p_old_SOU_rec.attribute_sourcing_id)
123         THEN
124             l_index := l_index + 1;
125             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE_SOURCING;
126         END IF;
127 
128         IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_level,p_old_SOU_rec.attribute_sourcing_level)
129         THEN
130             l_index := l_index + 1;
131             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE_SOURCING_LEVEL;
132         END IF;
133 
134         IF NOT QP_GLOBALS.Equal(p_SOU_rec.application_id,p_old_SOU_rec.application_id)
135         THEN
136             l_index := l_index + 1;
137             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_APPLICATION_ID;
138         END IF;
139 
140         IF NOT QP_GLOBALS.Equal(p_SOU_rec.context,p_old_SOU_rec.context)
141         THEN
142             l_index := l_index + 1;
143             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_CONTEXT;
144         END IF;
145 
146         IF NOT QP_GLOBALS.Equal(p_SOU_rec.created_by,p_old_SOU_rec.created_by)
147         THEN
148             l_index := l_index + 1;
149             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_CREATED_BY;
150         END IF;
151 
152         IF NOT QP_GLOBALS.Equal(p_SOU_rec.creation_date,p_old_SOU_rec.creation_date)
153         THEN
154             l_index := l_index + 1;
155             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_CREATION_DATE;
156         END IF;
157 
158         IF NOT QP_GLOBALS.Equal(p_SOU_rec.enabled_flag,p_old_SOU_rec.enabled_flag)
159         THEN
160             l_index := l_index + 1;
161             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ENABLED;
162         END IF;
163 
164         IF NOT QP_GLOBALS.Equal(p_SOU_rec.last_updated_by,p_old_SOU_rec.last_updated_by)
165         THEN
166             l_index := l_index + 1;
167             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_LAST_UPDATED_BY;
168         END IF;
169 
170         IF NOT QP_GLOBALS.Equal(p_SOU_rec.last_update_date,p_old_SOU_rec.last_update_date)
171         THEN
172             l_index := l_index + 1;
173             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_LAST_UPDATE_DATE;
174         END IF;
175 
176         IF NOT QP_GLOBALS.Equal(p_SOU_rec.last_update_login,p_old_SOU_rec.last_update_login)
177         THEN
178             l_index := l_index + 1;
179             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_LAST_UPDATE_LOGIN;
180         END IF;
181 
182         IF NOT QP_GLOBALS.Equal(p_SOU_rec.program_application_id,p_old_SOU_rec.program_application_id)
183         THEN
184             l_index := l_index + 1;
185             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_PROGRAM_APPLICATION;
186         END IF;
187 
188         IF NOT QP_GLOBALS.Equal(p_SOU_rec.program_id,p_old_SOU_rec.program_id)
189         THEN
190             l_index := l_index + 1;
191             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_PROGRAM;
192         END IF;
193 
194         IF NOT QP_GLOBALS.Equal(p_SOU_rec.program_update_date,p_old_SOU_rec.program_update_date)
195         THEN
196             l_index := l_index + 1;
197             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_PROGRAM_UPDATE_DATE;
198         END IF;
199 
200         IF NOT QP_GLOBALS.Equal(p_SOU_rec.request_type_code,p_old_SOU_rec.request_type_code)
201         THEN
202             l_index := l_index + 1;
203             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_REQUEST_TYPE;
204         END IF;
205 
206         IF NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_flag,p_old_SOU_rec.seeded_flag)
207         THEN
208             l_index := l_index + 1;
209             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEEDED;
210         END IF;
211 
212         IF NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_sourcing_type,p_old_SOU_rec.seeded_sourcing_type)
213         THEN
214             l_index := l_index + 1;
215             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEEDED_SOURCING_TYPE;
216         END IF;
217 
218         IF NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_value_string,p_old_SOU_rec.seeded_value_string)
219         THEN
220             l_index := l_index + 1;
221             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEEDED_VALUE_STRING;
222         END IF;
223 
224         IF NOT QP_GLOBALS.Equal(p_SOU_rec.segment_id,p_old_SOU_rec.segment_id)
225         THEN
226             l_index := l_index + 1;
227             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEGMENT;
228         END IF;
229 
230         IF NOT QP_GLOBALS.Equal(p_SOU_rec.user_sourcing_type,p_old_SOU_rec.user_sourcing_type)
231         THEN
232             l_index := l_index + 1;
233             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_USER_SOURCING_TYPE;
234         END IF;
235 
236         IF NOT QP_GLOBALS.Equal(p_SOU_rec.user_value_string,p_old_SOU_rec.user_value_string)
237         THEN
238             l_index := l_index + 1;
239             l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_USER_VALUE_STRING;
240         END IF;
241 
242     ELSIF p_attr_id = G_ATTRIBUTE1 THEN
243         l_index := l_index + 1;
244         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE1;
245     ELSIF p_attr_id = G_ATTRIBUTE10 THEN
246         l_index := l_index + 1;
247         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE10;
248     ELSIF p_attr_id = G_ATTRIBUTE11 THEN
249         l_index := l_index + 1;
250         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE11;
251     ELSIF p_attr_id = G_ATTRIBUTE12 THEN
252         l_index := l_index + 1;
253         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE12;
254     ELSIF p_attr_id = G_ATTRIBUTE13 THEN
255         l_index := l_index + 1;
256         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE13;
257     ELSIF p_attr_id = G_ATTRIBUTE14 THEN
258         l_index := l_index + 1;
259         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE14;
260     ELSIF p_attr_id = G_ATTRIBUTE15 THEN
261         l_index := l_index + 1;
262         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE15;
263     ELSIF p_attr_id = G_ATTRIBUTE2 THEN
264         l_index := l_index + 1;
265         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE2;
266     ELSIF p_attr_id = G_ATTRIBUTE3 THEN
267         l_index := l_index + 1;
268         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE3;
269     ELSIF p_attr_id = G_ATTRIBUTE4 THEN
270         l_index := l_index + 1;
271         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE4;
272     ELSIF p_attr_id = G_ATTRIBUTE5 THEN
273         l_index := l_index + 1;
274         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE5;
275     ELSIF p_attr_id = G_ATTRIBUTE6 THEN
276         l_index := l_index + 1;
277         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE6;
278     ELSIF p_attr_id = G_ATTRIBUTE7 THEN
279         l_index := l_index + 1;
280         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE7;
281     ELSIF p_attr_id = G_ATTRIBUTE8 THEN
282         l_index := l_index + 1;
283         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE8;
284     ELSIF p_attr_id = G_ATTRIBUTE9 THEN
285         l_index := l_index + 1;
286         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE9;
287     ELSIF p_attr_id = G_ATTRIBUTE_SOURCING THEN
288         l_index := l_index + 1;
289         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE_SOURCING;
290     ELSIF p_attr_id = G_ATTRIBUTE_SOURCING_LEVEL THEN
291         l_index := l_index + 1;
292         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ATTRIBUTE_SOURCING_LEVEL;
293     ELSIF p_attr_id = G_APPLICATION_ID THEN
294         l_index := l_index + 1;
295         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_APPLICATION_ID;
296     ELSIF p_attr_id = G_CONTEXT THEN
297         l_index := l_index + 1;
298         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_CONTEXT;
299     ELSIF p_attr_id = G_CREATED_BY THEN
300         l_index := l_index + 1;
301         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_CREATED_BY;
302     ELSIF p_attr_id = G_CREATION_DATE THEN
303         l_index := l_index + 1;
304         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_CREATION_DATE;
305     ELSIF p_attr_id = G_ENABLED THEN
306         l_index := l_index + 1;
307         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_ENABLED;
308     ELSIF p_attr_id = G_LAST_UPDATED_BY THEN
309         l_index := l_index + 1;
310         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_LAST_UPDATED_BY;
311     ELSIF p_attr_id = G_LAST_UPDATE_DATE THEN
312         l_index := l_index + 1;
313         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_LAST_UPDATE_DATE;
314     ELSIF p_attr_id = G_LAST_UPDATE_LOGIN THEN
315         l_index := l_index + 1;
316         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_LAST_UPDATE_LOGIN;
317     ELSIF p_attr_id = G_PROGRAM_APPLICATION THEN
318         l_index := l_index + 1;
319         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_PROGRAM_APPLICATION;
320     ELSIF p_attr_id = G_PROGRAM THEN
321         l_index := l_index + 1;
322         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_PROGRAM;
323     ELSIF p_attr_id = G_PROGRAM_UPDATE_DATE THEN
324         l_index := l_index + 1;
325         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_PROGRAM_UPDATE_DATE;
326     ELSIF p_attr_id = G_REQUEST_TYPE THEN
327         l_index := l_index + 1;
328         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_REQUEST_TYPE;
329     ELSIF p_attr_id = G_SEEDED THEN
330         l_index := l_index + 1;
331         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEEDED;
332     ELSIF p_attr_id = G_SEEDED_SOURCING_TYPE THEN
333         l_index := l_index + 1;
334         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEEDED_SOURCING_TYPE;
335     ELSIF p_attr_id = G_SEEDED_VALUE_STRING THEN
336         l_index := l_index + 1;
337         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEEDED_VALUE_STRING;
338     ELSIF p_attr_id = G_SEGMENT THEN
339         l_index := l_index + 1;
340         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_SEGMENT;
341     ELSIF p_attr_id = G_USER_SOURCING_TYPE THEN
342         l_index := l_index + 1;
343         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_USER_SOURCING_TYPE;
344     ELSIF p_attr_id = G_USER_VALUE_STRING THEN
345         l_index := l_index + 1;
346         l_src_attr_tbl(l_index) := QP_SOU_UTIL.G_USER_VALUE_STRING;
347     END IF;
348 
349 END Clear_Dependent_Attr;
350 
351 --  Procedure Apply_Attribute_Changes
352 
353 PROCEDURE Apply_Attribute_Changes
354 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
355 ,   p_old_SOU_rec                   IN  QP_Attr_Map_PUB.Sou_Rec_Type :=
356                                         QP_Attr_Map_PUB.G_MISS_SOU_REC
357 ,   x_SOU_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Rec_Type
358 )
359 IS
360 BEGIN
361 
362     --  Load out record
363 
364     x_SOU_rec := p_SOU_rec;
365 
366     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute1,p_old_SOU_rec.attribute1)
367     THEN
368         NULL;
369     END IF;
370 
371     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute10,p_old_SOU_rec.attribute10)
372     THEN
373         NULL;
374     END IF;
375 
376     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute11,p_old_SOU_rec.attribute11)
377     THEN
378         NULL;
379     END IF;
380 
381     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute12,p_old_SOU_rec.attribute12)
382     THEN
383         NULL;
384     END IF;
385 
386     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute13,p_old_SOU_rec.attribute13)
387     THEN
388         NULL;
389     END IF;
390 
391     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute14,p_old_SOU_rec.attribute14)
392     THEN
393         NULL;
394     END IF;
395 
396     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute15,p_old_SOU_rec.attribute15)
397     THEN
398         NULL;
399     END IF;
400 
401     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute2,p_old_SOU_rec.attribute2)
402     THEN
403         NULL;
404     END IF;
405 
406     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute3,p_old_SOU_rec.attribute3)
407     THEN
408         NULL;
409     END IF;
410 
411     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute4,p_old_SOU_rec.attribute4)
412     THEN
413         NULL;
414     END IF;
415 
416     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute5,p_old_SOU_rec.attribute5)
417     THEN
418         NULL;
419     END IF;
420 
421     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute6,p_old_SOU_rec.attribute6)
422     THEN
423         NULL;
424     END IF;
425 
426     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute7,p_old_SOU_rec.attribute7)
427     THEN
428         NULL;
429     END IF;
430 
431     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute8,p_old_SOU_rec.attribute8)
432     THEN
433         NULL;
434     END IF;
435 
436     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute9,p_old_SOU_rec.attribute9)
437     THEN
438         NULL;
439     END IF;
440 
441     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_id,p_old_SOU_rec.attribute_sourcing_id)
442     THEN
443         NULL;
444     END IF;
445 
446     IF NOT QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_level,p_old_SOU_rec.attribute_sourcing_level)
447     THEN
448         NULL;
449     END IF;
450 
451     IF NOT QP_GLOBALS.Equal(p_SOU_rec.application_id,p_old_SOU_rec.application_id)
452     THEN
453         NULL;
454     END IF;
455 
456 
457     IF NOT QP_GLOBALS.Equal(p_SOU_rec.context,p_old_SOU_rec.context)
458     THEN
459         NULL;
460     END IF;
461 
462     IF NOT QP_GLOBALS.Equal(p_SOU_rec.created_by,p_old_SOU_rec.created_by)
463     THEN
464         NULL;
465     END IF;
466 
467     IF NOT QP_GLOBALS.Equal(p_SOU_rec.creation_date,p_old_SOU_rec.creation_date)
468     THEN
469         NULL;
470     END IF;
471 
472     IF NOT QP_GLOBALS.Equal(p_SOU_rec.enabled_flag,p_old_SOU_rec.enabled_flag)
473     THEN
474         NULL;
475     END IF;
476 
477     IF NOT QP_GLOBALS.Equal(p_SOU_rec.last_updated_by,p_old_SOU_rec.last_updated_by)
478     THEN
479         NULL;
480     END IF;
481 
482     IF NOT QP_GLOBALS.Equal(p_SOU_rec.last_update_date,p_old_SOU_rec.last_update_date)
483     THEN
484         NULL;
485     END IF;
486 
487     IF NOT QP_GLOBALS.Equal(p_SOU_rec.last_update_login,p_old_SOU_rec.last_update_login)
488     THEN
489         NULL;
490     END IF;
491 
492     IF NOT QP_GLOBALS.Equal(p_SOU_rec.program_application_id,p_old_SOU_rec.program_application_id)
493     THEN
494         NULL;
495     END IF;
496 
497     IF NOT QP_GLOBALS.Equal(p_SOU_rec.program_id,p_old_SOU_rec.program_id)
498     THEN
499         NULL;
500     END IF;
501 
502     IF NOT QP_GLOBALS.Equal(p_SOU_rec.program_update_date,p_old_SOU_rec.program_update_date)
503     THEN
504         NULL;
505     END IF;
506 
507     IF NOT QP_GLOBALS.Equal(p_SOU_rec.request_type_code,p_old_SOU_rec.request_type_code)
508     THEN
509         NULL;
510     END IF;
511 
512     IF NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_flag,p_old_SOU_rec.seeded_flag)
513     THEN
514         NULL;
515     END IF;
516 
517     IF NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_sourcing_type,p_old_SOU_rec.seeded_sourcing_type)
518     THEN
519         NULL;
520     END IF;
521 
522     IF NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_value_string,p_old_SOU_rec.seeded_value_string)
523     THEN
524         NULL;
525     END IF;
526 
527     IF NOT QP_GLOBALS.Equal(p_SOU_rec.segment_id,p_old_SOU_rec.segment_id)
528     THEN
529         NULL;
530     END IF;
531 
532     IF NOT QP_GLOBALS.Equal(p_SOU_rec.user_sourcing_type,p_old_SOU_rec.user_sourcing_type)
533     THEN
534         NULL;
535     END IF;
536 
537     IF NOT QP_GLOBALS.Equal(p_SOU_rec.user_value_string,p_old_SOU_rec.user_value_string)
538     THEN
539         NULL;
540     END IF;
541 
542 END Apply_Attribute_Changes;
543 
544 --  Function Complete_Record
545 
546 FUNCTION Complete_Record
547 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
548 ,   p_old_SOU_rec                   IN  QP_Attr_Map_PUB.Sou_Rec_Type
549 ) RETURN QP_Attr_Map_PUB.Sou_Rec_Type
550 IS
551 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type := p_SOU_rec;
552 BEGIN
553 
554     IF l_SOU_rec.attribute1 = FND_API.G_MISS_CHAR THEN
555         l_SOU_rec.attribute1 := p_old_SOU_rec.attribute1;
556     END IF;
557 
558     IF l_SOU_rec.attribute10 = FND_API.G_MISS_CHAR THEN
559         l_SOU_rec.attribute10 := p_old_SOU_rec.attribute10;
560     END IF;
561 
562     IF l_SOU_rec.attribute11 = FND_API.G_MISS_CHAR THEN
563         l_SOU_rec.attribute11 := p_old_SOU_rec.attribute11;
564     END IF;
565 
566     IF l_SOU_rec.attribute12 = FND_API.G_MISS_CHAR THEN
567         l_SOU_rec.attribute12 := p_old_SOU_rec.attribute12;
568     END IF;
569 
570     IF l_SOU_rec.attribute13 = FND_API.G_MISS_CHAR THEN
571         l_SOU_rec.attribute13 := p_old_SOU_rec.attribute13;
572     END IF;
573 
574     IF l_SOU_rec.attribute14 = FND_API.G_MISS_CHAR THEN
575         l_SOU_rec.attribute14 := p_old_SOU_rec.attribute14;
576     END IF;
577 
578     IF l_SOU_rec.attribute15 = FND_API.G_MISS_CHAR THEN
579         l_SOU_rec.attribute15 := p_old_SOU_rec.attribute15;
580     END IF;
581 
582     IF l_SOU_rec.attribute2 = FND_API.G_MISS_CHAR THEN
583         l_SOU_rec.attribute2 := p_old_SOU_rec.attribute2;
584     END IF;
585 
586     IF l_SOU_rec.attribute3 = FND_API.G_MISS_CHAR THEN
587         l_SOU_rec.attribute3 := p_old_SOU_rec.attribute3;
588     END IF;
589 
590     IF l_SOU_rec.attribute4 = FND_API.G_MISS_CHAR THEN
591         l_SOU_rec.attribute4 := p_old_SOU_rec.attribute4;
592     END IF;
593 
594     IF l_SOU_rec.attribute5 = FND_API.G_MISS_CHAR THEN
595         l_SOU_rec.attribute5 := p_old_SOU_rec.attribute5;
596     END IF;
597 
598     IF l_SOU_rec.attribute6 = FND_API.G_MISS_CHAR THEN
599         l_SOU_rec.attribute6 := p_old_SOU_rec.attribute6;
600     END IF;
601 
602     IF l_SOU_rec.attribute7 = FND_API.G_MISS_CHAR THEN
603         l_SOU_rec.attribute7 := p_old_SOU_rec.attribute7;
604     END IF;
605 
606     IF l_SOU_rec.attribute8 = FND_API.G_MISS_CHAR THEN
607         l_SOU_rec.attribute8 := p_old_SOU_rec.attribute8;
608     END IF;
609 
610     IF l_SOU_rec.attribute9 = FND_API.G_MISS_CHAR THEN
611         l_SOU_rec.attribute9 := p_old_SOU_rec.attribute9;
612     END IF;
613 
614     IF l_SOU_rec.attribute_sourcing_id = FND_API.G_MISS_NUM THEN
615         l_SOU_rec.attribute_sourcing_id := p_old_SOU_rec.attribute_sourcing_id;
616     END IF;
617 
618     IF l_SOU_rec.attribute_sourcing_level = FND_API.G_MISS_CHAR THEN
619         l_SOU_rec.attribute_sourcing_level := p_old_SOU_rec.attribute_sourcing_level;
620     END IF;
621 
622     IF l_SOU_rec.application_id = FND_API.G_MISS_NUM THEN
623         l_SOU_rec.application_id := p_old_SOU_rec.application_id;
624     END IF;
625 
626     IF l_SOU_rec.context = FND_API.G_MISS_CHAR THEN
627         l_SOU_rec.context := p_old_SOU_rec.context;
628     END IF;
629 
630     IF l_SOU_rec.created_by = FND_API.G_MISS_NUM THEN
631         l_SOU_rec.created_by := p_old_SOU_rec.created_by;
632     END IF;
633 
634     IF l_SOU_rec.creation_date = FND_API.G_MISS_DATE THEN
635         l_SOU_rec.creation_date := p_old_SOU_rec.creation_date;
636     END IF;
637 
638     IF l_SOU_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
639         l_SOU_rec.enabled_flag := p_old_SOU_rec.enabled_flag;
640     END IF;
641 
642     IF l_SOU_rec.last_updated_by = FND_API.G_MISS_NUM THEN
643         l_SOU_rec.last_updated_by := p_old_SOU_rec.last_updated_by;
644     END IF;
645 
646     IF l_SOU_rec.last_update_date = FND_API.G_MISS_DATE THEN
647         l_SOU_rec.last_update_date := p_old_SOU_rec.last_update_date;
648     END IF;
649 
650     IF l_SOU_rec.last_update_login = FND_API.G_MISS_NUM THEN
651         l_SOU_rec.last_update_login := p_old_SOU_rec.last_update_login;
652     END IF;
653 
654     IF l_SOU_rec.program_application_id = FND_API.G_MISS_NUM THEN
655         l_SOU_rec.program_application_id := p_old_SOU_rec.program_application_id;
656     END IF;
657 
658     IF l_SOU_rec.program_id = FND_API.G_MISS_NUM THEN
659         l_SOU_rec.program_id := p_old_SOU_rec.program_id;
660     END IF;
661 
662     IF l_SOU_rec.program_update_date = FND_API.G_MISS_DATE THEN
663         l_SOU_rec.program_update_date := p_old_SOU_rec.program_update_date;
664     END IF;
665 
666     IF l_SOU_rec.request_type_code = FND_API.G_MISS_CHAR THEN
667         l_SOU_rec.request_type_code := p_old_SOU_rec.request_type_code;
668     END IF;
669 
670     IF l_SOU_rec.seeded_flag = FND_API.G_MISS_CHAR THEN
671         l_SOU_rec.seeded_flag := p_old_SOU_rec.seeded_flag;
672     END IF;
673 
674     IF l_SOU_rec.seeded_sourcing_type = FND_API.G_MISS_CHAR THEN
675         l_SOU_rec.seeded_sourcing_type := p_old_SOU_rec.seeded_sourcing_type;
676     END IF;
677 
678     IF l_SOU_rec.seeded_value_string = FND_API.G_MISS_CHAR THEN
679         l_SOU_rec.seeded_value_string := p_old_SOU_rec.seeded_value_string;
680     END IF;
681 
682     IF l_SOU_rec.segment_id = FND_API.G_MISS_NUM THEN
683         l_SOU_rec.segment_id := p_old_SOU_rec.segment_id;
684     END IF;
685 
686     IF l_SOU_rec.user_sourcing_type = FND_API.G_MISS_CHAR THEN
687         l_SOU_rec.user_sourcing_type := p_old_SOU_rec.user_sourcing_type;
688     END IF;
689 
690     IF l_SOU_rec.user_value_string = FND_API.G_MISS_CHAR THEN
691         l_SOU_rec.user_value_string := p_old_SOU_rec.user_value_string;
692     END IF;
693 
694     RETURN l_SOU_rec;
695 
696 END Complete_Record;
697 
698 --  Function Convert_Miss_To_Null
699 
700 FUNCTION Convert_Miss_To_Null
701 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
702 ) RETURN QP_Attr_Map_PUB.Sou_Rec_Type
703 IS
704 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type := p_SOU_rec;
705 BEGIN
706 
707     IF l_SOU_rec.attribute1 = FND_API.G_MISS_CHAR THEN
708         l_SOU_rec.attribute1 := NULL;
709     END IF;
710 
711     IF l_SOU_rec.attribute10 = FND_API.G_MISS_CHAR THEN
712         l_SOU_rec.attribute10 := NULL;
713     END IF;
714 
715     IF l_SOU_rec.attribute11 = FND_API.G_MISS_CHAR THEN
716         l_SOU_rec.attribute11 := NULL;
717     END IF;
718 
719     IF l_SOU_rec.attribute12 = FND_API.G_MISS_CHAR THEN
720         l_SOU_rec.attribute12 := NULL;
721     END IF;
722 
723     IF l_SOU_rec.attribute13 = FND_API.G_MISS_CHAR THEN
724         l_SOU_rec.attribute13 := NULL;
725     END IF;
726 
727     IF l_SOU_rec.attribute14 = FND_API.G_MISS_CHAR THEN
728         l_SOU_rec.attribute14 := NULL;
729     END IF;
730 
731     IF l_SOU_rec.attribute15 = FND_API.G_MISS_CHAR THEN
732         l_SOU_rec.attribute15 := NULL;
733     END IF;
734 
735     IF l_SOU_rec.attribute2 = FND_API.G_MISS_CHAR THEN
736         l_SOU_rec.attribute2 := NULL;
737     END IF;
738 
739     IF l_SOU_rec.attribute3 = FND_API.G_MISS_CHAR THEN
740         l_SOU_rec.attribute3 := NULL;
741     END IF;
742 
743     IF l_SOU_rec.attribute4 = FND_API.G_MISS_CHAR THEN
744         l_SOU_rec.attribute4 := NULL;
745     END IF;
746 
747     IF l_SOU_rec.attribute5 = FND_API.G_MISS_CHAR THEN
748         l_SOU_rec.attribute5 := NULL;
749     END IF;
750 
751     IF l_SOU_rec.attribute6 = FND_API.G_MISS_CHAR THEN
752         l_SOU_rec.attribute6 := NULL;
753     END IF;
754 
755     IF l_SOU_rec.attribute7 = FND_API.G_MISS_CHAR THEN
756         l_SOU_rec.attribute7 := NULL;
757     END IF;
758 
759     IF l_SOU_rec.attribute8 = FND_API.G_MISS_CHAR THEN
760         l_SOU_rec.attribute8 := NULL;
761     END IF;
762 
763     IF l_SOU_rec.attribute9 = FND_API.G_MISS_CHAR THEN
764         l_SOU_rec.attribute9 := NULL;
765     END IF;
766 
767     IF l_SOU_rec.attribute_sourcing_id = FND_API.G_MISS_NUM THEN
768         l_SOU_rec.attribute_sourcing_id := NULL;
769     END IF;
770 
771     IF l_SOU_rec.attribute_sourcing_level = FND_API.G_MISS_CHAR THEN
772         l_SOU_rec.attribute_sourcing_level := NULL;
773     END IF;
774 
775     IF l_SOU_rec.application_id = FND_API.G_MISS_NUM THEN
776         l_SOU_rec.application_id := NULL;
777     END IF;
778 
779     IF l_SOU_rec.context = FND_API.G_MISS_CHAR THEN
780         l_SOU_rec.context := NULL;
781     END IF;
782 
783     IF l_SOU_rec.created_by = FND_API.G_MISS_NUM THEN
784         l_SOU_rec.created_by := NULL;
785     END IF;
786 
787     IF l_SOU_rec.creation_date = FND_API.G_MISS_DATE THEN
788         l_SOU_rec.creation_date := NULL;
789     END IF;
790 
791     IF l_SOU_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
792         l_SOU_rec.enabled_flag := NULL;
793     END IF;
794 
795     IF l_SOU_rec.last_updated_by = FND_API.G_MISS_NUM THEN
796         l_SOU_rec.last_updated_by := NULL;
797     END IF;
798 
799     IF l_SOU_rec.last_update_date = FND_API.G_MISS_DATE THEN
800         l_SOU_rec.last_update_date := NULL;
801     END IF;
802 
803     IF l_SOU_rec.last_update_login = FND_API.G_MISS_NUM THEN
804         l_SOU_rec.last_update_login := NULL;
805     END IF;
806 
807     IF l_SOU_rec.program_application_id = FND_API.G_MISS_NUM THEN
808         l_SOU_rec.program_application_id := NULL;
809     END IF;
810 
811     IF l_SOU_rec.program_id = FND_API.G_MISS_NUM THEN
812         l_SOU_rec.program_id := NULL;
813     END IF;
814 
815     IF l_SOU_rec.program_update_date = FND_API.G_MISS_DATE THEN
816         l_SOU_rec.program_update_date := NULL;
817     END IF;
818 
819     IF l_SOU_rec.request_type_code = FND_API.G_MISS_CHAR THEN
820         l_SOU_rec.request_type_code := NULL;
821     END IF;
822 
823     IF l_SOU_rec.seeded_flag = FND_API.G_MISS_CHAR THEN
824         l_SOU_rec.seeded_flag := NULL;
825     END IF;
826 
827     IF l_SOU_rec.seeded_sourcing_type = FND_API.G_MISS_CHAR THEN
828         l_SOU_rec.seeded_sourcing_type := NULL;
829     END IF;
830 
831     IF l_SOU_rec.seeded_value_string = FND_API.G_MISS_CHAR THEN
832         l_SOU_rec.seeded_value_string := NULL;
833     END IF;
834 
835     IF l_SOU_rec.segment_id = FND_API.G_MISS_NUM THEN
836         l_SOU_rec.segment_id := NULL;
837     END IF;
838 
839     IF l_SOU_rec.user_sourcing_type = FND_API.G_MISS_CHAR THEN
840         l_SOU_rec.user_sourcing_type := NULL;
841     END IF;
842 
843     IF l_SOU_rec.user_value_string = FND_API.G_MISS_CHAR THEN
844         l_SOU_rec.user_value_string := NULL;
845     END IF;
846 
847     RETURN l_SOU_rec;
848 
849 END Convert_Miss_To_Null;
850 
851 --  Procedure Update_Row
852 
853 PROCEDURE Update_Row
854 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
855 )
856 IS
857 BEGIN
858 
859     UPDATE  QP_ATTRIBUTE_SOURCING
860     SET     ATTRIBUTE1                     = p_SOU_rec.attribute1
861     ,       ATTRIBUTE10                    = p_SOU_rec.attribute10
862     ,       ATTRIBUTE11                    = p_SOU_rec.attribute11
863     ,       ATTRIBUTE12                    = p_SOU_rec.attribute12
864     ,       ATTRIBUTE13                    = p_SOU_rec.attribute13
865     ,       ATTRIBUTE14                    = p_SOU_rec.attribute14
866     ,       ATTRIBUTE15                    = p_SOU_rec.attribute15
867     ,       ATTRIBUTE2                     = p_SOU_rec.attribute2
868     ,       ATTRIBUTE3                     = p_SOU_rec.attribute3
869     ,       ATTRIBUTE4                     = p_SOU_rec.attribute4
870     ,       ATTRIBUTE5                     = p_SOU_rec.attribute5
871     ,       ATTRIBUTE6                     = p_SOU_rec.attribute6
872     ,       ATTRIBUTE7                     = p_SOU_rec.attribute7
873     ,       ATTRIBUTE8                     = p_SOU_rec.attribute8
874     ,       ATTRIBUTE9                     = p_SOU_rec.attribute9
875     ,       ATTRIBUTE_SOURCING_ID          = p_SOU_rec.attribute_sourcing_id
876     ,       ATTRIBUTE_SOURCING_LEVEL       = p_SOU_rec.attribute_sourcing_level
877     ,       APPLICATION_ID                 = p_SOU_rec.application_id
878     ,       CONTEXT                        = p_SOU_rec.context
879     ,       CREATED_BY                     = p_SOU_rec.created_by
880     ,       CREATION_DATE                  = p_SOU_rec.creation_date
881     ,       ENABLED_FLAG                   = p_SOU_rec.enabled_flag
882     ,       LAST_UPDATED_BY                = p_SOU_rec.last_updated_by
883     ,       LAST_UPDATE_DATE               = p_SOU_rec.last_update_date
884     ,       LAST_UPDATE_LOGIN              = p_SOU_rec.last_update_login
885     ,       PROGRAM_APPLICATION_ID         = p_SOU_rec.program_application_id
886     ,       PROGRAM_ID                     = p_SOU_rec.program_id
887     ,       PROGRAM_UPDATE_DATE            = p_SOU_rec.program_update_date
888     ,       REQUEST_TYPE_CODE              = p_SOU_rec.request_type_code
889     ,       SEEDED_FLAG                    = p_SOU_rec.seeded_flag
890     ,       SEEDED_SOURCING_TYPE           = p_SOU_rec.seeded_sourcing_type
891     ,       SEEDED_VALUE_STRING            = p_SOU_rec.seeded_value_string
892     ,       SEGMENT_ID                     = p_SOU_rec.segment_id
893     ,       USER_SOURCING_TYPE             = p_SOU_rec.user_sourcing_type
894     ,       USER_VALUE_STRING              = p_SOU_rec.user_value_string
895     WHERE   ATTRIBUTE_SOURCING_ID = p_SOU_rec.attribute_sourcing_id
896     ;
897 
898 EXCEPTION
899 
900     WHEN OTHERS THEN
901 
902         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
903         THEN
904             OE_MSG_PUB.Add_Exc_Msg
905             (   G_PKG_NAME
906             ,   'Update_Row'
907             );
908         END IF;
909 
910         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
911 
912 END Update_Row;
913 
914 --  Procedure Insert_Row
915 
916 PROCEDURE Insert_Row
917 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
918 )
919 IS
920 BEGIN
921 
922     INSERT  INTO QP_ATTRIBUTE_SOURCING
923     (       ATTRIBUTE1
924     ,       ATTRIBUTE10
925     ,       ATTRIBUTE11
926     ,       ATTRIBUTE12
927     ,       ATTRIBUTE13
928     ,       ATTRIBUTE14
929     ,       ATTRIBUTE15
930     ,       ATTRIBUTE2
931     ,       ATTRIBUTE3
932     ,       ATTRIBUTE4
933     ,       ATTRIBUTE5
934     ,       ATTRIBUTE6
935     ,       ATTRIBUTE7
936     ,       ATTRIBUTE8
937     ,       ATTRIBUTE9
938     ,       ATTRIBUTE_SOURCING_ID
939     ,       ATTRIBUTE_SOURCING_LEVEL
940     ,       APPLICATION_ID
941     ,       CONTEXT
942     ,       CREATED_BY
943     ,       CREATION_DATE
944     ,       ENABLED_FLAG
945     ,       LAST_UPDATED_BY
946     ,       LAST_UPDATE_DATE
947     ,       LAST_UPDATE_LOGIN
948     ,       PROGRAM_APPLICATION_ID
949     ,       PROGRAM_ID
950     ,       PROGRAM_UPDATE_DATE
951     ,       REQUEST_TYPE_CODE
952     ,       SEEDED_FLAG
953     ,       SEEDED_SOURCING_TYPE
954     ,       SEEDED_VALUE_STRING
955     ,       SEGMENT_ID
956     ,       USER_SOURCING_TYPE
957     ,       USER_VALUE_STRING
958     )
959     VALUES
960     (       p_SOU_rec.attribute1
961     ,       p_SOU_rec.attribute10
962     ,       p_SOU_rec.attribute11
963     ,       p_SOU_rec.attribute12
964     ,       p_SOU_rec.attribute13
965     ,       p_SOU_rec.attribute14
966     ,       p_SOU_rec.attribute15
967     ,       p_SOU_rec.attribute2
968     ,       p_SOU_rec.attribute3
969     ,       p_SOU_rec.attribute4
970     ,       p_SOU_rec.attribute5
971     ,       p_SOU_rec.attribute6
972     ,       p_SOU_rec.attribute7
973     ,       p_SOU_rec.attribute8
974     ,       p_SOU_rec.attribute9
975     ,       p_SOU_rec.attribute_sourcing_id
976     ,       p_SOU_rec.attribute_sourcing_level
977     ,       p_SOU_rec.application_id
978     ,       p_SOU_rec.context
979     ,       p_SOU_rec.created_by
980     ,       p_SOU_rec.creation_date
981     ,       p_SOU_rec.enabled_flag
982     ,       p_SOU_rec.last_updated_by
983     ,       p_SOU_rec.last_update_date
984     ,       p_SOU_rec.last_update_login
985     ,       p_SOU_rec.program_application_id
986     ,       p_SOU_rec.program_id
987     ,       p_SOU_rec.program_update_date
988     ,       p_SOU_rec.request_type_code
989     ,       p_SOU_rec.seeded_flag
990     ,       p_SOU_rec.seeded_sourcing_type
991     ,       p_SOU_rec.seeded_value_string
992     ,       p_SOU_rec.segment_id
993     ,       p_SOU_rec.user_sourcing_type
994     ,       p_SOU_rec.user_value_string
995     );
996 
997 EXCEPTION
998 
999     WHEN OTHERS THEN
1000 
1001         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1002         THEN
1003             OE_MSG_PUB.Add_Exc_Msg
1004             (   G_PKG_NAME
1005             ,   'Insert_Row'
1006             );
1007         END IF;
1008 
1009         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1010 
1011 END Insert_Row;
1012 
1013 --  Procedure Delete_Row
1014 
1015 PROCEDURE Delete_Row
1016 (   p_attribute_sourcing_id         IN  NUMBER
1017 )
1018 IS
1019 BEGIN
1020 
1021     DELETE  FROM QP_ATTRIBUTE_SOURCING
1022     WHERE   ATTRIBUTE_SOURCING_ID = p_attribute_sourcing_id
1023     ;
1024 
1025 EXCEPTION
1026 
1027     WHEN OTHERS THEN
1028 
1029         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1030         THEN
1031             OE_MSG_PUB.Add_Exc_Msg
1032             (   G_PKG_NAME
1033             ,   'Delete_Row'
1034             );
1035         END IF;
1036 
1037         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1038 
1039 END Delete_Row;
1040 
1041 --  Function Query_Row
1042 
1043 FUNCTION Query_Row
1044 (   p_attribute_sourcing_id         IN  NUMBER
1045 ) RETURN QP_Attr_Map_PUB.Sou_Rec_Type
1046 IS
1047 BEGIN
1048 
1049     RETURN Query_Rows
1050         (   p_attribute_sourcing_id       => p_attribute_sourcing_id
1051         )(1);
1052 
1053 END Query_Row;
1054 
1055 --  Function Query_Rows
1056 
1057 --
1058 
1059 FUNCTION Query_Rows
1060 (   p_attribute_sourcing_id         IN  NUMBER :=
1061                                         FND_API.G_MISS_NUM
1062 ,   p_segment_pte_id                IN  NUMBER :=
1063                                         FND_API.G_MISS_NUM
1064 ) RETURN QP_Attr_Map_PUB.Sou_Tbl_Type
1065 IS
1066 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
1067 l_SOU_tbl                     QP_Attr_Map_PUB.Sou_Tbl_Type;
1068 
1069 CURSOR l_SOU_csr IS
1070     SELECT  ATTRIBUTE1
1071     ,       ATTRIBUTE10
1072     ,       ATTRIBUTE11
1073     ,       ATTRIBUTE12
1074     ,       ATTRIBUTE13
1075     ,       ATTRIBUTE14
1076     ,       ATTRIBUTE15
1077     ,       ATTRIBUTE2
1078     ,       ATTRIBUTE3
1079     ,       ATTRIBUTE4
1080     ,       ATTRIBUTE5
1081     ,       ATTRIBUTE6
1082     ,       ATTRIBUTE7
1083     ,       ATTRIBUTE8
1084     ,       ATTRIBUTE9
1085     ,       ATTRIBUTE_SOURCING_ID
1086     ,       ATTRIBUTE_SOURCING_LEVEL
1087     ,       APPLICATION_ID
1088     ,       CONTEXT
1089     ,       CREATED_BY
1090     ,       CREATION_DATE
1091     ,       ENABLED_FLAG
1092     ,       LAST_UPDATED_BY
1093     ,       LAST_UPDATE_DATE
1094     ,       LAST_UPDATE_LOGIN
1095     ,       PROGRAM_APPLICATION_ID
1096     ,       PROGRAM_ID
1097     ,       PROGRAM_UPDATE_DATE
1098     ,       REQUEST_TYPE_CODE
1099     ,       SEEDED_FLAG
1100     ,       SEEDED_SOURCING_TYPE
1101     ,       SEEDED_VALUE_STRING
1102     ,       SEGMENT_ID
1103     ,       USER_SOURCING_TYPE
1104     ,       USER_VALUE_STRING
1105     FROM    QP_ATTRIBUTE_SOURCING
1106     WHERE ( ATTRIBUTE_SOURCING_ID = p_attribute_sourcing_id
1107     );
1108     --**OR (    SEGMENT_PTE_ID = p_segment_pte_id
1109     --**);
1110 
1111 BEGIN
1112 
1113     IF
1114     (p_attribute_sourcing_id IS NOT NULL
1115      AND
1116      p_attribute_sourcing_id <> FND_API.G_MISS_NUM)
1117     AND
1118     (p_segment_pte_id IS NOT NULL
1119      AND
1120      p_segment_pte_id <> FND_API.G_MISS_NUM)
1121     THEN
1122             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1123             THEN
1124                 OE_MSG_PUB.Add_Exc_Msg
1125                 (   G_PKG_NAME
1126                 ,   'Query Rows'
1127                 ,   'Keys are mutually exclusive: attribute_sourcing_id = '|| p_attribute_sourcing_id || ', segment_pte_id = '|| p_segment_pte_id
1128                 );
1129             END IF;
1130 
1131         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1132 
1133     END IF;
1134 
1135 
1136     --  Loop over fetched records
1137 
1138     FOR l_implicit_rec IN l_SOU_csr LOOP
1139 
1140         l_SOU_rec.attribute1           := l_implicit_rec.ATTRIBUTE1;
1141         l_SOU_rec.attribute10          := l_implicit_rec.ATTRIBUTE10;
1142         l_SOU_rec.attribute11          := l_implicit_rec.ATTRIBUTE11;
1143         l_SOU_rec.attribute12          := l_implicit_rec.ATTRIBUTE12;
1144         l_SOU_rec.attribute13          := l_implicit_rec.ATTRIBUTE13;
1145         l_SOU_rec.attribute14          := l_implicit_rec.ATTRIBUTE14;
1146         l_SOU_rec.attribute15          := l_implicit_rec.ATTRIBUTE15;
1147         l_SOU_rec.attribute2           := l_implicit_rec.ATTRIBUTE2;
1148         l_SOU_rec.attribute3           := l_implicit_rec.ATTRIBUTE3;
1149         l_SOU_rec.attribute4           := l_implicit_rec.ATTRIBUTE4;
1150         l_SOU_rec.attribute5           := l_implicit_rec.ATTRIBUTE5;
1151         l_SOU_rec.attribute6           := l_implicit_rec.ATTRIBUTE6;
1152         l_SOU_rec.attribute7           := l_implicit_rec.ATTRIBUTE7;
1153         l_SOU_rec.attribute8           := l_implicit_rec.ATTRIBUTE8;
1154         l_SOU_rec.attribute9           := l_implicit_rec.ATTRIBUTE9;
1155         l_SOU_rec.attribute_sourcing_id := l_implicit_rec.ATTRIBUTE_SOURCING_ID;
1156         l_SOU_rec.attribute_sourcing_level := l_implicit_rec.ATTRIBUTE_SOURCING_LEVEL;
1157         l_SOU_rec.application_id       := l_implicit_rec.APPLICATION_ID;
1158         l_SOU_rec.context              := l_implicit_rec.CONTEXT;
1159         l_SOU_rec.created_by           := l_implicit_rec.CREATED_BY;
1160         l_SOU_rec.creation_date        := l_implicit_rec.CREATION_DATE;
1161         l_SOU_rec.enabled_flag         := l_implicit_rec.ENABLED_FLAG;
1162         l_SOU_rec.last_updated_by      := l_implicit_rec.LAST_UPDATED_BY;
1163         l_SOU_rec.last_update_date     := l_implicit_rec.LAST_UPDATE_DATE;
1164         l_SOU_rec.last_update_login    := l_implicit_rec.LAST_UPDATE_LOGIN;
1165         l_SOU_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
1166         l_SOU_rec.program_id           := l_implicit_rec.PROGRAM_ID;
1167         l_SOU_rec.program_update_date  := l_implicit_rec.PROGRAM_UPDATE_DATE;
1168         l_SOU_rec.request_type_code    := l_implicit_rec.REQUEST_TYPE_CODE;
1169         l_SOU_rec.seeded_flag          := l_implicit_rec.SEEDED_FLAG;
1170         l_SOU_rec.seeded_sourcing_type := l_implicit_rec.SEEDED_SOURCING_TYPE;
1171         l_SOU_rec.seeded_value_string  := l_implicit_rec.SEEDED_VALUE_STRING;
1172         l_SOU_rec.segment_id           := l_implicit_rec.SEGMENT_ID;
1173         l_SOU_rec.user_sourcing_type   := l_implicit_rec.USER_SOURCING_TYPE;
1174         l_SOU_rec.user_value_string    := l_implicit_rec.USER_VALUE_STRING;
1175 
1176         l_SOU_tbl(l_SOU_tbl.COUNT + 1) := l_SOU_rec;
1177 
1178     END LOOP;
1179 
1180 
1181     --  PK sent and no rows found
1182 
1183     IF
1184     (p_attribute_sourcing_id IS NOT NULL
1185      AND
1186      p_attribute_sourcing_id <> FND_API.G_MISS_NUM)
1187     AND
1188     (l_SOU_tbl.COUNT = 0)
1189     THEN
1190         RAISE NO_DATA_FOUND;
1191     END IF;
1192 
1193 
1194     --  Return fetched table
1195 
1196     RETURN l_SOU_tbl;
1197 
1198 EXCEPTION
1199 
1200     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1201 
1202         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1203 
1204     WHEN OTHERS THEN
1205 
1206         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1207         THEN
1208             OE_MSG_PUB.Add_Exc_Msg
1209             (   G_PKG_NAME
1210             ,   'Query_Rows'
1211             );
1212         END IF;
1213 
1214         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1215 
1216 END Query_Rows;
1217 
1218 --  Procedure       lock_Row
1219 --
1220 
1221 PROCEDURE Lock_Row
1222 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1223 ,   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
1224 ,   x_SOU_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attr_Map_PUB.Sou_Rec_Type
1225 )
1226 IS
1227 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
1228 BEGIN
1229 
1230     SELECT  ATTRIBUTE1
1231     ,       ATTRIBUTE10
1232     ,       ATTRIBUTE11
1233     ,       ATTRIBUTE12
1234     ,       ATTRIBUTE13
1235     ,       ATTRIBUTE14
1236     ,       ATTRIBUTE15
1237     ,       ATTRIBUTE2
1238     ,       ATTRIBUTE3
1239     ,       ATTRIBUTE4
1240     ,       ATTRIBUTE5
1241     ,       ATTRIBUTE6
1242     ,       ATTRIBUTE7
1243     ,       ATTRIBUTE8
1244     ,       ATTRIBUTE9
1245     ,       ATTRIBUTE_SOURCING_ID
1246     ,       ATTRIBUTE_SOURCING_LEVEL
1247     ,       APPLICATION_ID
1248     ,       CONTEXT
1249     ,       CREATED_BY
1250     ,       CREATION_DATE
1251     ,       ENABLED_FLAG
1252     ,       LAST_UPDATED_BY
1253     ,       LAST_UPDATE_DATE
1254     ,       LAST_UPDATE_LOGIN
1255     ,       PROGRAM_APPLICATION_ID
1256     ,       PROGRAM_ID
1257     ,       PROGRAM_UPDATE_DATE
1258     ,       REQUEST_TYPE_CODE
1259     ,       SEEDED_FLAG
1260     ,       SEEDED_SOURCING_TYPE
1261     ,       SEEDED_VALUE_STRING
1262     ,       SEGMENT_ID
1263     ,       USER_SOURCING_TYPE
1264     ,       USER_VALUE_STRING
1265     INTO    l_SOU_rec.attribute1
1266     ,       l_SOU_rec.attribute10
1267     ,       l_SOU_rec.attribute11
1268     ,       l_SOU_rec.attribute12
1269     ,       l_SOU_rec.attribute13
1270     ,       l_SOU_rec.attribute14
1271     ,       l_SOU_rec.attribute15
1272     ,       l_SOU_rec.attribute2
1273     ,       l_SOU_rec.attribute3
1274     ,       l_SOU_rec.attribute4
1275     ,       l_SOU_rec.attribute5
1276     ,       l_SOU_rec.attribute6
1277     ,       l_SOU_rec.attribute7
1278     ,       l_SOU_rec.attribute8
1279     ,       l_SOU_rec.attribute9
1280     ,       l_SOU_rec.attribute_sourcing_id
1281     ,       l_SOU_rec.attribute_sourcing_level
1282     ,       l_SOU_rec.application_id
1283     ,       l_SOU_rec.context
1284     ,       l_SOU_rec.created_by
1285     ,       l_SOU_rec.creation_date
1286     ,       l_SOU_rec.enabled_flag
1287     ,       l_SOU_rec.last_updated_by
1288     ,       l_SOU_rec.last_update_date
1289     ,       l_SOU_rec.last_update_login
1290     ,       l_SOU_rec.program_application_id
1291     ,       l_SOU_rec.program_id
1292     ,       l_SOU_rec.program_update_date
1293     ,       l_SOU_rec.request_type_code
1294     ,       l_SOU_rec.seeded_flag
1295     ,       l_SOU_rec.seeded_sourcing_type
1296     ,       l_SOU_rec.seeded_value_string
1297     ,       l_SOU_rec.segment_id
1298     ,       l_SOU_rec.user_sourcing_type
1299     ,       l_SOU_rec.user_value_string
1300     FROM    QP_ATTRIBUTE_SOURCING
1301     WHERE   ATTRIBUTE_SOURCING_ID = p_SOU_rec.attribute_sourcing_id
1302         FOR UPDATE NOWAIT;
1303 
1304     --  Row locked. Compare IN attributes to DB attributes.
1305 
1306     IF  QP_GLOBALS.Equal(p_SOU_rec.attribute1,
1307                          l_SOU_rec.attribute1)
1308     AND QP_GLOBALS.Equal(p_SOU_rec.attribute10,
1309                          l_SOU_rec.attribute10)
1310     AND QP_GLOBALS.Equal(p_SOU_rec.attribute11,
1311                          l_SOU_rec.attribute11)
1312     AND QP_GLOBALS.Equal(p_SOU_rec.attribute12,
1313                          l_SOU_rec.attribute12)
1314     AND QP_GLOBALS.Equal(p_SOU_rec.attribute13,
1315                          l_SOU_rec.attribute13)
1316     AND QP_GLOBALS.Equal(p_SOU_rec.attribute14,
1317                          l_SOU_rec.attribute14)
1318     AND QP_GLOBALS.Equal(p_SOU_rec.attribute15,
1319                          l_SOU_rec.attribute15)
1320     AND QP_GLOBALS.Equal(p_SOU_rec.attribute2,
1321                          l_SOU_rec.attribute2)
1322     AND QP_GLOBALS.Equal(p_SOU_rec.attribute3,
1323                          l_SOU_rec.attribute3)
1324     AND QP_GLOBALS.Equal(p_SOU_rec.attribute4,
1325                          l_SOU_rec.attribute4)
1326     AND QP_GLOBALS.Equal(p_SOU_rec.attribute5,
1327                          l_SOU_rec.attribute5)
1328     AND QP_GLOBALS.Equal(p_SOU_rec.attribute6,
1329                          l_SOU_rec.attribute6)
1330     AND QP_GLOBALS.Equal(p_SOU_rec.attribute7,
1331                          l_SOU_rec.attribute7)
1332     AND QP_GLOBALS.Equal(p_SOU_rec.attribute8,
1333                          l_SOU_rec.attribute8)
1334     AND QP_GLOBALS.Equal(p_SOU_rec.attribute9,
1335                          l_SOU_rec.attribute9)
1336     AND QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_id,
1337                          l_SOU_rec.attribute_sourcing_id)
1338     AND QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_level,
1339                          l_SOU_rec.attribute_sourcing_level)
1340     AND QP_GLOBALS.Equal(p_SOU_rec.application_id,
1341                          l_SOU_rec.application_id)
1342     AND QP_GLOBALS.Equal(p_SOU_rec.context,
1343                          l_SOU_rec.context)
1344     AND QP_GLOBALS.Equal(p_SOU_rec.created_by,
1345                          l_SOU_rec.created_by)
1346     AND QP_GLOBALS.Equal(p_SOU_rec.creation_date,
1347                          l_SOU_rec.creation_date)
1348     AND QP_GLOBALS.Equal(p_SOU_rec.enabled_flag,
1349                          l_SOU_rec.enabled_flag)
1350     AND QP_GLOBALS.Equal(p_SOU_rec.last_updated_by,
1351                          l_SOU_rec.last_updated_by)
1352     AND QP_GLOBALS.Equal(p_SOU_rec.last_update_date,
1353                          l_SOU_rec.last_update_date)
1354     AND QP_GLOBALS.Equal(p_SOU_rec.last_update_login,
1355                          l_SOU_rec.last_update_login)
1356     AND QP_GLOBALS.Equal(p_SOU_rec.program_application_id,
1357                          l_SOU_rec.program_application_id)
1358     AND QP_GLOBALS.Equal(p_SOU_rec.program_id,
1359                          l_SOU_rec.program_id)
1360     AND QP_GLOBALS.Equal(p_SOU_rec.program_update_date,
1361                          l_SOU_rec.program_update_date)
1362     AND QP_GLOBALS.Equal(p_SOU_rec.request_type_code,
1363                          l_SOU_rec.request_type_code)
1364     AND QP_GLOBALS.Equal(p_SOU_rec.seeded_flag,
1365                          l_SOU_rec.seeded_flag)
1366     AND QP_GLOBALS.Equal(p_SOU_rec.seeded_sourcing_type,
1367                          l_SOU_rec.seeded_sourcing_type)
1368     AND QP_GLOBALS.Equal(p_SOU_rec.seeded_value_string,
1369                          l_SOU_rec.seeded_value_string)
1370     AND QP_GLOBALS.Equal(p_SOU_rec.segment_id,
1371                          l_SOU_rec.segment_id)
1372     AND QP_GLOBALS.Equal(p_SOU_rec.user_sourcing_type,
1373                          l_SOU_rec.user_sourcing_type)
1374     AND QP_GLOBALS.Equal(p_SOU_rec.user_value_string,
1375                          l_SOU_rec.user_value_string)
1376     THEN
1377 
1378         --  Row has not changed. Set out parameter.
1379 
1380         x_SOU_rec                      := l_SOU_rec;
1381 
1382         --  Set return status
1383 
1384         x_return_status                := FND_API.G_RET_STS_SUCCESS;
1385         x_SOU_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
1386 
1387     ELSE
1388 
1389         --  Row has changed by another user.
1390 
1391         x_return_status                := FND_API.G_RET_STS_ERROR;
1392         x_SOU_rec.return_status        := FND_API.G_RET_STS_ERROR;
1393 
1394         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1395         THEN
1396 
1397             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED');
1398             OE_MSG_PUB.Add;
1399 
1400         END IF;
1401 
1402     END IF;
1403 
1404 EXCEPTION
1405 
1406     WHEN NO_DATA_FOUND THEN
1407 
1408         x_return_status                := FND_API.G_RET_STS_ERROR;
1409         x_SOU_rec.return_status        := FND_API.G_RET_STS_ERROR;
1410 
1411         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1412         THEN
1413 
1414             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
1415             OE_MSG_PUB.Add;
1416 
1417         END IF;
1418     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
1419 
1420         x_return_status                := FND_API.G_RET_STS_ERROR;
1421         x_SOU_rec.return_status        := FND_API.G_RET_STS_ERROR;
1422 
1423         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1424         THEN
1425 
1426             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
1427             OE_MSG_PUB.Add;
1428 
1429         END IF;
1430     WHEN OTHERS THEN
1431 
1432         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
1433         x_SOU_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1434 
1435         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1436         THEN
1437             OE_MSG_PUB.Add_Exc_Msg
1438             (   G_PKG_NAME
1439             ,   'Lock_Row'
1440             );
1441         END IF;
1442 
1443 END Lock_Row;
1444 
1445 --  Function Get_Values
1446 
1447 FUNCTION Get_Values
1448 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
1449 ,   p_old_SOU_rec                   IN  QP_Attr_Map_PUB.Sou_Rec_Type :=
1450                                         QP_Attr_Map_PUB.G_MISS_SOU_REC
1451 ) RETURN QP_Attr_Map_PUB.Sou_Val_Rec_Type
1452 IS
1453 l_SOU_val_rec                 QP_Attr_Map_PUB.Sou_Val_Rec_Type;
1454 BEGIN
1455 
1456     IF p_SOU_rec.attribute_sourcing_id IS NOT NULL AND
1457         p_SOU_rec.attribute_sourcing_id <> FND_API.G_MISS_NUM AND
1458         NOT QP_GLOBALS.Equal(p_SOU_rec.attribute_sourcing_id,
1459         p_old_SOU_rec.attribute_sourcing_id)
1460     THEN
1461         l_SOU_val_rec.attribute_sourcing := QP_Id_To_Value.Attribute_Sourcing
1462         (   p_attribute_sourcing_id       => p_SOU_rec.attribute_sourcing_id
1463         );
1464     END IF;
1465 
1466     IF p_SOU_rec.enabled_flag IS NOT NULL AND
1467         p_SOU_rec.enabled_flag <> FND_API.G_MISS_CHAR AND
1468         NOT QP_GLOBALS.Equal(p_SOU_rec.enabled_flag,
1469         p_old_SOU_rec.enabled_flag)
1470     THEN
1471         l_SOU_val_rec.enabled := QP_Id_To_Value.Enabled
1472         (   p_enabled_flag                => p_SOU_rec.enabled_flag
1473         );
1474     END IF;
1475 
1476     IF p_SOU_rec.request_type_code IS NOT NULL AND
1477         p_SOU_rec.request_type_code <> FND_API.G_MISS_CHAR AND
1478         NOT QP_GLOBALS.Equal(p_SOU_rec.request_type_code,
1479         p_old_SOU_rec.request_type_code)
1480     THEN
1481         l_SOU_val_rec.request_type := QP_Id_To_Value.Request_Type
1482         (   p_request_type_code           => p_SOU_rec.request_type_code
1483         );
1484     END IF;
1485 
1486     IF p_SOU_rec.seeded_flag IS NOT NULL AND
1487         p_SOU_rec.seeded_flag <> FND_API.G_MISS_CHAR AND
1488         NOT QP_GLOBALS.Equal(p_SOU_rec.seeded_flag,
1489         p_old_SOU_rec.seeded_flag)
1490     THEN
1491         l_SOU_val_rec.seeded := QP_Id_To_Value.Seeded
1492         (   p_seeded_flag                 => p_SOU_rec.seeded_flag
1493         );
1494     END IF;
1495 
1496     IF p_SOU_rec.segment_id IS NOT NULL AND
1497         p_SOU_rec.segment_id <> FND_API.G_MISS_NUM AND
1498         NOT QP_GLOBALS.Equal(p_SOU_rec.segment_id,
1499         p_old_SOU_rec.segment_id)
1500     THEN
1501         l_SOU_val_rec.segment := QP_Id_To_Value.Segment
1502         (   p_segment_id                  => p_SOU_rec.segment_id
1503         );
1504     END IF;
1505 
1506     RETURN l_SOU_val_rec;
1507 
1508 END Get_Values;
1509 
1510 --  Function Get_Ids
1511 
1512 FUNCTION Get_Ids
1513 (   p_SOU_rec                       IN  QP_Attr_Map_PUB.Sou_Rec_Type
1514 ,   p_SOU_val_rec                   IN  QP_Attr_Map_PUB.Sou_Val_Rec_Type
1515 ) RETURN QP_Attr_Map_PUB.Sou_Rec_Type
1516 IS
1517 l_SOU_rec                     QP_Attr_Map_PUB.Sou_Rec_Type;
1518 BEGIN
1519 
1520     --  initialize  return_status.
1521 
1522     l_SOU_rec.return_status := FND_API.G_RET_STS_SUCCESS;
1523 
1524     --  initialize l_SOU_rec.
1525 
1526     l_SOU_rec := p_SOU_rec;
1527 
1528     IF  p_SOU_val_rec.attribute_sourcing <> FND_API.G_MISS_CHAR
1529     THEN
1530 
1531         IF p_SOU_rec.attribute_sourcing_id <> FND_API.G_MISS_NUM THEN
1532 
1533             l_SOU_rec.attribute_sourcing_id := p_SOU_rec.attribute_sourcing_id;
1534 
1535             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1536             THEN
1537 
1538                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1539                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','attribute_sourcing');
1540                 OE_MSG_PUB.Add;
1541 
1542             END IF;
1543 
1544         ELSE
1545 
1546             l_SOU_rec.attribute_sourcing_id := QP_Value_To_Id.attribute_sourcing
1547             (   p_attribute_sourcing          => p_SOU_val_rec.attribute_sourcing
1548             );
1549 
1550             IF l_SOU_rec.attribute_sourcing_id = FND_API.G_MISS_NUM THEN
1551                 l_SOU_rec.return_status := FND_API.G_RET_STS_ERROR;
1552             END IF;
1553 
1554         END IF;
1555 
1556     END IF;
1557 
1558     IF  p_SOU_val_rec.enabled <> FND_API.G_MISS_CHAR
1559     THEN
1560 
1561         IF p_SOU_rec.enabled_flag <> FND_API.G_MISS_CHAR THEN
1562 
1563             l_SOU_rec.enabled_flag := p_SOU_rec.enabled_flag;
1564 
1565             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1566             THEN
1567 
1568                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1569                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','enabled');
1570                 OE_MSG_PUB.Add;
1571 
1572             END IF;
1573 
1574         ELSE
1575 
1576             l_SOU_rec.enabled_flag := QP_Value_To_Id.enabled
1577             (   p_enabled                     => p_SOU_val_rec.enabled
1578             );
1579 
1580             IF l_SOU_rec.enabled_flag = FND_API.G_MISS_CHAR THEN
1581                 l_SOU_rec.return_status := FND_API.G_RET_STS_ERROR;
1582             END IF;
1583 
1584         END IF;
1585 
1586     END IF;
1587 
1588     IF  p_SOU_val_rec.request_type <> FND_API.G_MISS_CHAR
1589     THEN
1590 
1591         IF p_SOU_rec.request_type_code <> FND_API.G_MISS_CHAR THEN
1592 
1593             l_SOU_rec.request_type_code := p_SOU_rec.request_type_code;
1594 
1595             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1596             THEN
1597 
1598                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1599                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','request_type');
1600                 OE_MSG_PUB.Add;
1601 
1602             END IF;
1603 
1604         ELSE
1605 
1606             l_SOU_rec.request_type_code := QP_Value_To_Id.request_type
1607             (   p_request_type                => p_SOU_val_rec.request_type
1608             );
1609 
1610             IF l_SOU_rec.request_type_code = FND_API.G_MISS_CHAR THEN
1611                 l_SOU_rec.return_status := FND_API.G_RET_STS_ERROR;
1612             END IF;
1613 
1614         END IF;
1615 
1616     END IF;
1617 
1618     IF  p_SOU_val_rec.seeded <> FND_API.G_MISS_CHAR
1619     THEN
1620 
1621         IF p_SOU_rec.seeded_flag <> FND_API.G_MISS_CHAR THEN
1622 
1623             l_SOU_rec.seeded_flag := p_SOU_rec.seeded_flag;
1624 
1625             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1626             THEN
1627 
1628                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1629                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','seeded');
1630                 OE_MSG_PUB.Add;
1631 
1632             END IF;
1633 
1634         ELSE
1635 
1636             l_SOU_rec.seeded_flag := QP_Value_To_Id.seeded
1637             (   p_seeded                      => p_SOU_val_rec.seeded
1638             );
1639 
1640             IF l_SOU_rec.seeded_flag = FND_API.G_MISS_CHAR THEN
1641                 l_SOU_rec.return_status := FND_API.G_RET_STS_ERROR;
1642             END IF;
1643 
1644         END IF;
1645 
1646     END IF;
1647 
1648     IF  p_SOU_val_rec.segment <> FND_API.G_MISS_CHAR
1649     THEN
1650 
1651         IF p_SOU_rec.segment_id <> FND_API.G_MISS_NUM THEN
1652 
1653             l_SOU_rec.segment_id := p_SOU_rec.segment_id;
1654 
1655             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
1656             THEN
1657 
1658                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
1659                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','segment');
1660                 OE_MSG_PUB.Add;
1661 
1662             END IF;
1663 
1664         ELSE
1665 
1666             l_SOU_rec.segment_id := QP_Value_To_Id.segment
1667             (   p_segment                     => p_SOU_val_rec.segment
1668             );
1669 
1670             IF l_SOU_rec.segment_id = FND_API.G_MISS_NUM THEN
1671                 l_SOU_rec.return_status := FND_API.G_RET_STS_ERROR;
1672             END IF;
1673 
1674         END IF;
1675 
1676     END IF;
1677 
1678 
1679     RETURN l_SOU_rec;
1680 
1681 END Get_Ids;
1682 
1683 END QP_Sou_Util;