DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_JFLEX_PUB

Source


1 PACKAGE BODY JTF_JFLEX_PUB AS
2 /* $Header: jtfflexb.pls 120.3 2005/10/26 03:01:01 psanyal ship $ */
3   procedure Get_Flexfield(p_application     IN  varchar2,
4                           p_flexfield_name  IN  varchar2,
5                           name 		 OUT NOCOPY /* file.sql.39 change */ varchar2,
6 			  apps_name 	 OUT NOCOPY /* file.sql.39 change */ varchar2,
7 			  nr_segs 	 OUT NOCOPY /* file.sql.39 change */ number,
8 			  dfs_name 	 OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
9 			  dfs_dbcolumn_name OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
10 			  dfs_default_value OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
11 			  dfs_prompt	 OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
12 			  dfs_max_size	 OUT NOCOPY /* file.sql.39 change */ jtf_number_table,
13 			  dfs_min_value	 OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
14 			  dfs_max_value	 OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300,
15 			  dfs_mandatory	 OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
16 			  dfs_default_type OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
17 			  dfs_valtype	 OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
18 			  dfs_lov_id	 OUT NOCOPY /* file.sql.39 change */ jtf_number_table,
19 			  dfs_format_type OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_100,
20 			  dfs_display_size OUT NOCOPY /* file.sql.39 change */ jtf_number_table) IS
21     l_flexfield         FND_DFLEX.dflex_r;
22     l_flexinfo          FND_DFLEX.dflex_dr;
23     l_contexts          FND_DFLEX.contexts_dr;
24     l_context           FND_DFLEX.context_r;
25     l_segments          FND_DFLEX.segments_dr;
26     l_index             BINARY_INTEGER;
27     l_segment_index     BINARY_INTEGER;
28     l_count             BINARY_INTEGER;
29     l_valueset_info     FND_VSET.valueset_r;
30     l_valueset_format   FND_VSET.valueset_dr;
31     l_valueset_found    BOOLEAN;
32     l_setvalue          FND_VSET.value_dr;
33     l_rowcount          NUMBER;
34     l_found             BOOLEAN;
35 
36     --l_valueset  AS_OFL_FLEXSUPPORT_PKG.valueset_rec;
37     --l_flex      AS_OFL_FLEXSUPPORT_PKG.dflexfield_rec;
38   BEGIN
39     -- get flexfield info
40     FND_DFLEX.Get_Flexfield(p_application, p_flexfield_name, l_flexfield, l_flexinfo);
41     -- no exception -> flexfield found
42 
43     name      := p_flexfield_name;
44     apps_name := p_application;
45 
46 -- initialize those arrays.
47     	dfs_name 		:= jtf_varchar2_table_300();
48 	dfs_dbcolumn_name	:= jtf_varchar2_table_300();
49 	dfs_default_value	:= jtf_varchar2_table_300();
50 	dfs_prompt		:= jtf_varchar2_table_300();
51 	dfs_max_size		:= jtf_number_table();
52 	dfs_min_value		:= jtf_varchar2_table_300();
53 	dfs_max_value		:= jtf_varchar2_table_300();
54 	dfs_mandatory		:= jtf_varchar2_table_100();
55 	dfs_default_type	:= jtf_varchar2_table_100();
56 	dfs_valtype		:= jtf_varchar2_table_100();
57 	dfs_lov_id		:= jtf_number_table();
58 	dfs_format_type		:= jtf_varchar2_table_100();
59 	dfs_display_size	:= jtf_number_table();
60 
61 
62     -- get global context, check if at least one
63     FND_DFLEX.Get_Contexts(l_flexfield, l_contexts);
64     IF  l_contexts.ncontexts < 1 OR
65         l_contexts.global_context IS NULL OR
66         l_contexts.global_context < 1
67     THEN
68       RETURN;
69     END IF;
70 
71     -- get array of global segments
72     l_context.flexfield := l_flexfield;
73     l_context.context_code :=  l_contexts.context_code(l_contexts.global_context);
74 
75     FND_DFLEX.get_segments(l_context, l_segments, TRUE);
76 
77 
78     -- copy segment information to flexfield object
79 
80     l_index := 1;
81 
82     FOR l_segment_index IN 1 .. l_segments.nsegments LOOP
83 
84 	dfs_name.extend;
85 	dfs_dbcolumn_name.extend;
86 	dfs_default_value.extend;
87 	dfs_prompt.extend;
88 	dfs_max_size.extend;
89 	dfs_min_value.extend;
90 	dfs_max_value.extend;
91 	dfs_mandatory.extend;
92 	dfs_default_type.extend;
93 	dfs_valtype.extend;
94 	dfs_lov_id.extend;
95 	dfs_format_type.extend;
96 	dfs_display_size.extend;
97 
98 
99       dfs_dbcolumn_name(l_index) := l_segments.application_column_name(l_segment_index);
100       dfs_name(l_index)          := l_segments.segment_name(l_segment_index);
101       dfs_prompt(l_index)        := l_segments.row_prompt(l_segment_index);
102 
103       -- we only deal with valuesets of validation type independent or none
104       -- default for segment is validation type none
105       BEGIN
106         FND_VSET.Get_valueset(l_segments.value_set(l_segment_index), l_valueset_info, l_valueset_format);
107         l_valueset_found := true;
108 
109       If (l_valueset_info.validation_type = 'I') Then
110         FND_VSET.get_value_init(l_valueset_info, TRUE);
111         l_count := 0;
112         LOOP
113           FND_VSET.get_value(l_valueset_info, l_rowcount, l_found, l_setvalue);
114         EXIT WHEN l_found <> TRUE;
115           l_count := l_count +1;
116         END LOOP;
117         FND_VSET.get_value_end(l_valueset_info);
118       End If;
119 
120       EXCEPTION
121         WHEN no_data_found THEN
122           l_valueset_found := false;
123       END;
124 
125       IF l_valueset_found
126         AND l_valueset_info.validation_type = c_valueset_valtype_independent
127         AND l_count > 0
128       THEN
129         dfs_lov_id(l_index)      := l_segments.value_set(l_segment_index);
130         dfs_valtype(l_index)     := c_valueset_valtype_independent;
131       ELSE
132         dfs_lov_id(l_index)      := NULL;
133         dfs_valtype(l_index)     := c_valueset_valtype_none;
134       END IF;
135 
136       IF (l_valueset_found)
137       THEN
138         dfs_max_size(l_index)      := nvl(l_valueset_format.max_size, 0);
139         dfs_min_value(l_index)     := l_valueset_format.min_value;
140         dfs_max_value(l_index)     := l_valueset_format.max_value;
141         dfs_format_type(l_index)   := l_valueset_format.format_type;
142       ELSE
143         dfs_max_size(l_index)      := 200;
144         dfs_min_value(l_index)     := NULL;
145         dfs_max_value(l_index)     := NULL;
146         dfs_format_type(l_index)   := NULL;
147       END IF;
148 
149       if l_segments.is_required(l_segment_index) then
150         dfs_mandatory(l_index)    := 'Y';
151       else
152         dfs_mandatory(l_index)    := 'N';
153       end if;
154       dfs_default_value(l_index) := NULL;
155       dfs_default_type(l_index)  := l_segments.default_type(l_segment_index);
156       dfs_display_size(l_index)  := l_segments.display_size(l_segment_index);
157 
158       l_index := l_index + 1;
159 
160     END LOOP;
161 
162     nr_segs := l_index - 1;
163 
164 
165   EXCEPTION
166     WHEN OTHERS THEN
167       --dbms_output.put_line('Exception caught');
168       RETURN;
169   END Get_Flexfield;
170 
171   procedure Get_ValueSet(p_valueset_id      IN  number,
172                          x_value            OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300 ,
173                          x_meaning          OUT NOCOPY /* file.sql.39 change */ jtf_varchar2_table_300) IS
174     l_valueset_info   FND_VSET.valueset_r;
175     l_valueset_format FND_VSET.valueset_dr;
176     l_setvalue        FND_VSET.value_dr;
177     l_rowcount        NUMBER;
178     l_count           NUMBER;
179     l_found           BOOLEAN;
180   BEGIN
181     FND_VSET.Get_ValueSet(p_valueset_id, l_valueset_info, l_valueset_format);
182     -- no exception, valueset information retrieved.
183     FND_VSET.get_value_init(l_valueset_info, TRUE);
184     x_value := jtf_varchar2_table_300();
185     x_meaning := jtf_varchar2_table_300();
186     l_count := 1;
187     LOOP
188       FND_VSET.get_value(l_valueset_info, l_rowcount, l_found, l_setvalue);
189       EXIT WHEN l_found <> TRUE;
190       x_value.extend;
191       x_meaning.extend;
192       x_value(l_count) := l_setvalue.value;
193       x_meaning(l_count) := l_setvalue.meaning;
194       l_count := l_count +1;
195     END LOOP;
196     FND_VSET.get_value_end(l_valueset_info);
197   EXCEPTION
198     WHEN OTHERS THEN
199       --dbms_output.put_line('Exception caught');
200       RETURN;
201   END Get_ValueSet;
202 
203 END JTF_JFLEX_PUB;