DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_VALIDATE_FNA

Source


1 PACKAGE BODY QP_Validate_Fna AS
2 /* $Header: QPXLFNAB.pls 120.2 2005/08/18 15:46:23 sfiresto noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_Validate_Fna';
7 
8 FUNCTION Check_Duplicate_Fnarea(p_pte_ss_fnarea_id varchar2,
9                                 p_fnarea_id       varchar2,
10                                 p_pte_ss_id       varchar2) RETURN BOOLEAN IS
11 
12 CURSOR c_duplicate(c_p_pte_ss_fnarea_id varchar2,
13                    c_p_fnarea_id       varchar2,
14                    c_p_pte_ss_id       varchar2) IS
15           SELECT 'DUPLICATE'
16           FROM qp_sourcesystem_fnarea_map
17           WHERE functional_area_id = c_p_fnarea_id
18             AND pte_source_system_id = c_p_pte_ss_id
19             AND pte_sourcesystem_fnarea_id <> c_p_pte_ss_fnarea_id;
20 
21 l_status VARCHAR2(10);
22 BEGIN
23 
24   OPEN c_duplicate(p_pte_ss_fnarea_id, p_fnarea_id, p_pte_ss_id);
25   FETCH c_duplicate INTO l_status;
26   CLOSE c_duplicate;
27 
28   if l_status = 'DUPLICATE' then
29     RETURN TRUE;
30   else
31     RETURN FALSE;
32   end if;
33 
34 END Check_Duplicate_Fnarea;
35 
36 --  Procedure Entity
37 
38 PROCEDURE Entity
39 (   x_return_status                 OUT NOCOPY VARCHAR2
40 ,   p_FNA_rec                       IN  QP_Attr_Map_PUB.Fna_Rec_Type
41 ,   p_old_FNA_rec                   IN  QP_Attr_Map_PUB.Fna_Rec_Type :=
42                                         QP_Attr_Map_PUB.G_MISS_FNA_REC
43 )
44 IS
45 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
46 l_fnarea                      VARCHAR2(80);
47 l_pte                         VARCHAR2(30);
48 l_ss                          VARCHAR2(30);
49 l_seed_err                    BOOLEAN := FALSE;
50 l_valid                       VARCHAR2(10);
51 BEGIN
52 
53     --  Check required attributes.
54 
55     IF  p_FNA_rec.pte_sourcesystem_fnarea_id IS NULL
56     THEN
57 
58         l_return_status := FND_API.G_RET_STS_ERROR;
59 
60         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
61         THEN
62 
63             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
64             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','PTE_SOURCESYSTEM_FNAREA_ID');
65             OE_MSG_PUB.Add;
66 
67         END IF;
68 
69     END IF;
70 
71     --
72     --  Check rest of required attributes here.
73     --
74 
75     IF  p_FNA_rec.pte_source_system_id IS NULL
76     THEN
77 
78         l_return_status := FND_API.G_RET_STS_ERROR;
79 
80         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
81         THEN
82 
83             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
84             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','PTE_SOURCE_SYSTEM_ID');
85             OE_MSG_PUB.Add;
86 
87         END IF;
88 
89     END IF;
90 
91     IF  p_FNA_rec.functional_area_id IS NULL
92     THEN
93 
94         l_return_status := FND_API.G_RET_STS_ERROR;
95 
96         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
97         THEN
98 
99             FND_MESSAGE.SET_NAME('QP','QP_ATTRIBUTE_REQUIRED');
100             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','FUNCTIONAL_AREA_ID');
101             OE_MSG_PUB.Add;
102 
103         END IF;
104 
105     END IF;
106 
107     --  Return Error if a required attribute is missing.
108 
109     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
110 
111         RAISE FND_API.G_EXC_ERROR;
112 
113     END IF;
114 
115     --
116     --  Check conditionally required attributes here.
117     --
118 
119 
120     --
121     --  Validate attribute dependencies here.
122     --
123 
124     --
125     --  Other Validations
126     --
127 
128     -- Check for invalid functional area ID
129     BEGIN
130       SELECT  'VALID'
131       INTO     l_valid
132       FROM     mtl_default_category_sets
133       WHERE    functional_area_id = p_fna_rec.functional_area_id;
134     EXCEPTION
135       WHEN NO_DATA_FOUND THEN
136         l_return_status := FND_API.G_RET_STS_ERROR;
137 
138         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
139         THEN
140           select pte_code, application_short_name
141           into l_pte, l_ss
142           from qp_pte_source_systems
143           where pte_source_system_id = p_FNA_rec.pte_source_system_id;
144 
145           FND_MESSAGE.SET_NAME('QP','QP_INVALID_FUNC_AREA');
146           FND_MESSAGE.SET_TOKEN('FNID', p_FNA_rec.functional_area_id);
147           FND_MESSAGE.SET_TOKEN('PTE', l_pte);
148           FND_MESSAGE.SET_TOKEN('SS', l_ss);
149           OE_MSG_PUB.Add;
150         END IF;
151     END;
152 
153 
154     -- Check for duplicate functional areas
155     IF Check_Duplicate_Fnarea(p_FNA_rec.pte_sourcesystem_fnarea_id,
156                               p_FNA_rec.functional_area_id,
157                               p_FNA_rec.pte_source_system_id) THEN
158 
159         l_return_status := FND_API.G_RET_STS_ERROR;
160 
161         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
162         THEN
163           select pte_code, application_short_name
164           into l_pte, l_ss
165           from qp_pte_source_systems
166           where pte_source_system_id = p_FNA_rec.pte_source_system_id;
167 
168           select functional_area_desc
169           into l_fnarea
170           from mtl_default_category_sets_fk_v
171           where functional_area_id = p_FNA_rec.functional_area_id;
172 
173           FND_MESSAGE.SET_NAME('QP','QP_DUP_FUNC_AREA_WITHIN_PTE');
174           FND_MESSAGE.SET_TOKEN('FNAREA', l_fnarea);
175           FND_MESSAGE.SET_TOKEN('PTE', l_pte);
176           FND_MESSAGE.SET_TOKEN('SS', l_ss);
177           OE_MSG_PUB.Add;
178         END IF;
179 
180     END IF;
181 
182     -- Check if not SEED DATAMERGE user
183     IF NOT QP_UTIL.is_seed_user THEN
184       -- Creation of seeded functional area mapping is not allowed
185       IF p_FNA_rec.seeded_flag = 'Y' AND p_FNA_rec.operation = QP_GLOBALS.G_OPR_CREATE THEN
186         l_seed_err := TRUE;
187       ELSIF p_FNA_rec.OPERATION = QP_GLOBALS.G_OPR_UPDATE THEN
188 
189         -- In a seeded mapping, no attributes can be changed EXCEPT disabled_flag
190         IF p_old_FNA_rec.seeded_flag = 'Y' AND
191            (p_FNA_rec.PTE_SOURCESYSTEM_FNAREA_ID <> p_old_FNA_rec.PTE_SOURCESYSTEM_FNAREA_ID OR
192             p_FNA_rec.PTE_SOURCE_SYSTEM_ID <> p_old_FNA_rec.PTE_SOURCE_SYSTEM_ID OR
193             p_FNA_rec.FUNCTIONAL_AREA_ID <> p_old_FNA_rec.FUNCTIONAL_AREA_ID OR
194             p_FNA_rec.SEEDED_FLAG <> p_old_FNA_rec.SEEDED_FLAG OR
195             p_FNA_rec.CONTEXT <> p_old_FNA_rec.CONTEXT OR
196             p_FNA_rec.ATTRIBUTE1 <> p_old_FNA_rec.ATTRIBUTE1 OR
197             p_FNA_rec.ATTRIBUTE2 <> p_old_FNA_rec.ATTRIBUTE2 OR
198             p_FNA_rec.ATTRIBUTE3 <> p_old_FNA_rec.ATTRIBUTE3 OR
199             p_FNA_rec.ATTRIBUTE4 <> p_old_FNA_rec.ATTRIBUTE4 OR
200             p_FNA_rec.ATTRIBUTE5 <> p_old_FNA_rec.ATTRIBUTE5 OR
201             p_FNA_rec.ATTRIBUTE6 <> p_old_FNA_rec.ATTRIBUTE6 OR
202             p_FNA_rec.ATTRIBUTE7 <> p_old_FNA_rec.ATTRIBUTE7 OR
203             p_FNA_rec.ATTRIBUTE8 <> p_old_FNA_rec.ATTRIBUTE8 OR
204             p_FNA_rec.ATTRIBUTE9 <> p_old_FNA_rec.ATTRIBUTE9 OR
205             p_FNA_rec.ATTRIBUTE10 <> p_old_FNA_rec.ATTRIBUTE10 OR
206             p_FNA_rec.ATTRIBUTE11 <> p_old_FNA_rec.ATTRIBUTE11 OR
207             p_FNA_rec.ATTRIBUTE12 <> p_old_FNA_rec.ATTRIBUTE12 OR
208             p_FNA_rec.ATTRIBUTE13 <> p_old_FNA_rec.ATTRIBUTE13 OR
209             p_FNA_rec.ATTRIBUTE14 <> p_old_FNA_rec.ATTRIBUTE14 OR
210             p_FNA_rec.ATTRIBUTE15 <> p_old_FNA_rec.ATTRIBUTE15 OR
211             p_FNA_rec.CREATED_BY <> p_old_FNA_rec.CREATED_BY OR
212             p_FNA_rec.CREATION_DATE <> p_old_FNA_rec.CREATION_DATE) THEN
213           l_seed_err := TRUE;
214 
215         -- Non-seeded mappings cannot be made seeded
216         ELSIF p_old_FNA_rec.seeded_flag <> 'Y' AND p_FNA_rec.seeded_flag = 'Y' THEN
217           l_seed_err := TRUE;
218         END IF;
219       END IF;
220 
221 
222       IF l_seed_err AND OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
223       THEN
224         l_return_status := FND_API.G_RET_STS_ERROR;
225         FND_MESSAGE.SET_NAME('QP','QP_CANNOT_SEED_FUNC_AREAS');
226         OE_MSG_PUB.Add;
227       END IF;
228     END IF;
229 
230 
231 
232 
233         IF l_return_status = FND_API.G_RET_STS_ERROR THEN
234 
235            RAISE FND_API.G_EXC_ERROR;
236 
237         END IF;
238 
239     --  Done validating entity
240 
241     x_return_status := l_return_status;
242 
243 EXCEPTION
244 
245     WHEN FND_API.G_EXC_ERROR THEN
246 
247         x_return_status := FND_API.G_RET_STS_ERROR;
248 
249     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
250 
251         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
252 
253     WHEN OTHERS THEN
254 
255         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
256 
257         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
258         THEN
259             OE_MSG_PUB.Add_Exc_Msg
260             (   G_PKG_NAME
261             ,   'Entity'
262             );
263         END IF;
264 
265 END Entity;
266 
267 --  Procedure Attributes
268 
269 PROCEDURE Attributes
270 (   x_return_status                 OUT NOCOPY VARCHAR2
271 ,   p_FNA_rec                       IN  QP_Attr_Map_PUB.Fna_Rec_Type
272 ,   p_old_FNA_rec                   IN  QP_Attr_Map_PUB.Fna_Rec_Type :=
273                                         QP_Attr_Map_PUB.G_MISS_FNA_REC
274 )
275 IS
276 l_pte VARCHAR2(30);
277 l_ss  VARCHAR2(30);
278 BEGIN
279     x_return_status := FND_API.G_RET_STS_SUCCESS;
280 
281     --  Validate FNA attributes
282 
283     IF  p_FNA_rec.created_by IS NOT NULL AND
284         (   p_FNA_rec.created_by <>
285             p_old_FNA_rec.created_by OR
286             p_old_FNA_rec.created_by IS NULL )
287     THEN
288         IF NOT QP_Validate.Created_By(p_FNA_rec.created_by) THEN
289             x_return_status := FND_API.G_RET_STS_ERROR;
290         END IF;
291     END IF;
292 
293     IF  p_FNA_rec.creation_date IS NOT NULL AND
294         (   p_FNA_rec.creation_date <>
295             p_old_FNA_rec.creation_date OR
296             p_old_FNA_rec.creation_date IS NULL )
297     THEN
298         IF NOT QP_Validate.Creation_Date(p_FNA_rec.creation_date) THEN
299             x_return_status := FND_API.G_RET_STS_ERROR;
300         END IF;
301     END IF;
302 
303     IF  p_FNA_rec.enabled_flag IS NOT NULL AND
304         (   p_FNA_rec.enabled_flag <>
305             p_old_FNA_rec.enabled_flag OR
306             p_old_FNA_rec.enabled_flag IS NULL )
307     THEN
308         IF NOT QP_Validate.Enabled(p_FNA_rec.enabled_flag) THEN
309             x_return_status := FND_API.G_RET_STS_ERROR;
310         END IF;
311     END IF;
312 
313     IF  p_FNA_rec.functional_area_id IS NOT NULL AND
314         (   p_FNA_rec.functional_area_id <>
315             p_old_FNA_rec.functional_area_id OR
316             p_old_FNA_rec.functional_area_id IS NULL )
317     THEN
318         IF NOT QP_Validate.Functional_Area(p_FNA_rec.functional_area_id) THEN
319             x_return_status := FND_API.G_RET_STS_ERROR;
320         END IF;
321     END IF;
322 
323     IF  p_FNA_rec.last_updated_by IS NOT NULL AND
324         (   p_FNA_rec.last_updated_by <>
325             p_old_FNA_rec.last_updated_by OR
326             p_old_FNA_rec.last_updated_by IS NULL )
327     THEN
328         IF NOT QP_Validate.Last_Updated_By(p_FNA_rec.last_updated_by) THEN
329             x_return_status := FND_API.G_RET_STS_ERROR;
330         END IF;
331     END IF;
332 
333     IF  p_FNA_rec.last_update_date IS NOT NULL AND
334         (   p_FNA_rec.last_update_date <>
335             p_old_FNA_rec.last_update_date OR
336             p_old_FNA_rec.last_update_date IS NULL )
337     THEN
338         IF NOT QP_Validate.Last_Update_Date(p_FNA_rec.last_update_date) THEN
339             x_return_status := FND_API.G_RET_STS_ERROR;
340         END IF;
341     END IF;
342 
343     IF  p_FNA_rec.last_update_login IS NOT NULL AND
344         (   p_FNA_rec.last_update_login <>
345             p_old_FNA_rec.last_update_login OR
346             p_old_FNA_rec.last_update_login IS NULL )
347     THEN
348         IF NOT QP_Validate.Last_Update_Login(p_FNA_rec.last_update_login) THEN
349             x_return_status := FND_API.G_RET_STS_ERROR;
350         END IF;
351     END IF;
352 
353     IF  p_FNA_rec.program_application_id IS NOT NULL AND
354         (   p_FNA_rec.program_application_id <>
355             p_old_FNA_rec.program_application_id OR
356             p_old_FNA_rec.program_application_id IS NULL )
357     THEN
358         IF NOT QP_Validate.Program_Application(p_FNA_rec.program_application_id) THEN
359             x_return_status := FND_API.G_RET_STS_ERROR;
360         END IF;
361     END IF;
362 
363     IF  p_FNA_rec.program_id IS NOT NULL AND
364         (   p_FNA_rec.program_id <>
365             p_old_FNA_rec.program_id OR
366             p_old_FNA_rec.program_id IS NULL )
367     THEN
368         IF NOT QP_Validate.Program(p_FNA_rec.program_id) THEN
369             x_return_status := FND_API.G_RET_STS_ERROR;
370         END IF;
371     END IF;
372 
373     IF  p_FNA_rec.program_update_date IS NOT NULL AND
374         (   p_FNA_rec.program_update_date <>
375             p_old_FNA_rec.program_update_date OR
376             p_old_FNA_rec.program_update_date IS NULL )
377     THEN
378         IF NOT QP_Validate.Program_Update_Date(p_FNA_rec.program_update_date) THEN
379             x_return_status := FND_API.G_RET_STS_ERROR;
380         END IF;
381     END IF;
382 
383     IF  p_FNA_rec.pte_sourcesystem_fnarea_id IS NOT NULL AND
384         (   p_FNA_rec.pte_sourcesystem_fnarea_id <>
385             p_old_FNA_rec.pte_sourcesystem_fnarea_id OR
386             p_old_FNA_rec.pte_sourcesystem_fnarea_id IS NULL )
387     THEN
388         IF NOT QP_Validate.Pte_Sourcesystem_Fnarea(p_FNA_rec.pte_sourcesystem_fnarea_id) THEN
389             x_return_status := FND_API.G_RET_STS_ERROR;
390         END IF;
391     END IF;
392 
393     IF  p_FNA_rec.pte_source_system_id IS NOT NULL AND
394         (   p_FNA_rec.pte_source_system_id <>
395             p_old_FNA_rec.pte_source_system_id OR
396             p_old_FNA_rec.pte_source_system_id IS NULL )
397     THEN
398         IF NOT QP_Validate.Pte_Source_System(p_FNA_rec.pte_source_system_id) THEN
399             x_return_status := FND_API.G_RET_STS_ERROR;
400         END IF;
401     END IF;
402 
403     IF  p_FNA_rec.request_id IS NOT NULL AND
404         (   p_FNA_rec.request_id <>
405             p_old_FNA_rec.request_id OR
406             p_old_FNA_rec.request_id IS NULL )
407     THEN
408         IF NOT QP_Validate.Request(p_FNA_rec.request_id) THEN
409             x_return_status := FND_API.G_RET_STS_ERROR;
410         END IF;
411     END IF;
412 
413     IF  p_FNA_rec.seeded_flag IS NOT NULL AND
414         (   p_FNA_rec.seeded_flag <>
415             p_old_FNA_rec.seeded_flag OR
416             p_old_FNA_rec.seeded_flag IS NULL )
417     THEN
418         IF NOT QP_Validate.Seeded(p_FNA_rec.seeded_flag) THEN
419             x_return_status := FND_API.G_RET_STS_ERROR;
420         END IF;
421     END IF;
422 
423     IF  (p_FNA_rec.attribute1 IS NOT NULL AND
424         (   p_FNA_rec.attribute1 <>
425             p_old_FNA_rec.attribute1 OR
426             p_old_FNA_rec.attribute1 IS NULL ))
427     OR  (p_FNA_rec.attribute10 IS NOT NULL AND
428         (   p_FNA_rec.attribute10 <>
429             p_old_FNA_rec.attribute10 OR
430             p_old_FNA_rec.attribute10 IS NULL ))
431     OR  (p_FNA_rec.attribute11 IS NOT NULL AND
432         (   p_FNA_rec.attribute11 <>
433             p_old_FNA_rec.attribute11 OR
434             p_old_FNA_rec.attribute11 IS NULL ))
435     OR  (p_FNA_rec.attribute12 IS NOT NULL AND
436         (   p_FNA_rec.attribute12 <>
437             p_old_FNA_rec.attribute12 OR
438             p_old_FNA_rec.attribute12 IS NULL ))
439     OR  (p_FNA_rec.attribute13 IS NOT NULL AND
440         (   p_FNA_rec.attribute13 <>
441             p_old_FNA_rec.attribute13 OR
442             p_old_FNA_rec.attribute13 IS NULL ))
443     OR  (p_FNA_rec.attribute14 IS NOT NULL AND
444         (   p_FNA_rec.attribute14 <>
445             p_old_FNA_rec.attribute14 OR
446             p_old_FNA_rec.attribute14 IS NULL ))
447     OR  (p_FNA_rec.attribute15 IS NOT NULL AND
448         (   p_FNA_rec.attribute15 <>
449             p_old_FNA_rec.attribute15 OR
450             p_old_FNA_rec.attribute15 IS NULL ))
451     OR  (p_FNA_rec.attribute2 IS NOT NULL AND
452         (   p_FNA_rec.attribute2 <>
453             p_old_FNA_rec.attribute2 OR
454             p_old_FNA_rec.attribute2 IS NULL ))
455     OR  (p_FNA_rec.attribute3 IS NOT NULL AND
456         (   p_FNA_rec.attribute3 <>
457             p_old_FNA_rec.attribute3 OR
458             p_old_FNA_rec.attribute3 IS NULL ))
459     OR  (p_FNA_rec.attribute4 IS NOT NULL AND
460         (   p_FNA_rec.attribute4 <>
461             p_old_FNA_rec.attribute4 OR
462             p_old_FNA_rec.attribute4 IS NULL ))
463     OR  (p_FNA_rec.attribute5 IS NOT NULL AND
464         (   p_FNA_rec.attribute5 <>
465             p_old_FNA_rec.attribute5 OR
466             p_old_FNA_rec.attribute5 IS NULL ))
467     OR  (p_FNA_rec.attribute6 IS NOT NULL AND
468         (   p_FNA_rec.attribute6 <>
469             p_old_FNA_rec.attribute6 OR
470             p_old_FNA_rec.attribute6 IS NULL ))
471     OR  (p_FNA_rec.attribute7 IS NOT NULL AND
472         (   p_FNA_rec.attribute7 <>
473             p_old_FNA_rec.attribute7 OR
474             p_old_FNA_rec.attribute7 IS NULL ))
475     OR  (p_FNA_rec.attribute8 IS NOT NULL AND
476         (   p_FNA_rec.attribute8 <>
477             p_old_FNA_rec.attribute8 OR
478             p_old_FNA_rec.attribute8 IS NULL ))
479     OR  (p_FNA_rec.attribute9 IS NOT NULL AND
480         (   p_FNA_rec.attribute9 <>
481             p_old_FNA_rec.attribute9 OR
482             p_old_FNA_rec.attribute9 IS NULL ))
483     OR  (p_FNA_rec.context IS NOT NULL AND
484         (   p_FNA_rec.context <>
485             p_old_FNA_rec.context OR
486             p_old_FNA_rec.context IS NULL ))
487     THEN
488 
489     --  These calls are temporarily commented out
490 
491 /*
492         FND_FLEX_DESC_VAL.Set_Column_Value
493         (   column_name                   => 'ATTRIBUTE1'
494         ,   column_value                  => p_FNA_rec.attribute1
495         );
496         FND_FLEX_DESC_VAL.Set_Column_Value
497         (   column_name                   => 'ATTRIBUTE10'
498         ,   column_value                  => p_FNA_rec.attribute10
499         );
500         FND_FLEX_DESC_VAL.Set_Column_Value
501         (   column_name                   => 'ATTRIBUTE11'
502         ,   column_value                  => p_FNA_rec.attribute11
503         );
504         FND_FLEX_DESC_VAL.Set_Column_Value
505         (   column_name                   => 'ATTRIBUTE12'
506         ,   column_value                  => p_FNA_rec.attribute12
507         );
508         FND_FLEX_DESC_VAL.Set_Column_Value
509         (   column_name                   => 'ATTRIBUTE13'
510         ,   column_value                  => p_FNA_rec.attribute13
511         );
512         FND_FLEX_DESC_VAL.Set_Column_Value
513         (   column_name                   => 'ATTRIBUTE14'
514         ,   column_value                  => p_FNA_rec.attribute14
515         );
516         FND_FLEX_DESC_VAL.Set_Column_Value
517         (   column_name                   => 'ATTRIBUTE15'
518         ,   column_value                  => p_FNA_rec.attribute15
519         );
520         FND_FLEX_DESC_VAL.Set_Column_Value
521         (   column_name                   => 'ATTRIBUTE2'
522         ,   column_value                  => p_FNA_rec.attribute2
523         );
524         FND_FLEX_DESC_VAL.Set_Column_Value
525         (   column_name                   => 'ATTRIBUTE3'
526         ,   column_value                  => p_FNA_rec.attribute3
527         );
528         FND_FLEX_DESC_VAL.Set_Column_Value
529         (   column_name                   => 'ATTRIBUTE4'
530         ,   column_value                  => p_FNA_rec.attribute4
531         );
532         FND_FLEX_DESC_VAL.Set_Column_Value
533         (   column_name                   => 'ATTRIBUTE5'
534         ,   column_value                  => p_FNA_rec.attribute5
535         );
536         FND_FLEX_DESC_VAL.Set_Column_Value
537         (   column_name                   => 'ATTRIBUTE6'
538         ,   column_value                  => p_FNA_rec.attribute6
539         );
540         FND_FLEX_DESC_VAL.Set_Column_Value
541         (   column_name                   => 'ATTRIBUTE7'
542         ,   column_value                  => p_FNA_rec.attribute7
543         );
544         FND_FLEX_DESC_VAL.Set_Column_Value
545         (   column_name                   => 'ATTRIBUTE8'
546         ,   column_value                  => p_FNA_rec.attribute8
547         );
548         FND_FLEX_DESC_VAL.Set_Column_Value
549         (   column_name                   => 'ATTRIBUTE9'
550         ,   column_value                  => p_FNA_rec.attribute9
551         );
552         FND_FLEX_DESC_VAL.Set_Column_Value
553         (   column_name                   => 'CONTEXT'
554         ,   column_value                  => p_FNA_rec.context
555         );
556 */
557 
558         --  Validate descriptive flexfield.
559 
560         IF NOT QP_Validate.Desc_Flex( 'FNA' ) THEN
561             x_return_status := FND_API.G_RET_STS_ERROR;
562         END IF;
563 
564     END IF;
565 
566     --  Done validating attributes
567 
568 EXCEPTION
569 
570     WHEN FND_API.G_EXC_ERROR THEN
571 
572         x_return_status := FND_API.G_RET_STS_ERROR;
573 
574     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
575 
576         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
577 
578     WHEN OTHERS THEN
579 
580         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
581 
582         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
583         THEN
584             OE_MSG_PUB.Add_Exc_Msg
585             (   G_PKG_NAME
586             ,   'Attributes'
587             );
588         END IF;
589 
590 END Attributes;
591 
592 --  Procedure Entity_Delete
593 
594 PROCEDURE Entity_Delete
595 (   x_return_status                 OUT NOCOPY VARCHAR2
596 ,   p_FNA_rec                       IN  QP_Attr_Map_PUB.Fna_Rec_Type
597 )
598 IS
599 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
600 l_fnarea                      VARCHAR2(80);
601 l_pte                         VARCHAR2(30);
602 l_ss                          VARCHAR2(30);
603 BEGIN
604 
605     --  Validate entity delete.
606 
607     IF p_FNA_rec.seeded_flag = 'Y' THEN
608         l_return_status := FND_API.G_RET_STS_ERROR;
609 
610         select pte_code, application_short_name
611         into l_pte, l_ss
612         from qp_pte_source_systems
613         where pte_source_system_id = p_FNA_rec.pte_source_system_id;
614 
615         select functional_area_desc
616         into l_fnarea
617         from mtl_default_category_sets_fk_v
618         where functional_area_id = p_FNA_rec.functional_area_id;
619 
620         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
621         THEN
622 
623           FND_MESSAGE.SET_NAME('QP', 'QP_DEL_FUNC_AREA_NOT_ALLOW');
624           FND_MESSAGE.SET_TOKEN('FNAREA', l_fnarea);
625           FND_MESSAGE.SET_TOKEN('PTE', l_pte);
626           FND_MESSAGE.SET_TOKEN('SS', l_ss);
627           OE_MSG_PUB.Add;
628         END IF;
629     END IF;
630 
631     --  Done.
632 
633     x_return_status := l_return_status;
634 
635 EXCEPTION
636 
637     WHEN FND_API.G_EXC_ERROR THEN
638 
639         x_return_status := FND_API.G_RET_STS_ERROR;
640 
641     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
642 
643         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
644 
645     WHEN OTHERS THEN
646 
647         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
648 
649         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
650         THEN
651             OE_MSG_PUB.Add_Exc_Msg
652             (   G_PKG_NAME
653             ,   'Entity_Delete'
654             );
655         END IF;
656 
657 END Entity_Delete;
658 
659 END QP_Validate_Fna;