1 PACKAGE BODY fnd_flex_types AS
2 /* $Header: AFFFTYPB.pls 120.2.12010000.1 2008/07/25 14:14:34 appldev ship $ */
3
4
5
6 PROCEDURE validate_type(typ IN VARCHAR2, code IN VARCHAR2) IS
7 dummy NUMBER;
8 BEGIN
9 SELECT NULL INTO dummy
10 FROM fnd_lookups
11 WHERE lookup_type = typ
12 AND lookup_code = code
13 AND enabled_flag = 'Y'
14 AND ( (start_date_active IS NULL)
15 OR (start_date_active <= SYSDATE))
16 AND ( (end_date_active IS NULL)
17 OR (end_date_active >= SYSDATE));
18 EXCEPTION
19 WHEN no_data_found THEN
20 RAISE;
21 END;
22
23
24
25 PROCEDURE validate_default_type(code IN VARCHAR2) IS
26 BEGIN
27 validate_type(typ => 'FLEX_DEFAULT_TYPE', code => code);
28 END;
29
30
31 PROCEDURE validate_range_code(code IN VARCHAR2) IS
32 BEGIN
33 validate_type(typ => 'RANGE_CODES', code => code);
34 END;
35
36
37 PROCEDURE validate_field_type(code IN VARCHAR2) IS
38 BEGIN
39 validate_type(typ => 'FIELD_TYPE', code => code);
40 END;
41
42
43 PROCEDURE validate_segval_type(code IN VARCHAR2) IS
44 BEGIN
45 validate_type(typ => 'SEG_VAL_TYPES', code => code);
46 END;
47
48
49 PROCEDURE validate_event_type(code IN VARCHAR2) IS
50 BEGIN
51 validate_type(typ => 'FLEX_VALIDATION_EVENTS', code => code);
52 END;
53
54
55 PROCEDURE validate_column_type(code IN VARCHAR2) IS
56 BEGIN
57 validate_type(typ => 'COLUMN_TYPE', code => code);
58 END;
59
60 PROCEDURE validate_yes_no_flag(code IN VARCHAR2) IS
61 BEGIN
62 validate_type(typ => 'YES_NO', code => code);
63 END;
64
65 FUNCTION get_code(typ IN VARCHAR2, descr IN VARCHAR2) RETURN VARCHAR2
66 IS
67 CURSOR codes_c IS
68 SELECT lookup_code, Decode(language, 'US', 1, 2) pri
69 FROM fnd_lookup_values
70 WHERE meaning = descr
71 AND lookup_type = typ
72 ORDER BY pri;
73 codes_r codes_c%ROWTYPE;
74 rv fnd_lookups.lookup_code%TYPE;
75 BEGIN
76 OPEN codes_c;
77 FETCH codes_c INTO codes_r;
78 IF(codes_c%found) THEN
79 rv := codes_r.lookup_code;
80 ELSE
81 RAISE no_data_found;
82 END IF;
83 CLOSE codes_c;
84 RETURN rv;
85 EXCEPTION
86 WHEN OTHERS THEN
87 CLOSE codes_c;
88 RAISE;
89 END;
90
91 FUNCTION ad_dd_used_by_flex(p_application_id IN fnd_tables.application_id%TYPE,
92 p_table_name IN fnd_tables.table_name%TYPE,
93 p_column_name IN fnd_columns.column_name%TYPE,
94 x_message OUT NOCOPY VARCHAR2) RETURN BOOLEAN
95 IS
96 l_message VARCHAR2(2000);
97 BEGIN
98 IF (p_column_name IS NULL) THEN
99 x_message := 'This table is not used by Flexfields.';
100 IF (fnd_flex_dsc_api.is_table_used(p_application_id,
101 p_table_name,
102 l_message)) THEN
103 x_message := l_message;
104 RETURN(TRUE);
105 END IF;
106 IF (fnd_flex_key_api.is_table_used(p_application_id,
107 p_table_name,
108 l_message)) THEN
109 x_message := l_message;
110 RETURN(TRUE);
111 END IF;
112 IF (fnd_flex_val_api.is_table_used(p_application_id,
113 p_table_name,
114 l_message)) THEN
115 x_message := l_message;
116 RETURN(TRUE);
117 END IF;
118 ELSE
119 x_message := 'This column is not used by Flexfields.';
120 IF (fnd_flex_dsc_api.is_column_used(p_application_id,
121 p_table_name,
122 p_column_name,
123 l_message)) THEN
124 x_message := l_message;
125 RETURN(TRUE);
126 END IF;
127 IF (fnd_flex_key_api.is_column_used(p_application_id,
128 p_table_name,
129 p_column_name,
130 l_message)) THEN
131 x_message := l_message;
132 RETURN(TRUE);
133 END IF;
134 IF (fnd_flex_val_api.is_column_used(p_application_id,
135 p_table_name,
136 p_column_name,
137 l_message)) THEN
138 x_message := l_message;
139 RETURN(TRUE);
140 END IF;
141 END IF;
142 RETURN(FALSE);
143 EXCEPTION
144 WHEN OTHERS THEN
145 x_message := 'FND_FLEX_TYPES.AD_DD_USED_BY_FLEX is failed. ' ||
146 'SQLERRM : ' || Sqlerrm;
147 RETURN(TRUE);
148 END ad_dd_used_by_flex;
149
150 END fnd_flex_types; /* end package */