DBA Data[Home] [Help]

PACKAGE BODY: APPS.BIS_INDICATOR_REGION_UI_PVT

Source


1 package body bis_indicator_region_ui_pvt as
2 /* $Header: BISVRUIB.pls 120.5 2006/01/17 06:38:17 visuri noship $ */
3 G_HELP        VARCHAR2(32000) := 'BISPM';
4 g_user_id     integer;
5 g_session_id  number;
6 g_var1        VARCHAR2(32000) := NULL;
7 g_var2        integer;
8 e_noactual    EXCEPTION;
9 e_norange     EXCEPTION;
10 -- meastmon 05/10/2001
11 e_notimevalue EXCEPTION;
12 e_notimevalue1 EXCEPTION;
13 
14 --===========================================================
15 -- private constants and functions
16 -- juwang bug#2184804
17 --===========================================================
18 --============================================================
19 G_PKG_NAME  CONSTANT VARCHAR2(30):='BIS_PORTLET_PMREGION';
20 c_NULL      CONSTANT pls_integer := -9999;
21 c_key_menu  CONSTANT VARCHAR2(30):= 'pMeasureDefinition=';
22 c_key_target_level  CONSTANT VARCHAR2(50):= 'pTargetLevelShortName';
23 c_key_plan  CONSTANT VARCHAR2(50):= 'pPlanShortName';
24 c_key_dv_id1 CONSTANT VARCHAR2(50):= 'pDimensionLevel1ValueId';
25 c_key_dv_id2 CONSTANT VARCHAR2(50):= 'pDimensionLevel2ValueId';
26 c_key_dv_id3 CONSTANT VARCHAR2(50):= 'pDimensionLevel3ValueId';
27 c_key_dv_id4 CONSTANT VARCHAR2(50):= 'pDimensionLevel4ValueId';
28 c_key_dv_id5 CONSTANT VARCHAR2(50):= 'pDimensionLevel5ValueId';
29 c_key_dv_id6 CONSTANT VARCHAR2(50):= 'pDimensionLevel6ValueId';
30 c_key_dv_id7 CONSTANT VARCHAR2(50):= 'pDimensionLevel7ValueId';
31 c_key_status CONSTANT VARCHAR2(50):= 'pStatus';
32 c_key_value CONSTANT VARCHAR2(50):= 'pValue';
33 c_key_change CONSTANT VARCHAR2(50):= 'pChange';
34 c_key_arrow CONSTANT VARCHAR2(50):= 'pArrow';
35 
36 c_arrow_type_green_up CONSTANT NUMBER := 1;
37 c_arrow_type_green_down CONSTANT NUMBER := 2;
38 c_arrow_type_red_up CONSTANT NUMBER := 3;
39 c_arrow_type_red_down CONSTANT NUMBER := 4;
40 c_arrow_type_black_up CONSTANT NUMBER := 5;
41 c_arrow_type_black_down CONSTANT NUMBER := 6;
42 
43 c_down_green CONSTANT VARCHAR2(200) := '"/OA_MEDIA/bischdog.gif"';
44 c_down_red   CONSTANT VARCHAR2(200):= '"/OA_MEDIA/bischdob.gif"';
45 c_down_black CONSTANT VARCHAR2(200):= '"/OA_MEDIA/bischdon.gif"';
46 c_up_green   CONSTANT VARCHAR2(200) := '"/OA_MEDIA/bischupg.gif"';
47 c_up_red     CONSTANT VARCHAR2(200):= '"/OA_MEDIA/bischupb.gif"';
48 c_up_black   CONSTANT VARCHAR2(200):= '"/OA_MEDIA/bischupn.gif"';
49 
50 c_caret  CONSTANT VARCHAR2(1) := '^';
51 c_eq  CONSTANT VARCHAR2(1) := '=';
52 c_squote  CONSTANT VARCHAR2(2) := '''';
53 
54 c_fmt CONSTANT VARCHAR2(10) := '990D99';
55 
56 c_longfmt CONSTANT VARCHAR2(30) := '999G990D99';
57 c_long_nod_fmt CONSTANT VARCHAR2(10) := '999G990';
58 c_I CONSTANT VARCHAR2(1) := 'I';
59 c_F CONSTANT VARCHAR2(1) := 'F';
60 c_K CONSTANT VARCHAR2(1) := 'K';
61 c_M CONSTANT VARCHAR2(1) := 'M';
62 c_B CONSTANT VARCHAR2(1) := 'B';
63 c_T CONSTANT VARCHAR2(1) := 'T';
64 -- !!! NLS Issue
65 c_thousand CONSTANT NUMBER := 1000;
66 c_million CONSTANT NUMBER := 1000000;
67 c_billion CONSTANT NUMBER := 1000000000;
68 c_trillion CONSTANT NUMBER := 1000000000000;
69 
70 
71 --============================================================
72 PROCEDURE get_ak_display_format(
73   p_region_code IN VARCHAR2
74  ,p_attribute_code IN VARCHAR2
75  ,x_display_format OUT NOCOPY VARCHAR2
76  ,x_display_type OUT NOCOPY VARCHAR2
77 );
78 
79 
80 --============================================================
81 PROCEDURE get_region_code(
82   p_measure_id IN NUMBER
83  ,x_region_code OUT NOCOPY VARCHAR2
84  ,x_attribute_code OUT NOCOPY VARCHAR2 );
85 
86 
87 --===========================================================
88 FUNCTION getFormatValue(
89   p_val IN NUMBER
90   ) RETURN VARCHAR2;
91 
92 
93 --=============================================================
94 FUNCTION getFormatValue(
95   p_val IN NUMBER
96  ,p_format_mask IN VARCHAR2
97   ) RETURN VARCHAR2;
98 
99 
100 --===========================================================
101 FUNCTION getFormatMask(
102   p_val IN NUMBER
103  ,p_show_decimal IN BOOLEAN
104   ) RETURN VARCHAR2;
105 
106 
107 --============================================================
108 FUNCTION getBillionValue(
109   p_val IN NUMBER
110   ) RETURN VARCHAR2;
111 
112 
113 --============================================================
114 FUNCTION getBillionFormatMask(
115   p_val IN NUMBER
116   ) RETURN VARCHAR2;
117 
118 
119 --============================================================
120 PROCEDURE draw_portlet_header(
121   p_status_lbl IN VARCHAR2
122  ,p_measure_lbl IN VARCHAR2
123  ,p_value_lbl IN VARCHAR2
124  ,p_change_lbl IN VARCHAR2);
125 
126 
127 
128 --===========================================================
129 FUNCTION get_row_style(
130   p_row_style IN VARCHAR2
131 ) RETURN VARCHAR2;
132 
133 
134 
135 --============================================================
136 PROCEDURE draw_portlet_footer;
137 
138 
139 --============================================================
140 PROCEDURE draw_status(
141   p_status_lbl IN VARCHAR2
142  ,p_row_style IN VARCHAR2
143  ,p_actual_val IN NUMBER
144  ,p_target_val IN NUMBER
145  ,p_range1_low_pcnt IN NUMBER
146  ,p_range1_high_pcnt IN NUMBER
147 );
148 
149 --============================================================
150 PROCEDURE draw_status(
151   p_status_lbl IN VARCHAR2
152  ,p_status IN NUMBER
153  ,p_row_style IN VARCHAR2);
154 
155 --============================================================
156 PROCEDURE draw_measure_name(
157   p_actual_url IN VARCHAR2
158  ,p_label IN VARCHAR2
159  ,p_measure_lbl IN VARCHAR2
160  ,p_row_style IN VARCHAR2);
161 
162 --============================================================
163 PROCEDURE draw_actual(
164   p_value_lbl IN VARCHAR2
165  ,p_formatted_actual IN VARCHAR2
166  ,p_row_style IN VARCHAR2);
167 
168 
169 --============================================================
170 PROCEDURE draw_change(
171   p_change_lbl IN VARCHAR2
172  ,p_change IN VARCHAR2
173  ,p_img IN VARCHAR2
174  ,p_arrow_alt_text IN VARCHAR2
175  ,p_row_style IN VARCHAR2
176 );
177 
178 
179 --===========================================================
180 FUNCTION is_authroized(
181   p_cur_user_id IN PLS_INTEGER
182  ,p_target_level_id IN PLS_INTEGER
183 ) RETURN BOOLEAN;
184 
185 
186 --===========================================================
187 PROCEDURE get_actual(
188   p_target_rec IN BIS_TARGET_PUB.Target_Rec_Type
189  ,x_actual_url OUT NOCOPY VARCHAR2
190  ,x_actual_value OUT NOCOPY NUMBER
191  ,x_comparison_actual_value OUT NOCOPY NUMBER
192  ,x_err OUT NOCOPY VARCHAR2
193 );
194 
195 
196 
197 --============================================================
198 PROCEDURE get_target(
199   p_target_in IN  BIS_TARGET_PUB.Target_Rec_Type
200  ,x_target OUT NOCOPY NUMBER
201  ,x_range1_low OUT NOCOPY NUMBER
202  ,x_range1_high OUT NOCOPY NUMBER
203  ,x_range2_low OUT NOCOPY NUMBER
204  ,x_range2_high OUT NOCOPY NUMBER
205  ,x_range3_low OUT NOCOPY NUMBER
206  ,x_range3_high OUT NOCOPY NUMBER
207  ,x_err OUT NOCOPY VARCHAR2
208 );
209 
210 
211 --===========================================================
212 PROCEDURE get_time_dim_index(
213   p_ind_selection_id IN NUMBER
214  ,x_target_rec IN OUT NOCOPY BIS_TARGET_PUB.Target_Rec_Type
215  ,x_err OUT NOCOPY VARCHAR2
216 ) ;
217 
218 --=============================================================
219 PROCEDURE assign_time_level_value_id
220 (
221   p_is_rolling_level    IN NUMBER,
222   p_current_period_id IN VARCHAR,
223   p_time_dim_idx  IN NUMBER,
224   p_target_rec    IN OUT NOCOPY BIS_TARGET_PUB.Target_Rec_Type
225 ) ;
226 
227 
228 --===========================================================
229 PROCEDURE get_change(
230   p_actual_value IN NUMBER
231  ,p_comp_actual_value IN NUMBER
232  ,p_comp_source IN VARCHAR2
233  ,p_good_bad IN VARCHAR2
234  ,p_improve_msg  IN VARCHAR2
235  ,p_worse_msg  IN VARCHAR2
236  ,x_change OUT NOCOPY NUMBER
237  ,x_img OUT NOCOPY VARCHAR2
238  ,x_arrow_alt_text IN OUT NOCOPY VARCHAR2
239  ,x_err OUT NOCOPY VARCHAR2
240 ) ;
241 
242 
243 --===========================================================
244 -- end of private functions/procedures declarations.
245 --============================================================
246 
247 --============================================================
248 -- end of juwang change
249 --============================================================
250 
251 -- meastmon 05/10/2001 Get current period id and name for the given
252 -- target level id and time level id
253 PROCEDURE getCurrentPeriodInfo(
254     p_ind_selection_id IN NUMBER,
255     p_target_level_id IN NUMBER,
256     p_time_dimension_level_id IN NUMBER,
257     x_current_period_id OUT NOCOPY VARCHAR2,
258     x_current_period_name OUT NOCOPY VARCHAR2
259     ) IS
260 
261   CURSOR c_source IS
262     SELECT source
263     FROM  bis_target_levels
264     WHERE target_level_id = p_target_level_id;
265 
266   CURSOR c_org_dimension_index IS
267     SELECT x.sequence_no,
268            decode(x.sequence_no,
269                   1, z.dimension1_level_id,
270                   2, z.dimension2_level_id,
271                   3, z.dimension3_level_id,
272                   4, z.dimension4_level_id,
273                   5, z.dimension5_level_id,
274                   6, z.dimension6_level_id,
275                   7, z.dimension7_level_id,
276                   NULL) org_dimension_level_id
277     FROM   bis_indicator_dimensions x, bis_dimensions y, bis_target_levels z
278     WHERE  x.dimension_id = y.dimension_id AND
279            y.short_name = BIS_UTILITIES_PVT.GET_ORG_DIMENSION_NAME_TL(p_target_level_id,NULL) AND
280            x.indicator_id = z.indicator_id AND
281            z.target_level_id = p_target_level_id;
282 
283   CURSOR c_dimension_level_value(dimension_index NUMBER) IS
284     SELECT decode(dimension_index,
285                   1, dimension1_level_value,
286                   2, dimension2_level_value,
287                   3, dimension3_level_value,
288                   4, dimension4_level_value,
289                   5, dimension5_level_value,
290                   6, dimension6_level_value,
291                   7, dimension7_level_value,
292                   NULL) dimension_level_value
293     FROM bis_user_ind_selections
294     WHERE ind_selection_id = p_ind_selection_id;
295 
296   CURSOR c_org_level_name (org_level_id NUMBER) IS
297     SELECT short_name
298     FROM bis_levels
299     WHERE level_id = org_level_id;
300 
301 
302   l_source                  VARCHAR2(30);
303   l_time_dimension_name     VARCHAR2(500);
304   l_total_time_level_name   VARCHAR2(500);
305 
306   l_view_name               VARCHAR2(800);
307   l_short_name              VARCHAR2(30);
308   l_name                    VARCHAR2(800);
309   l_id                      VARCHAR2(250);
310   l_value                   VARCHAR2(2500);
311   l_select_stmt             VARCHAR2(2000);
312   l_sql_result              INTEGER := 0;
313   l_description             bis_levels_tl.description%TYPE;
314   l_return_status           VARCHAR2(240);
315   l_id_name                 VARCHAR(2000);
316   l_value_name              VARCHAR(2000);
317   l_msg_count               NUMBER;
318   l_msg_data                VARCHAR(32000);
319 
320   l_sql                     VARCHAR2(32000);
321   l_org_dimension_index     NUMBER;
322   l_org_dimension_level_id  NUMBER;
323   l_org_dimension_value     VARCHAR2(800);
324   l_org_level_name          VARCHAR2(500);
325 
326   l_start_date        DATE;
327   l_end_date        DATE;
328 
329   TYPE tcursor IS REF CURSOR;
330   l_cursor        tcursor;
331   l_time_lvl_dep_on_org    NUMBER(3);  --2684911
332 
333 BEGIN
334   BIS_PMF_GET_DIMLEVELS_PVT.Get_DimLevel_Values_Data(
335         p_bis_dimlevel_id => p_time_dimension_level_id,
336         x_dimlevel_short_name => l_short_name,
337         x_select_String =>  l_select_stmt,
338         x_table_name => l_view_name,
339         x_value_name => l_value_name,
340         x_id_name =>  l_id_name,
341         x_level_name => l_name,
342         x_description => l_description,
343         x_return_status =>  l_return_status,
344         x_msg_count => l_msg_count,
345         x_msg_data  =>  l_msg_data);
346 
347   l_time_dimension_name := BIS_UTILITIES_PVT.GET_TIME_DIMENSION_NAME_TL(p_target_level_id, NULL);
348   l_total_time_level_name := BIS_UTILITIES_PVT.GET_TOTAL_DIMLEVEL_NAME_TL(l_time_dimension_name, p_target_level_id, NULL);
349   l_time_lvl_dep_on_org := BIS_UTILITIES_PUB.is_time_dependent_on_org(p_time_lvl_short_name => l_short_name) ; --2684911
350 
351   OPEN c_source;
352   FETCH c_source INTO l_source;
353   CLOSE c_source;
354 
355   -- For total time level there is only one record in the dimension view
356   -- which is the one we want.
357 
358   IF (l_short_name <> l_total_time_level_name) THEN
359       l_sql := 'SELECT DISTINCT '||l_id_name||', '||l_value_name||', start_date, end_date'||
360                ' FROM '||l_view_name;
361 
362       -- No total time level
363       -- In this case we compare sysdate with start_date and end_date
364       -- to get the current period
365 
366       l_sql := l_sql||
367                ' WHERE TRUNC(SYSDATE) BETWEEN '||
368                ' NVL(start_date, TRUNC(SYSDATE)) and NVL(end_date, TRUNC(SYSDATE))';
369 
370       IF l_source = 'OLTP' AND l_time_lvl_dep_on_org = BIS_UTILITIES_PUB.G_TIME_IS_DEPEN_ON_ORG THEN --2684911
371         -- For OLTP we need an additional condition on organization id
372         -- if the time level is not one of HR
373         OPEN c_org_dimension_index;
374         FETCH c_org_dimension_index INTO l_org_dimension_index, l_org_dimension_level_id;
375         CLOSE c_org_dimension_index;
376 
377         OPEN c_org_level_name(l_org_dimension_level_id);
378         FETCH c_org_level_name INTO l_org_level_name;
379         CLOSE c_org_level_name;
380 
381         OPEN c_dimension_level_value(l_org_dimension_index);
382         FETCH c_dimension_level_value INTO l_org_dimension_value;
383         CLOSE c_dimension_level_value;
384 
385         l_sql := l_sql||
386                  ' AND ORGANIZATION_ID = '''||l_org_dimension_value||''''||
387                  ' AND NVL(ORGANIZATION_TYPE, ''%'') LIKE '''||l_org_level_name||'''';
388 
389       ELSE
390         IF l_source = 'EDW' THEN
391           -- In this case we need to filter out NOCOPY codes 0 and -1 which are special codes in EDW dimension tables
392           l_sql := l_sql||
393                  ' AND '||l_id_name||' NOT IN (''-1'', ''0'')';
394 
395           IF (l_time_lvl_dep_on_org = BIS_UTILITIES_PUB.G_TIME_IS_DEPEN_ON_ORG) THEN --2684911
396             OPEN c_org_dimension_index;
397             FETCH c_org_dimension_index INTO l_org_dimension_index, l_org_dimension_level_id;
398             CLOSE c_org_dimension_index;
399 
400             OPEN c_org_level_name(l_org_dimension_level_id);
401             FETCH c_org_level_name INTO l_org_level_name;
402             CLOSE c_org_level_name;
403 
404             OPEN c_dimension_level_value(l_org_dimension_index);
405             FETCH c_dimension_level_value INTO l_org_dimension_value;
406             CLOSE c_dimension_level_value;
407 
408             l_sql := l_sql||
409                 ' AND ORGANIZATION_ID = '''||l_org_dimension_value||''''||
410                 ' AND NVL(ORGANIZATION_TYPE, ''%'') LIKE '''||l_org_level_name||'''';
411           END IF;
412 
413         END IF;
414       END IF;
415 
416       l_sql := l_sql||
417                ' ORDER BY ABS(NVL(TRUNC(end_date), TRUNC(SYSDATE))- NVL(TRUNC(start_date), TRUNC(SYSDATE)))';
418 
419   ELSE
420       l_sql := 'SELECT DISTINCT '||l_id_name||', '||l_value_name||', SYSDATE AS start_date, SYSDATE AS end_date'||
421                ' FROM '||l_view_name;
422   END IF;
423 
424   -- Query is supposed to return just one record. However we take the first one.
425   OPEN l_cursor FOR l_sql;
426   FETCH l_cursor INTO x_current_period_id, x_current_period_name, l_start_date, l_end_date;
427   CLOSE l_cursor;
428 
429 EXCEPTION
430   WHEN OTHERS THEN
431     x_current_period_id := NULL;
432     x_current_period_name := NULL;
433     NULL;
434 
435 END getCurrentPeriodInfo;
436 
437 
438 -- meastmon 05/14/2001 Get next period id and name for the given
439 -- target level id and time level id
440 PROCEDURE getNextPeriodInfo(
441     p_ind_selection_id IN NUMBER,
442     p_target_level_id IN NUMBER,
443     p_time_dimension_level_id IN NUMBER,
444     p_current_period_id IN VARCHAR2,
445     p_current_period_name IN VARCHAR2,
446     x_next_period_id OUT NOCOPY VARCHAR2,
447     x_next_period_name OUT NOCOPY VARCHAR2
448     ) IS
449 
450   e_no_next_period EXCEPTION;
451 
452   CURSOR c_source IS
453     SELECT source
454     FROM  bis_target_levels
455     WHERE target_level_id = p_target_level_id;
456 
457   CURSOR c_org_dimension_index IS
458     SELECT x.sequence_no,
459            decode(x.sequence_no,
460                   1, z.dimension1_level_id,
461                   2, z.dimension2_level_id,
462                   3, z.dimension3_level_id,
463                   4, z.dimension4_level_id,
464                   5, z.dimension5_level_id,
465                   6, z.dimension6_level_id,
466                   7, z.dimension7_level_id,
467                   NULL) org_dimension_level_id
468     FROM   bis_indicator_dimensions x, bis_dimensions y, bis_target_levels z
469     WHERE  x.dimension_id = y.dimension_id AND
470            y.short_name = BIS_UTILITIES_PVT.GET_ORG_DIMENSION_NAME_TL(p_target_level_id,NULL) AND
471            x.indicator_id = z.indicator_id AND
472            z.target_level_id = p_target_level_id;
473 
474   CURSOR c_dimension_level_value(dimension_index NUMBER) IS
475     SELECT decode(dimension_index,
476                   1, dimension1_level_value,
477                   2, dimension2_level_value,
478                   3, dimension3_level_value,
479                   4, dimension4_level_value,
480                   5, dimension5_level_value,
481                   6, dimension6_level_value,
482                   7, dimension7_level_value,
483                   NULL) dimension_level_value
484     FROM bis_user_ind_selections
485     WHERE ind_selection_id = p_ind_selection_id;
486 
487   CURSOR c_org_level_name (org_level_id NUMBER) IS
488     SELECT short_name
489     FROM bis_levels
490     WHERE level_id = org_level_id;
491 
492   l_source                  VARCHAR2(30);
493   l_time_dimension_name     VARCHAR2(500);
494   l_total_time_level_name   VARCHAR2(500);
495 
496   l_view_name               VARCHAR2(800);
497   l_short_name              VARCHAR2(300);
498   l_name                    VARCHAR2(800);
499   l_id                      VARCHAR2(250);
500   l_value                   VARCHAR2(2500);
501   l_select_stmt             VARCHAR2(2000);
502   l_sql_result              INTEGER := 0;
503   l_description             bis_levels_tl.description%TYPE;
504   l_return_status           VARCHAR2(240);
505   l_id_name                 VARCHAR(2000);
506   l_value_name              VARCHAR(2000);
507   l_msg_count               NUMBER;
508   l_msg_data                VARCHAR(32000);
509 
510   l_sql                     VARCHAR2(32000);
511   l_sql_aux                 VARCHAR2(32000);
512   l_org_dimension_index     NUMBER;
513   l_org_dimension_level_id  NUMBER;
514   l_org_dimension_value     VARCHAR2(800);
515   l_org_level_name          VARCHAR2(500);
516 
517   l_next_period_date        VARCHAR2(200);
518 
519   l_start_date        DATE;
520   l_end_date        DATE;
521 
522   TYPE tcursor IS REF CURSOR;
523   l_cursor        tcursor;
524 
525   l_time_lvl_dep_on_org    NUMBER(3);  --2684911
526 
527 BEGIN
528   BIS_PMF_GET_DIMLEVELS_PVT.Get_DimLevel_Values_Data(
529         p_bis_dimlevel_id => p_time_dimension_level_id,
530         x_dimlevel_short_name => l_short_name,
531         x_select_String =>  l_select_stmt,
532         x_table_name => l_view_name,
533         x_value_name => l_value_name,
534         x_id_name =>  l_id_name,
535         x_level_name => l_name,
536         x_description => l_description,
537         x_return_status =>  l_return_status,
538         x_msg_count => l_msg_count,
539         x_msg_data  =>  l_msg_data);
540 
541   l_time_dimension_name := BIS_UTILITIES_PVT.GET_TIME_DIMENSION_NAME_TL(p_target_level_id, NULL);
542   l_total_time_level_name := BIS_UTILITIES_PVT.GET_TOTAL_DIMLEVEL_NAME_TL(l_time_dimension_name, p_target_level_id, NULL);
543 
544   OPEN c_source;
545   FETCH c_source INTO l_source;
546   CLOSE c_source;
547 
548   l_time_lvl_dep_on_org := BIS_UTILITIES_PUB.is_time_dependent_on_org(p_time_lvl_short_name => l_short_name) ; --2684911
549 
550   -- For total time level there is only one record in the dimension view
551   -- which is the one we want.
552 
553   IF (l_short_name <> l_total_time_level_name) THEN
554       l_sql := 'SELECT DISTINCT '||l_id_name||', '||l_value_name||', start_date, end_date'||
555                ' FROM '||l_view_name;
556 
557       -- No total time level
558       -- In this case we get the end date of the current period and look for
559       -- the period containing the next day
560 
561       IF l_source = 'OLTP' AND
562          l_time_lvl_dep_on_org = BIS_UTILITIES_PUB.G_TIME_IS_DEPEN_ON_ORG THEN --2684911
563         -- For OLTP we need an additional condition on organization id
564         -- if the time level is not one of HR
565         OPEN c_org_dimension_index;
566         FETCH c_org_dimension_index INTO l_org_dimension_index, l_org_dimension_level_id;
567         CLOSE c_org_dimension_index;
568 
569         OPEN c_org_level_name(l_org_dimension_level_id);
570         FETCH c_org_level_name INTO l_org_level_name;
571         CLOSE c_org_level_name;
572 
573         OPEN c_dimension_level_value(l_org_dimension_index);
574         FETCH c_dimension_level_value INTO l_org_dimension_value;
575         CLOSE c_dimension_level_value;
576 
577 
578           l_sql_aux := 'SELECT TO_CHAR(end_date + 1, ''MM-DD-YYYY'')'||
579                      ' FROM '||l_view_name||
580                      ' WHERE '||l_id_name||' = :1 '||
581                      ' AND ORGANIZATION_ID = :2 ' ||
582                      ' AND NVL(ORGANIZATION_TYPE, ''%'') LIKE :3 ';
583           EXECUTE IMMEDIATE l_sql_aux INTO l_next_period_date USING p_current_period_id, l_org_dimension_value, l_org_level_name;
584 
585           l_sql := l_sql||
586                  ' WHERE TRUNC(TO_DATE('''||l_next_period_date||''', ''MM-DD-YYYY'')) BETWEEN '||
587                  ' NVL(start_date, TRUNC(TO_DATE('''||l_next_period_date||''', ''MM-DD-YYYY''))) AND '||
588                  ' NVL(end_date, TRUNC(TO_DATE('''||l_next_period_date||''', ''MM-DD-YYYY'')))'||
589                  ' AND ORGANIZATION_ID = '''||l_org_dimension_value||''''||
590                  ' AND NVL(ORGANIZATION_TYPE, ''%'') LIKE '''||l_org_level_name||'''';
591       ELSE
592         l_sql_aux := 'SELECT TO_CHAR(end_date + 1, ''MM-DD-YYYY'')'||
593                      ' FROM '||l_view_name||
594                      ' WHERE '||l_id_name||' = : 1';
595         EXECUTE IMMEDIATE l_sql_aux INTO l_next_period_date USING p_current_period_id;
596 
597         l_sql := l_sql||
598                  ' WHERE TRUNC(TO_DATE('''||l_next_period_date||''', ''MM-DD-YYYY'')) BETWEEN '||
599                  ' NVL(start_date, TRUNC(TO_DATE('''||l_next_period_date||''', ''MM-DD-YYYY''))) AND '||
600                  ' NVL(end_date, TRUNC(TO_DATE('''||l_next_period_date||''', ''MM-DD-YYYY'')))';
601 
602         IF l_source = 'EDW' THEN
603           -- In this case we need to filter out NOCOPY codes 0 and -1 which are special codes in EDW dimension tables
604           l_sql := l_sql||
605                  ' AND '||l_id_name||' NOT IN (''-1'', ''0'')';
606           IF (l_time_lvl_dep_on_org = BIS_UTILITIES_PUB.G_TIME_IS_DEPEN_ON_ORG) THEN --2684911
607 
608             OPEN c_org_dimension_index;
609             FETCH c_org_dimension_index INTO l_org_dimension_index, l_org_dimension_level_id;
610             CLOSE c_org_dimension_index;
611 
612             OPEN c_org_level_name(l_org_dimension_level_id);
613             FETCH c_org_level_name INTO l_org_level_name;
614             CLOSE c_org_level_name;
615 
616             OPEN c_dimension_level_value(l_org_dimension_index);
617             FETCH c_dimension_level_value INTO l_org_dimension_value;
618             CLOSE c_dimension_level_value;
619 
620              l_sql := l_sql||
621                  ' AND ORGANIZATION_ID = '''||l_org_dimension_value||''''||
622                  ' AND NVL(ORGANIZATION_TYPE, ''%'') LIKE '''||l_org_level_name||'''';
623           END IF;
624 
625         END IF;
626       END IF;
627 
628       l_sql := l_sql||
629                ' ORDER BY ABS(NVL(TRUNC(end_date), TRUNC(SYSDATE))- NVL(TRUNC(start_date), TRUNC(SYSDATE)))';
630   ELSE
631       l_sql := 'SELECT DISTINCT '||l_id_name||', '||l_value_name||' SYSDATE AS start_date, SYSDATE AS end_date'||
632                ' FROM '||l_view_name;
633   END IF;
634 
635    -- Query is supposed to return just one record. However we take the first one.
636   BEGIN
637       OPEN l_cursor FOR l_sql;
638       FETCH l_cursor INTO x_next_period_id,  x_next_period_name, l_start_date, l_end_date;
639       CLOSE l_cursor;
640   EXCEPTION
641     WHEN OTHERS THEN
642       x_next_period_id := NULL;
643       x_next_period_name := NULL;
644   END;
645 
646   IF x_next_period_id IS NULL THEN
647     RAISE e_no_next_period;
648   END IF;
649 
650 
651 EXCEPTION
652   WHEN e_no_next_period THEN
653     x_next_period_id := p_current_period_id;
654     x_next_period_name := p_current_period_name;
655 
656   WHEN OTHERS THEN
657     NULL;
658 
659 END getNextPeriodInfo;
660 
661 
662 FUNCTION getTargetURL(
663     p_session_id IN pls_integer,
664     p_ind_selection_id IN NUMBER,
665     p_target_level_id IN NUMBER,
666     p_time_dimension_index IN NUMBER,
667     p_time_dimension_level_id IN NUMBER,
668     p_current_period_id IN VARCHAR2,
669     p_current_period_name IN VARCHAR2,
670     p_plan_id IN NUMBER
671     ) RETURN VARCHAR2 IS
672 
673     CURSOR c_measure IS
674         SELECT i.short_name
675         FROM bis_indicators i, bis_target_levels t
676         WHERE i.indicator_id = t.indicator_id AND
677               t.target_level_id = p_target_level_id;
678 
679     CURSOR c_dim_level(dimension_index NUMBER) IS
680     SELECT short_name
681     FROM bis_levels
682     WHERE level_id = (
683           SELECT decode(dimension_index,
684                  1, dimension1_level_id,
685                  2, dimension2_level_id,
686                  3, dimension3_level_id,
687                  4, dimension4_level_id,
688                  5, dimension5_level_id,
689                  6, dimension6_level_id,
690                  7, dimension7_level_id,
691                  NULL)
692           FROM bis_target_levels
693           WHERE target_level_id = p_target_level_id);
694 
695     CURSOR c_dim_level_value(dimension_index NUMBER) IS
696     SELECT decode(dimension_index,
697                   1, dimension1_level_value,
698                   2, dimension2_level_value,
699                   3, dimension3_level_value,
700                   4, dimension4_level_value,
701                   5, dimension5_level_value,
702                   6, dimension6_level_value,
703                   7, dimension7_level_value,
704                   NULL) dimension_level_value
705     FROM bis_user_ind_selections
706     WHERE ind_selection_id = p_ind_selection_id;
707 
708     l_measure             VARCHAR2(50);
709     l_targeturl           VARCHAR2(2000);
710 
711     l_url                 VARCHAR2(2000) := NULL;
712     l_dim_levels          VARCHAR2(2000) := NULL;
713     l_dim_level_values    VARCHAR2(2000) := NULL;
714     l_dim_level           VARCHAR2(500) := NULL;
715     l_dim_level_value     VARCHAR2(800) := NULL;
716     l_next_period_id      VARCHAR2(32000) := NULL;
717     l_next_period_name    VARCHAR2(32000) := NULL;
718 
719 
720 BEGIN
721     l_targeturl := FND_WEB_CONFIG.WEB_SERVER||'OA_HTML/';
722 
723     OPEN c_measure;
724     FETCH c_measure INTO l_measure;
725     CLOSE c_measure;
726 
727     l_url := l_targeturl||'bistared.jsp'||
728              '?dbc='||FND_WEB_CONFIG.DATABASE_ID||
729              '&sessionid='||icx_call.encrypt3(p_session_id)||
730              '&RegionCode='||
731              '&FunctionName='||
732              '&SortInfo='||BIS_UTILITIES_PUB.encode('SortyaxisAsc')||
733              '&pageSource='||BIS_UTILITIES_PUB.encode('PMRegion')||
734              '&Measure='||BIS_UTILITIES_PUB.encode(l_measure)||
735              '&PlanId='||p_plan_id;
736 
737     FOR l_i IN 1..7 LOOP
738         l_dim_level := NULL;
739         OPEN c_dim_level(l_i);
740         FETCH c_dim_level INTO l_dim_level;
741         CLOSE c_dim_level;
742 
743         l_dim_level_value:= NULL;
744         OPEN c_dim_level_value(l_i);
745         FETCH c_dim_level_value INTO l_dim_level_value;
746         CLOSE c_dim_level_value;
747 
748         IF l_dim_level IS NOT NULL THEN
749           l_dim_levels := l_dim_levels||
750                           '&Dim'||l_i||'Level='||BIS_UTILITIES_PUB.encode(l_dim_level);
751 
752           IF l_i = p_time_dimension_index THEN
753             -- get next period value id
754             getNextPeriodInfo(p_ind_selection_id,
755                               p_target_level_id,
756                               p_time_dimension_level_id,
757                               p_current_period_id,
758                               p_current_period_name,
759                               l_next_period_id,
760                               l_next_period_name);
761             IF l_next_period_id IS NOT NULL THEN
762                 l_dim_level_values := l_dim_level_values||
763                                       '&Dim'||l_i||'LevelValue='||BIS_UTILITIES_PUB.encode(l_next_period_id);
764             ELSE
765                 l_dim_level_values := l_dim_level_values||
766                                       '&Dim'||l_i||'LevelValue=';
767             END IF;
768 
769           ELSE
770             l_dim_level_values := l_dim_level_values||
771                                   '&Dim'||l_i||'LevelValue='||BIS_UTILITIES_PUB.encode(l_dim_level_value);
772           END IF;
773         ELSE
774           l_dim_levels := l_dim_levels||
775                           '&Dim'||l_i||'Level=';
776 
777           l_dim_level_values := l_dim_level_values||
778                                 '&Dim'||l_i||'LevelValue=';
779         END IF;
780     END LOOP;
781 
782     l_url := l_url||l_dim_levels||l_dim_level_values;
783 
784     RETURN l_url;
785 
786 EXCEPTION
787   WHEN OTHERS THEN
788     RETURN NULL;
789 END getTargetURL;
790 
791 
792 
793 -- *****************************************************
794 --   PROCEDURE THAT DISPLAYS THE PLUG AND ACTUALS
795 -- *****************************************************
796 procedure display( p_session_id in pls_integer default NULL
797                  , p_plug_id    in pls_integer default NULL
798                  , p_display_name  varchar2 default NULL
799                  , p_delete in varchar2 default 'N')
800 is
801 
802 l_target_rec          BIS_TARGET_PUB.Target_Rec_Type;
803 l_row_style  VARCHAR2(100);
804 
805 -- data variables
806 l_actual_value        NUMBER;
807 l_comparison_actual_value  NUMBER;
808 l_target              NUMBER:= NULL;
809 l_range1_low          NUMBER:= NULL;
810 l_range1_high         NUMBER:= NULL;
811 l_range2_low          NUMBER:= NULL;
812 l_range2_high         NUMBER:= NULL;
813 l_range3_low          NUMBER:= NULL;
814 l_range3_high         NUMBER:= NULL;
815 
816 l_format_actual   VARCHAR2(1000);
817 l_actual_url      VARCHAR2(32000) ;
818 
819 l_change          NUMBER(20,2);
820 l_img             VARCHAR2(2000);
821 l_good_bad        VARCHAR2(2000);
822 l_arrow_alt_text  VARCHAR2(2000);
823 
824 -- debugging variables
825 l_err VARCHAR2(32000);
826 l_err2 VARCHAR2(32000);
827 
828 
829 
830 -- labels
831 l_none_lbl        VARCHAR2(200);
832 l_na_lbl          VARCHAR2(200) ;
833 l_un_auth         FND_NEW_MESSAGES.MESSAGE_TEXT%TYPE; -- VARCHAR2(200); 2829397
834 
835 -- header labels
836 l_status_lbl      VARCHAR2(2000);
837 l_measure_lbl     VARCHAR2(2000);
838 l_value_lbl       VARCHAR2(2000);
839 l_change_lbl      VARCHAR2(2000);
840 l_perc_lbl        VARCHAR2(2000);
841 
842 
843 l_in_range_lbl    VARCHAR2(2000);
844 l_out_range_lbl   VARCHAR2(2000);
845 l_improve_msg     VARCHAR2(2000);
846 l_worse_msg       VARCHAR2(2000);
847 
848 
849  -- ========================================
850  -- cusor declarations
851  -- ========================================
852  CURSOR c_selections IS
853    SELECT distinct a.ind_selection_id
854           ,a.label
855           ,a.target_level_id
856           ,a.dimension1_level_value
857           ,a.dimension2_level_value
858           ,a.dimension3_level_value
859           ,a.dimension4_level_value
860           ,a.dimension5_level_value
861           ,a.dimension6_level_value
862           ,a.dimension7_level_value
863           ,a.plan_id
864           ,c.increase_in_measure
865           ,c.comparison_source
866           ,c.indicator_id
867   FROM   bis_user_ind_selections  a
868          ,fnd_user_resp_groups    b
869          ,bis_indicators c
870          ,bisbv_target_levels d
871   WHERE a.user_id = g_user_id
872   AND   a.plug_id = p_plug_id
873   AND   a.user_id = b.user_id
874   AND   b.start_date <= sysdate
875   AND   (b.end_date is null or b.end_date >= sysdate)
876   AND   d.target_level_id = a.target_level_id
877   AND   d.measure_id = c.indicator_id
878   ORDER BY  a.ind_selection_id;
879 
880 
881 
882 BEGIN
883  IF (ICX_SEC.validatePlugSession(p_plug_id,p_session_id)) THEN
884     g_user_id := icx_sec.getID(icx_sec.PV_USER_ID,'',p_session_id);
885 
886   IF p_delete = 'Y' THEN
887 
888     BEGIN
889       delete from bis_user_ind_selections
890       where user_id = g_user_id
891       and   plug_id = p_plug_id;
892     EXCEPTION
893       WHEN OTHERS THEN
894         htp.p('Error: '||SQLERRM);
895     END;
896   ELSE
897 
898   -- =======================
899   -- loading messages
900   -- =======================
901   l_none_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_NONE');
902   l_na_lbl := (BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_NA_LBL'));
903   l_un_auth := BIS_UTILITIES_PVT.Get_FND_Message('BIS_UNAUTHORIZED');
904 
905   -- header labels
906   l_status_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_STATUS');
907   l_measure_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_NAME');
908   l_value_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_VALUE_LBL');
909   l_change_lbl := (BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_CHANGE'));
910   l_perc_lbl := (BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_PERC_LBL'));
911 
912   -- msgs
913   l_in_range_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_WITHIN_RANGE');
914   l_out_range_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_OUTSIDE_RANGE');
915   l_worse_msg := BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_CHANGE_WORSE');
916   l_improve_msg := BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_CHANGE_IMPROVE');
917 
918 
919   -- =======================
920   -- Begin Main block
921   -- =======================
922   -- Banner
923   htp.p('<table width="100%" border="0" cellspacing="0" cellpadding="0">');
924   htp.p('<tr><td>');
925 
926 
927   -- meastmon 09/07/2001 Fix bug#1980577. Workaround Do not encrypt plug_id
928   icx_plug_utilities.plugbanner(p_display_name,
929                    'OA_HTML/OA.jsp?page=/oracle/apps/bis/pmf/pmportlet/pages/BISPMFSETINDICATORS&retainAM=Y&oapc=3&Z='||p_plug_id
930                     , 'FNDINDIC.gif');
931 
932 
933   htp.p('</td></tr>');
934   htp.p('</table>');
935 
936   draw_portlet_header(l_status_lbl
937   ,l_measure_lbl
938   ,l_value_lbl
939   ,l_change_lbl);
940 
941 
942   --Performance measures
943 
944   -- Begin fetching rows from the table BIS_USER_IND_SELECTIONS
945   --
946   l_row_style := 'Band';
947 
948   FOR csel in c_selections LOOP
949     htp.p('              <tr> ');
950     l_target_rec.target_level_id      := csel.target_level_id;
951     l_target_rec.plan_id              := csel.plan_id;
952 
953     l_target_rec.dim1_level_value_id  := csel.dimension1_level_value;
954     l_target_rec.dim2_level_value_id  := csel.dimension2_level_value;
955     l_target_rec.dim3_level_value_id  := csel.dimension3_level_value;
956     l_target_rec.dim4_level_value_id  := csel.dimension4_level_value;
957     l_target_rec.dim5_level_value_id  := csel.dimension5_level_value;
958     l_target_rec.dim6_level_value_id  := csel.dimension6_level_value;
959     l_target_rec.dim7_level_value_id  := csel.dimension7_level_value;
960     l_good_bad := csel.increase_in_measure; -- 1850860
961 
962 
963    -- This is to display one row in white and the next in yellow
964     l_row_style := get_row_style(l_row_style);
965 
966     -- meastmon 05/09/2001 This block encloses logic to get target, actual
967     -- for this user selection
968     BEGIN
969 
970       get_time_dim_index(
971        p_ind_selection_id => csel.ind_selection_id
972       ,x_target_rec => l_target_rec
973       ,x_err => l_err
974       ) ;
975 
976       get_actual
977       (  p_target_rec => l_target_rec
978         ,x_actual_url => l_actual_url
979   ,x_actual_value => l_actual_value
980   ,x_comparison_actual_value => l_comparison_actual_value
981   ,x_err => l_err2
982       );
983       -- retriving target
984 
985 
986       get_target
987       ( p_target_in  => l_target_rec
988        ,x_target  => l_target
989        ,x_range1_low  => l_range1_low
990        ,x_range1_high  => l_range1_high
991        ,x_range2_low  => l_range2_low
992        ,x_range2_high  => l_range2_high
993        ,x_range3_low  => l_range3_low
994        ,x_range3_high => l_range3_high
995        ,x_err => l_err2
996       );
997 
998 
999 
1000       --=============================================================
1001       -- rendering now
1002       --=============================================================
1003       -- draw status, measure name and actual
1004 
1005 
1006        -- Now paint the actual if exists in the appropriate color
1007       IF  l_actual_value IS NULL THEN
1008       --Paint the Label
1009   draw_status(l_status_lbl, 0, l_row_style);
1010         draw_measure_name(l_actual_url, csel.label, l_measure_lbl,l_row_style);
1011       draw_actual(l_value_lbl, l_none_lbl, l_row_style);
1012   draw_change(l_change_lbl,l_na_lbl,null,null,l_row_style);
1013 
1014       ELSE
1015 
1016         l_format_actual := getAKFormatValue( p_measure_id =>csel.indicator_id
1017                                            , p_val =>l_actual_value);
1018 
1019   get_change(
1020      p_actual_value => l_actual_value
1021     ,p_comp_actual_value  => l_comparison_actual_value
1022     ,p_comp_source  => csel.comparison_source
1023     ,p_good_bad  => l_good_bad
1024     ,p_improve_msg => l_improve_msg
1025     ,p_worse_msg => l_worse_msg
1026     ,x_change => l_change
1027     ,x_img => l_img
1028     ,x_arrow_alt_text => l_arrow_alt_text
1029     ,x_err => l_err2
1030    );
1031 
1032   draw_status(
1033      p_status_lbl => l_status_lbl
1034     ,p_row_style  => l_row_style
1035     ,p_actual_val => l_actual_value
1036     ,p_target_val => l_target
1037     ,p_range1_low_pcnt  => l_range1_low
1038     ,p_range1_high_pcnt => l_range1_high
1039     );
1040 
1041         draw_measure_name( l_actual_url
1042                          , csel.label -- || l_target_rec.target_level_id
1043                          , l_measure_lbl
1044                          , l_row_style);
1045 
1046   draw_actual(l_value_lbl, l_format_actual, l_row_style);
1047   IF ( l_change IS NULL) THEN
1048           draw_change(l_change_lbl,l_na_lbl,null,null,l_row_style);
1049   ELSE
1050     draw_change(l_change_lbl,
1051     TO_CHAR(l_change)||l_perc_lbl,l_img,l_arrow_alt_text,l_row_style);
1052   END IF;
1053       END IF;  -- (l_actual_value IS NULL)
1054       htp.p('              </tr> ');
1055 
1056 
1057     EXCEPTION
1058     WHEN e_notimevalue THEN
1059       draw_status(l_status_lbl, 0, l_row_style);
1060       draw_measure_name(l_err, csel.label, l_measure_lbl,l_row_style);
1061       draw_actual(l_value_lbl, l_none_lbl, l_row_style);
1062       draw_change(l_change_lbl,l_na_lbl,null,null,l_row_style);
1063 
1064     WHEN OTHERS THEN
1065       draw_status(l_status_lbl, 0, l_row_style);
1066       draw_measure_name(l_err2, csel.label, l_measure_lbl,l_row_style);
1067       --draw_measure_name(SQLERRM, csel.label, l_measure_lbl,l_row_style);
1068       draw_actual(l_value_lbl, l_none_lbl, l_row_style);
1069       draw_change(l_change_lbl,l_na_lbl,null,null,l_row_style);
1070 
1071 
1072     END; -- end of block containing the c_notimelevels cursor
1073 
1074     htp.p('              </tr>');
1075 
1076   END LOOP; -- end of c_selections loop
1077   draw_portlet_footer;
1078 
1079  END IF; -- Main block: p_delete = 'Y'
1080 
1081 END IF;  -- icx_sec.validatePlugSession
1082 
1083 EXCEPTION
1084   WHEN NO_DATA_FOUND THEN
1085     NULL;
1086   WHEN OTHERS THEN
1087     htp.p(SQLERRM);
1088 END DISPLAY;
1089 
1090 -- ************************************************************
1091 --   Show Demo URL for Portlal
1092 -- ************************************************************
1093 
1094 PROCEDURE show_cust_demo_url(
1095   p_plug_id IN PLS_INTEGER
1096  ,p_session_id IN PLS_INTEGER
1097  ,x_string OUT NOCOPY VARCHAR2
1098 )
1099 IS
1100   l_url VARCHAR2(10000);
1101   l_url_lbl VARCHAR2(10000);
1102   l_servlet_agent VARCHAR2(5000) := NULL;
1103   l_string   VARCHAR2(32000);
1104 BEGIN
1105 
1106   IF ( NOT BIS_PMF_PORTLET_UTIL.is_demo_on ) THEN  -- demo not on
1107     x_string := NULL;
1108     RETURN;
1109   END IF;
1110 
1111   -- demo is on
1112   l_url_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_PMF_ENTER_PT_DATA');
1113 
1114   l_servlet_agent := FND_WEB_CONFIG.JSP_AGENT;   -- 'http://serv:port/OA_HTML/'
1115   IF ( l_servlet_agent IS NULL ) THEN   -- 'APPS_SERVLET_AGENT' is null
1116      l_servlet_agent := FND_WEB_CONFIG.WEB_SERVER || 'OA_HTML/';
1117   END IF;
1118 
1119 -- juwang
1120   l_url := l_servlet_agent ||
1121          'bisptdta.jsp?dbc=' || FND_WEB_CONFIG.database_id() || -- 2454902
1122    '&pPlugId=' || p_plug_id ||
1123    '&sessionid=' || p_session_id;
1124 
1125   l_string := l_string ||'<table>';
1126   l_string := l_string ||'<tr><td align="LEFT"><a href="' || l_url ||'">' || l_url_lbl||'</a></td></tr>';
1127   l_string := l_string ||'</table>';
1128 
1129   x_string := l_string;
1130 
1131 
1132  -- juwang
1133 
1134 EXCEPTION
1135   WHEN OTHERS THEN
1136     RETURN ;
1137 
1138 END show_cust_demo_url;
1139 
1140 
1141 -- *********************************************
1142 -- Procedure to choose the Indicator levels
1143 -- 19-SEP-00 gsanap    Modified SetIndicators procedure to fix
1144 --                     Bug 1404224 which was the Banner on Customize pg.
1145 --                     was not displaying properly
1146 -- *********************************************
1147 procedure setIndicators (
1148   Z in pls_integer   default NULL
1149 , p_selections_tbl   Selected_Values_Tbl_Type
1150 , p_back_url        IN VARCHAR2
1151 , p_reference_path  IN VARCHAR2
1152 , x_string           out NOCOPY VARCHAR2
1153 )
1154 is
1155  l_count                 number;
1156  l_resp_id               number;
1157  l_initialize            varchar2(32000);
1158  r_initialize            varchar2(32000);
1159  l_nbsp                  varchar2(32000);
1160  l_title                 varchar2(32000);
1161  l_tarlevel_lbl          varchar2(32000);
1162  l_select_tarlevel       varchar2(32000);
1163  l_dup_tarlevel          varchar2(32000);
1164  l_resp_counter          number;
1165  l_prompt_length         number;
1166  l_instruction           varchar2(32000);
1167  l_plug_id               pls_integer;
1168  l_plug_id1               pls_integer;--comment
1169 --
1170 l_line_length            pls_integer;
1171 l_line                   varchar2(32000);
1172 l_point1                 pls_integer;
1173 l_length                 pls_integer;
1174 l_nextcount              pls_integer;
1175 l_lastcount              pls_integer;
1176 l_occurence              pls_integer;
1177 l_ind_level_name         varchar2(32000);
1178 l_ind_level_id           pls_integer;
1179 l_current_user_id       PLS_INTEGER;
1180 l_user_id               PLS_INTEGER;
1181 l_owner_user_id         PLS_INTEGER;
1182 --
1183 l_loc                    pls_integer;
1184 l_value                  varchar2(32000);
1185 l_text                   varchar2(32000);
1186 l_msg_count              number;
1187 l_msg_data               varchar2(32000);
1188 l_return_status          varchar2(32000);
1189 l_indicators_tbl         BIS_TARGET_LEVEL_PUB.Target_Level_Tbl_Type;
1190 l_displaylabels_tbl      Selected_Values_Tbl_Type;
1191 l_selections_tbl         BIS_INDICATOR_REGION_PUB.Indicator_Region_Tbl_Type;
1192 l_temp_tbl               no_duplicates_tbl_Type;
1193 l_unique                 BOOLEAN;
1194 l_cnt                    pls_integer;
1195 l_error_tbl              BIS_UTILITIES_PUB.Error_Tbl_Type;
1196 
1197 -- Fix for ADA buttons
1198 l_button_str             varchar2(32000);
1199 l_button_tbl             BIS_UTILITIES_PVT.HTML_Button_Tbl_Type;
1200 l_string                 VARCHAR2(32000);
1201 l_demo_string            VARCHAR(32000);
1202 l_append_string          VARCHAR2(1000);
1203 l_swan_enabled           BOOLEAN;
1204 l_button_edge            VARCHAR2(100);
1205 
1206 BEGIN
1207 
1208 -- meastmon 09/07/2001 Fix bug#1980577. Workaround Do not encrypt plug_id
1209 l_plug_id := Z;
1210 
1211 l_swan_enabled := BIS_UTILITIES_PVT.checkSWANEnabled();
1212 
1213 
1214 --if icx_sec.validateSession  then
1215 --  if ICX_SEC.validatePlugSession(l_plug_id) then
1216 
1217      --g_user_id := icx_sec.getID(icx_sec.PV_USER_ID, '', icx_sec.g_session_id); --2751984
1218      l_current_user_id := icx_sec.getID(icx_sec.PV_USER_ID, '', icx_sec.g_session_id); --2751984
1219 
1220      l_nbsp := '&'||'nbsp;';
1221      l_initialize := '                                ';
1222 
1223   -- Get all the message strings from the database
1224  fnd_message.set_name('BIS','BIS_SELECT_TARLEVEL');
1225  l_select_tarlevel := icx_util.replace_quotes(fnd_message.get);
1226   --changed from BIS_DUP_TARLEVEL to BIS_DUP_TARLEVELS
1227  fnd_message.set_name('BIS','BIS_DUP_TARLEVELS');
1228  l_dup_tarlevel := icx_util.replace_quotes(fnd_message.get);
1229 
1230   -- Create a dummy value in the indicators table to send it
1231   -- to the next proc because one of parameters is a plsql table
1232   -- which cannot be nullable
1233   --   l_displaylabels_tbl(1) := '';
1234 
1235 
1236   IF ((p_reference_path IS NOT NULL) AND (NOT BIS_PMF_PORTLET_UTIL.has_customized_rows(l_plug_id, l_current_user_id, l_owner_user_id) )) THEN
1237       l_user_id := l_owner_user_id;
1238     ELSE
1239       l_user_id := l_current_user_id;
1240   END IF;
1241 
1242   -- ********************************************
1243   -- Get all the Indicator Levels for this user
1244   -- ********************************************
1245   BIS_TARGET_LEVEL_PUB.Retrieve_User_Target_Levels
1246   ( p_api_version         => 1.0
1247   , p_all_info            => FND_API.G_FALSE
1248   , p_user_id             => l_current_user_id
1249   , x_Target_Level_Tbl    => l_indicators_tbl
1250   , x_return_status       => l_return_status
1251   , x_Error_Tbl           => l_error_tbl
1252   );
1253 
1254  -- Get all the previously selected Indicator levels from
1255  -- bis_user_ind_selections table.
1256  BIS_INDICATOR_REGION_PUB.Retrieve_User_Ind_Selections
1257   ( p_api_version          => 1.0
1258   , p_user_id              => l_user_id
1259   , p_all_info             => FND_API.G_TRUE
1260   , p_plug_id              => l_plug_id
1261   , x_Indicator_Region_Tbl => l_selections_tbl
1262   , x_return_status        => l_return_status
1263   , x_Error_Tbl            => l_error_tbl
1264   );
1265 
1266 --  /***********  For DEBUGGING **************
1267 --  htp.p('g_user_id '||g_user_id||'<BR>');
1268 --  htp.p('g_plug_id '||l_plug_id||'<BR>');
1269 --  for i in 1 .. l_indicators_tbl.COUNT loop
1270 --  htp.p('l_indicators_tbl(i).target_level_name: '||
1271 --         l_indicators_tbl(i).target_level_name||'<BR>');
1272 --  end loop;
1273 --  ************************************************/
1274 
1275 
1276 
1277 
1278   -- Remove the duplicates from the l_selections_tbl
1279   IF (l_selections_tbl.COUNT <> 0) THEN
1280      FOR i in 1 .. l_selections_tbl.COUNT LOOP
1281        l_unique := TRUE;
1282        FOR j in 1 .. l_temp_tbl.COUNT LOOP
1283           if l_selections_tbl(i).target_level_id = l_temp_tbl(j).id then
1284             l_unique := FALSE;
1285           end if;
1286        END LOOP;
1287        if (l_unique AND
1288         BIS_PMF_PORTLET_UTIL.is_authorized(
1289         p_cur_user_id => g_user_id
1290        ,p_target_level_id => l_selections_tbl(i).target_level_id) ) THEN
1291          l_cnt := l_temp_tbl.COUNT + 1;
1292          l_temp_tbl(l_cnt).id := l_selections_tbl(i).target_level_id;
1293          l_temp_tbl(l_cnt).name := l_selections_tbl(i).target_level_name;
1294        end if;
1295      END LOOP;
1296   END IF;
1297 
1298 
1299 ---------------------------------------------------------------------------
1300 -- 19-SEP-00 gsanap    Modified this part to use putStyle and remove icon_show
1301 --                     Bug 1404224 which was the Banner on Customize pg.
1302 --                     was not displaying properly
1303 ---------------------------------------------------------------------------
1304  l_string := l_string ||'<body>';
1305  l_string := l_string || '<LINK HREF="/OA_HTML/bisportal.css" type="text/css" rel="stylesheet">';
1306 
1307 
1308  -- Print out NOCOPY the instructions for this page
1309  fnd_message.set_name('BIS','BIS_PLUG_INSTRUCTION1');
1310  l_instruction := bis_utilities_pvt.escape_html_input(icx_util.replace_quotes(fnd_message.get));
1311  l_string := l_string ||'<BR>';
1312  l_string := l_string ||'<table width="100%" border=0 cellspacing=0 cellpadding=0>';
1313  l_string := l_string ||'<tr><td width=5%></td><td width=90%>';
1314  l_string := l_string ||l_instruction||'</td><td width=5%></td></tr>';
1315  l_string := l_string ||'</table>';
1316  l_string := l_string ||'<BR>';
1317 
1318  l_string := l_string ||'<SCRIPT LANGUAGE="JavaScript">';
1319 
1320 
1321   -- Function to move the selected target levels to the favorites box
1322   --meastmon 06/25/2001. Validate that user have seleted a target level before
1323   --clicking add button
1324   l_string := l_string || 'function addTo() {';
1325   l_string := l_string || '    var temp=document.DefaultFormName.B.selectedIndex;';
1326   l_string := l_string || '    if (temp < 0)';
1327   l_string := l_string || '      selectTo();';
1328   l_string := l_string || '    else {';
1329   l_string := l_string || '      var totext=document.DefaultFormName.B[temp].text;';
1330   l_string := l_string || '      var tovalue=document.DefaultFormName.B[temp].value;';
1331   l_string := l_string || '      var end=document.DefaultFormName.C.length;';
1332   l_string := l_string || '      if (end > 0) {';
1333   l_string := l_string || '        if (document.DefaultFormName.C.options[end-1].value =="") { ';
1334   l_string := l_string || '          end = end - 1;';
1335   l_string := l_string || '        }';
1336   l_string := l_string || '        for (var i=0;i<end;i++) {';
1337   l_string := l_string || '          if (tovalue == document.DefaultFormName.C[i].value)';
1338   l_string := l_string || '            var check = 0;';
1339   l_string := l_string || '        }';
1340   l_string := l_string || '        if (check == 0) {';
1341   l_string := l_string || '          alert("'||l_dup_tarlevel||'");';
1342   l_string := l_string || '        }';
1343   l_string := l_string || '        else {';
1344   l_string := l_string || '          document.DefaultFormName.C.options[end] = new Option(totext,tovalue);';
1345   l_string := l_string || '          document.DefaultFormName.C.selectedIndex = end;';
1346   l_string := l_string || '        }';
1347   l_string := l_string || '      }';
1348   l_string := l_string || '      else {';
1349   l_string := l_string || '        document.DefaultFormName.C.options[end] = new Option(totext,tovalue);';
1350   l_string := l_string || '        document.DefaultFormName.C.selectedIndex = end;';
1351   l_string := l_string || '      }';
1352   l_string := l_string || '    }';
1353   l_string := l_string || '  }';
1354 
1355 
1356   l_string := l_string || 'function selectTo() {';
1357   l_string := l_string || '     alert("'||l_select_tarlevel||'")';
1358   l_string := l_string || '     }';
1359 
1360 
1361    -- Function to move selections upwards in the favorites box
1362    -- meastmon 06/25/2001 Fix bug#1835495.
1363   l_string := l_string ||'function upTo() {';
1364   l_string := l_string ||'     var temp = document.DefaultFormName.C.selectedIndex;';
1365   l_string := l_string ||'     if (temp < 0)';
1366   l_string := l_string ||'        selectTo();';
1367   l_string := l_string ||'     else {';
1368   l_string := l_string ||'       if (temp > 0) { ';
1369   l_string := l_string ||'         var text = document.DefaultFormName.C[temp-1].text;';
1370   l_string := l_string ||'         var val = document.DefaultFormName.C.options[temp-1].value;';
1371   l_string := l_string ||'         var totext = document.DefaultFormName.C[temp].text;';
1372   l_string := l_string ||'         var toval = document.DefaultFormName.C.options[temp].value;';
1373   l_string := l_string ||'         document.DefaultFormName.C[temp-1].text = totext;';
1374   l_string := l_string ||'         document.DefaultFormName.C.options[temp-1].value = toval;';
1375   l_string := l_string ||'         document.DefaultFormName.C[temp].text = text;';
1376   l_string := l_string ||'         document.DefaultFormName.C.options[temp].value = val;';
1377   l_string := l_string ||'         document.DefaultFormName.C.selectedIndex = temp-1;';
1378   l_string := l_string ||'       }';
1379   l_string := l_string ||'     }';
1380 
1381   l_string := l_string ||'   }';
1382 
1383   -- Function to move selections downwards in the favorites box
1384   -- meastmon 06/25/2001 Fix bug#1835495.
1385   l_string := l_string ||'function downTo() {';
1386   l_string := l_string ||'     var temp = document.DefaultFormName.C.selectedIndex;';
1387   l_string := l_string ||'     var end = document.DefaultFormName.C.length;';
1388 
1389   l_string := l_string ||'     if (temp < 0)';
1390   l_string := l_string ||'        selectTo();';
1391   l_string := l_string ||'     else {';
1392   l_string := l_string ||'       if (document.DefaultFormName.C.options[end-1].value == "")';
1393   l_string := l_string ||'         end = end - 1;';
1394 
1395   l_string := l_string ||'       if (temp < (end-1)) {';
1396   l_string := l_string ||'         var text = document.DefaultFormName.C[temp+1].text;';
1397   l_string := l_string ||'         var val = document.DefaultFormName.C.options[temp+1].value;';
1398   l_string := l_string ||'         var totext = document.DefaultFormName.C[temp].text;';
1399   l_string := l_string ||'         var toval = document.DefaultFormName.C.options[temp].value;';
1400 
1401   l_string := l_string ||'         document.DefaultFormName.C[temp+1].text = totext;';
1402   l_string := l_string ||'         document.DefaultFormName.C.options[temp+1].value = toval;';
1403   l_string := l_string ||'         document.DefaultFormName.C[temp].text = text;';
1404   l_string := l_string ||'         document.DefaultFormName.C.options[temp].value = val;';
1405   l_string := l_string ||'         document.DefaultFormName.C.selectedIndex = temp+1;';
1406   l_string := l_string ||'       }';
1407   l_string := l_string ||'     }';
1408 
1409   l_string := l_string ||'   }';
1410 
1411 
1412 -- Function to delete entries in the favorites box
1413   l_string := l_string ||'function deleteTo() {';
1414   l_string := l_string ||' var temp=document.DefaultFormName.C.selectedIndex;';
1415   l_string := l_string ||'   if (temp < 0)';
1416   l_string := l_string ||'     selectTo();';
1417   l_string := l_string ||'   else {';
1418   l_string := l_string ||'     document.DefaultFormName.C.options[temp] = null;';
1419   l_string := l_string ||'     }';
1420 
1421   l_string := l_string ||'  }';
1422 
1423   l_string := l_string ||'function open_new_browser() {';
1424   l_string := l_string ||'    var attributes = "resizable=yes,scrollbars=yes,toolbar=no,width="+x+",height="+ y;';
1425   l_string := l_string ||'    var new_browser = window.open(url, "new_browser", attributes);';
1426   l_string := l_string ||'    if (new_browser != null) {';
1427   l_string := l_string ||'        if (new_browser.opener == null)';
1428   l_string := l_string ||'            new_browser.opener = self;';
1429   l_string := l_string ||'        window.name = ''Oraclefavoritesroot'';';
1430   l_string := l_string ||'        new_browser.location.href = url;';
1431   l_string := l_string ||'        }';
1432   l_string := l_string ||'    }';
1433 
1434 
1435  --  Function to save the favorites
1436   l_string := l_string ||'function savefavorites() {';
1437   l_string := l_string ||'   var end=document.DefaultFormName.C.length;';
1438   l_string := l_string ||'   for (var i=0; i<end; i++) {';
1439   l_string := l_string ||'     if (document.DefaultFormName.C.options[i].value != "") {';
1440   l_string := l_string || '      var e = document.DefaultFormName.C.options[i].value; ';
1441   l_string := l_string ||'       document.DefaultFormName.p_selections_tbl[i].value = e + "*" + document.DefaultFormName.C.options[i].text;';
1442   l_string := l_string ||'       document.DefaultFormName.submit();';
1443   l_string := l_string ||'       }';
1444   l_string := l_string ||'       }';
1445   l_string := l_string ||'   }';
1446 
1447 -- Function to reset everything on the page
1448   l_string := l_string ||'function resetfavorites() {';
1449   l_string := l_string ||'loadFrom();';
1450   l_string := l_string ||'loadTo();';
1451   l_string := l_string ||'     }';
1452 
1453   l_string := l_string ||'</SCRIPT>';
1454 
1455   l_string := l_string ||'<SCRIPT LANGUAGE="Javascript">document.DefaultFormName.Z.value='||Z||';';
1456   l_string := l_string ||'</SCRIPT>';
1457   l_string := l_string ||'<SCRIPT LANGUAGE="Javascript">document.DefaultFormName.p_back_url.value='''||p_back_url||''';';
1458   l_string := l_string ||'</SCRIPT>';
1459   l_string := l_string ||'<SCRIPT LANGUAGE="Javascript">document.DefaultFormName.p_reference_path.value='''||p_reference_path||''';';
1460   l_string := l_string ||'</SCRIPT>';
1461   l_string := l_string ||'<INPUT TYPE="hidden" NAME="p_indlevel" VALUE="">';
1462   l_string := l_string ||'<INPUT TYPE="hidden" NAME="p_ind_level_id" VALUE="">';
1463   l_string := l_string ||'<INPUT TYPE="hidden" NAME="p_displaylabels_tbl" VALUE="">';
1464 
1465   -- Create hidden values to grab selected indicator levels into
1466 
1467   l_string := l_string ||'<CENTER>';
1468   l_string := l_string ||'<table width="100%" border=0 cellspacing=0 cellpadding=0>';--main
1469   l_string := l_string ||'<tr><td align=center>';
1470   l_string := l_string ||'<table width="10%" border=0 cellspacing=0 cellpadding=0>';--cell
1471 
1472   IF(l_swan_enabled)THEN
1473     l_string := l_string ||'<tr><td nowrap="YES" class="x49">';
1474     l_string := l_string ||BIS_UTILITIES_PVT.getPrompt('BIS_AVAILABLE_MEASURES')||': ';
1475     l_string := l_string ||'</td><td nowrap="YES" class="x49">';
1476     l_string := l_string ||BIS_UTILITIES_PVT.getPrompt('BIS_SELECTED_MEASURES')||': ';
1477   ELSE
1478     l_string := l_string ||'<tr><td nowrap="YES">';
1479     l_string := l_string ||BIS_UTILITIES_PVT.getPrompt('BIS_AVAILABLE_MEASURES')||': ';
1480     l_string := l_string ||'</td><td nowrap="YES">';
1481     l_string := l_string ||BIS_UTILITIES_PVT.getPrompt('BIS_SELECTED_MEASURES')||': ';
1482   END IF;
1483   l_string := l_string ||'</td></tr>';
1484   l_string := l_string ||'<tr><td>';
1485   l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0><tr><td>'; -- full menu cell
1486   l_string := l_string ||'<select name="B" size=10>';
1487 
1488   IF (l_indicators_tbl.COUNT = 0) THEN
1489     l_string := l_string ||'<OPTION VALUE=>             ';
1490   ELSE
1491     for i in l_indicators_tbl.FIRST .. l_indicators_tbl.COUNT loop
1492   -- mdamle 01/12/2001 - Change display text of Performance Measure list
1493       -- changed l_indicators_tbl(i).target_level_name to getPerformanceMeasureName()
1494       l_string := l_string ||'<OPTION VALUE='||bis_utilities_pvt.escape_html_input(l_indicators_tbl(i).target_level_id)||'>'||bis_utilities_pvt.escape_html_input(getPerformanceMeasureName(l_indicators_tbl(i).target_level_id));
1495     end loop;
1496   END IF;
1497 
1498   l_string := l_string ||'</SELECT>';
1499 
1500   l_string := l_string ||'</td><td align="left">';
1501   l_string := l_string ||'<table><tr><td>'; --add
1502   l_string := l_string ||'<A HREF="javascript:addTo();';
1503   l_string := l_string ||        '" onMouseOver="window.status=''';
1504   l_string := l_string ||        BIS_UTILITIES_PVT.getPrompt('BIS_ADD');
1505 
1506   IF(l_swan_enabled)THEN
1507    l_string := l_string ||        ''';return true"><image src="/OA_MEDIA/BISMOVE.gif" alt="';
1508   ELSE
1509    l_string := l_string ||        ''';return true"><image src="/OA_MEDIA/FNDRTARW.gif" alt="';
1510   END IF;
1511 
1512   l_string := l_string ||        ICX_UTIL.replace_alt_quotes(BIS_UTILITIES_PVT.getPrompt('BIS_ADD'))||'" BORDER="0"></A>';
1513   l_string := l_string ||'</td></tr></table>'; -- add
1514   l_string := l_string ||'</td></tr></table>'; -- full menu cell
1515   l_string := l_string ||'</td><td>';
1516   --favorite cell
1517   l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0><tr><td>';
1518   l_string := l_string ||'<select name="C" size=10>';
1519 
1520 
1521 
1522   if (TRIM(p_selections_tbl(1)) is NULL) then
1523     -- If first time to this page, get the data from database
1524     IF (l_temp_tbl.COUNT = 0) THEN
1525       l_string := l_string ||'<OPTION VALUE=>             ';
1526     ELSE
1527        for i in l_temp_tbl.FIRST .. l_temp_tbl.COUNT loop
1528         -- mdamle 01/12/2001 - Change display text of Performance Measure list
1529           -- changed l_temp_tbl(i).name to getPerformanceMeasureName()
1530          l_string := l_string ||'<OPTION VALUE='||bis_utilities_pvt.escape_html_input(l_temp_tbl(i).id)||'>'||bis_utilities_pvt.escape_html_input(getPerformanceMeasureName(l_temp_tbl(i).id));
1531        end loop;
1532     END IF;
1533   else
1534 
1535     -- If coming back from the next page,get data from plsql table
1536     for i in p_selections_tbl.FIRST .. p_selections_tbl.COUNT loop
1537 
1538       l_loc := instr(p_selections_tbl(i),'*',1,1);
1539       l_value := substr (p_selections_tbl(i),1,l_loc - 1);
1540       l_text := substr (p_selections_tbl(i),l_loc + 1);
1541       l_string := l_string ||'<OPTION VALUE='||bis_utilities_pvt.escape_html_input(l_value)||'>'||bis_utilities_pvt.escape_html_input(l_text);
1542       exit when p_selections_tbl(i) is NULL;
1543     end LOOP;
1544 
1545   end if;
1546 
1547   l_string := l_string ||'</SELECT>';
1548   l_string := l_string ||'</td><td align="left">';
1549 
1550   -- up and down
1551   l_string := l_string ||'<table><tr><td align="left" valign="bottom">';
1552   l_string := l_string ||'<A HREF="javascript:upTo()" onMouseOver="window.status=''';
1553   --l_string := l_string ||     ICX_UTIL.replace_onMouseOver_quotes(BIS_UTILITIES_PVT.getPrompt('BIS_UP'));
1554   l_string := l_string ||     BIS_UTILITIES_PVT.getPrompt('BIS_UP');
1555   IF(l_swan_enabled)THEN
1556    l_string := l_string ||     ''';return true"><image src="/OA_MEDIA/BISMOVUP.gif" alt="';
1557   ELSE
1558     l_string := l_string ||     ''';return true"><image src="/OA_MEDIA/FNDUPARW.gif" alt="';
1559   END IF;
1560   l_string := l_string ||     BIS_UTILITIES_PVT.getPrompt('BIS_UP')||'" BORDER="0"></A>';
1561   l_string := l_string ||'</td></tr><tr><td align="left" valign="top">';
1562   l_string := l_string ||'<A HREF="javascript:downTo()" onMouseOver="window.status=''';
1563   l_string := l_string ||     BIS_UTILITIES_PVT.getPrompt('BIS_DOWN');
1564   IF(l_swan_enabled)THEN
1565    l_string := l_string ||     ''';return true"><image src="/OA_MEDIA/BISMOVDN.gif" alt="';
1566   ELSE
1567    l_string := l_string ||     ''';return true"><image src="/OA_MEDIA/FNDDNARW.gif" alt="';
1568   END IF;
1569   l_string := l_string ||     ICX_UTIL.replace_alt_quotes(BIS_UTILITIES_PVT.getPrompt('BIS_DOWN'))||'" BORDER="0"></A>';
1570   l_string := l_string ||'</td></tr></table>'; --up and down
1571   l_string := l_string ||'</td></tr></table>'; --favorite cell
1572   l_string := l_string ||'</td></tr>';
1573   l_string := l_string ||'<tr><td></td><td>';
1574 
1575   --buttons
1576   l_string := l_string ||'<table><tr>';
1577   l_string := l_string ||'<td><BR></td>';
1578   l_string := l_string ||'<td><BR></td><td>';
1579 
1580   IF(l_swan_enabled)THEN
1581    l_button_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
1582   ELSE
1583    l_button_edge := BIS_UTILITIES_PVT.G_ROUND_EDGE;
1584   END IF;
1585 
1586   --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
1587   l_button_tbl(1).left_edge  := l_button_edge;
1588   l_button_tbl(1).right_edge := l_button_edge;
1589   l_button_tbl(1).disabled := FND_API.G_FALSE;
1590   l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_DELETE');
1591   l_button_tbl(1).href := 'Javascript:deleteTo()';
1592 
1593   BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
1594   l_string := l_string ||l_button_str;
1595 
1596   l_string := l_string ||'</td></tr></table>';
1597   l_string := l_string ||'</td></tr>';
1598 
1599   l_string := l_string ||'<!--   ********     Buttons Row   ********* -->';
1600   l_string := l_string ||'<tr><td colspan="2"><BR></td></tr>';
1601   l_string := l_string ||'<tr><td colspan="2">';
1602   l_string := l_string ||'<table width="100%"><tr><td width=50% align="right">'; -- ok
1603 
1604   --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
1605 
1606   l_button_tbl(1).left_edge  := l_button_edge;
1607   l_button_tbl(1).right_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
1608   l_button_tbl(1).disabled := FND_API.G_FALSE;
1609   l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_CONTINUE');
1610   l_button_tbl(1).href := 'Javascript:savefavorites()';
1611   BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
1612   l_string := l_string ||l_button_str;
1613   l_string := l_string ||'</td><td align="left" width="50%">';
1614 
1615   --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
1616   l_button_tbl(1).left_edge  := BIS_UTILITIES_PVT.G_FLAT_EDGE;
1617   l_button_tbl(1).right_edge := l_button_edge;
1618   l_button_tbl(1).disabled := FND_API.G_FALSE;
1619   l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_CANCEL');
1620 
1621   IF (p_back_url IS NULL) THEN
1622     l_button_tbl(1).href := BIS_REPORT_UTIL_PVT.Get_Home_URL;
1623   ELSE
1624     l_button_tbl(1).href := p_back_url;
1625   END IF;
1626 
1627   BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
1628   l_string := l_string ||l_button_str;
1629   l_string := l_string ||'</td></tr></table>';
1630   l_string := l_string ||'</td></tr>';
1631 
1632 
1633   l_string := l_string ||'</table>'; --cell
1634   l_string := l_string ||'</td></tr>';
1635   l_string := l_string ||'</table>'; --main
1636   l_string := l_string ||'<SCRIPT LANGUAGE="JavaScript">';
1637   l_string := l_string ||'document.DefaultFormName.B.focus();';
1638   l_string := l_string ||'</SCRIPT>';
1639   l_string := l_string ||'</CENTER>';
1640 
1641   --need to add demo in portals
1642 
1643 
1644   IF (p_reference_path IS NOT NULL) THEN
1645     show_cust_demo_url(l_plug_id, icx_sec.g_session_id, l_demo_string);
1646     IF (l_demo_string IS NOT NULL) THEN
1647       l_string := l_string || l_demo_string;
1648     END IF;
1649   END IF;
1650 
1651   l_string := l_string ||'</BODY>';
1652   l_string := l_string ||'</HTML>';
1653 --  end if;
1654 --end if;
1655 
1656 x_string := l_string;
1657 
1658 exception
1659     when others then
1660       x_string := SQLERRM;
1661 
1662 end setIndicators;
1663 
1664 
1665 
1666 -- ************************************************************
1667 --   Show the Dimensions Page
1668 -- ************************************************************
1669 procedure showDimensions
1670 ( Z                      in pls_integer
1671 , p_indlevel             in varchar2 default NULL
1672 , p_ind_level_id         in pls_integer  default NULL
1673 , p_displaylabels_tbl    in Selected_Values_Tbl_Type
1674 , p_selections_tbl       in Selected_Values_Tbl_Type
1675 , p_back_url             in VARCHAR2
1676 , p_reference_path       IN VARCHAR2
1677 , x_str_object            out nocopy CLOB
1678 )
1679 is
1680 l_counter                 pls_integer := 150;
1681 l_cnt                     pls_integer;
1682 l_plug_id                 pls_integer;
1683 l_length                  pls_integer;
1684 l_initialize              varchar2(32000);
1685 l_nbsp                    varchar2(32000);
1686 l_title                   varchar2(32000);
1687 l_choose_dim_value        varchar2(32000);
1688 l_enter_displabel         varchar2(32000);
1689 l_select_displabel        varchar2(32000);
1690 l_dup_displabel           varchar2(32000);
1691 l_dup_combo               varchar2(32000);
1692 l_resp_counter             number;
1693 l_prompt_length            number;
1694 l_instruction              varchar2(32000);
1695 l_blank                    varchar2(32000);
1696 l_msg_count                number;
1697 l_msg_data                 varchar2(32000);
1698 l_return_status            varchar2(32000);
1699 l_loc                      pls_integer;
1700 l_value                    varchar2(32000);
1701 l_text                     varchar2(32000);
1702 l_ind_level_name           varchar2(32000);
1703 l_ind_level_id             pls_integer;
1704 l_indicators_tbl           BIS_TARGET_LEVEL_PUB.Target_Level_Tbl_Type;
1705 l_labels_tbl               BIS_INDICATOR_REGION_PUB.Indicator_Region_Tbl_Type;
1706 l_orgs_tbl                 no_duplicates_tbl_Type;
1707 l_dim1_tbl                 no_duplicates_tbl_Type;
1708 l_dim2_tbl                 no_duplicates_tbl_Type;
1709 l_dim3_tbl                 no_duplicates_tbl_Type;
1710 l_dim4_tbl                 no_duplicates_tbl_Type;
1711 l_dim5_tbl                 no_duplicates_tbl_Type;
1712 -- mdamle 01/15/2001 - Use Dim6 and Dim7
1713 l_dim6_tbl                 no_duplicates_tbl_Type;
1714 l_dim7_tbl                 no_duplicates_tbl_Type;
1715 
1716 l_d0_tbl                   no_duplicates_tbl_Type;
1717 l_d1_tbl                   no_duplicates_tbl_Type;
1718 l_d2_tbl                   no_duplicates_tbl_Type;
1719 l_d3_tbl                   no_duplicates_tbl_Type;
1720 l_d4_tbl                   no_duplicates_tbl_Type;
1721 l_d5_tbl                   no_duplicates_tbl_Type;
1722 l_d6_tbl                   no_duplicates_tbl_Type;
1723 l_d7_tbl                   no_duplicates_tbl_Type;
1724 l_current_user_id          PLS_INTEGER;
1725 l_user_id                  PLS_INTEGER;
1726 l_owner_user_id            PLS_INTEGER;
1727 l_Time_Seq_Num              number;
1728 --
1729 l_Org_Seq_Num              number;
1730 l_Org_Level_ID             number;
1731 
1732 
1733 l_Org_Level_Value_ID       varchar2(80); -- number;
1734 
1735 l_Org_Level_Short_Name     varchar2(240);
1736 l_Org_Level_Name           bis_levels_tl.name%TYPE;
1737 
1738 d0                         varchar2(32000);
1739 d1                         varchar2(32000);
1740 l_link                     varchar2(32000);
1741 l_error_tbl                BIS_UTILITIES_PUB.Error_Tbl_Type;
1742 l_clear                    VARCHAR2(32000);
1743 l_sobString                VARCHAR2(32000);
1744 l_elements                 BIS_UTILITIES_PUB.BIS_VARCHAR_TBL;
1745 
1746 -- Grab the incoming indicator level id into a local var for use later
1747 v_ind_level_id                pls_integer := p_ind_level_id;
1748 
1749 cursor plan_cur is
1750  SELECT plan_id,short_name,name
1751  FROM BISBV_BUSINESS_PLANS
1752  ORDER BY name;
1753 
1754 -- mdamle 01/15/2001 - Use Dim6 and Dim7
1755 -- added short_names and additional levels
1756 cursor bisfv_target_levels_cur(p_tarid in pls_integer) is
1757  SELECT TARGET_LEVEL_ID,
1758         TARGET_LEVEL_NAME,
1759     -- mdamle 01/15/2001 - Use Dim6 and Dim7
1760         -- ORG_LEVEL_ID,
1761         -- ORG_LEVEL_SHORT_NAME,
1762         -- ORG_LEVEL_NAME,
1763         DIMENSION1_LEVEL_ID,
1764     DIMENSION1_LEVEL_SHORT_NAME,
1765         DIMENSION1_LEVEL_NAME,
1766         DIMENSION2_LEVEL_ID,
1767     DIMENSION2_LEVEL_SHORT_NAME,
1768         DIMENSION2_LEVEL_NAME,
1769         DIMENSION3_LEVEL_ID,
1770     DIMENSION3_LEVEL_SHORT_NAME,
1771         DIMENSION3_LEVEL_NAME,
1772         DIMENSION4_LEVEL_ID,
1773     DIMENSION4_LEVEL_SHORT_NAME,
1774         DIMENSION4_LEVEL_NAME,
1775         DIMENSION5_LEVEL_ID,
1776     DIMENSION5_LEVEL_SHORT_NAME,
1777         DIMENSION5_LEVEL_NAME,
1778         DIMENSION6_LEVEL_ID,
1779     DIMENSION6_LEVEL_SHORT_NAME,
1780         DIMENSION6_LEVEL_NAME,
1781         DIMENSION7_LEVEL_ID,
1782     DIMENSION7_LEVEL_SHORT_NAME,
1783         DIMENSION7_LEVEL_NAME
1784  FROM BISFV_TARGET_LEVELS
1785  WHERE TARGET_LEVEL_ID = p_tarid;
1786 
1787 l_button_str             varchar2(32000);
1788 l_button_tbl             BIS_UTILITIES_PVT.HTML_Button_Tbl_Type;
1789 --Bug 1797465
1790 l_dim0_lbl               VARCHAR2(1000);
1791 l_dim1_lbl               VARCHAR2(1000);
1792 l_dim2_lbl               VARCHAR2(1000);
1793 l_dim3_lbl               VARCHAR2(1000);
1794 l_dim4_lbl               VARCHAR2(1000);
1795 l_dim5_lbl               VARCHAR2(1000);
1796 l_dim6_lbl               VARCHAR2(1000);
1797 l_dim7_lbl               VARCHAR2(1000);
1798 l_string                 VARCHAR2(32000);
1799 l_string1                VARCHAR2(32000);
1800 l_lov_string             VARCHAR2(32000);
1801 l_str_object             CLOB;
1802 l_un_auth                VARCHAR2(200);
1803 l_access                 VARCHAR2(200);
1804 l_append_string          VARCHAR2(1000);
1805 l_swan_enabled           BOOLEAN;
1806 l_button_edge            VARCHAR2(100);
1807 
1808 BEGIN
1809 
1810 
1811 l_plug_id := Z;
1812 l_swan_enabled := BIS_UTILITIES_PVT.checkSWANEnabled();
1813 --l_plug_id := icx_call.decrypt2(Z);
1814 
1815 --if icx_sec.validateSession  then
1816 -- if ICX_SEC.validatePlugSession(l_plug_id) then
1817 
1818    --g_user_id := ICX_SEC.getID(ICX_SEC.PV_USER_ID, '', icx_sec.g_session_id); --2751984
1819  l_current_user_id := ICX_SEC.getID(ICX_SEC.PV_USER_ID, '', icx_sec.g_session_id); --2751984
1820 
1821 
1822  l_initialize := '                                  ';
1823  l_blank    := '';
1824 
1825    -- Set the message strings from the database
1826   fnd_message.set_name('BIS','BIS_ENTER_DISPLAY_LABEL');
1827    l_enter_displabel := icx_util.replace_quotes(fnd_message.get);
1828   fnd_message.set_name('BIS','BIS_SELECT_DISPLAY_LABEL');
1829    l_select_displabel := icx_util.replace_quotes(fnd_message.get);
1830   fnd_message.set_name('BIS','BIS_DUP_DISPLAY_LABEL');
1831    l_dup_displabel := icx_util.replace_quotes(fnd_message.get);
1832   fnd_message.set_name('BIS','BIS_DUP_COMBO');
1833    l_dup_combo := icx_util.replace_quotes(fnd_message.get);
1834   fnd_message.set_name('BIS','BIS_CHOOSE_DIM_VALUE');
1835    l_choose_dim_value := icx_util.replace_quotes(fnd_message.get);
1836 
1837   l_un_auth := BIS_UTILITIES_PVT.Get_FND_Message('BIS_UNAUTHORIZED');
1838 
1839 
1840   IF ((p_reference_path IS NOT NULL) AND (NOT BIS_PMF_PORTLET_UTIL.has_customized_rows(l_plug_id, l_current_user_id, l_owner_user_id) )) THEN
1841       l_user_id := l_owner_user_id;
1842     ELSE
1843       l_user_id := l_current_user_id;
1844   END IF;
1845 
1846    -- ******************************************************
1847    -- Call the procedure that paints the LOV javascript function
1848    -- ******************************************************
1849    BIS_LOV_PUB.lovjscript(x_string => l_lov_string);
1850 
1851    IF(l_str_object IS NULL) THEN
1852      WF_NOTIFICATION.NewClob(l_str_object, l_lov_string);
1853    ELSE
1854      WF_NOTIFICATION.WriteToClob(l_str_object,l_lov_string);
1855    END IF;
1856 
1857    -- Get all the previously selected labels from
1858    -- selections box.
1859 
1860    BIS_INDICATOR_REGION_PUB.Retrieve_User_Ind_Selections
1861    ( p_api_version          => 1.0
1862    , p_user_id              => l_user_id
1863    , p_all_info             => FND_API.G_TRUE
1864    , p_plug_id              => l_plug_id
1865    , x_Indicator_Region_Tbl => l_labels_tbl
1866    , x_return_status        => l_return_status
1867    , x_Error_Tbl            => l_error_tbl
1868    );
1869 
1870    l_string := '<body>';
1871    l_string := l_string || '<LINK HREF="/OA_HTML/bisportal.css" type="text/css" rel="stylesheet">';
1872     -- Print out NOCOPY the instructions for this page
1873    fnd_message.set_name('BIS','BIS_PLUG_INSTRUCTION2');
1874    l_instruction := bis_utilities_pvt.escape_html_input(icx_util.replace_quotes(fnd_message.get));
1875    l_string := l_string ||'<BR>';
1876    l_string := l_string ||'<table width="100%" border=0 cellspacing=0 cellpadding=0>';
1877    l_string := l_string ||'<tr><td width=5%></td><td width=90% class="x0">'||l_instruction||'</td><td width=5%></td></tr>';
1878    l_string := l_string ||'</table>';
1879    l_string := l_string ||'<BR>';
1880 
1881    l_string := l_string ||'<SCRIPT LANGUAGE="Javascript">';
1882 
1883    l_string := l_string ||'function selectTo() {';
1884    l_string := l_string ||'       alert("'||l_select_displabel||'")';
1885    l_string := l_string ||'       }';
1886 
1887 
1888    -- Function to move the new display label to the favorites box
1889    l_string := l_string ||'function addTo() {';
1890    l_string := l_string ||'if (document.DefaultFormName.label.value == ""){';
1891    l_string := l_string ||'     alert ("'||l_enter_displabel||'");';
1892    l_string := l_string ||'     document.DefaultFormName.label.focus();';
1893    l_string := l_string ||'     }';
1894    l_string := l_string ||'  else {';
1895    l_string := l_string ||'     var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
1896    l_string := l_string ||'     var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
1897    --l_string := l_string ||'  // Do some checks before grabbing the dimension level values';
1898    --l_string := l_string ||'  // For dimension0';
1899    l_string := l_string ||'     if (document.DefaultFormName.dim0_level_id.value != "") {';
1900    l_string := l_string ||'        var d0_tmp = document.DefaultFormName.dim0.selectedIndex;';
1901    l_string := l_string ||'        var d0_end = document.DefaultFormName.dim0.length;';
1902    l_string := l_string ||'        if ((document.DefaultFormName.dim0[d0_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim0[d0_tmp].text == "'||c_choose||'"))  {';
1903    l_string := l_string ||'           d0 = "+";';
1904    l_string := l_string ||'           document.DefaultFormName.dim0.focus();';
1905    l_string := l_string ||'           return FALSE;';
1906    l_string := l_string ||'           }';
1907    l_string := l_string ||'        else';
1908    l_string := l_string ||'           var d0 =  document.DefaultFormName.dim0[d0_tmp].value;';
1909    l_string := l_string ||'        }';
1910    l_string := l_string ||'     else';
1911    l_string := l_string ||'        {d0 = "-";}';
1912 
1913    --l_string := l_string ||'     // For dimension1';
1914    l_string := l_string ||'     if (document.DefaultFormName.dim1_level_id.value != "") {';
1915    l_string := l_string ||'        var d1_tmp = document.DefaultFormName.dim1.selectedIndex;';
1916    l_string := l_string ||'        var d1_end = document.DefaultFormName.dim1.length;';
1917    l_string := l_string ||'        if ((document.DefaultFormName.dim1[d1_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim1[d1_tmp].text == "'||c_choose||'"))  {';
1918    l_string := l_string ||'           d1 = "+";';
1919    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
1920    l_string := l_string ||'           document.DefaultFormName.dim1.focus();';
1921    l_string := l_string ||'           return FALSE;';
1922    l_string := l_string ||'           }';
1923    l_string := l_string ||'        else';
1924    l_string := l_string ||'           var d1 =  document.DefaultFormName.dim1[d1_tmp].value;';
1925    l_string := l_string ||'        }';
1926    l_string := l_string ||'     else';
1927    l_string := l_string ||'        {d1 = "-";}';
1928 
1929    --l_string := l_string ||'     // For dimension2';
1930    l_string := l_string ||'     if (document.DefaultFormName.dim2_level_id.value != "") {';
1931    l_string := l_string ||'        var d2_tmp = document.DefaultFormName.dim2.selectedIndex;';
1932    l_string := l_string ||'        var d2_end = document.DefaultFormName.dim2.length;';
1933    l_string := l_string ||'        if ((document.DefaultFormName.dim2[d2_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim2[d2_tmp].text == "'||c_choose||'"))  {';
1934    l_string := l_string ||'           d2 = "+";';
1935    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
1936    l_string := l_string ||'           document.DefaultFormName.dim2.focus();';
1937    l_string := l_string ||'           return FALSE;';
1938    l_string := l_string ||'           }';
1939    l_string := l_string ||'        else';
1940    l_string := l_string ||'           var d2 =  document.DefaultFormName.dim2[d2_tmp].value;';
1941    l_string := l_string ||'        }';
1942    l_string := l_string ||'     else';
1943    l_string := l_string ||'        {d2 = "-";}';
1944 
1945    --l_string := l_string ||'     // For dimension3';
1946    l_string := l_string ||'     if (document.DefaultFormName.dim3_level_id.value != "") {';
1947    l_string := l_string ||'        var d3_tmp = document.DefaultFormName.dim3.selectedIndex;';
1948    l_string := l_string ||'        var d3_end = document.DefaultFormName.dim3.length;';
1949    l_string := l_string ||'        if ((document.DefaultFormName.dim3[d3_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim3[d3_tmp].text == "'||c_choose||'"))  {';
1950    l_string := l_string ||'           d3 = "+";';
1951    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
1952    l_string := l_string ||'           document.DefaultFormName.dim3.focus();';
1953    l_string := l_string ||'           return FALSE;';
1954    l_string := l_string ||'           }';
1955    l_string := l_string ||'        else';
1956    l_string := l_string ||'           var d3 =  document.DefaultFormName.dim3[d3_tmp].value;';
1957    l_string := l_string ||'        }';
1958    l_string := l_string ||'     else';
1959    l_string := l_string ||'        {d3 = "-";}';
1960 
1961    --l_string := l_string ||'     // For dimension4';
1962    l_string := l_string ||'     if (document.DefaultFormName.dim4_level_id.value != "") {';
1963    l_string := l_string ||'        var d4_tmp = document.DefaultFormName.dim4.selectedIndex;';
1964    l_string := l_string ||'        var d4_end = document.DefaultFormName.dim4.length;';
1965    l_string := l_string ||'        if ((document.DefaultFormName.dim4[d4_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim4[d4_tmp].text == "'||c_choose||'"))  {';
1966 
1967    l_string := l_string ||'d4 = "+";';
1968    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
1969    l_string := l_string ||'           document.DefaultFormName.dim4.focus();';
1970    l_string := l_string ||'           return FALSE;';
1971    l_string := l_string ||'           }';
1972    l_string := l_string ||'        else';
1973    l_string := l_string ||'           var d4 =  document.DefaultFormName.dim4[d4_tmp].value;';
1974    l_string := l_string ||'        }';
1975    l_string := l_string ||'     else';
1976    l_string := l_string ||'        {d4 = "-";}';
1977 
1978    --l_string := l_string ||'     // For dimension5';
1979    l_string := l_string ||'     if (document.DefaultFormName.dim5_level_id.value != "") {';
1980    l_string := l_string ||'        var d5_tmp = document.DefaultFormName.dim5.selectedIndex;';
1981    l_string := l_string ||'        var d5_end = document.DefaultFormName.dim5.length;';
1982    l_string := l_string ||'        if ((document.DefaultFormName.dim5[d5_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim5[d5_tmp].text == "'||c_choose||'"))  {';
1983    l_string := l_string ||'           d5 = "+";';
1984    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
1985    l_string := l_string ||'           document.DefaultFormName.dim5.focus();';
1986    l_string := l_string ||'           return FALSE;';
1987    l_string := l_string ||'           }';
1988    l_string := l_string ||'        else';
1989    l_string := l_string ||'           var d5 =  document.DefaultFormName.dim5[d5_tmp].value;';
1990    l_string := l_string ||'        }';
1991    l_string := l_string ||'     else';
1992    l_string := l_string ||'        {d5 = "-";}';
1993 
1994    --l_string := l_string ||' // mdamle 01/15/2001 - Use Dim6 and Dim7';
1995    --l_string := l_string ||'     // For dimension6';
1996    l_string := l_string ||'     if (document.DefaultFormName.dim6_level_id.value != "") {';
1997    l_string := l_string ||'        var d6_tmp = document.DefaultFormName.dim6.selectedIndex;';
1998    l_string := l_string ||'        var d6_end = document.DefaultFormName.dim6.length;';
1999    l_string := l_string ||'        if ((document.DefaultFormName.dim6[d6_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim6[d6_tmp].text == "'||c_choose||'"))  {';
2000    l_string := l_string ||'           d6 = "+";';
2001    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
2002    l_string := l_string ||'           document.DefaultFormName.dim6.focus();';
2003    l_string := l_string ||'           return FALSE;';
2004    l_string := l_string ||'           }';
2005    l_string := l_string ||'        else';
2006    l_string := l_string ||'           var d6 =  document.DefaultFormName.dim6[d6_tmp].value;';
2007    l_string := l_string ||'        }';
2008    l_string := l_string ||'     else';
2009    l_string := l_string ||'        {d6 = "-";}';
2010 
2011    --l_string := l_string ||' // mdamle 01/15/2001 - Use Dim6 and Dim7';
2012    --l_string := l_string ||'     // For dimension7';
2013    l_string := l_string ||'     if (document.DefaultFormName.dim7_level_id.value != "") {';
2014    l_string := l_string ||'        var d7_tmp = document.DefaultFormName.dim7.selectedIndex;';
2015    l_string := l_string ||'        var d7_end = document.DefaultFormName.dim7.length;';
2016    l_string := l_string ||'        if ((document.DefaultFormName.dim7[d7_tmp].text == "'||l_blank||'") '||c_OR||' (document.DefaultFormName.dim7[d7_tmp].text == "'||c_choose||'"))  {';
2017    l_string := l_string ||'           d7 = "+";';
2018    l_string := l_string ||'           alert("'||l_choose_dim_value||'");';
2019    l_string := l_string ||'           document.DefaultFormName.dim7.focus();';
2020    l_string := l_string ||'           return FALSE;';
2021    l_string := l_string ||'           }';
2022    l_string := l_string ||'        else';
2023    l_string := l_string ||'           var d7 =  document.DefaultFormName.dim7[d7_tmp].value;';
2024    l_string := l_string ||'        }';
2025    l_string := l_string ||'     else';
2026    l_string := l_string ||'        {d7 = "-";}';
2027 
2028    --l_string := l_string ||'     // For Plan';
2029    l_string := l_string ||'      var plan_tmp = document.DefaultFormName.plan.selectedIndex;';
2030    l_string := l_string ||'      var plan     = document.DefaultFormName.plan[plan_tmp].value;';
2031 
2032    l_string := l_string ||'     var totext=document.DefaultFormName.label.value;';
2033    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "1")';
2034    l_string := l_string ||'  d1 = d0;';
2035    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "2")';
2036    l_string := l_string ||'  d2 = d0;';
2037    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "3")';
2038    l_string := l_string ||'  d3 = d0;';
2039    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "4")';
2040    l_string := l_string ||'  d4 = d0;';
2041    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "5")';
2042    l_string := l_string ||'  d5 = d0;';
2043    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "6")';
2044    l_string := l_string ||'  d6 = d0;';
2045    l_string := l_string ||'if (document.DefaultFormName.orgDimension.value == "7")';
2046    l_string := l_string ||'   d7 = d0;';
2047 
2048    --l_string := l_string ||'// mdamle 01/15/2001 - Add d6 and d7';
2049    l_string := l_string ||' var tovalue= ind + "*" + d0 + "*" + d1 + "*" + d2 + "*" + d3 + "*" + d4 + "*" + d5 + "*" + d6 + "*" + d7 + "*" + plan;';
2050    l_string := l_string ||'     var end=document.DefaultFormName.C.length;';
2051 
2052 
2053    l_string := l_string ||'   var duplicated_val = 0;';
2054    l_string := l_string ||'   var duplicated_txt = 0;';
2055    l_string := l_string ||'   if (end > 0) {';
2056    l_string := l_string ||'     if (document.DefaultFormName.C.options[end-1].value =="") {';
2057    l_string := l_string ||'       end = end - 1;';
2058    l_string := l_string ||'     }';
2059 
2060    l_string := l_string ||'     for (var i=0;i<end;i++){';
2061    l_string := l_string ||'     var cvar = document.DefaultFormName.C[i].value;';
2062 
2063    l_string := l_string ||'     if (tovalue == cvar.substr(0, cvar.length -2 )) {';
2064    l_string := l_string ||'       duplicated_val = 1;';
2065    l_string := l_string ||'     }';
2066    l_string := l_string ||'     if (totext == document.DefaultFormName.C[i].text) {';
2067    l_string := l_string ||'       duplicated_txt = 1;';
2068    l_string := l_string ||'     }';
2069    l_string := l_string ||'   }  ';
2070    l_string := l_string ||'   if (duplicated_val == 1) {';
2071    l_string := l_string ||'     alert("'||l_dup_combo||'");';
2072    l_string := l_string ||'   } else if (duplicated_txt == 1) {';
2073    l_string := l_string ||'     alert("'||l_dup_displabel||'");';
2074    l_string := l_string ||'   }';
2075 
2076    l_string := l_string ||' }';
2077    l_string := l_string ||' if ( (duplicated_val == 0) && (duplicated_txt == 0) ) {';
2078    l_string := l_string ||'   document.DefaultFormName.C.options[end] = new Option(totext,tovalue+"*Y");';
2079    l_string := l_string ||'   document.DefaultFormName.C.selectedIndex = end;';
2080    l_string := l_string ||' }';
2081 
2082 
2083    l_string := l_string ||'}';
2084    l_string := l_string ||'}';
2085 
2086 
2087    WF_NOTIFICATION.WriteToClob(l_str_object,l_string);
2088 
2089      -- Function to move selections upwards
2090      -- meastmon 06/25/2001 Fix bug#1835495.
2091    l_string := 'function upTo() {';
2092    l_string := l_string ||'       var temp = document.DefaultFormName.C.selectedIndex;';
2093    l_string := l_string ||'       if (temp < 0)';
2094    l_string := l_string ||'          selectTo();';
2095    l_string := l_string ||'       else {';
2096    l_string := l_string ||'         if (temp > 0) {';
2097    l_string := l_string ||'           var text = document.DefaultFormName.C[temp-1].text;';
2098    l_string := l_string ||'           var val = document.DefaultFormName.C.options[temp-1].value;';
2099    l_string := l_string ||'           var totext = document.DefaultFormName.C[temp].text;';
2100    l_string := l_string ||'           var toval = document.DefaultFormName.C.options[temp].value;';
2101 
2102    l_string := l_string ||'           document.DefaultFormName.C[temp-1].text = totext;';
2103    l_string := l_string ||'           document.DefaultFormName.C.options[temp-1].value = toval;';
2104    l_string := l_string ||'           document.DefaultFormName.C[temp].text = text;';
2105    l_string := l_string ||'           document.DefaultFormName.C.options[temp].value = val;';
2106    l_string := l_string ||'           document.DefaultFormName.C.selectedIndex = temp-1;';
2107    l_string := l_string ||'         }';
2108    l_string := l_string ||'       }';
2109 
2110    l_string := l_string ||'     }';
2111 
2112 
2113    -- Function to move selections downwards
2114    -- meastmon 06/25/2001 Fix bug#1835495.
2115    l_string := l_string ||'function downTo() {';
2116    l_string := l_string ||'     var temp = document.DefaultFormName.C.selectedIndex;';
2117    l_string := l_string ||'     var end = document.DefaultFormName.C.length;';
2118 
2119    l_string := l_string ||'     if (temp < 0)';
2120    l_string := l_string ||'        selectTo();';
2121    l_string := l_string ||'     else {';
2122    l_string := l_string ||'       if (document.DefaultFormName.C.options[end-1].value == "")';
2123    l_string := l_string ||'         end = end - 1;';
2124 
2125    l_string := l_string ||'       if (temp < (end-1)) {';
2126    l_string := l_string ||'         var text = document.DefaultFormName.C[temp+1].text;';
2127    l_string := l_string ||'         var val = document.DefaultFormName.C.options[temp+1].value;';
2128    l_string := l_string ||'         var totext = document.DefaultFormName.C[temp].text;';
2129    l_string := l_string ||'         var toval = document.DefaultFormName.C.options[temp].value;';
2130 
2131    l_string := l_string ||'         document.DefaultFormName.C[temp+1].text = totext;';
2132    l_string := l_string ||'         document.DefaultFormName.C.options[temp+1].value = toval;';
2133    l_string := l_string ||'         document.DefaultFormName.C[temp].text = text;';
2134    l_string := l_string ||'         document.DefaultFormName.C.options[temp].value = val;';
2135    l_string := l_string ||'         document.DefaultFormName.C.selectedIndex = temp+1;';
2136    l_string := l_string ||'       }';
2137    l_string := l_string ||'     }';
2138 
2139    l_string := l_string ||'   }';
2140 
2141 
2142    l_string := l_string ||'function deleteTo() {';
2143    l_string := l_string ||'  var temp=document.DefaultFormName.C.selectedIndex;';
2144    l_string := l_string ||'   if (temp < 0)';
2145    l_string := l_string ||'     selectTo();';
2146    l_string := l_string ||'   else {';
2147    l_string := l_string ||'     if (confirm("'||BIS_UTILITIES_PVT.getPrompt('BIS_DELETE')||'" + " " + document.DefaultFormName.C.options[temp].text + "?"))';
2148    l_string := l_string ||'     document.DefaultFormName.C.options[temp] = null;';
2149    l_string := l_string ||'     };';
2150    l_string := l_string ||'  }';
2151 
2152    l_string := l_string ||'function open_new_browser(url,x,y){';
2153    l_string := l_string ||'    var attributes = "resizable=yes,scrollbars=yes,toolbar=no,width="+x+",height="+ y;';
2154    l_string := l_string ||'    var new_browser = window.open(url, "new_browser", attributes);';
2155    l_string := l_string ||'    if (new_browser != null) {';
2156    l_string := l_string ||'        if (new_browser.opener == null)';
2157    l_string := l_string ||'            new_browser.opener = self;';
2158    l_string := l_string ||'        window.name = ''favorite'';';
2159    l_string := l_string ||'        new_browser.location.href = url;';
2160    l_string := l_string ||'        }';
2161    l_string := l_string ||'    }';
2162 
2163    -- Function to Edit the Label
2164    -- meastmon 09/25/2001 Fix bug#1993005 There can be spaces in the dim level value id.
2165    -- We need to use escape() to encode the U parameter.
2166    l_string := l_string ||'function editTo() {';
2167    l_string := l_string ||'   var temp=document.DefaultFormName.C.selectedIndex;';
2168    l_string := l_string ||'   if (temp<0) {';
2169    l_string := l_string ||'      alert("'||l_select_displabel||'");';
2170    l_string := l_string ||'     }';
2171    l_string := l_string ||'   else {';
2172    l_string := l_string ||'    var cval = document.DefaultFormName.C[temp].value;';
2173    l_string := l_string ||' var c_access = cval.substr(cval.length-1, 1);';
2174    l_string := l_string ||' if (c_access == "N") {';
2175    l_string := l_string ||'  alert("'||l_un_auth||'.");';
2176    l_string := l_string ||' } else {';
2177 
2178    l_string := l_string ||' var url = getEditURL();';
2179    l_string := l_string ||' var today = new Date();';
2180    l_string := l_string ||' var expire = new Date();';
2181    l_string := l_string ||' expire.setTime(today.getTime() + 3600000*24);';
2182    l_string := l_string ||' document.cookie = "U="+escape(cval)+ ";expires="+expire.toGMTString();';
2183    l_string := l_string ||' document.cookie = "Z="+'||Z||'+ ";expires="+expire.toGMTString();';
2184 
2185    l_string := l_string ||' open_new_browser(url,600,450);';
2186    l_string := l_string ||'    }';
2187    l_string := l_string ||'  }';
2188    l_string := l_string ||'  }';
2189 
2190    --  Function to save the selected labels
2191    l_string := l_string ||' function savedimensions() {';
2192    l_string := l_string ||'   var end=document.DefaultFormName.C.length;';
2193 
2194    l_string := l_string ||'   for (var i=0; i<end; i++) { ';
2195    l_string := l_string ||'     if (document.DefaultFormName.C.options[i].value != "") {';
2196    l_string := l_string ||'     document.DefaultFormName.OK.value = "Y";';
2197 
2198    l_string := l_string ||' var sval = document.DefaultFormName.C.options[i].value;';
2199    l_string := l_string ||' var tval = sval.substr(0, sval.length-2);';
2200    l_string := l_string ||' document.DefaultFormName.p_displaylabels_tbl[i].value= tval + "*" + document.DefaultFormName.C.options[i].text;';
2201    l_string := l_string ||' }';
2202    l_string := l_string ||' }';
2203    l_string := l_string ||'     document.DefaultFormName.submit();';
2204    l_string := l_string ||'   }';
2205 
2206    l_string := l_string ||' function doCancel() {';
2207    l_string := l_string ||' document.DefaultFormName.DoCancel.value = "Y";';
2208    l_string := l_string ||' document.DefaultFormName.submit();';
2209    l_string := l_string ||' }';
2210 
2211    -- Function to set the indicator level and recreate the page
2212    l_string := l_string ||'function setIndlevel() {';
2213    l_string := l_string ||'   var end=document.DefaultFormName.C.length;';
2214    l_string := l_string ||'   for (var i=0;i < end;i++)';
2215    l_string := l_string ||'      if (document.DefaultFormName.C.options[i].value != "")';
2216    l_string := l_string ||'      document.DefaultFormName.p_displaylabels_tbl[i].value = document.DefaultFormName.C.options[i].value + "*" + document.DefaultFormName.C.options[i].text;';
2217    l_string := l_string ||'   var tmp = document.DefaultFormName.p_indlevel.selectedIndex;';
2218    l_string := l_string ||'   document.DefaultFormName.p_ind_level_id.value = document.DefaultFormName.p_indlevel[tmp].value;';
2219 
2220    l_string := l_string ||'   document.DefaultFormName.DoIndSubmit.value = "Y";';
2221    l_string := l_string ||'   document.DefaultFormName.submit();';
2222    l_string := l_string ||' }';
2223 
2224      -- Get string to clear dim1-5 in case they are related to the org
2225      --
2226    l_elements(1) := 'plan';
2227    l_elements(2) := 'dim0';
2228    l_elements(3) := 'label';
2229    l_elements(4) := 'C';
2230 
2231    clearSelect
2232    ( p_formName     => 'dimensions'
2233    , p_elementTable => l_elements
2234    , x_clearString  => l_clear
2235    );
2236 
2237 
2238 
2239    for i in p_selections_tbl.FIRST .. p_selections_tbl.COUNT loop
2240      if (p_selections_tbl(i) is NULL) then
2241        EXIT;
2242      end if;
2243      l_loc := instr(p_selections_tbl(i),'*',1,1);
2244      l_value := substr (p_selections_tbl(i),1,l_loc - 1);
2245      l_text := substr (p_selections_tbl(i),l_loc + 1);
2246      if v_ind_level_id is NULL then
2247         v_ind_level_id := TO_NUMBER(l_value);
2248      end if;
2249      for c_recs in bisfv_target_levels_cur(v_ind_level_id) loop
2250        l_dim1_lbl := c_recs.Dimension1_Level_Name;
2251        l_dim2_lbl := c_recs.Dimension2_Level_Name;
2252        l_dim3_lbl := c_recs.Dimension3_Level_Name;
2253        l_dim4_lbl := c_recs.Dimension4_Level_Name;
2254        l_dim5_lbl := c_recs.Dimension5_Level_Name;
2255        l_dim6_lbl := c_recs.Dimension6_Level_Name;
2256        l_dim7_lbl := c_recs.Dimension7_Level_Name;
2257        l_Org_Seq_Num := getOrgSeqNum(v_ind_level_id);
2258 
2259        if l_Org_Seq_Num = 1 then
2260              l_dim0_lbl := c_recs.Dimension1_Level_Name;
2261        elsif l_Org_Seq_Num = 2 then
2262              l_dim0_lbl := c_recs.Dimension2_Level_Name;
2263        elsif l_Org_Seq_Num = 3 then
2264                l_dim0_lbl := c_recs.Dimension3_Level_Name;
2265        elsif l_Org_Seq_Num = 4 then
2266                l_dim0_lbl := c_recs.Dimension4_Level_Name;
2267        elsif l_Org_Seq_Num = 5 then
2268                l_dim0_lbl := c_recs.Dimension5_Level_Name;
2269        elsif l_Org_Seq_Num = 6 then
2270                l_dim0_lbl := c_recs.Dimension6_Level_Name;
2271        elsif l_Org_Seq_Num = 7 then
2272                l_dim0_lbl := c_recs.Dimension7_Level_Name;
2273        end if;
2274      end loop;
2275    end loop;
2276 
2277 
2278    l_string := l_string ||'function setdim0() {';
2279    l_string := l_string ||'  var end = document.DefaultFormName.dim0.length;';
2280    l_string := l_string ||'  var temp = document.DefaultFormName.dim0.selectedIndex;';
2281    l_string := l_string ||'  if (document.DefaultFormName.dim0[temp].text == "'||c_choose||'") {';
2282    l_string := l_string ||'     var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2283    l_string := l_string ||'     var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2284    l_string := l_string ||'     var dim_lvl_id = document.DefaultFormName.dim0_level_id.value;';
2285    l_string := l_string ||'     var c_qry = "'||l_user_id||c_asterisk||'" + ind + "'||c_asterisk||'" + dim_lvl_id;';
2286    l_string := l_string ||'     var c_jsfuncname = "getdim0";';
2287    l_string := l_string ||'     document.DefaultFormName.dim0.selectedIndex = 0;';
2288    --l_string := l_string ||'//modified for bug#2318543';
2289    l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim0_lbl)||'");';
2290    l_string := l_string ||'     }';
2291    l_string := l_string ||' }';
2292 
2293    SetSetOfBookVar
2294    ( p_user_id     => l_user_id
2295    , p_formName    => 'DefaultFormName'
2296    , p_index       => 'dim0_index'
2297    , x_sobString   => l_sobString
2298    );
2299 
2300    l_string := l_string ||'function setdim1() {';
2301    --l_string := l_string ||'// alert("setdim1");';
2302    l_string := l_string ||'  var end = document.DefaultFormName.dim1.length;';
2303    l_string := l_string ||'  var temp = document.DefaultFormName.dim1.selectedIndex;';
2304    l_string := l_string ||'  if (document.DefaultFormName.dim1[temp].text == "'||c_choose||'") {';
2305    l_string := l_string ||'     var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2306    l_string := l_string ||'     var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2307    l_string := l_string ||'     var dim_lvl_id = document.DefaultFormName.dim1_level_id.value;';
2308 
2309    --l_string := l_string ||'// mdamle 01/15/2001 - Moved conditional code into l_sobString';
2310    l_string := l_string ||'      '||l_sobString||'';
2311 
2312    l_string := l_string ||'      var c_jsfuncname = "getdim1";';
2313    l_string := l_string ||'      document.DefaultFormName.dim1.selectedIndex = 0;';
2314 
2315    --l_string := l_string ||'    //modified for bug#2318543';
2316    l_string := l_string ||'      getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim1_lbl)||'");';
2317    l_string := l_string ||'      }';
2318    l_string := l_string ||'  }';
2319    l_string := l_string ||'function setdim2() {';
2320    --l_string := l_string ||'// alert("setdim2");';
2321    l_string := l_string ||'   var end = document.DefaultFormName.dim2.length;';
2322    l_string := l_string ||'   var temp = document.DefaultFormName.dim2.selectedIndex;';
2323    l_string := l_string ||'   if (document.DefaultFormName.dim2[temp].text == "'||c_choose||'") {';
2324    l_string := l_string ||'      var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2325    l_string := l_string ||'      var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2326    l_string := l_string ||'      var dim_lvl_id = document.DefaultFormName.dim2_level_id.value;';
2327 
2328    --l_string := l_string ||'// mdamle 01/15/2001 - Moved conditional code into l_sobString';
2329    l_string := l_string ||'      '||l_sobString||'';
2330 
2331    l_string := l_string ||'      var c_jsfuncname = "getdim2";';
2332    l_string := l_string ||'      document.DefaultFormName.dim2.selectedIndex = 0;';
2333    l_string := l_string ||'      getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim2_lbl)||'");';
2334    l_string := l_string ||'      }';
2335    l_string := l_string ||'  }';
2336 
2337 
2338 
2339    l_string := l_string ||'function setdim3() {';
2340    --l_string := l_string ||'// alert("setdim3");';
2341    l_string := l_string ||'   var end = document.DefaultFormName.dim3.length;';
2342    l_string := l_string ||'   var temp = document.DefaultFormName.dim3.selectedIndex;';
2343    l_string := l_string ||'   if (document.DefaultFormName.dim3[temp].text == "'||c_choose||'") {';
2344    l_string := l_string ||'      var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2345    l_string := l_string ||'      var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2346    l_string := l_string ||'      var dim_lvl_id = document.DefaultFormName.dim3_level_id.value;';
2347 
2348    --l_string := l_string ||'// mdamle 01/15/2001 - Moved conditional code into l_sobString';
2349    l_string := l_string ||'      '||l_sobString||'';
2350 
2351    l_string := l_string ||'      var c_jsfuncname = "getdim3";';
2352    l_string := l_string ||'      document.DefaultFormName.dim3.selectedIndex = 0;';
2353    l_string := l_string ||'      getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim3_lbl)||'");';
2354    l_string := l_string ||'      }';
2355    l_string := l_string ||'  }';
2356 
2357 
2358 
2359    l_string := l_string ||'function setdim4() {';
2360    --l_string := l_string ||'// alert("setdim4");';
2361    l_string := l_string ||'   var end = document.DefaultFormName.dim4.length;';
2362    l_string := l_string ||'   var temp = document.DefaultFormName.dim4.selectedIndex;';
2363    l_string := l_string ||'   if (document.DefaultFormName.dim4[temp].text == "'||c_choose||'") {';
2364    l_string := l_string ||'      var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2365    l_string := l_string ||'      var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2366    l_string := l_string ||'      var dim_lvl_id = document.DefaultFormName.dim4_level_id.value;';
2367 
2368    --l_string := l_string ||'// mdamle 01/15/2001 - Moved conditional code into l_sobString';
2369    l_string := l_string ||'      '||l_sobString||'';
2370 
2371    l_string := l_string ||'      var c_jsfuncname = "getdim4";';
2372    l_string := l_string ||'      document.DefaultFormName.dim4.selectedIndex = 0;';
2373    l_string := l_string ||'      getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim4_lbl)||'");';
2374    l_string := l_string ||'      }';
2375    l_string := l_string ||'  }';
2376 
2377    WF_NOTIFICATION.WriteToClob(l_str_object,l_string);
2378 
2379 
2380 
2381    l_string1 := '  function setdim5() {';
2382    --l_string1 := l_string1 ||'// alert("setdim5");';
2383    l_string1 := l_string1 ||'    var end = document.DefaultFormName.dim5.length;';
2384    l_string1 := l_string1 ||'    var temp = document.DefaultFormName.dim5.selectedIndex;';
2385    l_string1 := l_string1 ||'    if (document.DefaultFormName.dim5[temp].text == "'||c_choose||'") {';
2386    l_string1 := l_string1 ||'       var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2387    l_string1 := l_string1 ||'       var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2388    l_string1 := l_string1 ||'       var dim_lvl_id = document.DefaultFormName.dim5_level_id.value;';
2389 
2390    --l_string1 := l_string1 ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
2391    l_string1 := l_string1 ||'       '||l_sobString||'';
2392 
2393    l_string1 := l_string1 ||'       var c_jsfuncname = "getdim5";';
2394    l_string1 := l_string1 ||'       document.DefaultFormName.dim5.selectedIndex = 0;';
2395    l_string1 := l_string1 ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim5_lbl)||'");';
2396    l_string1 := l_string1 ||'       }';
2397    l_string1 := l_string1 ||'   }';
2398 
2399    -- mdamle 01/15/2001 - Use Dim6 and Dim7
2400    l_string1 := l_string1 ||'function setdim6() {';
2401    --l_string1 := l_string1 ||'// alert("setdim6");';
2402    l_string1 := l_string1 ||'         var end = document.DefaultFormName.dim6.length;';
2403    l_string1 := l_string1 ||'    var temp = document.DefaultFormName.dim6.selectedIndex;';
2404    l_string1 := l_string1 ||'    if (document.DefaultFormName.dim6[temp].text == "'||c_choose||'") {';
2405    l_string1 := l_string1 ||'       var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2406    l_string1 := l_string1 ||'       var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2407    l_string1 := l_string1 ||'       var dim_lvl_id = document.DefaultFormName.dim6_level_id.value;';
2408 
2409    --l_string1 := l_string1 ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
2410    l_string1 := l_string1 ||'       '||l_sobString||'';
2411 
2412    l_string1 := l_string1 ||'       var c_jsfuncname = "getdim6";';
2413    l_string1 := l_string1 ||'       document.DefaultFormName.dim6.selectedIndex = 0;';
2414    l_string1 := l_string1 ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim6_lbl)||'");';
2415    l_string1 := l_string1 ||'       }';
2416    l_string1 := l_string1 ||'   }';
2417 
2418    l_string1 := l_string1 ||'function setdim7() {';
2419    --l_string1 := l_string1 ||'// alert("setdim7");';
2420    l_string1 := l_string1 ||'   var end = document.DefaultFormName.dim7.length;';
2421    l_string1 := l_string1 ||'    var temp = document.DefaultFormName.dim7.selectedIndex;';
2422    l_string1 := l_string1 ||'    if (document.DefaultFormName.dim7[temp].text == "'||c_choose||'") {';
2423    l_string1 := l_string1 ||'       var ind_tmp  = document.DefaultFormName.p_indlevel.selectedIndex;';
2424    l_string1 := l_string1 ||'       var ind    =   document.DefaultFormName.p_indlevel[ind_tmp].value;';
2425    l_string1 := l_string1 ||'       var dim_lvl_id = document.DefaultFormName.dim7_level_id.value;';
2426 
2427    --l_string1 := l_string1 ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
2428    l_string1 := l_string1 ||'       '||l_sobString||'';
2429 
2430    l_string1 := l_string1 ||'       var c_jsfuncname = "getdim7";';
2431    l_string1 := l_string1 ||'       document.DefaultFormName.dim7.selectedIndex = 0;';
2432    l_string1 := l_string1 ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||',"'||bis_utilities_pub.encode(l_dim7_lbl)||'");';
2433    l_string1 := l_string1 ||'       }';
2434    l_string1 := l_string1 ||'   }';
2435 
2436 
2437    l_string1 := l_string1 ||'</SCRIPT>';
2438    l_string1 := l_string1 ||'<!-- End of Javascript -->';
2439 
2440 
2441    -- ***************
2442    l_string1 := l_string1 ||'<!-- Paint the dummy form to grab the display labels -->';
2443     -- Dummy form to send selected labels to a procedure that inserts the
2444     -- display labels and dimlvl valss into the  BIS_USER_IND_SELECTIONS table
2445 
2446    l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="W" VALUE="">';
2447 
2448    l_string1 := l_string1 ||'<SCRIPT LANGUAGE="Javascript">document.DefaultFormName.Z.value='||Z||';';
2449    l_string1 := l_string1 ||'</SCRIPT>';
2450    l_string1 := l_string1 ||'<SCRIPT LANGUAGE="Javascript">document.DefaultFormName.p_back_url.value='''||p_back_url||''';';
2451    l_string1 := l_string1 ||'</SCRIPT>';
2452    l_string1 := l_string1 ||'<SCRIPT LANGUAGE="Javascript">document.DefaultFormName.p_reference_path.value='''||p_reference_path||''';';
2453    l_string1 := l_string1 ||'</SCRIPT>';
2454 
2455    l_string1 := l_string1 ||'<!-- Close the dummy form to grab the display labels -->';
2456 
2457    -- **************
2458 
2459    -- *************
2460    l_string1 := l_string1 ||'<!-- Begin Layout of boxes -->';
2461    l_string1 := l_string1 ||'<CENTER>';
2462    l_string1 := l_string1 ||'<!-- Begin Main table  -->';
2463     -- main
2464    l_string1 := l_string1 ||'<table width="100%" border=0 cellspacing=0 cellpadding=0>';
2465    l_string1 := l_string1 ||'<!-- Row 1 Main table  -->';
2466    l_string1 := l_string1 ||'<TR>';
2467    l_string1 := l_string1 ||'<td align="CENTER">';
2468    l_string1 := l_string1 ||'<!-- Begin Cell table to center all items except the ok-cancel buttons  -->';
2469    l_string1 := l_string1 ||'<table width="75%" border=0 cellspacing=0 cellpadding=0>';
2470    l_string1 := l_string1 ||'<!-- Begin Row 1 of cell table -->';
2471     -- Row one of Cell table
2472    l_string1 := l_string1 ||'<TR>';
2473    l_string1 := l_string1 ||'<td align="LEFT" valign="TOP">';
2474    l_string1 := l_string1 ||'<!-- Open table for left set of boxes -->';
2475      -- target level and dimensions boxes table
2476    l_string1 := l_string1 ||'<table border=0 cellspacing=0 cellpadding=0>';
2477    l_string1 := l_string1 ||'<TR>';
2478 
2479    IF(l_swan_enabled)THEN
2480     l_append_string := '<TD ALIGN="LEFT" class="x49">';
2481    ELSE
2482     l_append_string := '<TD ALIGN="LEFT">';
2483    END IF;
2484 
2485 
2486    l_string1 := l_string1 || l_append_string ||bis_utilities_pvt.escape_html(c_tarlevel)||'</TD>';
2487    l_string1 := l_string1 ||'</TR>';
2488    l_string1 := l_string1 ||'<!-- Row 2 Open for left side table -->';
2489    l_string1 := l_string1 ||'<TR>';
2490    l_string1 := l_string1 ||'<td align="LEFT" valign="TOP">';
2491      -- **********
2492 
2493 
2494      -- **********
2495      -- Open a form for indicator levels
2496 
2497    l_string1 := l_string1 ||'<!-- Open form to grab target levels for onchange event of tar level poplist -->';
2498 
2499       -- Create hidden values to grab selected labels into
2500    for i in 1 .. c_counter LOOP
2501      l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="p_displaylabels_tbl1" VALUE="">';
2502    end loop;
2503 
2504 
2505    l_string1 := l_string1 ||'<SCRIPT LANGUAGE="Javascript">';
2506    for i in p_selections_tbl.FIRST .. p_selections_tbl.COUNT loop
2507      if (p_selections_tbl(i) is NULL) then
2508        EXIT;
2509      end if;
2510      l_string1 := l_string1 ||'document.DefaultFormName.p_selections_tbl['||i||'-1].value='''||p_selections_tbl(i)||''';';
2511    end loop;
2512    l_string1 := l_string1 ||'</SCRIPT>';
2513 
2514    l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="Z1" VALUE="'||Z||'">';
2515    l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="p_back_url1" VALUE='||p_back_url||'>';
2516    l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="p_reference_path1" VALUE='||p_reference_path||'>';
2517    l_string1 := l_string1 ||'<SELECT NAME="p_indlevel" onChange="setIndlevel()">';
2518 
2519    for i in p_selections_tbl.FIRST .. p_selections_tbl.COUNT loop
2520 
2521      if (p_selections_tbl(i) is NULL) then
2522         EXIT;
2523      end if;
2524      l_loc := instr(p_selections_tbl(i),'*',1,1);
2525      l_value := substr (p_selections_tbl(i),1,l_loc - 1);
2526      l_text := substr (p_selections_tbl(i),l_loc + 1);
2527      if v_ind_level_id is NULL then
2528        v_ind_level_id := TO_NUMBER(l_value);
2529      end if;
2530 
2531      if l_value = TO_CHAR(v_ind_level_id) then
2532        l_string1 := l_string1 ||'<OPTION SELECTED VALUE='||bis_utilities_pvt.escape_html_input(l_value)||'>'||bis_utilities_pvt.escape_html_input(l_text);
2533      else
2534        l_string1 := l_string1 ||'<OPTION VALUE='||bis_utilities_pvt.escape_html_input(l_value)||'>'||bis_utilities_pvt.escape_html_input(l_text);
2535      end if;
2536    end loop;
2537    l_string1 := l_string1 ||'</SELECT>';
2538 
2539        -- Form close for indicator levels selection
2540 
2541    l_string1 := l_string1 ||'<!-- Close form for target levels poplist -->';
2542    l_string1 := l_string1 ||'</td>';
2543    l_string1 := l_string1 ||'</TR>';
2544    l_string1 := l_string1 ||'<TR>';
2545 
2546    l_string1 := l_string1 ||l_append_string||bis_utilities_pvt.escape_html(c_dim_and_plan)||'</TD>';
2547    l_string1 := l_string1 ||'</TR>';
2548    l_string1 := l_string1 ||'<!-- Open row for embedded dimensions boxes table -->';
2549    l_string1 := l_string1 ||'<TR>';
2550    l_string1 := l_string1 ||'<td align="LEFT" valign="TOP">';
2551 
2552    l_string1 := l_string1 ||'<!-- open table containing wireframe -->';
2553    -- target level and dimensions boxes table
2554    l_string1 := l_string1 ||'<table border=0 cellspacing=0 cellpadding=0>';
2555    l_string1 := l_string1 ||'<TR>';
2556    l_string1 := l_string1 ||'<td height=1 bgcolor=#000000 colspan=5>'||
2557           '<IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
2558    l_string1 := l_string1 ||'</TR>';
2559    l_string1 := l_string1 ||'<TR>';
2560    l_string1 := l_string1 ||'<!-- Begin left edge of wireframe and left separator -->';
2561    l_string1 := l_string1 ||'<td width=1 class="C_WIRE_FRAME_COLOR">'||
2562          '<IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
2563    l_string1 := l_string1 ||'<td width=5></td>';
2564 
2565 
2566     -- ************************************
2567     -- Print out NOCOPY the main form
2568 
2569    l_string1 := l_string1 ||'<!-- Begin main form to display and grab the labels -->';
2570 
2571     -- Grab the individual dim_level_values chosen previously for
2572     -- this target_level_id, to populate respective dimension level poplists
2573    if (l_labels_tbl.COUNT <> 0) THEN
2574        l_cnt := 1;
2575        for i in l_labels_tbl.FIRST .. l_labels_tbl.COUNT LOOP
2576          if (l_labels_tbl(i).target_level_id = v_ind_level_id) THEN
2577        -- mdamle 01/15/2001 - Use Dim6 and Dim7
2578 
2579            --IF (l_labels_tbl(i).org_level_value_ID is NOT NULL) THEN
2580            --  l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).org_level_value_ID;
2581            --  l_orgs_tbl(l_cnt).name := l_labels_tbl(i).org_level_value_name;
2582            --END IF;
2583 
2584            -- mdamle 01/15/2001 - Use Dim6 and Dim7
2585            -- Get the Dimension No. for Org
2586        l_Org_Seq_Num := getOrgSeqNum(v_ind_level_id);
2587 
2588            IF (l_labels_tbl(i).dim1_level_value_id is NOT NULL) THEN
2589             l_dim1_tbl(l_cnt).id   := l_labels_tbl(i).dim1_level_value_id;
2590             l_dim1_tbl(l_cnt).name := l_labels_tbl(i).dim1_level_value_name;
2591       -- mdamle 01/15/2001 Use Dim6 and Dim7
2592       if l_Org_Seq_Num = 1 then
2593              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim1_level_value_id;
2594              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim1_level_value_name;
2595       end if;
2596            END IF;
2597            IF (l_labels_tbl(i).dim2_level_value_id is NOT NULL) THEN
2598             l_dim2_tbl(l_cnt).id   := l_labels_tbl(i).dim2_level_value_id;
2599             l_dim2_tbl(l_cnt).name := l_labels_tbl(i).dim2_level_value_name;
2600       -- mdamle 01/15/2001 Use Dim6 and Dim7
2601       if l_Org_Seq_Num = 2 then
2602              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim2_level_value_id;
2603              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim2_level_value_name;
2604       end if;
2605            END IF;
2606            IF (l_labels_tbl(i).dim3_level_value_id is NOT NULL) THEN
2607             l_dim3_tbl(l_cnt).id   := l_labels_tbl(i).dim3_level_value_id;
2608             l_dim3_tbl(l_cnt).name := l_labels_tbl(i).dim3_level_value_name;
2609       -- mdamle 01/15/2001 Use Dim6 and Dim7
2610       if l_Org_Seq_Num = 3 then
2611              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim3_level_value_id;
2612              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim3_level_value_name;
2613       end if;
2614            END IF;
2615            IF (l_labels_tbl(i).dim4_level_value_id is NOT NULL) THEN
2616             l_dim4_tbl(l_cnt).id   := l_labels_tbl(i).dim4_level_value_id;
2617             l_dim4_tbl(l_cnt).name := l_labels_tbl(i).dim4_level_value_name;
2618       -- mdamle 01/15/2001 Use Dim6 and Dim7
2619       if l_Org_Seq_Num = 4 then
2620              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim4_level_value_id;
2621              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim4_level_value_name;
2622       end if;
2623            END IF;
2624            IF (l_labels_tbl(i).dim5_level_value_id is NOT NULL) THEN
2625             l_dim5_tbl(l_cnt).id   := l_labels_tbl(i).dim5_level_value_id;
2626             l_dim5_tbl(l_cnt).name := l_labels_tbl(i).dim5_level_value_name;
2627       -- mdamle 01/15/2001 Use Dim6 and Dim7
2628       if l_Org_Seq_Num = 5 then
2629              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim5_level_value_id;
2630              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim5_level_value_name;
2631       end if;
2632            END IF;
2633          -- mdamle 01/15/2001 - Use Dim6 and Dim7
2634            IF (l_labels_tbl(i).dim6_level_value_id is NOT NULL) THEN
2635             l_dim6_tbl(l_cnt).id   := l_labels_tbl(i).dim6_level_value_id;
2636             l_dim6_tbl(l_cnt).name := l_labels_tbl(i).dim6_level_value_name;
2637       -- mdamle 01/15/2001 Use Dim6 and Dim7
2638       if l_Org_Seq_Num = 6 then
2639              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim6_level_value_id;
2640              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim6_level_value_name;
2641       end if;
2642            END IF;
2643        IF (l_labels_tbl(i).dim7_level_value_id is NOT NULL) THEN
2644             l_dim7_tbl(l_cnt).id   := l_labels_tbl(i).dim7_level_value_id;
2645             l_dim7_tbl(l_cnt).name := l_labels_tbl(i).dim7_level_value_name;
2646       -- mdamle 01/15/2001 Use Dim6 and Dim7
2647       if l_Org_Seq_Num = 7 then
2648              l_orgs_tbl(l_cnt).id   := l_labels_tbl(i).dim7_level_value_id;
2649              l_orgs_tbl(l_cnt).name := l_labels_tbl(i).dim7_level_value_name;
2650       end if;
2651            END IF;
2652 
2653        l_cnt := l_cnt + 1;
2654          END IF;
2655        END LOOP;
2656     END IF; -- if l_labels_tbl is not empty
2657 
2658    --Begin cell containing the embedded table of poplists
2659    l_string1 := l_string1 ||'<td align="CENTER">';
2660 
2661    l_string1 := l_string1 ||'<!-- Begin embedded table inside the wireframe containing the poplists -->';
2662     -- table containing the dimension_level names,boxes
2663 
2664    WF_NOTIFICATION.WriteToClob(l_str_object,l_string1);
2665 
2666    l_string1 := '<TABLE >';
2667 
2668 
2669 
2670     for c_recs in bisfv_target_levels_cur(v_ind_level_id) loop
2671 
2672      -- *************************************************************
2673      -- Start painting the dimension levels poplists
2674      -- If no dimension level for this ind level, put a hidden value
2675      -- to user later
2676 
2677       -- ******************************
2678       -- Dimension0 for Organization
2679 
2680       -- meastmon 05/11/2001
2681       l_Time_Seq_Num := getTimeSeqNum(v_ind_level_id);
2682       l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="timeDimension" VALUE='||l_Time_Seq_Num||'>';
2683 
2684       -- mdamle 01/15/2001 - Use Dim6 and Dim7
2685       -- Get the Dimension No. for Org
2686       l_Org_Seq_Num := getOrgSeqNum(v_ind_level_id);
2687       l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="orgDimension" VALUE='||l_Org_Seq_Num||'>';
2688 
2689     -- mdamle 01/15/2001 - Use Dim6 and Dim7
2690     if l_Org_Seq_Num = 1 then
2691        l_Org_Level_ID := c_recs.Dimension1_level_id;
2692      l_Org_Level_Short_Name := c_recs.Dimension1_level_Short_name;
2693      l_Org_Level_Name := c_recs.Dimension1_level_Name;
2694     end if;
2695     if l_Org_Seq_Num = 2 then
2696        l_Org_Level_ID := c_recs.Dimension2_level_id;
2697      l_Org_Level_Short_Name := c_recs.Dimension2_level_Short_name;
2698      l_Org_Level_Name := c_recs.Dimension2_level_Name;
2699     end if;
2700     if l_Org_Seq_Num = 3 then
2701        l_Org_Level_ID := c_recs.Dimension3_level_id;
2702      l_Org_Level_Short_Name := c_recs.Dimension3_level_Short_name;
2703      l_Org_Level_Name := c_recs.Dimension3_level_Name;
2704     end if;
2705     if l_Org_Seq_Num = 4 then
2706        l_Org_Level_ID := c_recs.Dimension4_level_id;
2707      l_Org_Level_Short_Name := c_recs.Dimension4_level_Short_name;
2708      l_Org_Level_Name := c_recs.Dimension4_level_Name;
2709     end if;
2710     if l_Org_Seq_Num = 5 then
2711        l_Org_Level_ID := c_recs.Dimension5_level_id;
2712      l_Org_Level_Short_Name := c_recs.Dimension5_level_Short_name;
2713      l_Org_Level_Name := c_recs.Dimension5_level_Name;
2714     end if;
2715     if l_Org_Seq_Num = 6 then
2716        l_Org_Level_ID := c_recs.Dimension6_level_id;
2717      l_Org_Level_Short_Name := c_recs.Dimension6_level_Short_name;
2718      l_Org_Level_Name := c_recs.Dimension6_level_Name;
2719     end if;
2720     if l_Org_Seq_Num = 7 then
2721        l_Org_Level_ID := c_recs.Dimension7_level_id;
2722      l_Org_Level_Short_Name := c_recs.Dimension7_level_Short_name;
2723      l_Org_Level_Name := c_recs.Dimension7_level_Name;
2724     end if;
2725 
2726       if (l_Org_Level_ID is NULL) then
2727         l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim0_level_id" VALUE='||l_blank||'>';
2728        -- mdamle 01/15/2001
2729         l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="FALSE">';
2730       elsif (l_Org_Level_Short_Name='TOTAL_ORGANIZATIONS') then
2731         l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim0_level_id" VALUE='||l_Org_Level_ID||'>';
2732         l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="FALSE">';
2733         l_string1 := l_string1 ||'<TR>';
2734         l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(l_Org_Level_Name)||'</TD>';
2735         l_string1 := l_string1 ||'<td align="left">';
2736         l_string1 := l_string1 ||'<SELECT NAME="dim0">';
2737         l_string1 := l_string1 ||'<OPTION SELECTED VALUE="-1"'||'>'||bis_utilities_pvt.escape_html_input(LOWER(l_Org_Level_Short_Name));
2738         l_string1 := l_string1 ||'</SELECT>';
2739       else
2740         -- Print out NOCOPY label and input box for dimension0
2741         l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim0_level_id" VALUE='||l_Org_Level_ID||'>';
2742 
2743         -- Set flag to True if we need to pass the related sob info
2744         -- along
2745         --
2746         if (l_Org_Level_Short_Name='SET OF BOOKS') then
2747           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="TRUE">';
2748         else
2749           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="FALSE">';
2750         end if;
2751 
2752         l_string1 := l_string1 ||'<TR>';
2753         l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(l_Org_Level_Name)||'</TD>';
2754         l_string1 := l_string1 ||'<td align="left">';
2755         l_string1 := l_string1 ||'<SELECT NAME="dim0" onchange="setdim0()">';
2756         l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2757 
2758         if (l_orgs_tbl.COUNT <> 0) THEN
2759           removeDuplicates(p_original_tbl => l_orgs_tbl,
2760                            p_value        => NULL,
2761                            x_unique_tbl   => l_d0_tbl);
2762           for i in 1 ..l_d0_tbl.COUNT LOOP
2763              exit when (l_d0_tbl(i).id is NULL);
2764              l_string1 := l_string1 ||'<OPTION VALUE='||bis_utilities_pvt.escape_html_input(l_d0_tbl(i).id)||'>'||bis_utilities_pvt.escape_html_input(l_d0_tbl(i).name);
2765           end loop;
2766         end if;
2767         l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2768         l_string1 := l_string1 ||'</SELECT>';
2769         l_string1 := l_string1 ||'</td>';
2770         l_string1 := l_string1 ||'</TR>';
2771       end if;
2772 
2773 
2774       -- ***********************************
2775       -- Dimension1
2776     -- mdamle 01/15/2001 - Use Dim6 and Dim7
2777       -- meastmon 05/11/2001
2778       -- Dont show time dimension level
2779       if (c_recs.Dimension1_Level_ID is NULL) or (l_Org_Seq_Num = 1) or (l_Time_Seq_Num = 1) then
2780         if (l_Org_Seq_Num = 1) or (l_Time_Seq_Num = 1) then
2781           l_string1 := l_string1 || '<INPUT TYPE="hidden" NAME="dim1_level_id" VALUE=>';
2782         else
2783           l_string1 := l_string1 ||  '<INPUT TYPE="hidden" NAME="dim1_level_id" VALUE='||c_recs.Dimension1_Level_ID||'>';
2784         end if;
2785       else
2786       -- Print out NOCOPY label and input box for dimension1
2787         l_string1 :=  l_string1 || '<INPUT TYPE="hidden" NAME="dim1_level_id" VALUE='||c_recs.Dimension1_Level_ID||'>';
2788         l_string1 := l_string1 ||'<TR>';
2789         l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension1_Level_Name)||'</TD>';
2790         l_string1 := l_string1 ||'<td align="left">';
2791         l_string1 := l_string1 ||'<SELECT NAME="dim1" onchange="setdim1()">';
2792         l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2793 
2794 
2795        if (l_dim1_tbl.COUNT <> 0) THEN
2796           removeDuplicates(p_original_tbl => l_dim1_tbl,
2797                            p_value        => NULL,
2798                            x_unique_tbl   => l_d1_tbl);
2799           for i in 1 ..l_d1_tbl.COUNT LOOP
2800              exit when (l_d1_tbl(i).id is NULL);
2801        -- mdamle - 01/15/2001 - Add quotes around VALUE
2802             l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d1_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d1_tbl(i).name);
2803           end loop;
2804        end if;
2805        l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2806        l_string1 := l_string1 ||'</SELECT>';
2807        l_string1 := l_string1 ||'</td>';
2808        l_string1 := l_string1 ||'</TR>';
2809       end if;
2810 
2811       -- *******************************************
2812       -- Dimension2
2813     -- mdamle 01/15/2001 - Use Dim6 and Dim
2814       -- meastmon 05/11/2001
2815       -- Dont show time dimension level
2816      if (c_recs.Dimension2_Level_ID is NULL) or (l_Org_Seq_Num = 2) or (l_Time_Seq_Num = 2) then
2817        if (l_Org_Seq_Num = 2) or (l_Time_Seq_Num = 2) then
2818          l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim2_level_id" VALUE=>';
2819        else
2820          l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim2_level_id" VALUE='||c_recs.Dimension2_Level_ID||'>';
2821        end if;
2822      else     -- Print out NOCOPY label and input box for dimension2
2823        l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim2_level_id" VALUE='||c_recs.Dimension2_Level_ID||'>';
2824        l_string1 := l_string1 ||'<TR>';
2825        l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension2_Level_Name)||'</TD>';
2826        l_string1 := l_string1 ||'<td align="left">';
2827        l_string1 := l_string1 ||'<SELECT NAME="dim2" onchange="setdim2()">';
2828        l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2829 
2830        if (l_dim2_tbl.COUNT <> 0) THEN
2831           removeDuplicates(p_original_tbl => l_dim2_tbl,
2832                            p_value        => NULL,
2833                            x_unique_tbl   => l_d2_tbl);
2834           for i in 1 ..l_d2_tbl.COUNT LOOP
2835              exit when (l_d2_tbl(i).id is NULL);
2836        -- mdamle - 01/15/2001 - Add quotes around VALUE
2837              l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d2_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d2_tbl(i).name);
2838           end loop;
2839        end if;
2840        l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2841        l_string1 := l_string1 ||'</SELECT>';
2842        l_string1 := l_string1 ||'</td>';
2843        l_string1 := l_string1 ||'</TR>';
2844       end if;
2845 
2846       -- *****************************************
2847       -- Dimension3
2848     -- mdamle 01/15/2001 - Use Dim6 and Dim
2849       -- meastmon 05/11/2001
2850       -- Dont show time dimension level
2851       if (c_recs.Dimension3_Level_ID is NULL) or (l_Org_Seq_Num = 3) or (l_Time_Seq_Num = 3) then
2852         if (l_Org_Seq_Num = 3) or (l_Time_Seq_Num = 3) then
2853           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim3_level_id" VALUE=>';
2854         else
2855           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim3_level_id" VALUE='||c_recs.Dimension3_Level_ID||'>';
2856         end if;
2857       else       -- Print out NOCOPY label and input box for dimension3
2858         l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim3_level_id" VALUE='||c_recs.Dimension3_Level_ID||'>';
2859         l_string1 := l_string1 ||'<TR>';
2860         l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension3_Level_Name)||'</TD>';
2861         l_string1 := l_string1 ||'<td align="left">';
2862         l_string1 := l_string1 ||'<SELECT NAME="dim3" onchange="setdim3()">';
2863         l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2864 
2865       if (l_dim3_tbl.COUNT <> 0) THEN
2866           removeDuplicates(p_original_tbl => l_dim3_tbl,
2867                            p_value        => NULL,
2868                            x_unique_tbl   => l_d3_tbl);
2869           for i in 1 ..l_d3_tbl.COUNT LOOP
2870              exit when (l_d3_tbl(i).id is NULL);
2871        -- mdamle - 01/15/2001 - Add quotes around VALUE
2872              l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d3_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d3_tbl(i).name);
2873           end loop;
2874        end if;
2875         l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2876         l_string1 := l_string1 ||'</SELECT>';
2877         l_string1 := l_string1 ||'</td>';
2878         l_string1 := l_string1 ||'</TR>';
2879        end if;
2880 
2881       -- *****************************************
2882       -- Dimension4
2883     -- mdamle 01/15/2001 - Use Dim6 and Dim
2884       -- meastmon 05/11/2001
2885       -- Dont show time dimension level
2886       if (c_recs.Dimension4_Level_ID is NULL) or (l_Org_Seq_Num = 4) or (l_Time_Seq_Num = 4) then
2887         if (l_Org_Seq_Num = 4) or (l_Time_Seq_Num = 4) then
2888           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim4_level_id" VALUE=>';
2889          else
2890            l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim4_level_id" VALUE='||c_recs.Dimension4_Level_ID||'>';
2891         end if;
2892       else       -- Print out NOCOPY label and input box for dimension4
2893        l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim4_level_id" VALUE='||c_recs.Dimension4_Level_ID||'>';
2894        l_string1 := l_string1 ||'<TR>';
2895        l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension4_Level_Name)||'</TD>';
2896        l_string1 := l_string1 ||'<td align="left">';
2897        l_string1 := l_string1 ||'<SELECT NAME="dim4" onchange="setdim4()">';
2898        l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2899        if (l_dim4_tbl.COUNT <> 0) THEN
2900          removeDuplicates(p_original_tbl => l_dim4_tbl,
2901                            p_value        => NULL,
2902                            x_unique_tbl   => l_d4_tbl);
2903           for i in 1 ..l_d4_tbl.COUNT LOOP
2904              exit when (l_d4_tbl(i).id is NULL);
2905        -- mdamle - 01/15/2001 - Add quotes around VALUE
2906             l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d4_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d4_tbl(i).name);
2907           end loop;
2908        end if;
2909        l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2910        l_string1 := l_string1 ||'</SELECT>';
2911        l_string1 := l_string1 ||'</td>';
2912        l_string1 := l_string1 ||'</TR>';
2913       end if;
2914 
2915       -- ****************************************
2916       -- Dimension5
2917     -- mdamle 01/15/2001 - Use Dim6 and Dim
2918       -- meastmon 05/11/2001
2919       -- Dont show time dimension level
2920       if (c_recs.Dimension5_Level_ID is NULL) or (l_Org_Seq_Num = 5) or (l_Time_Seq_Num = 5) then
2921         if (l_Org_Seq_Num = 5) or (l_Time_Seq_Num = 5) then
2922           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim5_level_id" VALUE=>';
2923         else
2924           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim5_level_id" VALUE='||c_recs.Dimension5_Level_ID||'>';
2925         end if;
2926       else
2927        -- Print out NOCOPY label and input box for dimension5
2928        l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim5_level_id" VALUE='||c_recs.Dimension5_Level_ID||'>';
2929        l_string1 := l_string1 ||'<TR>';
2930        l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension5_Level_Name)||'</TD>';
2931        l_string1 := l_string1 ||'<td align="left">';
2932        l_string1 := l_string1 ||'<SELECT NAME="dim5" onchange="setdim5()">';
2933        l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2934        if (l_dim5_tbl.COUNT <> 0) THEN
2935           removeDuplicates(p_original_tbl => l_dim5_tbl,
2936                            p_value        => NULL,
2937                            x_unique_tbl   => l_d5_tbl);
2938           for i in 1 ..l_d5_tbl.COUNT LOOP
2939              exit when (l_d5_tbl(i).id is NULL);
2940        -- mdamle - 01/15/2001 - Add quotes around VALUE
2941            l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d5_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d5_tbl(i).name);
2942           end loop;
2943        end if;
2944        l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2945        l_string1 := l_string1 ||'</SELECT>';
2946        l_string1 := l_string1 ||'</td>';
2947        l_string1 := l_string1 ||'</TR>';
2948       end if;
2949 
2950       -- ****************************************
2951       -- Dimension6
2952     -- mdamle 01/15/2001 - Use Dim6 and Dim
2953       -- meastmon 05/11/2001
2954       -- Dont show time dimension level
2955       if (c_recs.Dimension6_Level_ID is NULL) or (l_Org_Seq_Num = 6) or (l_Time_Seq_Num = 6) then
2956         if (l_Org_Seq_Num = 6) or (l_Time_Seq_Num = 6) then
2957           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim6_level_id" VALUE=>';
2958         else
2959           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim6_level_id" VALUE='||c_recs.Dimension6_Level_ID||'>';
2960         end if;
2961       else
2962        -- Print out NOCOPY label and input box for dimension6
2963        l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim6_level_id" VALUE='||c_recs.Dimension6_Level_ID||'>';
2964        l_string1 := l_string1 ||'<TR>';
2965        l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension6_Level_Name)||'</TD>';
2966        l_string1 := l_string1 ||'<td align="left">';
2967        l_string1 := l_string1 ||'<SELECT NAME="dim6" onchange="setdim6()">';
2968        l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
2969        if (l_dim6_tbl.COUNT <> 0) THEN
2970           removeDuplicates(p_original_tbl => l_dim6_tbl,
2971                            p_value        => NULL,
2972                            x_unique_tbl   => l_d6_tbl);
2973           for i in 1 ..l_d6_tbl.COUNT LOOP
2974              exit when (l_d6_tbl(i).id is NULL);
2975        -- mdamle - 01/15/2001 - Add quotes around VALUE
2976                l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d6_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d6_tbl(i).name);
2977           end loop;
2978        end if;
2979        l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
2980        l_string1 := l_string1 ||'</SELECT>';
2981        l_string1 := l_string1 ||'</td>';
2982        l_string1 := l_string1 ||'</TR>';
2983       end if;
2984 
2985       -- ****************************************
2986       -- Dimension7
2987     -- mdamle 01/15/2001 - Use Dim6 and Dim
2988       -- meastmon 05/11/2001
2989       -- Dont show time dimension level
2990       if (c_recs.Dimension7_Level_ID is NULL) or (l_Org_Seq_Num = 7) or (l_Time_Seq_Num = 7) then
2991         if (l_Org_Seq_Num = 7) or (l_Time_Seq_Num = 7) then
2992           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim7_level_id" VALUE=>';
2993         else
2994           l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim7_level_id" VALUE='||c_recs.Dimension7_Level_ID||'>';
2995         end if;
2996       else
2997        -- Print out NOCOPY label and input box for dimension7
2998        l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="dim7_level_id" VALUE='||c_recs.Dimension7_Level_ID||'>';
2999        l_string1 := l_string1 ||'<TR>';
3000        l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension7_Level_Name)||'</TD>';
3001        l_string1 := l_string1 ||'<td align="left">';
3002        l_string1 := l_string1 ||'<SELECT NAME="dim7" onchange="setdim7()">';
3003        l_string1 := l_string1 ||'<OPTION SELECTED VALUE="">'||bis_utilities_pvt.escape_html_input(l_blank);
3004        if (l_dim7_tbl.COUNT <> 0) THEN
3005           removeDuplicates(p_original_tbl => l_dim7_tbl,
3006                            p_value        => NULL,
3007                            x_unique_tbl   => l_d7_tbl);
3008           for i in 1 ..l_d7_tbl.COUNT LOOP
3009              exit when (l_d7_tbl(i).id is NULL);
3010        -- mdamle - 01/15/2001 - Add quotes around VALUE
3011             l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_d7_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d7_tbl(i).name);
3012           end loop;
3013        end if;
3014        l_string1 := l_string1 ||'<OPTION VALUE=>'||c_choose;
3015        l_string1 := l_string1 ||'</SELECT>';
3016        l_string1 := l_string1 ||'</td>';
3017        l_string1 := l_string1 ||'</TR>';
3018        end if;
3019      end loop; -- end of loop of c_recs cursor
3020 
3021      l_string1 := l_string1 ||'<!-- Row open for Business Plan poplist -->';
3022 
3023      -- Have a poplist for the Business Plan
3024      l_string1 := l_string1 ||'<TR>';
3025      l_string1 := l_string1 ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_plan)||'</TD>';
3026      l_string1 := l_string1 ||'<td align="left">';
3027      l_string1 := l_string1 ||'<SELECT NAME="plan">';
3028      for pl in plan_cur loop
3029        l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(pl.plan_id)||'">'||bis_utilities_pvt.escape_html_input(pl.name);
3030      end loop;
3031      l_string1 := l_string1 ||'</SELECT>';
3032      l_string1 := l_string1 ||'</td>';
3033      l_string1 := l_string1 ||'</TR>';
3034      l_string1 := l_string1 ||'<TR>';
3035 
3036      l_string1 := l_string1 ||'<!-- Horizontal line separating the poplists and the display label box -->';
3037      l_string1 := l_string1 ||'<td height=1 colspan=2 class="C_SEPARATOR_LINE" nowrap="YES">'||'<IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
3038      l_string1 := l_string1 ||'</TR>';
3039      l_string1 := l_string1 ||'<TR>';
3040      l_string1 := l_string1 ||'<td align="left" colspan=2>';
3041      l_string1 := l_string1 || c_displabel;
3042      l_string1 := l_string1 || '</td>';
3043      l_string1 := l_string1 ||'</TR>';
3044      l_string1 := l_string1 ||'<TR>';
3045      l_string1 := l_string1 ||'<td colspan=2 valign="TOP" nowrap="YES">';
3046      l_string1 := l_string1 ||'<INPUT TYPE="text" NAME="label" SIZE="41" MAXLENGTH="40">';
3047      l_string1 := l_string1 ||'</td>';
3048      l_string1 := l_string1 ||'</TR>';
3049 
3050      l_string1 := l_string1 ||'<!-- Close embedded table containing the dim level poplists -->';
3051      -- close embedded table containing dim labels and input boxes
3052      l_string1 := l_string1 ||'</TABLE>';
3053      -- close cell with dim labels and input boxes
3054      l_string1 := l_string1 ||'</td>';
3055      l_string1 := l_string1 ||'<!-- Put the right side separator and right edge of wire frame box -->';
3056      l_string1 := l_string1 ||'<td width=5></td>';
3057      l_string1 := l_string1 ||'<td width=1 class="C_WIRE_FRAME_COLOR">'||'<IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
3058      l_string1 := l_string1 ||'</TR>';
3059      l_string1 := l_string1 ||'<TR>';
3060      l_string1 := l_string1 ||'<!-- Put the bottom edge of wireframe box -->';
3061      l_string1 := l_string1 ||'<td height=1 class="C_WIRE_FRAME_COLOR" colspan=5>'||'<IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
3062      l_string1 := l_string1 ||'</TR>';
3063      l_string1 := l_string1 ||'<!-- Close wireframe table -->';
3064      l_string1 := l_string1 ||'</TABLE>';
3065      l_string1 := l_string1 ||'</td>';
3066      l_string1 := l_string1 ||'</TR>';
3067      l_string1 := l_string1 ||'<TR>';
3068      l_string1 := l_string1 || '<td height=5></td>';
3069      l_string1 := l_string1 ||'</TR>';
3070      l_string1 := l_string1 ||'<TR>';
3071      l_string1 := l_string1 ||'<td align="CENTER" valign="TOP">';
3072      l_string1 := l_string1 ||'<table border=0 cellspacing=0 cellpadding=0 width=50%>';
3073      l_string1 := l_string1 ||'<TR>';
3074      -- cell containing the add button
3075      l_string1 := l_string1 ||'<td align="CENTER" valign="TOP">';
3076 
3077      WF_NOTIFICATION.WriteToClob(l_str_object,l_string1);
3078 
3079      --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
3080      --icx_plug_utilities.buttonBoth(c_display_homepage,'Javascript:addTo()');
3081      IF(l_swan_enabled)THEN
3082       l_button_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
3083      ELSE
3084       l_button_edge := BIS_UTILITIES_PVT.G_ROUND_EDGE;
3085      END IF;
3086      l_button_tbl(1).left_edge := l_button_edge;
3087      l_button_tbl(1).right_edge := l_button_edge;
3088      l_button_tbl(1).disabled := FND_API.G_FALSE;
3089      l_button_tbl(1).label := c_display_homepage;
3090      l_button_tbl(1).href := 'Javascript:addTo()';
3091      BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
3092      l_string1 := l_button_str;
3093 
3094      l_string1 := l_string1 ||'</td>';
3095      l_string1 := l_string1 ||'</TR>';
3096      l_string1 := l_string1 ||'</TABLE>';
3097      l_string1 := l_string1 ||'</td>';
3098      l_string1 := l_string1 ||'</TR>';
3099      l_string1 := l_string1 ||'<!-- Close left side table containing the dimension poplists -->';
3100      l_string1 := l_string1 ||'</TABLE>';
3101      l_string1 := l_string1 ||'</td>';
3102 
3103      -- **********************************************************************
3104      -- Put a separator to move the dimensions and selected boxes  apart
3105      l_string1 := l_string1 ||'<td><BR></td>';
3106 
3107      l_string1 := l_string1 ||'<!-- Open cell for Display labels box -->';
3108      -- open cell for right side box
3109      l_string1 := l_string1 ||'<td align="RIGHT" valign="TOP">';
3110      l_string1 := l_string1 ||'<table border=0 cellspacing=0 cellpadding=0 width=90%>';
3111      l_string1 := l_string1 ||'<TR>';
3112      IF(l_swan_enabled)THEN
3113        l_string1 := l_string1 || '<TD ALIGN="LEFT" class="x49" NOWRAP>'||bis_utilities_pvt.escape_html(c_tarlevels_homepage) ||'</TD>';
3114      ELSE
3115        l_string1 := l_string1 || '<TD ALIGN="LEFT" NOWRAP>'||bis_utilities_pvt.escape_html(c_tarlevels_homepage) ||'</TD>';
3116      END IF;
3117      l_string1 := l_string1 || '<TD><BR></TD>';
3118      l_string1 := l_string1 || '</TR>';
3119      l_string1 := l_string1 || '<TR>';
3120      l_string1 := l_string1 || '<td valign="TOP">';
3121      l_string1 := l_string1 ||'<SELECT NAME="C" SIZE=20>';
3122        -- If first time to this page, get favorites from database
3123      if (p_ind_level_id is NULL) then
3124        if (l_labels_tbl.COUNT = 0) THEN
3125          l_string1 := l_string1 ||'<OPTION VALUE=>'||l_initialize;
3126         else
3127           for i in l_labels_tbl.FIRST .. l_labels_tbl.COUNT loop
3128            -- mdamle 01/15/2001 - Use Dim6 and Dim7
3129            -- mdamle 01/15/2001 - Use Dim6 and Dim7
3130              l_Org_level_value_id := null;
3131 
3132            --meastmon 06/07/2001 - Bug.
3133            -- l_Org_Seq_Num should be initialized within the loop, because every loop
3134            -- it is a different target.
3135              l_Org_Seq_Num := getOrgSeqNum(l_labels_tbl(i).target_level_id);
3136 
3137               if l_Org_Seq_Num = 1 then
3138                      l_Org_Level_Value_ID := l_labels_tbl(i).dim1_level_value_id;
3139               end if;
3140               if l_Org_Seq_Num = 2 then
3141                      l_Org_Level_Value_ID := l_labels_tbl(i).dim2_level_value_id;
3142               end if;
3143               if l_Org_Seq_Num = 3 then
3144                      l_Org_Level_Value_ID := l_labels_tbl(i).dim3_level_value_id;
3145               end if;
3146               if l_Org_Seq_Num = 4 then
3147                        l_Org_Level_Value_ID := l_labels_tbl(i).dim4_level_value_id;
3148               end if;
3149               if l_Org_Seq_Num = 5 then
3150                        l_Org_Level_Value_ID := l_labels_tbl(i).dim5_level_value_id;
3151               end if;
3152               if l_Org_Seq_Num = 6 then
3153                        l_Org_Level_Value_ID := l_labels_tbl(i).dim6_level_value_id;
3154               end if;
3155               if l_Org_Seq_Num = 7 then
3156                        l_Org_Level_Value_ID := l_labels_tbl(i).dim7_level_value_id;
3157               end if;
3158 
3159              --meastmon 06/08/2001
3160              -- Dont need to put time level value id
3161              l_Time_Seq_Num := getTimeSeqNum(l_labels_tbl(i).target_level_id);
3162 
3163             --  mdamle 01/15/2001 - Replace plus in data with c_hash
3164              -- The browser converts plus into space - and incorrect data is passed through
3165             l_link := l_labels_tbl(i).target_level_id||
3166                     '*'||NVL(l_org_level_value_id,'+1');
3167             IF l_Time_Seq_Num = 1 THEN
3168                 l_link := l_link||'*+1';
3169             ELSE
3170                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM1_LEVEL_VALUE_ID,'+1');
3171             END IF;
3172             IF l_Time_Seq_Num = 2 THEN
3173                 l_link := l_link||'*+1';
3174             ELSE
3175                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM2_LEVEL_VALUE_ID,'+1');
3176             END IF;
3177             IF l_Time_Seq_Num = 3 THEN
3178                 l_link := l_link||'*+1';
3179             ELSE
3180                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM3_LEVEL_VALUE_ID,'+1');
3181             END IF;
3182             IF l_Time_Seq_Num = 4 THEN
3183                 l_link := l_link||'*+1';
3184             ELSE
3185                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM4_LEVEL_VALUE_ID,'+1');
3186             END IF;
3187             IF l_Time_Seq_Num = 5 THEN
3188                 l_link := l_link||'*+1';
3189             ELSE
3190                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM5_LEVEL_VALUE_ID,'+1');
3191             END IF;
3192             IF l_Time_Seq_Num = 6 THEN
3193                 l_link := l_link||'*+1';
3194             ELSE
3195                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM6_LEVEL_VALUE_ID,'+1');
3196             END IF;
3197             IF l_Time_Seq_Num = 7 THEN
3198                 l_link := l_link||'*+1';
3199             ELSE
3200                 l_link := l_link||'*'||NVL(l_labels_tbl(i).DIM7_LEVEL_VALUE_ID,'+1');
3201             END IF;
3202             l_link := l_link||'*'||NVL(l_labels_tbl(i).PLAN_ID,'+1');
3203 
3204             IF (BIS_PMF_PORTLET_UTIL.is_authorized(
3205                   p_cur_user_id => g_user_id
3206                  ,p_target_level_id => l_labels_tbl(i).target_level_id) ) THEN
3207                l_access := '*Y';
3208              ELSE
3209                              l_access := '*N';
3210              END IF;
3211 
3212        -- mdamle 01/15/2001 - Added quotes around the VALUE
3213            l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(REPLACE(REPLACE(l_link,'+1',c_minus),'+',c_at))||bis_utilities_pvt.escape_html_input(l_access)||'">';
3214            l_string1 := l_string1 ||bis_utilities_pvt.escape_html_input(l_labels_tbl(i).label);
3215 
3216            end LOOP;
3217           end if; -- if l_labels_tbl is empty
3218 
3219         else
3220           -- Else get the favorites stored in the plsql table
3221           for i in  1 .. p_displaylabels_tbl.COUNT LOOP
3222              l_loc := instr(p_displaylabels_tbl(i),'*',-1,1);
3223              l_value := substr (p_displaylabels_tbl(i),1,l_loc - 1);
3224              l_text := substr (p_displaylabels_tbl(i),l_loc + 1);
3225 
3226 
3227              IF ( (instr(l_value, '*Y', -1, 1 ) = 0) AND (instr(l_value, '*N', -1, 1 ) = 0)) THEN
3228                   l_value := l_value || '*Y';  -- first time added
3229              END IF;
3230              -- mdamle 01/15/2001 - Added quotes around the VALUE
3231              l_string1 := l_string1 ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_value)||'">'||bis_utilities_pvt.escape_html_input(l_text);
3232              exit when p_displaylabels_tbl(i) is NULL;
3233            end LOOP;
3234         end if;    -- endif for checking if p_ind_level_id is null or not
3235 
3236       l_string1 := l_string1 ||'</SELECT>';
3237       l_string1 := l_string1 ||'</td>';
3238       l_string1 := l_string1 ||'<!-- Open cell for up down buttons -->';
3239       l_string1 := l_string1 ||'<td align="LEFT">';  -- open cell for up down buttons
3240       l_string1 := l_string1 ||'<TABLE >';
3241       l_string1 := l_string1 ||'<tr><td align="left" valign="bottom">';
3242 
3243       IF(l_swan_enabled)THEN
3244        l_string1 := l_string1 ||'<A HREF="javascript:upTo()" onMouseOver="window.status='''||BIS_UTILITIES_PVT.getPrompt('BIS_UP')||''';return true"><image src="/OA_MEDIA/BISMOVUP.gif" alt="';
3245       ELSE
3246        l_string1 := l_string1 ||'<A HREF="javascript:upTo()" onMouseOver="window.status='''||BIS_UTILITIES_PVT.getPrompt('BIS_UP')||''';return true"><image src="/OA_MEDIA/FNDUPARW.gif" alt="';
3247       END IF;
3248 
3249       l_string1 := l_string1 ||icx_util.replace_alt_quotes(BIS_UTILITIES_PVT.getPrompt('BIS_UP'))||'" BORDER="0"></A>';
3250       l_string1 := l_string1 ||'</td></tr>';
3251       l_string1 := l_string1 ||'<tr><td align="left" valign="top">';
3252       IF(l_swan_enabled)THEN
3253        l_string1 := l_string1 ||'<A HREF="javascript:downTo()" onMouseOver="window.status='''||BIS_UTILITIES_PVT.getPrompt('BIS_DOWN')||''';return true"><image src="/OA_MEDIA/BISMOVDN.gif" alt="';
3254       ELSE
3255        l_string1 := l_string1 ||'<A HREF="javascript:downTo()" onMouseOver="window.status='''||BIS_UTILITIES_PVT.getPrompt('BIS_DOWN')||''';return true"><image src="/OA_MEDIA/FNDDNARW.gif" alt="';
3256       END IF;
3257       l_string1 := l_string1 ||icx_util.replace_alt_quotes(BIS_UTILITIES_PVT.getPrompt('BIS_DOWN'))||'" BORDER="0"></A>';
3258       l_string1 := l_string1 ||'</td></tr>';
3259       l_string1 := l_string1 ||'</TABLE>';
3260       l_string1 := l_string1 ||'</td>';
3261       l_string1 := l_string1 || '</TR>';
3262       l_string1 := l_string1 || '<!-- Open third row with edit-delete buttons for right side box -->';
3263       l_string1 := l_string1 || '<TR>';
3264       l_string1 := l_string1 || '<td align="CENTER" valign="TOP">';
3265       l_string1 := l_string1 || '<!-- Open embedded table having buttons -->';
3266       l_string1 := l_string1 ||'<TABLE>';
3267       l_string1 := l_string1 ||'<tr><td align="right" nowrap="Yes">';
3268 
3269       --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
3270       --icx_plug_utilities.buttonBoth(
3271       --                   BIS_UTILITIES_PVT.getPrompt('BIS_EDIT')
3272       --                  ,'Javascript:editTo()');
3273       l_button_tbl(1).left_edge := l_button_edge;
3274       l_button_tbl(1).right_edge := l_button_edge;
3275       l_button_tbl(1).disabled := FND_API.G_FALSE;
3276       l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_EDIT');
3277       l_button_tbl(1).href := 'Javascript:editTo()';
3278       BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
3279       l_string1 := l_string1 ||l_button_str;
3280 
3281       l_string1 := l_string1 ||'</td>';
3282       l_string1 := l_string1 ||'<td align="left" nowrap="Yes">';
3283 
3284       --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
3285       --icx_plug_utilities.buttonBoth(
3286       --                   BIS_UTILITIES_PVT.getPrompt('BIS_DELETE')
3287       --                   ,'Javascript:deleteTo()');
3288       l_button_tbl(1).left_edge := l_button_edge;
3289       l_button_tbl(1).right_edge := l_button_edge;
3290       l_button_tbl(1).disabled := FND_API.G_FALSE;
3291       l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_DELETE');
3292       l_button_tbl(1).href := 'Javascript:deleteTo()';
3293       BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
3294       l_string1 := l_string1 ||l_button_str;
3295       l_string1 := l_string1 ||'</td></tr>';
3296       l_string1 := l_string1 ||'</TABLE>';
3297       l_string1 := l_string1 ||'</td>';
3298       l_string1 := l_string1 ||'<td><BR></td>';
3299       l_string1 := l_string1 || '</TR>';
3300       l_string1 := l_string1 ||'</TABLE>';
3301       l_string1 := l_string1 ||'</td>';  -- close right side cell containing favorites and arrow buttons
3302       l_string1 := l_string1 ||'<!-- Close row for cell table containing the boxes -->';
3303       l_string1 := l_string1 || '</TR>';
3304       l_string1 := l_string1 || '<TR>';
3305       l_string1 := l_string1 || '<td colspan=2><BR></td>';
3306       l_string1 := l_string1 || '</TR>';
3307       l_string1 := l_string1 || '<TR>';
3308       l_string1 := l_string1 || '<td height=1 colspan=3 bgcolor=#000000>'||'<IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
3309       l_string1 := l_string1 || '</TR>';
3310 
3311       l_string1 := l_string1 ||'<!-- Close cell table containing the boxes -->';
3312       l_string1 := l_string1 ||'</TABLE>';
3313       l_string1 := l_string1 || '</td>';
3314       l_string1 := l_string1 ||'<!-- Close row 1 of main -->';
3315       l_string1 := l_string1 || '</TR>';
3316       l_string1 := l_string1 || '<TR>';
3317       l_string1 := l_string1 || '<td><BR></td>';
3318       l_string1 := l_string1 || '</TR>';
3319 
3320       l_string1 := l_string1 || '<!-- Open row with table containing the ok and cancel buttons -->';
3321       l_string1 := l_string1 || '<TR>';
3322       l_string1 := l_string1 || '<td align="CENTER">';
3323       --meastmon 06/20/2001. Added valign attribute
3324       l_string1 := l_string1 ||'<table width="100%"><tr><td width=50% align="right" valign="top">'; -- ok
3325 
3326       --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
3327       --icx_plug_utilities.buttonLeft(BIS_UTILITIES_PVT.getPrompt('BIS_OK'),
3328       --                             'Javascript:savedimensions()');
3329       l_button_tbl(1).left_edge := l_button_edge;
3330       l_button_tbl(1).right_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
3331       l_button_tbl(1).disabled := FND_API.G_FALSE;
3332       l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_OK');
3333       l_button_tbl(1).href := 'Javascript:savedimensions()';
3334       BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
3335       l_string1 := l_string1 ||l_button_str;
3336 
3337       l_string1 := l_string1 ||'<!-- Close Main form to save the display lables -->';
3338       --meastmon 06/20/2001. Added valign attribute
3339       l_string1 := l_string1 ||'</td><td align="left" valign="top" width="50%">';
3340       l_string1 := l_string1 ||'<!-- Open form to do work of going to prev page  -->';
3341 
3342       l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="Z2" VALUE="'||Z||'">';
3343       l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="p_back_url2" VALUE="'||p_back_url||'">';
3344       l_string1 := l_string1 ||'<INPUT TYPE="hidden" NAME="p_reference_path2" VALUE="'||p_reference_path||'">';
3345 
3346       --meastmon 06/20/2001. This should not be here
3347 
3348       l_string1 := l_string1 ||'<!-- Close form to do work of going to prev page  -->';
3349       --l_string1 := l_string1 ||'</FORM>';
3350 
3351       --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
3352       --icx_plug_utilities.buttonRight(BIS_UTILITIES_PVT.getPrompt('BIS_CANCEL'),
3353       --                              'Javascript:document.actionback.submit()');
3354       l_button_tbl(1).left_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
3355       l_button_tbl(1).right_edge := l_button_edge;
3356       l_button_tbl(1).disabled := FND_API.G_FALSE;
3357       l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_CANCEL');
3358       l_button_tbl(1).href := 'Javascript:doCancel()';
3359       --l_button_tbl(1).href := 'Javascript:document.actionback.submit()';
3360       BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
3361       l_string1 := l_string1 ||l_button_str;
3362       l_string1 := l_string1 ||'</td></tr>';
3363       l_string1 := l_string1 ||'</table>';
3364       l_string1 := l_string1 ||'</td>';
3365       l_string1 := l_string1 || '</TR>';
3366       l_string1 := l_string1 ||'<!-- Close Main Table -->';
3367       l_string1 := l_string1 ||'</TABLE>';
3368       l_string1 := l_string1 ||'</CENTER>';
3369       l_string1 := l_string1 ||'</BODY>';
3370       l_string1 := l_string1 ||'</HTML>';
3371 
3372       WF_NOTIFICATION.WriteToClob(l_str_object,l_string1);
3373 
3374       x_str_object := l_str_object;
3375 -- end if; -- icx_validatePlugsession
3376 --end if; -- icx_validateSession
3377 
3378 exception
3379   when others then --htp.p(SQLERRM);
3380     --x_string1 := SQLERRM;
3381     --x_string2 := NULL;
3382     WF_NOTIFICATION.NewClob(l_str_object,SQLERRM);
3383     x_str_object := l_str_object;
3384 
3385 
3386 end showDimensions;
3387 
3388 
3389 -- ********************************************************
3390 -- Procedure that allows Editing/renaming of indicators
3391 -- *********************************************************
3392 
3393 procedure editDimensions( U   in    varchar2
3394                          ,Z   in    pls_integer
3395                          ,x_string  out nocopy varchar2)
3396 is
3397   V                      varchar2(32000);
3398   l_cnt                  pls_integer;
3399   l_plug_id              pls_integer;
3400   l_choose_dim_value     varchar2(32000);
3401   l_enter_displabel      varchar2(32000);
3402   l_select_displabel     varchar2(32000);
3403   l_dup_displabel        varchar2(32000);
3404   l_dup_combo            varchar2(32000);
3405   l_title                varchar2(32000);
3406   l_blank                varchar2(32000);
3407   l_initialize           varchar2(32000);
3408   l_length               pls_integer;
3409   l_indlevel_id          pls_integer;
3410   l_d0                   varchar2(32000);
3411   l_d1                   varchar2(32000);
3412   l_d2                   varchar2(32000);
3413   l_d3                   varchar2(32000);
3414   l_d4                   varchar2(32000);
3415   l_d5                   varchar2(32000);
3416   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3417   l_d6                   varchar2(32000);
3418   l_d7                   varchar2(32000);
3419 
3420   l_plan                 varchar2(32000);
3421   l_plan1                 varchar2(32000);
3422   l_plan_name            varchar2(32000);
3423   l_indlevel_name        varchar2(32000);
3424   l_orgname              varchar2(32000);
3425   l_label                varchar2(32000);
3426   l_point1               pls_integer;
3427   l_point2               pls_integer;
3428   l_point3               pls_integer;
3429   l_point4               pls_integer;
3430   l_point5               pls_integer;
3431   l_point6               pls_integer;
3432   l_point7               pls_integer;
3433   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3434   l_point8               pls_integer;
3435   l_point9               pls_integer;
3436   l_point10              pls_integer;
3437 
3438   l_point12              pls_integer;
3439   l_point23              pls_integer;
3440   l_message              varchar2(32000);
3441   l_message1             varchar2(32000);
3442 
3443   l_current_user_id          PLS_INTEGER;
3444   l_user_id                  PLS_INTEGER;
3445   l_owner_user_id            PLS_INTEGER;
3446 --
3447   l_msg_count              number;
3448   l_msg_data               varchar2(32000);
3449   l_return_status          varchar2(32000);
3450   l_indicators_tbl         BIS_TARGET_LEVEL_PUB.Target_Level_Tbl_Type;
3451   l_dim0_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3452   l_dim1_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3453   l_dim2_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3454   l_dim3_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3455   l_dim4_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3456   l_dim5_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3457   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3458   l_dim6_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3459   l_dim7_level_value_rec   BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3460 
3461   l_favorites_tbl          BIS_INDICATOR_REGION_PUB.Indicator_Region_Tbl_Type;
3462   l_orgs_tbl               no_duplicates_tbl_Type;
3463   l_dim1_tbl               no_duplicates_tbl_Type;
3464   l_dim2_tbl               no_duplicates_tbl_Type;
3465   l_dim3_tbl               no_duplicates_tbl_Type;
3466   l_dim4_tbl               no_duplicates_tbl_Type;
3467   l_dim5_tbl               no_duplicates_tbl_Type;
3468   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3469   l_dim6_tbl               no_duplicates_tbl_Type;
3470   l_dim7_tbl               no_duplicates_tbl_Type;
3471 
3472   l_d0_tbl                 no_duplicates_tbl_Type;
3473   l_d1_tbl                 no_duplicates_tbl_Type;
3474   l_d2_tbl                 no_duplicates_tbl_Type;
3475   l_d3_tbl                 no_duplicates_tbl_Type;
3476   l_d4_tbl                 no_duplicates_tbl_Type;
3477   l_d5_tbl                 no_duplicates_tbl_Type;
3478   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3479   l_d6_tbl                 no_duplicates_tbl_Type;
3480   l_d7_tbl                 no_duplicates_tbl_Type;
3481 
3482   l_d0_name                varchar2(32000);
3483   l_d1_name                varchar2(32000);
3484   l_d2_name                varchar2(32000);
3485   l_d3_name                varchar2(32000);
3486   l_d4_name                varchar2(32000);
3487   l_d5_name                varchar2(32000);
3488 
3489   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3490   l_d6_name                varchar2(32000);
3491   l_d7_name                varchar2(32000);
3492 
3493   -- meastmon 05/11/2001
3494   l_Time_Seq_Num              number;
3495   --
3496   l_Org_Seq_Num              number;
3497   l_Org_Level_Value_ID       number;
3498   l_Org_Level_Short_Name     varchar2(240);
3499   l_Org_Level_Name           bis_levels_tl.name%TYPE;
3500 
3501   l_error_tbl              BIS_UTILITIES_PUB.Error_Tbl_Type;
3502   l_clear                  VARCHAR2(32000);
3503   l_sobString              VARCHAR2(32000);
3504   l_sob_level_id           NUMBER;
3505   l_org_level_id           NUMBER;
3506   l_elements               BIS_UTILITIES_PUB.BIS_VARCHAR_TBL;
3507 
3508   -- meastmon 06/20/2001
3509   -- Fix for ADA buttons
3510   l_button_str             varchar2(32000);
3511   l_button_tbl             BIS_UTILITIES_PVT.HTML_Button_Tbl_Type;
3512   l_set_of_books_id        VARCHAR2(200);
3513 
3514   l_dim_level_value_rec_p BIS_DIM_LEVEL_VALUE_PUB.Dim_Level_Value_Rec_Type;
3515   l_string                 VARCHAR2(32000);
3516   l_lovstring              VARCHAR2(32000);
3517 
3518 
3519 
3520 CURSOR plan_cur is
3521  SELECT plan_id,short_name,name
3522  FROM BISBV_BUSINESS_PLANS
3523  ORDER BY name;
3524 
3525 -- mdamle 01/15/2001 - Use Dim6 and Dim7
3526 cursor bisfv_target_levels_cur(p_tarid in pls_integer) is
3527  SELECT TARGET_LEVEL_ID,
3528         TARGET_LEVEL_NAME,
3529     -- mdamle 01/15/2001 - Use Dim6 and Dim7
3530         -- ORG_LEVEL_ID,
3531         -- ORG_LEVEL_SHORT_NAME,
3532         -- ORG_LEVEL_NAME,
3533         DIMENSION1_LEVEL_ID,
3534     DIMENSION1_LEVEL_SHORT_NAME,
3535         DIMENSION1_LEVEL_NAME,
3536         DIMENSION2_LEVEL_ID,
3537     DIMENSION2_LEVEL_SHORT_NAME,
3538         DIMENSION2_LEVEL_NAME,
3539         DIMENSION3_LEVEL_ID,
3540     DIMENSION3_LEVEL_SHORT_NAME,
3541         DIMENSION3_LEVEL_NAME,
3542         DIMENSION4_LEVEL_ID,
3543     DIMENSION4_LEVEL_SHORT_NAME,
3544         DIMENSION4_LEVEL_NAME,
3545         DIMENSION5_LEVEL_ID,
3546     DIMENSION5_LEVEL_SHORT_NAME,
3547         DIMENSION5_LEVEL_NAME,
3548         DIMENSION6_LEVEL_ID,
3549     DIMENSION6_LEVEL_SHORT_NAME,
3550         DIMENSION6_LEVEL_NAME,
3551         DIMENSION7_LEVEL_ID,
3552     DIMENSION7_LEVEL_SHORT_NAME,
3553         DIMENSION7_LEVEL_NAME
3554  FROM BISFV_TARGET_LEVELS
3555  WHERE TARGET_LEVEL_ID = p_tarid;
3556 
3557  l_append_string          VARCHAR2(1000);
3558  l_swan_enabled           BOOLEAN;
3559  l_button_edge            VARCHAR2(100);
3560 
3561 BEGIN
3562 
3563 -- meastmon 09/07/2001 Fix bug#1980577. Workaround Do not encrypt plug_id
3564 l_plug_id := Z;
3565 l_swan_enabled := BIS_UTILITIES_PVT.checkSWANEnabled();
3566 
3567 --l_plug_id := icx_call.decrypt2(Z);
3568 
3569 --if icx_sec.validateSession  then
3570 -- if ICX_SEC.validatePlugSession(l_plug_id) then
3571 
3572     --g_user_id    := icx_sec.getID(icx_sec.PV_USER_ID, '', icx_sec.g_session_id); --2751984
3573     l_user_id    := icx_sec.getID(icx_sec.PV_USER_ID, '', icx_sec.g_session_id); --2751984
3574     l_blank      := '';
3575     l_message    := 'Please enter a display label';
3576     l_initialize := '1234567891234567890';
3577 
3578 
3579     -- Replace the plus signs from the string
3580     -- mdamle 01/15/2001 -
3581   -- 1) Replace @ with plus (actual data plus)
3582   -- 2) Using c_hash instead of c_plus everywhere bec. data could contain c_plus
3583     V := REPLACE(U, c_at, c_plus);
3584     V := REPLACE(V,' ',c_hash);
3585 
3586 
3587   -- Set the message strings from the database
3588   fnd_message.set_name('BIS','BIS_ENTER_DISPLABEL');
3589    l_enter_displabel := icx_util.replace_quotes(fnd_message.get);
3590   fnd_message.set_name('BIS','BIS_SELECT_DISPLABEL');
3591    l_select_displabel := icx_util.replace_quotes(fnd_message.get);
3592   fnd_message.set_name('BIS','BIS_DUP_DISPLABEL');
3593    l_dup_displabel := icx_util.replace_quotes(fnd_message.get);
3594   fnd_message.set_name('BIS','BIS_DUP_COMBO');
3595    l_dup_combo := icx_util.replace_quotes(fnd_message.get);
3596   fnd_message.set_name('BIS','BIS_CHOOSE_DIM_VALUE');
3597    l_choose_dim_value := icx_util.replace_quotes(fnd_message.get);
3598 
3599   -- Unpack the one element that was selected for edit from the Favorites box
3600   -- to obtain individual dim_level_value id's
3601     l_length := length(V);
3602     l_point1 := instr(V,'*',1,1);
3603     l_point2 := instr(V,'*',1,2);
3604     l_point3 := instr(V,'*',1,3);
3605     l_point4 := instr(V,'*',1,4);
3606     l_point5 := instr(V,'*',1,5);
3607     l_point6 := instr(V,'*',1,6);
3608     l_point7 := instr(V,'*',1,7);
3609   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3610   l_point8 := instr(V,'*',1,8);
3611   l_point9 := instr(V,'*',1,9);
3612   l_point10 := instr(V,'*',1,10);
3613 
3614     l_indlevel_id := substr(V,1,l_point1-1);
3615 
3616   -- mdamle 01/15/2001 - Use Dim6 and Dim7
3617     l_d0 := substr(V,l_point1+1,l_point2 - l_point1 - 1);
3618     l_d1 := substr(V,l_point2+1,l_point3 - l_point2 - 1);
3619     l_d2 := substr(V,l_point3+1,l_point4 - l_point3 - 1);
3620     l_d3 := substr(V,l_point4+1,l_point5 - l_point4 - 1);
3621     l_d4 := substr(V,l_point5+1,l_point6 - l_point5 - 1);
3622     l_d5 := substr(V,l_point6+1,l_point7 - l_point6 - 1);
3623     l_d6 := substr(V,l_point7+1,l_point8 - l_point7 - 1);
3624     l_d7 := substr(V,l_point8+1,l_point9 - l_point8 - 1);
3625     --l_plan := substr(V,l_point9+1);
3626     l_plan := substr(V,l_point9+1,l_point10 - l_point9 - 1);
3627 
3628     g_var1 := l_d0;
3629 
3630   -- ************** Debug stuff ****************************
3631   -- htp.p(l_indlevel_id||'*'||l_d0||'*'||l_d1||'*'||l_d2||'*'||
3632   --       l_d3||'*'||l_d4||'*'||l_d5||'*'||l_plan);
3633   -- htp.p('<BR>*****************************************************<BR>');
3634 
3635   -- Get all the previously selected labels from
3636   -- selections table.
3637   BIS_INDICATOR_REGION_PUB.Retrieve_User_Ind_Selections
3638   ( p_api_version          => 1.0
3639   , p_user_id              => l_user_id
3640   , p_all_info             => FND_API.G_TRUE
3641   , p_plug_id              => l_plug_id
3642   , x_Indicator_Region_Tbl => l_favorites_tbl
3643   , x_return_status        => l_return_status
3644   , x_Error_Tbl           => l_error_tbl
3645   );
3646 
3647  -- Grab the Target level Name for this target level id
3648  -- to paint at the top of the page
3649  -- mdamle 01/15/2001 - Use getPerformanceMeasureName() instead
3650  --  SELECT target_level_name
3651  --  INTO l_indlevel_name
3652  --  FROM BISBV_TARGET_LEVELS
3653  --  WHERE TARGET_LEVEL_ID = l_indlevel_id;
3654  l_indlevel_name := getPerformanceMeasureName(l_indlevel_id);
3655 
3656  -- Set the set of books id for GL dimension levels
3657  --
3658    SELECT level_id
3659    INTO l_sob_level_id
3660    FROM BIS_LEVELS
3661    WHERE SHORT_NAME = 'SET OF BOOKS';
3662 
3663    -- mdamle 01/15/2001 - Use Dim6 and Dim7
3664    l_org_level_id := getOrgLevelID(l_indlevel_id);
3665 
3666    IF l_sob_level_id = l_org_level_ID
3667    THEN
3668      BIS_TARGET_PVT.G_SET_OF_BOOK_ID := TO_NUMBER(g_var1);
3669    END IF;
3670 
3671   -- Grab the individual dim_level_values chosen previously for
3672   -- this target_level_id, to populate respective poplists
3673     if (l_favorites_tbl.COUNT <> 0) THEN
3674        l_cnt := 1;
3675        for i in l_favorites_tbl.FIRST .. l_favorites_tbl.COUNT LOOP
3676          if (l_favorites_tbl(i).target_level_id = l_indlevel_id) THEN
3677        -- mdamle 01/15/2001 - Use Dim6 and Dim7
3678            -- mdamle 01/15/2001 - Use Dim6 and Dim7
3679            -- Get the Dimension No. for Org
3680        l_Org_Seq_Num := getOrgSeqNum(l_indlevel_id);
3681 
3682            IF (l_favorites_tbl(i).dim1_level_value_id is NOT NULL) THEN
3683             l_dim1_tbl(l_cnt).id   := l_favorites_tbl(i).dim1_level_value_id;
3684             l_dim1_tbl(l_cnt).name := l_favorites_tbl(i).dim1_level_value_name;
3685       -- mdamle 01/15/2001 Use Dim6 and Dim7
3686       if l_Org_Seq_Num = 1 then
3687              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim1_level_value_id;
3688              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim1_level_value_name;
3689       end if;
3690            END IF;
3691            IF (l_favorites_tbl(i).dim2_level_value_id is NOT NULL) THEN
3692             l_dim2_tbl(l_cnt).id   := l_favorites_tbl(i).dim2_level_value_id;
3693             l_dim2_tbl(l_cnt).name := l_favorites_tbl(i).dim2_level_value_name;
3694       -- mdamle 01/15/2001 Use Dim6 and Dim7
3695       if l_Org_Seq_Num = 2 then
3696              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim2_level_value_id;
3697              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim2_level_value_name;
3698       end if;
3699            END IF;
3700            IF (l_favorites_tbl(i).dim3_level_value_id is NOT NULL) THEN
3701             l_dim3_tbl(l_cnt).id   := l_favorites_tbl(i).dim3_level_value_id;
3702             l_dim3_tbl(l_cnt).name := l_favorites_tbl(i).dim3_level_value_name;
3703       -- mdamle 01/15/2001 Use Dim6 and Dim7
3704       if l_Org_Seq_Num = 3 then
3705              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim3_level_value_id;
3706              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim3_level_value_name;
3707       end if;
3708            END IF;
3709            IF (l_favorites_tbl(i).dim4_level_value_id is NOT NULL) THEN
3710             l_dim4_tbl(l_cnt).id   := l_favorites_tbl(i).dim4_level_value_id;
3711             l_dim4_tbl(l_cnt).name := l_favorites_tbl(i).dim4_level_value_name;
3712       -- mdamle 01/15/2001 Use Dim6 and Dim7
3713       if l_Org_Seq_Num = 4 then
3714              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim4_level_value_id;
3715              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim4_level_value_name;
3716       end if;
3717            END IF;
3718            IF (l_favorites_tbl(i).dim5_level_value_id is NOT NULL) THEN
3719             l_dim5_tbl(l_cnt).id   := l_favorites_tbl(i).dim5_level_value_id;
3720             l_dim5_tbl(l_cnt).name := l_favorites_tbl(i).dim5_level_value_name;
3721       -- mdamle 01/15/2001 Use Dim6 and Dim7
3722       if l_Org_Seq_Num = 5 then
3723              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim5_level_value_id;
3724              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim5_level_value_name;
3725       end if;
3726            END IF;
3727            -- mdamle 01/15/2001 - Use Dim6 and Dim7
3728            IF (l_favorites_tbl(i).dim6_level_value_id is NOT NULL) THEN
3729             l_dim6_tbl(l_cnt).id   := l_favorites_tbl(i).dim6_level_value_id;
3730             l_dim6_tbl(l_cnt).name := l_favorites_tbl(i).dim6_level_value_name;
3731       -- mdamle 01/15/2001 Use Dim6 and Dim7
3732       if l_Org_Seq_Num = 6 then
3733              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim6_level_value_id;
3734              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim6_level_value_name;
3735       end if;
3736            END IF;
3737            IF (l_favorites_tbl(i).dim7_level_value_id is NOT NULL) THEN
3738             l_dim7_tbl(l_cnt).id   := l_favorites_tbl(i).dim7_level_value_id;
3739             l_dim7_tbl(l_cnt).name := l_favorites_tbl(i).dim7_level_value_name;
3740       -- mdamle 01/15/2001 Use Dim6 and Dim7
3741       if l_Org_Seq_Num = 7 then
3742              l_orgs_tbl(l_cnt).id   := l_favorites_tbl(i).dim7_level_value_id;
3743              l_orgs_tbl(l_cnt).name := l_favorites_tbl(i).dim7_level_value_name;
3744       end if;
3745            END IF;
3746           l_cnt := l_cnt + 1;
3747          END IF;
3748        END LOOP;
3749     END IF; -- if l_favorites_tbl is empty
3750 
3751 
3752 
3753     l_string := l_string ||'<HTML>';
3754 
3755     -- *********************************************************
3756     -- Call the procedure that paints the LOV javascript function
3757     BIS_LOV_PUB.editlovjscript(x_string => l_lovstring);
3758 
3759     l_string := l_string || l_lovstring;
3760     l_string := l_string ||'<body>';
3761     l_string := l_string || '<LINK HREF="/OA_HTML/bisportal.css" type="text/css" rel="stylesheet">';
3762 
3763     l_string := l_string ||'<SCRIPT LANGUAGE="Javascript">';
3764     l_string := l_string ||'function saveRename() {';
3765     l_string := l_string ||'  var temp = opener.document.DefaultFormName.C.selectedIndex;';
3766     l_string := l_string ||'var end  = opener.document.DefaultFormName.C.length;';
3767     l_string := l_string ||'  if (document.editDimensions.label.value == "") {';
3768     l_string := l_string ||'    alert ("'||l_enter_displabel||'");';
3769     l_string := l_string ||'    document.editDimensions.label.focus();';
3770     l_string := l_string ||'    }';
3771     l_string := l_string ||'  else {';
3772     l_string := l_string ||'    var ind  =  document.editDimensions.ind.value;';
3773     l_string := l_string ||'    var g_var1 = "'||l_d0||'";';
3774 
3775     --l_string := l_string ||'   // Do some checks before grabbing the dimension level values';
3776     --l_string := l_string ||'   // For dimension0';
3777     l_string := l_string ||'      if (document.editDimensions.dim0_level_id.value != "") {';
3778     l_string := l_string ||'         var d0_tmp = document.editDimensions.dim0.selectedIndex;';
3779     l_string := l_string ||'         var d0_end = document.editDimensions.dim0.length;';
3780     l_string := l_string ||'         if ((document.editDimensions.dim0[d0_tmp].text == "'||l_blank||'") '||c_OR;
3781     l_string := l_string ||             ' (document.editDimensions.dim0[d0_tmp].text == "'||c_choose||'"))   {';
3782     l_string := l_string ||'            d0 = "+";';
3783     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3784     l_string := l_string ||'            document.editDimensions.dim0.focus();';
3785     l_string := l_string ||'            return FALSE;';
3786     l_string := l_string ||'            }';
3787     l_string := l_string ||'         else ';
3788     l_string := l_string ||'            var d0 =  document.editDimensions.dim0[d0_tmp].value;';
3789     l_string := l_string ||'         }';
3790     l_string := l_string ||'      else ';
3791     l_string := l_string ||'         {d0 = "-";}';
3792 
3793 
3794     --l_string := l_string ||'      // For dimension1';
3795     l_string := l_string ||'      if (document.editDimensions.dim1_level_id.value != "") {';
3796     l_string := l_string ||'         var d1_tmp = document.editDimensions.dim1.selectedIndex;';
3797     l_string := l_string ||'         var d1_end = document.editDimensions.dim1.length;';
3798     --l_string := l_string ||'   // mdamle 01/15/2001 - Changed the check |||r to Dim0 check';
3799     --l_string := l_string ||'         // if (d1_tmp == 0 '||c_OR||' d1_tmp == d1_end - 1){';
3800     l_string := l_string ||'         if ((document.editDimensions.dim1[d1_tmp].text == "'||l_blank||'") '||c_OR;
3801     l_string := l_string ||'             (document.editDimensions.dim1[d1_tmp].text == "'||c_choose||'"))  {';
3802     l_string := l_string ||'            d1 = "+";';
3803     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3804     l_string := l_string ||'            document.editDimensions.dim1.focus();';
3805     l_string := l_string ||'            return FALSE;';
3806     l_string := l_string ||'            }';
3807     l_string := l_string ||'         else ';
3808     l_string := l_string ||'            var d1 =  document.editDimensions.dim1[d1_tmp].value;';
3809     l_string := l_string ||'         }';
3810     l_string := l_string ||'      else ';
3811     l_string := l_string ||'         {d1 = "-";}';
3812 
3813 
3814     --l_string := l_string ||'      // For dimension2';
3815     l_string := l_string ||'      if (document.editDimensions.dim2_level_id.value != "") {';
3816     l_string := l_string ||'         var d2_tmp = document.editDimensions.dim2.selectedIndex;';
3817     l_string := l_string ||'         var d2_end = document.editDimensions.dim2.length;';
3818     --l_string := l_string ||'   // mdamle 02/25/2002 - Changed the check |||r to Dim0 check';
3819     l_string := l_string ||'         if ((document.editDimensions.dim2[d2_tmp].text == "'||l_blank||'") '||c_OR;
3820     l_string := l_string ||'             (document.editDimensions.dim2[d2_tmp].text == "'||c_choose||'"))  {';
3821     l_string := l_string ||'            d2 = "+";';
3822     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3823     l_string := l_string ||'            document.editDimensions.dim2.focus();';
3824     l_string := l_string ||'            return FALSE;';
3825     l_string := l_string ||'            }';
3826     l_string := l_string ||'         else ';
3827     l_string := l_string ||'            var d2 =  document.editDimensions.dim2[d2_tmp].value;';
3828     l_string := l_string ||'         }';
3829     l_string := l_string ||'      else';
3830     l_string := l_string ||'         {d2 = "-";}';
3831 
3832 
3833     --l_string := l_string ||'      // For dimension3';
3834     l_string := l_string ||'      if (document.editDimensions.dim3_level_id.value != "") {';
3835     l_string := l_string ||'         var d3_tmp = document.editDimensions.dim3.selectedIndex;';
3836     l_string := l_string ||'         var d3_end = document.editDimensions.dim3.length;';
3837     --l_string := l_string ||'   // mdamle 03/35/3003 - Changed the check |||r to Dim0 check';
3838     --l_string := l_string ||'         // if (d3_tmp == 0 '||c_OR||' d3_tmp == d3_end - 3){';
3839     l_string := l_string ||'         if ((document.editDimensions.dim3[d3_tmp].text == "'||l_blank||'") '||c_OR;
3840     l_string := l_string ||'             (document.editDimensions.dim3[d3_tmp].text == "'||c_choose||'"))  {';
3841     l_string := l_string ||'            d3 = "+";';
3842     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3843     l_string := l_string ||'            document.editDimensions.dim3.focus();';
3844     l_string := l_string ||'            return FALSE;';
3845     l_string := l_string ||'            }';
3846     l_string := l_string ||'         else ';
3847     l_string := l_string ||'            var d3 =  document.editDimensions.dim3[d3_tmp].value;';
3848     l_string := l_string ||'         }';
3849     l_string := l_string ||'      else';
3850     l_string := l_string ||'         {d3 = "-";}';
3851 
3852 
3853     --l_string := l_string ||'      // For dimension4';
3854     l_string := l_string ||'      if (document.editDimensions.dim4_level_id.value != "") {';
3855     l_string := l_string ||'         var d4_tmp = document.editDimensions.dim4.selectedIndex;';
3856     l_string := l_string ||'         var d4_end = document.editDimensions.dim4.length;';
3857     --l_string := l_string ||'   // mdamle 04/45/4004 - Changed the check |||r to Dim0 check';
3858     --l_string := l_string ||'         // if (d4_tmp == 0 '||c_OR||' d4_tmp == d4_end - 4){';
3859     l_string := l_string ||'         if ((document.editDimensions.dim4[d4_tmp].text == "'||l_blank||'") '||c_OR;
3860     l_string := l_string ||'             (document.editDimensions.dim4[d4_tmp].text == "'||c_choose||'"))  {';
3861     l_string := l_string ||'            d4 = "+";';
3862     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3863     l_string := l_string ||'            document.editDimensions.dim4.focus();';
3864     l_string := l_string ||'            return FALSE;';
3865     l_string := l_string ||'            }';
3866     l_string := l_string ||'         else';
3867     l_string := l_string ||'            var d4 =  document.editDimensions.dim4[d4_tmp].value;';
3868     l_string := l_string ||'         }';
3869     l_string := l_string ||'      else';
3870     l_string := l_string ||'         {d4 = "-";}';
3871 
3872 
3873     --l_string := l_string ||'      // For dimension5';
3874     l_string := l_string ||'      if (document.editDimensions.dim5_level_id.value != "") {';
3875     l_string := l_string ||'         var d5_tmp = document.editDimensions.dim5.selectedIndex;';
3876     l_string := l_string ||'         var d5_end = document.editDimensions.dim5.length;';
3877     --l_string := l_string ||'   // mdamle 05/55/5005 - Changed the check |||r to Dim0 check';
3878     --l_string := l_string ||'         // if (d5_tmp == 0 '||c_OR||' d5_tmp == d5_end - 5){';
3879     l_string := l_string ||'         if ((document.editDimensions.dim5[d5_tmp].text == "'||l_blank||'") '||c_OR;
3880     l_string := l_string ||'             (document.editDimensions.dim5[d5_tmp].text == "'||c_choose||'"))  {';
3881     l_string := l_string ||'            d5 = "+";';
3882     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3883     l_string := l_string ||'            document.editDimensions.dim5.focus();';
3884     l_string := l_string ||'            return FALSE;';
3885     l_string := l_string ||'            }';
3886     l_string := l_string ||'         else ';
3887     l_string := l_string ||'            var d5 =  document.editDimensions.dim5[d5_tmp].value;';
3888     l_string := l_string ||'         }';
3889     l_string := l_string ||'       else';
3890     l_string := l_string ||'         {d5 = "-";}';
3891 
3892     --l_string := l_string ||'  // mdamle 01/15/2001 - Use Dim6 and Dim7';
3893     ---l_string := l_string ||'      // For dimension6';
3894     l_string := l_string ||'      if (document.editDimensions.dim6_level_id.value != "") {';
3895     l_string := l_string ||'         var d6_tmp = document.editDimensions.dim6.selectedIndex;';
3896     l_string := l_string ||'         var d6_end = document.editDimensions.dim6.length;';
3897     --l_string := l_string ||'   // mdamle 06/66/6006 - Changed the check |||r to Dim0 check';
3898     --l_string := l_string ||'         // if (d6_tmp == 0 '||c_OR||' d6_tmp == d6_end - 6){';
3899     l_string := l_string ||'         if ((document.editDimensions.dim6[d6_tmp].text == "'||l_blank||'") '||c_OR;
3900     l_string := l_string ||'             (document.editDimensions.dim6[d6_tmp].text == "'||c_choose||'"))  {';
3901     l_string := l_string ||'            d6 = "+";';
3902     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3903     l_string := l_string ||'            document.editDimensions.dim6.focus();';
3904     l_string := l_string ||'            return FALSE;';
3905     l_string := l_string ||'            }';
3906     l_string := l_string ||'         else';
3907     l_string := l_string ||'            var d6 =  document.editDimensions.dim6[d6_tmp].value;';
3908     l_string := l_string ||'         }';
3909     l_string := l_string ||'       else';
3910     l_string := l_string ||'         {d6 = "-";}';
3911 
3912     --l_string := l_string ||'  // mdamle 01/15/2001 - Use Dim6 and Dim7';
3913     --l_string := l_string ||'      // For dimension7';
3914     l_string := l_string ||'      if (document.editDimensions.dim7_level_id.value != "") {';
3915     l_string := l_string ||'         var d7_tmp = document.editDimensions.dim7.selectedIndex;';
3916     l_string := l_string ||'         var d7_end = document.editDimensions.dim7.length;';
3917     --l_string := l_string ||'   // mdamle 07/77/7007 - Changed the check |||r to Dim0 check';
3918     --l_string := l_string ||'         // if (d7_tmp == 0 '||c_OR||' d7_tmp == d7_end - 7){';
3919     l_string := l_string ||'         if ((document.editDimensions.dim7[d7_tmp].text == "'||l_blank||'") '||c_OR;
3920     l_string := l_string ||'             (document.editDimensions.dim7[d7_tmp].text == "'||c_choose||'"))  {';
3921     l_string := l_string ||'            d7 = "+";';
3922     l_string := l_string ||'            alert("'||l_choose_dim_value||'");';
3923     l_string := l_string ||'            document.editDimensions.dim7.focus();';
3924     l_string := l_string ||'            return FALSE;';
3925     l_string := l_string ||'            }';
3926     l_string := l_string ||'         else ';
3927     l_string := l_string ||'            var d7 =  document.editDimensions.dim7[d7_tmp].value;';
3928     l_string := l_string ||'         }';
3929     l_string := l_string ||'       else ';
3930     l_string := l_string ||'         {d7 = "-";}';
3931 
3932     --l_string := l_string ||'      // For Plan';
3933     l_string := l_string ||'       var plan_tmp = document.editDimensions.plan.selectedIndex;';
3934     l_string := l_string ||'       var plan     = document.editDimensions.plan[plan_tmp].value;';
3935 
3936 
3937     l_string := l_string ||'    var totext=document.editDimensions.label.value;';
3938 
3939     --l_string := l_string ||'// mdamle 01/15/2001 - Use Dim6 and Dim7';
3940     --l_string := l_string ||'// Put Org dimension value in the correct dimension';
3941     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "1")';
3942     l_string := l_string ||'   d1 = d0;';
3943     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "2")';
3944     l_string := l_string ||'   d2 = d0;';
3945     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "3")';
3946     l_string := l_string ||'   d3 = d0;';
3947     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "4")';
3948     l_string := l_string ||'   d4 = d0;';
3949     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "5")';
3950     l_string := l_string ||'   d5 = d0;';
3951     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "6")';
3952     l_string := l_string ||'   d6 = d0;';
3953     l_string := l_string ||'if (document.editDimensions.orgDimension.value == "7")';
3954     l_string := l_string ||'   d7 = d0;';
3955 
3956     --l_string := l_string ||'// mdamle 01/15/2001 - Add d6 and d7';
3957     l_string := l_string ||'    var tovalue= ind + "*" + d0 + "*" + d1 + "*" + d2 + "*" + d3 + "*" + d4 + "*" + d5 + "*" + d6 + "*" + d7 + "*" + plan;';
3958 
3959     --l_string := l_string ||'    // Now go through the contents of right side box to see if';
3960     --l_string := l_string ||'    // this exists already';
3961 
3962 
3963     --start
3964     l_string := l_string ||'       var duplicatedComb = 0;';
3965     l_string := l_string ||'       var duplicatedText = 0;';
3966     l_string := l_string ||'       for (var i=0;i<end;i++){';
3967     l_string := l_string ||'         if (i != temp) {';
3968     l_string := l_string ||'           var cval = opener.document.DefaultFormName.C[i].value;';
3969     l_string := l_string ||'           if (tovalue == cval.substr(0, cval.length-2)) {';
3970     l_string := l_string ||'             duplicatedComb = 1;';
3971     l_string := l_string ||'           }';
3972     l_string := l_string ||'           if (totext == opener.document.DefaultFormName.C[i].text) {';
3973     l_string := l_string ||'             duplicatedText = 1;';
3974     l_string := l_string ||'           }';
3975     l_string := l_string ||'         }';
3976     l_string := l_string ||'       }';
3977     l_string := l_string ||'       if (duplicatedComb == 1){';
3978     l_string := l_string ||'         alert("'||l_dup_combo||'");';
3979     l_string := l_string ||'       } else if (duplicatedText == 1) {';
3980     l_string := l_string ||'         alert("'||l_dup_displabel||'");';
3981     --end
3982 
3983     l_string := l_string ||'       }';
3984     l_string := l_string ||'     else {';
3985     l_string := l_string ||'       opener.document.DefaultFormName.C.options[temp].text  = totext;';
3986     l_string := l_string ||'       opener.document.DefaultFormName.C.options[temp].value = tovalue+"*Y";';
3987 
3988     l_string := l_string ||'       window.close();';
3989     l_string := l_string ||'       }';
3990     l_string := l_string ||'    }'; -- //  to check if  editDimensions.value is null or not';
3991     l_string := l_string ||'  }';
3992 
3993     l_string := l_string ||'function open_new_browser(url,x,y){';
3994     l_string := l_string ||'    var attributes = "resizable=yes,scrollbars=yes,toolbar=no,width="+x+",height="+y;';
3995     l_string := l_string ||'    var new_browser = window.open(url, "new_browser", attributes);';
3996     l_string := l_string ||'    if (new_browser != null) {';
3997     l_string := l_string ||'        if (new_browser.opener == null)';
3998     l_string := l_string ||'            new_browser.opener = self;';
3999     l_string := l_string ||'        new_browser.name = ''editLOVValues'';';
4000     l_string := l_string ||'        new_browser.location.href = url;';
4001     l_string := l_string ||'        }';
4002     l_string := l_string ||'    }';
4003 
4004     l_string := l_string ||'function loadName() {';
4005     l_string := l_string ||'   var temp=opener.document.DefaultFormName.C.selectedIndex;';
4006     l_string := l_string ||'   document.editDimensions.label.value = opener.document.DefaultFormName.C.options[temp].text;';
4007     l_string := l_string ||'  }';
4008 
4009     -- Get string to clear dim1-5 in case they are related to the org
4010     --
4011     l_elements(1) := 'plan';
4012     l_elements(2) := 'dim0';
4013     l_elements(3) := 'label';
4014 
4015 
4016 
4017     clearSelect
4018     ( p_formName     => 'editDimensions'
4019     , p_elementTable => l_elements
4020     , x_clearString  => l_clear
4021     );
4022 
4023 
4024 
4025 -- meastmon 06/26/2001 Dont clear other dimensions
4026     l_string := l_string ||'function setdim0() {';
4027     l_string := l_string ||'    var end = document.editDimensions.dim0.length;';
4028     l_string := l_string ||'    var temp = document.editDimensions.dim0.selectedIndex;';
4029     l_string := l_string ||'    if (document.editDimensions.dim0[temp].text == "'||c_choose||'") {';
4030     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4031     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim0_level_id.value;';
4032     l_string := l_string ||'       var c_qry = "'||l_user_id||c_asterisk||'" + ind + "'||c_asterisk||'" + dim_lvl_id;';
4033     l_string := l_string ||'       var c_jsfuncname = "getdim0";';
4034     l_string := l_string ||'       document.editDimensions.dim0.selectedIndex = 0;';
4035     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query''';
4036     l_string := l_string ||'             ,c_qry,c_jsfuncname,'||Z||');';
4037     l_string := l_string ||'       }';
4038     l_string := l_string ||'   }';
4039 
4040 
4041 
4042      SetSetOfBookVar
4043      ( p_user_id     => l_user_id
4044      , p_formName    => 'editDimensions'
4045      , p_index       => 'dim0_index'
4046      , x_sobString   => l_sobString
4047      );
4048 
4049     l_string := l_string ||'function setdim1() {';
4050     --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4051     l_string := l_string ||'         var end = document.editDimensions.dim1.length;';
4052     l_string := l_string ||'         var temp = document.editDimensions.dim1.selectedIndex;';
4053     l_string := l_string ||'          if (document.editDimensions.dim1[temp].text == "'||c_choose||'") {';
4054     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4055     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim1_level_id.value;';
4056 
4057     --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4058     l_string := l_string ||'       '||l_sobString;
4059 
4060     l_string := l_string ||'       var c_jsfuncname = "getdim1";';
4061     l_string := l_string ||'       document.editDimensions.dim1.selectedIndex = 0;';
4062     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4063     l_string := l_string ||'       }';
4064     l_string := l_string ||'   }';
4065 
4066 
4067     l_string := l_string ||'function setdim2() {';
4068     --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4069     l_string := l_string ||'    var end = document.editDimensions.dim2.length;';
4070     l_string := l_string ||'    var temp = document.editDimensions.dim2.selectedIndex;';
4071     l_string := l_string ||'    if (document.editDimensions.dim2[temp].text == "'||c_choose||'") {';
4072     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4073     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim2_level_id.value;';
4074 
4075     --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4076     l_string := l_string ||'       '||l_sobString;
4077 
4078     l_string := l_string ||'       var c_jsfuncname = "getdim2";';
4079     l_string := l_string ||'       document.editDimensions.dim2.selectedIndex = 0;';
4080     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4081     l_string := l_string ||'       }';
4082     l_string := l_string ||'   }';
4083 
4084 
4085     l_string := l_string ||'function setdim3() {';
4086     --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4087     l_string := l_string ||'     var end = document.editDimensions.dim3.length;';
4088     l_string := l_string ||'    var temp = document.editDimensions.dim3.selectedIndex;';
4089     l_string := l_string ||'    if (document.editDimensions.dim3[temp].text == "'||c_choose||'") {';
4090     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4091     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim3_level_id.value;';
4092 
4093     --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4094     l_string := l_string ||'       '||l_sobString;
4095 
4096     l_string := l_string ||'       var c_jsfuncname = "getdim3";';
4097     l_string := l_string ||'       document.editDimensions.dim3.selectedIndex = 0;';
4098     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4099     l_string := l_string ||'       }';
4100     l_string := l_string ||'   }';
4101 
4102 
4103     l_string := l_string ||'function setdim4() {';
4104     --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4105     l_string := l_string ||'    var end = document.editDimensions.dim4.length;';
4106     l_string := l_string ||'    var temp = document.editDimensions.dim4.selectedIndex;';
4107     l_string := l_string ||'    if (document.editDimensions.dim4[temp].text == "'||c_choose||'") {';
4108     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4109     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim4_level_id.value;';
4110 
4111     --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4112     l_string := l_string ||'       '||l_sobString;
4113 
4114     l_string := l_string ||'       var c_jsfuncname = "getdim4";';
4115     l_string := l_string ||'       document.editDimensions.dim4.selectedIndex = 0;';
4116     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4117     l_string := l_string ||'       }';
4118     l_string := l_string ||'   }';
4119 
4120 
4121     l_string := l_string ||'function setdim5() {';
4122     --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4123     l_string := l_string ||'    var end = document.editDimensions.dim5.length;';
4124     l_string := l_string ||'    var temp = document.editDimensions.dim5.selectedIndex;';
4125     l_string := l_string ||'    if (document.editDimensions.dim5[temp].text == "'||c_choose||'") {';
4126     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4127     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim5_level_id.value;';
4128 
4129     --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4130     l_string := l_string ||'       '||l_sobString;
4131 
4132     l_string := l_string ||'       var c_jsfuncname = "getdim5";';
4133     l_string := l_string ||'       document.editDimensions.dim5.selectedIndex = 0;';
4134     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4135     l_string := l_string ||'       }';
4136     l_string := l_string ||'   }';
4137 
4138 
4139     -- mdamle - 01/15/2001 - Use Dim6 and Dim7
4140     l_string := l_string ||'function setdim6() {';
4141     --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4142     l_string := l_string ||'    var end = document.editDimensions.dim6.length;';
4143     l_string := l_string ||'    var temp = document.editDimensions.dim6.selectedIndex;';
4144     l_string := l_string ||'    if (document.editDimensions.dim6[temp].text == "'||c_choose||'") {';
4145     l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4146     l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim6_level_id.value;';
4147 
4148     --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4149     l_string := l_string ||'       '||l_sobString;
4150 
4151     l_string := l_string ||'       var c_jsfuncname = "getdim6";';
4152     l_string := l_string ||'       document.editDimensions.dim6.selectedIndex = 0;';
4153     l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4154     l_string := l_string ||'       }';
4155     l_string := l_string ||'   }';
4156 
4157 
4158      -- mdamle - 01/15/2001 - Use Dim6 and Dim7
4159      l_string := l_string ||'function setdim7() {';
4160      --l_string := l_string ||'// alert("dim0 = "+dim0_id);';
4161      l_string := l_string ||'         var end = document.editDimensions.dim7.length;';
4162      l_string := l_string ||'   var temp = document.editDimensions.dim7.selectedIndex;';
4163      l_string := l_string ||'   if (document.editDimensions.dim7[temp].text == "'||c_choose||'") {';
4164      l_string := l_string ||'       var ind  =  document.editDimensions.ind.value;';
4165      l_string := l_string ||'       var dim_lvl_id = document.editDimensions.dim7_level_id.value;';
4166 
4167      --l_string := l_string ||' // mdamle 01/15/2001 - Moved conditional code into l_sobString';
4168      l_string := l_string ||'       '||l_sobString;
4169 
4170      l_string := l_string ||'       var c_jsfuncname = "getdim7";';
4171      l_string := l_string ||'       document.editDimensions.dim7.selectedIndex = 0;';
4172      l_string := l_string ||'       getLOV(''bis_intermediate_lov_pvt.dim_level_values_query'',c_qry,c_jsfuncname,'||Z||');';
4173      l_string := l_string ||'       }';
4174      l_string := l_string ||'   }';
4175 
4176     l_string := l_string ||'</SCRIPT>';
4177     l_string := l_string ||'<!-- Open form for this window -->';
4178     l_string := l_string ||'</FORM>'; --WORKAROUND
4179     l_string := l_string ||'<FORM ACTION="javascript:saveRename()" METHOD="POST" name="editDimensions">';
4180     l_string := l_string ||'<CENTER>';
4181     l_string := l_string ||'<!-- Open table -->';
4182     l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0 width=100%>'; -- main
4183     l_string := l_string ||'<INPUT TYPE="hidden" NAME="ind" VALUE="'||l_indlevel_id||'">';
4184     l_string := l_string ||'<!-- Open first row for this table -->';
4185     l_string := l_string ||'<TR>';
4186     l_string := l_string ||'<td align="CENTER">';
4187     l_string := l_string ||'<TABLE >';
4188     l_string := l_string ||'<TR>';
4189     l_string := l_string ||'<TD ALIGN="RIGHT">'||bis_utilities_pvt.escape_html(c_tarlevel) ||'</TD>';
4190     l_string := l_string ||'<TD ALIGN="LEFT"><B>'||bis_utilities_pvt.escape_html(l_indlevel_name)||'</B></TD>';
4191     l_string := l_string ||'</TR>';
4192     l_string := l_string ||'</TABLE>';
4193     l_string := l_string ||'</td>';
4194     l_string := l_string ||'</TR>';
4195 
4196     l_string := l_string ||'<!-- Open second row for this table -->';
4197     l_string := l_string ||'<TR>';
4198     l_string := l_string ||'<TD><BR></TD>';
4199     l_string := l_string ||'</TR>';
4200     l_string := l_string ||'<TR>';
4201     l_string := l_string ||'<td align="CENTER">';
4202     l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0>';
4203     l_string := l_string ||'<!-- Open row containing the string dimensions -->';
4204     l_string := l_string ||'<TR>';
4205 
4206     IF(l_swan_enabled)THEN
4207      l_append_string := '<TD ALIGN="LEFT" class="x49" >';
4208     ELSE
4209      l_append_string := '<TD ALIGN="LEFT">';
4210     END IF;
4211 
4212     l_string := l_string ||l_append_string||bis_utilities_pvt.escape_html(c_dim_and_plan)||'</TD>';
4213     l_string := l_string ||'</TR>';
4214     l_string := l_string ||'<!-- Open row for wireframe box table -->';
4215     l_string := l_string ||'<TR>';
4216     l_string := l_string ||'<td align="LEFT" valign="TOP">';
4217     l_string := l_string ||'<!-- open table containing wireframe -->';
4218     l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0>';
4219 
4220     l_string := l_string ||'<!-- Top edge of wireframe box -->';
4221     l_string := l_string ||'<TR>';
4222     l_string := l_string ||'<td height=1 class="C_WIRE_FRAME_COLOR" colspan=5><IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
4223     l_string := l_string ||'</TR>';
4224     l_string := l_string ||'<TR>';
4225     l_string := l_string ||'<!-- Begin left edge of wireframe and left separator -->';
4226     l_string := l_string ||'<td width=1 class="C_WIRE_FRAME_COLOR"><IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
4227     l_string := l_string ||'<td width=5></td>';
4228 
4229     l_string := l_string ||'<!-- Begin cell having embedded table with dimension boxes -->';
4230     l_string := l_string ||'<td align="center" nowrap="yes">';
4231     l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0>';
4232 
4233     l_string := l_string ||'<TR>';
4234     l_string := l_string ||'<td height=5></td>';
4235     l_string := l_string ||'</TR>';
4236 
4237     l_string := l_string ||'<!-- Begin one more cell to center dimension boxes inside the wireframe -->';
4238     l_string := l_string ||'<TR>';
4239     l_string := l_string ||'<td align="center" nowrap="yes">';
4240     l_string := l_string ||'<table border=0 cellspacing=0 cellpadding=0>';
4241 
4242    -- ****************************************************************
4243    --  Table containing the dimension names,boxes
4244 
4245 
4246 
4247     for c_recs in bisfv_target_levels_cur(l_indlevel_id) LOOP
4248 
4249       -- ******************************
4250       -- Dimension0 for Organization
4251 
4252       -- meastmon 06/07/2001
4253       l_Time_Seq_Num := getTimeSeqNum(l_indlevel_id);
4254       l_string := l_string ||'<INPUT TYPE="hidden" NAME="timeDimension" VALUE="'||l_Time_Seq_Num||'">';
4255 
4256       -- mdamle 01/15/2001 - Use Dim6 and Dim7
4257       -- Get the Dimension No. for Org
4258       l_Org_Seq_Num := getOrgSeqNum(l_indlevel_id);
4259       l_string := l_string ||'<INPUT TYPE="hidden" NAME="orgDimension" VALUE="'||l_Org_Seq_Num||'">';
4260 
4261     -- mdamle 01/15/2001 - Use Dim6 and Dim7
4262     if l_Org_Seq_Num = 1 then
4263        l_Org_Level_ID := c_recs.Dimension1_level_id;
4264      l_Org_Level_Short_Name := c_recs.Dimension1_level_Short_name;
4265      l_Org_Level_Name := c_recs.Dimension1_level_Name;
4266     end if;
4267     if l_Org_Seq_Num = 2 then
4268        l_Org_Level_ID := c_recs.Dimension2_level_id;
4269      l_Org_Level_Short_Name := c_recs.Dimension2_level_Short_name;
4270      l_Org_Level_Name := c_recs.Dimension2_level_Name;
4271     end if;
4272     if l_Org_Seq_Num = 3 then
4273        l_Org_Level_ID := c_recs.Dimension3_level_id;
4274      l_Org_Level_Short_Name := c_recs.Dimension3_level_Short_name;
4275      l_Org_Level_Name := c_recs.Dimension3_level_Name;
4276     end if;
4277     if l_Org_Seq_Num = 4 then
4278        l_Org_Level_ID := c_recs.Dimension4_level_id;
4279      l_Org_Level_Short_Name := c_recs.Dimension4_level_Short_name;
4280      l_Org_Level_Name := c_recs.Dimension4_level_Name;
4281     end if;
4282     if l_Org_Seq_Num = 5 then
4283        l_Org_Level_ID := c_recs.Dimension5_level_id;
4284      l_Org_Level_Short_Name := c_recs.Dimension5_level_Short_name;
4285      l_Org_Level_Name := c_recs.Dimension5_level_Name;
4286     end if;
4287     if l_Org_Seq_Num = 6 then
4288        l_Org_Level_ID := c_recs.Dimension6_level_id;
4289      l_Org_Level_Short_Name := c_recs.Dimension6_level_Short_name;
4290      l_Org_Level_Name := c_recs.Dimension6_level_Name;
4291     end if;
4292     if l_Org_Seq_Num = 7 then
4293        l_Org_Level_ID := c_recs.Dimension7_level_id;
4294      l_Org_Level_Short_Name := c_recs.Dimension7_level_Short_name;
4295      l_Org_Level_Name := c_recs.Dimension7_level_Name;
4296     end if;
4297 
4298     if (l_Org_Level_ID is NULL) then
4299       l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim0_level_id" VALUE="'||l_blank||'">';
4300 
4301       -- meastmon 06/07/2001
4302       l_string := l_string ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="FALSE">';
4303 
4304     elsif (l_Org_Level_Short_Name='TOTAL_ORGANIZATIONS') then
4305       l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim0_level_id" VALUE="'||l_Org_Level_ID||'">';
4306       -- meastmon 06/07/2001
4307       l_string := l_string ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="FALSE">';
4308       l_string := l_string ||'<TR>';
4309       l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(l_Org_Level_Name)||'</TD>';
4310       l_string := l_string ||'<td align="left" nowrap="YES">';
4311       l_string := l_string ||'<SELECT NAME="dim0">';
4312       l_string := l_string ||'<OPTION SELECTED VALUE=-1>'||bis_utilities_pvt.escape_html_input(LOWER(l_Org_Level_Short_Name));
4313       l_string := l_string ||'</SELECT>';
4314     else
4315        -- Print out NOCOPY label and input box for dimension0
4316       l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim0_level_id" VALUE="'||l_Org_Level_ID||'">';
4317 
4318       -- Set flag to True if we need to pass the related sob info
4319       -- along
4320       --
4321       if (l_Org_Level_Short_Name='SET OF BOOKS') then
4322         l_string := l_string ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="TRUE">';
4323       else
4324         l_string := l_string ||'<INPUT TYPE="hidden" NAME="set_sob" VALUE="FALSE">';
4325       end if;
4326 
4327       l_string := l_string ||'<TR>';
4328       l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(l_Org_Level_Name)||'</TD>';
4329       l_string := l_string ||'<td align="left">';
4330       l_string := l_string ||'<SELECT NAME="dim0" onchange="setdim0()">';
4331       l_string := l_string ||'<OPTION>';
4332 
4333       if (l_d0 <> c_hash) then
4334        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4335         l_d0 := REPLACE(l_d0, c_hash, ' ');
4336         IF (l_Org_Level_Short_Name='SET OF BOOKS') THEN -- 2665526
4337             l_set_of_books_id := l_d0;
4338         ELSE
4339           l_set_of_books_id := NULL;
4340         END IF;
4341          l_dim0_level_value_rec.Dimension_Level_ID := l_Org_Level_ID;
4342          l_dim0_level_value_rec.Dimension_level_Value_ID := l_d0;
4343          -- meastmon 09/17/2001 Org_Id_To_Value does not work for EDW Dimensions
4344          -- Instead use DimensionX_ID_to_Value.
4345          l_dim_level_value_rec_p := l_dim0_level_value_rec;
4346          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4347            p_api_version               => 1.0,
4348            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4349            x_Dim_Level_Value_rec       => l_dim0_level_value_rec,
4350            x_Return_Status             => l_return_status,
4351            x_error_Tbl                 => l_error_tbl
4352           );
4353 
4354         l_string := l_string ||'<OPTION SELECTED VALUE='||bis_utilities_pvt.escape_html_input(l_dim0_level_value_rec.Dimension_level_Value_ID)||'>'||l_dim0_level_value_rec.Dimension_level_Value_Name;
4355 
4356 
4357 
4358 
4359         end if;
4360         if (l_orgs_tbl.COUNT <> 0) THEN
4361           removeDuplicates(p_original_tbl => l_orgs_tbl,
4362                            p_value        => l_d0,
4363                            x_unique_tbl   => l_d0_tbl);
4364           for i in 1 ..l_d0_tbl.COUNT LOOP
4365              exit when (l_d0_tbl(i).id is NULL);
4366              l_string := l_string ||'<OPTION VALUE='||bis_utilities_pvt.escape_html_input(l_d0_tbl(i).name)||'>'||bis_utilities_pvt.escape_html_input(l_d0_tbl(i).name);
4367           end loop;
4368         end if;
4369        l_string := l_string ||'<OPTION>'||c_choose;
4370        l_string := l_string ||'</SELECT>';
4371        l_string := l_string ||'</td>';
4372        l_string := l_string ||'</TR>';
4373       end if;
4374 
4375       -- ***********************************
4376       -- Dimension1
4377     -- mdamle 01/15/2001 - Use Dim6 and Dim7
4378       -- meastmon 06/07/2001
4379       -- Dont show time dimension level
4380       if (c_recs.Dimension1_Level_ID is NULL) or (l_Org_Seq_Num = 1) or (l_Time_Seq_Num = 1) then
4381        if (l_Org_Seq_Num = 1) or (l_Time_Seq_Num = 1) then
4382          l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim1_level_id" VALUE="">';
4383          else
4384          l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim1_level_id" VALUE="'||c_recs.Dimension1_Level_ID||'">';
4385      end if;
4386       else
4387       -- Print out NOCOPY label and input box for dimension1
4388        l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim1_level_id" VALUE="'||c_recs.Dimension1_Level_ID||'">';
4389        l_string := l_string ||'<TR>';
4390        l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension1_Level_Name) ||'</TD>';
4391        l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4392        l_string := l_string ||'<SELECT NAME="dim1" onchange="setdim1()">';
4393        l_string := l_string ||'<OPTION>';
4394 
4395         if (l_d1 <> c_hash) then
4396        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4397           l_d1 := REPLACE(l_d1, c_hash, ' ');
4398 
4399          l_dim1_level_value_rec.Dimension_level_ID:=c_recs.Dimension1_Level_ID;
4400          l_dim1_level_value_rec.Dimension_level_Value_ID := l_d1;
4401          l_dim1_level_value_rec.dimension_Level_short_name := c_recs.dimension1_Level_short_name;
4402          l_dim_level_value_rec_p := l_dim1_level_value_rec;
4403          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4404            p_api_version               => 1.0,
4405            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4406            p_set_of_books_id           => l_set_of_books_id,
4407            x_Dim_Level_Value_rec       => l_dim1_level_value_rec,
4408            x_Return_Status             => l_return_status,
4409            x_error_Tbl                 => l_error_tbl
4410           );
4411 
4412          l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim1_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim1_level_value_rec.Dimension_level_Value_Name);
4413         end if;
4414 
4415        if (l_dim1_tbl.COUNT <> 0) THEN
4416           removeDuplicates(p_original_tbl => l_dim1_tbl,
4417                            p_value        => l_d1,
4418                            x_unique_tbl   => l_d1_tbl);
4419           for i in 1 ..l_d1_tbl.COUNT LOOP
4420              exit when (l_d1_tbl(i).id is NULL);
4421        -- mdamle - 01/15/2001 - Add quotes around VALUE
4422             l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d1_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d1_tbl(i).name);
4423           end loop;
4424        end if;
4425        l_string := l_string ||'<OPTION>'||c_choose;
4426        l_string := l_string ||'</SELECT>';
4427        l_string := l_string ||'</td>';
4428        l_string := l_string ||'</TR>';
4429       end if;
4430 
4431       -- Dimension2
4432       -- *******************************************
4433     -- mdamle 02/25/2002 - Use Dim6 and Dim7
4434       -- meastmon 06/07/2001
4435       -- Dont show time dimension level
4436 
4437 
4438 
4439       if (c_recs.Dimension2_Level_ID is NULL) or (l_Org_Seq_Num = 2) or (l_Time_Seq_Num = 2) then
4440 
4441        if (l_Org_Seq_Num = 2) or (l_Time_Seq_Num = 2) then
4442       l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim2_level_id" VALUE="">';
4443          else
4444           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim2_level_id" VALUE="'||c_recs.Dimension2_Level_ID||'">';
4445      end if;
4446       else      -- Print out NOCOPY label and input box for dimension2
4447        l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim2_level_id" VALUE="'||c_recs.Dimension2_Level_ID||'">';
4448        l_string := l_string ||'<TR>';
4449        l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension2_Level_Name) ||'</TD>';
4450        l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4451        l_string := l_string ||'<SELECT NAME="dim2" onchange="setdim2()">';
4452        l_string := l_string ||'<OPTION>';
4453 
4454        if (l_d2 <> c_hash) then
4455        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4456         l_d2 := REPLACE(l_d2, c_hash, ' ');
4457 
4458          l_dim2_level_value_rec.Dimension_level_ID:=c_recs.Dimension2_Level_ID;
4459          l_dim2_level_value_rec.Dimension_level_Value_ID := l_d2;
4460          l_dim2_level_value_rec.dimension_Level_short_name := c_recs.dimension2_Level_short_name;
4461 
4462          l_dim_level_value_rec_p := l_dim2_level_value_rec;
4463 
4464 
4465 
4466          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4467            p_api_version               => 1.0,
4468            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4469            p_set_of_books_id           => l_set_of_books_id,
4470            x_Dim_Level_Value_rec       => l_dim2_level_value_rec,
4471            x_Return_Status             => l_return_status,
4472            x_error_Tbl                 => l_error_tbl
4473           );
4474 
4475 
4476         l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim2_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim2_level_value_rec.Dimension_level_Value_Name);
4477         end if;
4478 
4479        if (l_dim2_tbl.COUNT <> 0) THEN
4480           removeDuplicates(p_original_tbl => l_dim2_tbl,
4481                            p_value        => l_d2,
4482                            x_unique_tbl   => l_d2_tbl);
4483           for i in 1 ..l_d2_tbl.COUNT LOOP
4484              exit when (l_d2_tbl(i).id is NULL);
4485              l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d2_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d2_tbl(i).name);
4486           end loop;
4487        end if;
4488        l_string := l_string ||'<OPTION>'||c_choose;
4489        l_string := l_string ||'</SELECT>';
4490        l_string := l_string ||'</td>';
4491        l_string := l_string ||'</TR>';
4492       end if;
4493 
4494       -- Dimension3
4495       -- *****************************************
4496     -- mdamle 03/35/3003 - Use Dim6 and Dim7
4497       -- meastmon 06/07/2001
4498       -- Dont show time dimension level
4499       if (c_recs.Dimension3_Level_ID is NULL) or (l_Org_Seq_Num = 3) or (l_Time_Seq_Num = 3) then
4500         if (l_Org_Seq_Num = 3) or (l_Time_Seq_Num = 3) then
4501           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim3_level_id" VALUE="">';
4502         else
4503           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim3_level_id" VALUE="'||c_recs.Dimension3_Level_ID||'">';
4504         end if;
4505       else       -- Print out NOCOPY label and input box for dimension3
4506         l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim3_level_id" VALUE="'||c_recs.Dimension3_Level_ID||'">';
4507         l_string := l_string ||'<TR>';
4508         l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension3_Level_Name) ||'</TD>';
4509         l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4510         l_string := l_string ||'<SELECT NAME="dim3" onchange="setdim3()">';
4511         l_string := l_string ||'<OPTION>';
4512 
4513         if (l_d3 <> c_hash) then
4514        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4515         l_d3 := REPLACE(l_d3, c_hash, ' ');
4516 
4517          l_dim3_level_value_rec.Dimension_level_ID:=c_recs.Dimension3_Level_ID;
4518          l_dim3_level_value_rec.Dimension_level_Value_ID := l_d3;
4519          l_dim3_level_value_rec.dimension_Level_short_name := c_recs.dimension3_Level_short_name;
4520          l_dim_level_value_rec_p := l_dim3_level_value_rec;
4521          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4522            p_api_version               => 1.0,
4523            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4524            p_set_of_books_id           => l_set_of_books_id,
4525            x_Dim_Level_Value_rec       => l_dim3_level_value_rec,
4526            x_Return_Status             => l_return_status,
4527            x_error_Tbl                 => l_error_tbl
4528           );
4529 
4530         l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim3_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim3_level_value_rec.Dimension_level_Value_Name);
4531         end if;
4532 
4533         if (l_dim3_tbl.COUNT <> 0) THEN
4534           removeDuplicates(p_original_tbl => l_dim3_tbl,
4535                            p_value        => l_d3,
4536                            x_unique_tbl   => l_d3_tbl);
4537           for i in 1 ..l_d3_tbl.COUNT LOOP
4538              exit when (l_d3_tbl(i).id is NULL);
4539        -- mdamle - 01/15/2001 - Add quotes around VALUE
4540             l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d3_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d3_tbl(i).name);
4541           end loop;
4542         end if;
4543         l_string := l_string ||'<OPTION>'||c_choose;
4544         l_string := l_string ||'</SELECT>';
4545         l_string := l_string ||'</td>';
4546         l_string := l_string ||'</TR>';
4547        end if;
4548 
4549       -- Dimension4
4550       -- ****************************************
4551     -- mdamle 04/45/4004 - Use Dim6 and Dim7
4552       -- meastmon 06/07/2001
4553       -- Dont show time dimension level
4554       if (c_recs.Dimension4_Level_ID is NULL) or (l_Org_Seq_Num = 4) or (l_Time_Seq_Num = 4) then
4555        if (l_Org_Seq_Num = 4) or (l_Time_Seq_Num = 4) then
4556       l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim4_level_id" VALUE="">';
4557          else
4558           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim4_level_id" VALUE="'||c_recs.Dimension4_Level_ID||'">';
4559      end if;
4560       else
4561        -- Print out NOCOPY label and input box for dimension4
4562        l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim4_level_id" VALUE="'||c_recs.Dimension4_Level_ID||'">';
4563        l_string := l_string ||'<TR>';
4564        l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension4_Level_Name) ||'</TD>';
4565        l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4566        l_string := l_string ||'<SELECT NAME="dim4" onchange="setdim4()">';
4567        l_string := l_string ||'<OPTION>';
4568 
4569        if (l_d4 <> c_hash) then
4570        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4571        l_d4 := REPLACE(l_d4, c_hash, ' ');
4572 
4573          l_dim4_level_value_rec.Dimension_level_ID:=c_recs.Dimension4_Level_ID;
4574          l_dim4_level_value_rec.Dimension_level_Value_ID := l_d4;
4575          l_dim4_level_value_rec.dimension_Level_short_name := c_recs.dimension4_Level_short_name;
4576          l_dim_level_value_rec_p := l_dim4_level_value_rec;
4577          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4578            p_api_version               => 1.0,
4579            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4580            p_set_of_books_id           => l_set_of_books_id,
4581            x_Dim_Level_Value_rec       => l_dim4_level_value_rec,
4582            x_Return_Status             => l_return_status,
4583            x_error_Tbl                 => l_error_tbl
4584           );
4585        l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim4_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim4_level_value_rec.Dimension_level_Value_Name);
4586         end if;
4587 
4588        if (l_dim4_tbl.COUNT <> 0) THEN
4589           removeDuplicates(p_original_tbl => l_dim4_tbl,
4590                            p_value        => l_d4,
4591                            x_unique_tbl   => l_d4_tbl);
4592           for i in 1 ..l_d4_tbl.COUNT LOOP
4593              exit when (l_d4_tbl(i).id is NULL);
4594        -- mdamle - 01/15/2001 - Add quotes around VALUE
4595 
4596              l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d4_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d4_tbl(i).name);
4597           end loop;
4598        end if;
4599        l_string := l_string ||'<OPTION>'||c_choose;
4600        l_string := l_string ||'</SELECT>';
4601        l_string := l_string ||'</td>';
4602        l_string := l_string ||'</TR>';
4603       end if;
4604 
4605 
4606 
4607       -- Dimension5
4608       -- ***************************************
4609     -- mdamle 05/55/5005 - Use Dim6 and Dim7
4610       -- meastmon 06/07/2001
4611       -- Dont show time dimension level
4612       if (c_recs.Dimension5_Level_ID is NULL) or (l_Org_Seq_Num = 5) or (l_Time_Seq_Num = 5) then
4613         if (l_Org_Seq_Num = 5) or (l_Time_Seq_Num = 5) then
4614           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim5_level_id" VALUE="">';
4615         else
4616           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim5_level_id" VALUE="'||c_recs.Dimension5_Level_ID||'">';
4617         end if;
4618       else
4619        -- Print out NOCOPY label and input box for dimension5
4620        l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim5_level_id" VALUE="'||c_recs.Dimension5_Level_ID||'">';
4621        l_string := l_string ||'<TR>';
4622        l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension5_Level_Name) ||'</TD>';
4623        l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4624        l_string := l_string ||'<SELECT NAME="dim5" onchange="setdim5()">';
4625        l_string := l_string ||'<OPTION>';
4626        if (l_d5 <> c_hash) then
4627        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4628        l_d5 := REPLACE(l_d5, c_hash, ' ');
4629 
4630          l_dim5_level_value_rec.Dimension_level_ID:=c_recs.Dimension5_Level_ID;
4631          l_dim5_level_value_rec.Dimension_level_Value_ID := l_d5;
4632          l_dim5_level_value_rec.dimension_Level_short_name := c_recs.dimension5_Level_short_name;
4633          l_dim_level_value_rec_p := l_dim5_level_value_rec;
4634          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4635            p_api_version               => 1.0,
4636            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4637            p_set_of_books_id           => l_set_of_books_id,
4638            x_Dim_Level_Value_rec       => l_dim5_level_value_rec,
4639            x_Return_Status             => l_return_status,
4640            x_error_Tbl                 => l_error_tbl
4641           );
4642 
4643        l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim5_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim5_level_value_rec.Dimension_level_Value_Name);
4644         end if;
4645 
4646        if (l_dim5_tbl.COUNT <> 0) THEN
4647           removeDuplicates(p_original_tbl => l_dim5_tbl,
4648                            x_unique_tbl   => l_d5_tbl);
4649           for i in 1 ..l_d5_tbl.COUNT LOOP
4650              exit when (l_d5_tbl(i).id is NULL);
4651              -- mdamle - 01/15/2001 - Add quotes around VALUE
4652              l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d5_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d5_tbl(i).name);
4653           end loop;
4654        end if;
4655        l_string := l_string ||'<OPTION>'||c_choose;
4656        l_string := l_string ||'</SELECT>';
4657        l_string := l_string ||'</td>';
4658        l_string := l_string ||'</TR>';
4659       end if;
4660 
4661 
4662 
4663       -- mdamle 01/15/2001 - Use Dim6 and Dim7
4664       -- Dimension6
4665       -- ***************************************
4666     -- mdamle 06/66/6006 - Use Dim6 and Dim7
4667       -- meastmon 06/07/2001
4668       -- Dont show time dimension level
4669 
4670 
4671 
4672       if (c_recs.Dimension6_Level_ID is NULL) or (l_Org_Seq_Num = 6) or (l_Time_Seq_Num = 6) then
4673 
4674         if (l_Org_Seq_Num = 6) or (l_Time_Seq_Num = 6) then
4675           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim6_level_id" VALUE="">';
4676         else
4677            l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim6_level_id" VALUE="'||c_recs.Dimension6_Level_ID||'">';
4678         end if;
4679       else       -- Print out NOCOPY label and input box for dimension6
4680        l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim6_level_id" VALUE="'||c_recs.Dimension6_Level_ID||'">';
4681        l_string := l_string ||'<TR>';
4682        l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension6_Level_Name) ||'</TD>';
4683        l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4684        l_string := l_string ||'<SELECT NAME="dim6" onchange="setdim6()">';
4685        l_string := l_string ||'<OPTION>';
4686 
4687        if (l_d6 <> c_hash) then
4688        -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4689        l_d6 := REPLACE(l_d6, c_hash, ' ');
4690 
4691        l_dim6_level_value_rec.Dimension_level_ID:=c_recs.Dimension6_Level_ID;
4692        l_dim6_level_value_rec.Dimension_level_Value_ID := l_d6;
4693        l_dim6_level_value_rec.dimension_Level_short_name := c_recs.dimension6_Level_short_name;
4694        l_dim_level_value_rec_p := l_dim6_level_value_rec;
4695        BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4696          p_api_version               => 1.0,
4697          p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4698          p_set_of_books_id           => l_set_of_books_id,
4699          x_Dim_Level_Value_rec       => l_dim6_level_value_rec,
4700          x_Return_Status             => l_return_status,
4701          x_error_Tbl                 => l_error_tbl
4702         );
4703 
4704 
4705 
4706 
4707        l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim6_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim6_level_value_rec.Dimension_level_Value_Name);
4708         end if;
4709 
4710        if (l_dim6_tbl.COUNT <> 0) THEN
4711           removeDuplicates(p_original_tbl => l_dim6_tbl,
4712                            x_unique_tbl   => l_d6_tbl);
4713           for i in 1 ..l_d6_tbl.COUNT LOOP
4714              exit when (l_d6_tbl(i).id is NULL);
4715           -- mdamle - 01/15/2001 - Add quotes around VALUE
4716              l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d6_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d6_tbl(i).name);
4717           end loop;
4718        end if;
4719        l_string := l_string ||'<OPTION>'||c_choose;
4720        l_string := l_string ||'</SELECT>';
4721        l_string := l_string ||'</td>';
4722        l_string := l_string ||'</TR>';
4723       end if;
4724 
4725 
4726 
4727       -- mdamle 01/15/2001 - Use Dim6 and Dim7
4728       -- Dimension7
4729       -- ***************************************
4730     -- mdamle 07/77/7007 - Use Dim7 and Dim7
4731       -- meastmon 06/07/2001
4732       -- Dont show time dimension level
4733 
4734 
4735 
4736       if (c_recs.Dimension7_Level_ID is NULL) or (l_Org_Seq_Num = 7) or (l_Time_Seq_Num = 7) then
4737 
4738         if (l_Org_Seq_Num = 7) or (l_Time_Seq_Num = 7) then
4739           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim7_level_id" VALUE="">';
4740         else
4741           l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim7_level_id" VALUE="'||c_recs.Dimension7_Level_ID||'">';
4742         end if;
4743       else       -- Print out NOCOPY label and input box for dimension7
4744         l_string := l_string ||'<INPUT TYPE="hidden" NAME="dim7_level_id" VALUE="'||c_recs.Dimension7_Level_ID||'">';
4745         l_string := l_string ||'<TR>';
4746         l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_recs.Dimension7_Level_Name) ||'</TD>';
4747         l_string := l_string ||'<td align="LEFT" nowrap="YES">';
4748         l_string := l_string ||'<SELECT NAME="dim7" onchange="setdim7()">';
4749         l_string := l_string ||'<OPTION>';
4750 
4751        if (l_d7 <> c_hash) then
4752         -- mdamle 01/15/2001 - Replace c_hash with ' ' icase data was changed
4753        l_d7 := REPLACE(l_d7, c_hash, ' ');
4754 
4755 
4756 
4757          l_dim7_level_value_rec.Dimension_level_ID:=c_recs.Dimension7_Level_ID;
4758          l_dim7_level_value_rec.Dimension_level_Value_ID := l_d7;
4759          l_dim7_level_value_rec.dimension_Level_short_name := c_recs.dimension7_Level_short_name;
4760          l_dim_level_value_rec_p := l_dim7_level_value_rec;
4761          BIS_DIM_LEVEL_VALUE_PVT.DimensionX_ID_to_Value(
4762            p_api_version               => 1.0,
4763            p_Dim_Level_Value_Rec       => l_dim_level_value_rec_p,
4764            p_set_of_books_id           => l_set_of_books_id,
4765            x_Dim_Level_Value_rec       => l_dim7_level_value_rec,
4766            x_Return_Status             => l_return_status,
4767            x_error_Tbl                 => l_error_tbl
4768           );
4769 
4770          l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(l_dim7_level_value_rec.Dimension_level_Value_ID)||'">'||bis_utilities_pvt.escape_html_input(l_dim7_level_value_rec.Dimension_level_Value_Name);
4771         end if;
4772 
4773        if (l_dim7_tbl.COUNT <> 0) THEN
4774           removeDuplicates(p_original_tbl => l_dim7_tbl,
4775                            x_unique_tbl   => l_d7_tbl);
4776           for i in 1 ..l_d7_tbl.COUNT LOOP
4777              exit when (l_d7_tbl(i).id is NULL);
4778              -- mdamle - 01/15/2001 - Add quotes around VALUE
4779              l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(l_d7_tbl(i).id)||'">'||bis_utilities_pvt.escape_html_input(l_d7_tbl(i).name);
4780           end loop;
4781        end if;
4782        l_string := l_string ||'<OPTION>'||c_choose;
4783        l_string := l_string ||'</SELECT>';
4784        l_string := l_string ||'</td>';
4785        l_string := l_string ||'</TR>';
4786       end if;
4787 
4788      exit;
4789   end loop;     -- end of   c_recs looop
4790    -- ***********************************************
4791 
4792 
4793     -- Have a poplist for the Business Plan
4794      l_string := l_string ||'<!-- Row open for Business Plan poplist -->';
4795      l_string := l_string ||'<TR>';
4796      l_string := l_string ||'<TD ALIGN="RIGHT" class="x8" NOWRAP>'||bis_utilities_pvt.escape_html(c_plan)||'</TD>';
4797      l_string := l_string ||'<td align="left">';
4798      l_string := l_string ||'<SELECT NAME="plan">';
4799 
4800 
4801 
4802 
4803      for pl in plan_cur loop
4804       if pl.plan_id = TO_NUMBER(l_plan) then
4805         l_string := l_string ||'<OPTION SELECTED VALUE="'||bis_utilities_pvt.escape_html_input(pl.plan_id) ||'">'||bis_utilities_pvt.escape_html_input(pl.name);
4806       else
4807         l_string := l_string ||'<OPTION VALUE="'||bis_utilities_pvt.escape_html_input(pl.plan_id) ||'">'||bis_utilities_pvt.escape_html_input(pl.name);
4808       end if;
4809      end loop;
4810 
4811     l_string := l_string ||'</SELECT>';
4812     l_string := l_string ||'</td>';
4813     l_string := l_string ||'</TR>';
4814     l_string := l_string ||'</TABLE>';
4815     l_string := l_string ||'</td>';
4816     l_string := l_string ||'</TR>';
4817     l_string := l_string ||'<!-- end of row containing one more cell to center poplists -->';
4818     l_string := l_string ||'<!-- row open with horizontal line separator -->';
4819     l_string := l_string ||'<TR>';
4820     l_string := l_string ||'<td height=1 class="C_SEPARATOR_LINE"><IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
4821     l_string := l_string ||'</TR>';
4822     l_string := l_string ||'<TR>';
4823     l_string := l_string ||'<td height=5></td>';
4824     l_string := l_string ||'</TR>';
4825     l_string := l_string ||'<!-- row open for display label string  -->';
4826     l_string := l_string ||'<TR>';
4827     l_string := l_string ||'<td align="left">';
4828     l_string := l_string ||c_displabel;
4829     l_string := l_string ||'</td>';
4830     l_string := l_string ||'</TR>';
4831     l_string := l_string ||'<TR>';
4832     l_string := l_string ||'<td align="left" valign="TOP" nowrap="YES">';
4833     l_string := l_string ||'<INPUT TYPE="label" NAME="label" SIZE="41" MAXLENGTH="40">';
4834     l_string := l_string ||'</td>';
4835     l_string := l_string ||'</TR>';
4836     l_string := l_string ||'<TR>';
4837     l_string := l_string ||'<td height=5></td>';
4838     l_string := l_string ||'</TR>';
4839     l_string := l_string ||'<!-- Close embedded table containing the dim level poplists etc -->';
4840     l_string := l_string ||'</TABLE>';
4841     l_string := l_string ||'</td>';  -- close cell with dim labels and input boxes
4842     l_string := l_string ||'<!-- Put the right side separator and right edge of wire frame box -->';
4843     l_string := l_string ||'<td width=5></td>';
4844     l_string := l_string ||'<td width=1 class="C_WIRE_FRAME_COLOR"><IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
4845     l_string := l_string ||'</TR>';
4846     l_string := l_string ||'<TR>';
4847     l_string := l_string ||'<!-- Put the bottom edge of wireframe box -->';
4848     l_string := l_string ||'<td height=1 class="C_WIRE_FRAME_COLOR" colspan=5><IMG SRC="/OA_MEDIA/FNDINVDT.gif" height=1 width=1></td>';
4849     l_string := l_string ||'</TR>';
4850 
4851     l_string := l_string ||'<!-- close table wireframe box -->';
4852     l_string := l_string ||'</TABLE>';
4853     l_string := l_string ||'</td>';
4854     l_string := l_string ||'</TR>';
4855     l_string := l_string ||'</TABLE>';
4856     l_string := l_string ||'</td>';
4857     l_string := l_string ||'</TR>';
4858     l_string := l_string ||'<TR>';
4859     l_string := l_string ||'<td><BR></td>';
4860     l_string := l_string ||'<!-- Open last row containing the ok and cancel buttons -->';
4861     l_string := l_string ||'<TR>';
4862     l_string := l_string ||'<td align="center" colspan=2>';
4863     l_string := l_string ||'<table width="100%"><tr>';
4864     l_string := l_string ||'<td align="right" width="50%">';
4865 
4866     --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
4867     --icx_plug_utilities.buttonLeft
4868     --  (BIS_UTILITIES_PVT.getPrompt('BIS_OK'),'javascript:saveRename()');
4869     IF(l_swan_enabled)THEN
4870      l_button_edge:=BIS_UTILITIES_PVT.G_FLAT_EDGE;
4871     ELSE
4872      l_button_edge:=BIS_UTILITIES_PVT.G_ROUND_EDGE;
4873     END IF;
4874 
4875     l_button_tbl(1).left_edge := l_button_edge;
4876     l_button_tbl(1).right_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
4877     l_button_tbl(1).disabled := FND_API.G_FALSE;
4878     l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_OK');
4879     l_button_tbl(1).href := 'javascript:saveRename()';
4880     BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
4881     l_string := l_string ||l_button_str;
4882     l_string := l_string ||'</td><td align="left" width="50%">';
4883 
4884     --meastmon ICX Button is not ADA Complaint. ICX is not going to fix that.
4885     --icx_plug_utilities.buttonRight
4886     -- (BIS_UTILITIES_PVT.getPrompt('BIS_CANCEL'),'javascript:window.close()');
4887     l_button_tbl(1).left_edge := BIS_UTILITIES_PVT.G_FLAT_EDGE;
4888     l_button_tbl(1).right_edge := l_button_edge;
4889     l_button_tbl(1).disabled := FND_API.G_FALSE;
4890     l_button_tbl(1).label := BIS_UTILITIES_PVT.getPrompt('BIS_CANCEL');
4891     l_button_tbl(1).href := 'javascript:window.close()';
4892     BIS_UTILITIES_PVT.GetButtonString(l_button_tbl, l_button_str);
4893     l_string := l_string || l_button_str;
4894     l_string := l_string ||'</td></tr></table>';
4895     l_string := l_string ||'</td>';
4896     l_string := l_string ||'<!-- Close last row containing the ok and cancel buttons -->';
4897     l_string := l_string ||'</TR>';
4898     l_string := l_string ||'</TABLE>';
4899     l_string := l_string ||'</CENTER>';
4900     l_string := l_string ||'<!-- close form for this page -->';
4901     l_string := l_string ||'</FORM>';
4902     l_string := l_string ||'<SCRIPT LANGUAGE="JavaScript">loadName();</SCRIPT>';
4903     l_string := l_string ||'</BODY>';
4904     l_string := l_string ||'</HTML>';
4905 
4906 
4907 
4908  --end if;    -- icx_validate session
4909 --end if; -- icx_sec.validateSession
4910 
4911     x_string := l_string;
4912 
4913 exception
4914     when others then
4915         --htp.p(SQLERRM);
4916       x_string :=  SQLERRM;
4917 
4918 end editDimensions;
4919 
4920 
4921 
4922 -- *****************************************************
4923 --  Procedure inserts all the selected values
4924 -- *****************************************************
4925 procedure strDimensions(
4926  W                      in varchar2 DEFAULT NULL
4927 ,Z                      in pls_integer
4928 ,p_displaylabels_tbl    in Selected_Values_Tbl_Type
4929 ,p_back_url             in VARCHAR2
4930 ,p_reference_path       in VARCHAR2)
4931 
4932 is
4933   l_plug_id                 pls_integer;
4934   l_line                    varchar2(32000);
4935   l_line_length             pls_integer;
4936   l_point1                  pls_integer;
4937   l_point2                  pls_integer;
4938   l_point3                  pls_integer;
4939   l_point4                  pls_integer;
4940   l_point5                  pls_integer;
4941   l_point6                  pls_integer;
4942   l_point7                  pls_integer;
4943   l_point8                  pls_integer;
4944   -- mdamle 01/15/2001 - Use Dim6 and Dim7
4945   l_point9                  pls_integer;
4946   l_point10                 pls_integer;
4947 
4948   l_indlevel_id             pls_integer;
4949   l_d0                      varchar2(32000);
4950   l_d1                      varchar2(32000);
4951   l_d2                      varchar2(32000);
4952   l_d3                      varchar2(32000);
4953   l_d4                      varchar2(32000);
4954   l_d5                      varchar2(32000);
4955   -- mdamle 01/15/2001 - Use Dim6 and Dim7
4956   l_d6                      varchar2(32000);
4957   l_d7                      varchar2(32000);
4958 
4959   l_plan                    varchar2(32000);
4960   l_length                  pls_integer;
4961   l_display_label           varchar2(32000);
4962   l_error_tbl               BIS_UTILITIES_PUB.Error_Tbl_Type;
4963   l_return_status           varchar2(32000);
4964   l_indicator_region_values BIS_INDICATOR_REGION_PUB.Indicator_Region_Rec_Type;
4965   l_plan_idnum              pls_integer;
4966 
4967 begin
4968 
4969 
4970 
4971 -- meastmon 09/07/2001 Fix bug#1980577. Workaround Do not encrypt plug_id
4972 --l_plug_id := icx_call.decrypt2(Z);
4973 l_plug_id := Z;
4974 --if icx_sec.validateSession  then
4975 -- if ICX_SEC.validatePlugSession(l_plug_id) then
4976   g_user_id := icx_sec.getID(ICX_SEC.PV_USER_ID, '', icx_sec.g_session_id); --2751984
4977 
4978   -- Deleting the old rows of this userid and plugid from the selections table
4979    BIS_INDICATOR_REGION_PUB.Delete_User_Ind_Selections(
4980         p_api_version    => 1.0,
4981         p_user_id        => g_user_id,
4982         p_plug_id        => l_plug_id,
4983         x_return_status  => l_return_status,
4984         x_error_Tbl      => l_error_tbl);
4985 
4986 
4987   -- Read the contents of the plsql table of favorite display labels
4988   for i in 1 .. p_displaylabels_tbl.COUNT LOOP
4989      EXIT when p_displaylabels_tbl(i) is NULL;
4990      -- Unpack an item  from the Favorites box
4991      -- to obtain individual dim_level_value id's
4992 
4993     l_point1 := instr(p_displaylabels_tbl(i),'*',1,1);
4994     l_point2 := instr(p_displaylabels_tbl(i),'*',1,2);
4995     l_point3 := instr(p_displaylabels_tbl(i),'*',1,3);
4996     l_point4 := instr(p_displaylabels_tbl(i),'*',1,4);
4997     l_point5 := instr(p_displaylabels_tbl(i),'*',1,5);
4998     l_point6 := instr(p_displaylabels_tbl(i),'*',1,6);
4999     l_point7 := instr(p_displaylabels_tbl(i),'*',1,7);
5000     l_point8 := instr(p_displaylabels_tbl(i),'*',1,8);
5001     -- mdamle 01/15/2001 - Use Dim6 and Dim7
5002     l_point9 := instr(p_displaylabels_tbl(i),'*',1,9);
5003     l_point10 := instr(p_displaylabels_tbl(i),'*',1,10);
5004 
5005     l_indlevel_id := substr(p_displaylabels_tbl(i),1,l_point1-1);
5006 
5007     -- mdamle 01/15/2001 - Use Dim6 and Dim7
5008   -- d0 contains the org value for backward compatibility
5009   -- Replace @ with plus (actual data contains plus)
5010 
5011     l_d0 := substr(p_displaylabels_tbl(i),l_point1+1,l_point2 - l_point1 - 1);
5012     l_d1 := REPLACE(substr(p_displaylabels_tbl(i),l_point2+1,l_point3 - l_point2 - 1), c_at, c_plus) ;
5013     l_d2 := REPLACE(substr(p_displaylabels_tbl(i),l_point3+1,l_point4 - l_point3 - 1), c_at, c_plus);
5014     l_d3 := REPLACE(substr(p_displaylabels_tbl(i),l_point4+1,l_point5 - l_point4 - 1), c_at, c_plus);
5015     l_d4 := REPLACE(substr(p_displaylabels_tbl(i),l_point5+1,l_point6 - l_point5 - 1), c_at, c_plus);
5016     l_d5 := REPLACE(substr(p_displaylabels_tbl(i),l_point6+1,l_point7 - l_point6 - 1), c_at, c_plus);
5017     l_d6 := REPLACE(substr(p_displaylabels_tbl(i),l_point7+1,l_point8 - l_point7 - 1), c_at, c_plus);
5018     l_d7 := REPLACE(substr(p_displaylabels_tbl(i),l_point8+1,l_point9 - l_point8 - 1), c_at, c_plus);
5019 
5020     -- mdamle 01/15/2001 - Use Dim6 and Dim7
5021     -- l_plan := substr(p_displaylabels_tbl(i),l_point7+1,l_point8-l_point7-1);
5022     -- l_display_label := substr(p_displaylabels_tbl(i),l_point8+1);
5023     l_plan := substr(p_displaylabels_tbl(i),l_point9+1,l_point10-l_point9-1);
5024     l_display_label := substr(p_displaylabels_tbl(i),l_point10+1);
5025 
5026 
5027   --
5028   -- ****************************** Debug stuff ***************
5029    -- htp.p('p_display_label_tbl '||p_displaylabels_tbl(i)||'<BR>');
5030    -- htp.p('<BR>'||l_indlevel_id||'*'||l_d0||'*'||l_d1||'*'||l_d2||'*'
5031    --      ||l_d3||'*'||l_d4||
5032    --      '*'||l_d5||'*'||l_plan||'*'||l_display_label||'<BR>');
5033   -- ***********************************************************
5034 
5035   -- Transfer the values to the fields in the record
5036   l_indicator_region_values.USER_ID             :=  g_user_id;
5037   l_indicator_region_values.TARGET_LEVEL_ID     :=  l_indlevel_id;
5038   -- mdamle 01/15/2001 - Don't pass in the Org_level_value_id anymore
5039   -- l_indicator_region_values.ORG_LEVEL_VALUE_id  :=  l_d0;
5040   l_indicator_region_values.LABEL               :=  l_display_label;
5041   l_indicator_region_values.PLUG_ID             :=  l_plug_id;
5042   l_indicator_region_values.DIM1_LEVEL_VALUE_ID :=  l_d1;
5043   l_indicator_region_values.DIM2_LEVEL_VALUE_ID :=  l_d2;
5044   l_indicator_region_values.DIM3_LEVEL_VALUE_ID :=  l_d3;
5045   l_indicator_region_values.DIM4_LEVEL_VALUE_ID :=  l_d4;
5046   l_indicator_region_values.DIM5_LEVEL_VALUE_ID :=  l_d5;
5047   -- mdamle 01/15/2001 - Use Dim6 and Dim7
5048   l_indicator_region_values.DIM6_LEVEL_VALUE_ID :=  l_d6;
5049   l_indicator_region_values.DIM7_LEVEL_VALUE_ID :=  l_d7;
5050 
5051   l_indicator_region_values.PLAN_ID             :=  l_plan;
5052 
5053     BIS_INDICATOR_REGION_PUB.Create_User_Ind_Selection(
5054         p_api_version          => 1.0,
5055         p_Indicator_Region_Rec => l_indicator_region_values,
5056         x_return_status        => l_return_status,
5057         x_error_Tbl            => l_error_tbl);
5058 
5059   -- ********* Debug stuff ********************
5060 -- htp.p('respid :'||l_resp_id);
5061 -- htp.p('tarid  :'||l_tar_id);
5062 -- htp.p('orgid  :'||l_org_id);
5063 -- htp.p('disp   :'||l_disp);
5064   -- *******************************************
5065 
5066    end loop;  --  loop  for the input plsql table
5067 
5068   IF (p_reference_path IS NOT NULL) THEN
5069     UPDATE icx_portlet_customizations
5070     SET caching_key = TO_CHAR(NVL(caching_key, 0) + 1)
5071     WHERE reference_path = p_reference_path;
5072     COMMIT;
5073   END IF;
5074 
5075    --icx_plug_utilities.gotoMainMenu; -- Go back to the main page
5076 
5077 -- end if;  -- icx_validate_session
5078 --end if; -- icx_sec.validateSession
5079  exception
5080    when others then NULL;
5081 
5082 end strDimensions;
5083 
5084 -- ****************************************************************
5085 --  Removes the duplicates from a plsql table
5086 -- ****************************************************************
5087 procedure removeDuplicates(
5088  p_original_tbl         in  no_duplicates_tbl_Type
5089 ,p_value                in  varchar2  default NULL
5090 ,x_unique_tbl           out NOCOPY no_duplicates_tbl_Type
5091 )
5092 is
5093 l_temp_tbl             no_duplicates_tbl_Type;
5094 l_cnt                  pls_integer;
5095 l_unique               BOOLEAN;
5096 
5097 begin
5098  -- Remove the duplicates from the l_selections_tbl
5099  IF p_value is NOT NULL THEN
5100   FOR i in 1 .. p_original_tbl.COUNT LOOP
5101     IF (p_value <> p_original_tbl(i).id) THEN
5102      l_unique := TRUE;
5103      FOR j in 1 .. l_temp_tbl.COUNT LOOP
5104         if p_original_tbl(i).id = l_temp_tbl(j).id then
5105           l_unique := FALSE;
5106         end if;
5107      END LOOP;
5108      if (l_unique) then
5109        l_cnt := l_temp_tbl.COUNT + 1;
5110        l_temp_tbl(l_cnt).id := p_original_tbl(i).id;
5111        l_temp_tbl(l_cnt).name := p_original_tbl(i).name;
5112      end if;
5113    END IF;
5114   END LOOP;
5115    x_unique_tbl := l_temp_tbl;  -- Transfer the uniques out NOCOPY
5116  ELSE             -- if p_value is null
5117   FOR i in 1 .. p_original_tbl.COUNT LOOP
5118      l_unique := TRUE;
5119      FOR j in 1 .. l_temp_tbl.COUNT LOOP
5120         if p_original_tbl(i).id = l_temp_tbl(j).id then
5121           l_unique := FALSE;
5122         end if;
5123      END LOOP;
5124      if (l_unique) then
5125        l_cnt := l_temp_tbl.COUNT + 1;
5126        l_temp_tbl(l_cnt).id := p_original_tbl(i).id;
5127        l_temp_tbl(l_cnt).name := p_original_tbl(i).name;
5128      end if;
5129   END LOOP;
5130    x_unique_tbl := l_temp_tbl;  -- Transfer the uniques out NOCOPY
5131  END IF;     -- To check if the extra parameter p_value is null or not
5132 
5133 exception
5134    when others then htp.p(SQLERRM);
5135 
5136 end removeDuplicates;
5137 
5138 PROCEDURE clearSelect(
5139   p_formName     IN VARCHAR2
5140 , p_elementTable IN BIS_UTILITIES_PUB.BIS_VARCHAR_TBL
5141 , x_clearString  OUT NOCOPY VARCHAR2
5142 )
5143 IS
5144 l_clear       VARCHAR2(32000);
5145 l_conditions  VARCHAR2(32000);
5146 l_and         VARCHAR2(10) := '&&';
5147 BEGIN
5148 
5149   FOR i IN 1..p_elementTable.count LOOP
5150     IF i = 1 THEN
5151        l_conditions := '
5152           (document.'||p_formName||'.elements[i].name != document.'
5153           ||p_formName||'.'||p_elementTable(i)||'.name)';
5154     ELSE
5155        l_conditions := l_conditions||'
5156           '||l_and||'
5157           (document.'||p_formName||'.elements[i].name != document.'
5158           ||p_formName||'.'||p_elementTable(i)||'.name)';
5159     END IF;
5160   END LOOP;
5161 
5162 
5163   l_clear :=
5164   'var k = 0;
5165    var s = new String("select");
5166 
5167    for (var i=0; i<document.'||p_formName||'.elements.length; i++) {
5168      var x = document.'||p_formName||'.elements[i].type;
5169      var t = x.substring(0,6);
5170 
5171      if (t == s) {
5172        if ('||l_conditions||')
5173           {
5174           for (var j=1;j<document.'||p_formName||'.elements[i].length-1;j++) {
5175             x = document.'||p_formName||'.elements[i].options[j] = null;
5176           }
5177        }
5178      }
5179    }';
5180 
5181   x_clearString := l_clear;
5182 
5183 EXCEPTION
5184   WHEN OTHERS THEN
5185     htp.p(SQLERRM);
5186 
5187 END clearSelect;
5188 
5189 PROCEDURE SetSetOfBookVar(
5190   p_user_id      IN integer
5191 , p_formName     IN VARCHAR2
5192 , p_index        IN VARCHAR2
5193 , x_sobString    OUT NOCOPY VARCHAR2
5194 )
5195 IS
5196 l_sobString VARCHAR2(32000);
5197 BEGIN
5198 
5199   l_sobString :=
5200 '    if (document.'||p_formName||'.set_sob.value == "TRUE")
5201       {
5202 
5203          var dim0_level_id = document.'||p_formName||'.dim0_level_id.value;
5204          var dim0_index = document.'||p_formName||'.dim0.selectedIndex;
5205          var dim0_id = document.'||p_formName||'.dim0.options[dim0_index].value;
5206          var dim0_g_var = "BIS_TARGET_PVT.G_SET_OF_BOOK_ID";
5207          var c_qry = "'||p_user_id||c_asterisk||'" + ind + "'||c_asterisk
5208                         ||'" + dim_lvl_id + "'||c_asterisk
5209                         ||'" + dim0_g_var + "'||c_asterisk
5210                         ||'" + dim0_level_id + "'||c_asterisk
5211                         ||'" + dim0_id;
5212 
5213       }
5214     else
5215       {
5216        var dim0_id="";
5217 
5218 
5219        var c_qry = "'||p_user_id||c_asterisk||'" + ind + "'||c_asterisk
5220                         ||'" + dim_lvl_id + "'||c_asterisk
5221                         ||c_asterisk
5222                         ||c_asterisk ||'";
5223 
5224 
5225       }';
5226 
5227   x_sobString := l_sobString;
5228 
5229 EXCEPTION
5230   WHEN OTHERS THEN
5231     htp.p(SQLERRM);
5232 END SetSetOfBookVar;
5233 
5234 -- mdamle 01/12/2001 Get Performance Measure + Dim Level info
5235 function getPerformanceMeasureName(
5236   p_target_level_id  IN number
5237 ) return varchar2 IS
5238 l_perf_meas_name         bis_indicators_tl.name%TYPE;
5239 Begin
5240    begin
5241   select measure_name || ' (' || DIMENSION1_LEVEL_NAME || decode(DIMENSION2_LEVEL_NAME, '', '', ' - ' || DIMENSION2_LEVEL_NAME)
5242   || decode(DIMENSION3_LEVEL_NAME, '', '', ' - ' || DIMENSION3_LEVEL_NAME) || decode(DIMENSION4_LEVEL_NAME, '', '', ' - ' || DIMENSION4_LEVEL_NAME)
5243   || decode(DIMENSION5_LEVEL_NAME, '', '', ' - ' || DIMENSION5_LEVEL_NAME) || decode(DIMENSION6_LEVEL_NAME, '', '', ' - ' || DIMENSION6_LEVEL_NAME)
5244   || decode(DIMENSION7_LEVEL_NAME, '', '', ' - ' || DIMENSION7_LEVEL_NAME) || ')'
5245                                      into l_perf_meas_name
5246   from bisfv_target_levels tl
5247         Where tl.target_level_id = p_target_level_id;
5248     exception
5249       when others then
5250       l_perf_meas_name := '';
5251   end;
5252 
5253   return l_perf_meas_name;
5254 
5255 end getPerformanceMeasureName;
5256 
5257 -- mdamle 01/15/2001 - Get the Dimension sequence for the Org dimension
5258 function getOrgSeqNum(
5259   p_target_level_id  IN number
5260 ) return number IS
5261 l_OrgSeqNum        number;
5262 Begin
5263            begin
5264              SELECT x.sequence_no into l_OrgSeqNum
5265              FROM   bis_indicator_dimensions x, bis_dimensions y, bis_target_levels z
5266              WHERE  x.dimension_id = y.dimension_id
5267              AND    y.short_name like BIS_UTILITIES_PVT.GET_ORG_DIMENSION_NAME_TL(p_target_level_id,NULL)
5268              AND    x.indicator_id = z.indicator_id
5269              AND    z.target_level_id = p_target_level_id;
5270            exception
5271               when others then
5272                l_OrgSeqNum := 0;
5273            end;
5274 
5275   return l_OrgSeqNum;
5276 
5277 end getOrgSeqNum;
5278 
5279 -- mdamle 01/15/2001 - Get the Dimension sequence for the Time dimension
5280 function getTimeSeqNum(
5281   p_target_level_id  IN number
5282 ) return number IS
5283 l_TimeSeqNum         number;
5284 Begin
5285            begin
5286              SELECT x.sequence_no into l_TimeSeqNum
5287              FROM   bis_indicator_dimensions x, bis_dimensions y, bis_target_levels z
5288              WHERE  x.dimension_id = y.dimension_id
5289              AND    y.short_name like BIS_UTILITIES_PVT.GET_TIME_DIMENSION_NAME_TL(p_target_level_id,NULL)
5290              AND    x.indicator_id = z.indicator_id
5291              AND    z.target_level_id = p_target_level_id ;
5292            exception
5293               when others then
5294                l_TimeSeqNum := 0;
5295            end;
5296 
5297   return l_TimeSeqNum;
5298 
5299 end getTimeSeqNum;
5300 
5301 function getOrgLevelID(
5302   p_target_level_id  IN number
5303 ) return number IS
5304 l_OrgSeqNum               number;
5305 l_OrgLevelValueID         number;
5306 l_dimension1_level_id     number;
5307 l_dimension2_level_id     number;
5308 l_dimension3_level_id     number;
5309 l_dimension4_level_id     number;
5310 l_dimension5_level_id     number;
5311 l_dimension6_level_id     number;
5312 l_dimension7_level_id     number;
5313 Begin
5314   l_OrgSeqNum := getOrgSeqNum(p_target_level_id);
5315 
5316   if l_OrgSeqNum > 0 then
5317      begin
5318         SELECT dimension1_level_id, dimension2_level_id, dimension3_level_id,
5319            dimension1_level_id, dimension5_level_id, dimension6_level_id,
5320          dimension7_level_id
5321         INTO l_dimension1_level_id, l_dimension2_level_id, l_dimension3_level_id,
5322            l_dimension4_level_id, l_dimension5_level_id, l_dimension6_level_id,
5323          l_dimension7_level_id
5324         FROM BIS_TARGET_LEVELS
5325         WHERE target_level_id = p_target_level_id;
5326      exception
5327         when others then
5328           l_OrgLevelValueID := null;
5329      end;
5330      if l_OrgLevelValueID is not null then
5331         if l_OrgSeqNum = 1 then
5332            l_OrgLevelValueID := l_dimension1_level_id;
5333         end if;
5334         if l_OrgSeqNum = 2 then
5335            l_OrgLevelValueID := l_dimension2_level_id;
5336         end if;
5337         if l_OrgSeqNum = 3 then
5338            l_OrgLevelValueID := l_dimension3_level_id;
5339         end if;
5340         if l_OrgSeqNum = 4 then
5341            l_OrgLevelValueID := l_dimension4_level_id;
5342         end if;
5343         if l_OrgSeqNum = 5 then
5344            l_OrgLevelValueID := l_dimension5_level_id;
5345         end if;
5346         if l_OrgSeqNum = 6 then
5347            l_OrgLevelValueID := l_dimension6_level_id;
5348         end if;
5349         if l_OrgSeqNum = 7 then
5350            l_OrgLevelValueID := l_dimension7_level_id;
5351         end if;
5352      end if;
5353   end if;
5354   return l_OrgLevelValueID;
5355 
5356 end getOrgLevelID;
5357 
5358 -- sbuenits 02/16/2001
5359 PROCEDURE pmr_content (
5360    p_target_level_id          IN       NUMBER,
5361    p_org_level_value          IN       VARCHAR2,
5362    p_dimension1_level_value   IN       VARCHAR2,
5363    p_dimension2_level_value   IN       VARCHAR2,
5364    p_dimension3_level_value   IN       VARCHAR2,
5365    p_dimension4_level_value   IN       VARCHAR2,
5366    p_dimension5_level_value   IN       VARCHAR2,
5367    p_dimension6_level_value   IN       VARCHAR2,
5368    p_dimension7_level_value   IN       VARCHAR2,
5369    p_plan_id                  IN       NUMBER,
5370    actual_id                  OUT NOCOPY      NUMBER,
5371    actual                     OUT NOCOPY      NUMBER,
5372    target_id                  OUT NOCOPY      NUMBER,
5373    target                     OUT NOCOPY      NUMBER,
5374    range1_high                OUT NOCOPY      NUMBER,
5375    range1_low                 OUT NOCOPY      NUMBER,
5376    range2_high                OUT NOCOPY      NUMBER,
5377    range2_low                 OUT NOCOPY      NUMBER,
5378    role1_id                   OUT NOCOPY      NUMBER,
5379    role2_id                   OUT NOCOPY      NUMBER,
5380    time_level_value_id        OUT NOCOPY      VARCHAR2,
5381    status                     OUT NOCOPY      VARCHAR2,
5382    is_in_range                OUT NOCOPY      VARCHAR2
5383 )
5384  IS
5385    dummy             PLS_INTEGER;
5386    return_status     VARCHAR2(255);
5387    token             VARCHAR2(1)                    := '';
5388    rec_bis_target    bis_target_pub.target_rec_type;
5389 
5390    CURSOR cur_notimelvl (p_tarid IN PLS_INTEGER)
5391    IS
5392       SELECT tlv.target_level_id
5393         FROM bisbv_target_levels tlv, bis_levels blv
5394        WHERE tlv.target_level_id = p_tarid
5395          AND (
5396                    tlv.dimension1_level_id = blv.level_id
5397                 OR tlv.dimension2_level_id = blv.level_id
5398                 OR tlv.dimension3_level_id = blv.level_id
5399                 OR tlv.dimension4_level_id = blv.level_id
5400                 OR tlv.dimension5_level_id = blv.level_id
5401                 OR tlv.dimension6_level_id = blv.level_id
5402                 OR tlv.dimension7_level_id = blv.level_id
5403              )
5404          AND blv.short_name = 'TOTAL_TIME';
5405 
5406    CURSOR cur_actual
5407    IS
5408       SELECT actual_id,
5409              actual_value
5410         FROM bisbv_actuals acts
5411        WHERE acts.target_level_id = p_target_level_id
5412          AND NVL (acts.dimension1_level_value, '1') =
5413                 NVL (p_dimension1_level_value, '1')
5414          AND NVL (acts.dimension2_level_value, '1') =
5415                 NVL (p_dimension2_level_value, '1')
5416          AND NVL (acts.dimension3_level_value, '1') =
5417                 NVL (p_dimension3_level_value, '1')
5418          AND NVL (acts.dimension4_level_value, '1') =
5419                 NVL (p_dimension4_level_value, '1')
5420          AND NVL (acts.dimension5_level_value, '1') =
5421                 NVL (p_dimension5_level_value, '1')
5422          AND NVL (acts.dimension6_level_value, '1') =
5423                 NVL (p_dimension6_level_value, '1')
5424          AND NVL (acts.dimension7_level_value, '1') =
5425                 NVL (p_dimension7_level_value, '1');
5426 
5427    rec_actual        cur_actual%ROWTYPE;
5428 
5429    CURSOR cur_target
5430    IS
5431       SELECT target,
5432              target_id,
5433              NVL (range1_low, 0) range1_low,
5434              NVL (range1_high, 0) range1_high,
5435              range2_low,
5436              range2_high,
5437              range3_low,
5438              range3_high,
5439              notify_resp1_id,
5440              notify_resp2_id,
5441              notify_resp3_id
5442         FROM bisbv_targets tars
5443        WHERE tars.target_level_id = p_target_level_id
5444          AND tars.plan_id = p_plan_id
5445          AND NVL (tars.dim1_level_value_id, '1') =
5446                 NVL (p_dimension1_level_value, '1')
5447          AND NVL (tars.dim2_level_value_id, '1') =
5448                 NVL (p_dimension2_level_value, '1')
5449          AND NVL (tars.dim3_level_value_id, '1') =
5450                 NVL (p_dimension3_level_value, '1')
5451          AND NVL (tars.dim4_level_value_id, '1') =
5452                 NVL (p_dimension4_level_value, '1')
5453          AND NVL (tars.dim5_level_value_id, '1') =
5454                 NVL (p_dimension5_level_value, '1')
5455          AND NVL (tars.dim6_level_value_id, '1') =
5456                 NVL (p_dimension6_level_value, '1')
5457          AND NVL (tars.dim7_level_value_id, '1') =
5458                 NVL (p_dimension7_level_value, '1');
5459 
5460    rec_target        cur_target%ROWTYPE;
5461 
5462    CURSOR cur_compute_tar
5463    IS
5464       SELECT computing_function_id
5465         FROM bisbv_target_levels
5466        WHERE target_level_id = p_target_level_id;
5467 
5468    rec_compute_tar   cur_compute_tar%ROWTYPE;
5469 BEGIN
5470    OPEN cur_notimelvl (p_target_level_id);
5471    FETCH cur_notimelvl INTO dummy;
5472 
5473    IF cur_notimelvl%FOUND
5474    THEN
5475       -- This Target Level id refers to Total Time and so just check
5476       -- the range(timelevel is -1) and no need to worry about the
5477       -- current period
5478       rec_bis_target.time_level_value_id := '-1';
5479    end if;
5480 
5481    CLOSE cur_notimelvl;
5482 
5483 
5484          OPEN cur_target;
5485          FETCH cur_target INTO rec_target;
5486 
5487          IF cur_target%FOUND
5488          THEN
5489             IF rec_target.target IS NULL
5490             THEN
5491                OPEN cur_compute_tar;
5492                FETCH cur_compute_tar INTO rec_compute_tar;
5493                CLOSE cur_compute_tar;
5494                -- exception handling required for invocation below
5495                rec_bis_target.target_level_id := p_target_level_id;
5496                rec_bis_target.plan_id := p_plan_id;
5497                rec_bis_target.org_level_value_id := p_org_level_value;
5498                rec_bis_target.dim1_level_value_id := p_dimension1_level_value;
5499                rec_bis_target.dim2_level_value_id := p_dimension2_level_value;
5500                rec_bis_target.dim3_level_value_id := p_dimension3_level_value;
5501                rec_bis_target.dim4_level_value_id := p_dimension4_level_value;
5502                rec_bis_target.dim5_level_value_id := p_dimension5_level_value;
5503                rec_bis_target.dim6_level_value_id := p_dimension6_level_value;
5504                rec_bis_target.dim7_level_value_id := p_dimension7_level_value;
5505 
5506                BEGIN
5507                   rec_target.target :=
5508                      NVL (
5509                         bis_target_pvt.get_target (
5510                            rec_compute_tar.computing_function_id,
5511                            rec_bis_target
5512                         ),
5513                         0
5514                      );
5515                EXCEPTION
5516                   WHEN OTHERS
5517                   THEN
5518                      -- DBMS_OUTPUT.put_line (
5519                      --   'Error ' || TO_CHAR (SQLCODE) || ': ' || SQLERRM
5520                     -- );
5521                     --  RAISE;
5522                    NULL;
5523                END;
5524             END IF;   --end if target is null
5525 
5526          CLOSE cur_target;
5527 
5528 OPEN cur_actual;
5529       FETCH cur_actual INTO rec_actual;
5530 
5531       IF cur_actual%FOUND
5532       THEN
5533 
5534             IF    (rec_actual.actual_value <
5535                      rec_target.target * (1 - 0.01 * rec_target.range1_low))
5536                OR (rec_actual.actual_value >
5537                      rec_target.target * (1 + 0.01 * rec_target.range1_high))
5538             THEN
5539                token := '*';
5540             END IF;   -- end comparison
5541 
5542          END IF;   -- end cur_actual%FOUND
5543  CLOSE cur_actual;
5544 
5545       END IF;   --end cur_target%FOUND
5546 
5547 
5548 
5549    actual_id := rec_actual.actual_id;
5550    actual := rec_actual.actual_value;
5551    target_id := rec_target.target_id;
5552    target := rec_target.target;
5553    range1_high := rec_target.range1_high;
5554    range1_low := rec_target.range1_low;
5555    range2_high := rec_target.range2_high;
5556    range2_low := rec_target.range2_low;
5557    role1_id := rec_target.notify_resp1_id;
5558    role2_id := rec_target.notify_resp2_id;
5559    time_level_value_id := rec_bis_target.time_level_value_id;
5560    is_in_range := token;
5561 END pmr_content;
5562 
5563 function region_content (
5564    p_target_level_id          IN       NUMBER,
5565    p_org_level_value          IN       VARCHAR2,
5566    p_dimension1_level_value   IN       VARCHAR2,
5567    p_dimension2_level_value   IN       VARCHAR2,
5568    p_dimension3_level_value   IN       VARCHAR2,
5569    p_dimension4_level_value   IN       VARCHAR2,
5570    p_dimension5_level_value   IN       VARCHAR2,
5571    p_dimension6_level_value   IN       VARCHAR2,
5572    p_dimension7_level_value   IN       VARCHAR2,
5573    p_plan_id                  IN       NUMBER,
5574    separator                  IN       VARCHAR2
5575   ) return VARCHAR2
5576 is
5577 
5578    x_actual_id                        NUMBER := 0;
5579    x_actual                           NUMBER := 0;
5580    x_target_id                        NUMBER := 0;
5581    x_target                           NUMBER := 0;
5582    x_range1_high                      NUMBER := 0;
5583    x_range1_low                       NUMBER := 0;
5584    x_range2_high                      NUMBER := 0;
5585    x_range2_low                       NUMBER := 0;
5586    x_role1_id                         NUMBER := 0;
5587    x_role2_id                         NUMBER := 0;
5588    x_time_level_value_id              VARCHAR2(250) := '';
5589    x_status                           VARCHAR2(255) := '';
5590    x_is_in_range                      VARCHAR2(1) := '';
5591 
5592 begin
5593 
5594    pmr_content(p_target_level_id, p_org_level_value, p_dimension1_level_value
5595        ,p_dimension2_level_value, p_dimension3_level_value,
5596    p_dimension4_level_value,
5597    p_dimension5_level_value,
5598    p_dimension6_level_value,
5599    p_dimension7_level_value,
5600    p_plan_id                ,
5601    x_actual_id ,
5602    x_actual    ,
5603    x_target_id,
5604    x_target,
5605    x_range1_high,
5606    x_range1_low,
5607    x_range2_high,
5608    x_range2_low,
5609    x_role1_id,
5610    x_role2_id,
5611    x_time_level_value_id,
5612    x_status,
5613    x_is_in_range);
5614 
5615 return x_is_in_range ||NVL(x_actual,0) ||separator|| x_target_id;
5616 end region_content;
5617 
5618 -- ******************************************************************
5619 --rmohanty
5620 PROCEDURE build_html_banner    ------------------ VERSION 1 (definition of)
5621 ( title                 IN  VARCHAR2,
5622   help_target           IN  VARCHAR2
5623   )
5624   is
5625      nls_language_code    varchar2(2000);
5626      icx_report_images    varchar2(2000);
5627      HTML_banner          varchar2(32000);
5628 begin
5629    nls_language_code := Get_NLS_Language;
5630    icx_report_images := Get_Images_Server;
5631 
5632    --- --- --- This part used to call the ICX banner builder.
5633 ---   icx_plug_utilities.toolbar(
5634 ---             p_text => title
5635 ---           , p_disp_help => 'Y'
5636 ---           , p_disp_exit => 'Y'
5637 ---           );
5638   --- --- ---
5639    Build_HTML_Banner (icx_report_images      -------------- VERSION 5 (call to)
5640           , help_target
5641           , nls_language_code
5642           , title
5643           , ''
5644           , FALSE
5645           , FALSE
5646           , HTML_Banner
5647           );
5648      htp.p(HTML_Banner);
5649 
5650 end Build_HTML_Banner;
5651 
5652 PROCEDURE build_html_banner  ------------- VERSION 2 (definition of)
5653 ( rdf_filename  IN  VARCHAR2,
5654   title         IN  VARCHAR2,
5655   menu_link     IN  VARCHAR2,
5656   HTML_Banner   OUT NOCOPY VARCHAR2
5657 )
5658 is
5659 begin
5660   Build_HTML_Banner( rdf_filename  ----------------- VERSION 4 (call to)
5661                    , title
5662                    , menu_link
5663                    , FALSE
5664                    , FALSE
5665                    , HTML_Banner
5666                    );
5667 end Build_HTML_Banner;
5668 
5669 PROCEDURE Build_HTML_Banner
5670   (icx_report_images     IN  VARCHAR2,  ------- VERSION 3 (defintion of)
5671    more_info_directory   IN  VARCHAR2,
5672    nls_language_code     IN  VARCHAR2,
5673    title                 IN  VARCHAR2,
5674    menu_link             IN  VARCHAR2,
5675    HTML_Banner           OUT NOCOPY VARCHAR2)
5676 is
5677 begin
5678 
5679   Build_HTML_Banner( icx_report_images      ------ VERSION 5 (call to)
5680                    , more_info_directory
5681                    , nls_language_code
5682                    , title
5683                    , menu_link
5684                    , FALSE
5685                    , FALSE
5686                    , HTML_Banner
5687                    );
5688 
5689 end Build_HTML_Banner;
5690 
5691 PROCEDURE build_html_banner                   -------- VERSION 4 (definition of)
5692 ( rdf_filename          IN  VARCHAR2,
5693   title           IN  VARCHAR2,
5694   menu_link           IN  VARCHAR2,
5695   related_reports_exist IN  BOOLEAN,
5696   parameter_page        IN  BOOLEAN,
5697   HTML_Banner           OUT NOCOPY VARCHAR2
5698 )
5699 is
5700 icx_report_images    varchar2(2000);
5701 more_info_directory  varchar2(2000);
5702 nls_language_code    varchar2(2000);
5703 begin
5704 
5705   icx_report_images := Get_Images_Server;
5706   nls_language_code := Get_NLS_Language;
5707 
5708   Build_HTML_Banner( icx_report_images             ------------ VERSION 5 (call to)
5709                    , rdf_filename
5710                    , nls_language_code
5711                    , title
5712                    , menu_link
5713                    , related_reports_exist
5714                    , parameter_page
5715                    , HTML_Banner
5716                    );
5717 
5718 end Build_HTML_Banner;
5719 
5720 PROCEDURE build_html_banner   ------------ VERSION 5 (definition of)
5721   (icx_report_images     IN  VARCHAR2,
5722    more_info_directory   IN  VARCHAR2,
5723    nls_language_code     IN  VARCHAR2,
5724    title           IN  VARCHAR2,
5725    menu_link           IN  VARCHAR2,
5726    related_reports_exist IN  BOOLEAN,
5727    parameter_page        IN  BOOLEAN,
5728    HTML_Banner           OUT NOCOPY VARCHAR2
5729    )
5730 
5731   IS
5732       Related_Alt           VARCHAR2(80);
5733       Menu_Alt              VARCHAR2(80);
5734       Home_Alt              VARCHAR2(80);
5735       Help_Alt              VARCHAR2(80);
5736 
5737    Return_Alt             VARCHAR2(1000);
5738    Parameters_Alt         VARCHAR2(1000);
5739    NewMenu_Alt            VARCHAR2(80);
5740    NewHelp_Alt            VARCHAR2(80);
5741    Return_Description     VARCHAR2(1000);
5742    Parameters_Description VARCHAR2(1000);
5743    NewMenu_Description    VARCHAR2(80);
5744    NewHelp_Description    VARCHAR2(80);
5745 
5746    Related_Description   VARCHAR2(80);
5747    Home_Description      VARCHAR2(80);
5748    Menu_Description      VARCHAR2(80);
5749    Help_Description      VARCHAR2(80);
5750    Image_Directory       VARCHAR2(250);
5751    Home_page             VARCHAR2(2000);
5752    Menu_Padding          NUMBER(5);
5753    Home_URL              VARCHAR2(200);
5754    Plsql_Agent           VARCHAR2(100);
5755    Host_File             VARCHAR2(80);
5756    l_profile             VARCHAR2(2000);
5757    l_section_header      VARCHAR2(1000);
5758 
5759    l_css                 VARCHAR2(1000);
5760    CSSDirectory          VARCHAR2(1000);
5761    l_HTML_HEADER         VARCHAR2(2000);
5762    l_HTML_body           VARCHAR2(2000);
5763    l_ampersand           VARCHAR2(20):=' ';
5764 
5765    Parampage_Alt   VARCHAR2(32000);
5766    Parampage_Description VARCHAR2(32000);
5767 BEGIN
5768 
5769      Get_Translated_Icon_Text ('RELATED', Related_Alt, Related_Description);
5770      Get_Translated_Icon_Text ('MENU', Menu_Alt, Menu_Description);
5771      Get_Translated_Icon_Text ('HOME', Home_Alt, Home_Description);
5772      Get_Translated_Icon_Text ('HELP', Help_Alt, Help_Description);
5773      Get_Translated_Icon_Text ('PARAMPAGE', Parampage_Alt, Parampage_Description);
5774 
5775      Get_Translated_Icon_Text ('RETURNTOPORTAL', Return_Alt, Return_Description);
5776      Get_Translated_Icon_Text ('PARAMETERS', Parameters_Alt, Parameters_Description);
5777      Get_Translated_Icon_Text ('NEWHELP', NewHelp_Alt, NewHelp_Description);
5778      Get_Translated_Icon_Text ('NEWMENU', NewMenu_Alt, NewMenu_Description);
5779 
5780      -- mdamle 05/31/2001 - New ICX Profile for OA_HTML, OA_MEDIA
5781      -- l_css := FND_PROFILE.value('ICX_OA_HTML');
5782      --added '/' here , otherwise the style sheet was not getting picked
5783      -- CSSDirectory  := '/' || FND_WEB_CONFIG.TRAIL_SLASH(l_css);
5784      CSSDirectory  :=BIS_REPORT_UTIL_PVT.get_html_server;
5785 
5786      -- mdamle 05/31/2001 - New ICX Profile for OA_HTML, OA_MEDIA
5787      -- Image_Directory :=  FND_WEB_CONFIG.TRAIL_SLASH(ICX_REPORT_IMAGES);
5788      Image_Directory := BIS_REPORT_UTIL_PVT.get_Images_Server;
5789 
5790      Home_URL := BIS_REPORT_UTIL_PVT.Get_Home_URL;
5791      l_section_header := FND_MESSAGE.GET_STRING('BIS','BIS_SPECIFY_PARAMS');
5792 
5793       l_HTML_Header :=
5794     '<head>
5795        <!- Banner by BISVRUTB.pls V 5 ->
5796        <title>' || bis_utilities_pvt.escape_html(title) || '</title>
5797   <LINK REL="stylesheet" HREF="'
5798   ||CSSDirectory
5799   ||'bismarli.css">
5800    <SCRIPT LANGUAGE="JavaScript">'
5801    ||
5802    icx_admin_sig.help_win_syntax(
5803                more_info_directory
5804                , NULL
5805                , 'BIS')
5806    ||
5807    '
5808    </SCRIPT>
5809    </HEAD>
5810   ';
5811 
5812     l_HTML_Body := '<body bgColor="#ffffff" link="#663300" vlink="#996633" alink="#FF6600" text="#000000">';
5813 
5814   HTML_Banner := l_HTML_Header||l_HTML_Body ;
5815 
5816 
5817      IF (Parameter_Page) THEN
5818         HTML_Banner := HTML_Banner ||
5819 '<form method=post action="_action_">
5820 <input name="hidden_run_parameters" type=hidden value="_hidden_">
5821 <CENTEnR><P>
5822 ';
5823      END IF;
5824 
5825      HTML_Banner := HTML_Banner ||
5826     '<!- Banner V 5 part 2 ->
5827      <table border=0 cellspacing=0 cellpadding=0 width=100%>
5828      <tr><td rowspan=2 valign=bottom width=371>
5829      <table border=0 cellspacing=0 cellpadding=0 width=100%>
5830      <tr align=left><td height=30><img src=' || Image_Directory || 'bisorcl.gif border=no height=23
5831 width=141></a></td>
5832      <tr align=left> <td valign=bottom><img src=' || Image_Directory || 'biscollg.gif border=no></a></td></td></tr>
5833      </table>
5834      </td>';
5835 
5836      IF (NOT Parameter_page) AND (Related_Reports_Exist)
5837      THEN
5838     menu_padding := 1050;
5839      ELSE
5840     menu_padding := 1000;
5841      END IF;
5842 
5843      IF (NOT Parameter_Page) AND (Related_Reports_Exist) THEN
5844         Menu_Padding := 50;
5845      ELSE
5846         Menu_Padding := 1000;
5847      END IF;
5848 
5849      IF (NOT Parameter_Page) THEN
5850          Menu_Padding := 50;
5851      ELSE
5852         Menu_Padding := 1000;
5853      END IF;
5854 
5855    IF (NOT Parameter_Page)
5856      AND (Related_Reports_Exist)
5857    Then menu_padding := 50;
5858    END IF;
5859 
5860 -- MENU
5861 
5862     HTML_Banner := HTML_Banner ||
5863       '<td colspan=2 rowspan=2 valign=bottom align=right>
5864       <table border=0 cellpadding=0 align=right cellspacing=4>
5865         <tr valign=bottom>
5866           <td width=60 align=center><a href='||menu_link||'Oraclemypage.home onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(return_description) || '''; return true">
5867 <img alt='||ICX_UTIL.replace_alt_quotes(Return_Alt)||' src='||Image_Directory||'bisrtrnp.gif width=32 border=0 height=32></a></td>
5868 
5869         </tr>
5870         <tr align=center valign=top>
5871           <td width=60><a href='||menu_link||'Oraclemypage.home onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(return_description) || '''; return true">
5872 <span class="OraGlobalButtonText">'||return_description||'</span></a></td>
5873 
5874         </tr></table>
5875     </td>
5876     </tr></table>
5877    </table>';
5878 
5879     HTML_Banner := HTML_Banner ||
5880 '<table Border=0 cellpadding=0 cellspacing=0 width=100%>
5881   <tbody>
5882   <tr><td bgcolor=#ffffff colspan=3 height=1><img height=1 src='||Image_Directory||'bisspace.gif width=1></td>
5883   </tr>
5884   <tr>
5885     <td bgcolor=#31659c colspan=2 height=21><img border=0 height=21 src='||Image_Directory||'bisspace.gif width=1></td>
5886     <td bgcolor=#31659c  height=21><font face="Arial, Helvetica, sans-serif" size="4" color="#ffffff">'||l_ampersand||'</font></td>
5887     <td background='||Image_Directory||'bisrhshd.gif height=21 width=5><img border=0 height=1
5888 src='||Image_Directory||'bisspace.gif width=1></td>
5889   </tr>
5890   <tr>
5891     <td bgcolor=#31659c height=16 width=9><img border=0 height=1 src='||Image_Directory||'bisspace.gif width=9></td>
5892     <td bgcolor=#31659c height=16 width=5><img border=0 height=1 src='||Image_Directory||'bisspace.gif width=5></td>
5893     <td background='||Image_Directory||'bisbot.gif width=1000><img align=top height=16
5894 src='||Image_Directory||'bistopar.gif width=26></td>
5895     <td align=left valign=top width=5><img height=8 src='||Image_Directory||'bisrend.gif width=8></td>
5896   </tr>
5897   <tr>
5898     <td align=left background='||Image_Directory||'bisbot.gif height=8 valign=top width=9><img height=8
5899 src='||Image_Directory||'bislend.gif width=10></td>
5900     <td background='||Image_Directory||'bisbot.gif height=8 width=5><img border=0 height=1
5901 src='||Image_Directory||'bisspace.gif width=1></td>
5902     <td align=left valign=top width=1000><img height=8 src='||Image_Directory||'bisarchc.gif width=9></td>
5903     <td width=5></td>
5904   </tr>
5905   </tbody>
5906 </table>';
5907 
5908 
5909    IF (NOT Parameter_Page) THEN
5910     HTML_Banner := HTML_Banner ||
5911 '<table width=100% border=0 cellspacing=0 cellpadding=15>
5912 <tr><td><table width=100% border=0 cellspacing=0 cellpadding=0>
5913         <tr><td class="OraHeader"><font face="Arial, Helvetica, sans-serif" size="5" color="#336699">'||bis_utilities_pvt.escape_html(title)||'</font></td></tr>
5914         <tr bgcolor="#CCCC99"><td height=1><img src='||Image_Directory||'bisspace.gif width=1 height=1></td></tr>
5915         </table>
5916 </td></tr>
5917 </table>';
5918 
5919    ELSE
5920     HTML_Banner := HTML_Banner ||
5921 '<table width=100% border=0 cellspacing=0 cellpadding=15>
5922 <tr><td><table width=100% border=0 cellspacing=0 cellpadding=0>
5923         <tr><td class="OraHeader"><font face="Arial, Helvetica, sans-serif" size="5" color="#336699">'||bis_utilities_pvt.escape_html(title)||'</font></td></tr>
5924         <tr bgcolor="#CCCC99"><td height=1><img src='||Image_Directory||'bisspace.gif width=1 height=1></td></tr>
5925         <tr><td><font face="Arial, Helvetica, sans-serif" size="2">'||bis_utilities_pvt.escape_html(l_section_header)||'</font></td></tr>
5926         </table>
5927 </td></tr>
5928 </table>';
5929    END IF;
5930 
5931 END Build_HTML_Banner;
5932 
5933 
5934 PROCEDURE Get_Translated_Icon_Text (Icon_Code        IN  VARCHAR2,
5935                                      Icon_Meaning     OUT NOCOPY VARCHAR2,
5936                                      Icon_Description OUT NOCOPY VARCHAR2) IS
5937  BEGIN
5938 
5939       SELECT meaning,
5940              description
5941       INTO   Icon_Meaning,
5942              Icon_Description
5943       FROM   FND_LOOKUPS
5944       WHERE  lookup_code = Icon_Code
5945       AND    lookup_type = 'HTML_NAVIGATION_ICONS';
5946 
5947  EXCEPTION
5948       WHEN NO_DATA_FOUND THEN
5949            Icon_Meaning     := Icon_Code;
5950            Icon_Description := Icon_Code;
5951       WHEN OTHERS THEN
5952            Icon_Meaning     := Icon_Code;
5953            Icon_Description := Icon_Code;
5954  END;
5955 
5956 FUNCTION Get_Images_Server RETURN VARCHAR2 IS
5957    l_Icx_Report_Images  VARCHAR2(240);
5958    result     boolean;
5959 BEGIN
5960   -- mdamle 05/31/01 - New Profile for OA_HTML, OA_MEDIA
5961   -- l_Icx_Report_Images := FND_PROFILE.value('ICX_REPORT_IMAGES');
5962 
5963   if icx_sec.g_oa_media is null then
5964     result := icx_sec.validateSession;
5965   end if;
5966 
5967   if instr(icx_sec.g_oa_media, 'http:') > 0 then
5968     l_Icx_Report_Images := FND_WEB_CONFIG.TRAIL_SLASH(icx_sec.g_oa_media);
5969   else
5970     l_Icx_Report_Images := FND_WEB_CONFIG.WEB_SERVER ||   FND_WEB_CONFIG.TRAIL_SLASH(icx_sec.g_oa_media);
5971   end if;
5972 
5973         RETURN(l_Icx_Report_Images);
5974 END;
5975 
5976 
5977 FUNCTION Get_NLS_Language RETURN VARCHAR2 IS
5978   NLS_LANGUAGE_CODE    VARCHAR2(4);
5979 BEGIN
5980 
5981   SELECT l.language_code
5982   INTO   NLS_LANGUAGE_CODE
5983   FROM   fnd_languages l,
5984          nls_session_parameters p
5985   WHERE  p.parameter = 'NLS_LANGUAGE'
5986   AND    p.value = l.nls_language;
5987 
5988   RETURN (NLS_LANGUAGE_CODE);
5989 
5990 END Get_NLS_Language;
5991 
5992 PROCEDURE Get_Image_file_structure (icx_report_images IN  VARCHAR2,
5993                                     nls_language_code IN  VARCHAR2,
5994                                     report_image      OUT NOCOPY VARCHAR2) IS
5995 BEGIN
5996 
5997   REPORT_IMAGE   := ICX_REPORT_IMAGES || '/' || NLS_LANGUAGE_CODE || '/bisrelrp.gif' ;
5998 
5999 END Get_Image_file_structure;
6000 
6001 PROCEDURE build_html_banner  --------------------  VERSION 6
6002 ( title                 IN  VARCHAR2,
6003   help_target           IN  VARCHAR2,
6004   icon_show             IN  BOOLEAN
6005   )
6006   is
6007      nls_language_code    varchar2(2000);
6008      icx_report_images    varchar2(2000);
6009      HTML_banner          varchar2(32000);
6010 begin
6011    nls_language_code := Get_NLS_Language;
6012    icx_report_images := Get_Images_Server;
6013 
6014    htp.p('<SCRIPT LANGUAGE="JavaScript">');
6015    ---
6016     icx_admin_sig.help_win_script(help_target||'TOP', NULL , 'BIS');
6017    --- HACK TO circumvent target slection withing a help file:
6018    --- icx_admin_sig.help_win_script('/OA_DOC/' || help_target ||'?', nls_language_code, 'BIS');
6019    htp.p('</SCRIPT>');
6020 
6021    --- --- --- This part used to call the ICX banner builder.
6022 ---   icx_plug_utilities.toolbar(
6023 ---             p_text => title
6024 ---           , p_disp_help => 'Y'
6025 ---           , p_disp_exit => 'Y'
6026 ---           );
6027   --- --- ---
6028    Build_HTML_Banner (icx_report_images ----------- VERSION 8 (call to )
6029           , '"javascript:help_window()"'
6030           , nls_language_code
6031           , title
6032           , ''
6033           , FALSE
6034           , FALSE
6035               , icon_show
6036           , HTML_Banner
6037           );
6038      htp.p(HTML_Banner);
6039 
6040 end Build_HTML_Banner;
6041 
6042 PROCEDURE Build_HTML_Banner
6043 ( rdf_filename  IN  VARCHAR2,
6044   title         IN  VARCHAR2,
6045   menu_link     IN  VARCHAR2,
6046   icon_show     IN  BOOLEAN,
6047   HTML_Banner   OUT NOCOPY VARCHAR2
6048 )
6049 is
6050 begin
6051   Build_HTML_Banner( rdf_filename
6052                    , title
6053                    , menu_link
6054                    , FALSE
6055                    , FALSE
6056                    , icon_show
6057                    , HTML_Banner
6058                    );
6059 end Build_HTML_Banner;
6060 
6061 PROCEDURE build_html_banner    ---------- VERSION 8 (definition of)
6062   (icx_report_images     IN  VARCHAR2,
6063    more_info_directory   IN  VARCHAR2,
6064    nls_language_code     IN  VARCHAR2,
6065    title                 IN  VARCHAR2,
6066    menu_link             IN  VARCHAR2,
6067    related_reports_exist IN  BOOLEAN,
6068    parameter_page        IN  BOOLEAN,
6069    icon_show             IN  BOOLEAN,
6070    HTML_Banner           OUT NOCOPY VARCHAR2
6071    )
6072   IS
6073 
6074    Return_Alt             VARCHAR2(1000);
6075    Parameters_Alt         VARCHAR2(1000);
6076    NewMenu_Alt            VARCHAR2(80);
6077    NewHelp_Alt            VARCHAR2(80);
6078    Return_Description     VARCHAR2(1000);
6079    Parameters_Description VARCHAR2(1000);
6080    NewMenu_Description    VARCHAR2(80);
6081    NewHelp_Description    VARCHAR2(80);
6082 
6083    Related_Alt           VARCHAR2(80);
6084    Menu_Alt              VARCHAR2(80);
6085    Home_Alt              VARCHAR2(80);
6086    Help_Alt              VARCHAR2(80);
6087    Related_Description   VARCHAR2(80);
6088    Home_Description      VARCHAR2(80);
6089    Menu_Description      VARCHAR2(80);
6090    Help_Description      VARCHAR2(80);
6091    Image_Directory       VARCHAR2(250);
6092    Home_page             VARCHAR2(2000);
6093    Menu_Padding          NUMBER(5);
6094    Home_URL              VARCHAR2(200);
6095    Plsql_Agent           VARCHAR2(100);
6096    Host_File             VARCHAR2(80);
6097    l_profile             VARCHAR2(2000);
6098    l_ampersand         VARCHAR2(20):=' ';
6099 
6100 BEGIN
6101 
6102      Get_Translated_Icon_Text ('RELATED', Related_Alt, Related_Description);
6103      Get_Translated_Icon_Text ('MENU', Menu_Alt, Menu_Description);
6104      Get_Translated_Icon_Text ('HOME', Home_Alt, Home_Description);
6105      Get_Translated_Icon_Text ('HELP', Help_Alt, Help_Description);
6106 
6107      Get_Translated_Icon_Text ('RETURNTOPORTAL', Return_Alt, Return_Description);
6108      Get_Translated_Icon_Text ('PARAMETERS', Parameters_Alt, Parameters_Description);
6109      Get_Translated_Icon_Text ('NEWHELP', NewHelp_Alt, NewHelp_Description);
6110      Get_Translated_Icon_Text ('NEWMENU', NewMenu_Alt, NewMenu_Description);
6111 
6112 
6113      Image_Directory :=  FND_WEB_CONFIG.TRAIL_SLASH(ICX_REPORT_IMAGES);
6114      Home_URL := BIS_REPORT_UTIL_PVT.Get_Home_URL;
6115 
6116      HTML_Banner := '';
6117 
6118      IF (Parameter_Page) THEN
6119         HTML_Banner := HTML_Banner ||
6120 '<form method=post action="_action_">
6121 <input name="hidden_run_parameters" type=hidden value="_hidden_">
6122 <CENTER><P>
6123 ';
6124      END IF;
6125 
6126      HTML_Banner := HTML_Banner ||
6127      '<table border=0 cellspacing=0 cellpadding=0 width=100%>'||
6128      '<tr><td rowspan=2 valign=bottom width=371>'||
6129      '<table border=0 cellspacing=0 cellpadding=0 width=100%>'||
6130      '<tr align=left><td height=30><img src=' || Image_Directory || 'bisorcl.gif border=no height=23
6131 width=141></a></td>'||
6132      '<tr align=left> <td valign=bottom><img src=' || Image_Directory || 'biscollg.gif border=no></a></td></td></tr>'||
6133      '</table>'||
6134      '</td>';
6135 
6136      IF (NOT Parameter_Page) AND (Related_Reports_Exist) THEN
6137         Menu_Padding := 50;
6138      ELSE
6139         Menu_Padding := 1000;
6140      END IF;
6141 -- MENU
6142 
6143 
6144     HTML_Banner := HTML_Banner || '<font face="Arial, Helvetica, sans-serif" size="5" color="#336699">'||bis_utilities_pvt.escape_html(title)||' </font>' ||
6145     '<table width=100% border=0 cellspacing=0 cellpadding=15>'||
6146     '<tr><td>'||
6147       '<table width=100% border=0 cellspacing=0 cellpadding=0>'||
6148         '<tr bgcolor="#CCCC99">'||
6149          '<td height=1><img src='||Image_Directory||'bisspace.gif width=1 height=1></td></tr>'||
6150       '</table>'||
6151       '</td></tr></table>';
6152 
6153     HTML_Banner := HTML_Banner ||
6154       '<tr>'||
6155       '<td colspan=2 rowspan=2 valign=bottom align=right>' ||
6156       '<table border=0 cellpadding=0 align=right cellspacing=4>' ||
6157         '<tr valign=bottom>' ;
6158     HTML_Banner := HTML_Banner ||
6159           '<td width=60 align=center> <a href='||menu_Link||'Oraclemypage.home onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(Return_Description) || '''; return true">';
6160     HTML_Banner := HTML_Banner ||
6161 '<img alt='||ICX_UTIL.replace_alt_quotes(Return_Alt)||' src='||Image_Directory||'bisrtrnp.gif width=32 border=0 height="32"></a></td>';
6162 
6163     HTML_Banner := HTML_Banner ||
6164           '<td width=60 align=center>'||
6165           '<a href=' || menu_Link || 'OracleNavigate.Responsibility onMouseOver="window.status=''' ||
6166 ICX_UTIL.replace_onMouseOver_quotes(NewMenu_Description) || '''; return true"><img alt='||ICX_UTIL.replace_alt_quotes(NewMenu_Alt)||' src='||Image_Directory||'bisnmenu.gif
6167 width="32" border=0 height=32></a></td>'; --          '<td width=60 align=center>'||
6168 
6169    HTML_Banner := HTML_Banner ||
6170           '<td width=60 align=center valign=bottom><a href="javascript:help_window()",  onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(NewHelp_Description) || '''; return true">';
6171    HTML_Banner := HTML_Banner ||
6172 '<img alt='||ICX_UTIL.replace_alt_quotes(NewHelp_Alt)||' src='||Image_Directory||'bisnhelp.gif border=0  width =32 height=32></a></td>'||
6173         '</tr>';
6174 
6175    HTML_Banner := HTML_Banner ||
6176         '<tr align=center valign=top>'||
6177           '<td width=60><a href='||menu_Link||'Oraclemypage.home onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(Return_Description) || '''; return true">'||
6178     '<font size="2" face="Arial, Helvetica, sans-serif">Return to Portal</font></a></td>';
6179 
6180     HTML_Banner := HTML_Banner ||
6181       '<td width=60>'||
6182       '<a href=' || menu_Link || 'OracleNavigate.Responsibility onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(NewMenu_Description) || '''; return true"><font face="Arial, Helvetica, sans-serif" size="2">Menu</font></a></td>';
6183 
6184     HTML_Banner := HTML_Banner ||
6185           '<td width=60><a href="javascript:help_window()",  onMouseOver="window.status=''' || ICX_UTIL.replace_onMouseOver_quotes(NewHelp_Description) || '''; return true"><font face="Arial, Helvetica, sans-serif" size="2">Help</font></a></td>'||
6186         '</tr></table>'||
6187        '</td>'||
6188        '</tr></table>'||
6189     '</td></tr>'||
6190    '</table>';
6191 
6192     HTML_Banner := HTML_Banner ||
6193 '<table Border=0 cellpadding=0 cellspacing=0 width=100%>'||
6194   '<tbody>'||
6195   '<tr><td bgcolor=#ffffff colspan=3 height=1><img height=1 src='||Image_Directory||'bisspace.gif width=1></td>'||
6196   '</tr>'||
6197   '<tr>';
6198 
6199     HTML_Banner := HTML_Banner ||
6200     '<td bgcolor=#31659c colspan=2 height=21><img border=0 height=21 src='||Image_Directory||'bisspace.gif width=1></td>'||
6201     '<td bgcolor=#31659c  height=21><font face="Arial, Helvetica, sans-serif" size="4" color="#ffffff">'||l_ampersand||'</font></td>';
6202 
6203     HTML_Banner := HTML_Banner ||
6204     '<td background='||Image_Directory||'bisrhshd.gif height=21 width=5><img border=0 height=1
6205 src='||Image_Directory||'bisspace.gif width=1></td>'||
6206   '</tr>';
6207 
6208     HTML_Banner := HTML_Banner ||
6209   '<tr>'||
6210     '<td bgcolor=#31659c height=16 width=9><img border=0 height=1 src='||Image_Directory||'bisspace.gif width=9></td>'||
6211     '<td bgcolor=#31659c height=16 width=5><img border=0 height=1 src='||Image_Directory||'bisspace.gif width=5></td>';
6212 
6213     HTML_Banner := HTML_Banner ||
6214     '<td background='||Image_Directory||'bisbot.gif width=1000><img align=top height=16
6215 src='||Image_Directory||'bistopar.gif width=26></td>'||
6216     '<td align=left valign=top width=5><img height=8 src='||Image_Directory||'bisrend.gif width=8></td>'||
6217   '</tr>';
6218 
6219     HTML_Banner := HTML_Banner ||
6220   '<tr>'||
6221     '<td align=left background='||Image_Directory||'bisbot.gif height=8 valign=top width=9><img height=8
6222 src='||Image_Directory||'bislend.gif width=10></td>'||
6223     '<td background='||Image_Directory||'bisbot.gif height=8 width=5><img border=0 height=1
6224 src='||Image_Directory||'bisspace.gif width=1></td>';
6225 
6226     HTML_Banner := HTML_Banner ||
6227     '<td align=left valign=top width=1000><img height=8 src='||Image_Directory||'bisarchc.gif width=9></td>'||
6228     '<td width=5></td>'||
6229   '</tr>'||
6230   '</tbody>'||
6231 '</table>';
6232 
6233     HTML_Banner := HTML_Banner||'<br>'|| l_ampersand||l_ampersand||l_ampersand||l_ampersand||'<font face="Arial, Helvetica, sans-serif" size="5" color="#336699">'||bis_utilities_pvt.escape_html(title)||' </font>' ||
6234     '<table width=100% border=0 cellspacing=0 cellpadding=0>'||
6235     '<tr><td>';
6236 
6237     HTML_Banner := HTML_Banner ||
6238       '<table width=100% border=0 cellspacing=0 cellpadding=0>'||
6239         '<tr bgcolor="#CCCC99">'||
6240          '<td height=1><img src='||Image_Directory||'bisspace.gif width=1 height=1></td></tr>'||
6241       '</table>'||
6242       '</td></tr></table>';
6243 
6244 END Build_HTML_Banner;
6245 
6246 
6247 PROCEDURE build_html_banner   ---- VERSION 9 (definition of)
6248 ( rdf_filename          IN  VARCHAR2,
6249   title           IN  VARCHAR2,
6250   menu_link           IN  VARCHAR2,
6251   related_reports_exist IN  BOOLEAN,
6252   parameter_page        IN  BOOLEAN,
6253   icon_show             IN  BOOLEAN,
6254   HTML_Banner           OUT NOCOPY VARCHAR2
6255 )
6256 is
6257 icx_report_images    varchar2(2000);
6258 more_info_directory  varchar2(2000);
6259 nls_language_code    varchar2(2000);
6260 begin
6261 
6262   icx_report_images := Get_Images_Server;
6263   nls_language_code := Get_NLS_Language;
6264 
6265   Build_HTML_Banner( icx_report_images     -------- VERSION 8 (Call to)
6266                    , 'javascript:help_window()'
6267                    , nls_language_code
6268                    , title
6269                    , menu_link
6270                    , related_reports_exist
6271                    , parameter_page
6272                    , icon_show
6273                    , HTML_Banner
6274                    );
6275 
6276 end Build_HTML_Banner;
6277 
6278 PROCEDURE build_html_banner           ---------VERSION 10 (definition of)
6279   (icx_report_images     IN  VARCHAR2,
6280    more_info_directory   IN  VARCHAR2,
6281    nls_language_code     IN  VARCHAR2,
6282    title                 IN  VARCHAR2,
6283    menu_link             IN  VARCHAR2,
6284    icon_show             IN BOOLEAN,
6285    HTML_Banner           OUT NOCOPY VARCHAR2)
6286 is
6287 begin
6288 
6289   Build_HTML_Banner( icx_report_images    ----        VERSION 8 (call TO)
6290                    , more_info_directory
6291                    , nls_language_code
6292                    , title
6293                    , menu_link
6294                    , FALSE
6295                    , FALSE
6296                    , icon_show
6297                    , HTML_Banner
6298                    );
6299 
6300 end Build_HTML_Banner;
6301 
6302 
6303 
6304 -- End of overlapping procedures
6305 -- rchandra 2157402
6306   PROCEDURE getAKRegionItemLongLabel (akRegionItemData     IN  VARCHAR2,
6307                                       longlabel            OUT NOCOPY VARCHAR2) AS
6308   l_region_code   VARCHAR2(1000);
6309   l_region_item   VARCHAR2(1000);
6310   l_akRegionItemData   VARCHAR2(2000);
6311   CURSOR c_label(cp_regn_code VARCHAR2,
6312                  cp_regn_item VARCHAR2) IS
6313     SELECT attribute_label_long FROM ak_region_items_vl WHERE
6314     region_code = cp_regn_code
6315     AND attribute_code = cp_regn_item;
6316   BEGIN
6317    l_akRegionItemData := TRIM(akRegionItemData);
6318    l_region_code := substr(l_akRegionItemData,1,instr(l_akRegionItemData,'.')-1);
6319    l_region_item := substr(l_akRegionItemData,instr(l_akRegionItemData,'.')+1);
6320    OPEN c_label(l_region_code,l_region_item);
6321    FETCH c_label INTO longlabel;
6322    CLOSE  c_label;
6323   EXCEPTION
6324     WHEN OTHERS THEN
6325       IF  c_label%ISOPEN THEN
6326           CLOSE  c_label;
6327       END IF;
6328   END getAKRegionItemLongLabel;
6329 -- rchandra 2157402
6330 
6331 
6332 --rmohanty
6333 
6334 --===========================================================
6335 -- start of change by juwang
6336 -- 15-JAN-02 juwang  bug#2184804
6337 --===========================================================
6338 --============================================================
6339 --    PROCEDURE
6340 --      use_current_period
6341 --
6342 --    PURPOSE
6343 --      If in bis_actuals_values, the actual does
6344 --      not exist for the current period, use the period
6345 --      that has the latest last update date
6346 --    PARAMETERS
6347 --
6348 --    HISTORY
6349 --       08JAN-2002 juwang Created for bug#2173745
6350 --=============================================================
6351 FUNCTION use_current_period(
6352   p_target_rec IN BIS_TARGET_PUB.Target_Rec_Type
6353  ,p_time_dimension_index IN NUMBER
6354  ,p_current_period_id IN VARCHAR2
6355  ,x_last_period_id OUT NOCOPY VARCHAR2
6356 ) RETURN BOOLEAN IS
6357   ldv1 VARCHAR2(80);
6358   ldv2 VARCHAR2(80);
6359   ldv3 VARCHAR2(80);
6360   ldv4 VARCHAR2(80);
6361   ldv5 VARCHAR2(80);
6362   ldv6 VARCHAR2(80);
6363   ldv7 VARCHAR2(80);
6364   l_use_cur_period BOOLEAN := FALSE;
6365   l_first_rec BOOLEAN := TRUE;
6366 
6367 
6368        CURSOR c_actual_value IS
6369          SELECT
6370            DIMENSION1_LEVEL_VALUE
6371           ,DIMENSION2_LEVEL_VALUE
6372           ,DIMENSION3_LEVEL_VALUE
6373           ,DIMENSION4_LEVEL_VALUE
6374           ,DIMENSION5_LEVEL_VALUE
6375           ,DIMENSION6_LEVEL_VALUE
6376           ,DIMENSION7_LEVEL_VALUE
6377         FROM   bisbv_actuals acts
6378         WHERE  acts.target_level_id    = p_target_rec.target_level_id
6379         AND DECODE(p_time_dimension_index,
6380              1, 'NILL', NVL(acts.dimension1_level_value, 'NILL'))
6381           = DECODE(p_time_dimension_index,
6382              1, 'NILL', NVL(p_target_rec.dim1_level_value_id, 'NILL'))
6383         AND DECODE(p_time_dimension_index,
6384              2, 'NILL', NVL(acts.dimension2_level_value, 'NILL'))
6385           = DECODE(p_time_dimension_index,
6386                  2, 'NILL', NVL(p_target_rec.dim2_level_value_id, 'NILL'))
6387         AND DECODE(p_time_dimension_index,
6388              3, 'NILL', NVL(acts.dimension3_level_value, 'NILL'))
6389           = DECODE(p_time_dimension_index,
6390              3, 'NILL', NVL(p_target_rec.dim3_level_value_id, 'NILL'))
6391         AND DECODE(p_time_dimension_index,
6392              4, 'NILL', NVL(acts.dimension4_level_value, 'NILL'))
6393           = DECODE(p_time_dimension_index,
6394              4, 'NILL', NVL(p_target_rec.dim4_level_value_id, 'NILL'))
6395         AND DECODE(p_time_dimension_index,
6396              5, 'NILL', NVL(acts.dimension5_level_value, 'NILL'))
6397           = DECODE(p_time_dimension_index,
6398              5, 'NILL', NVL(p_target_rec.dim5_level_value_id, 'NILL'))
6399         AND DECODE(p_time_dimension_index,
6400              6, 'NILL', NVL(acts.dimension6_level_value, 'NILL'))
6401           = DECODE(p_time_dimension_index,
6402              6, 'NILL', NVL(p_target_rec.dim6_level_value_id, 'NILL'))
6403         AND DECODE(p_time_dimension_index,
6404              7, 'NILL', NVL(acts.dimension7_level_value, 'NILL'))
6405           = DECODE(p_time_dimension_index,
6406              7, 'NILL', NVL(p_target_rec.dim7_level_value_id, 'NILL'))
6407         ORDER BY acts.LAST_UPDATE_DATE DESC;
6408 BEGIN
6409 
6410   OPEN c_actual_value;
6411   LOOP
6412     FETCH c_actual_value INTO ldv1, ldv2, ldv3, ldv4, ldv5, ldv6, ldv7;
6413     EXIT WHEN c_actual_value%NOTFOUND;
6414 
6415     IF ( l_first_rec ) THEN  -- remember the latest period
6416       IF     ( p_time_dimension_index = 1 ) THEN
6417         x_last_period_id := ldv1;
6418       ELSIF  ( p_time_dimension_index = 2 ) THEN
6419         x_last_period_id := ldv2;
6420       ELSIF  ( p_time_dimension_index = 3 ) THEN
6421         x_last_period_id := ldv3;
6422       ELSIF  ( p_time_dimension_index = 4 ) THEN
6423         x_last_period_id := ldv4;
6424       ELSIF  ( p_time_dimension_index = 5 ) THEN
6425         x_last_period_id := ldv5;
6426       ELSIF  ( p_time_dimension_index = 6 ) THEN
6427         x_last_period_id := ldv6;
6428       ELSIF  ( p_time_dimension_index = 7 ) THEN
6429         x_last_period_id := ldv7;
6430       END IF;
6431 
6432     END IF;  -- ( l_first_rec )
6433     l_first_rec := FALSE;
6434 
6435     -- check if the given period exists in actuals table
6436     IF    ( p_time_dimension_index = 1 ) THEN
6437       IF ( ldv1 = p_current_period_id ) THEN
6438         l_use_cur_period := TRUE;
6439         EXIT;
6440       END IF;
6441     ELSIF ( p_time_dimension_index = 2 ) THEN
6442       IF ( ldv2 = p_current_period_id ) THEN
6443         l_use_cur_period := TRUE;
6444         EXIT;
6445       END IF;
6446     ELSIF  ( p_time_dimension_index = 3 ) THEN
6447       IF ( ldv3 = p_current_period_id ) THEN
6448         l_use_cur_period := TRUE;
6449         EXIT;
6450       END IF;
6451     ELSIF  ( p_time_dimension_index = 4 ) THEN
6452       IF ( ldv4 = p_current_period_id ) THEN
6453         l_use_cur_period := TRUE;
6454         EXIT;
6455       END IF;
6456     ELSIF  ( p_time_dimension_index = 5 ) THEN
6457       IF ( ldv5 = p_current_period_id ) THEN
6458         l_use_cur_period := TRUE;
6459         EXIT;
6460       END IF;
6461     ELSIF  ( p_time_dimension_index = 6 ) THEN
6462       IF ( ldv6 = p_current_period_id ) THEN
6463         l_use_cur_period := TRUE;
6464         EXIT;
6465       END IF;
6466     ELSIF  ( p_time_dimension_index = 7 ) THEN
6467       IF ( ldv6 = p_current_period_id ) THEN
6468         l_use_cur_period := TRUE;
6469         EXIT;
6470       END IF;
6471     END IF;
6472   END LOOP;
6473   CLOSE c_actual_value;
6474 
6475 
6476   -- No row at all, should remain
6477   IF ( l_first_rec ) THEN
6478     l_use_cur_period := TRUE;
6479   END IF;
6480   RETURN l_use_cur_period;
6481 
6482 EXCEPTION
6483   WHEN OTHERS THEN
6484 
6485     IF c_actual_value%ISOPEN THEN
6486       CLOSE c_actual_value;
6487     END IF;
6488     RETURN TRUE;
6489 
6490 END use_current_period;
6491 
6492 
6493 
6494 
6495 
6496 --============================================================
6497 --    PROCEDURE
6498 --       getAKFormatValue
6499 --
6500 --    PURPOSE
6501 --       Tasks include
6502 --         1. Find the format for this measure in AK
6503 --         2. Format the p_val according to the AK display format and
6504 --            display format type.
6505 --         3. Only when both of the above info are null, use default
6506 --            format.
6507 --    PARAMETERS
6508 --
6509 --    HISTORY
6510 --       09-JAN-2002 juwang Created.
6511 --=============================================================
6512 
6513 FUNCTION getAKFormatValue(
6514   p_measure_id IN NUMBER
6515  ,p_val IN NUMBER
6516   ) RETURN VARCHAR2
6517 IS
6518   l_region_code VARCHAR2(30);
6519   l_attribute_code VARCHAR2(30);
6520   l_display_format VARCHAR2(150) := NULL;
6521   l_display_type VARCHAR2(150)  := NULL;
6522   l_format_mask VARCHAR2(1000);
6523   l_km_val NUMBER;
6524   l_result VARCHAR2(1000);
6525 
6526 BEGIN
6527   IF ( p_val IS NULL) THEN  -- should not go here
6528     RETURN BIS_UTILITIES_PVT.Get_FND_Message('BIS_NONE');
6529   END IF;
6530 
6531   get_region_code( p_measure_id => p_measure_id
6532                   ,x_region_code => l_region_code
6533                   ,x_attribute_code  => l_attribute_code);
6534 
6535   get_ak_display_format( p_region_code => l_region_code
6536                         ,p_attribute_code => l_attribute_code
6537                         ,x_display_format => l_display_format
6538                         ,x_display_type => l_display_type );
6539 
6540   IF ( l_display_type IS NULL )  THEN
6541     RETURN getFormatValue(p_val);
6542   END IF;
6543 
6544   -- display type is not null
6545 
6546   IF ( l_display_type = c_I ) THEN   -- Integer
6547     RETURN getFormatValue(p_val => p_val,
6548           p_format_mask => NVL(l_display_format, getFormatMask(p_val, FALSE)));
6549 
6550 
6551   ELSIF ( l_display_type = c_F ) THEN -- Float
6552     RETURN getFormatValue(p_val => p_val,
6553           p_format_mask => NVL(l_display_format, getFormatMask(p_val, TRUE)));
6554 
6555 
6556   ELSIF ( l_display_type = c_K ) THEN -- thousand
6557     l_km_val := (p_val/c_thousand);
6558     l_result := getFormatValue(
6559         p_val => l_km_val
6560        ,p_format_mask => NVL(l_display_format,
6561                              getFormatMask(l_km_val, TRUE))) || c_K ;
6562     RETURN l_result;
6563 
6564 
6565   ELSIF ( l_display_type = c_M ) THEN  -- million
6566     l_km_val := (p_val/c_million);
6567     l_result := getFormatValue(
6568         p_val => l_km_val
6569        ,p_format_mask => NVL(l_display_format,
6570                              getFormatMask(l_km_val, TRUE))) || c_M ;
6571     RETURN l_result;
6572   END IF;
6573 
6574 
6575   -- all the other types or null
6576   RETURN getFormatValue(p_val);
6577 
6578 
6579 
6580 END getAKFormatValue;
6581 
6582 
6583 
6584 --============================================================
6585 --    PROCEDURE
6586 --      get_ak_display_format
6587 --
6588 --    PURPOSE
6589 --       By the given region code and attribute code, it
6590 --       sets the display format and display type in the out NOCOPY
6591 --       parameters.
6592 --    PARAMETERS
6593 --
6594 --    HISTORY
6595 --       09-JAN-2002 juwang Created.
6596 --============================================================
6597 PROCEDURE get_ak_display_format(
6598   p_region_code IN VARCHAR2
6599  ,p_attribute_code IN VARCHAR2
6600  ,x_display_format OUT NOCOPY VARCHAR2
6601  ,x_display_type OUT NOCOPY VARCHAR2
6602 ) IS
6603 
6604   CURSOR c_ak_item IS
6605     SELECT attribute7, attribute14
6606     FROM ak_region_items
6607     WHERE
6608         region_code = p_region_code
6609     AND attribute_code = p_attribute_code;
6610 
6611   BEGIN
6612 
6613    IF (  (p_region_code IS NULL ) OR
6614          (p_attribute_code IS NULL ) ) THEN
6615      x_display_format := NULL;
6616      x_display_type := NULL;
6617 
6618      RETURN;
6619    END IF;
6620 
6621    OPEN c_ak_item;
6622    FETCH c_ak_item INTO x_display_format, x_display_type;
6623    CLOSE  c_ak_item;
6624 
6625   EXCEPTION
6626     WHEN OTHERS THEN
6627       IF  c_ak_item%ISOPEN THEN
6628           CLOSE  c_ak_item;
6629       END IF;
6630 END get_ak_display_format;
6631 
6632 
6633 
6634 --============================================================
6635 --    PROCEDURE
6636 --      get_region_code
6637 --
6638 --    PURPOSE
6639 --       By the given measure/indicator id, it sets the out NOCOPY
6640 --       parameters with ak region code and ak attribute code.
6641 --    PARAMETERS
6642 --
6643 --    HISTORY
6644 --       09-JAN-2002 juwang Created.
6645 --============================================================
6646 PROCEDURE get_region_code(
6647   p_measure_id IN NUMBER
6648  ,x_region_code OUT NOCOPY VARCHAR2
6649  ,x_attribute_code OUT NOCOPY VARCHAR2 )
6650 IS
6651     l_return_status               VARCHAR2(32000);
6652     l_msg_count                   VARCHAR2(32000);
6653     l_msg_data                    VARCHAR2(32000);
6654     l_Measure_ID                  NUMBER ;
6655     l_Measure_Short_Name          VARCHAR2(30);
6656     l_Measure_Name                bis_indicators_tl.name%TYPE ;
6657     l_Description                 bis_indicators_tl.DESCRIPTION%TYPE ;
6658     l_Dimension1_ID               NUMBER  ;
6659     l_Dimension2_ID               NUMBER  ;
6660     l_Dimension3_ID               NUMBER  ;
6661     l_Dimension4_ID               NUMBER  ;
6662     l_Dimension5_ID               NUMBER  ;
6663     l_Dimension6_ID               NUMBER  ;
6664     l_Dimension7_ID               NUMBER  ;
6665     l_Unit_Of_Measure_Class       VARCHAR2(10) ;
6666     l_actual_data_source_type     VARCHAR2(30) ;
6667     l_actual_data_source          VARCHAR2(240);
6668     l_function_name               VARCHAR2(240) ;
6669     l_comparison_source           VARCHAR2(240) ;
6670     l_increase_in_measure         VARCHAR2(1);
6671 
6672 
6673 BEGIN
6674   BIS_PMF_DEFINER_WRAPPER_PVT.Retrieve_Performance_Measure(
6675       P_MEASURE_ID =>  p_measure_id
6676      ,x_return_status => l_return_status
6677      ,x_msg_count => l_msg_count
6678      ,x_msg_data   => l_msg_data
6679      ,x_Measure_ID  => l_Measure_ID
6680      ,x_Measure_Short_Name  => l_Measure_Short_Name
6681      ,x_Measure_Name      => l_Measure_Name
6682      ,x_Description       => l_Description
6683      ,x_Dimension1_ID     => l_Dimension1_ID
6684      ,x_Dimension2_ID     => l_Dimension2_ID
6685      ,x_Dimension3_ID     => l_Dimension3_ID
6686      ,x_Dimension4_ID     => l_Dimension4_ID
6687      ,x_Dimension5_ID     => l_Dimension5_ID
6688      ,x_Dimension6_ID     => l_Dimension6_ID
6689      ,x_Dimension7_ID    => l_Dimension7_ID
6690      ,x_Unit_Of_Measure_Class    => l_Unit_Of_Measure_Class
6691      ,x_actual_data_source_type  => l_actual_data_source_type
6692      ,x_actual_data_source   => l_actual_data_source
6693      ,x_region_code    =>       x_region_code
6694      ,x_attribute_code      => x_attribute_code
6695      ,x_function_name         => l_function_name
6696      ,x_comparison_source     => l_comparison_source
6697      ,x_increase_in_measure   => l_increase_in_measure);
6698 
6699 
6700 
6701 EXCEPTION
6702   WHEN OTHERS THEN
6703 
6704     x_region_code := NULL;
6705     x_attribute_code := NULL;
6706 END get_region_code;
6707 
6708 
6709 --============================================================
6710 --    PROCEDURE
6711 --      getFormatValue
6712 --
6713 --    PURPOSE
6714 --      Default format function.
6715 --    PARAMETERS
6716 --
6717 --    HISTORY
6718 --       08JAN-2002 juwang Created.
6719 --=============================================================
6720 FUNCTION getFormatValue(
6721   p_val IN NUMBER
6722   ) RETURN VARCHAR2
6723 IS
6724   l_wh_val NUMBER;
6725   l_abs_val NUMBER;
6726 BEGIN
6727   IF ( p_val IS NULL) THEN  -- should not go here
6728     RETURN BIS_UTILITIES_PVT.Get_FND_Message('BIS_NONE');
6729   END IF;
6730 
6731   l_abs_val := ABS(p_val);
6732   l_wh_val := FLOOR(l_abs_val);
6733 --  IF ( l_abs_val >= c_trillion ) THEN
6734 --    RETURN (TO_CHAR(p_val/c_trillion, c_fmt) || c_T);
6735 
6736   IF ( l_abs_val >= c_billion ) THEN
6737     RETURN getBillionValue(p_val);
6738 
6739   ELSIF ( l_abs_val >= c_million ) THEN
6740 
6741     RETURN (TO_CHAR(p_val/c_million, c_fmt) || c_M);
6742 
6743   END IF;
6744 
6745   -- -1000000 < x < 1000000
6746   IF ( l_abs_val = l_wh_val ) THEN
6747     RETURN TO_CHAR(p_val, c_long_nod_fmt);
6748   END IF;
6749 
6750   RETURN TO_CHAR(p_val, c_longfmt);
6751 
6752 
6753 
6754 END getFormatValue;
6755 
6756 
6757 
6758 --============================================================
6759 FUNCTION getFormatMask(
6760   p_val IN NUMBER
6761  ,p_show_decimal IN BOOLEAN
6762   ) RETURN VARCHAR2
6763 IS
6764 
6765   l_num_digits NUMBER;
6766   l_num_thou NUMBER;
6767   l_counter NUMBER := 1;
6768   l_fmt_mask VARCHAR2(1000):='990';
6769 BEGIN
6770 
6771   IF ( ABS(p_val) < 1 ) THEN
6772     IF ( p_show_decimal ) THEN
6773       l_fmt_mask := l_fmt_mask || 'D99';
6774     END IF;
6775 
6776     RETURN l_fmt_mask;
6777   END IF;
6778 
6779   l_num_digits := log(10, ABS(p_val));
6780   l_num_thou := CEIL((l_num_digits/3));
6781 
6782   FOR l_counter IN 1 .. l_num_thou LOOP
6783     l_fmt_mask :=  '999G' || l_fmt_mask ;
6784   END LOOP;
6785 
6786   IF ( p_show_decimal ) THEN
6787     l_fmt_mask := l_fmt_mask || 'D99';
6788   END IF;
6789 
6790   RETURN l_fmt_mask;
6791 
6792 END getFormatMask;
6793 
6794 
6795 
6796 --============================================================
6797 --    PROCEDURE
6798 --      getFormatValue
6799 --
6800 --    PURPOSE
6801 --      Returns the value formatted by the given format mask.
6802 --      If the given value is null, returns 'NONE'.
6803 --      If the given format mask is null, use the default one.
6804 --    PARAMETERS
6805 --
6806 --    HISTORY
6807 --       08JAN-2002 juwang Created
6808 --=============================================================
6809 FUNCTION getFormatValue(
6810   p_val IN NUMBER
6811  ,p_format_mask IN VARCHAR2
6812   ) RETURN VARCHAR2
6813 IS
6814 
6815 BEGIN
6816   IF ( p_val IS NULL) THEN  -- should not go here
6817     RETURN BIS_UTILITIES_PVT.Get_FND_Message('BIS_NONE');
6818   END IF;
6819 
6820   IF ( p_format_mask IS NULL) THEN
6821     RETURN getFormatValue(p_val);
6822   END IF;
6823 
6824   RETURN TO_CHAR(p_val, p_format_mask);
6825 
6826 END getFormatValue;
6827 
6828 
6829 --============================================================
6830 FUNCTION getBillionValue(
6831   p_val IN NUMBER
6832   ) RETURN VARCHAR2
6833 IS
6834   l_bi_val NUMBER;
6835   l_wh_val NUMBER;
6836   l_abs_val NUMBER;
6837   l_fmt_mask VARCHAR2(100);
6838 
6839 BEGIN
6840 
6841   l_bi_val := p_val/c_billion;
6842   l_abs_val := ABS(l_bi_val);
6843 
6844   IF (l_abs_val < 1) THEN
6845     RETURN (TO_CHAR(p_val/c_million, c_fmt) || c_M);
6846   END IF;
6847 
6848 
6849   l_wh_val := FLOOR(l_abs_val);
6850   l_fmt_mask := getBillionFormatMask(l_bi_val);
6851 
6852   IF ( l_abs_val = l_wh_val ) THEN
6853     RETURN (TO_CHAR( l_bi_val, l_fmt_mask) || c_B);
6854   END IF;
6855 
6856 
6857 
6858   RETURN TO_CHAR( l_bi_val, l_fmt_mask||'D99') || c_B ;
6859 
6860 END getBillionValue;
6861 
6862 
6863 --============================================================
6864 -- bug#2172266
6865 FUNCTION getBillionFormatMask(
6866   p_val IN NUMBER
6867   ) RETURN VARCHAR2
6868 IS
6869 
6870   l_num_digits NUMBER;
6871   l_num_thou NUMBER;
6872   l_counter NUMBER := 1;
6873   l_fmt_mask VARCHAR2(1000):='990';
6874 BEGIN
6875 
6876   IF ( ABS(p_val) < 1 ) THEN
6877     RETURN l_fmt_mask;
6878   END IF;
6879 
6880   l_num_digits := log(10, ABS(p_val));
6881   l_num_thou := CEIL((l_num_digits/3));
6882 
6883   FOR l_counter IN 1 .. l_num_thou LOOP
6884     l_fmt_mask :=  '999G' || l_fmt_mask ;
6885   END LOOP;
6886   RETURN l_fmt_mask;
6887 
6888 END getBillionFormatMask;
6889 
6890 
6891 
6892 --============================================================
6893 PROCEDURE draw_portlet_header(
6894   p_status_lbl IN VARCHAR2
6895  ,p_measure_lbl IN VARCHAR2
6896  ,p_value_lbl IN VARCHAR2
6897  ,p_change_lbl IN VARCHAR2)
6898 IS
6899 BEGIN
6900 
6901 -- style
6902   htp.p('<STYLE TYPE="text/css">');
6903   htp.p('A.OraPortletLink:link {COLOR: #663300; FONT-FAMILY: Arial, Helvetica, Geneva, sans-serif; FONT-SIZE: 9pt}');
6904   htp.p('A.OraPortletLink:active {COLOR: #663300; FONT-FAMILY: Arial, Helvetica, Geneva, sans-serif; FONT-SIZE: 9pt}');
6905   htp.p('A.OraPortletLink:visited {COLOR: #663300; FONT-FAMILY: Arial, Helvetica, Geneva, sans-serif; FONT-SIZE: 9pt}');
6906   htp.p('.OraPortletHeaderSub1 {font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #000000;
6907           background-color: #CCCC99}');
6908   htp.p('.OraPortletTableCellText {font-family:Arial, Helvetica, Geneva, sans-serif; font-size:9pt; text-align:left;
6909           background-color:#f7f7e7; color:#000000}');
6910   htp.p('.OraPortletTableCellNumber {font-family:Arial, Helvetica, Geneva, sans-serif; font-size:9pt; text-align:right;
6911           background-color:#f7f7e7; color:#000000; text-indent:1}');
6912   htp.p('.OraPortletBodyTextBlack { FONT-FAMILY: Arial, Helvetica, Geneva, sans-serif; FONT-SIZE: 9pt}');
6913   htp.p('.OraPortletBodyTextGreen { FONT-FAMILY: Arial, Helvetica, Geneva, sans-serif; FONT-SIZE: 9pt; color: #009900}');
6914   htp.p('.OraPortletBodyTextRed { FONT-FAMILY: Arial, Helvetica, Geneva, sans-serif; FONT-SIZE: 9pt; color: #FF0000}');
6915   htp.p('.OraPortletTableCellTextBand {font-family:Arial, Helvetica, Geneva, sans-serif; font-size:9pt; text-align:left;
6916           background-color:#ffffff; color:#000000}');
6917   htp.p('.OraPortletTableCellNumberBand {font-family:Arial, Helvetica, Geneva, sans-serif; font-size:9pt; text-align:right;
6918           background-color:#ffffff; color:#000000; text-indent:1}');
6919   htp.p('</STYLE>');
6920 
6921   -- Table
6922   htp.p('            <table bgcolor=white border=0 cellpadding=3 cellspacing=0 width="100%">');
6923 
6924 
6925   htp.p('              <tr> ');
6926   htp.p('                <th id="'||p_status_lbl||'" class=OraPortletHeaderSub1 ');
6927   htp.p('                        style="COLOR: #336699;BORDER-TOP: #f7f7e7 1px solid"
6928                                  align=left  valign=bottom>'||' </th>');
6929 --width="5%"
6930   htp.p('                <th id="'||p_measure_lbl||'" class=OraPortletHeaderSub1 ');
6931   htp.p('                        style="BORDER-LEFT: #cccc99 1px solid;COLOR: #336699; BORDER-TOP: #f7f7e7 1px solid" align=left valign=bottom
6932                                  >'||bis_utilities_pvt.escape_html(p_measure_lbl)||'</th>');
6933   htp.p('                <th id="'||p_value_lbl||'" class=OraPortletHeaderSub1 ');
6934 --bug#2228061
6935 
6936   htp.p('                        style="BORDER-LEFT: #f7f7e7 1px solid; COLOR: #336699;BORDER-TOP: #f7f7e7 1px solid" align=right valign=bottom>  </th>');
6937   htp.p('                <th id="'||p_change_lbl||'" class=OraPortletHeaderSub1 ');
6938   htp.p('                        style="BORDER-LEFT: #f7f7e7 1px solid;COLOR: #336699;BORDER-TOP: #f7f7e7 1px solid"
6939                                  align=right  valign=bottom>'||bis_utilities_pvt.escape_html(p_change_lbl)||'</th>');
6940   htp.p('                <th id="'||'change_img'||'" class=OraPortletHeaderSub1');
6941   --htp.p('                        style="BORDER-LEFT: #f7f7e7 1px solid; COLOR: #336699;BORDER-TOP: #f7f7e7 1px solid"
6942   htp.p('                        style="COLOR: #336699;BORDER-TOP: #f7f7e7 1px solid"  align=left valign=bottom>'||' </th>');
6943   htp.p('              </tr>');
6944 
6945 END draw_portlet_header ;
6946 
6947 
6948 --===========================================================
6949 FUNCTION get_row_style(
6950   p_row_style IN VARCHAR2
6951 ) RETURN VARCHAR2
6952 IS
6953 
6954 BEGIN
6955 
6956   IF (p_row_style = 'Band') THEN
6957     RETURN NULL;
6958   ELSE
6959     RETURN 'Band';
6960   END IF;
6961 
6962 
6963 EXCEPTION
6964   WHEN OTHERS THEN
6965     RETURN NULL;
6966 
6967 END get_row_style;
6968 
6969 
6970 
6971 --============================================================
6972 PROCEDURE draw_portlet_footer
6973 IS
6974 BEGIN
6975 
6976   htp.p('            </table>');
6977 
6978 END draw_portlet_footer;
6979 
6980 
6981 
6982 
6983 --============================================================
6984 --    PROCEDURE
6985 --      draw_status
6986 --
6987 --    PURPOSE
6988 --       p_status_lbl => status header label (for ADA compliant)
6989 --       p_row_style => style of row, white or yellow background
6990 --       p_actual_val => actual value
6991 --       p_target_val => target value
6992 --       p_range1_low_pcnt => percentage for range1 low
6993 --       p_range1_high_pcnt => percentage for range1 high
6994 
6995 --    PARAMETERS
6996 --
6997 --    HISTORY
6998 --       22-JAN-2002 juwang Created.
6999 --============================================================
7000 PROCEDURE draw_status(
7001   p_status_lbl IN VARCHAR2
7002  ,p_row_style IN VARCHAR2
7003  ,p_actual_val IN NUMBER
7004  ,p_target_val IN NUMBER
7005  ,p_range1_low_pcnt IN NUMBER
7006  ,p_range1_high_pcnt IN NUMBER
7007 )
7008 IS
7009   l_range1_low_val  NUMBER(20,2);
7010   l_range1_high_val NUMBER(20,2);
7011 
7012 BEGIN
7013 
7014 -- Compute the min, max value of tolerance ranges
7015   IF ( p_target_val IS NULL ) THEN
7016     l_range1_low_val := NULL;
7017     l_range1_high_val := NULL;
7018 
7019   ELSE
7020     l_range1_low_val := p_target_val-((p_range1_low_pcnt/100)*p_target_val);
7021     l_range1_high_val:= p_target_val+ ((p_range1_high_pcnt/100)*p_target_val);
7022   END IF;
7023 
7024 -- If actual is inside tolerance range print in forest green color
7025 -- bug#2187778
7026   IF ( (p_target_val IS NULL) OR
7027        (l_range1_low_val IS NULL) OR
7028        (l_range1_high_val IS NULL)) THEN
7029     draw_status(p_status_lbl, 0, p_row_style);
7030 
7031   -- target, low, high ranges are not null
7032   ELSIF ((p_actual_val >= NVL(l_range1_low_val, p_target_val)) AND
7033    (p_actual_val <= NVL(l_range1_high_val, p_target_val))) THEN
7034 
7035     draw_status(p_status_lbl, 1, p_row_style);
7036 
7037   -- If actual is outside tolerance range print in red color
7038   ELSIF  (p_actual_val < NVL(l_range1_low_val, p_target_val) OR
7039           p_actual_val > NVL(l_range1_high_val, p_target_val)) THEN
7040 
7041     draw_status(p_status_lbl, 2, p_row_style);
7042 
7043   ELSE
7044     draw_status(p_status_lbl, 0, p_row_style);
7045 
7046   END IF; -- actual colors
7047 END draw_status;
7048 
7049 
7050 
7051 --============================================================
7052 -- p_status :
7053 -- 0 -> None
7054 -- 1 -> within target range
7055 -- 2 -> outside target range
7056 --============================================================
7057 PROCEDURE draw_status(
7058   p_status_lbl IN VARCHAR2
7059  ,p_status IN NUMBER
7060  ,p_row_style IN VARCHAR2)
7061 IS
7062   l_range_lbl VARCHAR2(2000); -- incr the size for 2617137
7063   l_in_range_lbl VARCHAR2(2000);
7064   l_out_range_lbl VARCHAR2(2000);
7065   l_gif VARCHAR2(100);
7066 BEGIN
7067 
7068   l_in_range_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_WITHIN_RANGE');
7069   l_out_range_lbl := BIS_UTILITIES_PVT.Get_FND_Message('BIS_OUTSIDE_RANGE');
7070   IF ( p_status = 1 ) THEN
7071     l_gif := 'bisinrng.gif';
7072     l_range_lbl := l_in_range_lbl;
7073   ELSIF ( p_status = 2 ) THEN
7074     l_gif := 'bisourng.gif';
7075     l_range_lbl := l_out_range_lbl;
7076   ELSE
7077     l_gif := 'FNDINVDT.gif';
7078     l_range_lbl := '';
7079   END IF;
7080 
7081 --width="5%"
7082   htp.p('                <td headers="'||p_status_lbl||'" class=OraPortletTableCellText'||p_row_style);
7083   htp.p('                        style="BORDER-LEFT: #cccc99 1px solid; BORDER-BOTTOM: #cccc99 1px solid;  BORDER-TOP: #f7f7e7 1px solid "  align=left> <img src="/OA_MEDIA/' || l_gif || '" width="16" height="16" alt="'||
7084   ICX_UTIL.replace_alt_quotes(l_range_lbl)||'">');
7085   htp.p('</td>');
7086 
7087 END draw_status;
7088 
7089 
7090 
7091 
7092 --============================================================
7093 PROCEDURE draw_measure_name(
7094   p_actual_url IN VARCHAR2
7095  ,p_label IN VARCHAR2
7096  ,p_measure_lbl IN VARCHAR2
7097  ,p_row_style IN VARCHAR2)
7098 IS
7099 BEGIN
7100   htp.p('                <td headers="'||p_measure_lbl||'" class=OraPortletTableCellText'||p_row_style);
7101   htp.p('                        style="BORDER-BOTTOM: #cccc99 1px solid;  BORDER-TOP: #f7f7e7 1px solid " align=left>');
7102   IF p_actual_url IS NOT NULL THEN
7103   --htp.p('<a href="' || p_actual_url || '" >' || p_label || ' </a> '); -- 2164190 sashaik --
7104     htp.p(bis_utilities_pvt.escape_html(LTRIM(p_label)));
7105   ELSE
7106     htp.p(bis_utilities_pvt.escape_html(LTRIM(p_label)));
7107   END IF;
7108   htp.p('                </td>');
7109 END draw_measure_name;
7110 
7111 
7112 
7113 --============================================================
7114 -- p_formatted_actual -> the value displayed in value column
7115 --============================================================
7116 PROCEDURE draw_actual(
7117   p_value_lbl IN VARCHAR2
7118  ,p_formatted_actual IN VARCHAR2
7119  ,p_row_style IN VARCHAR2)
7120 IS
7121 
7122 BEGIN
7123 
7124   htp.p('                <td headers="'|| p_value_lbl ||
7125   '" class=OraPortletTableCellNumber'|| p_row_style);
7126   htp.p('                        style="BORDER-BOTTOM: #cccc99 1px solid;BORDER-LEFT: #cccc99 1px solid" width="15%" valign="bottom" align=right nowrap> ');
7127   htp.p('                  <span class=OraPortletBodyTextBlack>'|| bis_utilities_pvt.escape_html(p_formatted_actual) ||'</span>');
7128   htp.p('                </td>');
7129 END draw_actual;
7130 
7131 
7132 
7133 --============================================================
7134 --
7135 --============================================================
7136 PROCEDURE draw_change(
7137   p_change_lbl IN VARCHAR2
7138  ,p_change IN VARCHAR2
7139  ,p_img IN VARCHAR2
7140  ,p_arrow_alt_text IN VARCHAR2
7141  ,p_row_style IN VARCHAR2
7142 )
7143 IS
7144 
7145 BEGIN
7146 
7147   htp.p('                <td headers="'|| p_change_lbl||'" class=OraPortletTableCellNumber'|| p_row_style);
7148   htp.p('                        style="BORDER-LEFT: #cccc99 1px solid; BORDER-BOTTOM: #cccc99 1px solid; BORDER-TOP: #f7f7e7 1px solid " align="right"  valign="bottom" nowrap>'|| bis_utilities_pvt.escape_html(p_change));
7149   htp.p('                </td>');
7150 
7151   htp.p('                <td headers="change_img"  class=OraPortletTableCellNumber'|| p_row_style);
7152   htp.p('                        style="
7153   BORDER-BOTTOM: #cccc99 1px solid;BORDER-TOP: #f7f7e7 1px solid " align="left"   valign="bottom" nowrap >');
7154 
7155   IF ( p_img IS NOT NULL ) THEN
7156     htp.p('                <img src='|| p_img||' alt="'|| ICX_UTIL.replace_alt_quotes(p_arrow_alt_text)||'"  height="12" >');
7157   ELSE
7158     htp.p(' ');
7159   END IF;
7160 
7161   htp.p('</td>');
7162 END draw_change;
7163 
7164 
7165 
7166 
7167 --===========================================================
7168 FUNCTION is_authroized(
7169   p_cur_user_id IN PLS_INTEGER
7170  ,p_target_level_id IN PLS_INTEGER
7171 ) RETURN BOOLEAN
7172 
7173 IS
7174   l_has_access INTEGER;
7175   CURSOR c1 IS
7176     SELECT distinct DECODE(b.user_id, NULL, 0, 1)
7177   FROM
7178     fnd_user_resp_groups b
7179     ,bisbv_target_levels d
7180     ,bis_indicator_resps e
7181   WHERE
7182         b.user_id = p_cur_user_id
7183   AND   d.target_level_id = p_target_level_id
7184   AND   e.target_level_id = d.target_level_id
7185   AND   b.responsibility_id = e.responsibility_id
7186   AND   b.start_date <= sysdate
7187   AND   (b.end_date IS NULL or b.end_date >= sysdate);
7188 
7189 
7190 
7191 BEGIN
7192 
7193   OPEN c1;
7194   FETCH c1 INTO l_has_access;
7195   WHILE c1%FOUND LOOP
7196     IF ( l_has_access = 1 ) THEN
7197       CLOSE c1;
7198       RETURN TRUE;
7199     END IF;
7200     FETCH c1 INTO l_has_access;
7201   END LOOP;
7202 
7203   CLOSE c1;
7204   RETURN FALSE;
7205 
7206 
7207 
7208 
7209 EXCEPTION
7210   WHEN OTHERS THEN
7211     IF c1%ISOPEN THEN CLOSE c1; END IF;
7212     RETURN FALSE;
7213 
7214 END is_authroized;
7215 
7216 
7217 
7218 --===========================================================
7219 -- retriving actual and report url
7220 --===========================================================
7221 PROCEDURE get_actual(
7222   p_target_rec IN  BIS_TARGET_PUB.Target_Rec_Type
7223  ,x_actual_url OUT NOCOPY VARCHAR2
7224  ,x_actual_value OUT NOCOPY NUMBER
7225  ,x_comparison_actual_value OUT NOCOPY NUMBER
7226  ,x_err OUT NOCOPY VARCHAR2
7227 )
7228 IS
7229 
7230   l_act_in   BIS_ACTUAL_PUB.Actual_rec_type;    -- 2164190 sashaik
7231   l_act_out   BIS_ACTUAL_PUB.Actual_rec_type;   -- 2164190 sashaik
7232   l_msg_count     NUMBER;       -- 2164190 sashaik
7233   l_msg_data      VARCHAR2(32000);      -- 2164190 sashaik
7234   l_error_tbl     BIS_UTILITIES_PUB.Error_Tbl_Type; -- 2164190 sashaik
7235   l_return_status VARCHAR2(300);      -- 2164190 sashaik
7236 
7237 BEGIN
7238 
7239   l_act_in.Target_level_ID      := p_target_rec.target_level_id;
7240   l_act_in.Dim1_Level_Value_ID := p_target_rec.dim1_level_value_id;
7241   l_act_in.Dim2_Level_Value_ID := p_target_rec.dim2_level_value_id;
7242   l_act_in.Dim3_Level_Value_ID := p_target_rec.dim3_level_value_id;
7243   l_act_in.Dim4_Level_Value_ID := p_target_rec.dim4_level_value_id;
7244   l_act_in.Dim5_Level_Value_ID := p_target_rec.dim5_level_value_id;
7245   l_act_in.Dim6_Level_Value_ID := p_target_rec.dim6_level_value_id;
7246   l_act_in.Dim7_Level_Value_ID := p_target_rec.dim7_level_value_id;
7247 
7248   bis_actual_pub.Retrieve_Actual
7249   (  p_api_version      => 1.0
7250   ,p_all_info           => FND_API.G_FALSE
7251   ,p_Actual_Rec         => l_act_in
7252   ,x_Actual_Rec         => l_act_out
7253   ,x_return_Status      => l_return_status
7254   ,x_msg_count          => l_msg_count
7255   ,x_msg_data           => l_msg_data
7256   ,x_error_tbl          => l_error_tbl
7257   );
7258 
7259   x_actual_url := l_act_out.Report_URL;
7260   x_actual_value := l_act_out.ACTUAL;
7261   x_comparison_actual_value := l_act_out.COMPARISON_ACTUAL_VALUE;
7262 
7263 EXCEPTION
7264   WHEN OTHERS THEN
7265 --  htp.p(l_msg_data);
7266     x_actual_url := NULL;
7267     x_actual_value := NULL;
7268     x_comparison_actual_value := NULL;
7269     x_err := SQLERRM;
7270 
7271 END get_actual;
7272 
7273 
7274 
7275 
7276 
7277 --===========================================================
7278 -- retriving taget, Note: do not use BIS_TARGET_PUB.Rrieve_Target
7279 -- Procedure.  Bug exists.
7280 --===========================================================
7281 PROCEDURE get_target(
7282   p_target_in IN  BIS_TARGET_PUB.Target_Rec_Type
7283  ,x_target OUT NOCOPY NUMBER
7284  ,x_range1_low OUT NOCOPY NUMBER
7285  ,x_range1_high OUT NOCOPY NUMBER
7286  ,x_range2_low OUT NOCOPY NUMBER
7287  ,x_range2_high OUT NOCOPY NUMBER
7288  ,x_range3_low OUT NOCOPY NUMBER
7289  ,x_range3_high OUT NOCOPY NUMBER
7290  ,x_err OUT NOCOPY VARCHAR2
7291 )
7292 IS
7293 
7294   l_comp_tar_id    NUMBER;
7295 
7296  -- Cursor to get the computing function id
7297   CURSOR c_comp_tar (p_target_level_id pls_integer) IS
7298     SELECT computing_function_id
7299     FROM bisbv_target_levels
7300     WHERE target_level_id = p_target_level_id;
7301 
7302 
7303 -- Cursor to get the target ranges
7304 -- mdamle 01/15/2001 - Use Dim6 and Dim7
7305   CURSOR c_target_range_rec IS
7306     SELECT
7307        target
7308       ,range1_low, range1_high
7309       ,range2_low, range2_high
7310       ,range3_low, range3_high
7311     FROM bisbv_targets  tars
7312     WHERE tars.target_level_id    = p_target_in.target_level_id
7313       -- mdamle 01/15/2001
7314         -- AND   tars.org_level_value_id    = p_target_in.org_level_value_id
7315         -- AND   NVL(tars.time_level_value_id,'NILL')
7316         --  = NVL(p_target_in.time_level_value_id, 'NILL')
7317    AND   tars.plan_id               = p_target_in.plan_id
7318    AND NVL(tars.dim1_level_value_id, 'NILL')
7319      = NVL(p_target_in.dim1_level_value_id, 'NILL')
7320    AND NVL(tars.dim2_level_value_id, 'NILL')
7321      = NVL(p_target_in.dim2_level_value_id, 'NILL')
7322    AND NVL(tars.dim3_level_value_id, 'NILL')
7323      = NVL(p_target_in.dim3_level_value_id, 'NILL')
7324    AND NVL(tars.dim4_level_value_id, 'NILL')
7325      = NVL(p_target_in.dim4_level_value_id, 'NILL')
7326    AND NVL(tars.dim5_level_value_id, 'NILL')
7327      = NVL(p_target_in.dim5_level_value_id, 'NILL')
7328    AND NVL(tars.dim6_level_value_id, 'NILL')
7329      = NVL(p_target_in.dim6_level_value_id, 'NILL')
7330    AND NVL(tars.dim7_level_value_id, 'NILL')
7331      = NVL(p_target_in.dim7_level_value_id, 'NILL');
7332 
7333 BEGIN
7334 
7335   OPEN c_target_range_rec;
7336   FETCH c_target_range_rec INTO
7337     x_target
7338    ,x_range1_low, x_range1_high
7339    ,x_range2_low, x_range2_high
7340    ,x_range3_low, x_range3_high;
7341 
7342    IF c_target_range_rec%NOTFOUND THEN
7343      x_target := NULL;
7344      x_range1_low := NULL;
7345      x_range1_high := NULL;
7346      x_range2_low := NULL;
7347      x_range2_high := NULL;
7348      x_range3_low := NULL;
7349      x_range3_high := NULL;
7350    END IF;
7351    CLOSE c_target_range_rec;
7352 
7353    IF x_target IS NULL THEN
7354 
7355      OPEN c_comp_tar(p_target_in.target_level_id);
7356      FETCH c_comp_tar INTO l_comp_tar_id;
7357      CLOSE c_comp_tar;
7358 
7359      IF (l_comp_tar_id IS NOT NULL) THEN
7360        x_target := BIS_TARGET_PVT.Get_Target(l_comp_tar_id
7361        , p_target_in);
7362      END IF;
7363    END IF;
7364 
7365 
7366 
7367 EXCEPTION
7368 
7369   WHEN OTHERS THEN
7370     IF c_target_range_rec%ISOPEN THEN CLOSE c_target_range_rec; END IF;
7371     IF c_comp_tar%ISOPEN THEN CLOSE c_comp_tar; END IF;
7372     x_target := NULL;
7373     x_range1_low := NULL;
7374     x_range1_high := NULL;
7375     x_range2_low := NULL;
7376     x_range2_high := NULL;
7377     x_range3_low := NULL;
7378     x_range3_high := NULL;
7379     x_err := SQLERRM;
7380 END get_target;
7381 
7382 
7383 
7384 
7385 --===========================================================
7386 -- 1. Find out NOCOPY the time dimension level index and level id
7387 -- 2. If the above exists, find out NOCOPY the current period id
7388 --    and sets it into x_target_rec.dim[n]_level_value_id
7389 -- 3. If the the current period id doesnt have the actual,
7390 --    use the latest actual
7391 -- 4. If the above does not exist, return immediately
7392 --===========================================================
7393 PROCEDURE get_time_dim_index(
7394   p_ind_selection_id IN NUMBER
7395  ,x_target_rec IN OUT NOCOPY BIS_TARGET_PUB.Target_Rec_Type
7396  ,x_err OUT NOCOPY VARCHAR2
7397 )
7398 IS
7399   e_notimevalue EXCEPTION;
7400   l_time_dimension_level_id NUMBER;
7401   l_time_dimension_index    NUMBER;
7402   l_last_period_id          VARCHAR2(80) := NULL; -- bug#2173745
7403   l_current_period_id       VARCHAR2(32000) := NULL;
7404   l_current_period_name     VARCHAR2(32000) := NULL;
7405   isRollingLevel      NUMBER;
7406   level_short_name      VARCHAR2(3000);
7407 
7408 -- meastmon 05/09/2001
7409 -- Cursor to get the index (1 to 7) of the time dimension level and
7410 -- the time dimension level id given a target level id.
7411 -- If the cursor returns no rows or null, then this target level
7412 -- doesn't have a time dimension level
7413 
7414   CURSOR c_time_dimension_index (p_tarid pls_integer) IS
7415   SELECT
7416     x.sequence_no,
7417     decode(x.sequence_no,
7418            1, z.dimension1_level_id,
7419            2, z.dimension2_level_id,
7420            3, z.dimension3_level_id,
7421            4, z.dimension4_level_id,
7422            5, z.dimension5_level_id,
7423            6, z.dimension6_level_id,
7424            7, z.dimension7_level_id,
7425            NULL) time_dimension_level_id
7426   FROM
7427     bis_indicator_dimensions x
7428     ,bis_dimensions y
7429     ,bis_target_levels z
7430   WHERE  x.dimension_id = y.dimension_id
7431   AND y.short_name=BIS_UTILITIES_PVT.GET_TIME_DIMENSION_NAME_TL(p_tarid,NULL)
7432   AND   x.indicator_id = z.indicator_id
7433   AND   z.target_level_id = p_tarid;
7434 
7435 
7436 
7437 BEGIN
7438 
7439 -- Find out NOCOPY which dimension level index corresponds to time
7440 -- dimension level. Also get the time dimension level id
7441 
7442   OPEN c_time_dimension_index(x_target_rec.target_level_id);
7443   FETCH c_time_dimension_index INTO
7444     l_time_dimension_index,
7445     l_time_dimension_level_id;
7446 
7447   IF c_time_dimension_index%NOTFOUND THEN -- no time dimension level
7448     l_time_dimension_index := -1;
7449   END IF;
7450   CLOSE c_time_dimension_index;
7451 
7452   -- no time dimension level
7453   IF l_time_dimension_index <= 0 THEN
7454     RETURN;
7455   END IF;
7456 
7457 
7458   SELECT short_name
7459   INTO   level_short_name
7460   FROM   bis_levels
7461   WHERE  level_id = l_time_dimension_level_id;
7462 
7463   isRollingLevel := bis_utilities_pvt.Is_Rolling_Period_Level(level_short_name);
7464 
7465   IF ( isRollingLevel = 0 ) THEN
7466 
7467     -- Set the variable x_target_rec.dimX_level_value_id that correspond
7468     -- to the time dimension whith the value id of the current period.
7469     -- target level contain a time dimension.
7470     -- Get the time level value id and name to be used to get actual and target
7471     -- Right now this is the current period
7472     BIS_INDICATOR_REGION_UI_PVT.getCurrentPeriodInfo(
7473        p_ind_selection_id
7474       ,x_target_rec.target_level_id
7475       ,l_time_dimension_level_id
7476       ,l_current_period_id
7477       ,l_current_period_name);
7478 
7479     IF l_current_period_id IS NULL THEN
7480       -- Conflicting!! If there is time level, there is current period
7481       -- Only in this case we raise an excepion ignore this selection
7482 
7483       RAISE e_notimevalue;
7484     END IF;
7485 
7486 
7487     --bug#2173475, if current period id's actual not exist,
7488     --use the latest one
7489     IF ( NOT bis_indicator_region_ui_pvt.use_current_period(x_target_rec
7490                                   ,l_time_dimension_index
7491                                   ,l_current_period_id
7492                                   ,l_last_period_id) ) THEN
7493         -- should use last period id in query
7494 
7495       l_current_period_id := l_last_period_id;
7496 
7497     END IF;
7498 
7499   END IF;
7500 
7501 
7502   assign_time_level_value_id
7503   ( p_is_rolling_level  => isRollingLevel
7504   , p_current_period_id => l_current_period_id
7505   , p_time_dim_idx  => l_time_dimension_index
7506   , p_target_rec  => x_target_rec
7507   );
7508 
7509 
7510 EXCEPTION
7511 
7512   WHEN e_notimevalue THEN
7513     x_err := 'Time dimension level exists but no current period.';
7514     RAISE e_notimevalue;
7515 
7516   WHEN OTHERS THEN
7517     IF c_time_dimension_index%ISOPEN THEN CLOSE c_time_dimension_index; END IF;
7518     x_err := SQLERRM;
7519 END get_time_dim_index;
7520 
7521 
7522 --===========================================================
7523 -- Assign time level value id
7524 --===========================================================
7525 PROCEDURE assign_time_level_value_id
7526 (
7527   p_is_rolling_level    IN NUMBER,
7528   p_current_period_id IN VARCHAR,
7529   p_time_dim_idx  IN NUMBER,
7530   p_target_rec    IN OUT NOCOPY BIS_TARGET_PUB.Target_Rec_Type
7531 )
7532 IS
7533 BEGIN
7534 
7535   -- Set the variable x_target_rec.dimX_level_value_id that correspond to
7536   -- the time dimension whith the value id of the current period.
7537 
7538   IF p_time_dim_idx = 1 THEN
7539     IF ( p_is_rolling_level = 0 ) THEN
7540       p_target_rec.dim1_level_value_id := p_current_period_id ;
7541     ELSE
7542       p_target_rec.dim1_level_value_id := '-1';
7543     END IF;
7544   ELSIF p_time_dim_idx = 2 THEN
7545     IF ( p_is_rolling_level = 0 ) THEN
7546       p_target_rec.dim2_level_value_id := p_current_period_id ;
7547     ELSE
7548       p_target_rec.dim2_level_value_id := '-1';
7549     END IF;
7550   ELSIF p_time_dim_idx = 3 THEN
7551     IF ( p_is_rolling_level = 0 ) THEN
7552       p_target_rec.dim3_level_value_id := p_current_period_id ;
7553     ELSE
7554       p_target_rec.dim3_level_value_id := '-1';
7555     END IF;
7556   ELSIF p_time_dim_idx = 4 THEN
7557     IF ( p_is_rolling_level = 0 ) THEN
7558       p_target_rec.dim4_level_value_id := p_current_period_id ;
7559     ELSE
7560       p_target_rec.dim4_level_value_id := '-1';
7561     END IF;
7562   ELSIF p_time_dim_idx = 5 THEN
7563     IF ( p_is_rolling_level = 0 ) THEN
7564       p_target_rec.dim5_level_value_id := p_current_period_id ;
7565     ELSE
7566       p_target_rec.dim5_level_value_id := '-1';
7567     END IF;
7568   ELSIF p_time_dim_idx = 6 THEN
7569     IF ( p_is_rolling_level = 0 ) THEN
7570       p_target_rec.dim6_level_value_id := p_current_period_id ;
7571     ELSE
7572       p_target_rec.dim6_level_value_id := '-1';
7573     END IF;
7574   ELSIF p_time_dim_idx = 7 THEN
7575     IF ( p_is_rolling_level = 0 ) THEN
7576       p_target_rec.dim7_level_value_id := p_current_period_id ;
7577     ELSE
7578       p_target_rec.dim7_level_value_id := '-1';
7579     END IF;
7580   END IF;
7581 
7582 EXCEPTION
7583   WHEN OTHERS THEN
7584     NULL;
7585 END assign_time_level_value_id;
7586 
7587 
7588 
7589 --===========================================================
7590 -- retriving actual and report url
7591 --===========================================================
7592 PROCEDURE get_change(
7593   p_actual_value IN NUMBER
7594  ,p_comp_actual_value IN NUMBER
7595  ,p_comp_source IN VARCHAR2
7596  ,p_good_bad IN VARCHAR2
7597  ,p_improve_msg  IN VARCHAR2
7598  ,p_worse_msg  IN VARCHAR2
7599  ,x_change OUT NOCOPY NUMBER
7600  ,x_img OUT NOCOPY VARCHAR2
7601  ,x_arrow_alt_text IN OUT NOCOPY VARCHAR2
7602  ,x_err OUT NOCOPY VARCHAR2
7603 )
7604 IS
7605   l_long_label VARCHAR2(2000);  --2157402
7606 
7607 BEGIN
7608 --  1850860  -- rchandra 22-NOv-2001
7609 -- do not calculate if there is no acutal or comp actual
7610   IF ( (p_comp_actual_value IS NULL) OR (p_actual_value IS NULL) ) THEN
7611     x_change := NULL;
7612     x_img := NULL;
7613     x_arrow_alt_text := NULL;
7614     x_err := NULL;
7615     RETURN;
7616   END IF;
7617 
7618 
7619   l_long_label := NULL;
7620 
7621   IF (p_comp_source IS NOT NULL) THEN  -- comparison source is not null
7622     BIS_INDICATOR_REGION_UI_PVT.getAKRegionItemLongLabel(p_comp_source,
7623     l_long_label);
7624     IF (l_long_label IS NOT NULL) THEN
7625       x_arrow_alt_text := l_long_label ||'.';
7626     END IF;
7627 
7628   END IF;
7629 
7630 
7631 
7632 -- calculate the change %
7633   x_change := ((p_actual_value - p_comp_actual_value)/ ABS(p_comp_actual_value)) * 100;
7634 -- determine the dirction of arrow and the color
7635 
7636   x_change := ROUND(  x_change );   -- 2309916
7637 
7638   IF x_change < 0 THEN
7639     IF p_good_bad = 'G' THEN
7640 
7641       x_img := c_down_green;
7642       x_arrow_alt_text := x_arrow_alt_text ||p_improve_msg;--2157402
7643     ELSIF p_good_bad = 'B' THEN
7644       x_img := c_down_red;
7645      x_arrow_alt_text := x_arrow_alt_text ||p_worse_msg; --2157402
7646     ELSE
7647       x_img := c_down_black;
7648     END IF;
7649   ELSIF x_change > 0 THEN -- 2309916
7650     IF p_good_bad = 'G' THEN
7651       x_img := c_up_green;
7652       x_arrow_alt_text := x_arrow_alt_text ||p_improve_msg;--2157402
7653     ELSIF p_good_bad = 'B' THEN
7654       x_img := c_up_red;
7655       x_arrow_alt_text := x_arrow_alt_text ||p_worse_msg; --2157402
7656     ELSE
7657       x_img := c_up_black;
7658     END IF;
7659 
7660   END IF;
7661 
7662 
7663 
7664 EXCEPTION
7665   WHEN OTHERS THEN
7666 
7667     x_err := SQLERRM;
7668 
7669 END get_change;
7670 
7671 
7672 --===========================================================
7673 -- end of change by juwang
7674 --===========================================================
7675 
7676 -- *******************************************************************
7677 end bis_indicator_region_ui_pvt;