DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_OAF_VIEWS_PVT

Source


1 PACKAGE BODY BSC_OAF_VIEWS_PVT AS
2 /* $Header: BSCOAFVB.pls 120.2 2007/02/08 13:20:08 ppandey ship $ */
3 /*===========================================================================+
4 |
5 |   Name:          GET_AOPTS_SERIES_NAMES
6 |
7 |   Description:   Return a string with the all the Analysis option names in this format:
8 |                      A0_Name,A1_Name,A2_Name;Series Name
9 |
10 |   Parameters:
11 +============================================================================*/
12 /*===========================================================================+
13 |               Copyright (c) 1999 Oracle Corporation                        |
14 |                  Redwood Shores, California, USA                           |
15 |                       All rights reserved                                  |
16 |============================================================================|
17 |
18 |   Name:          BSCOAFVB.pls
19 |
20 |   Description:   Package to support OA framework Views
21 |
22 |
23 |   Dependencies:
24 |
25 |   Example:
26 |
27 |   Security:
28 |
29 |   History:       Created By: Henry Camacho        Date: 30-NOV-01
30 |                  Bug #2660714 Pankaj                    14-NOV-02
31 |                  Bug #2663355 Ashankar                  30-DEC-02
32 |                  Bug #2943217 PWALI                     15-MAY-03
33 |   31-JUL-2003    mahrao  Increased the size of v_name in GET_LEVEL_PARENT_NAMES
34 |                          for bug# 3030788
35 |   16-NOV-2006    ankgoel Color By KPI enh#5244136
36 |   28-DEC-2006    ppandey For simulation display series name, enh#5386112
37 +============================================================================*/
38 
39 
40 FUNCTION GET_AOPTS_SERIES_NAMES(X_INDICATOR in NUMBER,
41       X_A0 in NUMBER,
42       X_A1 in NUMBER,
43       X_A2 in NUMBER,
44       X_SERIES_ID in NUMBER
45 ) RETURN VARCHAR2 IS
46 
47     h_ag_count NUMBER;
48     h_ag1_depend NUMBER;
49     h_ag2_depend NUMBER;
50     h_val VARCHAR2(350);
51     h_a0_name BSC_KPI_ANALYSIS_OPTIONS_tl.Name%TYPE;
52     h_a1_name BSC_KPI_ANALYSIS_OPTIONS_tl.Name%TYPE;
53     h_a2_name BSC_KPI_ANALYSIS_OPTIONS_tl.Name%TYPE;
54     h_series_name BSC_KPI_ANALYSIS_MEASURES_TL.Name%TYPE;
55     h_series_count NUMBER;
56 
57     l_al_count NUMBER;               --added to solve the bug 2663355
58 
59     h_err NUMBER;
60     CURSOR c_kpi IS
61     SELECT INDICATOR_TYPE,CONFIG_TYPE
62     FROM BSC_KPIS_B
63     WHERE INDICATOR=X_INDICATOR;
64 
65    h_kpi_type NUMBER;
66    h_kpi_config NUMBER;
67 
68 BEGIN
69     h_err := 0;
70     -- Number of Analysis Groups
71     SELECT MAX( ANALYSIS_GROUP_ID)
72     INTO h_ag_count
73     FROM BSC_KPI_ANALYSIS_GROUPS
74     WHERE INDICATOR=X_INDICATOR;
75 
76 
77     h_err := 1;
78     l_al_count := 0;
79     -- Get Name for A0
80     SELECT NAME
81     INTO h_a0_name
82     FROM BSC_KPI_ANALYSIS_OPTIONS_VL
83     WHERE ANALYSIS_GROUP_ID =0 AND
84     OPTION_ID=X_A0 AND
85     INDICATOR=X_INDICATOR;
86 
87 
88     -- Get Name for A1
89     IF h_ag_count >= 1 THEN
90         h_err := 2;
91 
92         --h_ag_depend
93         SELECT DEPENDENCY_FLAG
94         INTO h_ag1_depend
95         FROM BSC_KPI_ANALYSIS_GROUPS
96         WHERE ANALYSIS_GROUP_ID =1 AND
97         INDICATOR=X_INDICATOR;
98 
99 
100 
101                 -- If depend it
102         IF h_ag1_depend = 0 THEN
103             h_err := 3;
104             SELECT NAME
105             INTO h_a1_name
106             FROM BSC_KPI_ANALYSIS_OPTIONS_VL
107             WHERE ANALYSIS_GROUP_ID =1 AND
108             OPTION_ID=X_A1 AND
109             INDICATOR=X_INDICATOR;
110                 ELSE
111             h_err := 4;
112             BEGIN
113                 SELECT NAME
114                 INTO h_a1_name
115                 FROM BSC_KPI_ANALYSIS_OPTIONS_VL
116                 WHERE ANALYSIS_GROUP_ID =1 AND
117                 OPTION_ID=X_A1 AND
118                 PARENT_OPTION_ID = X_A0 AND
119                 INDICATOR=X_INDICATOR;
120 
121                 ---Added to fix the bug 2663355 ----
122                 SELECT COUNT(*)
123                 INTO l_al_count
124                 FROM BSC_KPI_ANALYSIS_OPTIONS_VL
125                 WHERE ANALYSIS_GROUP_ID =1 AND
126                 PARENT_OPTION_ID = X_A0 AND
127                 INDICATOR =X_INDICATOR;
128                 ------------------------------------
129 
130 
131                         --Validation if there is not record
132             EXCEPTION WHEN OTHERS THEN NULL; END;
133         END IF;
134     END IF;
135     h_err := 5;
136     -- Concat A0 and A1
137         h_val :=  h_a0_name ;
138 
139         IF h_a1_name IS NOT NULL THEN
140 
141 
142       IF l_al_count >1 or l_al_count =0 THEN                     -- condition aded to fix the bug 2663355
143 
144              h_val := h_val || ',' || h_a1_name;
145          l_al_count := 0;
146       ELSE
147 
148          h_val := h_val;
149       END IF;
150        END IF;
151 
152 
153 
154 
155 
156     -- Get Name for A2
157     IF h_ag_count >= 2 THEN
158         h_err := 6;
159         --h_ag_depend
160         SELECT DEPENDENCY_FLAG
161         INTO h_ag2_depend
162         FROM BSC_KPI_ANALYSIS_GROUPS
163         WHERE ANALYSIS_GROUP_ID =2 AND
164         INDICATOR=X_INDICATOR;
165                 -- If depend it
166         IF h_ag2_depend = 0 THEN
167             h_err := 7;
168             SELECT NAME
169             INTO h_a2_name
170             FROM BSC_KPI_ANALYSIS_OPTIONS_VL
171             WHERE ANALYSIS_GROUP_ID =2 AND
172             OPTION_ID=X_A2 AND
173             INDICATOR=X_INDICATOR;
174                 ELSE
175                      -- The AG2 is dependent, but AG1 is not
176              h_err := 8;
177              IF h_ag2_depend = 1 AND h_ag1_depend = 0 THEN
178             h_err := 9;
179             BEGIN
180                 SELECT NAME
181                 INTO h_a2_name
182                 FROM BSC_KPI_ANALYSIS_OPTIONS_VL
183                 WHERE ANALYSIS_GROUP_ID =2 AND
184                 OPTION_ID=X_A2 AND
185                 PARENT_OPTION_ID = X_A1 AND
186                 INDICATOR=X_INDICATOR;
187 
188 
189                 ---Added to fix the bug 2663355 ----
190                 SELECT COUNT(*)
191                 INTO l_al_count
192                 FROM BSC_KPI_ANALYSIS_OPTIONS_VL
193                 WHERE ANALYSIS_GROUP_ID =2 AND
194                 PARENT_OPTION_ID = X_A1 AND
195                 INDICATOR =X_INDICATOR;
196                 ------------------------------------
197 
198 
199                         --Validation if there is not record
200             EXCEPTION WHEN OTHERS THEN NULL; END;
201                     ELSE
202             h_err := 10;
203             BEGIN
204                 SELECT NAME
205                 INTO h_a2_name
206                 FROM BSC_KPI_ANALYSIS_OPTIONS_VL
207                 WHERE ANALYSIS_GROUP_ID =2 AND
208                 OPTION_ID=X_A2 AND
209                 PARENT_OPTION_ID = X_A1 AND
210                 GRANDPARENT_OPTION_ID = X_A0 AND
211                 INDICATOR=X_INDICATOR;
212 
213                 -- Added to fix the bug 2663355 ----------
214                 SELECT COUNT(*)
215                 INTO l_al_count
216                 FROM BSC_KPI_ANALYSIS_OPTIONS_VL
217                 WHERE ANALYSIS_GROUP_ID =2 AND
218                 PARENT_OPTION_ID = X_A1 AND
219                 GRANDPARENT_OPTION_ID = X_A0 AND
220                 INDICATOR =X_INDICATOR;
221                 ------------------------------------------
222 
223 
224                         --Validation if there is not record
225             EXCEPTION WHEN OTHERS THEN NULL; END;
226                     END IF;
227         END IF;
228     END IF;
229     h_err := 11;
230     -- Concat A1 and A2
231 
232     IF h_a2_name IS NOT NULL THEN
233 
234     IF l_al_count > 1 or l_al_count =0  THEN               -- added condition to fix the bug 2663355.
235        h_val := h_val || ',' || h_a2_name;
236        l_al_count := 0;
237     END IF;
238 
239         END IF;
240 
241 
242     -- Get Series Name
243     OPEN c_kpi;
244     FETCH c_kpi INTO h_kpi_type,h_kpi_config;
245     IF (c_kpi%notfound) THEN
246         h_kpi_type := 1;
247         h_kpi_config := 1;
248     END IF;
249     CLOSE c_kpi;
250         --Multiple series
251     IF (h_kpi_type = 10 AND h_kpi_config = 1)
252         OR (h_kpi_type = 1 AND h_kpi_config = 7) THEN
253         BEGIN
254             SELECT COUNT(*) VAL
255             INTO h_series_count
256             FROM BSC_KPI_ANALYSIS_MEASURES_VL
257             WHERE  ANALYSIS_OPTION0 =X_A0 AND
258             ANALYSIS_OPTION1 =X_A1 AND
259             ANALYSIS_OPTION2 =X_A2 AND
260             INDICATOR=X_INDICATOR;
261             IF h_series_count >1 THEN
262                 SELECT NAME
263                 INTO h_series_name
264                 FROM BSC_KPI_ANALYSIS_MEASURES_VL
265                 WHERE  ANALYSIS_OPTION0 =X_A0 AND
266                 ANALYSIS_OPTION1 =X_A1 AND
267                 ANALYSIS_OPTION2 =X_A2 AND
268                 SERIES_ID = X_SERIES_ID AND
269                 INDICATOR=X_INDICATOR;
270             ELSE
271                 h_series_name := '';
272             END IF;
273         --Validation if there is not record
274         EXCEPTION WHEN OTHERS THEN NULL; END;
275         -- Concat series name
276         IF (h_kpi_type = 1 AND h_kpi_config = 7 AND h_series_name IS NOT NULL) THEN
277           h_val := h_series_name;
278         ELSIF h_series_name IS NOT NULL THEN
279             h_val := h_val || ';' || h_series_name;
280         END IF;
281     END IF;
282 
283 
284         RETURN h_val;
285 EXCEPTION
286     WHEN OTHERS THEN
287     h_val := h_val || '/' || h_err || '/' || SQLERRM;
288         RETURN h_val;
289 END GET_AOPTS_SERIES_NAMES;
290 
291 /* ===========================================================
292  | Description : Return the Alarm Color for Kpi measure.
293  |       This color is showed buy Ibuilder
294  |
295  |Psuedo logic
296  |        If DefaultMeasure  = "BSC"  Then
297  |      Color = KPI Color    -> BSC_DESIGNER_PVT.GET_KPI_COLOR
298  |        Elseif Measure is BSC and not DEFault THEN
299  |      Color = No Color 'WHITE'
300  |        Elseif Measure is PMF and kpi <> PRODUCTION THEN
301  |      Color = KPI Color    -> BSC_DESIGNER_PVT.GET_KPI_COLOR
302  |        Elseif Measure is PMF and kpi = PRODUCTION THEN
303  |      Color = No Color 'WHITE'
304  |  end if;
305  ===========================================================*/
306 /*FUNCTION GET_MEASURE_COLOR(X_INDICATOR in NUMBER,
307       X_A0 in NUMBER,
308       X_A1 in NUMBER,
309       X_A2 in NUMBER,
310       X_SERIES_ID in NUMBER
311     ) RETURN VARCHAR2 is
312 
313 h_kpi_prototype  VARCHAR2(10);
314 h_kpi_measure_source    bsc_kpi_defaults_b.measure_source%TYPE;
315 h_measure_source    BSC_SYS_DATASETS_B.source%type;
316 h_color         bsc_kpis_b.prototype_color%TYPE;
317 h_RED       bsc_kpis_b.prototype_color%TYPE;
318 h_GREEN     bsc_kpis_b.prototype_color%TYPE;
319 h_YELLOW    bsc_kpis_b.prototype_color%TYPE;
320 h_GRAY      bsc_kpis_b.prototype_color%TYPE;
321 h_LIGHTGRAY     bsc_kpis_b.prototype_color%TYPE;
322 h_WHITE     bsc_kpis_b.prototype_color%TYPE;
323 
324 d_A0  NUMBER;
325 d_A1  NUMBER;
326 d_A2  NUMBER;
327 d_SERIES_ID  NUMBER;
328 h_com_default NUMBER(1);
329 
330 BEGIN
331     h_RED :='R';
332     h_GREEN  :='G';
333     h_YELLOW :='Y';
334     h_GRAY :='X';
335     h_LIGHTGRAY :='L';
336     h_WHITE :='W';
337 
338     --Get Defaults
339     SELECT DISTINCT DF.A0_DEFAULT,DF.A1_DEFAULT,DF.A2_DEFAULT,MS.SERIES_ID
340     INTO d_A0,d_A1,d_A2,d_SERIES_ID
341     FROM BSC_DB_COLOR_AO_DEFAULTS_V DF,
342          BSC_KPI_ANALYSIS_MEASURES_B MS
343     WHERE
344     DEFAULT_VALUE =1 AND
345     DF.INDICATOR = MS.INDICATOR AND
346     DF.A0_DEFAULT = MS.ANALYSIS_OPTION0 AND
347     DF.A1_DEFAULT = MS.ANALYSIS_OPTION1 AND
348     DF.A2_DEFAULT = MS.ANALYSIS_OPTION2 AND
349     DF.INDICATOR =X_INDICATOR;
350 
351     h_com_default :=0;
352     IF X_A0 = d_A0 AND X_A1 = d_A1 AND X_A2 = d_A2 AND X_SERIES_ID = d_SERIES_ID THEN
353         h_com_default := 1;
354     END IF;
355 
356     --Get if the measure is BSC or PMF
357     --Bug #2660714
358     SELECT NVL(DS.SOURCE,'BSC') VAL
359     INTO h_measure_source
360     FROM  BSC_KPI_ANALYSIS_MEASURES_B MS,
361     BSC_SYS_DATASETS_B DS
362     WHERE
363     ANALYSIS_OPTION0 =X_A0 AND
364     ANALYSIS_OPTION1 =X_A1 AND
365     ANALYSIS_OPTION2 =X_A2 AND
366     SERIES_ID = X_SERIES_ID AND
367     MS.DATASET_ID = DS.DATASET_ID AND
368     MS.INDICATOR =X_INDICATOR;
369 
370     --Get if prototype for pmf
371     SELECT DECODE(PROTOTYPE_FLAG,
372             0,'FALSE',
373             5,'FALSE',
374             6,'FALSE',
375               'TRUE') PROTOTYPE
376     INTO h_kpi_prototype
377     FROM BSC_KPIS_B
378     WHERE INDICATOR =X_INDICATOR;
379     -- Calculate the Color
380         IF h_measure_source ='BSC' THEN
381         IF h_com_default = 1  THEN
382             h_color := BSC_DESIGNER_PVT.GET_KPI_COLOR(X_INDICATOR);
383         ELSE
384             h_color := h_WHITE;
385         END IF;
386     ELSE
387         IF h_kpi_prototype = 'TRUE' THEN
388             h_color := BSC_DESIGNER_PVT.GET_KPI_COLOR(X_INDICATOR);
389         ELSE
390             h_color := h_WHITE;
391         END IF;
392     END IF;
393 RETURN h_color;
394 
395 EXCEPTION
396     WHEN OTHERS THEN
397     RETURN h_WHITE;
398 end GET_MEASURE_COLOR;*/
399 
400 
401 function Get_Aopts_Display_Flag(
402   x_indicator   IN  number
403  ,x_a0      IN  number
404  ,x_a1      IN  number
405  ,x_a2      IN  number
406  ,x_series_id   IN  number
407 ) return number is
408 
409 --  This function returns the flag value for the analysis option in a multi analysis
410 --  group Indicator.  If it encounters a value of 0 (hide) for the flag at any level
411 --  then it returns this zero immediately (there is no need to keep checking for other
412 --  values in the same combination since the zero will hide the entire combination),
413 --  else it returns either 1 (default) or 2 (non-default).
414 
415 cursor c_kpi is
416   select indicator_type,config_type
417     from BSC_KPIS_B
418    where indicator = x_indicator;
419 
420 h_ag_count              number;
421 h_ag1_depend            number;
422 h_ag2_depend            number;
423 h_series_count      number;
424 h_err           number;
425 l_disp_flag0        number;
426 l_def_flag0     number;
427 l_disp_flag1        number;
428 l_def_flag1     number;
429 l_disp_flag2        number;
430 l_def_flag2     number;
431 l_disp_flag_show    number;
432 l_simul_tree        number;
433 l_def_opt_count     number;
434 
435 begin
436 
437   h_err := 0;
438   -- Number of Analysis Groups
439   select max(analysis_group_id)
440     into h_ag_count
441     from BSC_KPI_ANALYSIS_GROUPS
442    where indicator = x_indicator;
443 
444   h_err := 1;
445 
446   -- Get option id default value for Analysis Group 0.
447   select default_value
448     into l_def_flag0
449     from BSC_KPI_ANALYSIS_GROUPS
450    where indicator = x_indicator
451      and analysis_group_id = 0;
452 
453   -- Get Name for A0
454   select user_level1
455     into l_disp_flag0
456     from BSC_KPI_ANALYSIS_OPTIONS_VL
457    where analysis_group_id = 0
458      and option_id = x_a0
459      and indicator = x_indicator;
460 
461   -- if 0 then return value immediately.
462   if l_disp_flag0 = 0 then
463     return l_disp_flag0;
464   end if;
465 
466   -- Get Name for A1
467   if h_ag_count >= 1 then -- if for A1
468 
469     h_err := 2;
470 
471     -- Get dependency flag and option id default value for Analysis group 1.
472     select dependency_flag, default_value
473       into h_ag1_depend, l_def_flag1
474       from BSC_KPI_ANALYSIS_GROUPS
475      where analysis_group_id = 1
476        and indicator = x_indicator;
477 
478     -- If depend it
479     if h_ag1_depend = 0 then
480 
481       h_err := 3;
482       select user_level1
483         into l_disp_flag1
484         from BSC_KPI_ANALYSIS_OPTIONS_VL
485        where analysis_group_id = 1
486          and option_id = x_a1
487          and indicator = x_indicator;
488 
489       -- if 0 then return value immediately.
490       if l_disp_flag1 = 0 then
491         return l_disp_flag1;
492       end if;
493 
494     else
495 
496       h_err := 4;
497       begin
498 
499         select user_level1
500           into l_disp_flag1
501           from BSC_KPI_ANALYSIS_OPTIONS_VL
502      where analysis_group_id = 1
503            and option_id = x_a1
504            and parent_option_id = x_a0
505            and indicator = x_indicator;
506 
507 
508         -- if 0 then return value immediately.
509         if l_disp_flag1 = 0 then
510           return l_disp_flag1;
511         end if;
512 
513 
514       --Validation if there is no record
515       EXCEPTION
516         WHEN OTHERS THEN
517           null;
518       end;
519 
520     end if;
521 
522   end if;  -- end if for A1.
523 
524 
525 
526   -- Get Name for A2
527   if h_ag_count >= 2 then
528 
529     h_err := 6;
530     -- Get dependency flag and option id default value for Analysis group 2.
531     select dependency_flag, default_value
532       into h_ag2_depend, l_def_flag2
533       from BSC_KPI_ANALYSIS_GROUPS
534      where analysis_group_id = 2
535        and indicator = x_indicator;
536 
537     -- If dependent
538     if h_ag2_depend = 0 then
539 
540       h_err := 7;
541       select user_level1
542       into l_disp_flag2
543       from BSC_KPI_ANALYSIS_OPTIONS_VL
544       where analysis_group_id = 2
545       and option_id = x_a2
546       and indicator = x_indicator;
547 
548       if l_disp_flag2 = 0 then
549         return l_disp_flag2;
550       end if;
551 
552     else
553 
554       -- The AG2 is dependent, but AG1 is not
555       h_err := 8;
556       if h_ag2_depend = 1 and h_ag1_depend = 0 then
557 
558         h_err := 9;
559     begin
560       select user_level1
561         into l_disp_flag2
562         from BSC_KPI_ANALYSIS_OPTIONS_VL
563        where analysis_group_id = 2
564              and option_id = x_a2
565              and parent_option_id = x_a1
566              and indicator=x_indicator;
567 
568           if l_disp_flag2 = 0 then
569             return l_disp_flag2;
570           end if;
571 
572         --Validation if there is not record
573         EXCEPTION
574           WHEN OTHERS THEN
575             NULL;
576         end;
577 
578       else
579 
580     h_err := 10;
581     begin
582 
583       select user_level1
584         into l_disp_flag2
585         from BSC_KPI_ANALYSIS_OPTIONS_VL
586        where analysis_group_id = 2
587              and option_id = x_a2
588              and parent_option_id = x_a1
589              and grandparent_option_id = x_a0
590              and indicator = x_indicator;
591 
592           if l_disp_flag2 = 0 then
593             return l_disp_flag2;
594           end if;
595 
596         --Validation if there is no record
597     EXCEPTION
598           WHEN OTHERS THEN
599             NULL;
600         END;
601 
602       end if;
603 
604     end if;
605 
606   end if;
607 
608   -- determine if this is a simulation tree indicator.
609   select count(indicator)
610     into l_simul_tree
611     from BSC_KPIS_B
612    where indicator = x_indicator
613      and indicator_type = 1
614      and config_type = 7;
615 
616   -- Determine value to return.
617   -- First check if this is a simulation tree Indicator.
618   if l_simul_tree <> 0 then
619     select count(a.option_id)
620       into l_def_opt_count
621       from BSC_KPI_ANALYSIS_OPTIONS_B a,
622            BSC_KPI_ANALYSIS_GROUPS b
623      where a.indicator = x_indicator
624        and a.indicator = b.indicator
625        and a.analysis_group_id = b.analysis_group_id
626        and a.option_id = b.default_value
627        and a.user_level1 = 1;
628     if l_def_opt_count > 0 then
629       return 1;
630     else
631       return 0;
632     end if;
633   elsif h_ag_count < 1 then
634     if x_a0 = l_def_flag0 then
635       return 1;
636     else
637       return 2;
638     end if;
639   elsif h_ag_count < 2 then
640     if x_a0 = l_def_flag0 and x_a1 = l_def_flag1 then
641       return 1;
642     else
643       return 2;
644     end if;
645   else
646     if x_a0 = l_def_flag0 and x_a1 = l_def_flag1 and x_a2 = l_def_flag2 then
647       return 1;
648     else
649       return 2;
650     end if;
651   end if;
652 
653 
654 EXCEPTION
655     WHEN OTHERS THEN
656         return 0;
657 end Get_Aopts_Display_Flag;
658 
659 /* ===========================================================
660  | Description : Return the parent level names of a given level
661  |       in a string
662  |
663  |Psuedo logic
664  ===========================================================*/
665 FUNCTION  GET_LEVEL_PARENT_NAMES(p_level_id IN NUMBER
666     ) RETURN VARCHAR2 IS
667   CURSOR c_parents IS
668     SELECT PL.NAME
669      FROM BSC_SYS_DIM_LEVEL_RELS LR,
670               BSC_SYS_DIM_LEVELS_VL PL
671      WHERE LR.DIM_LEVEL_ID = p_level_id
672                AND PL.DIM_LEVEL_ID = PARENT_DIM_LEVEL_ID;
673   v_name BSC_SYS_DIM_LEVELS_TL.NAME%TYPE;
674   v_parents VARCHAR2(3000) := '';
675   v_count INTEGER := 0;
676 BEGIN
677   OPEN c_parents;
678   LOOP
679     FETCH c_parents INTO v_name;
680     EXIT WHEN c_parents%NOTFOUND;
681     IF v_count > 0 THEN
682         v_parents := v_parents || ', ';
683     END IF;
684     v_parents := v_parents || v_name;
685     v_count := v_count + 1;
686   END LOOP;
687   CLOSE c_parents;
688   RETURN v_parents;
689  EXCEPTION
690   WHEN OTHERS THEN
691     RETURN v_parents;
692 END GET_LEVEL_PARENT_NAMES;
693 
694 
695 /* ===========================================================
696  | Description :
697  |  This function returns the flag value that identify the default
698  |      Analsyis option combination for the kpi.
699  |
700  ===========================================================*/
701 FUNCTION GET_AOPTS_DEFAULT_FLAG(
702   x_indicator   IN  number
703  ,x_a0      IN  number
704  ,x_a1      IN  number
705  ,x_a2      IN  number
706  ,x_series_id   IN  number
707 ) return number is
708 
709 d_A0  NUMBER;
710 d_A1  NUMBER;
711 d_A2  NUMBER;
712 d_SERIES_ID  NUMBER;
713 h_com_default NUMBER(1);
714 
715 BEGIN
716     --Get Defaults
717     SELECT DISTINCT DF.A0_DEFAULT,DF.A1_DEFAULT,DF.A2_DEFAULT,MS.SERIES_ID
718     INTO d_A0,d_A1,d_A2,d_SERIES_ID
719     FROM BSC_DB_COLOR_AO_DEFAULTS_V DF,
720          BSC_KPI_ANALYSIS_MEASURES_B MS
721     WHERE
722     DEFAULT_VALUE =1 AND
723     DF.INDICATOR = MS.INDICATOR AND
724     DF.A0_DEFAULT = MS.ANALYSIS_OPTION0 AND
725     DF.A1_DEFAULT = MS.ANALYSIS_OPTION1 AND
726     DF.A2_DEFAULT = MS.ANALYSIS_OPTION2 AND
727     DF.INDICATOR =X_INDICATOR;
728 
729     h_com_default :=0;
730     IF X_A0 = d_A0 AND X_A1 = d_A1 AND X_A2 = d_A2 AND X_SERIES_ID = d_SERIES_ID THEN
731         h_com_default := 1;
732     END IF;
733     RETURN h_com_default;
734 
735 EXCEPTION
736     WHEN OTHERS THEN
737         return 0;
738 end GET_AOPTS_DEFAULT_FLAG;
739 
740 function Is_Parent_Tab(
741   p_tab_id      number
742 ) return varchar2 is
743 
744 l_count         number;
745 
746 begin
747   SELECT COUNT(*) INTO l_Count
748   FROM   BSC_TABS_VL
749   WHERE  Parent_Tab_Id = p_tab_id;
750 
751 
752   IF (l_Count > 1) THEN
753     RETURN 'Y';
754   ELSE
755     RETURN 'N';
756   END IF;
757 EXCEPTION
758     WHEN OTHERS THEN
759         return 'N';
760 
761 end Is_Parent_Tab;
762 
763 
764 /*===========================================================================+
765 |
766 |   Name:          GET_DATASET_SOURCE
767 |
768 |   Description:   Return if the dataset_id is BSC OR PMV
769 |   Return :       'BSC' : BSC measure
770 |                  'PMF' : PMF measure
771 |   Parameters:    X_DATASET_ID     Menu Id that will be inserted
772 +============================================================================*/
773 FUNCTION  GET_DATASET_SOURCE(X_DATASET_ID in NUMBER
774     ) RETURN VARCHAR2 IS
775 
776 l_tmp VARCHAR2(10);
777 begin
778      IF h_dataset = X_DATASET_ID THEN
779     l_tmp := h_source;
780      ELSE
781          l_tmp := 'BSC';
782          SELECT NVL(SOURCE,'BSC') SOURCE
783          into l_tmp
784          FROM BSC_SYS_DATASETS_B
785          WHERE
786          DATASET_ID = X_DATASET_ID;
787 
788     h_dataset := X_DATASET_ID;
789         h_source := l_tmp;
790      END IF;
791      return l_tmp;
792 
793 EXCEPTION
794     WHEN OTHERS THEN
795         return l_tmp;
796 end GET_DATASET_SOURCE;
797 
798 END BSC_OAF_VIEWS_PVT;
799