DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_SEG_UTIL

Source


1 PACKAGE BODY QP_Seg_Util AS
2 /* $Header: QPXUSEGB.pls 120.2 2005/08/03 07:36:58 srashmi noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Seg_Util';
7 
8 --  Procedure Clear_Dependent_Attr
9 
10 PROCEDURE p_compile_flexfields(p_segment_mapping_column in varchar2)
11 -- Addded by Abhijit , based on new APIs provided by AOL.(08/07/2002)
12 -- Private procedure to set session,freeze,enable and compile flexfields.
13 is
14   req_id    number;
15   request_id    number;
16 begin
17      fnd_flex_dsc_api.set_session_mode('customer_data');
18      --
19      -- Enabling column.
20      fnd_flex_dsc_api.enable_columns(APPL_SHORT_NAME =>'QP',
21                                      FLEXFIELD_NAME =>'QP_ATTR_DEFNS_PRICING',
22                                      PATTERN => p_segment_mapping_column);
23      -- Freezing the flexfield.
24      fnd_flex_dsc_api.freeze(APPL_SHORT_NAME =>'QP',
25                              FLEXFIELD_NAME =>'QP_ATTR_DEFNS_PRICING');
26      --
27      -- Compiling the Flexfield.
28      commit;
29      req_id := fnd_request.submit_request
30            (application => 'FND',
31             program    => 'FDFCMPD',
32             description => ('fdfcmp(D,' ||
33                             'QP' || ',' ||
34                             'QP_ATTR_DEFNS_PRICING' || ')'),
35             start_time  => NULL,
36             sub_request => FALSE,
37             argument1  => 'D',
38             argument2  => 'QP',
39             argument3  => 'QP_ATTR_DEFNS_PRICING');
40 
41      req_id := fnd_request.submit_request
42            (application => 'FND',
43             program    => 'FDFVGN',
44             description => ('fdfvgn(3,' ||
45                             '661' || ',' ||
46                             'QP_ATTR_DEFNS_PRICING' || ')'),
47             start_time  => NULL,
48             sub_request => FALSE,
49             argument1  => '3',
50             argument2  => '661',
51             argument3  => 'QP_ATTR_DEFNS_PRICING');
52     /*request_id := submit_cp_request(p_application_short_name  => 'FND',
53                                                p_concurrent_program_name => 'FDFVGN',
54                                                px_description            => l_description,
55                                                p_argument1               => '3',
56                                                p_argument2               => 661
57                                                p_argument3               => 'QP_ATTR_DEFNS_V'
58 					)*/
59 end;
60 --
61 PROCEDURE Clear_Dependent_Attr
62 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
63 ,   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
64 ,   p_old_SEG_rec                   IN  QP_Attributes_PUB.Seg_Rec_Type :=
65                                         QP_Attributes_PUB.G_MISS_SEG_REC
66 ,   x_SEG_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Rec_Type
67 )
68 IS
69 l_index                       NUMBER := 0;
70 l_src_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
71 l_dep_attr_tbl                QP_GLOBALS.NUMBER_Tbl_Type;
72 BEGIN
73 
74     --  Load out record
75 
76     x_SEG_rec := p_SEG_rec;
77 
78     --  If attr_id is missing compare old and new records and for
79     --  every changed attribute clear its dependent fields.
80 
81     IF p_attr_id = FND_API.G_MISS_NUM THEN
82 
83         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute1,p_old_SEG_rec.attribute1)
84         THEN
85             l_index := l_index + 1;
86             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE1;
87         END IF;
88 
89         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute10,p_old_SEG_rec.attribute10)
90         THEN
91             l_index := l_index + 1;
92             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE10;
93         END IF;
94 
95         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute11,p_old_SEG_rec.attribute11)
96         THEN
97             l_index := l_index + 1;
98             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE11;
99         END IF;
100 
101         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute12,p_old_SEG_rec.attribute12)
102         THEN
103             l_index := l_index + 1;
104             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE12;
105         END IF;
106 
107         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute13,p_old_SEG_rec.attribute13)
108         THEN
109             l_index := l_index + 1;
110             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE13;
111         END IF;
112 
113         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute14,p_old_SEG_rec.attribute14)
114         THEN
115             l_index := l_index + 1;
116             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE14;
117         END IF;
118 
119         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute15,p_old_SEG_rec.attribute15)
120         THEN
121             l_index := l_index + 1;
122             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE15;
123         END IF;
124 
125         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute2,p_old_SEG_rec.attribute2)
126         THEN
127             l_index := l_index + 1;
128             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE2;
129         END IF;
130 
131         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute3,p_old_SEG_rec.attribute3)
132         THEN
133             l_index := l_index + 1;
134             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE3;
135         END IF;
136 
137         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute4,p_old_SEG_rec.attribute4)
138         THEN
139             l_index := l_index + 1;
140             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE4;
141         END IF;
142 
143         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute5,p_old_SEG_rec.attribute5)
144         THEN
145             l_index := l_index + 1;
146             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE5;
147         END IF;
148 
149         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute6,p_old_SEG_rec.attribute6)
150         THEN
151             l_index := l_index + 1;
152             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE6;
153         END IF;
154 
155         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute7,p_old_SEG_rec.attribute7)
156         THEN
157             l_index := l_index + 1;
158             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE7;
159         END IF;
160 
161         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute8,p_old_SEG_rec.attribute8)
162         THEN
163             l_index := l_index + 1;
164             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE8;
165         END IF;
166 
167         IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute9,p_old_SEG_rec.attribute9)
168         THEN
169             l_index := l_index + 1;
170             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE9;
171         END IF;
172 
173         IF NOT QP_GLOBALS.Equal(p_SEG_rec.availability_in_basic,p_old_SEG_rec.availability_in_basic)
174         THEN
175             l_index := l_index + 1;
176             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_AVAILABILITY_IN_BASIC;
177         END IF;
178 
179         IF NOT QP_GLOBALS.Equal(p_SEG_rec.context,p_old_SEG_rec.context)
180         THEN
181             l_index := l_index + 1;
182             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_CONTEXT;
183         END IF;
184 
185         IF NOT QP_GLOBALS.Equal(p_SEG_rec.created_by,p_old_SEG_rec.created_by)
186         THEN
187             l_index := l_index + 1;
188             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_CREATED_BY;
189         END IF;
190 
191         IF NOT QP_GLOBALS.Equal(p_SEG_rec.creation_date,p_old_SEG_rec.creation_date)
192         THEN
193             l_index := l_index + 1;
194             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_CREATION_DATE;
195         END IF;
196 
197         IF NOT QP_GLOBALS.Equal(p_SEG_rec.last_updated_by,p_old_SEG_rec.last_updated_by)
198         THEN
199             l_index := l_index + 1;
200             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_LAST_UPDATED_BY;
201         END IF;
202 
203         IF NOT QP_GLOBALS.Equal(p_SEG_rec.last_update_date,p_old_SEG_rec.last_update_date)
204         THEN
205             l_index := l_index + 1;
206             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_LAST_UPDATE_DATE;
207         END IF;
208 
209         IF NOT QP_GLOBALS.Equal(p_SEG_rec.last_update_login,p_old_SEG_rec.last_update_login)
210         THEN
211             l_index := l_index + 1;
212             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_LAST_UPDATE_LOGIN;
213         END IF;
214 
215         IF NOT QP_GLOBALS.Equal(p_SEG_rec.prc_context_id,p_old_SEG_rec.prc_context_id)
216         THEN
217             l_index := l_index + 1;
218             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PRC_CONTEXT;
219         END IF;
220 
221         IF NOT QP_GLOBALS.Equal(p_SEG_rec.program_application_id,p_old_SEG_rec.program_application_id)
222         THEN
223             l_index := l_index + 1;
224             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PROGRAM_APPLICATION;
225         END IF;
226 
227         IF NOT QP_GLOBALS.Equal(p_SEG_rec.program_id,p_old_SEG_rec.program_id)
228         THEN
229             l_index := l_index + 1;
230             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PROGRAM;
231         END IF;
232 
233         IF NOT QP_GLOBALS.Equal(p_SEG_rec.program_update_date,p_old_SEG_rec.program_update_date)
234         THEN
235             l_index := l_index + 1;
236             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PROGRAM_UPDATE_DATE;
237         END IF;
238 
239         IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_flag,p_old_SEG_rec.seeded_flag)
240         THEN
241             l_index := l_index + 1;
242             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED;
243         END IF;
244 
245         IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_format_type,p_old_SEG_rec.seeded_format_type)
246         THEN
247             l_index := l_index + 1;
248             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_FORMAT_TYPE;
249         END IF;
250 
251         IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_precedence,p_old_SEG_rec.seeded_precedence)
252         THEN
253             l_index := l_index + 1;
254             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_PRECEDENCE;
255         END IF;
256 
257 
258 	IF NOT QP_GLOBALS.Equal( p_SEG_rec.seeded_description,p_old_SEG_rec.seeded_description)
259 	 THEN
260              l_index := l_index + 1;
261              l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_DESCRIPTION;
262 	END IF;
263 
264 	IF NOT QP_GLOBALS.Equal( p_SEG_rec.user_description,p_old_SEG_rec.user_description)
265 	THEN
266             l_index := l_index + 1;
267             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_DESCRIPTION;
268 	END IF;
269 
270         IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_segment_name,p_old_SEG_rec.seeded_segment_name)
271         THEN
272             l_index := l_index + 1;
273             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_SEGMENT_NAME;
274         END IF;
275 
276         IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_valueset_id,p_old_SEG_rec.seeded_valueset_id)
277         THEN
278             l_index := l_index + 1;
279             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_VALUESET;
280         END IF;
281 
282         IF NOT QP_GLOBALS.Equal(p_SEG_rec.segment_code,p_old_SEG_rec.segment_code)
283         THEN
284             l_index := l_index + 1;
285             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEGMENT_code;
286         END IF;
287 
288         IF NOT QP_GLOBALS.Equal(p_SEG_rec.segment_id,p_old_SEG_rec.segment_id)
289         THEN
290             l_index := l_index + 1;
291             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEGMENT;
292         END IF;
293 
294         IF NOT QP_GLOBALS.Equal(p_SEG_rec.application_id,p_old_SEG_rec.application_id)
295         THEN
296             l_index := l_index + 1;
297             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_APPLICATION_ID;
298         END IF;
299 
300         IF NOT QP_GLOBALS.Equal(p_SEG_rec.segment_mapping_column,p_old_SEG_rec.segment_mapping_column)
301         THEN
302             l_index := l_index + 1;
303             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEGMENT_MAPPING_COLUMN;
304         END IF;
305 
306         IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_format_type,p_old_SEG_rec.user_format_type)
307         THEN
308             l_index := l_index + 1;
309             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_FORMAT_TYPE;
310         END IF;
311 
312         IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_precedence,p_old_SEG_rec.user_precedence)
313         THEN
314             l_index := l_index + 1;
315             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_PRECEDENCE;
316         END IF;
317 
318         IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_segment_name,p_old_SEG_rec.user_segment_name)
319         THEN
320             l_index := l_index + 1;
321             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_SEGMENT_NAME;
322         END IF;
323 
324         IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_valueset_id,p_old_SEG_rec.user_valueset_id)
325         THEN
326             l_index := l_index + 1;
327             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_VALUESET;
328         END IF;
329 
330         IF NOT QP_GLOBALS.Equal(p_SEG_rec.required_flag,p_old_SEG_rec.required_flag)
331         THEN
332             l_index := l_index + 1;
333             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_REQUIRED_FLAG;
334         END IF;
335       -- Added for TCA
336         IF NOT QP_GLOBALS.Equal(p_SEG_rec.party_hierarchy_enabled_flag,p_old_SEG_rec.party_hierarchy_enabled_flag)
337         THEN
338             l_index := l_index + 1;
339             l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PARTY_HIERARCHY_ENABLED_FLAG;
340         END IF;
341 
342     ELSIF p_attr_id = G_ATTRIBUTE1 THEN
343         l_index := l_index + 1;
344         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE1;
345     ELSIF p_attr_id = G_ATTRIBUTE10 THEN
346         l_index := l_index + 1;
347         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE10;
348     ELSIF p_attr_id = G_ATTRIBUTE11 THEN
349         l_index := l_index + 1;
350         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE11;
351     ELSIF p_attr_id = G_ATTRIBUTE12 THEN
352         l_index := l_index + 1;
353         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE12;
354     ELSIF p_attr_id = G_ATTRIBUTE13 THEN
355         l_index := l_index + 1;
356         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE13;
357     ELSIF p_attr_id = G_ATTRIBUTE14 THEN
358         l_index := l_index + 1;
359         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE14;
360     ELSIF p_attr_id = G_ATTRIBUTE15 THEN
361         l_index := l_index + 1;
362         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE15;
363     ELSIF p_attr_id = G_ATTRIBUTE2 THEN
364         l_index := l_index + 1;
365         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE2;
366     ELSIF p_attr_id = G_ATTRIBUTE3 THEN
367         l_index := l_index + 1;
368         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE3;
369     ELSIF p_attr_id = G_ATTRIBUTE4 THEN
370         l_index := l_index + 1;
371         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE4;
372     ELSIF p_attr_id = G_ATTRIBUTE5 THEN
373         l_index := l_index + 1;
374         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE5;
375     ELSIF p_attr_id = G_ATTRIBUTE6 THEN
376         l_index := l_index + 1;
377         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE6;
378     ELSIF p_attr_id = G_ATTRIBUTE7 THEN
379         l_index := l_index + 1;
380         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE7;
381     ELSIF p_attr_id = G_ATTRIBUTE8 THEN
382         l_index := l_index + 1;
383         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE8;
384     ELSIF p_attr_id = G_ATTRIBUTE9 THEN
385         l_index := l_index + 1;
386         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_ATTRIBUTE9;
387     ELSIF p_attr_id = G_AVAILABILITY_IN_BASIC THEN
388         l_index := l_index + 1;
389         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_AVAILABILITY_IN_BASIC;
390     ELSIF p_attr_id = G_CONTEXT THEN
391         l_index := l_index + 1;
392         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_CONTEXT;
393     ELSIF p_attr_id = G_CREATED_BY THEN
394         l_index := l_index + 1;
395         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_CREATED_BY;
396     ELSIF p_attr_id = G_CREATION_DATE THEN
397         l_index := l_index + 1;
398         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_CREATION_DATE;
399     ELSIF p_attr_id = G_LAST_UPDATED_BY THEN
400         l_index := l_index + 1;
401         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_LAST_UPDATED_BY;
402     ELSIF p_attr_id = G_LAST_UPDATE_DATE THEN
403         l_index := l_index + 1;
404         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_LAST_UPDATE_DATE;
405     ELSIF p_attr_id = G_LAST_UPDATE_LOGIN THEN
406         l_index := l_index + 1;
407         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_LAST_UPDATE_LOGIN;
408     ELSIF p_attr_id = G_PRC_CONTEXT THEN
409         l_index := l_index + 1;
410         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PRC_CONTEXT;
411     ELSIF p_attr_id = G_PROGRAM_APPLICATION THEN
412         l_index := l_index + 1;
413         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PROGRAM_APPLICATION;
414     ELSIF p_attr_id = G_PROGRAM THEN
415         l_index := l_index + 1;
416         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PROGRAM;
417     ELSIF p_attr_id = G_PROGRAM_UPDATE_DATE THEN
418         l_index := l_index + 1;
419         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PROGRAM_UPDATE_DATE;
420     ELSIF p_attr_id = G_SEEDED THEN
421         l_index := l_index + 1;
422         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED;
423     ELSIF p_attr_id = G_SEEDED_FORMAT_TYPE THEN
424         l_index := l_index + 1;
425         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_FORMAT_TYPE;
426     ELSIF p_attr_id = G_SEEDED_PRECEDENCE THEN
427         l_index := l_index + 1;
428         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_PRECEDENCE;
429     ELSIF p_attr_id = G_SEEDED_SEGMENT_NAME THEN
430         l_index := l_index + 1;
431         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_SEGMENT_NAME;
432     ELSIF p_attr_id = G_SEEDED_VALUESET THEN
433         l_index := l_index + 1;
434         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_VALUESET;
435     ELSIF p_attr_id = G_SEGMENT_code THEN
436         l_index := l_index + 1;
437         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEGMENT_code;
438     ELSIF p_attr_id = G_SEGMENT THEN
439         l_index := l_index + 1;
440         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEGMENT;
441     ELSIF p_attr_id = G_APPLICATION_ID THEN
442         l_index := l_index + 1;
443         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_APPLICATION_ID;
444     ELSIF p_attr_id = G_SEGMENT_MAPPING_COLUMN THEN
445         l_index := l_index + 1;
446         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEGMENT_MAPPING_COLUMN;
447     ELSIF p_attr_id = G_USER_FORMAT_TYPE THEN
448         l_index := l_index + 1;
449         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_FORMAT_TYPE;
450     ELSIF p_attr_id = G_USER_PRECEDENCE THEN
451         l_index := l_index + 1;
452         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_PRECEDENCE;
453     ELSIF p_attr_id = G_USER_SEGMENT_NAME THEN
454         l_index := l_index + 1;
455         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_SEGMENT_NAME;
456     ELSIF p_attr_id = G_USER_VALUESET THEN
457         l_index := l_index + 1;
458         l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_VALUESET;
459     ELSIF p_attr_id = G_SEEDED_DESCRIPTION THEN
460 	 l_index := l_index + 1;
461          l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_SEEDED_DESCRIPTION;
462     ELSIF p_attr_id = G_USER_DESCRIPTION THEN
463 	 l_index := l_index + 1;
464          l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_USER_DESCRIPTION;
465     ELSIF p_attr_id = G_REQUIRED_FLAG THEN
466 	 l_index := l_index + 1;
467          l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_REQUIRED_FLAG;
468   -- Added for TCA
469     ELSIF p_attr_id = G_PARTY_HIERARCHY_ENABLED_FLAG THEN
470 	 l_index := l_index + 1;
471          l_src_attr_tbl(l_index) := QP_SEG_UTIL.G_PARTY_HIERARCHY_ENABLED_FLAG;
472     END IF;
473 
474 END Clear_Dependent_Attr;
475 
476 --  Procedure Apply_Attribute_Changes
477 
478 PROCEDURE Apply_Attribute_Changes
479 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
480 ,   p_old_SEG_rec                   IN  QP_Attributes_PUB.Seg_Rec_Type :=
481                                         QP_Attributes_PUB.G_MISS_SEG_REC
482 ,   x_SEG_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Rec_Type
483 )
484 IS
485 BEGIN
486 
487     --  Load out record
488 
489     x_SEG_rec := p_SEG_rec;
490 
491     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute1,p_old_SEG_rec.attribute1)
492     THEN
493         NULL;
494     END IF;
495 
496     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute10,p_old_SEG_rec.attribute10)
497     THEN
498         NULL;
499     END IF;
500 
501     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute11,p_old_SEG_rec.attribute11)
502     THEN
503         NULL;
504     END IF;
505 
506     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute12,p_old_SEG_rec.attribute12)
507     THEN
508         NULL;
509     END IF;
510 
511     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute13,p_old_SEG_rec.attribute13)
512     THEN
513         NULL;
514     END IF;
515 
516     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute14,p_old_SEG_rec.attribute14)
517     THEN
518         NULL;
519     END IF;
520 
521     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute15,p_old_SEG_rec.attribute15)
522     THEN
523         NULL;
524     END IF;
525 
526     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute2,p_old_SEG_rec.attribute2)
527     THEN
528         NULL;
529     END IF;
530 
531     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute3,p_old_SEG_rec.attribute3)
532     THEN
533         NULL;
534     END IF;
535 
536     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute4,p_old_SEG_rec.attribute4)
537     THEN
538         NULL;
539     END IF;
540 
541     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute5,p_old_SEG_rec.attribute5)
542     THEN
543         NULL;
544     END IF;
545 
546     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute6,p_old_SEG_rec.attribute6)
547     THEN
548         NULL;
549     END IF;
550 
551     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute7,p_old_SEG_rec.attribute7)
552     THEN
553         NULL;
554     END IF;
555 
556     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute8,p_old_SEG_rec.attribute8)
557     THEN
558         NULL;
559     END IF;
560 
561     IF NOT QP_GLOBALS.Equal(p_SEG_rec.attribute9,p_old_SEG_rec.attribute9)
562     THEN
563         NULL;
564     END IF;
565 
566     IF NOT QP_GLOBALS.Equal(p_SEG_rec.availability_in_basic,p_old_SEG_rec.availability_in_basic)
567     THEN
568         NULL;
569     END IF;
570 
571     IF NOT QP_GLOBALS.Equal(p_SEG_rec.context,p_old_SEG_rec.context)
572     THEN
573         NULL;
574     END IF;
575 
576     IF NOT QP_GLOBALS.Equal(p_SEG_rec.created_by,p_old_SEG_rec.created_by)
577     THEN
578         NULL;
579     END IF;
580 
581     IF NOT QP_GLOBALS.Equal(p_SEG_rec.creation_date,p_old_SEG_rec.creation_date)
582     THEN
583         NULL;
584     END IF;
585 
586     IF NOT QP_GLOBALS.Equal(p_SEG_rec.last_updated_by,p_old_SEG_rec.last_updated_by)
587     THEN
588         NULL;
589     END IF;
590 
591     IF NOT QP_GLOBALS.Equal(p_SEG_rec.last_update_date,p_old_SEG_rec.last_update_date)
592     THEN
593         NULL;
594     END IF;
595 
596     IF NOT QP_GLOBALS.Equal(p_SEG_rec.last_update_login,p_old_SEG_rec.last_update_login)
597     THEN
598         NULL;
599     END IF;
600 
601     IF NOT QP_GLOBALS.Equal(p_SEG_rec.prc_context_id,p_old_SEG_rec.prc_context_id)
602     THEN
603         NULL;
604     END IF;
605 
606     IF NOT QP_GLOBALS.Equal(p_SEG_rec.program_application_id,p_old_SEG_rec.program_application_id)
607     THEN
608         NULL;
609     END IF;
610 
611     IF NOT QP_GLOBALS.Equal(p_SEG_rec.program_id,p_old_SEG_rec.program_id)
612     THEN
613         NULL;
614     END IF;
615 
616     IF NOT QP_GLOBALS.Equal(p_SEG_rec.program_update_date,p_old_SEG_rec.program_update_date)
617     THEN
618         NULL;
619     END IF;
620 
621     IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_flag,p_old_SEG_rec.seeded_flag)
622     THEN
623         NULL;
624     END IF;
625 
626     IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_format_type,p_old_SEG_rec.seeded_format_type)
627     THEN
628         NULL;
629     END IF;
630 
631     IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_precedence,p_old_SEG_rec.seeded_precedence)
632     THEN
633         NULL;
634     END IF;
635 
636     IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_segment_name,p_old_SEG_rec.seeded_segment_name)
637     THEN
638         NULL;
639     END IF;
640 
641     IF NOT QP_GLOBALS.Equal( p_SEG_rec.seeded_description,p_old_SEG_rec.seeded_description)
642     THEN
643         NULL;
644     END IF;
645 
646     IF NOT QP_GLOBALS.Equal( p_SEG_rec.user_description,p_old_SEG_rec.user_description)
647     THEN
648         NULL;
649     END IF;
650 
651     IF NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_valueset_id,p_old_SEG_rec.seeded_valueset_id)
652     THEN
653         NULL;
654     END IF;
655 
656     IF NOT QP_GLOBALS.Equal(p_SEG_rec.segment_code,p_old_SEG_rec.segment_code)
657     THEN
658         NULL;
659     END IF;
660 
661     IF NOT QP_GLOBALS.Equal(p_SEG_rec.segment_id,p_old_SEG_rec.segment_id)
662     THEN
663         NULL;
664     END IF;
665 
666     IF NOT QP_GLOBALS.Equal(p_SEG_rec.application_id,p_old_SEG_rec.application_id)
667     THEN
668         NULL;
669     END IF;
670 
671     IF NOT QP_GLOBALS.Equal(p_SEG_rec.segment_mapping_column,p_old_SEG_rec.segment_mapping_column)
672     THEN
673         NULL;
674     END IF;
675 
676     IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_format_type,p_old_SEG_rec.user_format_type)
677     THEN
678         NULL;
679     END IF;
680 
681     IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_precedence,p_old_SEG_rec.user_precedence)
682     THEN
683         NULL;
684     END IF;
685 
686     IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_segment_name,p_old_SEG_rec.user_segment_name)
687     THEN
688         NULL;
689     END IF;
690 
691     IF NOT QP_GLOBALS.Equal(p_SEG_rec.user_valueset_id,p_old_SEG_rec.user_valueset_id)
692     THEN
693         NULL;
694     END IF;
695 
696     IF NOT QP_GLOBALS.Equal(p_SEG_rec.required_flag,p_old_SEG_rec.required_flag)
697     THEN
698         NULL;
699     END IF;
700 --Added for TCA
701     IF NOT QP_GLOBALS.Equal(p_SEG_rec.party_hierarchy_enabled_flag,p_old_SEG_rec.party_hierarchy_enabled_flag)
702     THEN
703         NULL;
704     END IF;
705 END Apply_Attribute_Changes;
706 
707 --  Function Complete_Record
708 
709 FUNCTION Complete_Record
710 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
711 ,   p_old_SEG_rec                   IN  QP_Attributes_PUB.Seg_Rec_Type
712 ) RETURN QP_Attributes_PUB.Seg_Rec_Type
713 IS
714 l_SEG_rec                     QP_Attributes_PUB.Seg_Rec_Type := p_SEG_rec;
715 BEGIN
716 
717     IF l_SEG_rec.attribute1 = FND_API.G_MISS_CHAR THEN
718         l_SEG_rec.attribute1 := p_old_SEG_rec.attribute1;
719     END IF;
720 
721     IF l_SEG_rec.attribute10 = FND_API.G_MISS_CHAR THEN
722         l_SEG_rec.attribute10 := p_old_SEG_rec.attribute10;
723     END IF;
724 
725     IF l_SEG_rec.attribute11 = FND_API.G_MISS_CHAR THEN
726         l_SEG_rec.attribute11 := p_old_SEG_rec.attribute11;
727     END IF;
728 
729     IF l_SEG_rec.attribute12 = FND_API.G_MISS_CHAR THEN
730         l_SEG_rec.attribute12 := p_old_SEG_rec.attribute12;
731     END IF;
732 
733     IF l_SEG_rec.attribute13 = FND_API.G_MISS_CHAR THEN
734         l_SEG_rec.attribute13 := p_old_SEG_rec.attribute13;
735     END IF;
736 
737     IF l_SEG_rec.attribute14 = FND_API.G_MISS_CHAR THEN
738         l_SEG_rec.attribute14 := p_old_SEG_rec.attribute14;
739     END IF;
740 
741     IF l_SEG_rec.attribute15 = FND_API.G_MISS_CHAR THEN
742         l_SEG_rec.attribute15 := p_old_SEG_rec.attribute15;
743     END IF;
744 
745     IF l_SEG_rec.attribute2 = FND_API.G_MISS_CHAR THEN
746         l_SEG_rec.attribute2 := p_old_SEG_rec.attribute2;
747     END IF;
748 
749     IF l_SEG_rec.attribute3 = FND_API.G_MISS_CHAR THEN
750         l_SEG_rec.attribute3 := p_old_SEG_rec.attribute3;
751     END IF;
752 
753     IF l_SEG_rec.attribute4 = FND_API.G_MISS_CHAR THEN
754         l_SEG_rec.attribute4 := p_old_SEG_rec.attribute4;
755     END IF;
756 
757     IF l_SEG_rec.attribute5 = FND_API.G_MISS_CHAR THEN
758         l_SEG_rec.attribute5 := p_old_SEG_rec.attribute5;
759     END IF;
760 
761     IF l_SEG_rec.attribute6 = FND_API.G_MISS_CHAR THEN
762         l_SEG_rec.attribute6 := p_old_SEG_rec.attribute6;
763     END IF;
764 
765     IF l_SEG_rec.attribute7 = FND_API.G_MISS_CHAR THEN
766         l_SEG_rec.attribute7 := p_old_SEG_rec.attribute7;
767     END IF;
768 
769     IF l_SEG_rec.attribute8 = FND_API.G_MISS_CHAR THEN
770         l_SEG_rec.attribute8 := p_old_SEG_rec.attribute8;
771     END IF;
772 
773     IF l_SEG_rec.attribute9 = FND_API.G_MISS_CHAR THEN
774         l_SEG_rec.attribute9 := p_old_SEG_rec.attribute9;
775     END IF;
776 
777     IF l_SEG_rec.availability_in_basic = FND_API.G_MISS_CHAR THEN
778         l_SEG_rec.availability_in_basic := p_old_SEG_rec.availability_in_basic;
779     END IF;
780 
781     IF l_SEG_rec.context = FND_API.G_MISS_CHAR THEN
782         l_SEG_rec.context := p_old_SEG_rec.context;
783     END IF;
784 
785     IF l_SEG_rec.created_by = FND_API.G_MISS_NUM THEN
786         l_SEG_rec.created_by := p_old_SEG_rec.created_by;
787     END IF;
788 
789     IF l_SEG_rec.creation_date = FND_API.G_MISS_DATE THEN
790         l_SEG_rec.creation_date := p_old_SEG_rec.creation_date;
791     END IF;
792 
793     IF l_SEG_rec.last_updated_by = FND_API.G_MISS_NUM THEN
794         l_SEG_rec.last_updated_by := p_old_SEG_rec.last_updated_by;
795     END IF;
796 
797     IF l_SEG_rec.last_update_date = FND_API.G_MISS_DATE THEN
798         l_SEG_rec.last_update_date := p_old_SEG_rec.last_update_date;
799     END IF;
800 
801     IF l_SEG_rec.last_update_login = FND_API.G_MISS_NUM THEN
802         l_SEG_rec.last_update_login := p_old_SEG_rec.last_update_login;
803     END IF;
804 
805     IF l_SEG_rec.prc_context_id = FND_API.G_MISS_NUM THEN
806         l_SEG_rec.prc_context_id := p_old_SEG_rec.prc_context_id;
807     END IF;
808 
809     IF l_SEG_rec.program_application_id = FND_API.G_MISS_NUM THEN
810         l_SEG_rec.program_application_id := p_old_SEG_rec.program_application_id;
811     END IF;
812 
813     IF l_SEG_rec.program_id = FND_API.G_MISS_NUM THEN
814         l_SEG_rec.program_id := p_old_SEG_rec.program_id;
815     END IF;
816 
817     IF l_SEG_rec.program_update_date = FND_API.G_MISS_DATE THEN
818         l_SEG_rec.program_update_date := p_old_SEG_rec.program_update_date;
819     END IF;
820 
821     IF l_SEG_rec.seeded_flag = FND_API.G_MISS_CHAR THEN
822         l_SEG_rec.seeded_flag := p_old_SEG_rec.seeded_flag;
823     END IF;
824 
825     IF l_SEG_rec.seeded_format_type = FND_API.G_MISS_CHAR THEN
826         l_SEG_rec.seeded_format_type := p_old_SEG_rec.seeded_format_type;
827     END IF;
828 
829     IF l_SEG_rec.seeded_precedence = FND_API.G_MISS_NUM THEN
830         l_SEG_rec.seeded_precedence := p_old_SEG_rec.seeded_precedence;
831     END IF;
832 
833     IF l_SEG_rec.seeded_segment_name = FND_API.G_MISS_CHAR THEN
834         l_SEG_rec.seeded_segment_name := p_old_SEG_rec.seeded_segment_name;
835     END IF;
836 
837     IF l_SEG_rec.seeded_description = FND_API.G_MISS_CHAR THEN
838         l_SEG_rec.seeded_description := p_old_SEG_rec.seeded_description;
839     END IF;
840 
841     IF l_SEG_rec.user_description = FND_API.G_MISS_CHAR THEN
842         l_SEG_rec.user_description := p_old_SEG_rec.user_description;
843     END IF;
844 
845     IF l_SEG_rec.seeded_valueset_id = FND_API.G_MISS_NUM THEN
846         l_SEG_rec.seeded_valueset_id := p_old_SEG_rec.seeded_valueset_id;
847     END IF;
848 
849     IF l_SEG_rec.segment_code = FND_API.G_MISS_CHAR THEN
850         l_SEG_rec.segment_code := p_old_SEG_rec.segment_code;
851     END IF;
852 
853     IF l_SEG_rec.segment_id = FND_API.G_MISS_NUM THEN
854         l_SEG_rec.segment_id := p_old_SEG_rec.segment_id;
855     END IF;
856 
857     IF l_SEG_rec.application_id = FND_API.G_MISS_NUM THEN
858         l_SEG_rec.application_id := p_old_SEG_rec.application_id;
859     END IF;
860 
861     IF l_SEG_rec.segment_mapping_column = FND_API.G_MISS_CHAR THEN
862         l_SEG_rec.segment_mapping_column := p_old_SEG_rec.segment_mapping_column;
863     END IF;
864 
865     IF l_SEG_rec.user_format_type = FND_API.G_MISS_CHAR THEN
866         l_SEG_rec.user_format_type := p_old_SEG_rec.user_format_type;
867     END IF;
868 
869     IF l_SEG_rec.user_precedence = FND_API.G_MISS_NUM THEN
870         l_SEG_rec.user_precedence := p_old_SEG_rec.user_precedence;
871     END IF;
872 
873     IF l_SEG_rec.user_segment_name = FND_API.G_MISS_CHAR THEN
874         l_SEG_rec.user_segment_name := p_old_SEG_rec.user_segment_name;
875     END IF;
876 
877     IF l_SEG_rec.user_valueset_id = FND_API.G_MISS_NUM THEN
878         l_SEG_rec.user_valueset_id := p_old_SEG_rec.user_valueset_id;
879     END IF;
880 
881     IF l_SEG_rec.required_flag = FND_API.G_MISS_CHAR THEN
882         l_SEG_rec.required_flag := p_old_SEG_rec.required_flag;
883     END IF;
884 -- Added for TCA
885     IF l_SEG_rec.party_hierarchy_enabled_flag = FND_API.G_MISS_CHAR THEN
886         l_SEG_rec.party_hierarchy_enabled_flag := p_old_SEG_rec.party_hierarchy_enabled_flag;
887     END IF;
888     RETURN l_SEG_rec;
889 
890 END Complete_Record;
891 
892 --  Function Convert_Miss_To_Null
893 
894 FUNCTION Convert_Miss_To_Null
895 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
896 ) RETURN QP_Attributes_PUB.Seg_Rec_Type
897 IS
898 l_SEG_rec                     QP_Attributes_PUB.Seg_Rec_Type := p_SEG_rec;
899 BEGIN
900 
901     IF l_SEG_rec.attribute1 = FND_API.G_MISS_CHAR THEN
902         l_SEG_rec.attribute1 := NULL;
903     END IF;
904 
905     IF l_SEG_rec.attribute10 = FND_API.G_MISS_CHAR THEN
906         l_SEG_rec.attribute10 := NULL;
907     END IF;
908 
909     IF l_SEG_rec.attribute11 = FND_API.G_MISS_CHAR THEN
910         l_SEG_rec.attribute11 := NULL;
911     END IF;
912 
913     IF l_SEG_rec.attribute12 = FND_API.G_MISS_CHAR THEN
914         l_SEG_rec.attribute12 := NULL;
915     END IF;
916 
917     IF l_SEG_rec.attribute13 = FND_API.G_MISS_CHAR THEN
918         l_SEG_rec.attribute13 := NULL;
919     END IF;
920 
921     IF l_SEG_rec.attribute14 = FND_API.G_MISS_CHAR THEN
922         l_SEG_rec.attribute14 := NULL;
923     END IF;
924 
925     IF l_SEG_rec.attribute15 = FND_API.G_MISS_CHAR THEN
926         l_SEG_rec.attribute15 := NULL;
927     END IF;
928 
929     IF l_SEG_rec.attribute2 = FND_API.G_MISS_CHAR THEN
930         l_SEG_rec.attribute2 := NULL;
931     END IF;
932 
933     IF l_SEG_rec.attribute3 = FND_API.G_MISS_CHAR THEN
934         l_SEG_rec.attribute3 := NULL;
935     END IF;
936 
937     IF l_SEG_rec.attribute4 = FND_API.G_MISS_CHAR THEN
938         l_SEG_rec.attribute4 := NULL;
939     END IF;
940 
941     IF l_SEG_rec.attribute5 = FND_API.G_MISS_CHAR THEN
942         l_SEG_rec.attribute5 := NULL;
943     END IF;
944 
945     IF l_SEG_rec.attribute6 = FND_API.G_MISS_CHAR THEN
946         l_SEG_rec.attribute6 := NULL;
947     END IF;
948 
949     IF l_SEG_rec.attribute7 = FND_API.G_MISS_CHAR THEN
950         l_SEG_rec.attribute7 := NULL;
951     END IF;
952 
953     IF l_SEG_rec.attribute8 = FND_API.G_MISS_CHAR THEN
954         l_SEG_rec.attribute8 := NULL;
955     END IF;
956 
957     IF l_SEG_rec.attribute9 = FND_API.G_MISS_CHAR THEN
958         l_SEG_rec.attribute9 := NULL;
959     END IF;
960 
961     IF l_SEG_rec.availability_in_basic = FND_API.G_MISS_CHAR THEN
962         l_SEG_rec.availability_in_basic := NULL;
963     END IF;
964 
965     IF l_SEG_rec.context = FND_API.G_MISS_CHAR THEN
966         l_SEG_rec.context := NULL;
967     END IF;
968 
969     IF l_SEG_rec.created_by = FND_API.G_MISS_NUM THEN
970         l_SEG_rec.created_by := NULL;
971     END IF;
972 
973     IF l_SEG_rec.creation_date = FND_API.G_MISS_DATE THEN
974         l_SEG_rec.creation_date := NULL;
975     END IF;
976 
977     IF l_SEG_rec.last_updated_by = FND_API.G_MISS_NUM THEN
978         l_SEG_rec.last_updated_by := NULL;
979     END IF;
980 
981     IF l_SEG_rec.last_update_date = FND_API.G_MISS_DATE THEN
982         l_SEG_rec.last_update_date := NULL;
983     END IF;
984 
985     IF l_SEG_rec.last_update_login = FND_API.G_MISS_NUM THEN
986         l_SEG_rec.last_update_login := NULL;
987     END IF;
988 
989     IF l_SEG_rec.prc_context_id = FND_API.G_MISS_NUM THEN
990         l_SEG_rec.prc_context_id := NULL;
991     END IF;
992 
993     IF l_SEG_rec.program_application_id = FND_API.G_MISS_NUM THEN
994         l_SEG_rec.program_application_id := NULL;
995     END IF;
996 
997     IF l_SEG_rec.program_id = FND_API.G_MISS_NUM THEN
998         l_SEG_rec.program_id := NULL;
999     END IF;
1000 
1001     IF l_SEG_rec.program_update_date = FND_API.G_MISS_DATE THEN
1002         l_SEG_rec.program_update_date := NULL;
1003     END IF;
1004 
1005     IF l_SEG_rec.seeded_flag = FND_API.G_MISS_CHAR THEN
1006         l_SEG_rec.seeded_flag := NULL;
1007     END IF;
1008 
1009     IF l_SEG_rec.seeded_format_type = FND_API.G_MISS_CHAR THEN
1010         l_SEG_rec.seeded_format_type := NULL;
1011     END IF;
1012 
1013     IF l_SEG_rec.seeded_precedence = FND_API.G_MISS_NUM THEN
1014         l_SEG_rec.seeded_precedence := NULL;
1015     END IF;
1016 
1017     IF l_SEG_rec.seeded_segment_name = FND_API.G_MISS_CHAR THEN
1018         l_SEG_rec.seeded_segment_name := NULL;
1019     END IF;
1020 
1021     IF l_SEG_rec.seeded_description = FND_API.G_MISS_CHAR THEN
1022         l_SEG_rec.seeded_description := NULL;
1023     END IF;
1024 
1025     IF l_SEG_rec.user_description = FND_API.G_MISS_CHAR THEN
1026         l_SEG_rec.user_description := NULL;
1027     END IF;
1028 
1029     IF l_SEG_rec.seeded_valueset_id = FND_API.G_MISS_NUM THEN
1030         l_SEG_rec.seeded_valueset_id := NULL;
1031     END IF;
1032 
1033     IF l_SEG_rec.segment_code = FND_API.G_MISS_CHAR THEN
1034         l_SEG_rec.segment_code := NULL;
1035     END IF;
1036 
1037     IF l_SEG_rec.segment_id = FND_API.G_MISS_NUM THEN
1038         l_SEG_rec.segment_id := NULL;
1039     END IF;
1040 
1041     IF l_SEG_rec.application_id = FND_API.G_MISS_NUM THEN
1042         l_SEG_rec.application_id := NULL;
1043     END IF;
1044 
1045     IF l_SEG_rec.segment_mapping_column = FND_API.G_MISS_CHAR THEN
1046         l_SEG_rec.segment_mapping_column := NULL;
1047     END IF;
1048 
1049     IF l_SEG_rec.user_format_type = FND_API.G_MISS_CHAR THEN
1050         l_SEG_rec.user_format_type := NULL;
1051     END IF;
1052 
1053     IF l_SEG_rec.user_precedence = FND_API.G_MISS_NUM THEN
1054         l_SEG_rec.user_precedence := NULL;
1055     END IF;
1056 
1057     IF l_SEG_rec.user_segment_name = FND_API.G_MISS_CHAR THEN
1058         l_SEG_rec.user_segment_name := NULL;
1059     END IF;
1060 
1061     IF l_SEG_rec.user_valueset_id = FND_API.G_MISS_NUM THEN
1062         l_SEG_rec.user_valueset_id := NULL;
1063     END IF;
1064 
1065     IF l_SEG_rec.required_flag = FND_API.G_MISS_CHAR THEN
1066 	l_SEG_rec.required_flag := NULL;
1067     END IF;
1068 -- Added for TCA
1069     IF l_SEG_rec.party_hierarchy_enabled_flag = FND_API.G_MISS_CHAR THEN
1070 	l_SEG_rec.party_hierarchy_enabled_flag:= NULL;
1071     END IF;
1072 
1073     RETURN l_SEG_rec;
1074 
1075 END Convert_Miss_To_Null;
1076 
1077 --  Procedure Update_Row
1078 
1079 PROCEDURE Update_Row
1080 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
1081 )
1082 IS
1083   l_prc_context_code     varchar2(30);
1084   l_prc_context_type     varchar2(30);
1085   l_seg_flex_row         fnd_descr_flex_column_usages%rowtype;
1086 BEGIN
1087 
1088     UPDATE  QP_SEGMENTS_b
1089     SET     ATTRIBUTE1                     = p_SEG_rec.attribute1
1090     ,       ATTRIBUTE10                    = p_SEG_rec.attribute10
1091     ,       ATTRIBUTE11                    = p_SEG_rec.attribute11
1092     ,       ATTRIBUTE12                    = p_SEG_rec.attribute12
1093     ,       ATTRIBUTE13                    = p_SEG_rec.attribute13
1094     ,       ATTRIBUTE14                    = p_SEG_rec.attribute14
1095     ,       ATTRIBUTE15                    = p_SEG_rec.attribute15
1096     ,       ATTRIBUTE2                     = p_SEG_rec.attribute2
1097     ,       ATTRIBUTE3                     = p_SEG_rec.attribute3
1098     ,       ATTRIBUTE4                     = p_SEG_rec.attribute4
1099     ,       ATTRIBUTE5                     = p_SEG_rec.attribute5
1100     ,       ATTRIBUTE6                     = p_SEG_rec.attribute6
1101     ,       ATTRIBUTE7                     = p_SEG_rec.attribute7
1102     ,       ATTRIBUTE8                     = p_SEG_rec.attribute8
1103     ,       ATTRIBUTE9                     = p_SEG_rec.attribute9
1104     ,       AVAILABILITY_IN_BASIC          = p_SEG_rec.availability_in_basic
1105     ,       CONTEXT                        = p_SEG_rec.context
1106     ,       CREATED_BY                     = p_SEG_rec.created_by
1107     ,       CREATION_DATE                  = p_SEG_rec.creation_date
1108     ,       LAST_UPDATED_BY                = p_SEG_rec.last_updated_by
1109     ,       LAST_UPDATE_DATE               = p_SEG_rec.last_update_date
1110     ,       LAST_UPDATE_LOGIN              = p_SEG_rec.last_update_login
1111     ,       PRC_CONTEXT_ID                 = p_SEG_rec.prc_context_id
1112     ,       PROGRAM_APPLICATION_ID         = p_SEG_rec.program_application_id
1113     ,       PROGRAM_ID                     = p_SEG_rec.program_id
1114     ,       PROGRAM_UPDATE_DATE            = p_SEG_rec.program_update_date
1115     ,       SEEDED_FLAG                    = p_SEG_rec.seeded_flag
1116     ,       SEEDED_FORMAT_TYPE             = p_SEG_rec.seeded_format_type
1117     ,       SEEDED_PRECEDENCE              = p_SEG_rec.seeded_precedence
1118     ,       SEEDED_VALUESET_ID             = p_SEG_rec.seeded_valueset_id
1119     ,       SEGMENT_code                   = p_SEG_rec.segment_code
1120     ,       SEGMENT_ID                     = p_SEG_rec.segment_id
1121     ,       APPLICATION_ID                 = p_SEG_rec.application_id
1122     ,       SEGMENT_MAPPING_COLUMN         = p_SEG_rec.segment_mapping_column
1123     ,       USER_FORMAT_TYPE               = p_SEG_rec.user_format_type
1124     ,       USER_PRECEDENCE                = p_SEG_rec.user_precedence
1125     ,       USER_VALUESET_ID               = p_SEG_rec.user_valueset_id
1126     ,       REQUIRED_FLAG  	           = p_SEG_rec.required_flag
1127     ,       PARTY_HIERARCHY_ENABLED_FLAG        = p_SEG_rec.party_hierarchy_enabled_flag -- Added for TCA
1128     WHERE   SEGMENT_ID = p_SEG_rec.segment_id ;
1129 
1130     UPDATE  qp_segments_tl
1131     SET     CREATED_BY                     = p_SEG_rec.created_by
1132     ,       CREATION_DATE                  = p_SEG_rec.creation_date
1133     ,       LAST_UPDATED_BY                = p_SEG_rec.last_updated_by
1134     ,       LAST_UPDATE_DATE               = p_SEG_rec.last_update_date
1135     ,       LAST_UPDATE_LOGIN              = p_SEG_rec.last_update_login
1136     ,       seeded_segment_name            = p_SEG_rec.seeded_segment_name
1137     ,       user_segment_name              = p_SEG_rec.user_segment_name
1138     ,       seeded_description              = p_SEG_rec.seeded_description
1139     ,       user_description              = p_SEG_rec.user_description
1140     ,       SOURCE_LANG                    = userenv('LANG')
1141     WHERE   segment_id = p_SEG_rec.segment_id and
1142             userenv('LANG') in (LANGUAGE, SOURCE_LANG);
1143     ---
1144     select prc_context_type,
1145            prc_context_code
1146     into l_prc_context_type,
1147          l_prc_context_code
1148     from qp_prc_contexts_b
1149     where prc_context_id = p_SEG_rec.prc_context_id;
1150     --
1151     if l_prc_context_type = 'PRICING_ATTRIBUTE' then
1152       select *
1153       into l_seg_flex_row
1154       from fnd_descr_flex_column_usages
1155       where application_id = 661 and
1156             descriptive_flexfield_name = 'QP_ATTR_DEFNS_PRICING' and
1157             descriptive_flex_context_code = l_prc_context_code and
1158             application_column_name = p_SEG_rec.segment_mapping_column and
1159             rownum = 1;
1160       --
1161       FND_DESCR_FLEX_COL_USAGE_PKG.UPDATE_ROW(
1162         X_APPLICATION_ID => 661,
1163         X_DESCRIPTIVE_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_PRICING',
1164         X_DESCRIPTIVE_FLEX_CONTEXT_COD => l_prc_context_code,
1165         X_APPLICATION_COLUMN_NAME => p_SEG_rec.segment_mapping_column,
1166         X_END_USER_COLUMN_NAME => p_SEG_rec.segment_code,
1167         X_COLUMN_SEQ_NUM => p_SEG_rec.user_precedence,
1168         X_ENABLED_FLAG => l_seg_flex_row.enabled_flag,
1169         X_REQUIRED_FLAG => NVL(p_SEG_rec.required_flag, 'N'),
1170         X_SECURITY_ENABLED_FLAG => l_seg_flex_row.security_enabled_flag,
1171         X_DISPLAY_FLAG => l_seg_flex_row.display_flag,
1172         X_DISPLAY_SIZE => l_seg_flex_row.display_size,
1173         X_MAXIMUM_DESCRIPTION_LEN => l_seg_flex_row.maximum_description_len,
1174         X_CONCATENATION_DESCRIPTION_LE => l_seg_flex_row.concatenation_description_len,
1175         X_FLEX_VALUE_SET_ID => p_SEG_rec.user_valueset_id,
1176         X_RANGE_CODE => l_seg_flex_row.range_code,
1177         X_DEFAULT_TYPE => l_seg_flex_row.default_type,
1178         X_DEFAULT_VALUE => l_seg_flex_row.default_value,
1179         X_RUNTIME_PROPERTY_FUNCTION => l_seg_flex_row.runtime_property_function,
1180         X_SRW_PARAM => l_seg_flex_row.srw_param,
1181         X_FORM_LEFT_PROMPT => p_SEG_rec.user_segment_name,
1182         X_FORM_ABOVE_PROMPT => p_SEG_rec.user_segment_name,
1183         X_DESCRIPTION => p_SEG_rec.user_segment_name,
1184         X_LAST_UPDATE_DATE => p_SEG_rec.LAST_UPDATE_DATE,
1185         X_LAST_UPDATED_BY => p_SEG_rec.LAST_UPDATED_BY,
1186         X_LAST_UPDATE_LOGIN => p_SEG_rec.LAST_UPDATE_LOGIN);
1187 
1188       -- Freezing and Compiling the Flexfield.
1189       p_compile_flexfields(p_SEG_rec.segment_mapping_column);
1190       --
1191     end if;
1192 
1193 EXCEPTION
1194 
1195     WHEN OTHERS THEN
1196 
1197         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1198         THEN
1199             OE_MSG_PUB.Add_Exc_Msg
1200             (   G_PKG_NAME
1201             ,   'Update_Row'
1202             );
1203         END IF;
1204 
1205         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1206 
1207 END Update_Row;
1208 
1209 --  Procedure Insert_Row
1210 
1211 PROCEDURE Insert_Row
1212 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
1213 )
1214 IS
1215   l_row_id             varchar2(25);
1216   l_prc_context_type   varchar2(30);
1217   l_prc_context_code   varchar2(30);
1218   req_id               number;
1219   attr_in_ff_exists    varchar2(1);
1220   --l_return_status     VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1221 BEGIN
1222     select prc_context_type,
1223            prc_context_code
1224     into l_prc_context_type,
1225          l_prc_context_code
1226     from qp_prc_contexts_b
1227     where prc_context_id = p_SEG_rec.prc_context_id;
1228     --
1229     if l_prc_context_type = 'PRICING_ATTRIBUTE' then
1230       begin
1231          select 's'
1232          into attr_in_ff_exists
1233          from fnd_descr_flex_column_usages
1234          where application_id = 661 and
1235                descriptive_flexfield_name = 'QP_ATTR_DEFNS_PRICING' and
1236                descriptive_flex_context_code = l_prc_context_code and
1237                end_user_column_name =  p_SEG_rec.segment_code and
1238                rownum = 1;
1239 
1240           --l_return_status := FND_API.G_RET_STS_ERROR;
1241           FND_MESSAGE.SET_NAME('QP','QP_ATTR_EXISTS_IN_FF');
1242           --FND_MESSAGE.SET_TOKEN('PTE_CODE', l_pte_code);
1243           OE_MSG_PUB.Add;
1244           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1245       exception
1246          when no_data_found then
1247               null;
1248       end;
1249     end if;
1250     ----
1251     INSERT  INTO QP_SEGMENTS_b
1252     (       ATTRIBUTE1
1253     ,       ATTRIBUTE10
1254     ,       ATTRIBUTE11
1255     ,       ATTRIBUTE12
1256     ,       ATTRIBUTE13
1257     ,       ATTRIBUTE14
1258     ,       ATTRIBUTE15
1259     ,       ATTRIBUTE2
1260     ,       ATTRIBUTE3
1261     ,       ATTRIBUTE4
1262     ,       ATTRIBUTE5
1263     ,       ATTRIBUTE6
1264     ,       ATTRIBUTE7
1265     ,       ATTRIBUTE8
1266     ,       ATTRIBUTE9
1267     ,       AVAILABILITY_IN_BASIC
1268     ,       CONTEXT
1269     ,       CREATED_BY
1270     ,       CREATION_DATE
1271     ,       LAST_UPDATED_BY
1272     ,       LAST_UPDATE_DATE
1273     ,       LAST_UPDATE_LOGIN
1274     ,       PRC_CONTEXT_ID
1275     ,       PROGRAM_APPLICATION_ID
1276     ,       PROGRAM_ID
1277     ,       PROGRAM_UPDATE_DATE
1278     ,       SEEDED_FLAG
1279     ,       SEEDED_FORMAT_TYPE
1280     ,       SEEDED_PRECEDENCE
1281     ,       SEEDED_VALUESET_ID
1282     ,       SEGMENT_code
1283     ,       SEGMENT_ID
1284     ,       APPLICATION_ID
1285     ,       SEGMENT_MAPPING_COLUMN
1286     ,       USER_FORMAT_TYPE
1287     ,       USER_PRECEDENCE
1288     ,       USER_VALUESET_ID
1289     ,	    REQUIRED_FLAG
1290     ,       PARTY_HIERARCHY_ENABLED_FLAG -- Added for TCA
1291     )
1292     VALUES
1293     (       p_SEG_rec.attribute1
1294     ,       p_SEG_rec.attribute10
1295     ,       p_SEG_rec.attribute11
1296     ,       p_SEG_rec.attribute12
1297     ,       p_SEG_rec.attribute13
1298     ,       p_SEG_rec.attribute14
1299     ,       p_SEG_rec.attribute15
1300     ,       p_SEG_rec.attribute2
1301     ,       p_SEG_rec.attribute3
1302     ,       p_SEG_rec.attribute4
1303     ,       p_SEG_rec.attribute5
1304     ,       p_SEG_rec.attribute6
1305     ,       p_SEG_rec.attribute7
1306     ,       p_SEG_rec.attribute8
1307     ,       p_SEG_rec.attribute9
1308     ,       p_SEG_rec.availability_in_basic
1309     ,       p_SEG_rec.context
1310     ,       p_SEG_rec.created_by
1311     ,       p_SEG_rec.creation_date
1312     ,       p_SEG_rec.last_updated_by
1313     ,       p_SEG_rec.last_update_date
1314     ,       p_SEG_rec.last_update_login
1315     ,       p_SEG_rec.prc_context_id
1316     ,       p_SEG_rec.program_application_id
1317     ,       p_SEG_rec.program_id
1318     ,       p_SEG_rec.program_update_date
1319     ,       p_SEG_rec.seeded_flag
1320     ,       p_SEG_rec.seeded_format_type
1321     ,       p_SEG_rec.seeded_precedence
1322     ,       p_SEG_rec.seeded_valueset_id
1323     ,       p_SEG_rec.segment_code
1324     ,       p_SEG_rec.segment_id
1325     ,       p_SEG_rec.application_id
1326     ,       p_SEG_rec.segment_mapping_column
1327     ,       p_SEG_rec.user_format_type
1328     ,       p_SEG_rec.user_precedence
1329     ,       p_SEG_rec.user_valueset_id
1330     ,       p_SEG_rec.required_flag
1331     ,       p_SEG_rec.party_hierarchy_enabled_flag   --Added for TCA
1332     );
1333 
1334     INSERT  INTO QP_segments_tl
1335     (       CREATED_BY
1336     ,       CREATION_DATE
1337     ,       LAST_UPDATED_BY
1338     ,       LAST_UPDATE_DATE
1339     ,       LAST_UPDATE_LOGIN
1340     ,       segment_id
1341     ,       seeded_segment_name
1342     ,       user_segment_name
1343     ,       seeded_description
1344     ,       user_description
1345     ,       language
1346     ,       source_lang
1347     )
1348     SELECT  p_SEG_rec.created_by
1349     ,       p_SEG_rec.creation_date
1350     ,       p_SEG_rec.last_updated_by
1351     ,       p_SEG_rec.last_update_date
1352     ,       p_SEG_rec.last_update_login
1353     ,       p_SEG_rec.segment_id
1354     ,       p_SEG_rec.seeded_segment_name
1355     ,       p_SEG_rec.user_segment_name
1356     ,       p_SEG_rec.seeded_description
1357     ,       p_SEG_rec.user_description
1358     ,       L.language_code
1359     ,       userenv('LANG')
1360     from  FND_LANGUAGES  L
1361     where  L.INSTALLED_FLAG in ('I', 'B')
1362     and    not exists
1363            ( select NULL
1364              from  qp_segments_tl T
1365              where  T.segment_id = p_SEG_rec.segment_id
1366              and  T.LANGUAGE = L.LANGUAGE_CODE );
1367     ---
1368     /*
1369     select prc_context_type,
1370            prc_context_code
1371     into l_prc_context_type,
1372          l_prc_context_code
1373     from qp_prc_contexts_b
1374     where prc_context_id = p_SEG_rec.prc_context_id;
1375     */
1376     --
1377     if l_prc_context_type = 'PRICING_ATTRIBUTE' then
1378       FND_DESCR_FLEX_COL_USAGE_PKG.INSERT_ROW(
1379         X_ROWID => l_row_id,
1380         X_APPLICATION_ID => 661,
1381         X_DESCRIPTIVE_FLEXFIELD_NAME => 'QP_ATTR_DEFNS_PRICING',
1382         X_DESCRIPTIVE_FLEX_CONTEXT_COD => l_prc_context_code,
1383         X_APPLICATION_COLUMN_NAME => p_SEG_rec.segment_mapping_column,
1384         X_END_USER_COLUMN_NAME => p_SEG_rec.segment_code,
1385         X_COLUMN_SEQ_NUM => p_SEG_rec.user_precedence,
1386         X_ENABLED_FLAG => 'Y',
1387         X_REQUIRED_FLAG => NVL(p_SEG_rec.required_flag, 'N'),
1388         X_SECURITY_ENABLED_FLAG => 'N',
1389         X_DISPLAY_FLAG => 'Y',
1390         X_DISPLAY_SIZE => 35,
1391         X_MAXIMUM_DESCRIPTION_LEN => 50,
1392         X_CONCATENATION_DESCRIPTION_LE => 25,
1393         X_FLEX_VALUE_SET_ID => p_SEG_rec.user_valueset_id,
1394         X_RANGE_CODE => null,
1395         X_DEFAULT_TYPE => null,
1396         X_DEFAULT_VALUE => null,
1397         X_RUNTIME_PROPERTY_FUNCTION => null,
1398         X_SRW_PARAM => null,
1399         X_FORM_LEFT_PROMPT => p_SEG_rec.user_segment_name,
1400         X_FORM_ABOVE_PROMPT => p_SEG_rec.user_segment_name,
1401         X_DESCRIPTION => p_SEG_rec.user_segment_name,
1402         X_CREATION_DATE => p_SEG_rec.CREATION_DATE,
1403         X_CREATED_BY => p_SEG_rec.CREATED_BY,
1404         X_LAST_UPDATE_DATE => p_SEG_rec.LAST_UPDATE_DATE,
1405         X_LAST_UPDATED_BY => p_SEG_rec.LAST_UPDATED_BY,
1406         X_LAST_UPDATE_LOGIN => p_SEG_rec.LAST_UPDATE_LOGIN);
1407 
1408       -- Freezing and Compiling the Flexfield.
1409       p_compile_flexfields(p_SEG_rec.segment_mapping_column);
1410       --
1411     end if;
1412     --
1413 EXCEPTION
1414 
1415     WHEN OTHERS THEN
1416 
1417         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1418         THEN
1419             OE_MSG_PUB.Add_Exc_Msg
1420             (   G_PKG_NAME
1421             ,   'Insert_Row'
1422             );
1423         END IF;
1424 
1425         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1426 
1427 END Insert_Row;
1428 
1429 --  Procedure Delete_Row
1430 
1431 PROCEDURE Delete_Row
1432 (   p_segment_id                    IN  NUMBER
1433 )
1434 IS
1435   l_prc_context_type          varchar2(30);
1436   l_prc_context_code          varchar2(30);
1437   l_segment_code              varchar2(30);
1438   l_seeded_flag               varchar2(1);
1439 BEGIN
1440 
1441     select a.prc_context_type,
1442            a.prc_context_code,
1443            b.segment_code,
1444            b.seeded_flag
1445     into l_prc_context_type,
1446          l_prc_context_code,
1447          l_segment_code,
1448          l_seeded_flag
1449     from qp_prc_contexts_b a,
1450          qp_segments_b b
1451     where a.prc_context_id = b.prc_context_id and
1452           b.segment_id = p_segment_id;
1453     --
1454     DELETE  FROM QP_SEGMENTS_b
1455     WHERE   SEGMENT_ID = p_segment_id ;
1456     DELETE  FROM QP_SEGMENTS_tl
1457     WHERE   SEGMENT_ID = p_segment_id ;
1458     ---
1459     ---
1460     if l_prc_context_type = 'PRICING_ATTRIBUTE' and l_seeded_flag = 'N' then
1461        begin
1462        fnd_flex_dsc_api.delete_segment(
1463            APPL_SHORT_NAME => 'QP',
1464            FLEXFIELD_NAME => 'QP_ATTR_DEFNS_PRICING',
1465            CONTEXT => l_prc_context_code,
1466            SEGMENT => l_segment_code);
1467        exception
1468          when no_data_found then
1469             null;
1470        end;
1471        --
1472     end if;
1473 
1474 EXCEPTION
1475 
1476     WHEN OTHERS THEN
1477 
1478         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1479         THEN
1480             OE_MSG_PUB.Add_Exc_Msg
1481             (   G_PKG_NAME
1482             ,   'Delete_Row'
1483             );
1484         END IF;
1485 
1486         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1487 
1488 END Delete_Row;
1489 
1490 --  Function Query_Row
1491 
1492 FUNCTION Query_Row
1493 (   p_segment_id                    IN  NUMBER
1494 ) RETURN QP_Attributes_PUB.Seg_Rec_Type
1495 IS
1496 BEGIN
1497 
1498     RETURN Query_Rows
1499         (   p_segment_id                  => p_segment_id
1500         )(1);
1501 
1502 END Query_Row;
1503 
1504 --  Function Query_Rows
1505 
1506 --
1507 
1508 FUNCTION Query_Rows
1509 (   p_segment_id                    IN  NUMBER :=
1510                                         FND_API.G_MISS_NUM
1511 ,   p_prc_context_id                IN  NUMBER :=
1512                                         FND_API.G_MISS_NUM
1513 ) RETURN QP_Attributes_PUB.Seg_Tbl_Type
1514 IS
1515 l_SEG_rec                     QP_Attributes_PUB.Seg_Rec_Type;
1516 l_SEG_tbl                     QP_Attributes_PUB.Seg_Tbl_Type;
1517 
1518 CURSOR l_SEG_csr IS
1519     SELECT  ATTRIBUTE1
1520     ,       ATTRIBUTE10
1521     ,       ATTRIBUTE11
1522     ,       ATTRIBUTE12
1523     ,       ATTRIBUTE13
1524     ,       ATTRIBUTE14
1525     ,       ATTRIBUTE15
1526     ,       ATTRIBUTE2
1527     ,       ATTRIBUTE3
1528     ,       ATTRIBUTE4
1529     ,       ATTRIBUTE5
1530     ,       ATTRIBUTE6
1531     ,       ATTRIBUTE7
1532     ,       ATTRIBUTE8
1533     ,       ATTRIBUTE9
1534     ,       AVAILABILITY_IN_BASIC
1535     ,       CONTEXT
1536     ,       CREATED_BY
1537     ,       CREATION_DATE
1538     ,       LAST_UPDATED_BY
1539     ,       LAST_UPDATE_DATE
1540     ,       LAST_UPDATE_LOGIN
1541     ,       PRC_CONTEXT_ID
1542     ,       PROGRAM_APPLICATION_ID
1543     ,       PROGRAM_ID
1544     ,       PROGRAM_UPDATE_DATE
1545     ,       SEEDED_FLAG
1546     ,       SEEDED_FORMAT_TYPE
1547     ,       SEEDED_PRECEDENCE
1548     ,       SEEDED_SEGMENT_NAME
1549     , 	    SEEDED_DESCRIPTION
1550     ,       SEEDED_VALUESET_ID
1551     ,       SEGMENT_code
1552     ,       SEGMENT_ID
1553     ,       APPLICATION_ID
1554     ,       SEGMENT_MAPPING_COLUMN
1555     ,       USER_FORMAT_TYPE
1556     ,       USER_PRECEDENCE
1557     ,       USER_SEGMENT_NAME
1558     ,       USER_DESCRIPTION
1559     ,       USER_VALUESET_ID
1560     ,	    REQUIRED_FLAG
1561     ,       PARTY_HIERARCHY_ENABLED_FLAG   -- Added for TCA
1562     FROM    QP_SEGMENTS_V
1563     WHERE ( SEGMENT_ID = p_segment_id
1564     )
1565     OR (    PRC_CONTEXT_ID = p_prc_context_id
1566     );
1567 
1568 BEGIN
1569 
1570     IF
1571     (p_segment_id IS NOT NULL
1572      AND
1573      p_segment_id <> FND_API.G_MISS_NUM)
1574     AND
1575     (p_prc_context_id IS NOT NULL
1576      AND
1577      p_prc_context_id <> FND_API.G_MISS_NUM)
1578     THEN
1579             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1580             THEN
1581                 OE_MSG_PUB.Add_Exc_Msg
1582                 (   G_PKG_NAME
1583                 ,   'Query Rows'
1584                 ,   'Keys are mutually exclusive: segment_id = '|| p_segment_id || ', prc_context_id = '|| p_prc_context_id
1585                 );
1586             END IF;
1587 
1588         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1589 
1590     END IF;
1591 
1592 
1593     --  Loop over fetched records
1594 
1595     FOR l_implicit_rec IN l_SEG_csr LOOP
1596 
1597         l_SEG_rec.attribute1           := l_implicit_rec.ATTRIBUTE1;
1598         l_SEG_rec.attribute10          := l_implicit_rec.ATTRIBUTE10;
1599         l_SEG_rec.attribute11          := l_implicit_rec.ATTRIBUTE11;
1600         l_SEG_rec.attribute12          := l_implicit_rec.ATTRIBUTE12;
1601         l_SEG_rec.attribute13          := l_implicit_rec.ATTRIBUTE13;
1602         l_SEG_rec.attribute14          := l_implicit_rec.ATTRIBUTE14;
1603         l_SEG_rec.attribute15          := l_implicit_rec.ATTRIBUTE15;
1604         l_SEG_rec.attribute2           := l_implicit_rec.ATTRIBUTE2;
1605         l_SEG_rec.attribute3           := l_implicit_rec.ATTRIBUTE3;
1606         l_SEG_rec.attribute4           := l_implicit_rec.ATTRIBUTE4;
1607         l_SEG_rec.attribute5           := l_implicit_rec.ATTRIBUTE5;
1608         l_SEG_rec.attribute6           := l_implicit_rec.ATTRIBUTE6;
1609         l_SEG_rec.attribute7           := l_implicit_rec.ATTRIBUTE7;
1610         l_SEG_rec.attribute8           := l_implicit_rec.ATTRIBUTE8;
1611         l_SEG_rec.attribute9           := l_implicit_rec.ATTRIBUTE9;
1612         l_SEG_rec.availability_in_basic := l_implicit_rec.AVAILABILITY_IN_BASIC;
1613         l_SEG_rec.context              := l_implicit_rec.CONTEXT;
1614         l_SEG_rec.created_by           := l_implicit_rec.CREATED_BY;
1615         l_SEG_rec.creation_date        := l_implicit_rec.CREATION_DATE;
1616         l_SEG_rec.last_updated_by      := l_implicit_rec.LAST_UPDATED_BY;
1617         l_SEG_rec.last_update_date     := l_implicit_rec.LAST_UPDATE_DATE;
1618         l_SEG_rec.last_update_login    := l_implicit_rec.LAST_UPDATE_LOGIN;
1619         l_SEG_rec.prc_context_id       := l_implicit_rec.PRC_CONTEXT_ID;
1620         l_SEG_rec.program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
1621         l_SEG_rec.program_id           := l_implicit_rec.PROGRAM_ID;
1622         l_SEG_rec.program_update_date  := l_implicit_rec.PROGRAM_UPDATE_DATE;
1623         l_SEG_rec.seeded_flag          := l_implicit_rec.SEEDED_FLAG;
1624         l_SEG_rec.seeded_format_type   := l_implicit_rec.SEEDED_FORMAT_TYPE;
1625         l_SEG_rec.seeded_precedence    := l_implicit_rec.SEEDED_PRECEDENCE;
1626         l_SEG_rec.seeded_segment_name  := l_implicit_rec.SEEDED_SEGMENT_NAME;
1627         l_SEG_rec.seeded_description   := l_implicit_rec.seeded_description;
1628         l_SEG_rec.user_description        := l_implicit_rec.user_description;
1629         l_SEG_rec.seeded_valueset_id   := l_implicit_rec.SEEDED_VALUESET_ID;
1630         l_SEG_rec.segment_code      := l_implicit_rec.SEGMENT_code;
1631         l_SEG_rec.segment_id           := l_implicit_rec.SEGMENT_ID;
1632         l_SEG_rec.application_id       := l_implicit_rec.APPLICATION_ID;
1633         l_SEG_rec.segment_mapping_column := l_implicit_rec.SEGMENT_MAPPING_COLUMN;
1634         l_SEG_rec.user_format_type     := l_implicit_rec.USER_FORMAT_TYPE;
1635         l_SEG_rec.user_precedence      := l_implicit_rec.USER_PRECEDENCE;
1636         l_SEG_rec.user_segment_name    := l_implicit_rec.USER_SEGMENT_NAME;
1637         l_SEG_rec.user_valueset_id     := l_implicit_rec.USER_VALUESET_ID;
1638         l_SEG_rec.required_flag	       := l_implicit_rec.REQUIRED_FLAG;
1639         l_SEG_rec.party_hierarchy_enabled_flag := l_implicit_rec.PARTY_HIERARCHY_ENABLED_FLAG;  -- Added for TCA
1640 
1641         l_SEG_tbl(l_SEG_tbl.COUNT + 1) := l_SEG_rec;
1642 
1643     END LOOP;
1644 
1645 
1646     --  PK sent and no rows found
1647 
1648     IF
1649     (p_segment_id IS NOT NULL
1650      AND
1651      p_segment_id <> FND_API.G_MISS_NUM)
1652     AND
1653     (l_SEG_tbl.COUNT = 0)
1654     THEN
1655         RAISE NO_DATA_FOUND;
1656     END IF;
1657 
1658 
1659     --  Return fetched table
1660 
1661     RETURN l_SEG_tbl;
1662 
1663 EXCEPTION
1664 
1665     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1666 
1667         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1668 
1669     WHEN OTHERS THEN
1670 
1671         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1672         THEN
1673             OE_MSG_PUB.Add_Exc_Msg
1674             (   G_PKG_NAME
1675             ,   'Query_Rows'
1676             );
1677         END IF;
1678 
1679         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1680 
1681 END Query_Rows;
1682 
1683 --  Procedure       lock_Row
1684 --
1685 
1686 PROCEDURE Lock_Row
1687 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1688 ,   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
1689 ,   x_SEG_rec                       OUT NOCOPY /* file.sql.39 change */ QP_Attributes_PUB.Seg_Rec_Type
1690 )
1691 IS
1692 l_SEG_rec                     QP_Attributes_PUB.Seg_Rec_Type;
1693 BEGIN
1694 
1695     SELECT  ATTRIBUTE1
1696     ,       ATTRIBUTE10
1697     ,       ATTRIBUTE11
1698     ,       ATTRIBUTE12
1699     ,       ATTRIBUTE13
1700     ,       ATTRIBUTE14
1701     ,       ATTRIBUTE15
1702     ,       ATTRIBUTE2
1703     ,       ATTRIBUTE3
1704     ,       ATTRIBUTE4
1705     ,       ATTRIBUTE5
1706     ,       ATTRIBUTE6
1707     ,       ATTRIBUTE7
1708     ,       ATTRIBUTE8
1709     ,       ATTRIBUTE9
1710     ,       AVAILABILITY_IN_BASIC
1711     ,       CONTEXT
1712     ,       CREATED_BY
1713     ,       CREATION_DATE
1714     ,       LAST_UPDATED_BY
1715     ,       LAST_UPDATE_DATE
1716     ,       LAST_UPDATE_LOGIN
1717     ,       PRC_CONTEXT_ID
1718     ,       PROGRAM_APPLICATION_ID
1719     ,       PROGRAM_ID
1720     ,       PROGRAM_UPDATE_DATE
1721     ,       SEEDED_FLAG
1722     ,       SEEDED_FORMAT_TYPE
1723     ,       SEEDED_PRECEDENCE
1724     ,       SEEDED_SEGMENT_NAME
1725     ,       SEEDED_DESCRIPTION
1726     ,       SEEDED_VALUESET_ID
1727     ,       SEGMENT_code
1728     ,       SEGMENT_ID
1729     ,       APPLICATION_ID
1730     ,       SEGMENT_MAPPING_COLUMN
1731     ,       USER_FORMAT_TYPE
1732     ,       USER_PRECEDENCE
1733     ,       USER_SEGMENT_NAME
1734     ,       USER_DESCRIPTION
1735     ,       USER_VALUESET_ID
1736     ,       REQUIRED_FLAG
1737     ,       PARTY_HIERARCHY_ENABLED_FLAG   --Added for TCA
1738     INTO    l_SEG_rec.attribute1
1739     ,       l_SEG_rec.attribute10
1740     ,       l_SEG_rec.attribute11
1741     ,       l_SEG_rec.attribute12
1742     ,       l_SEG_rec.attribute13
1743     ,       l_SEG_rec.attribute14
1744     ,       l_SEG_rec.attribute15
1745     ,       l_SEG_rec.attribute2
1746     ,       l_SEG_rec.attribute3
1747     ,       l_SEG_rec.attribute4
1748     ,       l_SEG_rec.attribute5
1749     ,       l_SEG_rec.attribute6
1750     ,       l_SEG_rec.attribute7
1751     ,       l_SEG_rec.attribute8
1752     ,       l_SEG_rec.attribute9
1753     ,       l_SEG_rec.availability_in_basic
1754     ,       l_SEG_rec.context
1755     ,       l_SEG_rec.created_by
1756     ,       l_SEG_rec.creation_date
1757     ,       l_SEG_rec.last_updated_by
1758     ,       l_SEG_rec.last_update_date
1759     ,       l_SEG_rec.last_update_login
1760     ,       l_SEG_rec.prc_context_id
1761     ,       l_SEG_rec.program_application_id
1762     ,       l_SEG_rec.program_id
1763     ,       l_SEG_rec.program_update_date
1764     ,       l_SEG_rec.seeded_flag
1765     ,       l_SEG_rec.seeded_format_type
1766     ,       l_SEG_rec.seeded_precedence
1767     ,       l_SEG_rec.seeded_segment_name
1768     ,       l_SEG_rec.seeded_description
1769     ,       l_SEG_rec.seeded_valueset_id
1770     ,       l_SEG_rec.segment_code
1771     ,       l_SEG_rec.segment_id
1772     ,       l_SEG_rec.application_id
1773     ,       l_SEG_rec.segment_mapping_column
1774     ,       l_SEG_rec.user_format_type
1775     ,       l_SEG_rec.user_precedence
1776     ,       l_SEG_rec.user_segment_name
1777     ,       l_SEG_rec.user_description
1778     ,       l_SEG_rec.user_valueset_id
1779     ,	    l_SEG_rec.required_flag
1780     ,       l_SEG_rec.party_hierarchy_enabled_flag   -- Added for TCA
1781     FROM    QP_SEGMENTS_V
1782     WHERE   SEGMENT_ID = p_SEG_rec.segment_id
1783         FOR UPDATE NOWAIT;
1784 
1785     --  Row locked. Compare IN attributes to DB attributes.
1786 
1787     IF  QP_GLOBALS.Equal(p_SEG_rec.attribute1,
1788                          l_SEG_rec.attribute1)
1789     AND QP_GLOBALS.Equal(p_SEG_rec.attribute10,
1790                          l_SEG_rec.attribute10)
1791     AND QP_GLOBALS.Equal(p_SEG_rec.attribute11,
1792                          l_SEG_rec.attribute11)
1793     AND QP_GLOBALS.Equal(p_SEG_rec.attribute12,
1794                          l_SEG_rec.attribute12)
1795     AND QP_GLOBALS.Equal(p_SEG_rec.attribute13,
1796                          l_SEG_rec.attribute13)
1797     AND QP_GLOBALS.Equal(p_SEG_rec.attribute14,
1798                          l_SEG_rec.attribute14)
1799     AND QP_GLOBALS.Equal(p_SEG_rec.attribute15,
1800                          l_SEG_rec.attribute15)
1801     AND QP_GLOBALS.Equal(p_SEG_rec.attribute2,
1802                          l_SEG_rec.attribute2)
1803     AND QP_GLOBALS.Equal(p_SEG_rec.attribute3,
1804                          l_SEG_rec.attribute3)
1805     AND QP_GLOBALS.Equal(p_SEG_rec.attribute4,
1806                          l_SEG_rec.attribute4)
1807     AND QP_GLOBALS.Equal(p_SEG_rec.attribute5,
1808                          l_SEG_rec.attribute5)
1809     AND QP_GLOBALS.Equal(p_SEG_rec.attribute6,
1810                          l_SEG_rec.attribute6)
1811     AND QP_GLOBALS.Equal(p_SEG_rec.attribute7,
1812                          l_SEG_rec.attribute7)
1813     AND QP_GLOBALS.Equal(p_SEG_rec.attribute8,
1814                          l_SEG_rec.attribute8)
1815     AND QP_GLOBALS.Equal(p_SEG_rec.attribute9,
1816                          l_SEG_rec.attribute9)
1817     AND QP_GLOBALS.Equal(p_SEG_rec.availability_in_basic,
1818                          l_SEG_rec.availability_in_basic)
1819     AND QP_GLOBALS.Equal(p_SEG_rec.context,
1820                          l_SEG_rec.context)
1821     AND QP_GLOBALS.Equal(p_SEG_rec.created_by,
1822                          l_SEG_rec.created_by)
1823     AND QP_GLOBALS.Equal(p_SEG_rec.creation_date,
1824                          l_SEG_rec.creation_date)
1825     AND QP_GLOBALS.Equal(p_SEG_rec.last_updated_by,
1826                          l_SEG_rec.last_updated_by)
1827     AND QP_GLOBALS.Equal(p_SEG_rec.last_update_date,
1828                          l_SEG_rec.last_update_date)
1829     AND QP_GLOBALS.Equal(p_SEG_rec.last_update_login,
1830                          l_SEG_rec.last_update_login)
1831     AND QP_GLOBALS.Equal(p_SEG_rec.prc_context_id,
1832                          l_SEG_rec.prc_context_id)
1833     AND QP_GLOBALS.Equal(p_SEG_rec.program_application_id,
1834                          l_SEG_rec.program_application_id)
1835     AND QP_GLOBALS.Equal(p_SEG_rec.program_id,
1836                          l_SEG_rec.program_id)
1837     AND QP_GLOBALS.Equal(p_SEG_rec.program_update_date,
1838                          l_SEG_rec.program_update_date)
1839     AND QP_GLOBALS.Equal(p_SEG_rec.seeded_flag,
1840                          l_SEG_rec.seeded_flag)
1841     AND QP_GLOBALS.Equal(p_SEG_rec.seeded_format_type,
1842                          l_SEG_rec.seeded_format_type)
1843     AND QP_GLOBALS.Equal(p_SEG_rec.seeded_precedence,
1844                          l_SEG_rec.seeded_precedence)
1845     AND QP_GLOBALS.Equal(p_SEG_rec.seeded_segment_name,
1846                          l_SEG_rec.seeded_segment_name)
1847     AND QP_GLOBALS.Equal(p_SEG_rec.seeded_valueset_id,
1848                          l_SEG_rec.seeded_valueset_id)
1849     AND QP_GLOBALS.Equal(p_SEG_rec.segment_code,
1850                          l_SEG_rec.segment_code)
1851     AND QP_GLOBALS.Equal(p_SEG_rec.segment_id,
1852                          l_SEG_rec.segment_id)
1853     AND QP_GLOBALS.Equal(p_SEG_rec.application_id,
1854                          l_SEG_rec.application_id)
1855     AND QP_GLOBALS.Equal(p_SEG_rec.segment_mapping_column,
1856                          l_SEG_rec.segment_mapping_column)
1857     AND QP_GLOBALS.Equal(p_SEG_rec.user_format_type,
1858                          l_SEG_rec.user_format_type)
1859     AND QP_GLOBALS.Equal(p_SEG_rec.user_precedence,
1860                          l_SEG_rec.user_precedence)
1861     AND QP_GLOBALS.Equal(p_SEG_rec.user_segment_name,
1862                          l_SEG_rec.user_segment_name)
1863     AND QP_GLOBALS.Equal( p_SEG_rec.seeded_description,
1864 			  l_SEG_rec.seeded_description)
1865     AND QP_GLOBALS.Equal( p_SEG_rec.user_description,
1866                           l_SEG_rec.user_description)
1867     AND QP_GLOBALS.Equal(p_SEG_rec.user_valueset_id,
1868                          l_SEG_rec.user_valueset_id)
1869     AND QP_GLOBALS.Equal(p_SEG_rec.required_flag,
1870                          l_SEG_rec.required_flag)
1871    -- Added for TCA
1872     AND QP_GLOBALS.Equal(p_SEG_rec.party_hierarchy_enabled_flag,
1873                          l_SEG_rec.party_hierarchy_enabled_flag)
1874 
1875     THEN
1876         --  Row has not changed. Set out parameter.
1877 
1878         x_SEG_rec                      := l_SEG_rec;
1879 
1880         --  Set return status
1881 
1882         x_return_status                := FND_API.G_RET_STS_SUCCESS;
1883         x_SEG_rec.return_status        := FND_API.G_RET_STS_SUCCESS;
1884 
1885     ELSE
1886 
1887         --  Row has changed by another user.
1888 
1889         x_return_status                := FND_API.G_RET_STS_ERROR;
1890         x_SEG_rec.return_status        := FND_API.G_RET_STS_ERROR;
1891 
1892         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1893         THEN
1894 
1895             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_CHANGED_abhi6');
1896             OE_MSG_PUB.Add;
1897 
1898         END IF;
1899 
1900     END IF;
1901 
1902 EXCEPTION
1903 
1904     WHEN NO_DATA_FOUND THEN
1905 
1906         x_return_status                := FND_API.G_RET_STS_ERROR;
1907         x_SEG_rec.return_status        := FND_API.G_RET_STS_ERROR;
1908 
1909         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1910         THEN
1911 
1912             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_DELETED');
1913             OE_MSG_PUB.Add;
1914 
1915         END IF;
1916     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
1917 
1918         x_return_status                := FND_API.G_RET_STS_ERROR;
1919         x_SEG_rec.return_status        := FND_API.G_RET_STS_ERROR;
1920 
1921         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
1922         THEN
1923 
1924             FND_MESSAGE.SET_NAME('QP','OE_LOCK_ROW_ALREADY_LOCKED');
1925             OE_MSG_PUB.Add;
1926 
1927         END IF;
1928     WHEN OTHERS THEN
1929 
1930         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
1931         x_SEG_rec.return_status        := FND_API.G_RET_STS_UNEXP_ERROR;
1932 
1933         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1934         THEN
1935             OE_MSG_PUB.Add_Exc_Msg
1936             (   G_PKG_NAME
1937             ,   'Lock_Row'
1938             );
1939         END IF;
1940 
1941 END Lock_Row;
1942 
1943 --  Function Get_Values
1944 
1945 FUNCTION Get_Values
1946 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
1947 ,   p_old_SEG_rec                   IN  QP_Attributes_PUB.Seg_Rec_Type :=
1948                                         QP_Attributes_PUB.G_MISS_SEG_REC
1949 ) RETURN QP_Attributes_PUB.Seg_Val_Rec_Type
1950 IS
1951 l_SEG_val_rec                 QP_Attributes_PUB.Seg_Val_Rec_Type;
1952 BEGIN
1953 
1954     IF p_SEG_rec.prc_context_id IS NOT NULL AND
1955         p_SEG_rec.prc_context_id <> FND_API.G_MISS_NUM AND
1956         NOT QP_GLOBALS.Equal(p_SEG_rec.prc_context_id,
1957         p_old_SEG_rec.prc_context_id)
1958     THEN
1959         l_SEG_val_rec.prc_context := QP_Id_To_Value.Prc_Context
1960         (   p_prc_context_id              => p_SEG_rec.prc_context_id
1961         );
1962     END IF;
1963 
1964     IF p_SEG_rec.seeded_flag IS NOT NULL AND
1965         p_SEG_rec.seeded_flag <> FND_API.G_MISS_CHAR AND
1966         NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_flag,
1967         p_old_SEG_rec.seeded_flag)
1968     THEN
1969         l_SEG_val_rec.seeded := QP_Id_To_Value.Seeded
1970         (   p_seeded_flag                 => p_SEG_rec.seeded_flag
1971         );
1972     END IF;
1973 
1974     IF p_SEG_rec.seeded_valueset_id IS NOT NULL AND
1975         p_SEG_rec.seeded_valueset_id <> FND_API.G_MISS_NUM AND
1976         NOT QP_GLOBALS.Equal(p_SEG_rec.seeded_valueset_id,
1977         p_old_SEG_rec.seeded_valueset_id)
1978     THEN
1979         l_SEG_val_rec.seeded_valueset := QP_Id_To_Value.Seeded_Valueset
1980         (   p_seeded_valueset_id          => p_SEG_rec.seeded_valueset_id
1981         );
1982     END IF;
1983 
1984     IF p_SEG_rec.segment_id IS NOT NULL AND
1985         p_SEG_rec.segment_id <> FND_API.G_MISS_NUM AND
1986         NOT QP_GLOBALS.Equal(p_SEG_rec.segment_id,
1987         p_old_SEG_rec.segment_id)
1988     THEN
1989         l_SEG_val_rec.segment := QP_Id_To_Value.Segment
1990         (   p_segment_id                  => p_SEG_rec.segment_id
1991         );
1992     END IF;
1993 
1994     IF p_SEG_rec.user_valueset_id IS NOT NULL AND
1995         p_SEG_rec.user_valueset_id <> FND_API.G_MISS_NUM AND
1996         NOT QP_GLOBALS.Equal(p_SEG_rec.user_valueset_id,
1997         p_old_SEG_rec.user_valueset_id)
1998     THEN
1999         l_SEG_val_rec.user_valueset := QP_Id_To_Value.User_Valueset
2000         (   p_user_valueset_id            => p_SEG_rec.user_valueset_id
2001         );
2002     END IF;
2003 
2004     RETURN l_SEG_val_rec;
2005 
2006 END Get_Values;
2007 
2008 --  Function Get_Ids
2009 
2010 FUNCTION Get_Ids
2011 (   p_SEG_rec                       IN  QP_Attributes_PUB.Seg_Rec_Type
2012 ,   p_SEG_val_rec                   IN  QP_Attributes_PUB.Seg_Val_Rec_Type
2013 ) RETURN QP_Attributes_PUB.Seg_Rec_Type
2014 IS
2015 l_SEG_rec                     QP_Attributes_PUB.Seg_Rec_Type;
2016 BEGIN
2017 
2018     --  initialize  return_status.
2019 
2020     l_SEG_rec.return_status := FND_API.G_RET_STS_SUCCESS;
2021 
2022     --  initialize l_SEG_rec.
2023 
2024     l_SEG_rec := p_SEG_rec;
2025 
2026     IF  p_SEG_val_rec.prc_context <> FND_API.G_MISS_CHAR
2027     THEN
2028 
2029         IF p_SEG_rec.prc_context_id <> FND_API.G_MISS_NUM THEN
2030 
2031             l_SEG_rec.prc_context_id := p_SEG_rec.prc_context_id;
2032 
2033             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2034             THEN
2035 
2036                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2037                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','prc_context');
2038                 OE_MSG_PUB.Add;
2039 
2040             END IF;
2041 
2042         ELSE
2043 
2044             l_SEG_rec.prc_context_id := QP_Value_To_Id.prc_context
2045             (   p_prc_context                 => p_SEG_val_rec.prc_context
2046             );
2047 
2048             IF l_SEG_rec.prc_context_id = FND_API.G_MISS_NUM THEN
2049                 l_SEG_rec.return_status := FND_API.G_RET_STS_ERROR;
2050             END IF;
2051 
2052         END IF;
2053 
2054     END IF;
2055 
2056     IF  p_SEG_val_rec.seeded <> FND_API.G_MISS_CHAR
2057     THEN
2058 
2059         IF p_SEG_rec.seeded_flag <> FND_API.G_MISS_CHAR THEN
2060 
2061             l_SEG_rec.seeded_flag := p_SEG_rec.seeded_flag;
2062 
2063             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2064             THEN
2065 
2066                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2067                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','seeded');
2068                 OE_MSG_PUB.Add;
2069 
2070             END IF;
2071 
2072         ELSE
2073 
2074             l_SEG_rec.seeded_flag := QP_Value_To_Id.seeded
2075             (   p_seeded                      => p_SEG_val_rec.seeded
2076             );
2077 
2078             IF l_SEG_rec.seeded_flag = FND_API.G_MISS_CHAR THEN
2079                 l_SEG_rec.return_status := FND_API.G_RET_STS_ERROR;
2080             END IF;
2081 
2082         END IF;
2083 
2084     END IF;
2085 
2086     IF  p_SEG_val_rec.seeded_valueset <> FND_API.G_MISS_CHAR
2087     THEN
2088 
2089         IF p_SEG_rec.seeded_valueset_id <> FND_API.G_MISS_NUM THEN
2090 
2091             l_SEG_rec.seeded_valueset_id := p_SEG_rec.seeded_valueset_id;
2092 
2093             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2094             THEN
2095 
2096                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2097                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','seeded_valueset');
2098                 OE_MSG_PUB.Add;
2099 
2100             END IF;
2101 
2102         ELSE
2103 
2104             l_SEG_rec.seeded_valueset_id := QP_Value_To_Id.seeded_valueset
2105             (   p_seeded_valueset             => p_SEG_val_rec.seeded_valueset
2106             );
2107 
2108             IF l_SEG_rec.seeded_valueset_id = FND_API.G_MISS_NUM THEN
2109                 l_SEG_rec.return_status := FND_API.G_RET_STS_ERROR;
2110             END IF;
2111 
2112         END IF;
2113 
2114     END IF;
2115 
2116     IF  p_SEG_val_rec.segment <> FND_API.G_MISS_CHAR
2117     THEN
2118 
2119         IF p_SEG_rec.segment_id <> FND_API.G_MISS_NUM THEN
2120 
2121             l_SEG_rec.segment_id := p_SEG_rec.segment_id;
2122 
2123             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2124             THEN
2125 
2126                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2127                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','segment');
2128                 OE_MSG_PUB.Add;
2129 
2130             END IF;
2131 
2132         ELSE
2133 
2134             l_SEG_rec.segment_id := QP_Value_To_Id.segment
2135             (   p_segment                     => p_SEG_val_rec.segment
2136             );
2137 
2138             IF l_SEG_rec.segment_id = FND_API.G_MISS_NUM THEN
2139                 l_SEG_rec.return_status := FND_API.G_RET_STS_ERROR;
2140             END IF;
2141 
2142         END IF;
2143 
2144     END IF;
2145 
2146     IF  p_SEG_val_rec.user_valueset <> FND_API.G_MISS_CHAR
2147     THEN
2148 
2149         IF p_SEG_rec.user_valueset_id <> FND_API.G_MISS_NUM THEN
2150 
2151             l_SEG_rec.user_valueset_id := p_SEG_rec.user_valueset_id;
2152 
2153             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
2154             THEN
2155 
2156                 FND_MESSAGE.SET_NAME('QP','FND_BOTH_VAL_AND_ID_EXIST');
2157                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','user_valueset');
2158                 OE_MSG_PUB.Add;
2159 
2160             END IF;
2161 
2162         ELSE
2163 
2164             l_SEG_rec.user_valueset_id := QP_Value_To_Id.user_valueset
2165             (   p_user_valueset               => p_SEG_val_rec.user_valueset
2166             );
2167 
2168             IF l_SEG_rec.user_valueset_id = FND_API.G_MISS_NUM THEN
2169                 l_SEG_rec.return_status := FND_API.G_RET_STS_ERROR;
2170             END IF;
2171 
2172         END IF;
2173 
2174     END IF;
2175 
2176 
2177     RETURN l_SEG_rec;
2178 
2179 END Get_Ids;
2180 
2181 END QP_Seg_Util;