DBA Data[Home] [Help]
Skip to content

PACKAGE: APPS.FEM_CONDITIONS_API

Source


1 package fem_conditions_api AS
2 --$Header: FEMCONDS.pls 120.2.12010000.2 2008/08/28 08:37:52 lkiran ship $
3 
4 PROCEDURE DISPLAY_CONDITION_PREDICATE(
5    x_err_code OUT NOCOPY NUMBER,
6    x_err_msg OUT NOCOPY VARCHAR2,
7    p_condition_obj_id IN NUMBER,
8    p_rule_effective_date IN VARCHAR2);
9 
10 /*PROCEDURE DISPLAY_CONDITION_PREDICATE(
11    p_api_version          IN NUMBER,
12    p_init_msg_list        IN VARCHAR2,
13    p_commit               IN VARCHAR2,
14    p_encoded              IN VARCHAR2,
15    p_condition_obj_id     IN NUMBER,
16    p_rule_effective_date  IN VARCHAR2,
17    x_return_status        OUT NOCOPY VARCHAR2,
18    x_msg_count            OUT NOCOPY NUMBER,
19    x_msg_data             OUT NOCOPY VARCHAR2);*/
20 
21 
22 PROCEDURE GENERATE_CONDITION_PREDICATE(
23    x_err_code OUT NOCOPY NUMBER,
24    x_err_msg OUT NOCOPY VARCHAR2,
25    p_condition_obj_id IN NUMBER,
26    p_rule_effective_date IN VARCHAR2,
27    p_input_fact_table_name IN VARCHAR2,
28    p_table_alias IN VARCHAR2,
29    p_display_predicate IN VARCHAR2,
30    p_return_predicate_type IN VARCHAR2,
31    p_logging_turned_on IN VARCHAR2,
32    x_predicate_string OUT NOCOPY LONG);
33 
34 
35 ------------------------
36 --  Package Constants --
37 ------------------------
38 
39 g_false            CONSTANT  VARCHAR2(1)  := FND_API.G_FALSE;
40 g_true             CONSTANT  VARCHAR2(1)  := FND_API.G_TRUE;
41 g_success          CONSTANT  VARCHAR2(1)  := FND_API.G_RET_STS_SUCCESS;
42 g_error            CONSTANT  VARCHAR2(1)  := FND_API.G_RET_STS_ERROR;
43 g_unexp            CONSTANT  VARCHAR2(1)  := FND_API.G_RET_STS_UNEXP_ERROR;
44 g_api_version      CONSTANT  NUMBER       := 1.0;
45 
46 PROCEDURE GENERATE_CONDITION_PREDICATE(
47    p_api_version     IN NUMBER     DEFAULT g_api_version,
48    p_init_msg_list   IN VARCHAR2   DEFAULT g_false,
49    p_commit          IN VARCHAR2   DEFAULT g_false,
50    p_encoded         IN VARCHAR2   DEFAULT g_true,
51    p_condition_obj_id IN NUMBER,
52    p_rule_effective_date IN VARCHAR2,
53    p_input_fact_table_name IN VARCHAR2,
54    p_table_alias IN VARCHAR2,
55    p_display_predicate IN VARCHAR2,
56    p_return_predicate_type IN VARCHAR2,
57    p_logging_turned_on IN VARCHAR2,
58    x_return_status  OUT NOCOPY VARCHAR2,
59    x_msg_count      OUT NOCOPY NUMBER,
60    x_msg_data       OUT NOCOPY VARCHAR2,
61    x_predicate_string OUT NOCOPY LONG);
62 
63 /******Mapping By Dimension Type Support (Bug 4059078)******/
64 PROCEDURE GENERATE_CONDITION_PREDICATE(
65    p_api_version     IN NUMBER     DEFAULT g_api_version,
66    p_init_msg_list   IN VARCHAR2   DEFAULT g_false,
67    p_commit          IN VARCHAR2   DEFAULT g_false,
68    p_encoded         IN VARCHAR2   DEFAULT g_true,
69    p_condition_obj_id IN NUMBER,
70    p_rule_effective_date IN VARCHAR2,
71    p_input_fact_table_name IN VARCHAR2,
72    p_table_alias IN VARCHAR2,
73    p_display_predicate IN VARCHAR2,
74    p_return_predicate_type IN VARCHAR2,
75    p_logging_turned_on IN VARCHAR2,
76    p_by_dimension_column IN VARCHAR2,
77    p_by_dimension_id  IN NUMBER,
78    p_by_dimension_value IN VARCHAR2,
79    x_return_status  OUT NOCOPY VARCHAR2,
80    x_msg_count      OUT NOCOPY NUMBER,
81    x_msg_data       OUT NOCOPY VARCHAR2,
82    x_predicate_string OUT NOCOPY LONG);
83 
84 /****** API's for use by Condition VO's (Bug 5451847) ******/
85 FUNCTION Get_Dim_Member_Display_Code (
86   p_dimension_id                  in number
87   ,p_member_id                    in varchar2
88 ) RETURN varchar2;
89 
90 FUNCTION Get_Dim_Member_Name (
91   p_dimension_id                  in number
92   ,p_member_id                    in varchar2
93 ) RETURN varchar2;
94 
95 /*============================================================================+
96  | PROCEDURE
97  |   Generate_Dim_Hier_Query
98  |
99  | DESCRIPTION
100  |   This procedure returns a query string for finding a list of nodes in a
101  |   hierarchy definition based on the passed hierarchy object id,
102  |   effective date, node id (and value set id for VSR dimensions), and
103  |   relation code.
104  |
105  |   All passed parameters are checked to ensure they are valid.
106  |
107  |  SCOPE - PUBLIC
108  +============================================================================*/
109 
110 PROCEDURE Generate_Dim_Hier_Query (
111   p_api_version                   in number   default g_api_version
112   ,p_init_msg_list                in varchar2 default g_false
113   ,p_commit                       in varchar2 default g_false
114   ,p_encoded                      in varchar2 default g_true
115   ,x_return_status                out nocopy varchar2
116   ,x_msg_count                    out nocopy number
117   ,x_msg_data                     out nocopy varchar2
118   ---------------------------------------------------
119   ,p_dimension_id                 in number
120   ,p_hierarchy_object_id          in number
121   ,p_effective_date               in varchar2
122   ,p_relation_code                in varchar2
123   ,p_node_id                      in varchar2
124   ,p_value_set_id                 in number default null
125   ,x_query_string                 out nocopy long
126 );
127 
128 
129 ------------------------
130 --  Standard Types --
131 ------------------------
132 DEF_OBJECT_ID   FEM_OBJECT_CATALOG_B.OBJECT_ID%TYPE;
133 DEF_OBJ_DEF_ID  FEM_OBJECT_DEFINITION_B.OBJECT_DEFINITION_ID%TYPE;
134 DEF_OBJECT_NAME FEM_OBJECT_CATALOG_VL.OBJECT_NAME%TYPE;
135 DEF_FOLDER_NAME FEM_FOLDERS_VL.FOLDER_NAME%TYPE;
136 
137 ------------------------
138 --  Exceptions --
139 ------------------------
140 USER_EXCEPTION EXCEPTION;
141 NO_CONDITION_EXCEPTION EXCEPTION;
142 INVALID_FACT_TABLE_EXCEPTION EXCEPTION;
143 NO_FACT_TABLE_EXCEPTION EXCEPTION;
144 HIER_FLATTENED_EXCEPTION EXCEPTION;
145 NO_VALID_COMPONENTS_EXCEPTION EXCEPTION;
146 NO_COMPONENTS_EXCEPTION EXCEPTION;
147 INVALID_DIM_COMP_EXCEPTION EXCEPTION;
148 
149 ------------------------
150 --  Messages --
151 ------------------------
152 G_INVALID_COLUMN CONSTANT VARCHAR2(30)          := 'FEM_COND_API_INVALID_COLUMN';
153 G_INVALID_OPERATOR CONSTANT VARCHAR2(30)        := 'FEM_COND_API_INVALID_OPERATOR';
154 G_INVALID_NODE CONSTANT VARCHAR2(30)            := 'FEM_COND_API_INVALID_NODE';
155 G_INVALID_RELATION CONSTANT VARCHAR2(30)        := 'FEM_COND_API_INVALID_RELATION';
156 G_INVALID_DIMENSION CONSTANT VARCHAR2(30)       := 'FEM_COND_API_INVALID_DIM_COL';
157 G_NO_VERSION CONSTANT VARCHAR2(30)              := 'FEM_COND_API_NO_DEFINITION';
158 G_INVALID_TABLE CONSTANT VARCHAR2(30)           := 'FEM_COND_API_INVALID_TABLE';
159 G_NO_TABLE CONSTANT VARCHAR2(30)                := 'FEM_COND_API_NO_TABLE';
160 G_HIER_FLATTENED CONSTANT VARCHAR2(30)          := 'FEM_COND_API_HIER_FLATTENED';
161 G_NO_VALID_COMPS CONSTANT VARCHAR2(30)          := 'FEM_COND_API_NO_VALID_COMPS';
162 G_NO_COMPONENTS CONSTANT VARCHAR2(30)           := 'FEM_COND_API_NO_COMPS';
163 G_UNHANDLED_EXCEPTION CONSTANT VARCHAR2(30)     := 'FEM_COND_API_UNHANDLED_ERROR';
164 G_INVALID_COMP_DIMENSION CONSTANT VARCHAR2(30)  := 'FEM_COND_API_INVALID_COMP_DIM';
165 G_NULL_PARAM_VALUE_ERR CONSTANT VARCHAR2(30)    := 'FEM_NULL_PARAM_VALUE_ERR';
166 G_BAD_DIM_ID_ERR CONSTANT VARCHAR2(30)          := 'FEM_BAD_DIM_ID_ERR';
167 G_DIM_BAD_DIM_LABEL CONSTANT VARCHAR2(30)       := 'FEM_DIM_BAD_DIM_LABEL';
168 G_INVALID_DIM_COMPONENT CONSTANT VARCHAR2(30)   := 'FEM_COND_API_INVALID_DIM_COMP';
169 
170 ------------------------
171 --  Tokens --
172 ------------------------
173 G_COLUMN_TOKEN CONSTANT VARCHAR2(30) := 'COLUMN_NAME';
174 G_TABLE_TOKEN CONSTANT VARCHAR2(30) := 'TABLE_NAME';
175 G_OPERATOR_TOKEN CONSTANT VARCHAR2(30) := 'OPERATOR';
176 G_CONDITION_TOKEN CONSTANT VARCHAR2(30) := 'CONDITION';
177 G_COMPONENT_TOKEN CONSTANT VARCHAR2(30) := 'COMPONENT';
178 G_NODE_TOKEN CONSTANT VARCHAR2(30) := 'NODE';
179 G_HIERARCHY_TOKEN CONSTANT VARCHAR2(30) := 'HIERARCHY';
180 G_RELATION_TOKEN CONSTANT VARCHAR2(30) := 'RELATION';
181 G_EFFECTIVE_DATE_TOKEN CONSTANT VARCHAR2(30) := 'EFFECTIVE_DATE';
182 G_COMP_DIM_TOKEN CONSTANT VARCHAR2(30) := 'COMP_DIM';
183 G_SQL_ERR_TOKEN CONSTANT VARCHAR2(30) := 'SQLERRM';
184 G_PARAM_TOKEN CONSTANT VARCHAR2(30) := 'PARAM';
185 G_DIM_ID_TOKEN CONSTANT VARCHAR2(30) := 'DIM_ID';
186 G_DIM_LABEL_TOKEN CONSTANT VARCHAR2(30) := 'DIM_LABEL';
187 
188 ------------------------
189 --  PL/SQL Tables --
190 ------------------------
191 TYPE DATA_STEP_VALUES_REC IS RECORD(
192    OPERATOR_CODE VARCHAR2(30),
193    OPERATOR_VALUE VARCHAR2(30),
194    VALUE VARCHAR2(255),
195    MAX_RANGE_VALUE VARCHAR2(255));
196 
197 TYPE DATA_STEP_VALUES_TAB IS TABLE OF DATA_STEP_VALUES_REC
198    INDEX BY BINARY_INTEGER;
199 
200 TYPE DATA_DIM_STEP_PREDICATE_REC IS RECORD(
201    DATA_DIM_COMPONENT_DEF_ID NUMBER,
202    STEP_SPECIFIC_PREDICATE LONG);
203 
204 TYPE DATA_DIM_STEP_PREDICATE_TAB IS TABLE OF DATA_DIM_STEP_PREDICATE_REC
205    INDEX BY BINARY_INTEGER;
206 
207 TYPE INVALID_DATA_COMPONENTS_REC IS RECORD(
208    COMPONENT_OBJECT_NAME DEF_OBJECT_NAME%TYPE,
209    COMPONENT_FOLDER_NAME DEF_FOLDER_NAME%TYPE,
210    INVALID_TABLE_NAME VARCHAR2(30),
211    INVALID_FIRST_COLUMN VARCHAR2(30),
212    INVALID_SECOND_COLUMN VARCHAR2(30));
213 
214 TYPE INVALID_DATA_COMPONENTS_TAB IS TABLE OF INVALID_DATA_COMPONENTS_REC
215    INDEX BY BINARY_INTEGER;
216 
217 TYPE COMP_CUR_TYPE IS REF CURSOR;
218 
219 TYPE INVALID_DIM_COMPONENTS_REC IS RECORD(
220    COMPONENT_OBJECT_NAME DEF_OBJECT_NAME%TYPE,
221    COMPONENT_FOLDER_NAME DEF_FOLDER_NAME%TYPE,
222    INVALID_TABLE_NAME VARCHAR2(30),
223    INVALID_DIMENSION_COLUMN VARCHAR2(30));
224 
225 TYPE INVALID_DIM_COMPONENTS_TAB IS TABLE OF INVALID_DIM_COMPONENTS_REC
226    INDEX BY BINARY_INTEGER;
227 
228 
229 ------------------------
230 --  Constants --
231 ------------------------
232 FEM_APP_ID CONSTANT NUMBER	 := 274;
233 FEM_APP CONSTANT VARCHAR2(5) := 'FEM';
234 
235 G_OPEN CONSTANT VARCHAR2(1)   := '(';
236 G_CLOSE CONSTANT VARCHAR2(1)  := ')';
237 G_PERIOD	CONSTANT VARCHAR2(1)      := '.';
238 G_SPACE CONSTANT VARCHAR2(1)        := ' ';
239 G_2_SPACE CONSTANT VARCHAR2(2)        := '  ';
240 
241 --Operands--
242 G_OR  	CONSTANT VARCHAR2(3)          := 'OR';
243 G_AND 	CONSTANT VARCHAR2(3)          := 'AND';
244 
245 --Operators--
246 G_GREATER  CONSTANT VARCHAR2(30)     := FEM_UTILS.getLookupMeaning
247 				(p_Application_ID => FEM_APP_ID
248    	                        ,p_Lookup_Type => 'FEM_CONDITION_OPERATOR'
249 			        ,p_Lookup_Code => 'GREATER');
250 G_LESSER   CONSTANT VARCHAR2(30)     := FEM_UTILS.getLookupMeaning
251 				(p_Application_ID => FEM_APP_ID
252                                 ,p_Lookup_Type => 'FEM_CONDITION_OPERATOR'
253                                 ,p_Lookup_Code => 'LESSER');
254 G_EQUAL	   CONSTANT VARCHAR2(30)	     := FEM_UTILS.getLookupMeaning
255                                 (p_Application_ID => FEM_APP_ID
256                                 ,p_Lookup_Type => 'FEM_CONDITION_OPERATOR'
257                                 ,p_Lookup_Code => 'EQUAL');
258 G_GREATER_EQUAL CONSTANT VARCHAR2(30) := FEM_UTILS.getLookupMeaning
259                                 (p_Application_ID => FEM_APP_ID
260                                 ,p_Lookup_Type => 'FEM_CONDITION_OPERATOR'
261                                 ,p_Lookup_Code => 'GREATER_EQUAL');
262 G_LESSER_EQUAL	CONSTANT VARCHAR2(30) := FEM_UTILS.getLookupMeaning
263                                 (p_Application_ID => FEM_APP_ID
264                                 ,p_Lookup_Type => 'FEM_CONDITION_OPERATOR'
265                                 ,p_Lookup_Code => 'LESSER_EQUAL');
266 G_NOT_EQUAL  CONSTANT VARCHAR2(30)    := FEM_UTILS.getLookupMeaning
267                                 (p_Application_ID => FEM_APP_ID
268                                 ,p_Lookup_Type => 'FEM_CONDITION_OPERATOR'
269                                 ,p_Lookup_Code => 'NOT_EQUAL');
270 G_BETWEEN    CONSTANT VARCHAR2(30)    := FEM_UTILS.getLookupMeaning
271                                 (p_Application_ID => FEM_APP_ID
272                                 ,p_Lookup_Type => 'FEM_CONDITION_RANGE_OPERATOR'
273                                 ,p_Lookup_Code => 'BETWEEN');
274 G_NOT_BETWEEN  CONSTANT VARCHAR2(30)  := FEM_UTILS.getLookupMeaning
275                                 (p_Application_ID => FEM_APP_ID
276                                 ,p_Lookup_Type => 'FEM_CONDITION_RANGE_OPERATOR'
277                                 ,p_Lookup_Code => 'NOT_BETWEEN');
278 G_NODE  CONSTANT VARCHAR2(30)       := FEM_UTILS.getLookupMeaning
279                                 (p_Application_ID => FEM_APP_ID
280                                 ,p_Lookup_Type => 'FEM_COND_DIM_HIER_RELATIONS'
281                                 ,p_Lookup_Code => 'NODE');
282 G_DESC  CONSTANT VARCHAR2(30)       := FEM_UTILS.getLookupMeaning
283                                 (p_Application_ID => FEM_APP_ID
284                                 ,p_Lookup_Type => 'FEM_COND_DIM_HIER_RELATIONS'
285                                 ,p_Lookup_Code => 'DESC_OF');
286 G_NODE_DESC  CONSTANT VARCHAR2(30)       := FEM_UTILS.getLookupMeaning
287                                 (p_Application_ID => FEM_APP_ID
288                                 ,p_Lookup_Type => 'FEM_COND_DIM_HIER_RELATIONS'
289                                 ,p_Lookup_Code => 'NODE_AND_DESC');
290 G_LAST_DESC  CONSTANT VARCHAR2(30)       := FEM_UTILS.getLookupMeaning
291                                 (p_Application_ID => FEM_APP_ID
292                                 ,p_Lookup_Type => 'FEM_COND_DIM_HIER_RELATIONS'
293                                 ,p_Lookup_Code => 'LAST_DESC_OF');
294 
295 --Data Component Step Types--
296 G_DATA_ANOTHER_COL CONSTANT VARCHAR2(30) := 'DATA_ANOTHER_COL';
297 G_SPECIFIC_VALUE   CONSTANT VARCHAR2(30) := 'DATA_SPECIFIC';
298 G_RANGE_OF_VALUES  CONSTANT VARCHAR2(30) := 'DATA_RANGE';
299 
300 --Data Component SQL--
301 G_QUERY_FOR_DATA_CMPS CONSTANT LONG :=
302 
303                     'select'
304                   ||' a.cond_component_obj_id  as COMPONENT_OBJECT_ID'
305                   ||',a.data_dim_flag as COMPONENT_FLAG'
306                   ||',c1.object_definition_id  as COMPONENT_OBJECT_DEF_ID'
307                   ||',b.object_type_code       as COMPONENT_TYPE_CODE'
308 	            ||',d.table_name             as FACT_TABLE_NAME'
309                   ||' from'
310                   ||' fem_cond_components a'
311                   ||',fem_object_catalog_b b'
312                   ||',fem_object_definition_b c1'
313                   ||',fem_cond_data_cmp_tables d'
314                   ||' where'
315                   ||'    a.condition_obj_def_id = :Cond_Obj_Def_ID '
316                   ||' and b.object_id = a.cond_component_obj_id'
317                   ||' and b.object_id = c1.object_id'
318                   ||' and a.data_dim_flag = ''T'''
319                   ||' and d.cond_data_cmp_obj_def_id = c1.object_definition_id'
320                   ||' and d.table_name = :Table_Name';
321 
322 --(Display) Data Component SQL--
323 G_QUERY_FOR_DISPLAY_DATA_CMPS CONSTANT LONG :=
324                     'select'
325                   ||' a.cond_component_obj_id  as COMPONENT_OBJECT_ID'
326                   ||',a.data_dim_flag as COMPONENT_FLAG'
327                   ||',c1.object_definition_id  as COMPONENT_OBJECT_DEF_ID'
328                   ||',b.object_type_code       as COMPONENT_TYPE_CODE'
329 	            ||',d.table_name             as FACT_TABLE_NAME'
330                   ||' from'
331                   ||' fem_cond_components a'
332                   ||',fem_object_catalog_b b'
333                   ||',fem_object_definition_b c1'
334                   ||',fem_cond_data_cmp_tables d'
335                   ||' where'
336                   ||'    a.condition_obj_def_id = :Cond_Obj_Def_ID '
337                   ||' and b.object_id = a.cond_component_obj_id'
338                   ||' and b.object_id = c1.object_id'
339                   ||' and a.data_dim_flag = ''T'''
340                   ||' and d.cond_data_cmp_obj_def_id = c1.object_definition_id';
341 
342 G_UNION CONSTANT VARCHAR2(10) := ' UNION ';
343 
344 --Dimension Component SQL--
345 G_QUERY_FOR_DIM_CMPS CONSTANT LONG :=
346                     'SELECT'
347                   ||' c1.object_id as COMPONENT_OBJECT_ID,'
348                   ||' a.data_dim_flag AS COMPONENT_FLAG,'
349                   ||' d1.object_definition_id AS COMPONENT_OBJ_DEF_ID,'
350                   ||' c1.object_type_code AS COMPONENT_TYPE_CODE,'
351                   ||' NULL AS FACT_TABLE_NAME'
352                   ||' FROM fem_cond_components a,'
353                   ||' fem_object_catalog_b c,'
354                   ||' fem_object_definition_b d,'
355                   ||' fem_object_catalog_b c1,'
356                   ||' fem_object_definition_b d1'
357                   ||' where a.condition_obj_def_id = :condition_obj_def_id'
358                   ||' and a.condition_obj_def_id = d.object_definition_id'
359                   ||' and c.object_id = d.object_id'
360                   ||' and a.cond_component_obj_id = c1.object_id'
361                   ||' and c1.object_id = d1.object_id'
362                   ||' and a.data_dim_flag IN (''D'', ''V'')';
363 
364 END fem_conditions_api;