DBA Data[Home] [Help]

PACKAGE BODY: APPS.BIS_PMF_UTILITIES_PUB

Source


1 PACKAGE BODY BIS_PMF_UTILITIES_PUB AS
2 /* $Header: BISPPMUB.pls 115.4 99/10/11 15:03:52 porting sh $ */
3 --
4 /*
5 REM +=======================================================================+
6 REM |    Copyright (c) 1998 Oracle Corporation, Redwood Shores, CA, USA     |
7 REM |                         All rights reserved.                          |
8 REM +=======================================================================+
9 REM | FILENAME                                                              |
10 REM |     BISPPMUB.pls                                                      |
11 REM |                                                                       |
12 REM | DESCRIPTION                                                           |
13 REM |     Public API for PMF utilities                                      |
14 REM |                                                                       |
15 REM | NOTES                                                                 |
16 REM |                                                                       |
17 REM | HISTORY                                                               |
18 REM | 10-AUG-99 surao Creation                                              |
19 REM |                                                                       |
20 REM +=======================================================================+
21 */
22 --
23 --
24 --
25 FUNCTION Get_LEVEL_ID
26 ( p_Level_Short_Name IN VARCHAR2
27 )
28 RETURN NUMBER IS
29 --
30 l_level_id NUMBER;
31 --
32 BEGIN
33   IF p_Level_Short_Name IS NULL THEN
34     RETURN NULL;
35   ELSE
36     SELECT LEVEL_ID
37     INTO l_level_id
38     FROM BIS_LEVELS
39     WHERE SHORT_NAME = p_Level_Short_Name;
40     --
41     RETURN l_level_id ;
42   END IF ;
43 EXCEPTION
44   WHEN OTHERS THEN
45     RETURN NULL;
46 END Get_Level_ID ;
47 --
48 --
49 FUNCTION Get_Target_For_Target_Level
50 ( p_TARGET_LEVEL_SHORT_NAME IN VARCHAR2
51 , p_ORG_LEVEL_VALUE         IN VARCHAR2
52 , p_TIME_LEVEL_VALUE        IN VARCHAR2
53 , p_DIMENSION1_LEVEL_VALUE  IN VARCHAR2
54 , p_DIMENSION2_LEVEL_VALUE  IN VARCHAR2
55 , p_DIMENSION3_LEVEL_VALUE  IN VARCHAR2
56 , p_DIMENSION4_LEVEL_VALUE  IN VARCHAR2
57 , p_DIMENSION5_LEVEL_VALUE  IN VARCHAR2
58 , p_PLAN_NAME               IN VARCHAR2
59 )
60 RETURN NUMBER IS
61 --
62 l_target_level NUMBER;
63 l_target       NUMBER;
64 --
65 BEGIN
66   SELECT TARGET_LEVEL_ID
67   INTO l_target_level
68   FROM BIS_TARGET_LEVELS L
69   WHERE L.SHORT_NAME = p_TARGET_LEVEL_SHORT_NAME;
70   --
71   l_target := Get_Target_Value( l_target_level
72                               , p_ORG_LEVEL_VALUE
73                               , p_TIME_LEVEL_VALUE
74                               , p_DIMENSION1_LEVEL_VALUE
75                               , p_DIMENSION2_LEVEL_VALUE
76                               , p_DIMENSION3_LEVEL_VALUE
77                               , p_DIMENSION4_LEVEL_VALUE
78                               , p_DIMENSION5_LEVEL_VALUE
79                               , p_PLAN_NAME
80                               ) ;
81   RETURN l_target ;
82 --
83 EXCEPTION
84   WHEN OTHERS THEN
85     RETURN NULL ;
86 END Get_Target_For_Target_Level;
87 --
88 --
89 FUNCTION Get_Target_For_Level_ID
90 ( p_MEASURE_SHORT_NAME     IN VARCHAR2
91 , p_ORG_LEVEL              IN NUMBER
92 , p_TIME_LEVEL             IN NUMBER
93 , p_DIMENSION1_LEVEL       IN NUMBER
94 , p_DIMENSION2_LEVEL       IN NUMBER
95 , p_DIMENSION3_LEVEL       IN NUMBER
96 , p_DIMENSION4_LEVEL       IN NUMBER
97 , p_DIMENSION5_LEVEL       IN NUMBER
98 , p_ORG_LEVEL_VALUE        IN VARCHAR2
99 , p_TIME_LEVEL_VALUE       IN VARCHAR2
100 , p_DIMENSION1_LEVEL_VALUE IN VARCHAR2
101 , p_DIMENSION2_LEVEL_VALUE IN VARCHAR2
102 , p_DIMENSION3_LEVEL_VALUE IN VARCHAR2
103 , p_DIMENSION4_LEVEL_VALUE IN VARCHAR2
104 , p_DIMENSION5_LEVEL_VALUE IN VARCHAR2
105 , p_PLAN_NAME              IN VARCHAR2
106 )
107 RETURN NUMBER IS
108 --
109 l_target_level NUMBER;
110 l_target       NUMBER;
111 --
112 BEGIN
113   SELECT TARGET_LEVEL_ID
114   INTO l_target_level
115   FROM
116     BIS_TARGET_LEVELS L
117   , BIS_INDICATORS I
118   WHERE I.INDICATOR_ID        = L.INDICATOR_ID
119     AND I.SHORT_NAME          = p_MEASURE_SHORT_NAME
120     AND L.ORG_LEVEL_ID        = p_ORG_LEVEL
121     AND L.TIME_LEVEL_ID       = p_TIME_LEVEL
122     AND ( ( p_DIMENSION1_LEVEL IS NOT NULL
123             AND L.DIMENSION1_LEVEL_ID = p_DIMENSION1_LEVEL
124           )
125           OR
126           ( p_DIMENSION1_LEVEL IS NULL
127           )
128         )
129     AND ( ( p_DIMENSION2_LEVEL IS NOT NULL
130             AND L.DIMENSION2_LEVEL_ID = p_DIMENSION2_LEVEL
131           )
132           OR
133           ( p_DIMENSION2_LEVEL IS NULL
134           )
135         )
136     AND ( ( p_DIMENSION3_LEVEL IS NOT NULL
137             AND L.DIMENSION3_LEVEL_ID = p_DIMENSION3_LEVEL
138           )
139           OR
140           ( p_DIMENSION3_LEVEL IS NULL
141           )
142         )
143     AND ( ( p_DIMENSION4_LEVEL IS NOT NULL
144             AND L.DIMENSION4_LEVEL_ID = p_DIMENSION4_LEVEL
145           )
146           OR
147           ( p_DIMENSION4_LEVEL IS NULL
148           )
149         )
150     AND ( ( p_DIMENSION5_LEVEL IS NOT NULL
151             AND L.DIMENSION5_LEVEL_ID = p_DIMENSION5_LEVEL
152           )
153           OR
154           ( p_DIMENSION5_LEVEL IS NULL
155           )
156         );
157   --
158   l_target := Get_Target_Value( l_TARGET_LEVEL
159                               , p_ORG_LEVEL_VALUE
160                               , p_TIME_LEVEL_VALUE
161                               , p_DIMENSION1_LEVEL_VALUE
162                               , p_DIMENSION2_LEVEL_VALUE
163                               , p_DIMENSION3_LEVEL_VALUE
164                               , p_DIMENSION4_LEVEL_VALUE
165                               , p_DIMENSION5_LEVEL_VALUE
166                               , p_PLAN_NAME
167                               );
168   RETURN l_target;
169   --
170 EXCEPTION
171   WHEN OTHERS THEN
172 --    DBMS_OUTPUT.PUT_LINE(SQLCODE||'  '||SQLERRM);
173 --    DBMS_OUTPUT.PUT_LINE('Measure short name = '||p_MEASURE_SHORT_NAME);
174     RETURN NULL ;
175 END Get_Target_For_Level_ID;
176 --
177 --
178 FUNCTION Get_Target_For_Level
179 ( p_MEASURE_SHORT_NAME     IN VARCHAR2
180 , p_ORG_LEVEL              IN VARCHAR2
181 , p_TIME_LEVEL             IN VARCHAR2
182 , p_DIMENSION1_LEVEL       IN VARCHAR2
183 , p_DIMENSION2_LEVEL       IN VARCHAR2
184 , p_DIMENSION3_LEVEL       IN VARCHAR2
185 , p_DIMENSION4_LEVEL       IN VARCHAR2
186 , p_DIMENSION5_LEVEL       IN VARCHAR2
187 , p_ORG_LEVEL_VALUE        IN VARCHAR2
188 , p_TIME_LEVEL_VALUE       IN VARCHAR2
189 , p_DIMENSION1_LEVEL_VALUE IN VARCHAR2
190 , p_DIMENSION2_LEVEL_VALUE IN VARCHAR2
191 , p_DIMENSION3_LEVEL_VALUE IN VARCHAR2
192 , p_DIMENSION4_LEVEL_VALUE IN VARCHAR2
193 , p_DIMENSION5_LEVEL_VALUE IN VARCHAR2
194 , p_PLAN_NAME              IN VARCHAR2
195 )
196 RETURN NUMBER IS
197 --
198 l_target_level        NUMBER;
199 l_target              NUMBER;
200 --
201 l_ORG_LEVEL_ID        NUMBER;
202 l_TIME_LEVEL_ID       NUMBER;
203 l_DIMENSION1_LEVEL_ID NUMBER;
204 l_DIMENSION2_LEVEL_ID NUMBER;
205 l_DIMENSION3_LEVEL_ID NUMBER;
206 l_DIMENSION4_LEVEL_ID NUMBER;
207 l_DIMENSION5_LEVEL_ID NUMBER;
208 --
209 BEGIN
210   l_ORG_LEVEL_ID        := Get_level_ID ( p_ORG_LEVEL );
211   l_TIME_LEVEL_ID       := Get_level_ID ( p_TIME_LEVEL );
212   l_DIMENSION1_LEVEL_ID := Get_level_ID ( p_DIMENSION1_LEVEL );
213   l_DIMENSION2_LEVEL_ID := Get_level_ID ( p_DIMENSION2_LEVEL );
214   l_DIMENSION3_LEVEL_ID := Get_level_ID ( p_DIMENSION3_LEVEL );
215   l_DIMENSION4_LEVEL_ID := Get_level_ID ( p_DIMENSION4_LEVEL );
216   l_DIMENSION5_LEVEL_ID := Get_level_ID ( p_DIMENSION5_LEVEL );
217   --
218   SELECT TARGET_LEVEL_ID
219   INTO l_target_level
220   FROM
221     BIS_TARGET_LEVELS L
222   , BIS_INDICATORS I
223   WHERE I.INDICATOR_ID        = L.INDICATOR_ID
224     AND I.SHORT_NAME          = p_MEASURE_SHORT_NAME
225     AND L.ORG_LEVEL_ID        = l_ORG_LEVEL_ID
226     AND L.TIME_LEVEL_ID       = l_TIME_LEVEL_ID
227     AND ((l_DIMENSION1_LEVEL_ID IS NOT NULL
228          AND L.DIMENSION1_LEVEL_ID = l_DIMENSION1_LEVEL_ID)
229          OR (l_DIMENSION1_LEVEL_ID IS NULL))
230     AND ((l_DIMENSION2_LEVEL_ID IS NOT NULL
231          AND L.DIMENSION2_LEVEL_ID = l_DIMENSION2_LEVEL_ID)
232          OR (l_DIMENSION2_LEVEL_ID IS NULL))
233     AND ((l_DIMENSION3_LEVEL_ID IS NOT NULL
234          AND L.DIMENSION3_LEVEL_ID = l_DIMENSION3_LEVEL_ID)
235          OR (l_DIMENSION3_LEVEL_ID IS NULL))
236     AND ((l_DIMENSION4_LEVEL_ID IS NOT NULL
237          AND L.DIMENSION4_LEVEL_ID = l_DIMENSION4_LEVEL_ID)
238          OR (l_DIMENSION4_LEVEL_ID IS NULL))
239     AND ((l_DIMENSION5_LEVEL_ID IS NOT NULL
240          AND L.DIMENSION5_LEVEL_ID = l_DIMENSION5_LEVEL_ID)
241          OR (l_DIMENSION5_LEVEL_ID IS NULL));
242   --
243   l_target := Get_Target_Value( l_TARGET_LEVEL
244                               , p_ORG_LEVEL_VALUE
245                               , p_TIME_LEVEL_VALUE
246                               , p_DIMENSION1_LEVEL_VALUE
247                               , p_DIMENSION2_LEVEL_VALUE
248                               , p_DIMENSION3_LEVEL_VALUE
249                               , p_DIMENSION4_LEVEL_VALUE
250                               , p_DIMENSION5_LEVEL_VALUE
251                               , p_PLAN_NAME
252                               );
253 --
254   RETURN l_target ;
255 EXCEPTION
256   WHEN OTHERS THEN
257 --    DBMS_OUTPUT.PUT_LINE(SQLCODE||'  '||SQLERRM);
258 --    DBMS_OUTPUT.PUT_LINE('Measure short name = '||p_MEASURE_SHORT_NAME);
259     RETURN NULL ;
260 END Get_Target_For_Level;
261 --
262 --
263 FUNCTION Get_Target_Value
264 ( p_TARGET_LEVEL_ID        IN NUMBER
265 , p_ORG_LEVEL_VALUE        IN VARCHAR2
266 , p_TIME_LEVEL_VALUE       IN VARCHAR2
267 , p_DIMENSION1_LEVEL_VALUE IN VARCHAR2
268 , p_DIMENSION2_LEVEL_VALUE IN VARCHAR2
269 , p_DIMENSION3_LEVEL_VALUE IN VARCHAR2
270 , p_DIMENSION4_LEVEL_VALUE IN VARCHAR2
271 , p_DIMENSION5_LEVEL_VALUE IN VARCHAR2
272 , p_PLAN_NAME              IN VARCHAR2
273 )
274 RETURN NUMBER IS
275 --
276 l_target NUMBER;
277 l_plan_id NUMBER;
278 --
279 BEGIN
280   SELECT PLAN_ID
281     INTO l_plan_id
282     FROM BIS_BUSINESS_PLANS_VL
283    WHERE NAME = p_PLAN_NAME ;
284 
285   SELECT TARGET
286     INTO l_target
287     FROM BIS_TARGET_VALUES
288    WHERE TARGET_LEVEL_ID = P_TARGET_LEVEL_ID
289      AND PLAN_ID         = l_plan_id
290      AND ORG_LEVEL_VALUE = P_ORG_LEVEL_VALUE
291      AND UPPER(TIME_LEVEL_VALUE) = UPPER(p_TIME_LEVEL_VALUE)
292      AND ((p_DIMENSION1_LEVEL_VALUE IS NOT NULL
293        AND DIMENSION1_LEVEL_VALUE = p_DIMENSION1_LEVEL_VALUE )
294        OR (p_DIMENSION1_LEVEL_VALUE IS NULL))
295      AND ((p_DIMENSION2_LEVEL_VALUE IS NOT NULL
296        AND DIMENSION2_LEVEL_VALUE = p_DIMENSION2_LEVEL_VALUE )
297        OR (p_DIMENSION2_LEVEL_VALUE IS NULL))
298      AND ((p_DIMENSION3_LEVEL_VALUE IS NOT NULL
299        AND DIMENSION3_LEVEL_VALUE = p_DIMENSION3_LEVEL_VALUE )
300        OR (p_DIMENSION3_LEVEL_VALUE IS NULL))
301      AND ((p_DIMENSION4_LEVEL_VALUE IS NOT NULL
302        AND DIMENSION4_LEVEL_VALUE = p_DIMENSION4_LEVEL_VALUE )
303        OR (p_DIMENSION4_LEVEL_VALUE IS NULL))
304      AND ((p_DIMENSION5_LEVEL_VALUE IS NOT NULL
305        AND DIMENSION5_LEVEL_VALUE = p_DIMENSION5_LEVEL_VALUE )
306        OR (p_DIMENSION5_LEVEL_VALUE IS NULL)) ;
307   --
308   RETURN l_target;
309 --
310 EXCEPTION
311   WHEN OTHERS THEN
312 --    DBMS_OUTPUT.PUT_LINE(SQLCODE||'  '||SQLERRM);
313 --    DBMS_OUTPUT.PUT_LINE('p_TIME_LEVEL_VALUE = '||p_TIME_LEVEL_VALUE);
314 --    DBMS_OUTPUT.PUT_LINE('p_ORG_LEVEL_VALUE = '||p_ORG_LEVEL_VALUE);
315 --    DBMS_OUTPUT.PUT_LINE('p_DIMENSION1_LEVEL_VALUE = '
316 --                          ||p_DIMENSION1_LEVEL_VALUE);
317     RETURN NULL;
318 END Get_Target_Value;
319 --
320 --
321 END BIS_PMF_UTILITIES_PUB;