[Home] [Help]
PACKAGE BODY: APPS.BIS_PMV_PARAMETERS_PVT
Source
1 PACKAGE BODY BIS_PMV_PARAMETERS_PVT as
2 /* $Header: BISVPARB.pls 120.5 2006/03/27 12:54:18 nbarik noship $ */
3 -- dbdrv: sql ~PROD ~PATH ~FILE none none none package &phase=plb \
4 -- dbdrv: checkfile(115.155=120.5):~PROD:~PATH:~FILE
5
6 /*
7 REM +=======================================================================+
8 REM | Copyright (c) 1998 Oracle Corporation, Redwood Shores, CA, USA |
9 REM | All rights reserved. |
10 REM +=======================================================================+
11 REM | FILENAME |
12 REM | BISVPARB.pls |
13 REM | |
14 REM | DESCRIPTION |
15 REM | This is the Query Pkg. for PMV. |
16 REM | |
17 REM | HISTORY |
18 REM | serao, 08/23/2002, bug 2514044 - get name value pairs from pUsrStrng |
19 REM | of the form : |
20 REM | pRegionCode=POA_DBI_POP_CA_STATUS& |
21 REM | VIEW_BY=SUPPLIER+POA_SUPPLIERS |
22 REM | |
23 REM | ansingh, 02/09/2002, bug 2537114 - In getLOVSQL() while constructing |
24 REM | where clause take care of the condition |
25 REM | org='All'. In getTimeLovSql() fixed upper|
26 REM | comparision issue and query issue. |
27 REM | ansingh, 7/11/2002 Bug 2577374 - PMV To handle the Unassigned values |
28 REM | nbarik, 23/10/2002 Bug Fix 2616851,null check for mandatory parameter|
29 REM | ansingh, 11/11/2002 BugFix#2641735, LOV Performance Fix. |
30 REM | nkishore,10/12/2002 Added copy_ses_to_def_parameters |
31 REM | ansingh, 01/23/2003 BugFix#2763217 |
32 REM | nbarik 03/17/2003 Bug Fix 2844149 - Added date format for to_date |
33 REM | ansingh 04/22/2003 BugFix#2887200 |
34 REM | nbarik 05/05/2003 Bug Fix 2691199 - use p_where_clause |
35 REM | nbarik 05/13/2003 Bug Fix 2955560 - add an enclosing parentheses |
36 REM | kiprabha 05/22/2003 Enh 2885430 - DIMENSION VALUE |
37 REM | rcmuthuk 06/16/2003 Bug Fix 2998426 - Prepend % for Time LOV Search |
38 REM | nbarik 07/10/2003 Bug Fix 2999602 - Change Call to GET_COMPUTED_DATE|
39 REM | nkishore 07/30/2003 Bug Fix 3074842 - ins/del duplicate dim levels |
40 REM | nkishore 08/11/2003 Bug Fix 3087383 - copy time from/to,sysdate in copy_form_func |
41 REM | nkishore, 19/08/2003, BugFix 3099789 add copy_time_params |
42 REM | nbarik 10/21/03 Bug Fix 3201277 |
43 REM | nkishore 12/19/03 Bug Fix 3314027 |
44 REM | ksadagop 01/20/04 Bug Fix 3351910 Added LOV Where clause-drillAcross|
45 REM | nkishore 12/19/03 Bug Fix 3411456 |
46 REM | nbarik 02/19/04 Bug Fix 3441967 |
47 REM | nkishore 02/25/04 Bug Fix 3464708 |
48 REM | ashgarg 10/21/04 Bug Fix 3878112 |
49 REM +=======================================================================+
50 */
51
52 MAX_BIND_VARIABLE_COUNT NUMBER := 20;
53
54 /** Flattens the attrNameList for dimension and paramNumber into the xParameterTbl structure */
55 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation - Added pLovWhereList
56 PROCEDURE addToList(
57 pDImension IN VARCHAR2,
58 pAttrNameList IN BISVIEWER.t_char,
59 pLovWhereList IN BISVIEWER.t_char,
60
61 pParamNumber In NUMBER,
62 xParameterTbl IN OUT NOCOPY parameter_group_tbl_type
63 ) IS
64 lCount NUMBER;
65 lParamGrpRec parameter_group_rec_type;
66 BEGIN
67
68 IF (xParameterTbl IS NOT NULL) THEN
69 lCOunt := xParameterTbl.COUNT;
70
71 IF (pAttrNameList IS NOT NULL AND pAttrNameList.COUNT > 0) THEN
72
73 FOR i IN pAttrNameList.FIRST..pAttrNameList.LAST LOOP
74 lParamGrpRec.dimension := pDimension;
75 lParamGrpRec.attribute_name := pAttrNameList(i);
76 --jprabhud - Bug 3625068
77 IF (pLovWhereList IS NOT NULL AND pLovWhereList.COUNT > 0) THEN
78 lParamGrpRec.lov_where := pLovWhereList(i);
79 ELSE
80 lParamGrpRec.lov_where := null;
81 END IF;
82
83 lParamGrpRec.parameter_number := pParamNumber;
84 xParameterTbl(lCOunt+i) := lParamGrpRec; --i starts with 1, therefore count+i should suffice
85 END LOOP;
86
87 ELSE
88 lParamGrpRec.dimension := NULL;
89 lParamGrpRec.attribute_name := pDimension;
90 lParamGrpRec.parameter_number := pParamNumber;
91 xParameterTbl(lCOunt+1) := lParamGrpRec;
92 lParamGrpRec.lov_where := NULL;
93 END IF;
94
95 END IF;
96 END addToList;
97
98 /* Proc to will group all the parameters into the parameter_group_tbl_type datastructure */
99 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation - Added pLovWhereTbl
100 PROCEDURE getParameterGroupForLists(
101 pAttribute2Tbl BISVIEWER.t_char
102 ,pAttribCodeTbl BISVIEWER.t_char
103 ,pDisplaySeqTbl BISVIEWER.t_num
104 ,pLovWhereTbl BISVIEWER.t_char
105 ,xParameterGroup IN OUT NOCOPY parameter_group_tbl_type
106 ,xAsOfDateExists OUT NOCOPY BOOLEAN
107 ,xTimeCompTypeExists OUT NOCOPY BOOLEAN
108 )IS
109 lParamGrpRec parameter_group_rec_type;
110 lAttrNameList BISVIEWER.t_char;
111 lLovWhereList BISVIEWER.t_char;
112 l_index BINARY_INTEGER := 1;
113 l_grp_index BINARY_INTEGER := 1;
114 lPrevDimension VARCHAR2(80);
115 lDimension VARCHAR2(80);
116 lPrevDisplaySequence NUMBER ;
117 BEGIN
118
119 xTimeCompTypeExists := FALSE;
120 xAsOfDateExists := FALSE;
121
122 lPrevDimension := null;
123 lDimension := null;
124 -- get the latest count
125 l_grp_index := xParameterGroup.COUNT+1;
126
127 IF pAttribute2Tbl IS NOT NULL AND pAttribute2Tbl.COUNT >0 THEN
128 FOR i IN pAttribute2Tbl.FIRST..pAttribute2Tbl.LAST LOOP
129
130 lDimension := pAttribute2Tbl(i);
131 lDimension := substr( lDimension ,1,instr(lDimension ,'+')-1 );
132
133 IF (lDimension = 'TIME_COMPARISON_TYPE') THEN
134 xTimeCompTypeExists := TRUE;
135 END IF;
136
137 IF (lDimension IS NULL) THEN
138
139 --put the prev dimension stuff in
140 IF (lPrevDimension IS NOT NULL) THEN
141
142 addToList(
143 pDImension => lPrevDimension,
144 pAttrNameList => lAttrNameList,
145 pLovWhereList => lLovWhereList,
146 pParamNumber => l_grp_index,
147 xParameterTbl => xParameterGroup
148 );
149 l_grp_index := l_grp_index+1;
150 END IF;
151
152 --reinitailise record for the next dimension
153 lParamGrpRec.dimension := NULL;
154 l_index := 1;
155 lAttrNameList.DELETE;
156 lLovWHereList.DELETE;
157
158 --add this non-attr record
159 lAttrNameList(l_index) := pAttribCodeTbl(i);
160 lLovWhereList(l_index) := pLovWhereTbl(i);
161
162 addToList(
163 pDImension => pAttribCodeTbl(i),
164 pAttrNameList => lAttrNameList,
165 pLovWhereList => lLovWhereList,
166 pParamNumber => l_grp_index,
167 xParameterTbl => xParameterGroup
168 );
169 l_grp_index := l_grp_index+1;
170
171 IF (pAttribCodeTbl(i) = 'AS_OF_DATE') THEN
172 xAsOfDateExists := TRUE;
173 END IF;
174
175 --reinitailise record for the next dimension
176 lParamGrpRec.dimension := NULL;
177 l_index := 1;
178 lAttrNameList.DELETE;
179 lLovWhereList.DELETE;
180
181 lPrevDimension := lDimension;
182 lPrevDisplaySequence := pDisplaySeqTbl(i);
183
184 ELSIF (pDisplaySeqTbl (i) < 10000) THEN --diff rules for less than 10000
185 --store the display sequence
186 lPrevDisplaySequence := pDisplaySeqTbl(i);
187
188 --if this is not a dimension or the current dimenion is not the prev dimension, then
189 -- they do not belong to the same group
190 -- if the prev dimension was a non-dimension, then it will go inside loop
191 IF NOT (lDimension = lPrevDimension) THEN
192
193 IF (lPrevDimension IS NOT NULL) THEN
194 -- new group
195
196 addToList(
197 pDImension => lPrevDimension,
198 pAttrNameList => lAttrNameList,
199 pLovWhereList => lLovWhereList,
200 pParamNumber => l_grp_index,
201 xParameterTbl => xParameterGroup
202 );
203 l_grp_index := l_grp_index+1;
204 END IF;
205
206 --reinitailise record for the next dimension
207 lParamGrpRec.dimension := NULL;
208 l_index := 1;
209 lAttrNameList.DELETE;
210 lLovWhereList.DELETE;
211
212 --settings for the new record
213 lAttrNameList(l_index) := pAttribute2Tbl(i);
214 lLovWhereList(l_index) := pLovWhereTbl(i);
215 l_index := l_index+1;
216 lPrevDimension := lDimension;
217
218 ELSE-- if dimension is not null and equal to prev dim
219 --add the attribute name to the table for this dimension
220 lAttrNameList(l_index) := pAttribute2Tbl(i);
221 lLovWhereList(l_index) := pLovWhereTbl(i);
222 l_index := l_index+1;
223 lPrevDimension := lDimension;
224 END IF;
225
226 ELSE -- if disp seq >= 10000
227
228 IF ( (lPrevDisplaySequence < 10000) OR --if prev Dimension < 10000
229 (pDisplaySeqTbl(i) - lPrevDisplaySequence > 1) OR -- display seq is not conscutive after 10000
230 NOT(lPrevDimension =lDimension) OR -- the dimensions are different even if they are consecutive
231 (lPrevDisplaySequence IS NULL) --first variable has disp seq >10000
232 )THEN
233
234 -- then this is a new parameter, so save the previous dimension
235
236 addToList(
237 pDImension => lPrevDimension,
238 pAttrNameList => lAttrNameList,
239 pLovWhereList => lLovWhereList,
240 pParamNumber => l_grp_index,
241 xParameterTbl => xParameterGroup
242 );
243 l_grp_index := l_grp_index+1;
244
245 --reinitailise record for the next dimension
246 lParamGrpRec.dimension := NULL;
247 l_index := 1;
248 lAttrNameList.DELETE;
249 lLovWhereList.DELETE;
250
251 --settings for the new record
252 lAttrNameList(l_index) := pAttribute2Tbl(i);
253 lLovWhereList(l_index) := pLovWhereTbl(i);
254 l_index := l_index+1;
255 lPrevDimension := lDimension;
256 lPrevDisplaySequence := pDisplaySeqTbl(i);
257
258 ELSIF (pDisplaySeqTbl(i) - lPrevDisplaySequence = 1 AND lPrevDimension=lDimension ) THEN
259 -- add to the list of attributes
260 lAttrNameList(l_index) := pAttribute2Tbl(i);
261 lLovWhereList(l_index) := pLovWhereTbl(i);
262 l_index := l_index+1;
263 lPrevDimension := lDimension;
264 lPrevDisplaySequence := pDisplaySeqTbl(i);
265 END IF;
266
267 END IF; -- if disp seq
268
269 -- the last element of this loop
270 IF (i = pAttribute2Tbl.LAST ) THEN
271
272 addToList(
273 pDImension => lPrevDimension,
274 pAttrNameList => lAttrNameList,
275 pLovWhereList => lLovWhereList,
276 pParamNumber => l_grp_index,
277 xParameterTbl => xParameterGroup
278 );
279 END IF;
280
281 END LOOP; -- nested attr code
282 END IF; -- if nested attr code
283
284 END;
285
286 /* Proc to generate the xParameterGroup structure for the gievn region code*/
287 PROCEDURE getParameterGroupsForRegion(
288 pRegionCode IN VARCHAR2,
289 xParameterGroup OUT NOCOPY parameter_group_tbl_type,
290 xTCTExists OUT NOCOPY BOOLEAN,
291 xNestedRegion OUT NOCOPY VARCHAR2,
292 xAsofDateExists OUT NOCOPY BOOLEAN
293 ) IS
294 /* Assumption: When there is a nested region, then for the shared dimensions, the parameters
295 for grouping come from the nested region. Else they come from the default region
296 */
297 lNestedRegionCode VARCHAR2(80);
298 lDimensionTable BISVIEWER.t_char;
299 ldef_attr2_table BISVIEWER.t_char;
300 ldef_attr_code_table BISVIEWER.t_char;
301 ldef_disp_seq BISVIEWER.t_num;
302 lLov_where_table BISVIEWER.t_char;
303
304 lParamGrpRec parameter_group_rec_type;
305 lAttrNameList BISVIEWER.t_char;
306 lLovWhereList BISVIEWER.t_char;
307 l_index BINARY_INTEGER := 1;
308 l_grp_index BINARY_INTEGER := 1;
309 lAsOfDateExists BOOLEAN;
310 lTCTExists BOOLEAN;
311 l_next_param_number NUMBER;
312 --ashgarg Bug 3878112: get Data Source
313 lDataSource VARCHAR2(150);
314 l_region_code VARCHAR2(30);
315
316 cursor getNestedRegionCode (cpRegionCode varchar2) is
317 SELECT nested_region_code
318 FROM ak_region_items
319 WHERE region_code = cpRegionCode
320 AND nested_region_code IS NOT NULL;
321 --ashgarg Bug 3878112: get Data Source
322 cursor getDataSource (cpRegionCode varchar2) is
323 SELECT attribute10 FROM
324 ak_regions where region_code = cpRegionCode;
325
326 --first get the parameters that do not share dimensions/attribute code with the nested region
327 BEGIN
328
329 --get the nested region
330 if getNestedRegionCode%ISOPEN then
331 close getNestedRegionCode;
332 end if;
333 open getNestedRegionCode(pRegionCode);
334 fetch getNestedRegionCode INTO lNestedRegionCode;
335 close getNestedRegionCode;
336 --ashgarg Bug 3878112: get Data Source
337 if getDataSource%ISOPEN then
338 close getDataSource;
339 end if;
340 open getDataSource(pRegionCode);
341 fetch getDataSource INTO lDataSource;
342 close getDataSource;
343
344 xNestedRegion := lNestedRegionCode;
345
346
347
348 /* As per discussion with Amod, all the parameters in the nested region need
349 to be defined in the report region as well. This is except for the AS_OF_DATE
350 and the TIME_COMPARISON_TYPE parameters. Amod suggested that the check for these 2 be dealt with
351 seperately rather than adding them to the thr grouping here */
352 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
353 --ashgarg Bug 3878112: For bsc data source
354 IF (lDataSource = 'BSC_DATA_SOURCE' ) THEN
355 if (lNestedRegionCode <> null) then
356 l_region_code := lNestedRegionCode;
357 else
358 l_region_code := pRegionCode;
359 end if;
360 END IF;
361
362 if (l_region_code is null) then
363 l_region_code := pRegionCode;
364 end if;
365
366 SELECT attribute2, attribute_code, display_sequence, attribute4
367 BULK COLLECT INTO ldef_attr2_table, ldef_attr_code_table, lDef_disp_seq, lLov_where_table
368 FROM ak_region_items
369 WHERE region_code = l_region_code -- pRegionCode
370 AND NODE_QUERY_FLAG = 'Y'
371 ORDER BY DISPLAY_SEQUENCE;
372
373 /* Debug */
374 /*
375 IF ldef_attr2_table IS NOT NULL AND ldef_attr2_table.COUNT >0 THEN
376 FOR i In ldef_attr2_table.FIRST..ldef_attr2_table.LAST LOOP
377 dbms_output.put_line(' default dim '||ldef_attr2_table(i) || ' disp seq '|| lDef_disp_seq(i));
378 END LOOP;
379 END IF;
380 */
381 /* Debug */
382
383 --consolidate all the lists into the data struture
384
385 IF (ldef_attr_code_table IS NOT NULL AND ldef_attr_code_table.COUNT > 0) THEN
386 getParameterGroupForLists(
387 pAttribute2Tbl => ldef_attr2_table
388 ,pAttribCodeTbl => ldef_attr_code_table
389 ,pDisplaySeqTbl => lDef_disp_seq
390 , pLovWhereTbl => lLov_where_table
391 ,xParameterGroup => xParameterGroup
392 ,xAsOfDateExists => lAsOfDateExists
393 ,xTimeCompTypeExists => lTCTExists
394 );
395 END IF;
396 xTCTExists := lTCTExists;
397
398 l_grp_index := xParameterGroup.COUNT+1;
399 l_next_param_number := xParameterGroup(xParameterGroup.COUNT).parameter_number+1;
400
401 --adding TCT and as-of-date explicitly to avoid an extra select for the nested region
402 --add the as-of-date if it does not exist in the report region
403 IF ( lNestedRegionCode IS NOT NULL AND NOT(lAsOfDateExists) ) THEN
404
405 lAttrNameList.DELETE;
406 lAttrNameList(1) := 'AS_OF_DATE';
407 lLovWhereList.DELETE;
408 --jprabhud - Bug 3625068 - When drilling from KPI/RELATED/DRILL - if As of date is not present
409 --in default FF defn or in Report metadata it comes here and fails as lLovWhereList is being deleted
410 lLovWhereList(1) := null;
411
412 addToList(
413 pDImension => 'AS_OF_DATE',
414 pAttrNameList => lAttrNameList,
415 pLovWhereList => lLovWhereList,
416 pParamNumber => l_next_param_number,
417 xParameterTbl => xParameterGroup
418 );
419 lAsofDateExists := true;
420 l_grp_index := l_grp_index+1;
421 l_next_param_number := l_next_param_number+1;
422 END IF;
423 xAsofDateExists := lAsofDateExists;
424
425 /* aleung, 7/16/03, if TCT is not defined in report region, TCT is hardcoded to 'TIME_COMPARISON_TYPE+SEQUENTIAL' for bug 2965660
426 --add the TCT if it does not exist in the report region
427 IF (lNestedRegionCode IS NOT NULL AND NOT(lTCTExists)) THEN
428
429 lAttrNameList.DELETE;
430 lAttrNameList(1) := 'TIME_COMPARISON_TYPE+YEARLY';
431 lAttrNameList(2) := 'TIME_COMPARISON_TYPE+SEQUENTIAL';
432 lAttrNameList(3) := 'TIME_COMPARISON_TYPE+BUDGET';
433 addToList(
434 pDImension => 'TIME_COMPARISON_TYPE',
435 pAttrNameList => lAttrNameList,
436 pParamNumber => l_next_param_number,
437 xParameterTbl => xParameterGroup
438 );
439 l_grp_index := l_grp_index+1;
440
441 END IF;
442 */
443
444 /* Fix for bug 2739892 */
445 /* Added Exception block */
446 EXCEPTION
447 WHEN OTHERS THEN
448 null ;
449
450
451 END getParameterGroupsForRegion;
452
453 /* Returns those attribute_names which share the pParamNum by looking into the pParameterGroup
454 in the reverse order. When a diff param num is encouneterd, we have gone past this group
455 */
456 PROCEDURE getPrevParamsWithParamNumber(
457 pParamNumber IN NUMBER,
458 pDimension IN VARCHAR2,
459 pIndex In NUMBER,
460 pParameterGroup IN parameter_group_tbl_type,
461 xAttributeNameList OUT NOCOPY BISVIEWER.t_char
462 ) IS
463 lCount NUMBER := 1;
464 BEGIN
465
466 -- no check being done on the dimension since this the parameter numbers should be unique.
467 IF pParameterGroup IS NOT NULL AND pParameterGroup.COUNT >0 THEN
468 lCount := xAttributeNameList.COUNT+1;
469
470 FOR i IN REVERSE pParameterGroup.FIRST..pIndex LOOP
471 IF (pParameterGroup(i).parameter_number = pParamNumber) THEN
472 xAttributeNameList(lCount) := pParameterGroup(i).attribute_name;
473 lCount := lCount+1;
474 ELSE
475 RETURN;
476 END IF;
477 END LOOP;
478
479 END IF;
480 END getPrevParamsWithParamNumber;
481
482 /* Returns those attribute_names which share the pParamNum by looking into the pParameterGroup
483 in the order. When a diff param num is encouneterd, we have gone past this group
484 */
485 PROCEDURE getLaterParamsWithParamNumber(
486 pParamNumber IN NUMBER,
487 pDimension IN VARCHAR2,
488 pIndex In NUMBER,
489 pParameterGroup IN parameter_group_tbl_type,
490 xAttributeNameList IN OUT NOCOPY BISVIEWER.t_char
491 ) IS
492 lCount NUMBER := 1;
493 BEGIN
494
495 -- no check being done on the dimension since this the parameter numbers should be unique.
496 IF pParameterGroup IS NOT NULL AND pParameterGroup.COUNT >0 THEN
497 lCount := xAttributeNameList.COUNT+1;
498
499 FOR i IN pIndex..pParameterGroup.LAST LOOP
500 IF (pParameterGroup(i).parameter_number = pParamNumber) THEN
501 xAttributeNameList(lCount) := pParameterGroup(i).attribute_name;
502 lCount := lCount+1;
503 ELSE
504 RETURN;
505 END IF;
506 END LOOP;
507
508 END IF;
509 END getLaterParamsWithParamNumber;
510
511 /* Returns those attribute_names which share the pParamNum by looking into the pParameterGroup
512 in the order.
513 */
514 PROCEDURE getParametersWithParamNumber(
515 pParamNumber IN NUMBER,
516 pDimension IN VARCHAR2,
517 pParameterGroup IN parameter_group_tbl_type,
518 xAttributeNameList IN OUT NOCOPY BISVIEWER.t_char
519 ) IS
520 --lAttrNameList BISVIEWER.t_char;
521 lCount NUMBER := 1;
522 BEGIN
523
524 -- no check being done on the dimension since this the parameter numbers should be unique.
525 IF pParameterGroup IS NOT NULL AND pParameterGroup.COUNT >0 THEN
526 FOR i IN pParameterGroup.FIRST..pParameterGroup.LAST LOOP
527 IF (pParameterGroup(i).parameter_number = pParamNumber) THEN
528 xAttributeNameList(lCount) := pParameterGroup(i).attribute_name;
529 lCount := lCount+1;
530 END IF;
531 END LOOP;
532 END IF;
533 END getParametersWithParamNumber;
534
535 /* Given a attribute_name and dimension, return all posible attribute names this group could have */
536 PROCEDURE getAttrNamesInSameGroup (
537 pAttributeName IN VARCHAR2,
538 pDimension IN VARCHAR2,
539 pParameterGroup IN parameter_group_tbl_type,
540 xAttNameList OUT NOCOPY BISVIEWER.t_char
541 ) IS
542 lAttrNameList BISVIEWER.t_char;
543 lAttributeName VARCHAR2(80) := pAttributeName;
544 BEGIN
545
546 IF pParameterGroup IS NOT NULL AND pParameterGroup.COUNT > 0 THEN
547 FOR i IN pParameterGroup.FIRST..pParameterGroup.LAST LOOP
548 IF (pDimension IS NOT NULL) THEN
549
550 IF (pDimension = 'TIME' OR pDimension='EDW_TIME_M') THEN
551
552 --there will be a _To and _from which needs to vb eremoved
553 IF(instr(lAttributeName,'_FROM',1,1) > 0 AND instr(lAttributeName,'+',1,1) > 0) then
554 lAttributeName := substr(lAttributeName,1,instr(lAttributeName,'_FROM')-1);
555 END IF;
556
557 IF(instr(lAttributeName,'_TO',1,1) > 0 AND instr(lAttributeName,'+',1,1) > 0) then
558 lAttributeName := substr(lAttributeName,1,instr(lAttributeName,'_TO')-1);
559 END IF;
560
561 END IF;
562 --BugFix 3074842--Include Duplicate Dimension Levels--Attribute2+Attribute Code
563 IF (pDimension =pParameterGroup(i).dimension AND
564 (pParameterGroup(i).attribute_name = lAttributeName OR
565 pParameterGroup(i).attribute_name = substr(lAttributeName, 1, instr(lAttributeName, '+',-1)-1) )) THEN
566
567 --return all the attribute names with that parameter number
568 /*
569 getParametersWithParamNumber(
570 pParamNumber => pParameterGroup(i).parameter_number ,
571 pDimension => pParameterGroup(i).dimension,
572 pParameterGroup => pParameterGroup,
573 xAttributeNameList => xAttNameList
574 );*/
575 getPrevParamsWithParamNumber(
576 pParamNumber => pParameterGroup(i).parameter_number ,
577 pDimension => pParameterGroup(i).dimension,
578 pIndex => i,
579 pParameterGroup => pParameterGroup,
580 xAttributeNameList => xAttNameList
581 ) ;
582 getLaterParamsWithParamNumber(
583 pParamNumber => pParameterGroup(i).parameter_number ,
584 pDimension => pParameterGroup(i).dimension,
585 pIndex => i+1,
586 pParameterGroup => pParameterGroup,
587 xAttributeNameList => xAttNameList
588 ) ;
589 RETURN;
590
591 END IF; --pDimension=
592 ELSE
593 IF (lAttributeName = pParameterGroup(i).attribute_name) THEN
594
595 lAttrNameList(1) := pParameterGroup(i).attribute_name;
596 xAttNameList := lAttrNameList;
597 RETURN;
598 END IF;
599
600 END IF; --pDimension is not null
601 END LOOP;
602 END IF;
603 END getAttrNamesInSameGroup ;
604
605 /* Retuns if this dimension is present in the pParameterGroup*/
606 FUNCTION IsdimensionInParamGrp(
607 pDimension IN VARCHAR2,
608 pParameterGroup IN parameter_group_tbl_type
609 ) RETURN BOOLEAN
610 IS
611 BEGIN
612 IF pParameterGroup IS NOT NULL AND pParameterGroup.COUNT > 0 THEN
613 FOR i IN pParameterGroup.FIRST..pParameterGroup.LAST LOOP
614 IF (pDimension =pParameterGroup(i).dimension) THEN
615 RETURN TRUE;
616 END IF;
617 END LOOP;
618 END IF;
619
620 RETURN FALSE;
621
622 END IsdimensionInParamGrp ;
623
624 PROCEDURE bulkDeleteFromSession(
625 pSessionId in varchar2,
626 pUserId in varchar2,
627 pFunctionName in varchar2,
628 pAttributeNameTbl IN BISVIEWER.t_char
629 ) IS
630 BEGIN
631 -- FIX FOR P1 2797318 : kiprabha
632 -- DELETE ONLY IF SCHEDULE_ID IS NULL
633 IF pAttributeNameTbl IS NOT NULL AND pAttributeNameTbl.COUNT >0 THEN
634 FORALL i IN pAttributeNameTbl.FIRST..pAttributeNameTbl.LAST
635 DELETE FROM bis_user_attributes
636 WHERE function_name=pFunctionName
637 AND session_id = pSessionId
638 AND user_id = pUserId
639 AND attribute_name = pAttributeNameTbl(i)
640 AND schedule_id is null ;
641
642 END IF;
643 END bulkDeleteFromSession;
644
645 PROCEDURE bulkInsertIntoSession(
646 pSessionId in varchar2,
647 pUserId in varchar2,
648 pFunctionName in varchar2,
649 pAttributeNameTbl IN BISVIEWER.t_char,
650 pDimensionTbl IN BISVIEWER.t_char,
651 pSessionValueTbl IN BISVIEWER.t_char,
652 pSessionDescTbl IN BISVIEWER.t_char,
653 pPeriodDateTbl IN BISVIEWER.t_date
654 ) IS
655 BEGIN
656 IF pAttributeNameTbl IS NOT NULL AND pAttributeNameTbl.COUNT >0 THEN
657 FORALL i IN pAttributeNameTbl.FIRST..pAttributeNameTbl.LAST
658 insert into bis_user_attributes (USER_ID,
659 FUNCTION_NAME,
660 SESSION_ID,
661 SESSION_VALUE,
662 SESSION_DESCRIPTION,
663 ATTRIBUTE_NAME,
664 DIMENSION,
665 PERIOD_DATE
666 )VALUES (
667 pUserId,
668 pFunctionName,
669 pSessionId,
670 pSessionValueTbl(i),
671 pSessionDescTbl(i),
672 pAttributeNameTbl(i),
673 pDimensionTbl(i),
674 pPeriodDateTbl(i)
675 );
676 END IF;
677 END bulkInsertIntoSession;
678
679 PROCEDURE bulkDeleteFromPage(
680 pPAgeId in VARCHAR2,
681 pUserId in VARCHAR2,
682 pFunctionName IN VARCHAR2,
683 pAttributeNameTbl IN BISVIEWER.t_char
684 ) IS
685 BEGIN
686 IF pAttributeNameTbl IS NOT NULL AND pAttributeNameTbl.COUNT >0 THEN
687
688 FORALL i IN pAttributeNameTbl.FIRST..pAttributeNameTbl.LAST
689 DELETE FROM bis_user_attributes
690 WHERE page_id = pPageId
691 AND user_id = pUserId
692 AND function_name = pFunctionName
693 AND attribute_name = pAttributeNameTbl(i);
694
695 END IF;
696 END bulkDeleteFromPage;
697
698 PROCEDURE getDeleteAtttrList(
699 pAttrNameList IN BISVIEWER.t_char,
700 pDimension IN VARCHAR2,
701 xAttrNameList OUT NOCOPY BISVIEWER.t_char
702 ) IS
703 l_index NUMBER := 1;
704 BEGIN
705 IF (pAttrNameList IS NOT NULL AND pAttrNameList.COUNT > 0) THEN
706 FOR i IN pAttrNameList.FIRST..pAttrNameList.LAST LOOP
707
708 IF (pDimension IS NOT NULL) THEN
709
710 xAttrNameList(l_index) := pAttrNameList(i);
711 l_index := l_index+1;
712 xAttrNameList(l_index) := pDimension||'_HIERARCHY';
713 l_index := l_index+1;
714
715 IF (pDimension = 'TIME' OR pDimension='EDW_TIME_M') THEN
716 xAttrNameList(l_index) := pAttrNameList(i)||'_TO';
717 l_index := l_index+1;
718 xAttrNameList(l_index) := pAttrNameList(i)||'_FROM';
719 l_index := l_index+1;
720 END IF;
721
722 ELSE
723 xAttrNameList(l_index) := pAttrNameList(i);
724 l_index := l_index+1;
725 END IF;
726
727 END LOOP;
728 END IF;
729 END getDeleteAtttrList;
730
731 /* Procedure to delete those parameters from session that belong to the same grp and hence have the
732 same attribute name as the attribute name present in the attrNameList table.*/
733 PROCEDURE deletePageForGroup(
734 pUserId in varchar2,
735 pFunctionName in varchar2,
736 pPageId in varchar2,
737 pAttrNameList IN BISVIEWER.t_char,
738 pDimension IN VARCHAR2
739 ) IS
740 lAttrNameList BISVIEWER.t_char;
741
742 BEGIN
743
744 getDeleteAtttrList(
745 pAttrNameList => pAttrNameList,
746 pDimension => pDimension ,
747 xAttrNameList => lAttrNameList
748 );
749
750 IF (lAttrNameList IS NOT NULL AND lAttrNameList.COUNT >0) THEN
751 bulkDeleteFromPage(
752 pPageId => pPageId,
753 pUserId => pUserId,
754 pFunctionName => pFunctionName,
755 pAttributeNameTbl => lAttrNameList
756 ) ;
757 END IF;
758
759 END deletePageForGroup;
760
761 /* Procedure to delete those parameters from session that belong to the same grp and hence have the
762 same attribute name as the attribute name present in the attrNameList table.*/
763 PROCEDURE deleteSessionForGroup(
764 pSessionId in varchar2,
765 pUserId in varchar2,
766 pFunctionName in varchar2,
767 pAttrNameList IN BISVIEWER.t_char,
768 pDimension IN VARCHAR2
769 ) IS
770 lAttrNameList BISVIEWER.t_char;
771
772 BEGIN
773
774 getDeleteAtttrList(
775 pAttrNameList => pAttrNameList,
776 pDimension => pDimension ,
777 xAttrNameList => lAttrNameList
778 );
779
780 IF (lAttrNameList IS NOT NULL AND lAttrNameList.COUNT >0) THEN
781 bulkDeleteFromSession(
782 pSessionId => pSessionId,
783 pUserId => pUserId,
784 pFunctionName => pFunctionName,
785 pAttributeNameTbl => lAttrNameList
786 ) ;
787 END IF;
788
789
790 END deleteSessionForGroup;
791
792 /* This will sent the parameters to be deleted and corresponding parameters to be inserted for the same group as
793 pAttributeNameTbl being sent in. - these can then be deleted or inserted into session/page etc.*/
794 PROCEDURE getDeleteAndInsertTables(
795 pUserId in varchar2,
796 pAttributeNameTbl IN BISVIEWER.t_char,
797 pDimensionTbl IN BISVIEWER.t_char,
798 pSessionValueTbl IN BISVIEWER.t_char,
799 pSessionDescTbl IN BISVIEWER.t_char,
800 pPeriodDateTbl IN BISVIEWER.t_date,
801 pParameterGroup IN parameter_group_tbl_type,
802 pIncludeViewBy IN BOOLEAN DEFAULT FALSE,
803 pIncludeBusinessPlan IN BOOLEAN DEFAULT FALSE,
804 pIncludePrevAsOfDate IN BOOLEAN DEFAULT FALSE,
805 xAttrNameForInsert OUT NOCOPY BISVIEWER.t_char,
806 xDimensionForInsert OUT NOCOPY BISVIEWER.t_char,
807 xSessValueForInsert OUT NOCOPY BISVIEWER.t_char,
808 xSessDescForInsert OUT NOCOPY BISVIEWER.t_char,
809 xPeriodDateForInsert OUT NOCOPY BISVIEWER.t_date,
810 xAttrNameForDelete OUT NOCOPY BISVIEWER.t_char
811 ) IS
812 lAttrNameList BISVIEWER.t_char;
813 insert_index NUMBER :=1;
814
815 delete_index NUMBER :=1;
816 BEGIN
817
818 -- for each attribute in the list sent
819 IF pAttributeNameTbl IS NOT NULL AND pAttributeNameTbl.COUNT >0 THEN
820 FOR i IN pAttributeNameTbl.FIRST..pAttributeNameTbl.LAST LOOP
821
822 --get the group of attribute_names for this group
823 getAttrNamesInSameGroup (
824 pAttributeName => pAttributeNameTbl(i),
825 pDimension => pDimensionTbl(i),
826 pParameterGroup => pParameterGroup,
827 xAttNameList => lAttrNameList
828 );
829
830 --lAttrNameList is the list of the attribute names that fall in the same grp as pAttributeNameTbl(i)
831 -- so if there is a group for this parameter, then delete this parameter
832 -- if the attrName is _hierarchy, then this list will not be returned since there is no group for it
833 IF (lAttrNameList IS NOT NULL AND lAttrNameList.COUNT >0) THEN
834
835 FOR j IN lAttrNameList.FIRST..lAttrNameList.LAST LOOP
836
837 xAttrNameForDelete(delete_index) := lAttrNameList(j);
838 delete_index:= delete_index+1;
839 xAttrNameForDelete(delete_index) := lAttrNameList(j)||'_TO';
840 delete_index:= delete_index+1;
841 xAttrNameForDelete(delete_index) := lAttrNameList(j)||'_FROM';
842 delete_index:= delete_index+1;
843 END LOOP;
844
845 --this attribute does belong to the report, so add to the list of attributes that
846 --needs to be added
847 xAttrNameForInsert(insert_index) := pAttributeNameTbl(i) ;
848 xDimensionForInsert(insert_index) := pDimensionTbl(i) ;
849 xSessValueForInsert(insert_index) := pSessionValueTbl(i);
850 xSessDescForInsert(insert_index) := pSessionDescTbl(i);
851 xPeriodDateForInsert(insert_index) := pPeriodDateTbl(i);
852 insert_index := insert_index+1;
853 --nbarik - 07/17/03 - Bug Fix 2999602 - Added BIS_PREVIOUS_EFFECTIVE_START_DATE and BIS_PREVIOUS_EFFECTIVE_END_DATE
854 ELSIF ((pAttributeNameTbl(i) = 'VIEW_BY' AND pIncludeViewBy) OR
855 (pAttributeNameTbl(i) = 'BUSINESS_PLAN' AND pIncludeBusinessPlan) OR
856 (pAttributeNameTbl(i) = 'BIS_P_ASOF_DATE' AND pIncludePrevAsOfDate) OR
857 (pAttributeNameTbl(i) = 'BIS_CUR_REPORT_START_DATE' AND pIncludePrevAsOfDate) OR
858 (pAttributeNameTbl(i) = 'BIS_PREV_REPORT_START_DATE' AND pIncludePrevAsOfDate) OR
859 (pAttributeNameTbl(i) = 'BIS_PREVIOUS_EFFECTIVE_START_DATE' AND pIncludePrevAsOfDate) OR
860 (pAttributeNameTbl(i) = 'BIS_PREVIOUS_EFFECTIVE_END_DATE' AND pIncludePrevAsOfDate)
861 ) THEN
862
863 xAttrNameForDelete(delete_index) := pAttributeNameTbl(i) ;
864 delete_index := delete_index+1;
865
866 xAttrNameForInsert(insert_index) := pAttributeNameTbl(i) ;
867 xDimensionForInsert(insert_index) := pDimensionTbl(i) ;
868 xSessValueForInsert(insert_index) := pSessionValueTbl(i);
869 xSessDescForInsert(insert_index) := pSessionDescTbl(i);
870 xPeriodDateForInsert(insert_index) := pPeriodDateTbl(i);
871 insert_index := insert_index+1;
872
873 ELSIF (substr(pAttributeNameTbl(i), length(pAttributeNameTbl(i))-length('_HIERARCHY')+1) ='_HIERARCHY') THEN
874 -- if it ends with _hierarchy, then check if the dimension belongs to this new report and add it to the list
875
876 -- check if the dimension for this belongs to this report, then delete and add
877 IF (IsdimensionInParamGrp (
878 pDimension => pDimensionTbl(i),
879 pParameterGroup => pParameterGroup )
880 ) THEN
881 xAttrNameForDelete(delete_index) := pAttributeNameTbl(i) ;
882 delete_index := delete_index+1;
883
884 xAttrNameForInsert(insert_index) := pAttributeNameTbl(i) ;
885 xDimensionForInsert(insert_index) := pDimensionTbl(i) ;
886 xSessValueForInsert(insert_index) := pSessionValueTbl(i);
887 xSessDescForInsert(insert_index) := pSessionDescTbl(i);
888 xPeriodDateForInsert(insert_index) := pPeriodDateTbl(i);
889 insert_index := insert_index+1;
890
891 END IF;
892 END IF; -- if lattrNameList is NOt NULL
893
894 END LOOP;
895
896 END IF; --lattname is null
897 END getDeleteAndInsertTables;
898
899 /* This will delete any parameters alreadyPresent for the same group as
900 pAttributeNameTbl being sent in. - should use the getDeleteAndInsertTables later
901 and donly do the bulk delet and insert into session*/
902 PROCEDURE deleteAndInsertIntoSession(
903 pSessionId in varchar2,
904 pUserId in varchar2,
905 pFunctionName in varchar2,
906 pAttributeNameTbl IN BISVIEWER.t_char,
907 pDimensionTbl IN BISVIEWER.t_char,
908 pSessionValueTbl IN BISVIEWER.t_char,
909 pSessionDescTbl IN BISVIEWER.t_char,
910 pPeriodDateTbl IN BISVIEWER.t_date,
911 pParameterGroup IN parameter_group_tbl_type,
912 pIncludeViewBy IN BOOLEAN DEFAULT FALSE,
913 pIncludeBusinessPlan IN BOOLEAN DEFAULT FALSE,
914 pIncludePrevAsOfDate IN BOOLEAN DEFAULT FALSE
915 ) IS
916 lAttrNameList BISVIEWER.t_char;
917 insert_index NUMBER :=1;
918
919 lAttrNameForInsert BISVIEWER.t_char;
920 lDimensionForInsert BISVIEWER.t_char;
921 lSessValueForInsert BISVIEWER.t_char;
922 lSessDescForInsert BISVIEWER.t_char;
923 lPeriodDateForInsert BISVIEWER.t_date;
924
925 delete_index NUMBER :=1;
926 lAttrNameForDelete BISVIEWER.t_char;
927 BEGIN
928
929 -- for each attribute in the list sent
930 IF pAttributeNameTbl IS NOT NULL AND pAttributeNameTbl.COUNT >0 THEN
931 FOR i IN pAttributeNameTbl.FIRST..pAttributeNameTbl.LAST LOOP
932
933 --get the group of attribute_names for this group
934 getAttrNamesInSameGroup (
935 pAttributeName => pAttributeNameTbl(i),
936 pDimension => pDimensionTbl(i),
937 pParameterGroup => pParameterGroup,
938 xAttNameList => lAttrNameList
939 );
940
941 --lAttrNameList is the list of the attribute names that fall in the same grp as pAttributeNameTbl(i)
942 -- so if there is a group for this parameter, then delete this parameter
943 -- if the attrName is _hierarchy, then this list will not be returned since there is no group for it
944 IF (lAttrNameList IS NOT NULL AND lAttrNameList.COUNT >0) THEN
945
946 FOR j IN lAttrNameList.FIRST..lAttrNameList.LAST LOOP
947 --BugFix 3074842
948 if(lAttrNameList(j) = substr(pAttributeNameTbl(i), 1, instr(pAttributeNameTbl(i), '+',-1)-1)) then
949 lAttrNameForDelete(delete_index) := pAttributeNameTbl(i);
950 delete_index:= delete_index+1;
951 else
952 lAttrNameForDelete(delete_index) := lAttrNameList(j);
953 delete_index:= delete_index+1;
954 lAttrNameForDelete(delete_index) := lAttrNameList(j)||'_TO';
955 delete_index:= delete_index+1;
956 lAttrNameForDelete(delete_index) := lAttrNameList(j)||'_FROM';
957 delete_index:= delete_index+1;
958 end if;
959 END LOOP;
960
961 --this attribute does belong to the report, so add to the list of attributes that
962 --needs to be added
963 lAttrNameForInsert(insert_index) := pAttributeNameTbl(i) ;
964 lDimensionForInsert(insert_index) := pDimensionTbl(i) ;
965 lSessValueForInsert(insert_index) := pSessionValueTbl(i);
966 lSessDescForInsert(insert_index) := pSessionDescTbl(i);
967 lPeriodDateForInsert(insert_index) := pPeriodDateTbl(i);
968 insert_index := insert_index+1;
969 -- nbarik - 07/17/03 - Bug Fix 2999602 - Added BIS_PREVIOUS_EFFECTIVE_START_DATE and BIS_PREVIOUS_EFFECTIVE_END_DATE
970 ELSIF ((pAttributeNameTbl(i) = 'VIEW_BY' AND pIncludeViewBy) OR
971 (pAttributeNameTbl(i) = 'BUSINESS_PLAN' AND pIncludeBusinessPlan) OR
972 (pAttributeNameTbl(i) = 'BIS_P_ASOF_DATE' AND pIncludePrevAsOfDate) OR
973 (pAttributeNameTbl(i) = 'BIS_CUR_REPORT_START_DATE' AND pIncludePrevAsOfDate) OR
974 (pAttributeNameTbl(i) = 'BIS_PREV_REPORT_START_DATE' AND pIncludePrevAsOfDate) OR
975 (pAttributeNameTbl(i) = 'BIS_PREVIOUS_EFFECTIVE_START_DATE' AND pIncludePrevAsOfDate) OR
976 (pAttributeNameTbl(i) = 'BIS_PREVIOUS_EFFECTIVE_END_DATE' AND pIncludePrevAsOfDate)
977 ) THEN
978
979 lAttrNameForDelete(delete_index) := pAttributeNameTbl(i) ;
980 delete_index := delete_index+1;
981
982 lAttrNameForInsert(insert_index) := pAttributeNameTbl(i) ;
983 lDimensionForInsert(insert_index) := pDimensionTbl(i) ;
984 lSessValueForInsert(insert_index) := pSessionValueTbl(i);
985 lSessDescForInsert(insert_index) := pSessionDescTbl(i);
986 lPeriodDateForInsert(insert_index) := pPeriodDateTbl(i);
987 insert_index := insert_index+1;
988
989 ELSIF (substr(pAttributeNameTbl(i), length(pAttributeNameTbl(i))-length('_HIERARCHY')+1) ='_HIERARCHY') THEN
990 -- if it ends with _hierarchy, then check if the dimension belongs to this new report and add it to the list
991
992 -- check if the dimension for this belongs to this report, then delete and add
993 IF (IsdimensionInParamGrp (
994 pDimension => pDimensionTbl(i),
995 pParameterGroup => pParameterGroup )
996 ) THEN
997 lAttrNameForDelete(delete_index) := pAttributeNameTbl(i) ;
998 delete_index := delete_index+1;
999
1000 lAttrNameForInsert(insert_index) := pAttributeNameTbl(i) ;
1001 lDimensionForInsert(insert_index) := pDimensionTbl(i) ;
1002 lSessValueForInsert(insert_index) := pSessionValueTbl(i);
1003 lSessDescForInsert(insert_index) := pSessionDescTbl(i);
1004 lPeriodDateForInsert(insert_index) := pPeriodDateTbl(i);
1005 insert_index := insert_index+1;
1006
1007 END IF;
1008 END IF; -- if lattrNameList is NOt NULL
1009
1010 END LOOP;
1011
1012 IF (lAttrNameForDelete IS NOT NULL AND lAttrNameForDelete.COUNT >0) THEN
1013 bulkDeleteFromSession(
1014 pSessionId => pSessionId,
1015 pUserId => pUserId,
1016 pFunctionName => pFunctionName,
1017 pAttributeNameTbl => lAttrNameForDelete
1018 ) ;
1019 END IF;
1020
1021 IF (lAttrNameForInsert IS NOT NULL AND lAttrNameForInsert.COUNT >0) THEN
1022
1023 --insert all the records now
1024 bulkInsertIntoSession(
1025 pSessionId => pSessionId,
1026 pUserId => pUserId,
1027 pFunctionName => pFunctionName,
1028 pAttributeNameTbl => lAttrNameForInsert,
1029 pDimensionTbl => lDimensionForInsert,
1030 pSessionValueTbl => lSessValueForInsert,
1031 pSessionDescTbl => lSessDescForInsert,
1032 pPeriodDateTbl => lPeriodDateForInsert
1033 );
1034
1035 END IF;
1036
1037 END IF; --lattname is null
1038 END deleteAndInsertIntoSession;
1039
1040 /** To override the existing session parameters from schedule */
1041 PROCEDURE overRideFromSchedule(pSessionId in varchar2,
1042 pUserId in varchar2,
1043 pFunctionName in varchar2,
1044 pRegionCode in varchar2,
1045 pScheduleId in varchar2 default null,
1046 pRespId in varchar2 default null,
1047 pParameterGroup IN parameter_group_tbl_type
1048 ) IS
1049
1050 CURSOR getScheduleParameters IS
1051 SELECT attribute_name, dimension, session_value, session_description, period_date
1052 FROM bis_user_attributes
1053 WHERE schedule_id=pScheduleId;
1054
1055 vAttributeCodeTable BISVIEWER.t_char;
1056 vDimensionTable BISVIEWER.t_char;
1057 vSessionValueTable BISVIEWER.t_char;
1058 vSessionDescTable BISVIEWER.t_char;
1059 vPeriodDateTable BISVIEWER.t_date;
1060
1061 BEGIN
1062 IF getScheduleParameters%ISOPEN THEN
1063 CLOSE getScheduleParameters;
1064 END IF;
1065 OPEN getScheduleParameters;
1066 FETCH getScheduleParameters BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
1067 CLOSE getScheduleParameters;
1068
1069 deleteAndInsertIntoSession(
1070 pSessionId => pSessionId,
1071 pUserId => pUserId,
1072 pFunctionName => pFunctionName,
1073 pAttributeNameTbl => vAttributeCodeTable,
1074 pDimensionTbl => vDimensionTable,
1075 pSessionValueTbl => vSessionValueTable,
1076 pSessionDescTbl => vSessionDescTable,
1077 pPeriodDateTbl => vPeriodDateTable,
1078 pParameterGroup => pParameterGroup,
1079 pIncludePrevAsOfDate => TRUE
1080 );
1081
1082 END overRideFromSchedule;
1083
1084 -- nbarik - 02/19/04 - BugFix 3441967 - Added x_IsPreFuncTCTExists and x_IsPreFuncCalcDatesExists
1085 PROCEDURE overRideFromPreFunction(pSessionId in varchar2,
1086 pUserId in varchar2,
1087 pFunctionName in varchar2,
1088 pRegionCode in varchar2,
1089 pPreFunctionName in varchar2 default null,
1090 pRespId in varchar2 default null,
1091 pParameterGroup IN parameter_group_tbl_type,
1092 pTCTExists in boolean default false
1093 , x_IsPreFuncTCTExists OUT NOCOPY BOOLEAN
1094 , x_IsPreFuncCalcDatesExists OUT NOCOPY BOOLEAN
1095 ) IS
1096
1097 CURSOR getPreFunctionParameters IS
1098 SELECT attribute_name, dimension, session_value, session_description, period_date
1099 FROM bis_user_attributes
1100 WHERE function_name =pPreFunctionName
1101 AND session_id = pSessionId
1102 AND user_id = pUserId;
1103
1104 vAttributeCodeTable BISVIEWER.t_char;
1105 vDimensionTable BISVIEWER.t_char;
1106 vSessionValueTable BISVIEWER.t_char;
1107 vSessionDescTable BISVIEWER.t_char;
1108 vPeriodDateTable BISVIEWER.t_date;
1109
1110 l_time_attr_2 varchar2(2000);
1111 l_time_level_id VARCHAR2(2000);
1112 l_time_level_value VARCHAR2(2000);
1113
1114 l_asof_date VARCHAR2(80);
1115 l_prev_asof_date_desc varchar2(80);
1116 l_curr_report_start_date_desc varchar2(80);
1117 l_prev_report_start_date_desc varchar2(80);
1118
1119 l_prev_asof_Date DATE;
1120 l_curr_effective_start_date DATE;
1121 l_curr_effective_end_date DATE;
1122 l_curr_report_start_date DATE;
1123 l_prev_report_start_date DATE;
1124 -- nbarik - 07/17/03 - Bug Fix 2999602
1125 l_prev_effective_start_date DATE;
1126 l_prev_effective_end_date DATE;
1127 l_prev_time_level_id VARCHAR2(2000);
1128 l_prev_time_level_value VARCHAR2(2000);
1129
1130 l_return_status VARCHAR2(2000);
1131 l_msg_count NUMBER;
1132 l_msg_data VARCHAR2(2000);
1133
1134 IsTimeDimensionInGroup BOOLEAN := FALSE;
1135 -- nbarik - 02/19/04 - BugFix 3441967
1136 l_IsPreFuncTCTExists BOOLEAN := FALSE;
1137 l_IsPreFuncCalcDatesExists BOOLEAN := FALSE;
1138 BEGIN
1139
1140 IF getPreFunctionParameters%ISOPEN THEN
1141 CLOSE getPreFunctionParameters;
1142 END IF;
1143 OPEN getPreFunctionParameters;
1144 FETCH getPreFunctionParameters BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
1145 CLOSE getPreFunctionParameters;
1146
1147 -- nbarik - 02/19/04 - BugFix 3441967
1148 IF vAttributeCodeTable IS NOT NULL AND vAttributeCodeTable.COUNT > 0 THEN
1149 FOR k IN vAttributeCodeTable.FIRST..vAttributeCodeTable.LAST LOOP
1150 IF vDimensionTable(k) = 'TIME_COMPARISON_TYPE' THEN
1151 l_IsPreFuncTCTExists := TRUE;
1152 END IF;
1153 IF vAttributeCodeTable(k) = 'BIS_P_ASOF_DATE' THEN -- Check for one parameter
1154 l_IsPreFuncCalcDatesExists := TRUE;
1155 END IF;
1156 END LOOP;
1157 END IF;
1158 x_IsPreFuncTCTExists := l_IsPreFuncTCTExists;
1159 x_IsPreFuncCalcDatesExists := l_IsPreFuncCalcDatesExists;
1160
1161 --BugFix 3411456, pass pIncludeBusinessPlan as true
1162 deleteAndInsertIntoSession(
1163 pSessionId => pSessionId,
1164 pUserId => pUserId,
1165 pFunctionName => pFunctionName,
1166 pAttributeNameTbl => vAttributeCodeTable,
1167 pDimensionTbl => vDimensionTable,
1168 pSessionValueTbl => vSessionValueTable,
1169 pSessionDescTbl => vSessionDescTable,
1170 pPeriodDateTbl => vPeriodDateTable,
1171 pParameterGroup => pParameterGroup,
1172 pIncludePrevAsOfDate => TRUE,
1173 pIncludeBusinessPlan => TRUE
1174 );
1175
1176 END overRideFromPreFunction;
1177
1178 PROCEDURE overRideFromPage(pSessionId in varchar2,
1179 pUserId in varchar2,
1180 pFunctionName in varchar2,
1181 pRegionCode in varchar2,
1182 pPageId in varchar2 default null,
1183 pRespId in varchar2 default null,
1184 pParameterGroup IN parameter_group_tbl_type
1185 ) IS
1186
1187 CURSOR getPageParameters IS
1188 SELECT attribute_name, dimension, session_value, session_description, period_date
1189 FROM bis_user_attributes
1190 WHERE page_id =pPageId
1191 AND user_id = pUserId;
1192
1193 vAttributeCodeTable BISVIEWER.t_char;
1194 vDimensionTable BISVIEWER.t_char;
1195 vSessionValueTable BISVIEWER.t_char;
1196 vSessionDescTable BISVIEWER.t_char;
1197 vPeriodDateTable BISVIEWER.t_date;
1198
1199 BEGIN
1200 IF getPageParameters%ISOPEN THEN
1201 CLOSE getPageParameters;
1202 END IF;
1203 OPEN getPageParameters;
1204 FETCH getPageParameters BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
1205 CLOSE getPageParameters;
1206
1207 deleteAndInsertIntoSession(
1208 pSessionId => pSessionId,
1209 pUserId => pUserId,
1210 pFunctionName => pFunctionName,
1211 pAttributeNameTbl => vAttributeCodeTable,
1212 pDimensionTbl => vDimensionTable,
1213 pSessionValueTbl => vSessionValueTable,
1214 pSessionDescTbl => vSessionDescTable,
1215 pPeriodDateTbl => vPeriodDateTable,
1216 pParameterGroup => pParameterGroup,
1217 pIncludeViewBy => FALSE ,
1218 pIncludePrevAsOfDate => TRUE
1219 );
1220
1221 END overRideFromPage;
1222
1223 PROCEDURE overRideFromSavedDefault(pSessionId in varchar2,
1224 pUserId in varchar2,
1225 pFunctionName in varchar2,
1226 pRegionCode in varchar2,
1227 pRespId in varchar2 default null,
1228 pParameterGroup IN parameter_group_tbl_type
1229 ) IS
1230
1231 CURSOR getSavedDefaultParameters IS
1232 SELECT attribute_name, dimension, default_value, default_description, period_date
1233 FROM bis_user_attributes
1234 WHERE function_name = pFunctionName
1235 AND user_id = pUserId
1236 AND session_id IS NULL
1237 AND session_description = 'NULL';
1238
1239 vAttributeCodeTable BISVIEWER.t_char;
1240 vDimensionTable BISVIEWER.t_char;
1241 vSessionValueTable BISVIEWER.t_char;
1242 vSessionDescTable BISVIEWER.t_char;
1243 vPeriodDateTable BISVIEWER.t_date;
1244
1245 BEGIN
1246 IF getSavedDefaultParameters%ISOPEN THEN
1247 CLOSE getSavedDefaultParameters;
1248 END IF;
1249 OPEN getSavedDefaultParameters;
1250 FETCH getSavedDefaultParameters BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
1251 CLOSE getSavedDefaultParameters;
1252 deleteAndInsertIntoSession(
1253 pSessionId => pSessionId,
1254 pUserId => pUserId,
1255 pFunctionName => pFunctionName,
1256 pAttributeNameTbl => vAttributeCodeTable,
1257 pDimensionTbl => vDimensionTable,
1258 pSessionValueTbl => vSessionValueTable,
1259 pSessionDescTbl => vSessionDescTable,
1260 pPeriodDateTbl => vPeriodDateTable,
1261 pParameterGroup => pParameterGroup,
1262 pIncludeViewBy => TRUE,
1263 pIncludeBusinessPlan => TRUE
1264 );
1265
1266 END overRideFromSavedDefault;
1267
1268
1269 -- Procedure to get Name Value pairs of the form name=value1&name2=value2
1270 PROCEDURE getNameValuePairs(pUrlString IN VARCHAR2,
1271 xParameterName OUT NOCOPY BISVIEWER.t_char,
1272 xParameterValue OUT NOCOPY BISVIEWER.t_char
1273 )
1274 IS
1275 index1 number;
1276 index2 number;
1277 index3 number;
1278 index4 number;
1279 index5 number;
1280 l_length number;
1281 l_count number;
1282 l_param_name varchar2(2000);
1283 l_param_value varchar2(2000);
1284
1285 BEGIN
1286
1287 IF (pUrlString IS NULL) THEN
1288 RETURN;
1289 END IF;
1290
1291 l_length := length(pUrlString);
1292 index2 :=0;
1293 l_count :=0;
1294 LOOP
1295 index2 := index2 +1;
1296 -- if there is no more '&' or no '=', then exit
1297 --if (instr(pUrlString,'&',index2,1)=0 OR
1298 IF
1299 (instr(pUrlString,'=',index2,1) =0) THEN
1300 EXIT;
1301 end if;
1302
1303
1304 index3 := instr(pUrlString,'=',index2,1);
1305 index5 := instr(pURLString,'=',index3+1,1);
1306 if (index5 > 0) then
1307 index4 := instr(pURLString,'&',-(l_length-index5)-1,1);
1308 else
1309 index4 := l_length+1;
1310 end if;
1311
1312 l_param_name := substr(pUrlString, index2, index3-index2);
1313 l_param_value := substr(pUrlString,index3+1,index4-index3-1);
1314 xParameterName(l_Count) := l_param_name;
1315 xParameterValue(l_Count) := l_param_value;
1316 l_count := l_count+1;
1317
1318 if (index4 >= l_length ) THEN
1319 exit;
1320 end if;
1321 index2 := index4;
1322 END LOOP;
1323
1324 END getNameValuePairs;
1325
1326 -- procedure to get only the pParameters from the array
1327 PROCEDURE processDefaultParameters(
1328 l_attr_code In OUT NOCOPY BISVIEWER.t_char
1329 , l_attr_value IN OUT NOCOPY BISVIEWER.t_char
1330 ) IS
1331 BEGIN
1332 IF (l_attr_code IS NOT NULL AND l_attr_code.COUNT >0) THEN
1333 FOR i IN l_attr_code.FIRST..l_attr_code.LAST LOOP
1334
1335 -- get only the pParameters
1336 IF NOT (l_attr_code(i) = 'pParameters' ) THEN
1337 l_attr_code.DELETE(i);
1338 l_attr_value.DELETE(i);
1339 END IF;
1340
1341 END LOOP;
1342 END IF;
1343
1344 END processDefaultParameters;
1345
1346 -- Procedure to execute a dynamic function
1347 PROCEDURE processDynamicAttributeValue (
1348 pPlSqlFunctionName IN VARCHAR2,
1349 xOutPut OUT NOCOPY VARCHAR2
1350 ) IS
1351 l_Dynamic_sql_str VARCHAR2(3000);
1352 BEGIN
1353 IF (pPlSqlFunctionName IS NOT NULL) THEN
1354 l_Dynamic_sql_str := 'BEGIN :1 :='||pPlSqlFunctionName||'(); END;';
1355 execute immediate l_dynamic_sql_str using OUT xOutPut;
1356 END IF;
1357
1358 EXCEPTION
1359 WHEN OTHERS THEN
1360 NULL;
1361
1362 END processDynamicAttributeValue;
1363
1364
1365 -- serao- 08/23/2002- bug 2514044 - will remove the non-report-parameters and process some others
1366 PROCEDURE processFormFunctionParameters(
1367 pRegionCode IN VARCHAR2
1368 ,pFunctionName IN VARCHAR2
1369 ,pUserId IN VARCHAR2
1370 ,pSessionId IN VARCHAR2
1371 ,pResponsibilityId in varchar2 default NULL
1372 , l_attr_code In OUT NOCOPY BISVIEWER.t_char
1373 , l_attr_value IN OUT NOCOPY BISVIEWER.t_char
1374 , x_save_by_id OUT NOCOPY BOOLEAN
1375
1376 ) IS
1377 l_vieW_by VARCHAR2(80);
1378 l_attribute_name VARCHAR2(80);
1379 BEGIN
1380
1381 x_save_by_id := FALSE;
1382 IF (l_attr_code IS NOT NULL AND l_attr_code.COUNT >0) THEN
1383
1384 FOR i IN l_attr_code.FIRST..l_attr_code.LAST LOOP
1385
1386 -- ignore all the report parameters except pParamIds- beginning with p
1387 IF(substr(l_attr_code(i), 1, 1) = 'p' ) THEN
1388 --serao - 2747174 - get save_by_id from parameters
1389 IF (l_attr_code(i) = 'pParamIds' AND l_attr_value(i) ='Y') THEN
1390 x_save_by_id := TRUE;
1391 END IF;
1392
1393 l_attr_code.DELETE(i);
1394 l_attr_value.DELETE(i);
1395 ELSIF(substr(l_attr_code(i), 1, 1) = '"' ) THEN
1396
1397 -- strip the single quotes ard the key
1398 processDynamicAttributeValue( replace (l_attr_code(i), '"', null), l_attr_code(i));
1399
1400 -- if this did not yieldanything, then delete this parameter
1401 IF (l_attr_code(i) IS NULL) THEN
1402 l_attr_code.DELETE(i);
1403 l_attr_value.DELETE(i);
1404 ELSE
1405 l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1406 END IF;
1407
1408 ELSIF (l_attr_code(i)='VIEW_BY') THEN
1409
1410 BEGIN
1411 SELECT attribute_name INTO l_view_by
1412 FROM bis_user_attributes
1413 WHERE function_name=pFunctionName
1414 AND session_id=pSessionId
1415 AND user_id = pUserId
1416 AND attribute_name ='VIEW_BY';
1417 EXCEPTION
1418 WHEN NO_DATA_FOUND THEN
1419 NULL;
1420 END;
1421
1422 --delete this rom the array if vieW_by was already added to this session
1423 IF (l_view_by = 'VIEW_BY') THEN
1424 l_attr_code.DELETE(i);
1425 l_attr_value.DELETE(i);
1426 END IF;
1427
1428 --ELSE
1429
1430 --l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1431
1432 END IF;
1433
1434 END LOOP;
1435 END IF;
1436 END processFormFunctionParameters;
1437
1438
1439 -- serao- 08/23/2002- bug 2514044 - copy form function parameters not copied previously
1440 --serao -10/10/2002 - since we will copy the form function prameters first instead of last
1441 -- we now do not need the remaining param cursor and add parameters w/o checking if they
1442 -- are already present.
1443 PROCEDURE COPY_FORM_FUNCTION_PARAMETERS
1444 (pRegionCode IN VARCHAR2
1445 ,pFunctionName IN VARCHAR2
1446 ,pUserId IN VARCHAR2
1447 ,pSessionId IN VARCHAR2
1448 ,pResponsibilityId in varchar2 default NULL
1449 ,pNestedRegionCode in varchar2 default NULL
1450 ,pAsofdateExists in boolean default NULL
1451 ,x_return_status OUT NOCOPY VARCHAR2
1452 ,x_msg_count OUT NOCOPY NUMBER
1453 ,x_msg_data OUT NOCOPY VARCHAR2
1454 ) IS
1455 l_param_code BISVIEWER.t_char;
1456 l_param_value BISVIEWER.t_char;
1457 l_attr_code BISVIEWER.t_char;
1458 l_attr_value BISVIEWER.t_char;
1459 lParameters VARCHAR2(2000);
1460 lDefaultParameters VARCHAR2(2000);
1461 l_dimension VARCHAR2(2000);
1462 l_savebyid BOOLEAN := FALSE;
1463 l_view_by_exists BOOLEAN := FALSE;
1464 l_attr_2 VARCHAR2(2000);
1465
1466 l_user_session_rec BIS_PMV_SESSION_PVT.session_rec_type;
1467 l_parameter_rec parameter_rec_type;
1468 l_time_parameter_rec time_parameter_rec_type;
1469
1470 l_time_attr_2 varchar2(2000);
1471 l_time_from_description varchar2(2000) := BIS_PMV_DRILL_PVT.gvAll;
1472 l_time_to_description varchar2(2000) := BIS_PMV_DRILL_PVT.gvAll;
1473 l_time_exists boolean := false;
1474 l_element_id varchar2(1000);
1475
1476 --Bug Fix 3087383 added variables and get_as_of_date,get_nested_region sqls
1477 l_as_of_date varchar2(1000);
1478 l_time_level_id varchar2(250);
1479 l_time_level_Value varchar2(250);
1480 l_start_date date;
1481 l_end_date date;
1482 l_time_comparison_type varchar2(250);
1483 l_canonical_date_format varchar2(30) := 'DD/MM/RRRR';
1484
1485
1486 BEGIN
1487
1488 -- get the parameters for this form fucntion
1489 SELECT parameters INTO lParameters
1490 FROM fnd_form_functions
1491 WHERE function_name=pFunctionName;
1492
1493 -- get all the name-value pairs in the form function
1494 getNameValuePairs(pUrlString => lParameters,
1495 xParameterName => l_param_code,
1496 xParameterValue => l_param_value
1497 );
1498
1499 -- get only the pParameters variable
1500 processDefaultParameters(
1501 l_attr_code => l_param_code
1502 , l_attr_value => l_param_value
1503 ) ;
1504
1505
1506 IF (l_param_code IS NOT NULL AND l_param_code.COUNT >0) THEN
1507 -- get the value of the default parameters
1508 lDefaultParameters := l_param_value(l_param_value.FIRST);
1509 END IF;
1510
1511
1512 --for each of the names, find if it a parameter and if it already present in bis_user_attributes
1513 IF (lDefaultParameters IS NOT NULL) THEN
1514
1515 -- replace the ~, ^ and the @
1516 lDefaultParameters := replace (lDefaultParameters, '~', '&');
1517 lDefaultParameters := replace (lDefaultParameters, '@', '=');
1518 lDefaultParameters := replace (lDefaultParameters, '^', '+');
1519
1520 --get name value pairs from default params
1521 getNameValuePairs(pUrlString => lDefaultParameters,
1522 xParameterName => l_attr_code,
1523 xParameterValue => l_attr_value
1524 );
1525
1526 --remove the report parameters etc.
1527 --serao - bug 2647174 - get the savebyid from pParameters values
1528 processFormFunctionParameters(
1529 pRegionCode
1530 ,pFunctionName
1531 ,pUserId
1532 ,pSessionId
1533 ,pResponsibilityId
1534 , l_attr_code
1535 , l_attr_value
1536 ,l_saveById
1537 );
1538
1539
1540
1541 IF (l_attr_code IS NOT NULL AND l_attr_code.COUNT >0) THEN
1542
1543 l_user_session_rec.user_id := pUserId;
1544 l_user_session_rec.session_id := pSessionId;
1545 l_user_session_rec.responsibility_id := pResponsibilityId;
1546 l_user_session_rec.region_code := pRegionCode;
1547 l_user_session_rec.function_name := pFunctionName;
1548
1549
1550 FOR i IN l_attr_code.FIRST..l_attr_code.LAST LOOP
1551
1552
1553 --reinitialise this
1554 l_element_id := null;
1555 l_attr_2 := null;
1556
1557 --check if the value is a dynamic value
1558 IF(substr(l_attr_value(i), 1, 1) = '"' ) THEN
1559
1560 -- strip the single quotes ard the key
1561 processDynamicAttributeValue( replace (l_attr_value(i), '"', null), l_attr_value(i));
1562
1563 END IF;
1564
1565
1566 IF (l_attr_code(i) = 'VIEW_BY' ) THEN
1567 --save the parameter
1568 l_parameter_rec.parameter_name := l_attr_code(i);
1569 l_parameter_rec.parameter_description := nvl(l_attr_value(i), BIS_PMV_DRILL_PVT.gvAll);
1570 l_parameter_rec.parameter_value := null;
1571 l_parameter_rec.hierarchy_flag := 'N';
1572 l_parameter_rec.default_flag := 'N';
1573 l_parameter_rec.dimension := substr(l_attr_code(i),1,instr(l_attr_code(i),'+')-1);
1574
1575 if l_savebyid then
1576 l_parameter_rec.id_flag := 'Y';
1577 else
1578 l_parameter_rec.id_flag := 'N';
1579 end if;
1580
1581 VALIDATE_AND_SAVE(p_user_session_rec => l_user_session_rec,
1582 p_parameter_rec => l_parameter_rec,
1583 x_return_status => x_return_status,
1584 x_msg_count => x_msg_count,
1585 x_msg_data => x_msg_data);
1586
1587 ELSIF substr(l_attr_code(i),instr(l_attr_code(i),'_HIERARCHY')) = '_HIERARCHY' THEN
1588
1589 l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1590 l_dimension := substr(l_attr_code(i),1,instr(l_attr_code(i),'+')-1);
1591 l_element_id := BIS_PMV_UTIL.getHierarchyElementId(l_attr_value(i), l_dimension);
1592
1593 -- If there is a hierarchy then only store it
1594 IF (l_element_id > 0) THEN
1595 l_parameter_rec.parameter_name := l_attr_code(i);
1596 l_parameter_rec.parameter_value := l_element_id;
1597 l_parameter_rec.hierarchy_flag := 'Y';
1598 l_parameter_rec.default_flag := 'N';
1599 --store the hierarchy
1600 VALIDATE_AND_SAVE(p_user_session_rec => l_user_session_rec,
1601 p_parameter_rec => l_parameter_rec,
1602 x_return_status => x_return_status,
1603 x_msg_count => x_msg_count,
1604 x_msg_data => x_msg_data);
1605
1606
1607 END IF; --element id
1608
1609 ELSIF substr(l_attr_code(i),instr(l_attr_code(i),'_FROM')) = '_FROM' then
1610
1611 l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1612 l_time_exists := true;
1613
1614 IF(instr(l_attr_code(i),'_FROM',1,1) > 0 AND instr(l_attr_code(i),'+',1,1) > 0) then
1615 l_time_attr_2 := substr(l_attr_code(i),1,instr(l_attr_code(i),'_FROM')-1);
1616 ELSE
1617 l_time_attr_2 := l_attr_code(i);
1618 END IF;
1619
1620 l_time_from_description := nvl(l_attr_value(i),BIS_PMV_DRILL_PVT.gvAll);
1621
1622 ELSIF substr(l_attr_code(i),instr(l_attr_code(i),'_TO')) = '_TO' THEN
1623
1624 l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1625
1626 l_time_exists := true;
1627
1628 IF(instr(l_attr_code(i),'_TO',1,1) > 0 AND instr(l_attr_code(i),'+',1,1) > 0) THEN
1629 l_time_attr_2 := substr(l_attr_code(i),1,instr(l_attr_code(i),'_TO')-1);
1630 ELSE
1631 l_time_attr_2 := l_attr_code(i);
1632 END IF;
1633
1634 l_time_to_description := nvl(l_attr_value(i),BIS_PMV_DRILL_PVT.gvAll);
1635 --Bug Fix 3087383 copy time attr2, time exists as true
1636 ELSIF substr(l_attr_code(i),1, instr(l_attr_code(i),'+')-1) = 'TIME' then
1637
1638 l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1639 l_time_exists := true;
1640 l_time_attr_2 := l_attr_code(i);
1641
1642 ELSE
1643
1644 l_attr_code(i) := BIS_PMV_UTIL.getDimensionForAttribute(l_attr_code(i), pRegionCode);
1645
1646 IF (l_attr_code(i) = 'AS_OF_DATE' ) THEN
1647 l_as_of_date := l_attr_value(i);
1648 ELSIF substr(l_attr_code(i),1, instr(l_attr_code(i),'+')-1) = 'TIME_COMPARISON_TYPE' then
1649 l_time_comparison_type := l_attr_code(i);
1650 END IF;
1651
1652 --save the parameter
1653 l_parameter_rec.parameter_name := l_attr_code(i);
1654 l_parameter_rec.parameter_description := nvl(l_attr_value(i), BIS_PMV_DRILL_PVT.gvAll);
1655 l_parameter_rec.parameter_value := null;
1656 l_parameter_rec.hierarchy_flag := 'N';
1657 l_parameter_rec.default_flag := 'N';
1658 l_parameter_rec.dimension := substr(l_attr_code(i),1,instr(l_attr_code(i),'+')-1);
1659
1660 if l_savebyid then
1661 l_parameter_rec.id_flag := 'Y';
1662 else
1663 l_parameter_rec.id_flag := 'N';
1664 end if;
1665
1666 VALIDATE_AND_SAVE(p_user_session_rec => l_user_session_rec,
1667 p_parameter_rec => l_parameter_rec,
1668 x_return_status => x_return_status,
1669 x_msg_count => x_msg_count,
1670 x_msg_data => x_msg_data);
1671
1672 END IF; --lAttrCode=
1673
1674 END LOOP;
1675
1676 --Bug Fix 3087383, check if as of date is saved else save it with sysdate
1677 if pNestedRegionCode is not null then
1678 --Fix for computing save dates if as of date is passed
1679 if l_as_of_date is null then
1680 l_as_of_date := to_char(sysdate, l_canonical_date_format);
1681 end if;
1682 if (pAsofdateExists and (l_time_attr_2 is not null)) then
1683 COMPUTE_AND_SAVE_DATES(pTimeAttribute => l_time_attr_2,
1684 pTimeComparisonType => l_time_comparison_type,
1685 p_user_Session_rec => l_user_session_rec,
1686 x_time_level_id => l_time_level_id,
1687 x_time_level_value => l_time_level_value
1688 );
1689 end if;
1690 end if;
1691
1692 --BugFix 3515051
1693 -- if there was a time attribute in all this, then store that too
1694 IF (l_time_exists and not ( (pNestedRegionCode is not null) and pAsofdateExists and (l_time_attr_2 is not null) )) THEN
1695
1696 l_time_parameter_rec.parameter_name := l_time_attr_2;
1697 l_time_parameter_rec.dimension := substr(l_time_attr_2,1,instr(l_time_attr_2,'+')-1);
1698
1699 --Bug Fix 3087383 populate time from, to using level id, value if its value is all and nested region is present
1700 if (l_time_from_description = BIS_PMV_DRILL_PVT.gvAll and (pNestedRegionCode is not null)
1701 and l_as_of_date is not null and l_savebyid ) then
1702 l_time_parameter_rec.from_description := l_time_level_id;
1703 elsif (l_time_from_description = BIS_PMV_DRILL_PVT.gvAll and (pNestedRegionCode is not null) and l_as_of_date is not null) then
1704 l_time_parameter_rec.from_description := l_time_level_value;
1705 else
1706 l_time_parameter_rec.from_description := l_time_from_description;
1707 end if;
1708
1709 if (l_time_to_description = BIS_PMV_DRILL_PVT.gvAll and (pNestedRegionCode is not null)
1710 and l_as_of_date is not null and l_savebyid ) then
1711 l_time_parameter_rec.to_description := l_time_level_id;
1712 elsif (l_time_to_description = BIS_PMV_DRILL_PVT.gvAll and (pNestedRegionCode is not null)
1713 and l_as_of_date is not null) then
1714 l_time_parameter_rec.to_description := l_time_level_value;
1715 else
1716 l_time_parameter_rec.to_description := l_time_to_description;
1717 end if;
1718
1719 l_time_parameter_rec.default_flag := 'N';
1720
1721 if l_savebyid then
1722 l_time_parameter_rec.id_flag := 'Y';
1723 else
1724 l_time_parameter_rec.id_flag := 'N';
1725 end if;
1726
1727 VALIDATE_AND_SAVE_TIME(p_user_session_rec => l_user_session_rec,
1728 p_time_parameter_rec => l_time_parameter_rec,
1729 x_return_status => x_return_status,
1730 x_msg_count => x_msg_count,
1731 x_msg_data => x_msg_data);
1732
1733
1734 END IF; --time_exists
1735 END IF; --lAttrCode is not null
1736 END IF; --lDefaultParameters is not null
1737
1738 --serao - commit should be issues by caller
1739
1740 EXCEPTION
1741 WHEN OTHERS THEN
1742 ROLLBACK;
1743 END COPY_FORM_FUNCTION_PARAMETERS;
1744
1745 /* for this function for those default parameters that are missing only, will copy default parameters */
1746 PROCEDURE COPY_REMAINING_DEF_PARAMETERS
1747 (pFunctionName IN VARCHAR2
1748 ,pUserId IN VARCHAR2
1749 ,pSessionId IN VARCHAR2
1750 ,x_return_status OUT NOCOPY VARCHAR2
1751 ,x_msg_count OUT NOCOPY NUMBER
1752 ,x_msg_data OUT NOCOPY VARCHAR2
1753 ) IS
1754
1755 BEGIN
1756
1757 INSERT INTO BIS_USER_ATTRIBUTES (USER_ID,
1758 FUNCTION_NAME,
1759 SESSION_ID,
1760 SESSION_VALUE,
1761 SESSION_DESCRIPTION,
1762 ATTRIBUTE_NAME,
1763 DIMENSION,
1764 PERIOD_DATE,
1765 OPERATOR)
1766 SELECT pUserId,
1767 pFunctionName,
1768 pSessionId,
1769 DEFAULT_VALUE,
1770 DEFAULT_DESCRIPTION,
1771 ATTRIBUTE_NAME,
1772 DIMENSION,
1773 PERIOD_DATE,
1774 OPERATOR
1775 FROM BIS_USER_ATTRIBUTES
1776 WHERE function_name = pFunctionName
1777 AND user_id = pUserId
1778 AND session_id IS NULL
1779 AND session_description = 'NULL'
1780 AND nvl(substr(attribute_name,1,instr(attribute_name,'+')-1), attribute_name) NOT IN (
1781 SELECT nvl(substr(attribute_name,1,instr(attribute_name,'+')-1), attribute_name)
1782 FROM bis_user_attributes
1783 WHERE function_name=pFunctionName
1784 AND user_id=pUserId
1785 AND session_id= pSessionId
1786 AND schedule_id IS NULL
1787 );
1788 END COPY_REMAINING_DEF_PARAMETERS;
1789
1790 --nkishore CustomizeUI Enhancement Copy Session to default parameters
1791 PROCEDURE COPY_SES_TO_DEF_PARAMETERS
1792 (pFunctionName IN VARCHAR2
1793 ,pUserId IN VARCHAR2
1794 ,pSessionId IN VARCHAR2
1795 ,x_return_status OUT NOCOPY VARCHAR2
1796 ,x_msg_count OUT NOCOPY NUMBER
1797 ,x_msg_data OUT NOCOPY VARCHAR2
1798 ) IS
1799 BEGIN
1800
1801 DELETE BIS_USER_ATTRIBUTES
1802 WHERE session_id is null and
1803 function_name = pFunctionName
1804 AND user_id= pUserId;
1805 --BugFix 3464708
1806 INSERT INTO BIS_USER_ATTRIBUTES (USER_ID,
1807 FUNCTION_NAME,
1808 ATTRIBUTE_NAME,
1809 SESSION_DESCRIPTION,
1810 DEFAULT_VALUE,
1811 DEFAULT_DESCRIPTION,
1812 PERIOD_DATE,
1813 DIMENSION,
1814 OPERATOR)
1815 SELECT pUserId,
1816 pFunctionName,
1817 ATTRIBUTE_NAME,
1818 'NULL',
1819 SESSION_VALUE,
1820 SESSION_DESCRIPTION,
1821 PERIOD_DATE,
1822 DIMENSION,
1823 OPERATOR
1824 FROM BIS_USER_ATTRIBUTES
1825 WHERE session_id = pSessionId
1826 AND function_name = pFunctionName
1827 AND user_id = pUserId
1828 AND schedule_id IS NULL;
1829
1830 x_return_status := FND_API.G_RET_STS_SUCCESS;
1831 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count
1832 , p_data => x_msg_data);
1833
1834 EXCEPTION
1835 WHEN FND_API.G_EXC_ERROR THEN
1836 x_return_status := FND_API.G_RET_STS_ERROR;
1837 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1838 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1839 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1840 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1841 WHEN OTHERS THEN
1842 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1843 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1844 END COPY_SES_TO_DEF_PARAMETERS;
1845
1846 /* This procedure is based on validate_and_save */
1847 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
1848 PROCEDURE VALIDATE_PARAMETER
1849 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
1850 ,p_parameter_rec IN OUT NOCOPY parameter_rec_type
1851 ,x_valid OUT NOCOPY VARCHAR2
1852 ,x_return_status OUT NOCOPY VARCHAR2
1853 ,x_msg_count OUT NOCOPY NUMBER
1854 ,x_msg_data OUT NOCOPY VARCHAR2
1855 ) IS
1856 BEGIN
1857
1858 --As a part of the dbc project do not validate this special parameter
1859 if (substr(p_parameter_rec.parameter_name,1,length('TIME_COMPARISON_TYPE')) = 'TIME_COMPARISON_TYPE') then
1860 p_parameter_rec.parameter_name := p_parameter_rec.parameter_description;
1861 p_parameter_rec.parameter_value := p_parameter_Rec.parameter_description;
1862 x_valid := 'Y';
1863 elsif instr(p_parameter_rec.parameter_description, '^~]*') > 0 then
1864 x_valid := 'Y';
1865 --BugFix#2577374 -ansingh
1866 elsif (p_parameter_rec.parameter_value='-1') then
1867 p_parameter_rec.parameter_description := FND_MESSAGE.get_string('BIS','BIS_UNASSIGNED');
1868 x_valid := 'Y';
1869 elsif (upper(p_parameter_rec.parameter_description) = upper(FND_MESSAGE.get_string('BIS','BIS_UNASSIGNED'))) then
1870 p_parameter_rec.parameter_value := '-1';
1871 x_valid := 'Y';
1872 else
1873 VALIDATE_NONTIME_PARAMETER (p_user_session_rec => p_user_session_rec
1874 ,p_parameter_rec => p_parameter_rec
1875 ,x_valid => x_valid
1876 ,x_return_status => x_return_status
1877 ,x_msg_count => x_msg_count
1878 ,x_msg_data => x_msg_data);
1879 end if;
1880
1881
1882 EXCEPTION
1883 WHEN FND_API.G_EXC_ERROR THEN
1884 x_return_status := FND_API.G_RET_STS_ERROR;
1885 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1886 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1887 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1888 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1889 WHEN OTHERS THEN
1890 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1891 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1892
1893 END VALIDATE_PARAMETER;
1894
1895 PROCEDURE VALIDATE_AND_SAVE
1896 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
1897 ,p_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_rec_type
1898 ,x_return_status OUT NOCOPY VARCHAR2
1899 ,x_msg_count OUT NOCOPY NUMBER
1900 ,x_msg_data OUT NOCOPY VARCHAR2
1901 ) IS
1902 l_valid VARCHAR2(1);
1903 BEGIN
1904
1905 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
1906 /*
1907 --As a part of the dbc project do not validate this special parameter
1908 if (substr(p_parameter_rec.parameter_name,1,length('TIME_COMPARISON_TYPE')) = 'TIME_COMPARISON_TYPE') then
1909 p_parameter_rec.parameter_name := p_parameter_rec.parameter_description;
1910 p_parameter_rec.parameter_value := p_parameter_Rec.parameter_description;
1911 l_valid := 'Y';
1912 elsif instr(p_parameter_rec.parameter_description, '^~]*') > 0 then
1913 l_valid := 'Y';
1914 --BugFix#2577374 -ansingh
1915 elsif (p_parameter_rec.parameter_value='-1') then
1916 p_parameter_rec.parameter_description := FND_MESSAGE.get_string('BIS','BIS_UNASSIGNED');
1917 l_valid := 'Y';
1918 elsif (upper(p_parameter_rec.parameter_description) = upper(FND_MESSAGE.get_string('BIS','BIS_UNASSIGNED'))) then
1919 p_parameter_rec.parameter_value := '-1';
1920 l_valid := 'Y';
1921 else
1922 VALIDATE_NONTIME_PARAMETER (p_user_session_rec => p_user_session_rec
1923 ,p_parameter_rec => p_parameter_rec
1924 ,x_valid => l_valid
1925 ,x_return_status => x_return_status
1926 ,x_msg_count => x_msg_count
1927 ,x_msg_data => x_msg_data);
1928 end if;
1929 */
1930
1931 VALIDATE_PARAMETER
1932 (p_user_session_rec => p_user_session_rec
1933 ,p_parameter_rec=> p_parameter_rec
1934 ,x_valid => l_valid
1935 ,x_return_status => x_return_status
1936 ,x_msg_count => x_msg_count
1937 ,x_msg_data => x_msg_data
1938 );
1939
1940 IF l_valid = 'Y' THEN
1941 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
1942 ,p_parameter_rec => p_parameter_rec
1943 ,x_return_status => x_return_status
1944 ,x_msg_count => x_msg_count
1945 ,x_msg_data => x_msg_data);
1946 END IF;
1947 EXCEPTION
1948 WHEN FND_API.G_EXC_ERROR THEN
1949 x_return_status := FND_API.G_RET_STS_ERROR;
1950 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1951 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1952 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1953 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1954 WHEN OTHERS THEN
1955 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1956 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
1957 END VALIDATE_AND_SAVE;
1958
1959 PROCEDURE VALIDATE_AND_SAVE_TIME
1960 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
1961 ,p_time_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.time_parameter_rec_type
1962 ,x_return_status OUT NOCOPY VARCHAR2
1963 ,x_msg_count OUT NOCOPY NUMBER
1964 ,x_msg_data OUT NOCOPY VARCHAR2
1965 ) IS
1966 l_valid VARCHAR2(1);
1967 l_parameter_rec BIS_PMV_PARAMETERS_PVT.parameter_rec_type;
1968
1969 -- DIMENSION VALUE : kiprabha
1970 l_from_index INTEGER ;
1971 l_to_index INTEGER ;
1972
1973 BEGIN
1974
1975 -- DIMENSION VALUE : begin
1976 -- kiprabha : 05/22/03
1977 -- Check to see if the time description has id and value encoded
1978
1979 l_from_index:=instr(p_time_parameter_rec.from_description,'^~]*');
1980 l_to_index:=instr(p_time_parameter_rec.to_description,'^~]*');
1981
1982 if l_from_index > 0 then
1983 p_time_parameter_rec.from_description :=
1984 substr(p_time_parameter_rec.from_description,
1985 l_from_index + 4) ;
1986 end if ;
1987
1988 if l_to_index > 0 then
1989 p_time_parameter_rec.to_description :=
1990 substr(p_time_parameter_rec.to_description,
1991 l_to_index + 4) ;
1992 end if ;
1993
1994 -- DIMENSION VALUE : end
1995
1996
1997 VALIDATE_TIME_PARAMETER (p_user_session_rec => p_user_session_rec
1998 ,p_time_parameter_rec => p_time_parameter_rec
1999 ,x_valid => l_valid
2000 ,x_return_status => x_return_status
2001 ,x_msg_count => x_msg_count
2002 ,x_msg_data => x_msg_data);
2003
2004 IF l_valid = 'Y' THEN
2005 l_parameter_rec.dimension := p_time_parameter_rec.dimension;
2006 l_parameter_rec.default_flag := p_time_parameter_rec.default_flag;
2007
2008 l_parameter_rec.parameter_name := p_time_parameter_rec.parameter_name || '_FROM';
2009 l_parameter_rec.parameter_description := p_time_parameter_rec.from_description;
2010 l_parameter_rec.period_date := p_time_parameter_rec.from_period;
2011 l_parameter_Rec.parameter_Value := p_Time_parameter_rec.from_Value;
2012 --create the "from" record
2013 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
2014 ,p_parameter_rec => l_parameter_rec
2015 ,x_return_status => x_return_status
2016 ,x_msg_count => x_msg_count
2017 ,x_msg_data => x_msg_data);
2018
2019 l_parameter_rec.parameter_name := p_time_parameter_rec.parameter_name || '_TO';
2020 l_parameter_rec.parameter_description := p_time_parameter_rec.to_description;
2021 l_parameter_rec.period_date := p_time_parameter_rec.to_period;
2022 l_parameter_Rec.parameter_Value := p_Time_parameter_rec.to_Value;
2023
2024 --create the "to" record
2025 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
2026 ,p_parameter_rec => l_parameter_rec
2027 ,x_return_status => x_return_status
2028 ,x_msg_count => x_msg_count
2029 ,x_msg_data => x_msg_data);
2030 END IF;
2031 EXCEPTION
2032 WHEN FND_API.G_EXC_ERROR THEN
2033 x_return_status := FND_API.G_RET_STS_ERROR;
2034 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2035 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2036 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2037 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2038 WHEN OTHERS THEN
2039 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2040 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2041 END VALIDATE_AND_SAVE_TIME;
2042
2043 PROCEDURE VALIDATE_NONTIME_PARAMETER
2044 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
2045 ,p_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_rec_type
2046 ,x_valid OUT NOCOPY VARCHAR2
2047 ,x_return_status OUT NOCOPY VARCHAR2
2048 ,x_msg_count OUT NOCOPY NUMBER
2049 ,x_msg_data OUT NOCOPY VARCHAR2
2050 ) IS
2051
2052 l_validated_result varchar2(1000);
2053 --BugFix 3497180
2054 l_rolling_dim varchar2(250);
2055
2056 cursor c_rolling_dim is
2057 select attribute17 from bis_ak_region_item_extension ext
2058 where ext.region_code=p_user_session_rec.region_code
2059 and attribute_code =
2060 ( select attribute_code from ak_region_items akItems
2061 where akItems.region_code= ext.region_code
2062 and nvl(akItems.attribute2, akItems.attribute_code) = p_parameter_rec.parameter_name);
2063
2064 BEGIN
2065 x_valid := 'Y';
2066
2067 IF p_parameter_rec.hierarchy_flag = 'Y' THEN
2068
2069 IF p_parameter_rec.parameter_value IS NULL THEN
2070 x_valid := 'N';
2071 RAISE FND_API.G_EXC_ERROR;
2072 END IF;
2073
2074 ELSE
2075 --aleung, 7/17/02, validation through id instead of value
2076 IF p_parameter_rec.id_flag = 'Y' THEN
2077 p_parameter_rec.parameter_value := p_parameter_rec.parameter_description;
2078 END IF;
2079
2080 IF p_parameter_rec.parameter_name <> 'VIEW_BY' AND p_parameter_rec.parameter_name <> 'BUSINESS_PLAN' THEN
2081 --Bug Fix 2616851 , Added trim so that blank can be checked
2082 -- Bug Fix 2728237, Added check for %
2083 /*
2084 IF nvl(trim(p_parameter_rec.parameter_description), g_all) = g_all AND p_parameter_rec.required_flag = 'Y' THEN
2085 */
2086 IF ((nvl(trim(p_parameter_rec.parameter_description), g_all) = g_all) OR
2087 (nvl(trim(p_parameter_rec.parameter_description), '%') = '%'))
2088 AND p_parameter_rec.required_flag = 'Y' THEN
2089 x_valid := 'N';
2090 FND_MESSAGE.SET_NAME('BIS','MANDATORY_PARAM');
2091 --Need to add a message token later
2092 FND_MESSAGE.SET_TOKEN('PARAMETER_LABEL', p_parameter_rec.parameter_label);
2093 FND_MSG_PUB.ADD;
2094 RAISE FND_API.G_EXC_ERROR;
2095 END IF;
2096 --BugFix 3497180, Fix for Rolling Dimension Validation
2097 IF c_rolling_dim%ISOPEN THEN
2098 CLOSE c_rolling_dim;
2099 END IF;
2100 OPEN c_rolling_dim;
2101 FETCH c_rolling_dim INTO l_rolling_dim;
2102 CLOSE c_rolling_dim;
2103 IF l_rolling_dim IS NOT NULL THEN
2104 p_parameter_rec.parameter_description := '~ROLLING_DIMENSION';
2105 if (instr(p_parameter_rec.parameter_value,'''')=1) then
2106 p_parameter_rec.parameter_value := substr(p_parameter_rec.parameter_value,2, length(p_parameter_rec.parameter_value)-2);
2107 end if;
2108 ELSE
2109 IF p_parameter_rec.parameter_description <> g_all THEN
2110 IF p_parameter_rec.dimension IS NOT NULL THEN
2111 --aleung, 7/17/02, validation through id instead of value
2112 IF p_parameter_rec.id_flag = 'Y' THEN
2113 GET_NONTIME_VALIDATED_ID (p_parameter_name => p_parameter_rec.parameter_name
2114 ,p_parameter_value => p_parameter_rec.parameter_value
2115 ,p_lov_where => p_parameter_rec.lov_where
2116 ,p_region_code => p_user_session_rec.region_code
2117 ,p_responsibility_id => p_user_session_rec.responsibility_id
2118 ,x_parameter_description => p_parameter_rec.parameter_description
2119 ,x_return_status => x_return_status
2120 ,x_msg_count => x_msg_count
2121 ,x_msg_data => x_msg_data);
2122 l_validated_result := p_parameter_rec.parameter_description;
2123 if (substr(p_parameter_rec.parameter_value,1,1) <> '''') then
2124 p_parameter_rec.parameter_value := ''''|| p_parameter_rec.parameter_value
2125 || '''';
2126 end if;
2127 ELSE
2128 GET_NONTIME_VALIDATED_VALUE (p_parameter_name => p_parameter_rec.parameter_name
2129 ,p_parameter_description => p_parameter_rec.parameter_description
2130 ,p_lov_where => p_parameter_rec.lov_where
2131 ,p_region_code => p_user_session_rec.region_code
2132 ,p_responsibility_id => p_user_session_rec.responsibility_id
2133 ,x_parameter_value => p_parameter_rec.parameter_value
2134 ,x_return_status => x_return_status
2135 ,x_msg_count => x_msg_count
2136 ,x_msg_data => x_msg_data);
2137 l_validated_result := p_parameter_rec.parameter_value;
2138 END IF; --end of id_flag
2139 --nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
2140 IF l_validated_result IS NULL THEN
2141 -- Check for Proxy User
2142 l_validated_result := GET_DELEGATION_VALIDATED_VALUE(
2143 pDelegationParam => p_parameter_rec.parameter_name
2144 , pRegionCode => p_user_session_rec.region_code
2145 );
2146 IF l_validated_result IS NULL THEN
2147 x_valid := 'N';
2148 FND_MESSAGE.SET_NAME('BIS','NOT_VALID');
2149 --Need to add a message token later
2150 FND_MESSAGE.SET_TOKEN('PARAMETER_LABEL', p_parameter_rec.parameter_label);
2151 FND_MSG_PUB.ADD;
2152 RAISE FND_API.G_EXC_ERROR;
2153 END IF;
2154 END IF;
2155 ELSE
2156 p_parameter_rec.parameter_value := p_parameter_rec.parameter_description;
2157 END IF;
2158 ELSE
2159 p_parameter_rec.parameter_value := p_parameter_rec.parameter_description;
2160 END IF;
2161 END IF;
2162 ELSIF p_parameter_rec.parameter_name = 'VIEW_BY' THEN
2163 IF p_parameter_rec.parameter_description IS NULL THEN
2164 x_valid := 'N';
2165 FND_MESSAGE.SET_NAME('BIS','INVALID_VIEWBY');
2166 FND_MSG_PUB.ADD;
2167 RAISE FND_API.G_EXC_ERROR;
2168 ELSE
2169 p_parameter_rec.parameter_value := p_parameter_rec.parameter_description;
2170 END IF;
2171 ELSIF p_parameter_rec.parameter_name = 'BUSINESS_PLAN' then
2172 --aleung, 7/17/02, validation through id instead of value
2173 IF p_parameter_rec.id_flag = 'Y' then
2174 BEGIN
2175 SELECT name
2176 INTO p_parameter_rec.parameter_description
2177 FROM BISBV_BUSINESS_PLANS
2178 WHERE plan_id = p_parameter_rec.parameter_value;
2179 EXCEPTION
2180 WHEN OTHERS THEN NULL;
2181 END;
2182 ELSE
2183 BEGIN
2184 SELECT plan_id
2185 INTO p_parameter_rec.parameter_value
2186 FROM BISBV_BUSINESS_PLANS
2187 WHERE name = p_parameter_rec.parameter_description;
2188 EXCEPTION
2189 WHEN OTHERS THEN NULL;
2190 END;
2191 END IF; --end of id_flag
2192 END IF;
2193
2194 END IF;
2195 --Bug Fix 2816953
2196 IF p_parameter_rec.parameter_description = g_all OR
2197 p_parameter_rec.parameter_value = g_all THEN
2198 p_parameter_rec.parameter_value := null;
2199 END IF;
2200 EXCEPTION
2201 WHEN FND_API.G_EXC_ERROR THEN
2202 x_return_status := FND_API.G_RET_STS_ERROR;
2203 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2204 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2205 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2206 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2207 WHEN OTHERS THEN
2208 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2209 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2210 END VALIDATE_NONTIME_PARAMETER;
2211
2212 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
2213 FUNCTION GET_DELEGATION_VALIDATED_VALUE(
2214 pDelegationParam IN VARCHAR2
2215 , pRegionCode IN VARCHAR2
2216 ) RETURN VARCHAR2
2217 IS
2218
2219 CURSOR getDelegationParam IS
2220 SELECT attribute14
2221 FROM ak_regions
2222 WHERE region_code = pRegionCode;
2223
2224 CURSOR getPrivileges(pAttributeCode VARCHAR2) IS
2225 SELECT attribute24
2226 FROM bis_ak_region_item_extension
2227 WHERE region_code=pRegionCode AND attribute_code=pAttributeCode;
2228
2229 cursor c_level_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
2230 select vl.attribute15, -- level view name
2231 substr(vl.attribute2, instr(vl.attribute2,'+')+1), -- dimension level
2232 nvl(r.region_object_type, 'OLTP') -- level type
2233 from ak_region_items vl, ak_regions r
2234 where nvl(vl.attribute2,vl.attribute_code) = rtrim(cp_parameter_name)
2235 and vl.region_code = rtrim(cp_region_code)
2236 and vl.region_code = r.region_code;
2237
2238 l_validated_value VARCHAR2(200) := NULL;
2239 l_delegation_param VARCHAR2(150);
2240 l_privilege VARCHAR2(150);
2241 l_attribute_code VARCHAR2(30);
2242 l_roleIds_tbl BISVIEWER.t_char;
2243 l_delegationIds_tbl BISVIEWER.t_char;
2244 l_delegationValues_tbl BISVIEWER.t_char;
2245 l_view_name VARCHAR2(150);
2246 l_dimension_level VARCHAR2(150);
2247 l_level_type VARCHAR2(150);
2248 l_sql_stmnt VARCHAR2(2000);
2249 l_id_name VARCHAR2(200);
2250 l_value_name VARCHAR2(200);
2251 l_return_status VARCHAR2(2000);
2252 l_msg_count NUMBER;
2253 l_msg_data VARCHAR2(2000);
2254 l_AsOfDate DATE;
2255 BEGIN
2256 IF getDelegationParam%ISOPEN THEN
2257 CLOSE getDelegationParam;
2258 END IF;
2259 OPEN getDelegationParam;
2260 FETCH getDelegationParam INTO l_delegation_param;
2261 CLOSE getDelegationParam;
2262 IF (pDelegationParam = l_delegation_param) THEN
2263 l_attribute_code := BIS_PMV_UTIL.getAttributeForDimension(l_delegation_param, pRegionCode);
2264 IF (l_attribute_code <> l_delegation_param) THEN
2265 IF getPrivileges%ISOPEN THEN
2266 CLOSE getPrivileges;
2267 END IF;
2268 OPEN getPrivileges(l_attribute_code);
2269 FETCH getPrivileges INTO l_privilege;
2270 CLOSE getPrivileges;
2271 IF (l_privilege IS NOT NULL AND l_privilege <> '-1' AND length(trim(l_privilege)) > 0) THEN
2272 -- Get Role Id's for Privileges
2273 l_roleIds_tbl := BIS_PMV_UTIL.getRoleIds(l_privilege);
2274 IF (l_roleIds_tbl IS NOT NULL AND l_roleIds_tbl.COUNT > 0) THEN
2275 IF c_level_values_view_name%ISOPEN THEN
2276 CLOSE c_level_values_view_name;
2277 END IF;
2278 open c_level_values_view_name (l_delegation_param, pRegionCode);
2279 fetch c_level_values_view_name into l_view_name, l_dimension_level, l_level_type;
2280 close c_level_values_view_name;
2281 IF (l_view_name IS NULL) THEN
2282 IF UPPER(l_level_type) = 'EDW' THEN
2283 l_level_type := 'EDW';
2284 ELSE
2285 l_level_type := 'OLTP';
2286 END IF;
2287 BIS_PMF_GET_DIMLEVELS_PUB.GET_DIMLEVEL_SELECT_STRING(
2288 p_DimLevelShortName => l_dimension_level
2289 , p_bis_source => l_level_type
2290 , x_Select_String => l_sql_stmnt
2291 , x_table_name => l_view_name
2292 , x_id_name => l_id_name
2293 , x_value_name => l_value_name
2294 , x_return_status => l_return_status
2295 , x_msg_count => l_msg_count
2296 , x_msg_data => l_msg_data
2297 );
2298 END IF;
2299
2300 BIS_PMV_UTIL.getDelegations(
2301 pRoleIdsTbl => l_roleIds_tbl
2302 , pParamName => l_delegation_param
2303 , pParameterView => l_view_name
2304 , pAsOfDate => l_AsOfDate
2305 , xDelegatorIdTbl => l_delegationIds_tbl
2306 , xDelegatorValueTbl => l_delegationValues_tbl
2307 );
2308 IF (l_delegationIds_tbl IS NOT NULL AND l_delegationIds_tbl.COUNT > 0) THEN
2309 l_validated_value := l_delegationIds_tbl(1);
2310 END IF;
2311 END IF;
2312 END IF;
2313 END IF;
2314 END IF;
2315
2316 RETURN l_validated_value;
2317 EXCEPTION
2318 WHEN OTHERS THEN
2319 IF getDelegationParam%ISOPEN THEN
2320 CLOSE getDelegationParam;
2321 END IF;
2322 IF getPrivileges%ISOPEN THEN
2323 CLOSE getPrivileges;
2324 END IF;
2325 IF c_level_values_view_name%ISOPEN THEN
2326 CLOSE c_level_values_view_name;
2327 END IF;
2328
2329 END GET_DELEGATION_VALIDATED_VALUE;
2330
2331 PROCEDURE VALIDATE_TIME_PARAMETER
2332 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
2333 ,p_time_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.time_parameter_rec_type
2334 ,x_valid OUT NOCOPY VARCHAR2
2335 ,x_return_status OUT NOCOPY VARCHAR2
2336 ,x_msg_count OUT NOCOPY NUMBER
2337 ,x_msg_data OUT NOCOPY VARCHAR2
2338 ) IS
2339 l_dummy_date DATE;
2340 l_validate_from varchar2(2000);
2341 l_validate_to varchar2(2000);
2342 BEGIN
2343 x_valid := 'Y';
2344 IF ((nvl(p_time_parameter_rec.from_description, g_all) = g_all
2345 OR nvl(p_time_parameter_rec.to_description, g_all) = g_all)
2346 AND (p_time_parameter_rec.required_flag = 'Y')) THEN
2347 x_valid := 'N';
2348 FND_MESSAGE.SET_NAME('BIS','MANDATORY_PARAM');
2349 --Need to add a message token later
2350 FND_MESSAGE.SET_TOKEN('PARAMETER_LABEL', p_time_parameter_rec.parameter_label);
2351 FND_MSG_PUB.ADD;
2352 RAISE FND_API.G_EXC_ERROR;
2353 END IF;
2354
2355 IF nvl(p_time_parameter_rec.from_description, g_all) <> g_all THEN
2356 if p_time_parameter_rec.id_flag = 'Y' then
2357 p_time_parameter_rec.from_value := p_time_parameter_rec.from_description;
2358 GET_TIME_VALIDATED_ID (p_parameter_name => p_time_parameter_rec.parameter_name
2359 ,p_parameter_value => p_time_parameter_rec.from_value
2360 ,p_region_code => p_user_session_rec.region_code
2361 ,p_org_name => p_time_parameter_rec.org_name
2362 ,p_org_value => p_time_parameter_rec.org_value
2363 ,p_responsibility_id => p_user_session_rec.responsibility_id
2364 ,x_parameter_description => p_time_parameter_rec.from_description
2365 ,x_start_date => p_time_parameter_rec.from_period
2366 ,x_end_date => l_dummy_date
2367 ,x_return_status => x_return_status
2368 ,x_msg_count => x_msg_count
2369 ,x_msg_data => x_msg_data);
2370 l_validate_from := p_time_parameter_rec.from_description;
2371 else
2372 GET_TIME_VALIDATED_VALUE (p_parameter_name => p_time_parameter_rec.parameter_name
2373 ,p_parameter_description => p_time_parameter_rec.from_description
2374 ,p_region_code => p_user_session_rec.region_code
2375 ,p_org_name => p_time_parameter_rec.org_name
2376 ,p_org_value => p_time_parameter_rec.org_value
2377 ,p_responsibility_id => p_user_session_rec.responsibility_id
2378 ,x_parameter_value => p_time_parameter_rec.from_value
2379 ,x_start_date => p_time_parameter_rec.from_period
2380 ,x_end_date => l_dummy_date
2381 ,x_return_status => x_return_status
2382 ,x_msg_count => x_msg_count
2383 ,x_msg_data => x_msg_data);
2384 l_validate_from := p_time_parameter_rec.from_value;
2385 end if;
2386
2387 IF l_validate_from IS NULL THEN
2388 x_valid := 'N';
2389 FND_MESSAGE.SET_NAME('BIS','NOT_VALID');
2390 --Need to add a message token later
2391 FND_MESSAGE.SET_TOKEN('PARAMETER_LABEL', p_time_parameter_rec.parameter_label);
2392 FND_MSG_PUB.ADD;
2393 RAISE FND_API.G_EXC_ERROR;
2394 END IF;
2395 END IF;
2396
2397 IF nvl(p_time_parameter_rec.to_description, g_all) <> g_all THEN
2398 if p_time_parameter_rec.id_flag = 'Y' then
2399 p_time_parameter_rec.to_value := p_time_parameter_rec.to_description;
2400 GET_TIME_VALIDATED_ID (p_parameter_name => p_time_parameter_rec.parameter_name
2401 ,p_parameter_value => p_time_parameter_rec.to_value
2402 ,p_region_code => p_user_session_rec.region_code
2403 ,p_org_name => p_time_parameter_rec.org_name
2404 ,p_org_value => p_time_parameter_rec.org_value
2405 ,p_responsibility_id => p_user_session_rec.responsibility_id
2406 ,x_parameter_description => p_time_parameter_rec.to_description
2407 ,x_start_date => l_dummy_date
2408 ,x_end_date => p_time_parameter_rec.to_period
2409 ,x_return_status => x_return_status
2410 ,x_msg_count => x_msg_count
2411 ,x_msg_data => x_msg_data);
2412 l_validate_to := p_time_parameter_rec.to_description;
2413 else
2414 GET_TIME_VALIDATED_VALUE (p_parameter_name => p_time_parameter_rec.parameter_name
2415 ,p_parameter_description => p_time_parameter_rec.to_description
2416 ,p_region_code => p_user_session_rec.region_code
2417 ,p_org_name => p_time_parameter_rec.org_name
2418 ,p_org_value => p_time_parameter_rec.org_value
2419 ,p_responsibility_id => p_user_session_rec.responsibility_id
2420 ,x_parameter_value => p_time_parameter_rec.to_value
2421 ,x_start_date => l_dummy_date
2422 ,x_end_date => p_time_parameter_rec.to_period
2423 ,x_return_status => x_return_status
2424 ,x_msg_count => x_msg_count
2425 ,x_msg_data => x_msg_data);
2426 l_validate_to := p_time_parameter_rec.to_value;
2427 end if;
2428
2429 IF l_validate_to IS NULL THEN
2430 x_valid := 'N';
2431 FND_MESSAGE.SET_NAME('BIS','NOT_VALID');
2432 --Need to add a message token later
2433 FND_MESSAGE.SET_TOKEN('PARAMETER_LABEL', p_time_parameter_rec.parameter_label);
2434 FND_MSG_PUB.ADD;
2435 RAISE FND_API.G_EXC_ERROR;
2436 END IF;
2437 END IF;
2438 EXCEPTION
2439 WHEN FND_API.G_EXC_ERROR THEN
2440 x_return_status := FND_API.G_RET_STS_ERROR;
2441 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2442 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2443 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2444 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2445 WHEN OTHERS THEN
2446 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2447 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2448 END VALIDATE_TIME_PARAMETER;
2449
2450 PROCEDURE DECODE_ID_VALUE
2451 (p_code IN VARCHAR2
2452 ,p_index IN NUMBER
2453 ,x_id OUT NOCOPY VARCHAR2
2454 ,x_value OUT NOCOPY VARCHAR2) IS
2455
2456 BEGIN
2457
2458 x_id := substr(p_code,1,p_index-1);
2459 x_value := substr(p_code,p_index+4); --length('^~]*')= 4
2460
2461 END DECODE_ID_VALUE;
2462
2463 PROCEDURE CREATE_PARAMETER
2464 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
2465 ,p_parameter_rec IN BIS_PMV_PARAMETERS_PVT.parameter_rec_type
2466 ,x_return_status OUT NOCOPY VARCHAR2
2467 ,x_msg_count OUT NOCOPY NUMBER
2468 ,x_msg_Data OUT NOCOPY VARCHAR2
2469 ) IS
2470 l_parameter_name VARCHAR2(32000) := p_parameter_rec.parameter_name;
2471 l_parameter_value VARCHAR2(32000) := p_parameter_rec.parameter_value;
2472 l_parameter_description VARCHAR2(32000) := p_parameter_rec.parameter_description;
2473 l_index number := 0;
2474 l_dimension VARCHAR2(80) := p_parameter_rec.dimension;
2475
2476 BEGIN
2477
2478 l_index := instr(p_parameter_rec.parameter_description,'^~]*');
2479 IF l_index > 0 THEN
2480 DECODE_ID_VALUE
2481 (p_code => p_parameter_rec.parameter_description
2482 ,p_index => l_index
2483 ,x_id => l_parameter_value
2484 ,x_value => l_parameter_description);
2485 if l_parameter_value is not null then
2486 l_parameter_value := ''''||l_parameter_value||'''';
2487 end if;
2488 END IF;
2489
2490 IF p_parameter_rec.hierarchy_flag = 'Y' THEN
2491 IF substr(l_parameter_name, length(l_parameter_name)-9) <> '_HIERARCHY' THEN
2492 l_parameter_name := substr(l_parameter_name,1,instr(l_parameter_name,'+')-1) || '_HIERARCHY';
2493 ELSE
2494 l_parameter_name := substr(l_parameter_name,1,instr(l_parameter_name,'+')-1);
2495 END IF;
2496 END IF;
2497
2498 if l_dimension is null then
2499 l_index := instr(l_parameter_name,'+');
2500 IF l_index > 0 THEN
2501 l_dimension := substr(l_parameter_name,1,l_index-1);
2502 END IF;
2503 end if;
2504
2505 IF p_parameter_rec.default_flag = 'Y' THEN
2506
2507 INSERT INTO BIS_USER_ATTRIBUTES (user_id, function_name,
2508 attribute_name, session_description,
2509 default_value, default_description,
2510 period_date, dimension, operator,
2511 creation_date, created_by,
2512 last_update_Date, last_updated_by)
2513 VALUES (p_user_session_rec.user_id, p_user_session_rec.function_name,
2514 l_parameter_name, 'NULL',
2515 l_parameter_value, l_parameter_description,
2516 p_parameter_rec.period_date, l_dimension,
2517 p_parameter_rec.operator,
2518 sysdate, -1, sysdate, -1);
2519 ELSE
2520 IF p_user_session_rec.page_id IS NULL OR p_user_session_rec.page_id = '' THEN
2521 INSERT INTO BIS_USER_ATTRIBUTES (user_id, function_name,
2522 session_id, attribute_name,
2523 session_value, session_description,
2524 period_date, dimension, operator,
2525 creation_date, created_by,
2526 last_update_Date, last_updated_by)
2527 VALUES (p_user_session_rec.user_id, p_user_session_rec.function_name,
2528 p_user_session_rec.session_id, l_parameter_name,
2529 l_parameter_value, l_parameter_description,
2530 p_parameter_rec.period_date, l_dimension,
2531 p_parameter_rec.operator,
2532 sysdate, -1, sysdate, -1);
2533 ELSE
2534
2535 INSERT INTO BIS_USER_ATTRIBUTES (user_id, page_id, attribute_name, function_name, session_id,
2536 session_value, session_description,
2537 period_date, dimension, operator,
2538 creation_date, created_by,
2539 last_update_Date, last_updated_by)
2540 VALUES (p_user_session_rec.user_id, p_user_session_rec.page_id, l_parameter_name,
2541 p_user_session_rec.function_name, p_user_session_rec.session_id,
2542 l_parameter_value, l_parameter_description,
2543 p_parameter_rec.period_date, l_dimension,
2544 p_parameter_rec.operator,
2545 sysdate, -1, sysdate, -1);
2546
2547 END IF;
2548 END IF;
2549 EXCEPTION
2550 WHEN FND_API.G_EXC_ERROR THEN
2551 x_return_status := FND_API.G_RET_STS_ERROR;
2552 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2553 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2554 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2555 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2556 WHEN OTHERS THEN
2557 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2558 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2559 END CREATE_PARAMETER;
2560
2561 PROCEDURE RETRIEVE_PARAMETER
2562 (p_user_session_rec IN BIS_PMV_SESSION_PVT.Session_rec_type
2563 ,p_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_rec_type
2564 ,x_return_status OUT NOCOPY VARCHAR2
2565 ,x_msg_count OUT NOCOPY NUMBER
2566 ,x_msg_data OUT NOCOPY VARCHAR2
2567 ) IS
2568 BEGIN
2569 IF p_parameter_rec.default_flag = 'Y' THEN
2570 SELECT default_description,
2571 default_value,
2572 period_date,
2573 dimension,
2574 operator
2575 INTO p_parameter_rec.parameter_description,
2576 p_parameter_rec.parameter_value,
2577 p_parameter_rec.period_date,
2578 p_parameter_rec.dimension,
2579 p_parameter_rec.operator
2580 FROM BIS_USER_ATTRIBUTES
2581 WHERE attribute_name = p_parameter_rec.parameter_name
2582 AND function_name = p_user_session_rec.function_name
2583 AND user_id = p_user_session_rec.user_id
2584 AND session_description = 'NULL'
2585 AND session_id IS NULL;
2586 ELSE
2587 SELECT session_description,
2588 session_value,
2589 period_date,
2590 dimension,
2591 operator
2592 INTO p_parameter_rec.parameter_description,
2593 p_parameter_rec.parameter_value,
2594 p_parameter_rec.period_date,
2595 p_parameter_rec.dimension,
2596 p_parameter_rec.operator
2597 FROM BIS_USER_ATTRIBUTES
2598 WHERE attribute_name = p_parameter_rec.parameter_name
2599 AND function_name = p_user_session_rec.function_name
2600 AND user_id = p_user_session_rec.user_id
2601 AND session_id = p_user_session_rec.session_id
2602 AND schedule_id IS NULL;
2603 END IF;
2604 EXCEPTION
2605 WHEN FND_API.G_EXC_ERROR THEN
2606 x_return_status := FND_API.G_RET_STS_ERROR;
2607 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2608 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2609 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2610 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2611 WHEN OTHERS THEN
2612 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2613 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2614 END RETRIEVE_PARAMETER;
2615
2616 PROCEDURE RETRIEVE_PAGE_PARAMETER
2617 (p_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_rec_type
2618 ,p_schedule_id IN NUMBER
2619 ,p_user_session_rec IN BIS_PMV_SESSION_PVT.Session_rec_type
2620 ,p_page_dims IN BISVIEWER.t_char
2621 ,x_return_status OUT NOCOPY VARCHAR2
2622 ,x_msg_count OUT NOCOPY NUMBER
2623 ,x_msg_data OUT NOCOPY VARCHAR2
2624 ) IS
2625
2626 l_page_dims BISVIEWER.t_char := p_page_dims;
2627 BEGIN
2628
2629 -- make sure there are max elements as they will be accessed
2630 IF l_page_dims IS NOT NULL AND l_page_dims.COUNT < MAX_BIND_VARIABLE_COUNT AND l_page_dims.COUNT>0 THEN
2631 FOR i IN l_page_dims.COUNT..MAX_BIND_VARIABLE_COUNT LOOP
2632 l_page_dims(i) := NULL;
2633 END LOOP;
2634 END IF;
2635
2636 x_return_status := FND_API.G_RET_STS_SUCCESS;
2637 BEGIN
2638 SELECT session_description,
2639 session_value,
2640 period_date,
2641 dimension,
2642 operator
2643 INTO p_parameter_rec.parameter_description,
2644 p_parameter_rec.parameter_value,
2645 p_parameter_rec.period_date,
2646 p_parameter_rec.dimension,
2647 p_parameter_rec.operator
2648 FROM BIS_USER_ATTRIBUTES
2649 WHERE attribute_name = p_parameter_rec.parameter_name
2650 AND user_id = p_user_session_rec.user_id
2651 AND page_id = p_user_session_rec.page_id;
2652 EXCEPTION WHEN NO_DATA_FOUND THEN
2653 if (p_schedule_id is not null ) then
2654 if (l_page_dims is not null and l_page_dims.COUNT > 0 ) THEN
2655 SELECT session_description,
2656 session_value,
2657 period_date,
2658 dimension,
2659 operator
2660 INTO p_parameter_rec.parameter_description,
2661 p_parameter_rec.parameter_value,
2662 p_parameter_rec.period_date,
2663 p_parameter_rec.dimension,
2664 p_parameter_rec.operator
2665 FROM BIS_USER_ATTRIBUTES
2666 WHERE attribute_name = p_parameter_rec.parameter_name
2667 AND schedule_id = p_schedule_id
2668 AND attribute_name not in (l_page_dims(1), l_page_dims(2), l_page_dims(3), l_page_dims(4),
2669 l_page_dims(5), l_page_dims(6), l_page_dims(7), l_page_dims(8), l_page_dims(9),
2670 l_page_dims(10), l_page_dims(11), l_page_dims(12), l_page_dims(13), l_page_dims(14),
2671 l_page_dims(15), l_page_dims(16), l_page_dims(17), l_page_dims(18), l_page_dims(19),
2672 l_page_dims(20));
2673 else
2674 SELECT session_description,
2675 session_value,
2676 period_date,
2677 dimension,
2678 operator
2679 INTO p_parameter_rec.parameter_description,
2680 p_parameter_rec.parameter_value,
2681 p_parameter_rec.period_date,
2682 p_parameter_rec.dimension,
2683 p_parameter_rec.operator
2684 FROM BIS_USER_ATTRIBUTES
2685 WHERE attribute_name = p_parameter_rec.parameter_name
2686 AND schedule_id = p_schedule_id;
2687 end if;
2688 else
2689 if (l_page_dims is not null and l_page_dims.COUNT > 0) then
2690 SELECT session_description,
2691 session_value,
2692 period_date,
2693 dimension,
2694 operator
2695 INTO p_parameter_rec.parameter_description,
2696 p_parameter_rec.parameter_value,
2697 p_parameter_rec.period_date,
2698 p_parameter_rec.dimension,
2699 p_parameter_rec.operator
2700 FROM BIS_USER_ATTRIBUTES
2701 WHERE attribute_name = p_parameter_rec.parameter_name
2702 AND user_id = p_user_session_Rec.user_id
2703 AND session_id = p_user_session_Rec.session_id
2704 AND function_name = p_user_session_rec.function_name
2705 AND attribute_name not in (l_page_dims(1), l_page_dims(2), l_page_dims(3), l_page_dims(4),
2706 l_page_dims(5), l_page_dims(6), l_page_dims(7), l_page_dims(8), l_page_dims(9), l_page_dims(10),
2707 l_page_dims(11), l_page_dims(12), l_page_dims(13), l_page_dims(14), l_page_dims(15),
2708 l_page_dims(16), l_page_dims(17), l_page_dims(18), l_page_dims(19), l_page_dims(20));
2709 else
2710 SELECT session_description,
2711 session_value,
2712 period_date,
2713 dimension,
2714 operator
2715 INTO p_parameter_rec.parameter_description,
2716 p_parameter_rec.parameter_value,
2717 p_parameter_rec.period_date,
2718 p_parameter_rec.dimension,
2719 p_parameter_rec.operator
2720 FROM BIS_USER_ATTRIBUTES
2721 WHERE attribute_name = p_parameter_rec.parameter_name
2722 AND user_id = p_user_session_Rec.user_id
2723 AND session_id = p_user_session_Rec.session_id
2724 AND function_name = p_user_session_rec.function_name;
2725 end if;
2726 end if;
2727 END;
2728 EXCEPTION
2729 WHEN FND_API.G_EXC_ERROR THEN
2730 x_return_status := FND_API.G_RET_STS_ERROR;
2731 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2732 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2733 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2734 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2735 WHEN OTHERS THEN
2736 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2737 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2738 END RETRIEVE_PAGE_PARAMETER;
2739
2740 PROCEDURE RETRIEVE_KPI_PARAMETER
2741 (p_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_rec_type
2742 ,p_user_session_rec IN BIS_PMV_SESSION_PVT.Session_rec_type
2743 ,p_user_dims IN BISVIEWER.t_char
2744 ,x_return_status OUT NOCOPY VARCHAR2
2745 ,x_msg_count OUT NOCOPY NUMBER
2746 ,x_msg_data OUT NOCOPY VARCHAR2
2747 ) IS
2748
2749 l_user_dims BISVIEWER.t_char := p_user_dims;
2750
2751 BEGIN
2752
2753 x_return_status := FND_API.G_RET_STS_SUCCESS;
2754
2755 -- make sure there are max elements as they will be accessed
2756 IF l_user_dims IS NOT NULL AND l_user_dims.COUNT < MAX_BIND_VARIABLE_COUNT THEN
2757 FOR i IN l_user_dims.COUNT .. MAX_BIND_VARIABLE_COUNT LOOP
2758 --l_page_dims.EXTEND;
2759 l_user_dims(i) := NULL;
2760 END LOOP;
2761 END IF;
2762
2763 BEGIN
2764 SELECT session_description,
2765 session_value,
2766 period_date,
2767 dimension,
2768 operator
2769 INTO p_parameter_rec.parameter_description,
2770 p_parameter_rec.parameter_value,
2771 p_parameter_rec.period_date,
2772 p_parameter_rec.dimension,
2773 p_parameter_rec.operator
2774 FROM BIS_USER_ATTRIBUTES
2775 WHERE attribute_name = p_parameter_rec.parameter_name
2776 AND user_id = p_user_session_Rec.user_id
2777 AND session_id = p_user_session_Rec.session_id
2778 AND function_name = p_user_session_rec.function_name;
2779 EXCEPTION WHEN NO_DATA_FOUND THEN
2780 if l_user_dims is not null then
2781 SELECT session_description,
2782 session_value,
2783 period_date,
2784 dimension,
2785 operator
2786 INTO p_parameter_rec.parameter_description,
2787 p_parameter_rec.parameter_value,
2788 p_parameter_rec.period_date,
2789 p_parameter_rec.dimension,
2790 p_parameter_rec.operator
2791 FROM BIS_USER_ATTRIBUTES
2792 WHERE attribute_name = p_parameter_rec.parameter_name
2793 AND user_id = p_user_session_rec.user_id
2794 AND page_id = p_user_session_rec.page_id
2795 AND attribute_name not in (l_user_dims(1), l_user_dims(2), l_user_dims(3), l_user_dims(4),
2796 l_user_dims(5), l_user_dims(6), l_user_dims(7), l_user_dims(8), l_user_dims(9),
2797 l_user_dims(10), l_user_dims(11), l_user_dims(12), l_user_dims(13), l_user_dims(14),
2798 l_user_dims(15), l_user_dims(16), l_user_dims(17), l_user_dims(18), l_user_dims(19), l_user_dims(20));
2799 else
2800 SELECT session_description,
2801 session_value,
2802 period_date,
2803 dimension,
2804 operator
2805 INTO p_parameter_rec.parameter_description,
2806 p_parameter_rec.parameter_value,
2807 p_parameter_rec.period_date,
2808 p_parameter_rec.dimension,
2809 p_parameter_rec.operator
2810 FROM BIS_USER_ATTRIBUTES
2811 WHERE attribute_name = p_parameter_rec.parameter_name
2812 AND user_id = p_user_session_rec.user_id
2813 AND page_id = p_user_session_rec.page_id;
2814 end if;
2815 END;
2816 EXCEPTION
2817 WHEN FND_API.G_EXC_ERROR THEN
2818 x_return_status := FND_API.G_RET_STS_ERROR;
2819 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2820 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2821 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2822 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2823 WHEN OTHERS THEN
2824 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2825 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2826 END RETRIEVE_KPI_PARAMETER;
2827
2828 PROCEDURE RETRIEVE_SCHEDULE_PARAMETER
2829 (p_parameter_rec IN OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_rec_type
2830 ,p_schedule_id IN NUMBER
2831 ,x_return_status OUT NOCOPY VARCHAR2
2832 ,x_msg_count OUT NOCOPY NUMBER
2833 ,x_msg_data OUT NOCOPY VARCHAR2
2834 ) IS
2835 BEGIN
2836 SELECT session_description,
2837 session_value,
2838 period_date,
2839 dimension,
2840 operator
2841 INTO p_parameter_rec.parameter_description,
2842 p_parameter_rec.parameter_value,
2843 p_parameter_rec.period_date,
2844 p_parameter_rec.dimension,
2845 p_parameter_rec.operator
2846 FROM BIS_USER_ATTRIBUTES
2847 WHERE attribute_name = p_parameter_rec.parameter_name
2848 AND schedule_id = p_schedule_id;
2849 EXCEPTION
2850 WHEN FND_API.G_EXC_ERROR THEN
2851 x_return_status := FND_API.G_RET_STS_ERROR;
2852 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2853 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2854 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2855 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2856 WHEN OTHERS THEN
2857 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2858 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2859 END RETRIEVE_SCHEDULE_PARAMETER;
2860
2861 PROCEDURE DELETE_PARAMETER
2862 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
2863 ,p_parameter_name IN VARCHAR2
2864 ,p_schedule_option IN VARCHAR2
2865 ,x_return_status OUT NOCOPY VARCHAR2
2866 ,x_msg_count OUT NOCOPY NUMBER
2867 ,x_msg_data OUT NOCOPY VARCHAR2
2868 ) IS
2869 BEGIN
2870 IF p_schedule_option = 'NULL' THEN
2871 DELETE FROM BIS_USER_ATTRIBUTES
2872 WHERE user_id = p_user_session_rec.user_id
2873 AND session_id = p_user_session_rec.session_id
2874 AND function_name = p_user_session_rec.function_name
2875 AND attribute_name = p_parameter_name
2876 AND schedule_id IS NULL;
2877 ELSIF p_schedule_option = 'NOT_NULL' THEN
2878 DELETE FROM BIS_USER_ATTRIBUTES
2879 WHERE user_id = p_user_session_rec.user_id
2880 AND session_id = p_user_session_rec.session_id
2881 AND function_name = p_user_session_rec.function_name
2882 AND attribute_name = p_parameter_name
2883 AND schedule_id IS NOT NULL;
2884 ELSE
2885 DELETE FROM BIS_USER_ATTRIBUTES
2886 WHERE user_id = p_user_session_rec.user_id
2887 AND session_id = p_user_session_rec.session_id
2888 AND function_name = p_user_session_rec.function_name
2889 AND attribute_name = p_parameter_name;
2890 END IF;
2891 COMMIT;
2892 EXCEPTION
2893 WHEN FND_API.G_EXC_ERROR THEN
2894 ROLLBACK;
2895 x_return_status := FND_API.G_RET_STS_ERROR;
2896 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2897 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2898 ROLLBACK;
2899 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2900 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2901 WHEN OTHERS THEN
2902 ROLLBACK;
2903 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2904 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2905 END DELETE_PARAMETER;
2906
2907 PROCEDURE DELETE_SCHEDULE_PARAMETER
2908 (p_parameter_name IN VARCHAR2
2909 ,p_schedule_id IN NUMBER
2910 ,x_return_status OUT NOCOPY VARCHAR2
2911 ,x_msg_count OUT NOCOPY NUMBER
2912 ,x_msg_data OUT NOCOPY VARCHAR2
2913 ) IS
2914 BEGIN
2915 DELETE FROM BIS_USER_ATTRIBUTES
2916 WHERE attribute_name = p_parameter_name
2917 AND schedule_id = p_schedule_id;
2918 COMMIT;
2919 EXCEPTION
2920 WHEN FND_API.G_EXC_ERROR THEN
2921 ROLLBACK;
2922 x_return_status := FND_API.G_RET_STS_ERROR;
2923 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2924 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2925 ROLLBACK;
2926 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2927 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2928 WHEN OTHERS THEN
2929 ROLLBACK;
2930 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2931 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
2932 END DELETE_SCHEDULE_PARAMETER;
2933
2934 PROCEDURE CREATE_SESSION_PARAMETERS
2935 (p_user_param_tbl IN BIS_PMV_PARAMETERS_PVT.parameter_tbl_type
2936 ,p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
2937 ,x_return_status OUT NOCOPY VARCHAR2
2938 ,x_msg_count OUT NOCOPY NUMBER
2939 ,x_msg_data OUT NOCOPY VARCHAR2
2940 ) IS
2941
2942 l_user_param_tbl BIS_PMV_PARAMETERS_PVT.parameter_tbl_type;
2943 l_lov_where varchar2(2000);
2944
2945 /*
2946 cursor lov_where_cursor (cpRegionCode varchar2, cpAttr2 varchar2) is
2947 select attribute4
2948 from ak_region_items
2949 where region_code = cpRegionCode
2950 and attribute2 = cpAttr2;
2951 */
2952 BEGIN
2953
2954 IF p_user_param_tbl.COUNT > 0 THEN
2955 l_useR_param_Tbl := p_user_param_Tbl;
2956 --FOR i in p_user_param_tbl.FIRST..p_user_param_tbl.LAST LOOP
2957 FOR i in 1..p_user_param_tbl.COUNT LOOP
2958
2959 IF (l_user_param_Tbl(i).parameter_name IS NOT NULL ) THEN
2960 IF (l_user_param_Tbl(i).parameter_description <> ROLLING_DIMENSION_DESCRIPTION
2961 --Bug Fix 2616851, Added this so that null check can be done for mandatory parameter
2962 OR (trim(l_user_param_Tbl(i).parameter_description) IS NULL AND l_user_param_Tbl(i).required_flag = 'Y') ) THEN
2963 /*
2964 IF lov_where_cursor%ISOPEN THEN
2965 close lov_where_cursor;
2966 END IF;
2967 open lov_where_cursor(p_user_session_rec.region_code, l_user_param_Tbl(i).parameter_name);
2968 fetch lov_where_cursor into l_lov_where;
2969 close lov_where_cursor;
2970 */
2971 IF (l_user_param_tbl(i).lov_where is not null and
2972 instr(l_user_param_tbl(i).parameter_description, '^~]*') <= 0 and
2973 l_user_param_tbl(i).parameter_description <> g_all ) then
2974 l_lov_where := GET_LOV_WHERE(p_parameter_tbl => l_user_param_Tbl,
2975 p_where_clause => l_user_param_tbl(i).lov_where,
2976 p_user_session_rec => p_user_session_rec);
2977 l_user_param_tbl(i).lov_where := l_lov_where;
2978 END IF;
2979
2980 VALIDATE_AND_SAVE (p_user_session_rec => p_user_session_rec
2981 ,p_parameter_rec => l_user_param_tbl(i)
2982 ,x_return_status => x_return_status
2983 ,x_msg_count => x_msg_count
2984 ,x_msg_Data => x_msg_data);
2985 ELSE
2986
2987 -- save into the bis_user_atribute table directly
2988
2989 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
2990 ,p_parameter_rec => l_user_param_tbl(i)
2991 ,x_return_status => x_return_status
2992 ,x_msg_count => x_msg_count
2993 ,x_msg_Data => x_msg_data
2994 );
2995 END IF; -- if rolling dim
2996
2997 IF (x_return_status is not null OR (x_return_status <> FND_API.G_RET_STS_SUCCESS))THEN
2998 EXIT;
2999 END IF;
3000
3001 END IF; -- if param name is not null
3002 END LOOP;
3003 END IF;
3004 EXCEPTION
3005 WHEN FND_API.G_EXC_ERROR THEN
3006 ROLLBACK;
3007 x_return_status := FND_API.G_RET_STS_ERROR;
3008 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3009 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3010 ROLLBACK;
3011 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3012 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3013 WHEN OTHERS THEN
3014 ROLLBACK;
3015 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3016 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3017 END CREATE_SESSION_PARAMETERS;
3018
3019 PROCEDURE RETRIEVE_PAGE_PARAMETERS
3020 (p_schedule_id IN NUMBER
3021 ,p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3022 ,x_user_param_tbl OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_tbl_type
3023 ,x_return_status OUT NOCOPY VARCHAR2
3024 ,x_msg_count OUT NOCOPY NUMBER
3025 ,x_msg_data OUT NOCOPY VARCHAR2
3026 ) IS
3027
3028 l_index NUMBER := 1;
3029 l_Dimension varchar2(2000);
3030 l_parameter_rec parameter_rec_type;
3031 l_page_dimensions varchar2(2000);
3032
3033 CURSOR c_page_params_cursor IS
3034 SELECT attribute_name,
3035 session_description,
3036 session_value,
3037 period_date,
3038 dimension,
3039 operator
3040 FROM BIS_USER_ATTRIBUTES
3041 WHERE user_id = p_user_session_rec.user_id
3042 AND page_id = p_user_session_rec.page_id;
3043
3044 CURSOR c_sched_portlet_params_cursor IS
3045 SELECT attribute_name,
3046 session_description,
3047 session_value,
3048 period_date,
3049 dimension,
3050 operator
3051 FROM BIS_USER_ATTRIBUTES
3052 WHERE schedule_id = p_schedule_id
3053 AND ((dimension IS NULL AND attribute_name not in (SELECT nvl(attribute_name,'-11')
3054 FROM BIS_USER_ATTRIBUTES
3055 WHERE page_id=p_user_session_rec.page_id
3056 AND user_id=p_user_session_rec.user_id))
3057 OR (dimension IS NOT NULL AND dimension not in (SELECT nvl(dimension,'-11')
3058 FROM BIS_USER_ATTRIBUTES
3059 WHERE page_id=p_user_session_rec.page_id
3060 AND user_id=p_user_session_rec.user_id)));
3061
3062 CURSOR c_sess_portlet_params_cursor IS
3063 SELECT attribute_name,
3064 session_description,
3065 session_value,
3066 period_date,
3067 dimension,
3068 operator
3069 FROM BIS_USER_ATTRIBUTES
3070 WHERE user_id = p_user_session_rec.user_id
3071 AND session_id = p_user_session_rec.session_id
3072 AND function_name = p_user_session_rec.function_name
3073 AND ((dimension IS NULL AND attribute_name not in (SELECT nvl(attribute_name,'-11')
3074 FROM BIS_USER_ATTRIBUTES
3075 WHERE page_id=p_user_session_rec.page_id
3076 AND user_id=p_user_session_rec.user_id))
3077 OR (dimension IS NOT NULL AND dimension not in (SELECT nvl(dimension, '-11')
3078 FROM BIS_USER_ATTRIBUTES
3079 WHERE page_id=p_user_session_rec.page_id
3080 AND user_id=p_user_session_rec.user_id)));
3081
3082 BEGIN
3083
3084 FOR c_page_params_rec IN c_page_params_cursor LOOP
3085 l_parameter_rec.parameter_name := c_page_params_rec.attribute_name;
3086 l_parameter_rec.parameter_description := c_page_params_rec.session_description;
3087 l_parameter_rec.parameter_value := c_page_params_rec.session_value;
3088 l_parameter_rec.period_date := c_page_params_rec.period_date;
3089 l_parameter_rec.dimension := c_page_params_rec.dimension;
3090 l_parameter_rec.operator := c_page_params_rec.operator;
3091 x_user_param_tbl(l_index) := l_parameter_rec;
3092 l_index := l_index + 1;
3093 END LOOP;
3094
3095 IF p_schedule_id IS NOT NULL THEN
3096 FOR c_sched_portlet_params_rec in c_sched_portlet_params_cursor LOOP
3097 l_parameter_rec.parameter_name := c_sched_portlet_params_rec.attribute_name;
3098 l_parameter_rec.parameter_description := c_sched_portlet_params_rec.session_description;
3099 l_parameter_rec.parameter_value := c_sched_portlet_params_rec.session_value;
3100 l_parameter_rec.period_date := c_sched_portlet_params_rec.period_date;
3101 l_parameter_rec.dimension := c_sched_portlet_params_rec.dimension;
3102 l_parameter_rec.operator := c_sched_portlet_params_rec.operator;
3103 x_user_param_tbl(l_index) := l_parameter_rec;
3104 l_index := l_index + 1;
3105 END LOOP;
3106 ELSE
3107 FOR c_sess_portlet_params_rec in c_sess_portlet_params_cursor LOOP
3108 l_parameter_rec.parameter_name := c_sess_portlet_params_rec.attribute_name;
3109 l_parameter_rec.parameter_description := c_sess_portlet_params_rec.session_description;
3110 l_parameter_rec.parameter_value := c_sess_portlet_params_rec.session_value;
3111 l_parameter_rec.period_date := c_sess_portlet_params_rec.period_date;
3112 l_parameter_rec.dimension := c_sess_portlet_params_rec.dimension;
3113 l_parameter_rec.operator := c_sess_portlet_params_rec.operator;
3114 x_user_param_tbl(l_index) := l_parameter_rec;
3115 l_index := l_index + 1;
3116 END LOOP;
3117 END IF;
3118
3119 EXCEPTION
3120 WHEN FND_API.G_EXC_ERROR THEN
3121 x_return_status := FND_API.G_RET_STS_ERROR;
3122 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3123 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3124 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3125 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3126 WHEN OTHERS THEN
3127 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3128 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3129 END RETRIEVE_PAGE_PARAMETERS;
3130
3131 PROCEDURE RETRIEVE_KPI_PARAMETERS
3132 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3133 ,x_user_param_tbl OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_tbl_type
3134 ,x_return_status OUT NOCOPY VARCHAR2
3135 ,x_msg_count OUT NOCOPY NUMBER
3136 ,x_msg_data OUT NOCOPY VARCHAR2
3137 ) IS
3138
3139 l_index NUMBER := 1;
3140 l_Dimension varchar2(2000);
3141 l_parameter_rec parameter_rec_type;
3142 l_user_dimensions varchar2(2000);
3143
3144 CURSOR c_session_params_cursor IS
3145 SELECT attribute_name,
3146 session_description,
3147 session_value,
3148 period_date,
3149 dimension,
3150 operator
3151 FROM BIS_USER_ATTRIBUTES
3152 WHERE user_id = p_user_session_rec.user_id
3153 AND session_id = p_user_session_rec.session_id
3154 AND function_name = p_user_session_rec.function_name;
3155
3156 CURSOR c_page_params_cursor IS
3157 SELECT attribute_name,
3158 session_description,
3159 session_value,
3160 period_date,
3161 dimension,
3162 operator
3163 FROM BIS_USER_ATTRIBUTES
3164 WHERE user_id = p_user_session_rec.user_id
3165 AND page_id = p_user_session_rec.page_id
3166 AND ((dimension IS NULL AND attribute_name not in (SELECT nvl(attribute_name, '-11')
3167 FROM BIS_USER_ATTRIBUTES
3168 WHERE user_id = p_user_session_rec.user_id
3169 AND session_id = p_user_session_rec.session_id
3170 AND function_name = p_user_session_rec.function_name))
3171 OR (dimension IS NOT NULL AND dimension not in (SELECT nvl(dimension,'-11')
3172 FROM BIS_USER_ATTRIBUTES
3173 WHERE user_id = p_user_session_rec.user_id
3174 AND session_id = p_user_session_rec.session_id
3175 AND function_name = p_user_session_rec.function_name)));
3176
3177 BEGIN
3178
3179 FOR c_session_params_rec in c_session_params_cursor LOOP
3180 l_parameter_rec.parameter_name := c_session_params_rec.attribute_name;
3181 l_parameter_rec.parameter_description := c_session_params_rec.session_description;
3182 l_parameter_rec.parameter_value := c_session_params_rec.session_value;
3183 l_parameter_rec.period_date := c_session_params_rec.period_date;
3184 l_parameter_rec.dimension := c_session_params_rec.dimension;
3185 l_parameter_rec.operator := c_session_params_rec.operator;
3186 x_user_param_tbl(l_index) := l_parameter_rec;
3187 l_index := l_index + 1;
3188 END LOOP;
3189
3190 FOR c_page_params_rec IN c_page_params_cursor LOOP
3191 l_parameter_rec.parameter_name := c_page_params_rec.attribute_name;
3192 l_parameter_rec.parameter_description := c_page_params_rec.session_description;
3193 l_parameter_rec.parameter_value := c_page_params_rec.session_value;
3194 l_parameter_rec.period_date := c_page_params_rec.period_date;
3195 l_parameter_rec.dimension := c_page_params_rec.dimension;
3196 l_parameter_rec.operator := c_page_params_rec.operator;
3197 x_user_param_tbl(l_index) := l_parameter_rec;
3198 l_index := l_index + 1;
3199 END LOOP;
3200
3201 EXCEPTION
3202 WHEN FND_API.G_EXC_ERROR THEN
3203 x_return_status := FND_API.G_RET_STS_ERROR;
3204 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3205 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3206 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3207 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3208 WHEN OTHERS THEN
3209 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3210 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3211 END RETRIEVE_KPI_PARAMETERS;
3212
3213 PROCEDURE RETRIEVE_PARAMLVL_PARAMETERS
3214 (p_user_session_Rec IN BIS_PMV_SESSION_PVT.session_rec_type
3215 ,x_paramportlet_param_tbl OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_tbl_Type
3216 ,x_return_status OUT NOCOPY VARCHAR2
3217 ,x_msg_count OUT NOCOPY NUMBER
3218 ,x_msg_data OUT NOCOPY VARCHAR2
3219 )
3220 IS
3221 l_parameter_rec parameter_rec_type;
3222 l_index NUMBER := 1;
3223 l_dimension varchar2(25) := 'TIME_COMPARISON_TYPE';
3224 lNullList BISVIEWER.t_char;
3225 BEGIN
3226 l_parameter_rec.parameter_name := 'AS_OF_DATE';
3227 RETRIEVE_PAGE_PARAMETER (p_parameter_rec => l_parameter_rec
3228 ,p_schedule_id => null
3229 ,p_user_session_rec => p_user_session_rec
3230 ,p_page_dims => lNullList
3231 ,x_return_status => x_return_status
3232 ,x_msg_count => x_msg_count
3233 ,x_msg_data => x_msg_data);
3234 IF (x_return_status is null or x_return_status = FND_API.G_RET_STS_SUCCESS) then
3235 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3236 l_index := l_index + 1;
3237 end if;
3238 l_parameter_rec.parameter_name := 'BIS_P_ASOF_DATE';
3239 RETRIEVE_PAGE_PARAMETER (p_parameter_rec => l_parameter_rec
3240 ,p_schedule_id => null
3241 ,p_user_session_rec => p_user_session_rec
3242 ,p_page_dims => lNullList
3243 ,x_return_status => x_return_status
3244 ,x_msg_count => x_msg_count
3245 ,x_msg_data => x_msg_data);
3246 IF (x_return_status is null or x_return_status = FND_API.G_RET_STS_SUCCESS) then
3247 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3248 l_index := l_index + 1;
3249 end if;
3250 l_parameter_rec.parameter_name := 'BIS_CUR_REPORT_START_DATE';
3251 RETRIEVE_PAGE_PARAMETER (p_parameter_rec => l_parameter_rec
3252 ,p_schedule_id => null
3253 ,p_user_session_rec => p_user_session_rec
3254 ,p_page_dims => lNullList
3255 ,x_return_status => x_return_status
3256 ,x_msg_count => x_msg_count
3257 ,x_msg_data => x_msg_data);
3258 IF (x_return_status is null or x_return_status = FND_API.G_RET_STS_SUCCESS) then
3259 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3260 l_index := l_index + 1;
3261 end if;
3262 l_parameter_rec.parameter_name := 'BIS_PREV_REPORT_START_DATE';
3263 RETRIEVE_PAGE_PARAMETER (p_parameter_rec => l_parameter_rec
3264 ,p_schedule_id => null
3265 ,p_user_session_rec => p_user_session_rec
3266 ,p_page_dims => lNullList
3267 ,x_return_status => x_return_status
3268 ,x_msg_count => x_msg_count
3269 ,x_msg_data => x_msg_data);
3270 IF (x_return_status is null or x_return_status = FND_API.G_RET_STS_SUCCESS) then
3271 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3272 l_index := l_index + 1;
3273 end if;
3274 -- nbarik - 07/17/03 - Bug Fix 2999602 - Added BIS_PREVIOUS_EFFECTIVE_START_DATE and BIS_PREVIOUS_EFFECTIVE_END_DATE
3275 l_parameter_rec.parameter_name := 'BIS_PREVIOUS_EFFECTIVE_START_DATE';
3276 RETRIEVE_PAGE_PARAMETER (p_parameter_rec => l_parameter_rec
3277 ,p_schedule_id => null
3278 ,p_user_session_rec => p_user_session_rec
3279 ,p_page_dims => lNullList
3280 ,x_return_status => x_return_status
3281 ,x_msg_count => x_msg_count
3282 ,x_msg_data => x_msg_data);
3283 IF (x_return_status is null or x_return_status = FND_API.G_RET_STS_SUCCESS) then
3284 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3285 l_index := l_index + 1;
3286 end if;
3287 l_parameter_rec.parameter_name := 'BIS_PREVIOUS_EFFECTIVE_END_DATE';
3288 RETRIEVE_PAGE_PARAMETER (p_parameter_rec => l_parameter_rec
3289 ,p_schedule_id => null
3290 ,p_user_session_rec => p_user_session_rec
3291 ,p_page_dims => lNullList
3292 ,x_return_status => x_return_status
3293 ,x_msg_count => x_msg_count
3294 ,x_msg_data => x_msg_data);
3295 IF (x_return_status is null or x_return_status = FND_API.G_RET_STS_SUCCESS) then
3296 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3297 l_index := l_index + 1;
3298 end if;
3299
3300 -- Also need to retrieve the TIME comparison type
3301 BEGIN
3302 SELECT attribute_name, session_description,
3303 session_value,
3304 period_date,
3305 dimension,
3306 operator
3307 INTO l_parameter_rec.parameter_name,
3308 l_parameter_rec.parameter_description,
3309 l_parameter_rec.parameter_value,
3310 l_parameter_rec.period_date,
3311 l_parameter_rec.dimension,
3312 l_parameter_rec.operator
3313 FROM BIS_USER_ATTRIBUTES
3314 WHERE dimension = l_dimension
3315 AND user_id = p_user_session_rec.user_id
3316 AND page_id = p_user_session_rec.page_id;
3317 END;
3318 x_paramportlet_param_tbl(l_index) := l_parameter_rec;
3319 EXCEPTION
3320 WHEN FND_API.G_EXC_ERROR THEN
3321 x_return_status := FND_API.G_RET_STS_ERROR;
3322 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3323 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3324 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3325 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3326 WHEN OTHERS THEN
3327 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3328 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3329
3330 END;
3331
3332 PROCEDURE RETRIEVE_SCHEDULE_PARAMETERS
3333 (p_schedule_id IN NUMBER
3334 ,x_user_param_tbl OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_tbl_type
3335 ,x_return_status OUT NOCOPY VARCHAR2
3336 ,x_msg_count OUT NOCOPY NUMBER
3337 ,x_msg_data OUT NOCOPY VARCHAR2
3338 ) IS
3339
3340 /*
3341 l_index NUMBER := 1;
3342 l_parameter_rec parameter_rec_type;
3343 CURSOR c_parameter_cursor IS
3344 SELECT attribute_name
3345 FROM BIS_USER_ATTRIBUTES
3346 WHERE schedule_id = p_schedule_id;
3347 BEGIN
3348 FOR c_parameter_rec in c_parameter_cursor LOOP
3349 l_parameter_rec.parameter_name := c_parameter_rec.attribute_name;
3350 RETRIEVE_SCHEDULE_PARAMETER (p_parameter_rec => l_parameter_rec
3351 ,p_schedule_id => p_schedule_id
3352 ,x_return_status => x_return_status
3353 ,x_msg_count => x_msg_count
3354 ,x_msg_data => x_msg_data);
3355 x_user_param_tbl(l_index) := l_parameter_rec;
3356 l_index := l_index + 1;
3357 END LOOP;
3358 */
3359
3360 l_index NUMBER := 1;
3361 l_parameter_rec parameter_rec_type;
3362
3363 CURSOR c_schedule_params_cursor IS
3364 SELECT attribute_name,
3365 session_description,
3366 session_value,
3367 period_date,
3368 dimension,
3369 operator
3370 FROM BIS_USER_ATTRIBUTES
3371 WHERE schedule_id = p_schedule_id;
3372
3373 BEGIN
3374
3375 FOR c_schedule_params_rec in c_schedule_params_cursor LOOP
3376 l_parameter_rec.parameter_name := c_schedule_params_rec.attribute_name;
3377 l_parameter_rec.parameter_description := c_schedule_params_rec.session_description;
3378 l_parameter_rec.parameter_value := c_schedule_params_rec.session_value;
3379 l_parameter_rec.period_date := c_schedule_params_rec.period_date;
3380 l_parameter_rec.dimension := c_schedule_params_rec.dimension;
3381 l_parameter_rec.operator := c_schedule_params_rec.operator;
3382 x_user_param_tbl(l_index) := l_parameter_rec;
3383 l_index := l_index + 1;
3384 END LOOP;
3385
3386 EXCEPTION
3387 WHEN FND_API.G_EXC_ERROR THEN
3388 x_return_status := FND_API.G_RET_STS_ERROR;
3389 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3390 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3391 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3392 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3393 WHEN OTHERS THEN
3394 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3395 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3396 END RETRIEVE_SCHEDULE_PARAMETERS;
3397
3398 PROCEDURE RETRIEVE_SESSION_PARAMETERS
3399 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3400 ,x_user_param_tbl OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_tbl_type
3401 ,x_return_status OUT NOCOPY VARCHAR2
3402 ,x_msg_count OUT NOCOPY NUMBER
3403 ,x_msg_data OUT NOCOPY VARCHAR2
3404 ) IS
3405
3406 /*
3407 l_index NUMBER := 1;
3408 l_parameter_rec parameter_rec_type;
3409 CURSOR c_parameter_cursor IS
3410 SELECT attribute_name
3411 FROM BIS_USER_ATTRIBUTES
3412 WHERE user_id = p_user_session_rec.user_id
3413 AND session_id = p_user_session_rec.session_id
3414 AND function_name = p_user_session_rec.function_name;
3415 BEGIN
3416 FOR c_parameter_rec in c_parameter_cursor LOOP
3417 l_parameter_rec.parameter_name := c_parameter_rec.attribute_name;
3418 l_parameter_rec.default_flag := 'N';
3419 RETRIEVE_PARAMETER (p_parameter_rec => l_parameter_rec
3420 ,p_user_session_rec => p_user_session_rec
3421 ,x_return_status => x_return_status
3422 ,x_msg_count => x_msg_count
3423 ,x_msg_data => x_msg_data);
3424 x_user_param_tbl(l_index) := l_parameter_rec;
3425 l_index := l_index + 1;
3426 END LOOP;
3427 */
3428
3429 l_index NUMBER := 1;
3430 l_parameter_rec parameter_rec_type;
3431
3432 CURSOR c_session_params_cursor IS
3433 SELECT attribute_name,
3434 session_description,
3435 session_value,
3436 period_date,
3437 dimension,
3438 operator
3439 FROM BIS_USER_ATTRIBUTES
3440 WHERE function_name = p_user_session_rec.function_name
3441 AND user_id = p_user_session_rec.user_id
3442 AND session_id = p_user_session_rec.session_id
3443 AND schedule_id IS NULL;
3444
3445 BEGIN
3446
3447 FOR c_session_params_rec in c_session_params_cursor LOOP
3448 l_parameter_rec.parameter_name := c_session_params_rec.attribute_name;
3449 l_parameter_rec.parameter_description := c_session_params_rec.session_description;
3450 l_parameter_rec.parameter_value := c_session_params_rec.session_value;
3451 l_parameter_rec.period_date := c_session_params_rec.period_date;
3452 l_parameter_rec.dimension := c_session_params_rec.dimension;
3453 l_parameter_rec.operator := c_session_params_rec.operator;
3454 x_user_param_tbl(l_index) := l_parameter_rec;
3455 l_index := l_index + 1;
3456 END LOOP;
3457
3458 EXCEPTION
3459 WHEN FND_API.G_EXC_ERROR THEN
3460 x_return_status := FND_API.G_RET_STS_ERROR;
3461 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3462 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3463 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3464 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3465 WHEN OTHERS THEN
3466 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3467 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3468 END RETRIEVE_SESSION_PARAMETERS;
3469
3470 PROCEDURE RETRIEVE_DEFAULT_PARAMETERS
3471 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3472 ,x_user_param_tbl OUT NOCOPY BIS_PMV_PARAMETERS_PVT.parameter_tbl_type
3473 ,x_return_status OUT NOCOPY VARCHAR2
3474 ,x_msg_count OUT NOCOPY NUMBER
3475 ,x_msg_data OUT NOCOPY VARCHAR2
3476 ) IS
3477
3478 /*
3479 l_index NUMBER := 1;
3480 l_parameter_rec parameter_rec_type;
3481 CURSOR c_parameter_cursor IS
3482 SELECT attribute_name
3483 FROM BIS_USER_ATTRIBUTES
3484 WHERE user_id = p_user_session_rec.user_id
3485 AND session_id = p_user_session_rec.session_id
3486 AND function_name = p_user_session_rec.function_name;
3487 BEGIN
3488 FOR c_parameter_rec in c_parameter_cursor LOOP
3489 l_parameter_rec.parameter_name := c_parameter_rec.attribute_name;
3490 l_parameter_rec.default_flag := 'Y';
3491 RETRIEVE_PARAMETER (p_parameter_rec => l_parameter_rec
3492 ,p_user_session_rec => p_user_session_rec
3493 ,x_return_status => x_return_status
3494 ,x_msg_count => x_msg_count
3495 ,x_msg_data => x_msg_data);
3496 x_user_param_tbl(l_index) := l_parameter_rec;
3497 l_index := l_index + 1;
3498 END LOOP;
3499 */
3500
3501 l_index NUMBER := 1;
3502 l_parameter_rec parameter_rec_type;
3503
3504 CURSOR c_default_params_cursor IS
3505 SELECT attribute_name,
3506 default_description,
3507 default_value,
3508 period_date,
3509 dimension,
3510 operator
3511 FROM BIS_USER_ATTRIBUTES
3512 WHERE function_name = p_user_session_rec.function_name
3513 AND user_id = p_user_session_rec.user_id
3514 AND session_description = 'NULL'
3515 AND session_id IS NULL;
3516
3517 BEGIN
3518
3519 FOR c_default_params_rec in c_default_params_cursor LOOP
3520 l_parameter_rec.parameter_name := c_default_params_rec.attribute_name;
3521 l_parameter_rec.parameter_description := c_default_params_rec.default_description;
3522 l_parameter_rec.parameter_value := c_default_params_rec.default_value;
3523 l_parameter_rec.period_date := c_default_params_rec.period_date;
3524 l_parameter_rec.dimension := c_default_params_rec.dimension;
3525 l_parameter_rec.operator := c_default_params_rec.operator;
3526 x_user_param_tbl(l_index) := l_parameter_rec;
3527 l_index := l_index + 1;
3528 END LOOP;
3529
3530 EXCEPTION
3531 WHEN FND_API.G_EXC_ERROR THEN
3532 x_return_status := FND_API.G_RET_STS_ERROR;
3533 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3534 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3535 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3536 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3537 WHEN OTHERS THEN
3538 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3539 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3540 END RETRIEVE_DEFAULT_PARAMETERS;
3541
3542 PROCEDURE DELETE_SESSION_PARAMETERS
3543 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3544 ,p_schedule_option IN VARCHAR2
3545 ,x_return_Status OUT NOCOPY VARCHAR2
3546 ,x_msg_count OUT NOCOPY NUMBER
3547 ,x_msg_data OUT NOCOPY VARCHAR2
3548 ) IS
3549 BEGIN
3550 IF p_schedule_option = 'NULL' THEN
3551 DELETE FROM BIS_USER_ATTRIBUTES
3552 WHERE user_id = p_user_session_rec.user_id
3553 AND session_id = p_user_session_rec.session_id
3554 AND function_name = p_user_session_rec.function_name
3555 AND schedule_id IS NULL;
3556 ELSIF p_schedule_option = 'NOT_NULL' THEN
3557 DELETE FROM BIS_USER_ATTRIBUTES
3558 WHERE user_id = p_user_session_rec.user_id
3559 AND session_id = p_user_session_rec.session_id
3560 AND function_name = p_user_session_rec.function_name
3561 AND schedule_id IS NOT NULL;
3562 ELSE
3563 DELETE FROM BIS_USER_ATTRIBUTES
3564 WHERE user_id = p_user_session_rec.user_id
3565 AND session_id = p_user_session_rec.session_id
3566 AND function_name = p_user_session_rec.function_name;
3567 END IF;
3568 COMMIT;
3569 EXCEPTION
3570 WHEN FND_API.G_EXC_ERROR THEN
3571 x_return_status := FND_API.G_RET_STS_ERROR;
3572 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3573 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3574 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3575 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3576 WHEN OTHERS THEN
3577 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3578 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3579 END DELETE_SESSION_PARAMETERS;
3580
3581 PROCEDURE DELETE_PAGE_PARAMETERS
3582 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3583 ,x_return_status OUT NOCOPY VARCHAR2
3584 ,x_msg_count OUT NOCOPY NUMBER
3585 ,x_msg_data OUT NOCOPY VARCHAR2
3586 )
3587 IS
3588 BEGIN
3589 DELETE BIS_USER_ATTRIBUTES
3590 WHERE user_id = p_user_session_rec.user_id
3591 AND page_id = p_user_session_rec.page_id;
3592 COMMIT;
3593 EXCEPTION
3594 WHEN FND_API.G_EXC_ERROR THEN
3595 x_return_status := FND_API.G_RET_STS_ERROR;
3596 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3597 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3598 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3599 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3600 WHEN OTHERS THEN
3601 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3602 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3603
3604 END DELETE_PAGE_PARAMETERS;
3605
3606 PROCEDURE DELETE_DEFAULT_PARAMETERS
3607 (p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
3608 ,x_return_status OUT NOCOPY VARCHAR2
3609 ,x_msg_count OUT NOCOPY NUMBER
3610 ,x_msg_data OUT NOCOPY VARCHAR2
3611 )
3612 IS
3613 BEGIN
3614 DELETE BIS_USER_ATTRIBUTES
3615 WHERE session_id is null and
3616 function_name = p_user_session_rec.function_name
3617 AND user_id=p_user_session_rec.user_id;
3618 COMMIT;
3619 EXCEPTION
3620 WHEN FND_API.G_EXC_ERROR THEN
3621 x_return_status := FND_API.G_RET_STS_ERROR;
3622 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3623 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3624 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3625 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3626 WHEN OTHERS THEN
3627 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3628 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3629
3630 END DELETE_DEFAULT_PARAMETERS;
3631
3632 PROCEDURE DELETE_SCHEDULE_PARAMETERS
3633 (p_schedule_id IN NUMBER
3634 ,x_return_status OUT NOCOPY VARCHAR2
3635 ,x_msg_count OUT NOCOPY NUMBER
3636 ,x_msg_data OUT NOCOPY VARCHAR2
3637 ) IS
3638 BEGIN
3639 DELETE FROM BIS_USER_ATTRIBUTES
3640 WHERE schedule_id = p_schedule_id;
3641 COMMIT;
3642 EXCEPTION
3643 WHEN FND_API.G_EXC_ERROR THEN
3644 ROLLBACK;
3645 x_return_status := FND_API.G_RET_STS_ERROR;
3646 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3647 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3648 ROLLBACK;
3649 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3650 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3651 WHEN OTHERS THEN
3652 ROLLBACK;
3653 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3654 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3655 END DELETE_SCHEDULE_PARAMETERS;
3656
3657 PROCEDURE GET_NONTIME_VALIDATED_VALUE
3658 (p_parameter_name in varchar2
3659 ,p_parameter_description in varchar2
3660 ,p_lov_where in varchar2 default null
3661 ,p_region_code in varchar2
3662 ,p_responsibility_id in varchar2
3663 ,x_parameter_value out NOCOPY varchar2
3664 ,x_return_status OUT NOCOPY VARCHAR2
3665 ,x_msg_count OUT NOCOPY NUMBER
3666 ,x_msg_data OUT NOCOPY VARCHAR2
3667 ) IS
3668
3669 type c1_cur_type is ref cursor;
3670 c1 c1_cur_type;
3671 v_dimn_level_value_id varchar2(32000);
3672 v_dimn_level_value varchar2(32000);
3673 v_sql_stmnt varchar2(32000);
3674 v_temp_id varchar2(32000);
3675 v_last_id varchar2(32000);
3676
3677 v_bind_sql varchar2(32000);
3678 v_bind_variables varchar2(32000);
3679 v_bind_count number;
3680
3681 l_and_index NUMBER;
3682
3683 BEGIN
3684
3685 getLovSql(p_parameter_name => p_parameter_name
3686 ,p_parameter_description => p_parameter_description
3687 ,p_sql_type => 'VALIDATE_VALUE'
3688 ,p_region_code => p_region_code
3689 ,p_responsibility_id => p_responsibility_id
3690 ,x_sql_statement => v_sql_stmnt
3691 ,x_bind_sql => v_bind_sql
3692 ,x_bind_variables => v_bind_variables
3693 ,x_bind_count => v_bind_count
3694 ,x_return_status => x_return_status
3695 ,x_msg_count => x_msg_count
3696 ,x_msg_data => x_msg_data);
3697
3698 if p_lov_where is not null then
3699 --nbarik - 05/13/03 - Bug Fix 2955560 - put extra parenthesis for product teams where clause
3700 l_and_index := instr(upper(ltrim(p_lov_where)), 'AND');
3701 --v_sql_stmnt := replace(v_sql_stmnt, 'order by', p_lov_where||' order by');
3702 IF (l_and_index = 1) THEN -- put extra parenthesis after AND
3703 v_sql_stmnt := replace(v_sql_stmnt, 'order by', 'AND ('||substr(trim(p_lov_where), 4)||') order by');
3704 ELSE
3705 v_sql_stmnt := replace(v_sql_stmnt, 'order by', p_lov_where||' order by');
3706 END IF;
3707 end if;
3708
3709 -- aleung, 08/22/01 - need the loop for multi-lov feature
3710 open c1 for v_sql_stmnt;
3711 loop
3712 fetch c1 into v_temp_id, v_dimn_level_value;
3713 exit when c1%notfound;
3714 if v_temp_id <> v_last_id or v_last_id is null then
3715 v_dimn_level_value_id := v_dimn_level_value_id ||','''||v_temp_id||'''';
3716 end if;
3717 v_last_id := v_temp_id;
3718 end loop;
3719 close c1;
3720
3721 x_parameter_value := substr(v_dimn_level_value_id, 2);
3722
3723 EXCEPTION
3724 WHEN FND_API.G_EXC_ERROR THEN
3725 x_return_status := FND_API.G_RET_STS_ERROR;
3726 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3727 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3728 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3729 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3730 WHEN OTHERS THEN
3731 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3732 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3733 END GET_NONTIME_VALIDATED_VALUE;
3734
3735 PROCEDURE GET_NONTIME_VALIDATED_ID
3736 (p_parameter_name in varchar2
3737 ,p_parameter_value in varchar2
3738 ,p_lov_where in varchar2 default null
3739 ,p_region_code in varchar2
3740 ,p_responsibility_id in varchar2
3741 ,x_parameter_description out NOCOPY varchar2
3742 ,x_return_status OUT NOCOPY VARCHAR2
3743 ,x_msg_count OUT NOCOPY NUMBER
3744 ,x_msg_data OUT NOCOPY VARCHAR2
3745 ) IS
3746
3747 /*
3748 type c1_cur_type is ref cursor;
3749 c1 c1_cur_type;
3750 */
3751
3752 v_id varchar2(2000);
3753 v_sql_stmnt varchar2(32000);
3754
3755 v_bind_sql varchar2(32000);
3756 v_bind_variables varchar2(32000);
3757 v_bind_count number;
3758
3759 v_start_date date;
3760 v_end_date date;
3761
3762 BEGIN
3763
3764 getLovSql(p_parameter_name => p_parameter_name
3765 ,p_parameter_description => p_parameter_value
3766 ,p_sql_type => 'VALIDATE_ID'
3767 ,p_region_code => p_region_code
3768 ,p_responsibility_id => p_responsibility_id
3769 ,x_sql_statement => v_sql_stmnt
3770 ,x_bind_sql => v_bind_sql
3771 ,x_bind_variables => v_bind_variables
3772 ,x_bind_count => v_bind_count
3773 ,x_return_status => x_return_status
3774 ,x_msg_count => x_msg_count
3775 ,x_msg_data => x_msg_data);
3776
3777 /*
3778 open c1 for v_sql_stmnt;
3779 loop
3780 fetch c1 into v_id, x_parameter_description;
3781 exit; --when c1%notfound;
3782 end loop;
3783 close c1;
3784 */
3785
3786 executeLovBindSQL
3787 (p_bind_sql => v_bind_sql
3788 ,p_bind_variables => v_bind_variables
3789 ,p_time_flag => 'N'
3790 ,x_parameter_id => v_id
3791 ,x_parameter_value => x_parameter_description
3792 ,x_start_date => v_start_date
3793 ,x_end_date => v_end_date
3794 ,x_return_status => x_return_status
3795 ,x_msg_count => x_msg_count
3796 ,x_msg_data => x_msg_data
3797 );
3798
3799 EXCEPTION
3800 WHEN FND_API.G_EXC_ERROR THEN
3801 x_return_status := FND_API.G_RET_STS_ERROR;
3802 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3803 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3804 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3805 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3806 WHEN OTHERS THEN
3807 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3808 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3809 END GET_NONTIME_VALIDATED_ID;
3810
3811 PROCEDURE GET_TIME_VALIDATED_VALUE
3812 (p_parameter_name IN VARCHAR2
3813 ,p_parameter_description in varchar2
3814 ,p_region_code in varchar2
3815 ,p_org_name in varchar2
3816 ,p_org_value in varchar2
3817 ,p_responsibility_id in varchar2
3818 ,x_parameter_value out NOCOPY varchar2
3819 ,x_start_date out NOCOPY date
3820 ,x_end_date out NOCOPY date
3821 ,x_return_status OUT NOCOPY VARCHAR2
3822 ,x_msg_count OUT NOCOPY NUMBER
3823 ,x_msg_data OUT NOCOPY VARCHAR2
3824 ) IS
3825
3826 /*
3827 type c1_cur_type is ref cursor;
3828 c1 c1_cur_type;
3829 */
3830 v_value varchar2(2000);
3831 v_sql_stmnt varchar2(32000);
3832 v_bind_sql varchar2(32000);
3833 v_bind_variables varchar2(32000);
3834 v_bind_count number;
3835
3836 BEGIN
3837 getTimeLovSql(p_parameter_name => p_parameter_name
3838 ,p_parameter_description => p_parameter_description
3839 ,p_sql_type => 'VALIDATE_VALUE'
3840 ,p_region_code => p_region_code
3841 ,p_responsibility_id => p_responsibility_id
3842 ,p_org_name => p_org_name
3843 ,p_org_value => p_org_value
3844 ,x_sql_statement => v_sql_stmnt
3845 ,x_bind_sql => v_bind_sql
3846 ,x_bind_variables => v_bind_variables
3847 ,x_bind_count => v_bind_count
3848 ,x_return_status => x_return_status
3849 ,x_msg_count => x_msg_count
3850 ,x_msg_data => x_msg_data);
3851
3852 /* aleung, 3/6/03, need to use dynamic cursor for binding
3853 open c1 for v_sql_stmnt;
3854 loop
3855 fetch c1 into x_parameter_value, v_value, x_start_date, x_end_date;
3856 exit; --when c1%notfound;
3857 -- aleung, 3/2/01, obtain the first record instead of the last one
3858 end loop;
3859 close c1;
3860 */
3861
3862 executeLovBindSQL
3863 (p_bind_sql => v_bind_sql
3864 ,p_bind_variables => v_bind_variables
3865 ,p_time_flag => 'Y'
3866 ,x_parameter_id => x_parameter_value
3867 ,x_parameter_value => v_value
3868 ,x_start_date => x_start_date
3869 ,x_end_date => x_end_date
3870 ,x_return_status => x_return_status
3871 ,x_msg_count => x_msg_count
3872 ,x_msg_data => x_msg_data
3873 );
3874
3875 EXCEPTION
3876 WHEN FND_API.G_EXC_ERROR THEN
3877 x_return_status := FND_API.G_RET_STS_ERROR;
3878 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3879 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3880 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3881 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3882 WHEN OTHERS THEN
3883 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3884 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3885 END GET_TIME_VALIDATED_VALUE;
3886
3887 PROCEDURE GET_TIME_VALIDATED_ID
3888 (p_parameter_name IN VARCHAR2
3889 ,p_parameter_value in varchar2
3890 ,p_region_code in varchar2
3891 ,p_org_name in varchar2
3892 ,p_org_value in varchar2
3893 ,p_responsibility_id in varchar2
3894 ,x_parameter_description out NOCOPY varchar2
3895 ,x_start_date out NOCOPY date
3896 ,x_end_date out NOCOPY date
3897 ,x_return_status OUT NOCOPY VARCHAR2
3898 ,x_msg_count OUT NOCOPY NUMBER
3899 ,x_msg_data OUT NOCOPY VARCHAR2
3900 ) IS
3901
3902 /*
3903 type c1_cur_type is ref cursor;
3904 c1 c1_cur_type;
3905 */
3906
3907 v_id varchar2(2000);
3908 v_sql_stmnt varchar2(32000);
3909 v_bind_sql varchar2(32000);
3910 v_bind_variables varchar2(32000);
3911 v_bind_count number;
3912
3913 BEGIN
3914
3915 getTimeLovSql(p_parameter_name => p_parameter_name
3916 ,p_parameter_description => p_parameter_value
3917 ,p_sql_type => 'VALIDATE_ID'
3918 ,p_region_code => p_region_code
3919 ,p_responsibility_id => p_responsibility_id
3920 ,p_org_name => p_org_name
3921 ,p_org_value => p_org_value
3922 ,x_sql_statement => v_sql_stmnt
3923 ,x_bind_sql => v_bind_sql
3924 ,x_bind_variables => v_bind_variables
3925 ,x_bind_count => v_bind_count
3926 ,x_return_status => x_return_status
3927 ,x_msg_count => x_msg_count
3928 ,x_msg_data => x_msg_data);
3929
3930 /* aleung, 3/6/03, need to use dynamic cursor for binding
3931 open c1 for v_sql_stmnt;
3932 loop
3933 fetch c1 into v_id, x_parameter_description, x_start_date, x_end_date;
3934 exit; --when c1%notfound;
3935 -- aleung, 3/2/01, obtain the first record instead of the last one
3936 end loop;
3937 close c1;
3938 */
3939
3940 executeLovBindSQL
3941 (p_bind_sql => v_bind_sql
3942 ,p_bind_variables => v_bind_variables
3943 ,p_time_flag => 'Y'
3944 ,x_parameter_id => v_id
3945 ,x_parameter_value => x_parameter_description
3946 ,x_start_date => x_start_date
3947 ,x_end_date => x_end_date
3948 ,x_return_status => x_return_status
3949 ,x_msg_count => x_msg_count
3950 ,x_msg_data => x_msg_data
3951 );
3952
3953 EXCEPTION
3954 WHEN FND_API.G_EXC_ERROR THEN
3955 x_return_status := FND_API.G_RET_STS_ERROR;
3956 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3957 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3958 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3959 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3960 WHEN OTHERS THEN
3961 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3962 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
3963 END GET_TIME_VALIDATED_ID;
3964
3965 PROCEDURE GET_TIME_INFO
3966 (p_region_code in varchar2
3967 ,p_responsibility_id in varchar2
3968 ,p_parameter_name in varchar2
3969 ,p_mode in varchar2
3970 ,p_date in varchar2
3971 ,x_time_description out NOCOPY varchar2
3972 ,x_time_id out NOCOPY varchar2
3973 ,x_start_date out NOCOPY date
3974 ,x_end_date out NOCOPY date
3975 ,x_return_status OUT NOCOPY VARCHAR2
3976 ,x_msg_count OUT NOCOPY NUMBER
3977 ,x_msg_data OUT NOCOPY VARCHAR2
3978 ) IS
3979
3980 type c1_cur_type is ref cursor;
3981 c1 c1_cur_type;
3982 v_sql_stmnt varchar2(32000);
3983 v_bind_sql varchar2(32000);
3984 v_bind_variables varchar2(32000);
3985 v_bind_count number;
3986 v_time_id varchar2(80);
3987 v_start_date date;
3988 v_end_date date;
3989 v_date varchar2(100);
3990 BEGIN
3991
3992 getTimeLovSql(p_parameter_name => p_parameter_name
3993 ,p_parameter_description => null
3994 ,p_sql_type => p_mode
3995 ,p_date => p_date
3996 ,p_region_code => p_region_code
3997 ,p_responsibility_id => p_responsibility_id
3998 ,p_org_name => null
3999 ,p_org_value => null
4000 ,x_sql_statement => v_sql_stmnt
4001 ,x_bind_sql => v_bind_sql
4002 ,x_bind_variables => v_bind_variables
4003 ,x_bind_count => v_bind_count
4004 ,x_return_status => x_return_status
4005 ,x_msg_count => x_msg_count
4006 ,x_msg_data => x_msg_data);
4007
4008 if p_date is null or length(p_date) = 0 then
4009 v_date := SYSDATE;
4010 else
4011 v_date := p_date;
4012 end if;
4013
4014 open c1 for v_bind_sql using v_date;
4015 --open c1 for v_sql_stmnt;
4016 loop
4017 fetch c1 into x_time_id, x_time_description, x_start_date, x_end_date;
4018 exit; --when c1%notfound;
4019 -- aleung, 3/2/01, obtain the first record instead of the last one
4020 end loop;
4021 close c1;
4022
4023 EXCEPTION
4024 WHEN FND_API.G_EXC_ERROR THEN
4025 x_return_status := FND_API.G_RET_STS_ERROR;
4026 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4027 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4028 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4029 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4030 WHEN OTHERS THEN
4031 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4032 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4033 END GET_TIME_INFO;
4034
4035 PROCEDURE getLOVSQL
4036 (p_parameter_name in varchar2
4037 ,p_parameter_description in varchar2
4038 ,p_sql_type in varchar2 default null
4039 ,p_region_code in varchar2
4040 ,p_responsibility_id in varchar2
4041 ,x_sql_statement out NOCOPY varchar2
4042 ,x_bind_sql out NOCOPY varchar2
4043 ,x_bind_variables out NOCOPY varchar2
4044 ,x_bind_count out NOCOPY number
4045 ,x_return_status OUT NOCOPY VARCHAR2
4046 ,x_msg_count OUT NOCOPY NUMBER
4047 ,x_msg_data OUT NOCOPY VARCHAR2
4048 ) is
4049
4050 /*
4051 cursor c_level_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
4052 select attribute15 level_values_view_name, substr(attribute2, 1, instr(attribute2, '+')-1) dimension ,substr(attribute2,instr(attribute2, '+')+1) dimension_level
4053 from ak_region_items_vl
4054 where nvl(attribute2,attribute_code) = rtrim(cp_parameter_name)
4055 and region_code = rtrim(cp_region_code);
4056
4057 ----GSANAP for EDW purposes 10/17/00
4058 cursor c_edw_level_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
4059 select vl.attribute15 level_values_view_name, substr(vl.attribute2, instr(vl.attribute2, '+')+1) dimension_level
4060 from ak_region_items_vl vl, ak_regions r
4061 where nvl(vl.attribute2,vl.attribute_code) LIKE rtrim(cp_parameter_name)
4062 and vl.region_code = rtrim(cp_region_code)
4063 and vl.region_code = r.region_code
4064 and lower(r.region_object_type) = 'edw' ;
4065 */
4066
4067 --aleung, 9/26/02, combine the 2 above cursors into 1
4068 --ksadagop BugFix 3351910, added lov where clause
4069 cursor c_level_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
4070 select vl.attribute15, -- level view name
4071 substr(vl.attribute2, 1, instr(vl.attribute2,'+')-1), -- dimension
4072 substr(vl.attribute2, instr(vl.attribute2,'+')+1), -- dimension level
4073 nvl(r.region_object_type, 'OLTP'), -- level type
4074 vl.attribute4 -- lov where clause
4075 from ak_region_items vl, ak_regions r
4076 where nvl(vl.attribute2,vl.attribute_code) = rtrim(cp_parameter_name)
4077 and vl.region_code = rtrim(cp_region_code)
4078 and vl.region_code = r.region_code;
4079
4080 v_edw_level_values_view_name varchar2(2000) := null;
4081 vEdwDimensionLevel varchar2(2000) := null;
4082
4083 v_level_values_view_name varchar2(32000);
4084 v_sql_stmnt varchar2(32000);
4085 v_bind_sql varchar2(32000);
4086 v_bind_variables varchar2(32000);
4087 v_bind_count number := 0;
4088 vDimension varchar2(32000);
4089 vDimensionLevel varchar2(32000);
4090 vLevelType varchar2(100);
4091 vLovWhereClause varchar2(32000);
4092
4093 v_table_name VARCHAR2(32000);
4094 v_id_name VARCHAR2(32000) := 'ID';
4095 v_value_name VARCHAR2(32000) := 'VALUE';
4096 v_return_status VARCHAR2(32000);
4097 v_msg_count NUMBER;
4098 v_msg_data VARCHAR2(32000);
4099 --bind variables introduced for performance fix 2641735 -ansingh.
4100 v_bindVar_1 varchar2(3);
4101 v_bindVar_2 varchar2(3);
4102 v_bindVar_3 varchar2(3);
4103 v_bindVar_4 varchar2(3);
4104
4105 /* Bug Fix : 3044997 */
4106 v_index1 number := 0 ;
4107 v_index2 number := 0 ;
4108 v_parameter_name varchar2(2000) ;
4109
4110 BEGIN
4111
4112 /*
4113 -- validate LOV value
4114 open c_level_values_view_name (p_parameter_name,p_region_code);
4115 fetch c_level_values_view_name into v_level_values_view_name, vDimension, vDimensionLevel;
4116 close c_level_values_view_name;
4117
4118 ----GSANAP for EDW purposes 10/17/00
4119 open c_edw_level_values_view_name (p_parameter_name,p_region_code);
4120 fetch c_edw_level_values_view_name into v_edw_level_values_view_name, vEdwDimensionLevel;
4121 close c_edw_level_values_view_name;
4122 */
4123
4124 /* Bug Fix : 3044997 */
4125 -- Parameter Names of repeated dimension items are in the form A+B+C,A+B+D etc
4126 -- Need to pass A+B to c_level_values_view_name
4127 -- open c_level_values_view_name (p_parameter_name,p_region_code);
4128 v_parameter_name := p_parameter_name ;
4129 v_index1 := instr(p_parameter_name,'+') ;
4130 v_index2 := instr(p_parameter_name, '+', v_index1+1) ;
4131 if ((v_index2 > 0) AND (v_index2 > v_index1)) then
4132 v_parameter_name := substr(p_parameter_name,1,v_index2-1);
4133 end if ;
4134
4135 --ksadagop BugFix 3351910, added lov where clause
4136 open c_level_values_view_name (v_parameter_name,p_region_code);
4137 fetch c_level_values_view_name into v_level_values_view_name, vDimension, vDimensionLevel, vLevelType, vLovWhereClause;
4138 close c_level_values_view_name;
4139 if upper(vLevelType) = 'EDW' then
4140 vLevelType := 'EDW';
4141 else
4142 vLevelType := 'OLTP';
4143 end if;
4144
4145 if v_level_values_view_name is not null then
4146 v_sql_stmnt := 'select '||v_id_name||', '||v_value_name||' from '||v_level_values_view_name;
4147 else
4148 BIS_PMF_GET_DIMLEVELS_PUB.GET_DIMLEVEL_SELECT_STRING(
4149 p_DimLevelShortName => vDimensionLevel
4150 ,p_bis_source => vLevelType
4151 ,x_Select_String => v_sql_stmnt
4152 ,x_table_name=> v_table_name
4153 ,x_id_name=> v_id_name
4154 ,x_value_name=> v_value_name
4155 ,x_return_status=> v_return_status
4156 ,x_msg_count=> v_msg_count
4157 ,x_msg_data=> v_msg_data
4158 );
4159 end if;
4160
4161 /*
4162 if vEdwDimensionLevel is not null then
4163
4164 --aleung, 4/16/2001, check to see if user has defined the LOV Table in AK
4165 if v_edw_level_values_view_name is not null then
4166 v_sql_stmnt := 'select '||v_id_name||', '||v_value_name||' from '||
4167 v_edw_level_values_view_name;
4168 else
4169 BIS_PMF_GET_DIMLEVELS_PUB.GET_DIMLEVEL_SELECT_STRING(
4170 p_DimLevelShortName => vEdwDimensionLevel
4171 ,p_bis_source => 'EDW'
4172 ,x_Select_String => v_sql_stmnt
4173 ,x_table_name=> v_table_name
4174 ,x_id_name=> v_id_name
4175 ,x_value_name=> v_value_name
4176 ,x_return_status=> v_return_status
4177 ,x_msg_count=> v_msg_count
4178 ,x_msg_data=> v_msg_data
4179 );
4180 end if;
4181
4182 else -- vEdwDimensionLevel is null
4183
4184 --aleung, 4/16/2001, check to see if user has defined the LOV Table in AK
4185 if v_level_values_view_name is not null then
4186 v_sql_stmnt := 'select '||v_id_name||', '||v_value_name||' from '||
4187 v_level_values_view_name;
4188 else
4189 BIS_PMF_GET_DIMLEVELS_PUB.GET_DIMLEVEL_SELECT_STRING(
4190 p_DimLevelShortName => vDimensionLevel
4191 ,p_bis_source => 'OLTP'
4192 ,x_Select_String => v_sql_stmnt
4193 ,x_table_name=> v_table_name
4194 ,x_id_name=> v_id_name
4195 ,x_value_name=> v_value_name
4196 ,x_return_status=> v_return_status
4197 ,x_msg_count=> v_msg_count
4198 ,x_msg_data=> v_msg_data
4199 );
4200 end if;
4201
4202 end if; -- end of constructing the select string
4203 */
4204
4205 v_bind_sql := v_sql_stmnt;
4206
4207 if v_return_status = FND_API.G_RET_STS_ERROR then
4208 for i in 1..v_msg_count loop
4209 htp.print(fnd_msg_pub.get(p_msg_index=>i, p_encoded=>FND_API.G_FALSE));
4210 end loop;
4211 end if;
4212
4213 if (upper(nvl(p_parameter_description, G_ALL)) <> upper(G_ALL) AND trim(p_parameter_description) <> '%') then
4214
4215 if p_sql_type = 'VALIDATE_ID' then
4216 v_sql_stmnt := v_sql_stmnt || ' where ' || v_id_name || '=''' || p_parameter_description || '''';
4217 v_bind_count := v_bind_count + 1;
4218 v_bind_sql := v_bind_sql || ' where ' || v_id_name || '= :'||v_bind_count;
4219 v_bind_variables := v_bind_variables||'~'||p_parameter_description;
4220 else
4221 if p_sql_type = 'LOV' then
4222 if instr(p_parameter_description,',,') > 0 then
4223 v_sql_stmnt := v_sql_stmnt || ' where lower('||v_value_name||') in ';
4224 v_bind_sql := v_bind_sql || ' where lower('||v_value_name||') in ';
4225 else
4226 v_sql_stmnt := v_sql_stmnt || ' where lower('||v_value_name||') like ';
4227 v_bind_sql := v_bind_sql || ' where lower('||v_value_name||') like ';
4228 end if;
4229 elsif instr(p_parameter_description,',,') > 0 then
4230 v_sql_stmnt := v_sql_stmnt || ' where '||v_value_name||' in ';
4231 v_bind_sql := v_bind_sql || ' where '||v_value_name||' in ';
4232 /*
4233 --BugFix#2537114 -Anoop Start
4234 elsif (upper(nvl(p_parameter_description, G_ALL)) = upper(G_ALL) OR trim(p_parameter_description) = '%') then
4235 v_sql_stmnt := v_sql_stmnt ||' where '||v_value_name||' like ';
4236 v_bind_sql := v_bind_sql ||' where '||v_value_name||' like ';
4237 --BugFix#2537114 -Anoop End
4238 */
4239 else
4240 v_sql_stmnt := v_sql_stmnt || ' where '||v_value_name||' = ';
4241 v_bind_sql := v_bind_sql || ' where '||v_value_name||' = ';
4242 end if;
4243 /*
4244 -- if p_parameter_description = G_ALL then
4245 if upper(nvl(p_parameter_description, G_ALL)) = upper(G_ALL) then
4246 v_sql_stmnt := v_sql_stmnt||'''%''';
4247 v_bind_count := v_bind_count + 1;
4248 v_bind_sql := v_bind_sql||':'||v_bind_count;
4249 v_bind_variables := v_bind_variables ||'~%';
4250 else
4251 */
4252 if p_sql_type = 'LOV' then
4253 if instr(p_parameter_description, ',,')>0 then
4254 v_sql_stmnt := v_sql_stmnt||'('''||replace(replace(replace(lower(p_parameter_description),'''',''''''),',,',''','''),''' ','''')||''')';
4255 v_bind_sql := v_bind_sql||'('''||replace(replace(replace(lower(p_parameter_description),'''',''''''),',,',''','''),'''','''')||''')';
4256 else
4257 v_sql_stmnt := v_sql_stmnt||''''||'%'||replace(lower(p_parameter_description),'''','''''')||'%''';
4258 v_bind_count := v_bind_count + 1;
4259 v_bind_sql := v_bind_sql||':'||v_bind_count;
4260 v_bind_variables := v_bind_variables||'~%'||lower(p_parameter_description)||'%'; --add % before the input -ansingh
4261 --bind variables introduced for performance fix 2641735 -ansingh.
4262 if (length(p_parameter_description) > 2) then
4263 v_bindVar_1 := lower(SUBSTR(p_parameter_description, 1, 2));
4264 v_bindVar_2 := upper(SUBSTR(p_parameter_description, 1, 2));
4265 v_bindVar_3 := upper(SUBSTR(p_parameter_description, 1, 1)) || lower(SUBSTR(p_parameter_description, 2, 1));
4266 v_bindVar_4 := lower(SUBSTR(p_parameter_description, 1, 1)) || upper(SUBSTR(p_parameter_description, 2, 1));
4267 --bind sql
4268 v_bind_sql := v_bind_sql || ' AND ( ';
4269 for i in 1..4 loop
4270 v_bind_count := v_bind_count + 1;
4271 v_bind_sql := v_bind_sql || v_value_name || ' like :' || v_bind_count;
4272 if (i<>4) then
4273 v_bind_sql := v_bind_sql || ' OR ';
4274 else
4275 v_bind_sql := v_bind_sql || ' ) ';
4276 end if;
4277 end loop;
4278 --bind variables
4279 v_bind_variables := v_bind_variables||'~%'|| v_bindVar_1 || '%~%' || v_bindVar_2 || '%~%' || v_bindVar_3 || '%~%' || v_bindVar_4 || '%'; --add % before the input -ansingh
4280 elsif (length(p_parameter_description) = 2) then
4281 v_bindVar_1 := upper(SUBSTR(p_parameter_description, 1, 1)) || lower(SUBSTR(p_parameter_description, 2, 1));
4282 v_bindVar_2 := lower(SUBSTR(p_parameter_description, 1, 1)) || upper(SUBSTR(p_parameter_description, 2, 1));
4283 --bind sql
4284 v_bind_sql := v_bind_sql || ' AND ( ';
4285 for i in 1..2 loop
4286 v_bind_count := v_bind_count + 1;
4287 v_bind_sql := v_bind_sql || v_value_name || ' like :' || v_bind_count;
4288 if (i<>2) then
4289 v_bind_sql := v_bind_sql || ' OR ';
4290 else
4291 v_bind_sql := v_bind_sql || ' ) ';
4292 end if;
4293 end loop;
4294 --bind variables
4295 v_bind_variables := v_bind_variables||'~%'|| v_bindVar_1 || '%~%' || v_bindVar_2 || '%'; --add % before the input -ansingh
4296 end if;
4297 end if;
4298 elsif instr(p_parameter_description, ',,')>0 then
4299 v_sql_stmnt := v_sql_stmnt||'('''||replace(replace(replace(p_parameter_description,'''',''''''),',,',''','''),''' ','''')||''')';
4300 v_bind_sql := v_bind_sql||'('''||replace(replace(replace(p_parameter_description,'''',''''''),',,',''','''),''' ','''')||''')';
4301 else
4302 v_sql_stmnt := v_sql_stmnt||''''||replace(p_parameter_description,'''','''''')||'''';
4303 v_bind_count := v_bind_count + 1;
4304 v_bind_sql := v_bind_sql||':'||v_bind_count;
4305 v_bind_variables := v_bind_variables||'~'||p_parameter_description;
4306 end if;
4307 --end if;
4308 end if;
4309 --ksadagop BugFix 3351910, added lov where clause
4310 if (length(trim(vLovWhereClause)) > 0 and instr(trim(vLovWhereClause),'{') = 0) then
4311 v_sql_stmnt := v_sql_stmnt || ' ' || vLovWhereClause;
4312 v_bind_sql := v_bind_sql || ' ' || vLovWhereClause;
4313 end if;
4314 else
4315 v_sql_stmnt := v_sql_stmnt || ' where 1=1 ';
4316 v_bind_sql := v_bind_sql || ' where 1=1 ';
4317 end if; -- end of constructing the where clause
4318
4319 --sess_id , aleung, 1/8/2001, remove dependency on responsibility id
4320 --assuming same organization dimension level value has same value id
4321 --for non-EDW reports
4322 if vLevelType = 'OLTP' and vDimension = 'ORGANIZATION' and p_responsibility_id <> 'NULL'
4323 and vDimensionLevel in ('LEGAL ENTITY','OPERATING UNIT','HR ORGANIZATION','ORGANIZATION','SET OF BOOKS',
4324 'BUSINESS GROUP','HRI_ORG_HRCY_BX','HRI_ORG_HRCYVRSN_BX','HRI_ORG_HR_HX','HRI_ORG_INHV_H','HRI_ORG_SSUP_H',
4325 'HRI_ORG_BGR_HX','HRI_ORG_HR_H','HRI_ORG_SRHL') then
4326 v_sql_stmnt := v_sql_stmnt || ' and responsibility_id = ' || '' || p_responsibility_id || '';
4327 v_bind_count := v_bind_count + 1;
4328 v_bind_sql := v_bind_sql || ' and responsibility_id = :'|| v_bind_count;
4329 v_bind_variables := v_bind_variables||'~'||p_responsibility_id;
4330 end if;
4331
4332 if p_sql_type <> 'VALIDATE_ID' then
4333 v_sql_stmnt := v_sql_stmnt ||' order by '||v_value_name;
4334 v_bind_sql := v_bind_sql ||' order by '||v_value_name;
4335 end if;
4336
4337 x_sql_statement := v_sql_stmnt;
4338 x_bind_sql := v_bind_sql;
4339 x_bind_variables := v_bind_variables;
4340 x_bind_count := v_bind_count;
4341
4342 EXCEPTION
4343 WHEN FND_API.G_EXC_ERROR THEN
4344 x_return_status := FND_API.G_RET_STS_ERROR;
4345 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4346 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4347 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4348 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4349 WHEN OTHERS THEN
4350 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4351 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4352 END getLOVSQL;
4353
4354 PROCEDURE getTimeLovSql
4355 (p_parameter_name in varchar2
4356 ,p_parameter_description in varchar2
4357 ,p_sql_type in varchar2 default null
4358 ,p_date in varchar2 default null
4359 ,p_region_code in varchar2
4360 ,p_responsibility_id in varchar2
4361 ,p_org_name in varchar2
4362 ,p_org_value in varchar2
4363 ,x_sql_statement out NOCOPY varchar2
4364 ,x_bind_sql out NOCOPY varchar2
4365 ,x_bind_variables out NOCOPY varchar2
4366 ,x_bind_count out NOCOPY number
4367 ,x_return_status OUT NOCOPY VARCHAR2
4368 ,x_msg_count OUT NOCOPY NUMBER
4369 ,x_msg_data OUT NOCOPY VARCHAR2
4370 )is
4371
4372 /*
4373 cursor c_level_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
4374 select attribute15 level_values_view_name, substr(attribute2,instr(attribute2, '+')+1) dimension_level
4375 from ak_region_items_vl
4376 where nvl(attribute2,attribute_code) = rtrim(cp_parameter_name)
4377 and region_code = rtrim(cp_region_code);
4378
4379 ----GSANAP for EDW purposes 10/17/00
4380 cursor c_edw_tmlvl_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
4381 select vl.attribute15 edw_level_values_view_name, substr(vl.attribute2, instr(vl.attribute2, '+')+1) dimension_level
4382 from ak_region_items_vl vl, ak_regions r
4383 where nvl(vl.attribute2,vl.attribute_code) LIKE rtrim(cp_parameter_name)
4384 and vl.region_code = rtrim(cp_region_code)
4385 and vl.region_code = r.region_code
4386 and lower(r.region_object_type) = 'edw';
4387 */
4388 --aleung, 9/26/02, combine the above 2 cursors into 1
4389 cursor c_tmlvl_values_view_name (cp_parameter_name varchar2, cp_region_code varchar2) is
4390 select vl.attribute15, -- view name
4391 substr(vl.attribute2, instr(vl.attribute2, '+')+1), -- dimension level
4392 nvl(r.region_object_type, 'OLTP') -- level type
4393 from ak_region_items vl, ak_regions r
4394 where nvl(vl.attribute2,vl.attribute_code) = rtrim(cp_parameter_name)
4395 and vl.region_code = rtrim(cp_region_code)
4396 and vl.region_code = r.region_code;
4397
4398 cursor c_nested_region(cp_region_code varchar2) is
4399 select nested_region_code
4400 from ak_region_items
4401 where region_code = cp_region_code
4402 and nested_region_code is not null;
4403
4404 v_edw_tmlvl_values_view_name varchar2(2000) := null;
4405
4406 v_level_values_view_name varchar2(2000);
4407 v_sql_stmnt varchar2(32000);
4408 v_bind_sql varchar2(32000);
4409 v_bind_variables varchar2(32000);
4410 v_bind_count number := 0;
4411 vAttributeName varchar2(2000);
4412 vOrgId varchar2(2000);
4413
4414 vLevelType varchar2(100);
4415 vEdwDimensionLevel varchar2(2000);
4416 vDimensionLevel varchar2(2000);
4417 v_table_name VARCHAR2(2000);
4418 v_id_name VARCHAR2(2000) := 'ID';
4419 v_value_name VARCHAR2(2000) := 'VALUE';
4420 v_return_status VARCHAR2(2000);
4421 v_msg_count NUMBER;
4422 v_msg_data VARCHAR2(2000);
4423
4424 v_date varchar2(100);
4425 l_nested_region_code varchar2(240);
4426 vDimension varchar2(2000);
4427
4428 BEGIN
4429
4430 if p_date is null or length(p_date) = 0 then
4431 v_date := SYSDATE;
4432 else
4433 v_date := p_date;
4434 end if;
4435
4436 /*
4437 -- validate LOV value
4438 open c_level_values_view_name (p_parameter_name,p_region_code);
4439 fetch c_level_values_view_name into v_level_values_view_name, vDimensionLevel;
4440 close c_level_values_view_name;
4441
4442 ----GSANAP 10/17/00 for EDW purposes
4443 open c_edw_tmlvl_values_view_name (p_parameter_name,p_region_code);
4444 fetch c_edw_tmlvl_values_view_name into v_edw_tmlvl_values_view_name, vEdwDimensionLevel;
4445 close c_edw_tmlvl_values_view_name;
4446 */
4447 if (p_region_code is null or length(p_region_code) = 0) then
4448 vDimension := substr(p_parameter_name ,1,instr(p_parameter_name ,'+')-1);
4449 if upper(vDimension) = 'EDW_TIME_M' then
4450 vEdwDimensionLevel := substr(p_parameter_name, instr(p_parameter_name, '+')+1);
4451 else
4452 vDimensionLevel := substr(p_parameter_name, instr(p_parameter_name, '+')+1);
4453 end if;
4454 else
4455 BEGIN
4456 open c_tmlvl_values_view_name (p_parameter_name,p_region_code);
4457 fetch c_tmlvl_values_view_name into v_level_values_view_name, vDimensionLevel, vLevelType;
4458 close c_tmlvl_values_view_name;
4459 EXCEPTION WHEN OTHERS THEN
4460 NULL;
4461 END;
4462
4463 if(vDimensionLevel is null) then
4464 open c_nested_region(p_region_code);
4465 fetch c_nested_region into l_nested_region_code;
4466 close c_nested_region;
4467 if(l_nested_region_code is not null) then
4468 open c_tmlvl_values_view_name (p_parameter_name,l_nested_region_code);
4469 fetch c_tmlvl_values_view_name into v_level_values_view_name, vDimensionLevel, vLevelType;
4470 close c_tmlvl_values_view_name;
4471 end if;
4472 end if;
4473
4474
4475 if upper(vLevelType) = 'EDW' then
4476 v_edw_tmlvl_values_view_name := v_level_values_view_name;
4477 vEdwDimensionLevel := vDimensionLevel;
4478 end if;
4479 end if;
4480
4481 if vEdwDimensionLevel is not null then
4482 --aleung, 4/16/2001, check to see if user has defined the LOV Table in AK
4483 if v_edw_tmlvl_values_view_name is not null then
4484 v_sql_stmnt := 'select distinct '||v_id_name||', '||v_value_name;
4485 if rtrim(ltrim(vEdwDimensionLevel)) <> 'EDW_TIME_A' then
4486 v_sql_stmnt := v_sql_stmnt || ', start_date, end_date';
4487 end if;
4488
4489 --BugFix#2537114 this should be ' from ' and not 'from ' -Anoop
4490 -- v_sql_stmnt := v_sql_stmnt || 'from '||v_edw_tmlvl_values_view_name;
4491
4492 v_sql_stmnt := v_sql_stmnt || ' from '||v_edw_tmlvl_values_view_name;
4493 v_table_name := v_edw_tmlvl_values_view_name;
4494 else
4495 BIS_PMF_GET_DIMLEVELS_PUB.GET_DIMLEVEL_SELECT_STRING(
4496 p_DimLevelShortName => vEdwDimensionLevel
4497 ,p_bis_source => 'EDW'
4498 ,x_Select_String => v_sql_stmnt
4499 ,x_table_name=> v_table_name
4500 ,x_id_name=> v_id_name
4501 ,x_value_name=> v_value_name
4502 ,x_return_status=> v_return_status
4503 ,x_msg_count=> v_msg_count
4504 ,x_msg_data=> v_msg_data
4505 );
4506 --end if;
4507 if v_return_status = FND_API.G_RET_STS_ERROR then
4508 for i in 1..v_msg_count loop
4509 htp.print(fnd_msg_pub.get(p_msg_index=>i, p_encoded=>FND_API.G_FALSE));
4510 end loop;
4511 end if;
4512
4513 if rtrim(ltrim(vEdwDimensionLevel)) = 'EDW_TIME_A' then
4514 v_sql_stmnt := 'select distinct '||v_id_name||', '||v_value_name||' from '||v_table_name;
4515 end if;
4516 end if;
4517
4518 v_bind_sql := v_sql_stmnt;
4519
4520 -- Change this to v_date - amkulkar
4521 if p_sql_type = 'GET_CURRENT' then
4522 v_sql_stmnt := v_sql_stmnt || ' where ''' ||v_date||''' between start_date and end_date ';
4523 v_bind_count := v_bind_count + 1;
4524 v_bind_sql := v_bind_sql || ' where :'||v_bind_count||' between start_date and end_date ';
4525 v_bind_variables := v_bind_variables||'~'||v_date;
4526 elsif p_sql_type = 'GET_PREVIOUS' then
4527 v_sql_stmnt := v_sql_stmnt || ' where end_date = (select max(end_date) from '
4528 || v_table_name || ' where ''' ||v_date|| ''' > end_date) ';
4529 v_bind_count := v_bind_count + 1;
4530 v_bind_sql := v_bind_sql || ' where end_date = (select max(end_date) from '
4531 || v_table_name || ' where :' ||v_bind_count|| ' > end_date) ';
4532 v_bind_variables := v_bind_variables||'~'||v_date;
4533 elsif p_sql_type = 'GET_NEXT' then
4534 v_sql_stmnt := v_sql_stmnt || ' where start_date = (select min(start_date) from '
4535 || v_table_name || ' where ''' ||v_date|| ''' < start_date) ';
4536 v_bind_count := v_bind_count + 1;
4537 v_bind_sql := v_bind_sql || ' where start_date = (select min(start_date) from '
4538 || v_table_name || ' where :' ||v_bind_count|| ' < start_date) ';
4539 v_bind_variables := v_bind_variables||'~'||v_date;
4540 else
4541
4542 if (upper(nvl(p_parameter_description, G_ALL)) <> upper(G_ALL) AND trim(p_parameter_description) <> '%') then
4543 if p_sql_type = 'VALIDATE_ID' then
4544 v_sql_stmnt := v_sql_stmnt || ' where ' || v_id_name || '=''' || p_parameter_description || '''';
4545 v_bind_count := v_bind_count + 1;
4546 v_bind_sql := v_bind_sql || ' where ' || v_id_name || '= :' || v_bind_count;
4547 v_bind_variables := v_bind_variables||'~'||p_parameter_description;
4548 else
4549 if p_sql_type = 'LOV' then
4550 v_sql_stmnt := v_sql_stmnt ||' where lower('||v_value_name||') like ';
4551 v_bind_sql := v_bind_sql ||' where lower('||v_value_name||') like ';
4552 /*
4553 elsif p_parameter_description = G_ALL then
4554 v_sql_stmnt := v_sql_stmnt ||' where '||v_value_name||' like ';
4555 v_bind_sql := v_bind_sql ||' where '||v_value_name||' like ';
4556 */
4557
4558 else
4559 v_sql_stmnt := v_sql_stmnt ||' where '||v_value_name||' = ';
4560 v_bind_sql := v_bind_sql ||' where '||v_value_name||' = ';
4561 end if;
4562 /*
4563 if p_parameter_description = G_ALL then
4564 v_sql_stmnt := v_sql_stmnt||'''%''';
4565 v_bind_count := v_bind_count + 1;
4566 v_bind_sql := v_bind_sql||':'||v_bind_count;
4567 v_bind_variables := v_bind_variables || '~%';
4568 else
4569 */
4570 if p_sql_type = 'LOV' then
4571 v_sql_stmnt := v_sql_stmnt||'''%'||replace(lower(p_parameter_description),'''','''''')||'%''';
4572 v_bind_count := v_bind_count + 1;
4573 v_bind_sql := v_bind_sql||':'||v_bind_count;
4574 v_bind_variables := v_bind_variables||'~%'||lower(p_parameter_description)||'%'; --rcmuthuk: Prepend % before parameter
4575 else
4576 v_sql_stmnt := v_sql_stmnt||''''||replace(p_parameter_description,'''','''''')||'''';
4577 v_bind_count := v_bind_count + 1;
4578 v_bind_sql := v_bind_sql||':'||v_bind_count;
4579 v_bind_variables := v_bind_variables||'~'||p_parameter_description;
4580 end if;
4581 --end if;
4582 end if; -- end of validate_id
4583 end if; --end of if not all
4584
4585 if rtrim(ltrim(vEdwDimensionLevel)) <> 'EDW_TIME_A' then
4586 v_sql_stmnt := v_sql_stmnt||' order by start_date';
4587 v_bind_sql := v_bind_sql||' order by start_date';
4588 end if;
4589 end if;
4590
4591 x_sql_statement := v_sql_stmnt;
4592 x_bind_sql := v_bind_sql;
4593 x_bind_variables := v_bind_variables;
4594 x_bind_count := v_bind_count;
4595
4596 else
4597
4598
4599 --aleung, 4/16/2001, check to see if user has defined the LOV Table in AK
4600 if v_level_values_view_name is not null then
4601 v_sql_stmnt := 'select '||v_id_name||', '||v_value_name||', start_date, end_date from '||
4602 v_level_values_view_name;
4603 v_table_name := v_level_values_view_name;
4604 else
4605 BIS_PMF_GET_DIMLEVELS_PUB.GET_DIMLEVEL_SELECT_STRING(
4606 p_DimLevelShortName => vDimensionLevel
4607 ,p_bis_source => 'OLTP'
4608 ,x_Select_String => v_sql_stmnt
4609 ,x_table_name=> v_table_name
4610 ,x_id_name=> v_id_name
4611 ,x_value_name=> v_value_name
4612 ,x_return_status=> v_return_status
4613 ,x_msg_count=> v_msg_count
4614 ,x_msg_data=> v_msg_data
4615 );
4616
4617 if v_return_status = FND_API.G_RET_STS_ERROR then
4618 for i in 1..v_msg_count loop
4619 htp.print(fnd_msg_pub.get(p_msg_index=>i, p_encoded=>FND_API.G_FALSE));
4620 end loop;
4621 end if;
4622 end if;
4623
4624 v_bind_sql := v_sql_stmnt;
4625
4626 if p_sql_type = 'GET_CURRENT' then
4627 v_sql_stmnt := v_sql_stmnt || ' where ''' ||v_date||''' between start_date and end_date ';
4628 v_bind_count := v_bind_count + 1;
4629 v_bind_sql := v_bind_sql || ' where :'||v_bind_count||' between start_date and end_date ';
4630 v_bind_variables := v_bind_variables||'~'||v_date;
4631 elsif p_sql_type = 'GET_PREVIOUS' then
4632 v_sql_stmnt := v_sql_stmnt || ' where end_date = (select max(end_date) from '
4633 || v_table_name || ' where ''' ||v_date|| ''' > end_date) ';
4634 v_bind_count := v_bind_count + 1;
4635 v_bind_sql := v_bind_sql || ' where end_date = (select max(end_date) from '
4636 || v_table_name || ' where :' ||v_bind_count|| ' > end_date) ';
4637 v_bind_variables := v_bind_variables||'~'||v_date;
4638 elsif p_sql_type = 'GET_NEXT' then
4639 v_sql_stmnt := v_sql_stmnt || ' where start_date = (select min(start_date) from '
4640 || v_table_name || ' where ''' ||v_date|| ''' < start_date) ';
4641 v_bind_count := v_bind_count + 1;
4642 v_bind_sql := v_bind_sql || ' where start_date = (select min(start_date) from '
4643 || v_table_name || ' where :' ||v_bind_count|| ' < start_date) ';
4644 v_bind_variables := v_bind_variables||'~'||v_date;
4645 else
4646 if (upper(nvl(p_parameter_description, G_ALL)) <> upper(G_ALL) AND trim(p_parameter_description) <> '%') then
4647 if p_sql_type = 'VALIDATE_ID' then
4648 v_sql_stmnt := v_sql_stmnt || ' where ' || v_id_name || '=''' || p_parameter_description || '''';
4649 v_bind_count := v_bind_count + 1;
4650 v_bind_sql := v_bind_sql || ' where ' || v_id_name || '= :' || v_bind_count;
4651 v_bind_variables := v_bind_variables||'~'||p_parameter_description;
4652 else
4653 if p_sql_type = 'LOV' then
4654 v_sql_stmnt := v_sql_stmnt ||' where lower('||v_value_name||') like ';
4655 v_bind_sql := v_bind_sql ||' where lower('||v_value_name||') like ';
4656 /*
4657 elsif p_parameter_description = G_ALL then
4658 v_sql_stmnt := v_sql_stmnt ||' where '||v_value_name||' like ';
4659 v_bind_sql := v_bind_sql ||' where '||v_value_name||' like ';
4660 */
4661 else
4662 v_sql_stmnt := v_sql_stmnt ||' where '||v_value_name||' = ';
4663 v_bind_sql := v_bind_sql ||' where '||v_value_name||' = ';
4664 end if;
4665
4666 /*
4667 -- remove upper() to fix LOV error when value does not exist (aleung, 9/19/2000)
4668 -- if upper(p_parameter_description) = G_ALL then
4669 if p_parameter_description = G_ALL then
4670 v_sql_stmnt := v_sql_stmnt||'''%''';
4671 v_bind_count := v_bind_count + 1;
4672 v_bind_sql := v_bind_sql||':'||v_bind_count;
4673 v_bind_variables := v_bind_variables || '~%';
4674 else
4675 */
4676 if p_sql_type = 'LOV' then
4677 v_sql_stmnt := v_sql_stmnt||''''||replace(lower(p_parameter_description),'''','''''')||'%''';
4678 v_bind_count := v_bind_count + 1;
4679 v_bind_sql := v_bind_sql||':'||v_bind_count;
4680 v_bind_variables := v_bind_variables||'~'||lower(p_parameter_description)||'%';
4681 else
4682 v_sql_stmnt := v_sql_stmnt||''''||replace(p_parameter_description,'''','''''')||'''';
4683 v_bind_count := v_bind_count + 1;
4684 v_bind_sql := v_bind_sql||':'||v_bind_count;
4685 v_bind_variables := v_bind_variables||'~'||p_parameter_description;
4686 end if;
4687 --end if;
4688 end if; -- end of validate_id case
4689 else
4690 v_sql_stmnt := v_sql_stmnt || ' where 1=1 ';
4691 v_bind_sql := v_bind_sql || ' where 1=1 ';
4692 end if; -- end of if not all
4693
4694 -- aleung, 5/11/01, no organization dependency for OLTP dimension level starts with HR
4695 if vDimensionLevel in ('MONTH','QUARTER','YEAR','TOTAL_TIME') then
4696 --and SUBSTR(vDimensionLevel, 1, 2) <> 'HR' and substr(vAttributeName,1,2) <> 'HR' then
4697
4698 if upper(nvl(p_org_value, G_ALL)) <> upper(G_ALL) then
4699 vAttributeName := substr(p_org_name, instr(p_org_name, '+')+1);
4700 GET_NONTIME_VALIDATED_VALUE (p_parameter_name => p_org_name
4701 ,p_parameter_description => p_org_value
4702 ,p_region_code => p_Region_Code
4703 ,p_responsibility_id => p_responsibility_id
4704 ,x_parameter_value => vorgId
4705 ,x_return_status => x_return_status
4706 ,x_msg_count => x_msg_count
4707 ,x_msg_data => x_msg_data);
4708 else
4709 vAttributeName := 'TOTAL_ORGANIZATIONS';
4710 vOrgId := '''-1''';
4711 end if;
4712
4713 if instr(vOrgId,''',''') > 0 then
4714 v_sql_stmnt := v_sql_stmnt || ' and organization_id in ('||vOrgId||')';
4715 v_bind_sql := v_bind_sql || ' and organization_id in ('||vOrgId||')';
4716 else
4717 v_sql_stmnt := v_sql_stmnt || ' and organization_id = ' || vOrgId;
4718 v_bind_count := v_bind_count + 1;
4719 v_bind_sql := v_bind_sql || ' and organization_id = :' || v_bind_count;
4720 v_bind_variables := v_bind_variables || '~' || vOrgId;
4721 end if;
4722 v_sql_stmnt := v_sql_stmnt || ' and organization_type = ' || '''' || vAttributeName ||'''';
4723 v_bind_count := v_bind_count + 1;
4724 v_bind_sql := v_bind_sql || ' and organization_type = :' || v_bind_count;
4725 v_bind_variables := v_bind_variables || '~' || vAttributeName;
4726 end if;
4727
4728 if p_sql_type <> 'VALIDATE_ID' then
4729 v_sql_stmnt := v_sql_stmnt||' order by start_date';
4730 v_bind_sql := v_bind_sql||' order by start_date';
4731 end if;
4732
4733 end if;
4734
4735 x_sql_statement := v_sql_stmnt;
4736 x_bind_sql := v_bind_sql;
4737 x_bind_variables := v_bind_variables;
4738 x_bind_count := v_bind_count;
4739
4740 end if;
4741
4742 EXCEPTION
4743 WHEN FND_API.G_EXC_ERROR THEN
4744 x_return_status := FND_API.G_RET_STS_ERROR;
4745 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4746 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4747 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4748 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4749 WHEN OTHERS THEN
4750 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4751 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
4752 END getTimeLovSql;
4753
4754 procedure saveParameters
4755 (pRegionCode in varchar2,
4756 pFunctionName in varchar2,
4757 pPageId in Varchar2 default null,
4758 pSessionId in Varchar2 default null,
4759 pUserId in Varchar2 default null,
4760 pResponsibilityId in Varchar2 default null,
4761 pApplicationId in varchar2 default null,
4762 pOrgParam in number default 0,
4763 pHierarchy1 in varchar2 default null,
4764 pHierarchy2 in varchar2 default null,
4765 pHierarchy3 in varchar2 default null,
4766 pHierarchy4 in varchar2 default null,
4767 pHierarchy5 in varchar2 default null,
4768 pHierarchy6 in varchar2 default null,
4769 pHierarchy7 in varchar2 default null,
4770 pHierarchy8 in varchar2 default null,
4771 pHierarchy9 in varchar2 default null,
4772 pHierarchy10 in varchar2 default null,
4773 pHierarchy11 in varchar2 default null,
4774 pHierarchy12 in varchar2 default null,
4775 pHierarchy13 in varchar2 default null,
4776 pHierarchy14 in varchar2 default null,
4777 pHierarchy15 in varchar2 default null,
4778 pParameter1 in varchar2 default null,
4779 pParameterValue1 in varchar2 default null,
4780 pParameter2 in varchar2 default null,
4781 pParameterValue2 in varchar2 default null,
4782 pParameter3 in varchar2 default null,
4783 pParameterValue3 in varchar2 default null,
4784 pParameter4 in varchar2 default null,
4785 pParameterValue4 in varchar2 default null,
4786 pParameter5 in varchar2 default null,
4787 pParameterValue5 in varchar2 default null,
4788 pParameter6 in varchar2 default null,
4789 pParameterValue6 in varchar2 default null,
4790 pParameter7 in varchar2 default null,
4791 pParameterValue7 in varchar2 default null,
4792 pParameter8 in varchar2 default null,
4793 pParameterValue8 in varchar2 default null,
4794 pParameter9 in varchar2 default null,
4795 pParameterValue9 in varchar2 default null,
4796 pParameter10 in varchar2 default null,
4797 pParameterValue10 in varchar2 default null,
4798 pParameter11 in varchar2 default null,
4799 pParameterValue11 in varchar2 default null,
4800 pParameter12 in varchar2 default null,
4801 pParameterValue12 in varchar2 default null,
4802 pParameter13 in varchar2 default null,
4803 pParameterValue13 in varchar2 default null,
4804 pParameter14 in varchar2 default null,
4805 pParameterValue14 in varchar2 default null,
4806 pParameter15 in varchar2 default null,
4807 pParameterValue15 in varchar2 default null,
4808 pTimeParameter in varchar2 default null,
4809 pTimeFromParameter in varchar2 default null,
4810 pTimeToParameter in varchar2 default null,
4811 pViewByValue in varchar2 default null,
4812 pAddToDefault in varchar2 default null,
4813 pParameter1Name in varchar2 default null,
4814 pParameter2Name in varchar2 default null,
4815 pParameter3Name in varchar2 default null,
4816 pParameter4Name in varchar2 default null,
4817 pParameter5Name in varchar2 default null,
4818 pParameter6Name in varchar2 default null,
4819 pParameter7Name in varchar2 default null,
4820 pParameter8Name in varchar2 default null,
4821 pParameter9Name in varchar2 default null,
4822 pParameter10Name in varchar2 default null,
4823 pParameter11Name in varchar2 default null,
4824 pParameter12Name in varchar2 default null,
4825 pParameter13Name in varchar2 default null,
4826 pParameter14Name in varchar2 default null,
4827 pParameter15Name in varchar2 default null,
4828 pTimeParamName in varchar2 default null,
4829 pParameterOperator1 in varchar2 default null,
4830 pParameterOperator2 in varchar2 default null,
4831 pParameterOperator3 in varchar2 default null,
4832 pParameterOperator4 in varchar2 default null,
4833 pParameterOperator5 in varchar2 default null,
4834 pParameterOperator6 in varchar2 default null,
4835 pParameterOperator7 in varchar2 default null,
4836 pParameterOperator8 in varchar2 default null,
4837 pParameterOperator9 in varchar2 default null,
4838 pParameterOperator10 in varchar2 default null,
4839 pParameterOperator11 in varchar2 default null,
4840 pParameterOperator12 in varchar2 default null,
4841 pParameterOperator13 in varchar2 default null,
4842 pParameterOperator14 in varchar2 default null,
4843 pParameterOperator15 in varchar2 default null,
4844 pRequired1 in varchar2 default null,
4845 pRequired2 in varchar2 default null,
4846 pRequired3 in varchar2 default null,
4847 pRequired4 in varchar2 default null,
4848 pRequired5 in varchar2 default null,
4849 pRequired6 in varchar2 default null,
4850 pRequired7 in varchar2 default null,
4851 pRequired8 in varchar2 default null,
4852 pRequired9 in varchar2 default null,
4853 pRequired10 in varchar2 default null,
4854 pRequired11 in varchar2 default null,
4855 pRequired12 in varchar2 default null,
4856 pRequired13 in varchar2 default null,
4857 pRequired14 in varchar2 default null,
4858 pRequired15 in varchar2 default null,
4859 pTimeRequired in varchar2 default null,
4860 pLovWhere1 in varchar2 default null,
4861 pLovWhere2 in varchar2 default null,
4862 pLovWhere3 in varchar2 default null,
4863 pLovWhere4 in varchar2 default null,
4864 pLovWhere5 in varchar2 default null,
4865 pLovWhere6 in varchar2 default null,
4866 pLovWhere7 in varchar2 default null,
4867 pLovWhere8 in varchar2 default null,
4868 pLovWhere9 in varchar2 default null,
4869 pLovWhere10 in varchar2 default null,
4870 pLovWhere11 in varchar2 default null,
4871 pLovWhere12 in varchar2 default null,
4872 pLovWhere13 in varchar2 default null,
4873 pLovWhere14 in varchar2 default null,
4874 pLovWhere15 in varchar2 default null,
4875 pAsOfDateValue in varchar2 default null,
4876 pAsOfDateMode in varchar2 default null,
4877 pSaveByIds in varchar2 default 'N',
4878 x_return_status out NOCOPY VARCHAR2,
4879 x_msg_count out NOCOPY NUMBER,
4880 x_msg_data OUT NOCOPY VARCHAR2
4881 )
4882 IS
4883
4884 l_parameter_rec BIS_PMV_PARAMETERS_PVT.PARAMETER_REC_TYPE;
4885 l_parameter_Rec_tbl BIS_PMV_PARAMETERS_PVT.parameter_tbl_type;
4886 l_user_Session_rec BIS_PMV_SESSION_PVT.session_rec_type;
4887 l_time_parameter_rec BIS_PMV_PARAMETERS_PVT.TIME_PARAMETER_REC_TYPE;
4888 l_count NUMBER;
4889 l_asof_Date DATE;
4890 --l_Start_Date DATE;
4891 --l_End_date DATE;
4892 l_time_level_id VARCHAR2(2000);
4893 l_time_level_value VARCHAR2(2000);
4894 l_time_comparison_type VARCHAR2(2000) := null;
4895 l_time_comp_const VARCHAR2(200) := 'TIME_COMPARISON_TYPE';
4896 --l_current_report_start_date date;
4897 --l_prev_report_start_Date date;
4898
4899 lAsOfDateValue varchar2(2000);
4900 l_date_format varchar2(30) := 'DD-MM-RRRR';
4901 l_canonical_date_format varchar2(30) := 'DD/MM/RRRR';
4902
4903 /*-----BugFix#2887200 -ansingh-------*/
4904 l_prev_asof_Date DATE;
4905 l_curr_effective_start_date DATE;
4906 l_curr_effective_end_date DATE;
4907 l_curr_report_Start_date DATE;
4908 l_prev_report_Start_date DATE;
4909 l_prev_effective_start_date DATE;
4910 l_prev_effective_end_date DATE;
4911 l_prev_time_level_id VARCHAR2(2000);
4912 l_prev_time_level_value VARCHAR2(2000);
4913
4914 BEGIN
4915 --First delete all the parameters for this session.
4916 FND_MSG_PUB.INITIALIZE;
4917 l_user_session_rec.function_name := pFunctionNAme;
4918 l_user_session_rec.region_code := pRegionCode;
4919 l_user_session_rec.page_id := pPageId;
4920 l_user_session_rec.session_id := pSessionId;
4921 l_user_Session_rec.user_id := pUserId;
4922 l_user_session_rec.responsibility_id := pResponsibilityId;
4923
4924 IF (pAddToDefault = 'Y') THEN
4925 delete_default_parameters(
4926 p_user_session_rec => l_user_session_rec,
4927 x_msg_count => x_msg_count,
4928 x_msg_data => x_msg_data,
4929 x_return_status => x_return_status
4930 );
4931 ELSE
4932 IF pPageId IS NULL OR pPageId = '' THEN
4933 delete_session_parameters(
4934 p_user_session_rec => l_user_session_Rec,
4935 p_schedule_option => 'NULL',
4936 x_msg_count => x_msg_count,
4937 x_msg_data => x_msg_data,
4938 x_return_status => x_return_status
4939 );
4940 ELSE
4941 delete_page_parameters(
4942 p_user_session_rec => l_user_session_rec,
4943 x_msg_count => x_msg_count,
4944 x_msg_data => x_msg_data,
4945 x_return_status => x_return_status
4946 );
4947 END IF;
4948 END IF;
4949
4950 commit;
4951
4952
4953 if (pParameter1Name = ROLLING_DIMENSION_DESCRIPTION) THEN
4954 l_parameter_rec.parameter_description := pParameter1Name;
4955 l_parameter_rec.parameter_value := pParameterValue1;
4956 ELSE
4957 l_parameter_rec.parameter_description := pParameterValue1;
4958 END IF;
4959
4960 l_parameter_rec.parameter_name := pParameter1;
4961 l_parameter_rec.default_flag := pAddToDefault;
4962 l_parameter_rec.dimension := substr(pParameter1,1, instr(pParameter1,'+')-1);
4963 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
4964 l_time_comparison_type := l_parameter_rec.parameter_description;
4965 end if;
4966 l_parameter_Rec.parameter_label := pParameter1Name;
4967 l_parameter_rec.operator := pParameterOperator1;
4968 l_parameter_rec.required_flag := pRequired1;
4969 l_parameter_rec.lov_where := pLovWhere1;
4970 l_parameter_rec.id_flag := pSaveByIds;
4971 l_parameter_rec_tbl(1) := l_parameter_rec;
4972
4973 if (pParameter2Name = ROLLING_DIMENSION_DESCRIPTION) THEN
4974 l_parameter_rec.parameter_description := pParameter2Name;
4975 l_parameter_rec.parameter_value := pParameterValue2;
4976 ELSE
4977 l_parameter_rec.parameter_description := pParameterValue2;
4978 END IF;
4979
4980 l_parameter_rec.parameter_name := pParameter2;
4981 l_parameter_rec.default_flag := pAddToDefault;
4982 l_parameter_rec.dimension := substr(pParameter2,1, instr(pParameter2,'+')-1);
4983 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
4984 l_time_comparison_type := l_parameter_rec.parameter_description;
4985 end if;
4986 l_parameter_Rec.parameter_label := pParameter2Name;
4987 l_parameter_rec.operator := pParameterOperator2;
4988 l_parameter_rec.required_flag := pRequired2;
4989 l_parameter_rec.lov_where := pLovWhere2;
4990 l_parameter_rec.id_flag := pSaveByIds;
4991 l_parameter_rec_tbl(2) := l_parameter_rec;
4992
4993 if (pParameter3Name = ROLLING_DIMENSION_DESCRIPTION) THEN
4994 l_parameter_rec.parameter_description := pParameter3Name;
4995 l_parameter_rec.parameter_value := pParameterValue3;
4996 ELSE
4997 l_parameter_rec.parameter_description := pParameterValue3;
4998 END IF;
4999
5000 l_parameter_rec.parameter_name := pParameter3;
5001 l_parameter_rec.default_flag := pAddToDefault;
5002 l_parameter_rec.dimension := substr(pParameter3,1, instr(pParameter3,'+')-1);
5003 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5004 l_time_comparison_type := l_parameter_rec.parameter_description;
5005 end if;
5006 l_parameter_Rec.parameter_label := pParameter3Name;
5007 l_parameter_rec.operator := pParameterOperator3;
5008 l_parameter_rec.required_flag := pRequired3;
5009 l_parameter_rec.lov_where := pLovWhere3;
5010 l_parameter_rec.id_flag := pSaveByIds;
5011 l_parameter_rec_tbl(3) := l_parameter_rec;
5012
5013 if (pParameter4Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5014 l_parameter_rec.parameter_description := pParameter4Name;
5015 l_parameter_rec.parameter_value := pParameterValue4;
5016 ELSE
5017 l_parameter_rec.parameter_description := pParameterValue4;
5018 END IF;
5019
5020 l_parameter_rec.parameter_name := pParameter4;
5021 l_parameter_rec.default_flag := pAddToDefault;
5022 l_parameter_rec.dimension := substr(pParameter4,1, instr(pParameter4,'+')-1);
5023 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5024 l_time_comparison_type := l_parameter_rec.parameter_description;
5025 end if;
5026 l_parameter_Rec.parameter_label := pParameter4Name;
5027 l_parameter_rec.operator := pParameterOperator4;
5028 l_parameter_rec.required_flag := pRequired4;
5029 l_parameter_rec.lov_where := pLovWhere4;
5030 l_parameter_rec.id_flag := pSaveByIds;
5031 l_parameter_rec_tbl(4) := l_parameter_rec;
5032
5033 if (pParameter5Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5034 l_parameter_rec.parameter_description := pParameter5Name;
5035 l_parameter_rec.parameter_value := pParameterValue5;
5036 ELSE
5037 l_parameter_rec.parameter_description := pParameterValue5;
5038 END IF;
5039
5040 l_parameter_rec.parameter_name := pParameter5;
5041 l_parameter_rec.default_flag := pAddToDefault;
5042 l_parameter_rec.dimension := substr(pParameter5,1, instr(pParameter5,'+')-1);
5043 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5044 l_time_comparison_type := l_parameter_rec.parameter_description;
5045 end if;
5046 l_parameter_Rec.parameter_label := pParameter5Name;
5047 l_parameter_rec.operator := pParameterOperator5;
5048 l_parameter_rec.required_flag := pRequired5;
5049 l_parameter_rec.lov_where := pLovWhere5;
5050 l_parameter_rec.id_flag := pSaveByIds;
5051 l_parameter_rec_tbl(5) := l_parameter_rec;
5052
5053 if (pParameter6Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5054 l_parameter_rec.parameter_description := pParameter6Name;
5055 l_parameter_rec.parameter_value := pParameterValue6;
5056 ELSE
5057 l_parameter_rec.parameter_description := pParameterValue6;
5058 END IF;
5059
5060 l_parameter_rec.parameter_name := pParameter6;
5061 l_parameter_rec.default_flag := pAddToDefault;
5062 l_parameter_rec.dimension := substr(pParameter6,1, instr(pParameter6,'+')-1);
5063 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5064 l_time_comparison_type := l_parameter_rec.parameter_description;
5065 end if;
5066 l_parameter_Rec.parameter_label := pParameter6Name;
5067 l_parameter_rec.operator := pParameterOperator6;
5068 l_parameter_rec.required_flag := pRequired6;
5069 l_parameter_rec.lov_where := pLovWhere6;
5070 l_parameter_rec.id_flag := pSaveByIds;
5071 l_parameter_rec_tbl(6) := l_parameter_rec;
5072
5073 if (pParameter7Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5074 l_parameter_rec.parameter_description := pParameter7Name;
5075 l_parameter_rec.parameter_value := pParameterValue7;
5076 ELSE
5077 l_parameter_rec.parameter_description := pParameterValue7;
5078 END IF;
5079 l_parameter_rec.parameter_name := pParameter7;
5080 l_parameter_rec.default_flag := pAddToDefault;
5081 l_parameter_rec.dimension := substr(pParameter7,1, instr(pParameter7,'+')-1);
5082 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5083 l_time_comparison_type := l_parameter_rec.parameter_description;
5084 end if;
5085 l_parameter_Rec.parameter_label := pParameter7Name;
5086 l_parameter_rec.operator := pParameterOperator7;
5087 l_parameter_rec.required_flag := pRequired7;
5088 l_parameter_rec.lov_where := pLovWhere7;
5089 l_parameter_rec.id_flag := pSaveByIds;
5090 l_parameter_rec_tbl(7) := l_parameter_rec;
5091
5092 if (pParameter8Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5093 l_parameter_rec.parameter_description := pParameter8Name;
5094 l_parameter_rec.parameter_value := pParameterValue8;
5095 ELSE
5096 l_parameter_rec.parameter_description := pParameterValue8;
5097 END IF;
5098
5099 l_parameter_rec.parameter_name := pParameter8;
5100 l_parameter_rec.default_flag := pAddToDefault;
5101 l_parameter_Rec.parameter_label := pParameter8Name;
5102 l_parameter_rec.dimension := substr(pParameter8,1, instr(pParameter8,'+')-1);
5103 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5104 l_time_comparison_type := l_parameter_rec.parameter_description;
5105 end if;
5106 l_parameter_rec.operator := pParameterOperator8;
5107 l_parameter_rec.required_flag := pRequired8;
5108 l_parameter_rec.lov_where := pLovWhere8;
5109 l_parameter_rec.id_flag := pSaveByIds;
5110 l_parameter_rec_tbl(8) := l_parameter_rec;
5111
5112 if (pParameter9Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5113 l_parameter_rec.parameter_description := pParameter9Name;
5114 l_parameter_rec.parameter_value := pParameterValue9;
5115 ELSE
5116 l_parameter_rec.parameter_description := pParameterValue9;
5117 END IF;
5118 l_parameter_rec.parameter_name := pParameter9;
5119 l_parameter_rec.default_flag := pAddToDefault;
5120 l_parameter_rec.dimension := substr(pParameter9,1, instr(pParameter9,'+')-1);
5121 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5122 l_time_comparison_type := l_parameter_rec.parameter_description;
5123 end if;
5124 l_parameter_Rec.parameter_label := pParameter9Name;
5125 l_parameter_rec.operator := pParameterOperator9;
5126 l_parameter_rec.required_flag := pRequired9;
5127 l_parameter_rec.lov_where := pLovWhere9;
5128 l_parameter_rec.id_flag := pSaveByIds;
5129 l_parameter_rec_tbl(9) := l_parameter_rec;
5130
5131 if (pParameter10Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5132 l_parameter_rec.parameter_description := pParameter10Name;
5133 l_parameter_rec.parameter_value := pParameterValue10;
5134 ELSE
5135 l_parameter_rec.parameter_description := pParameterValue10;
5136 END IF;
5137 l_parameter_rec.parameter_name := pParameter10;
5138 l_parameter_rec.default_flag := pAddToDefault;
5139 l_parameter_rec.dimension := substr(pParameter10,1, instr(pParameter10,'+')-1);
5140 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5141 l_time_comparison_type := l_parameter_rec.parameter_description;
5142 end if;
5143 l_parameter_Rec.parameter_label := pParameter10Name;
5144 l_parameter_rec.operator := pParameterOperator10;
5145 l_parameter_rec.required_flag := pRequired10;
5146 l_parameter_rec.lov_where := pLovWhere10;
5147 l_parameter_rec.id_flag := pSaveByIds;
5148 l_parameter_rec_tbl(10) := l_parameter_rec;
5149
5150 if (pParameter11Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5151 l_parameter_rec.parameter_description := pParameter11Name;
5152 l_parameter_rec.parameter_value := pParameterValue11;
5153 ELSE
5154 l_parameter_rec.parameter_description := pParameterValue11;
5155 END IF;
5156 l_parameter_rec.parameter_name := pParameter11;
5157 l_parameter_rec.default_flag := pAddToDefault;
5158 l_parameter_Rec.parameter_label := pParameter11Name;
5159 l_parameter_rec.dimension := substr(pParameter11,1, instr(pParameter11,'+')-1);
5160 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5161 l_time_comparison_type := l_parameter_rec.parameter_description;
5162 end if;
5163 l_parameter_rec.operator := pParameterOperator11;
5164 l_parameter_rec.required_flag := pRequired11;
5165 l_parameter_rec.lov_where := pLovWhere11;
5166 l_parameter_rec.id_flag := pSaveByIds;
5167 l_parameter_rec_tbl(11) := l_parameter_rec;
5168
5169 if (pParameter12Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5170 l_parameter_rec.parameter_description := pParameter12Name;
5171 l_parameter_rec.parameter_value := pParameterValue12;
5172 ELSE
5173 l_parameter_rec.parameter_description := pParameterValue12;
5174 END IF;
5175 l_parameter_rec.parameter_name := pParameter12;
5176 l_parameter_rec.default_flag := pAddToDefault;
5177 l_parameter_rec.dimension := substr(pParameter12,1, instr(pParameter12,'+')-1);
5178 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5179 l_time_comparison_type := l_parameter_rec.parameter_description;
5180 end if;
5181 l_parameter_Rec.parameter_label := pParameter12Name;
5182 l_parameter_rec.operator := pParameterOperator12;
5183 l_parameter_rec.required_flag := pRequired12;
5184 l_parameter_rec.lov_where := pLovWhere12;
5185 l_parameter_rec.id_flag := pSaveByIds;
5186 l_parameter_rec_tbl(12) := l_parameter_rec;
5187
5188 if (pParameter13Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5189 l_parameter_rec.parameter_description := pParameter13Name;
5190 l_parameter_rec.parameter_value := pParameterValue13;
5191 ELSE
5192 l_parameter_rec.parameter_description := pParameterValue13;
5193 END IF;
5194 l_parameter_rec.parameter_name := pParameter13;
5195 l_parameter_rec.default_flag := pAddToDefault;
5196 l_parameter_rec.dimension := substr(pParameter13,1, instr(pParameter13,'+')-1);
5197 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5198 l_time_comparison_type := l_parameter_rec.parameter_description;
5199 end if;
5200 l_parameter_Rec.parameter_label := pParameter13Name;
5201 l_parameter_rec.operator := pParameterOperator13;
5202 l_parameter_rec.required_flag := pRequired13;
5203 l_parameter_rec.lov_where := pLovWhere13;
5204 l_parameter_rec.id_flag := pSaveByIds;
5205 l_parameter_rec_tbl(13) := l_parameter_rec;
5206
5207 if (pParameter14Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5208 l_parameter_rec.parameter_description := pParameter14Name;
5209 l_parameter_rec.parameter_value := pParameterValue14;
5210 ELSE
5211 l_parameter_rec.parameter_description := pParameterValue14;
5212 END IF;
5213 l_parameter_rec.parameter_name := pParameter14;
5214 l_parameter_rec.dimension := substr(pParameter14,1, instr(pParameter14,'+')-1);
5215 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5216 l_time_comparison_type := l_parameter_rec.parameter_description;
5217 end if;
5218 l_parameter_rec.default_flag := pAddToDefault;
5219 l_parameter_Rec.parameter_label := pParameter14Name;
5220 l_parameter_rec.operator := pParameterOperator14;
5221 l_parameter_rec.required_flag := pRequired14;
5222 l_parameter_rec.lov_where := pLovWhere14;
5223 l_parameter_rec.id_flag := pSaveByIds;
5224 l_parameter_rec_tbl(14) := l_parameter_rec;
5225
5226 if (pParameter15Name = ROLLING_DIMENSION_DESCRIPTION) THEN
5227 l_parameter_rec.parameter_description := pParameter15Name;
5228 l_parameter_rec.parameter_value := pParameterValue15;
5229 ELSE
5230 l_parameter_rec.parameter_description := pParameterValue15;
5231 END IF;
5232 l_parameter_rec.parameter_name := pParameter15;
5233 l_parameter_rec.dimension := substr(pParameter15,1, instr(pParameter15,'+')-1);
5234 if(l_parameter_Rec.dimension = l_time_comp_const) THEN
5235 l_time_comparison_type := l_parameter_rec.parameter_description;
5236 end if;
5237 l_parameter_rec.default_flag := pAddToDefault;
5238 l_parameter_Rec.parameter_label := pParameter15Name;
5239 l_parameter_rec.operator := pParameterOperator15;
5240 l_parameter_rec.required_flag := pRequired15;
5241 l_parameter_rec.lov_where := pLovWhere15;
5242 l_parameter_rec.id_flag := pSaveByIds;
5243 l_parameter_rec_tbl(15) := l_parameter_rec;
5244
5245 l_count := 15;
5246 if (pHierarchy1 is not null) then
5247 l_Parameter_rec.parameter_name := pParameter1;
5248 l_parameter_rec.hierarchy_flag := 'Y';
5249 l_parameter_rec.parameter_value := pHierarchy1;
5250 l_parameter_rec.default_Flag := pAddToDefault;
5251 l_parameter_rec.dimension := substr(pParameter1,1,instr(pParameter1,'+')-1);
5252 l_parameter_rec.parameter_description := pParameterValue1;
5253 l_count := l_count+1;
5254 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5255 end if;
5256 if (pHierarchy2 is not null) then
5257 l_Parameter_rec.parameter_name := pParameter2;
5258 l_parameter_rec.hierarchy_flag := 'Y';
5259 l_parameter_rec.parameter_value := pHierarchy2;
5260 l_parameter_rec.default_Flag := pAddToDefault;
5261 l_parameter_rec.dimension := substr(pParameter2,1,instr(pParameter2,'+')-1);
5262 l_parameter_rec.parameter_description := pParameterValue2;
5263 l_count := l_count+1;
5264 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5265 end if;
5266
5267 if (pHierarchy3 is not null) then
5268 l_Parameter_rec.parameter_name := pParameter3;
5269 l_parameter_rec.hierarchy_flag := 'Y';
5270 l_parameter_rec.parameter_value := pHierarchy3;
5271 l_parameter_rec.default_Flag := pAddToDefault;
5272 l_parameter_rec.dimension := substr(pParameter3,1,instr(pParameter3,'+')-1);
5273 l_parameter_rec.parameter_description := pParameterValue3;
5274 l_count := l_count+1;
5275 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5276 end if;
5277 if (pHierarchy4 is not null) then
5278 l_Parameter_rec.parameter_name := pParameter4;
5279 l_parameter_rec.hierarchy_flag := 'Y';
5280 l_parameter_rec.parameter_value := pHierarchy4;
5281 l_parameter_rec.default_Flag := pAddToDefault;
5282 l_parameter_rec.dimension := substr(pParameter4,1,instr(pParameter4,'+')-1);
5283 l_parameter_rec.parameter_description := pParameterValue4;
5284 l_count := l_count+1;
5285 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5286 end if;
5287 if (pHierarchy5 is not null) then
5288 l_Parameter_rec.parameter_name := pParameter5;
5289 l_parameter_rec.hierarchy_flag := 'Y';
5290 l_parameter_rec.parameter_value := pHierarchy5;
5291 l_parameter_rec.default_Flag := pAddToDefault;
5292 l_parameter_rec.dimension := substr(pParameter5,1,instr(pParameter5,'+')-1);
5293 l_parameter_rec.parameter_description := pParameterValue5;
5294 l_count := l_count+1;
5295 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5296 end if;
5297 if (pHierarchy6 is not null) then
5298 l_Parameter_rec.parameter_name := pParameter6;
5299 l_parameter_rec.hierarchy_flag := 'Y';
5300 l_parameter_rec.parameter_value := pHierarchy6;
5301 l_parameter_rec.default_Flag := pAddToDefault;
5302 l_parameter_rec.dimension := substr(pParameter6,1,instr(pParameter6,'+')-1);
5303 l_parameter_rec.parameter_description := pParameterValue6;
5304 l_count := l_count+1;
5305 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5306 end if;
5307 if (pHierarchy7 is not null) then
5308 l_Parameter_rec.parameter_name := pParameter7;
5309 l_parameter_rec.hierarchy_flag := 'Y';
5310 l_parameter_rec.parameter_value := pHierarchy7;
5311 l_parameter_rec.default_Flag := pAddToDefault;
5312 l_parameter_rec.dimension := substr(pParameter7,1,instr(pParameter7,'+')-1);
5313 l_parameter_rec.parameter_description := pParameterValue7;
5314 l_count := l_count+1;
5315 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5316 end if;
5317 if (pHierarchy8 is not null) then
5318 l_Parameter_rec.parameter_name := pParameter8;
5319 l_parameter_rec.hierarchy_flag := 'Y';
5320 l_parameter_rec.default_Flag := pAddToDefault;
5321 l_parameter_rec.parameter_value := pHierarchy8;
5322 l_parameter_rec.dimension := substr(pParameter8,1,instr(pParameter8,'+')-1);
5323 l_parameter_rec.parameter_description := pParameterValue8;
5324 l_count := l_count+1;
5325 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5326 end if;
5327 if (pHierarchy9 is not null) then
5328 l_Parameter_rec.parameter_name := pParameter9;
5329 l_parameter_rec.hierarchy_flag := 'Y';
5330 l_parameter_rec.default_Flag := pAddToDefault;
5331 l_parameter_rec.parameter_value := pHierarchy9;
5332 l_parameter_rec.dimension := substr(pParameter9,1,instr(pParameter9,'+')-1);
5333 l_parameter_rec.parameter_description := pParameterValue9;
5334 l_count := l_count+1;
5335 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5336 end if;
5337 if (pHierarchy10 is not null) then
5338 l_Parameter_rec.parameter_name := pParameter10;
5339 l_parameter_rec.hierarchy_flag := 'Y';
5340 l_parameter_rec.parameter_value := pHierarchy10;
5341 l_parameter_rec.default_Flag := pAddToDefault;
5342 l_parameter_rec.dimension := substr(pParameter10,1,instr(pParameter10,'+')-1);
5343 l_parameter_rec.parameter_description := pParameterValue10;
5344 l_count := l_count+1;
5345 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5346 end if;
5347 if (pHierarchy11 is not null) then
5348 l_Parameter_rec.parameter_name := pParameter11;
5349 l_parameter_rec.hierarchy_flag := 'Y';
5350 l_parameter_rec.parameter_value := pHierarchy11;
5351 l_parameter_rec.default_Flag := pAddToDefault;
5352 l_parameter_rec.dimension := substr(pParameter11,1,instr(pParameter11,'+')-1);
5353 l_parameter_rec.parameter_description := pParameterValue11;
5354 l_count := l_count+1;
5355 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5356 end if;
5357 if (pHierarchy12 is not null) then
5358 l_Parameter_rec.parameter_name := pParameter12;
5359 l_parameter_rec.hierarchy_flag := 'Y';
5360 l_parameter_rec.parameter_value := pHierarchy12;
5361 l_parameter_rec.default_Flag := pAddToDefault;
5362 l_parameter_rec.dimension := substr(pParameter12,1,instr(pParameter12,'+')-1);
5363 l_parameter_rec.parameter_description := pParameterValue12;
5364 l_count := l_count+1;
5365 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5366 end if;
5367 if (pHierarchy13 is not null) then
5368 l_Parameter_rec.parameter_name := pParameter13;
5369 l_parameter_rec.hierarchy_flag := 'Y';
5370 l_parameter_rec.parameter_value := pHierarchy13;
5371 l_parameter_rec.default_Flag := pAddToDefault;
5372 l_parameter_rec.dimension := substr(pParameter13,1,instr(pParameter13,'+')-1);
5373 l_parameter_rec.parameter_description := pParameterValue13;
5374 l_count := l_count+1;
5375 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5376 end if;
5377 if (pHierarchy14 is not null) then
5378 l_Parameter_rec.parameter_name := pParameter14;
5379 l_parameter_rec.hierarchy_flag := 'Y';
5380 l_parameter_rec.default_Flag := pAddToDefault;
5381 l_parameter_rec.parameter_value := pHierarchy14;
5382 l_parameter_rec.dimension := substr(pParameter14,1,instr(pParameter14,'+')-1);
5383 l_parameter_rec.parameter_description := pParameterValue14;
5384 l_count := l_count+1;
5385 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5386 end if;
5387 if (pHierarchy15 is not null) then
5388 l_Parameter_rec.parameter_name := pParameter15;
5389 l_parameter_rec.hierarchy_flag := 'Y';
5390 l_parameter_rec.default_Flag := pAddToDefault;
5391 l_parameter_rec.parameter_value := pHierarchy15;
5392 l_parameter_rec.dimension := substr(pParameter15,1,instr(pParameter15,'+')-1);
5393 l_parameter_rec.parameter_description := pParameterValue15;
5394 l_count := l_count+1;
5395 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5396 end if;
5397 if (pViewByValue is not null) then
5398 l_parameter_rec.parameter_name := 'VIEW_BY';
5399 l_parameter_rec.parameter_description := pViewByValue;
5400 l_parameter_rec.default_Flag := pAddToDefault;
5401 l_parameter_rec.hierarchy_flag := 'N';
5402 l_count := l_count+1;
5403 l_parameter_rec_tbl(l_count) := l_parameter_rec;
5404 end if ;
5405
5406 create_Session_parameters(p_user_param_tbl => l_parameter_rec_tbl
5407 ,p_user_session_rec => l_user_session_rec
5408 ,x_return_Status => x_return_Status
5409 ,x_msg_count => x_msg_count
5410 ,x_msg_Data => x_msg_Data);
5411
5412 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5413 RETURN;
5414 END IF;
5415
5416
5417 IF (pTimeFromParameter = 'DBC_TIME' or pAsOfDateValue is not null) then
5418
5419 IF (pAsOfDateValue is null) then
5420 lAsOFDateValue := to_char(SYSDATE,'DD-MM-RRRR');
5421 ELSE
5422 lAsOFDateValue := pAsOfDateValue;
5423 END IF;
5424
5425 l_parameter_rec.parameter_name := 'AS_OF_DATE';
5426 -- nbarik - 03/17/03 - Bug Fix 2844149 - Added date format for to_date.
5427 IF (pAsOfDateMode = 'NEXT') then
5428 --l_asof_date := to_date(lAsOfDateValue, l_date_format)+1;
5429 --l_parameter_rec.parameter_description := to_char(l_asof_date,'DD-MON-YYYY');
5430 --l_parameter_rec.parameter_value := to_char(l_asof_date,'DD-MON-YYYY');
5431 l_asof_date := to_date(lAsOfDateValue, l_canonical_date_format)+1;
5432 l_parameter_rec.parameter_description := to_char(l_asof_date,l_canonical_date_format);
5433 l_parameter_rec.parameter_value := to_char(l_asof_date,l_canonical_date_format);
5434 l_parameter_rec.period_date := l_asof_date;
5435 ELSIF (pAsOFDateMode = 'PREVIOUS') then
5436 --l_asof_date := to_date(lAsOfDateValue, l_date_format)-1;
5437 --l_parameter_rec.parameter_description := to_char(l_asof_Date,'DD-MON-YYYY');
5438 --l_parameter_rec.parameter_value := to_char(l_asof_date,'DD-MON-YYYY');
5439 l_asof_date := to_date(lAsOfDateValue, l_canonical_date_format)-1;
5440 l_parameter_rec.parameter_description := to_char(l_asof_Date,l_canonical_date_format);
5441 l_parameter_rec.parameter_value := to_char(l_asof_date,l_canonical_date_format);
5442 l_parameter_rec.period_date := l_asof_date;
5443 ELSIF (pAsOfDateMode = 'CURRENT' or pAsOfDateMode is null) then
5444 --l_asof_Date := to_Date(lAsOfDateValue, l_date_format);
5445 --l_parameter_Rec.parameter_description := to_char(l_asof_date,'DD-MON-YYYY');
5446 --l_parameter_rec.parameter_value := to_char(l_asof_date,'DD-MON-YYYY');
5447
5448
5449 l_asof_Date := to_Date(lAsOfDateValue, l_canonical_date_format);
5450 l_parameter_rec.parameter_description := to_char(l_asof_Date,l_canonical_date_format);
5451 l_parameter_rec.parameter_value := to_char(l_asof_date,l_canonical_date_format);
5452 l_parameter_rec.period_date := l_asof_date;
5453 END IF;
5454 l_parameter_Rec.default_flag := 'N';
5455 l_parameter_rec.hierarchy_flag := 'N';
5456 CREATE_PARAMETER (p_user_session_rec => l_user_session_rec
5457 ,p_parameter_rec => l_parameter_rec
5458 ,x_return_status => x_return_status
5459 ,x_msg_count => x_msg_count
5460 ,x_msg_data => x_msg_data);
5461 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5462 RETURN;
5463 END IF;
5464 END IF;
5465
5466 IF (pTimeParameter IS NOT NULL) THEN
5467 IF (pTimeFromParameter = 'DBC_TIME') THEN
5468 /*-----BugFix#2887200 -ansingh-------*/
5469 --get all the date information.
5470 BIS_PMV_TIME_LEVELS_PVT.GET_COMPUTED_DATES(
5471 p_region_code => pregioncode,
5472 p_resp_id => presponsibilityid,
5473 p_time_comparison_type => l_time_comparison_Type,
5474 p_asof_date => to_char(l_Asof_date, 'DD/MM/YYYY'),
5475 p_time_level => pTimeParameter,
5476 x_prev_asof_Date => l_prev_asof_Date,
5477 x_curr_effective_start_date => l_curr_effective_start_date,
5478 x_curr_effective_end_date => l_curr_effective_end_date,
5479 x_curr_report_Start_date => l_curr_report_Start_date,
5480 x_prev_report_Start_date => l_prev_report_Start_date,
5481 x_time_level_id => l_time_level_id,
5482 x_time_level_value => l_time_level_value,
5483 x_prev_effective_start_date => l_prev_effective_start_date,
5484 x_prev_effective_end_date => l_prev_effective_end_date,
5485 x_prev_time_level_id => l_prev_time_level_id,
5486 x_prev_time_level_value => l_prev_time_level_value,
5487 x_return_status => x_return_status,
5488 x_msg_count => x_msg_count,
5489 x_msg_Data => x_msg_Data
5490 );
5491 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5492 RETURN;
5493 END IF;
5494
5495 l_parameter_rec.dimension := substr(pTimeParameter, 1, instr(pTimeParameter,'+')-1);
5496 l_parameter_rec.default_flag := 'N';
5497 l_parameter_rec.parameter_name := pTimeParameter || '_FROM';
5498 l_parameter_rec.parameter_description := l_time_level_Value;
5499 l_parameter_rec.period_date := l_curr_effective_start_date;
5500 l_parameter_Rec.parameter_Value := l_time_level_id;
5501 -- _FROM Record
5502 CREATE_PARAMETER (p_user_session_rec => l_user_session_rec
5503 ,p_parameter_rec => l_parameter_rec
5504 ,x_return_status => x_return_status
5505 ,x_msg_count => x_msg_count
5506 ,x_msg_data => x_msg_data);
5507
5508 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5509 RETURN;
5510 END IF;
5511
5512 l_parameter_rec.default_flag := 'N';
5513 l_parameter_rec.parameter_name := pTimeParameter || '_TO';
5514 l_parameter_rec.parameter_description := l_time_level_Value;
5515 l_parameter_rec.period_date := l_curr_effective_end_date;
5516 l_parameter_Rec.parameter_Value := l_time_level_id;
5517 -- _TO Record
5518 CREATE_PARAMETER (p_user_session_rec => l_user_session_rec
5519 ,p_parameter_rec => l_parameter_rec
5520 ,x_return_status => x_return_status
5521 ,x_msg_count => x_msg_count
5522 ,x_msg_data => x_msg_data);
5523
5524 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5525 RETURN;
5526 END IF;
5527
5528 --BIS_P_ASOF_DATE Record
5529 BIS_PMV_TIME_LEVELS_PVT.GET_TIME_PARAMETER_RECORD (
5530 p_TimeParamterName => 'BIS_P_ASOF_DATE',
5531 p_DateParameter => l_prev_asof_Date,
5532 x_parameterRecord => l_parameter_rec,
5533 x_Return_status => x_return_Status,
5534 x_msg_count => x_msg_count,
5535 x_msg_data => x_msg_data
5536 );
5537
5538 CREATE_PARAMETER ( p_user_session_rec => l_user_session_rec,
5539 p_parameter_rec => l_parameter_rec,
5540 x_return_status => x_return_status,
5541 x_msg_count => x_msg_count,
5542 x_msg_data => x_msg_data
5543 );
5544 --BIS_CUR_REPORT_START_DATE Record
5545 BIS_PMV_TIME_LEVELS_PVT.GET_TIME_PARAMETER_RECORD(
5546 p_TimeParamterName => 'BIS_CUR_REPORT_START_DATE',
5547 p_DateParameter => l_curr_report_Start_date,
5548 x_parameterRecord => l_parameter_rec,
5549 x_Return_status => x_return_Status,
5550 x_msg_count => x_msg_count,
5551 x_msg_data => x_msg_data
5552 );
5553 CREATE_PARAMETER ( p_user_session_rec => l_user_session_rec,
5554 p_parameter_rec => l_parameter_rec,
5555 x_return_status => x_return_status,
5556 x_msg_count => x_msg_count,
5557 x_msg_data => x_msg_data
5558 );
5559 --BIS_PREV_REPORT_START_DATE Record
5560 BIS_PMV_TIME_LEVELS_PVT.GET_TIME_PARAMETER_RECORD(
5561 p_TimeParamterName => 'BIS_PREV_REPORT_START_DATE',
5562 p_DateParameter => l_prev_report_Start_date,
5563 x_parameterRecord => l_parameter_rec,
5564 x_Return_status => x_return_Status,
5565 x_msg_count => x_msg_count,
5566 x_msg_data => x_msg_data
5567 );
5568 CREATE_PARAMETER ( p_user_session_rec => l_user_session_rec,
5569 p_parameter_rec => l_parameter_rec,
5570 x_return_status => x_return_status,
5571 x_msg_count => x_msg_count,
5572 x_msg_data => x_msg_data
5573 );
5574 --nbarik 07/10/03 - Bug Fix 2999602 - Add BIS_PREVIOUS_EFFECTIVE_START_DATE and BIS_PREVIOUS_EFFECTIVE_END_DATE
5575 --BIS_PREVIOUS_EFFECTIVE_START_DATE Record
5576 l_parameter_rec.dimension := NULL;
5577 l_parameter_rec.default_flag := 'N';
5578 l_parameter_rec.parameter_name := 'BIS_PREVIOUS_EFFECTIVE_START_DATE';
5579 l_parameter_rec.parameter_value := l_prev_time_level_id;
5580 l_parameter_rec.parameter_description := l_prev_time_level_value;
5581 l_parameter_rec.period_date := l_prev_effective_start_date;
5582
5583 CREATE_PARAMETER ( p_user_session_rec => l_user_session_rec,
5584 p_parameter_rec => l_parameter_rec,
5585 x_return_status => x_return_status,
5586 x_msg_count => x_msg_count,
5587 x_msg_data => x_msg_data
5588 );
5589 --BIS_PREVIOUS_EFFECTIVE_END_DATE Record
5590 l_parameter_rec.dimension := NULL;
5591 l_parameter_rec.default_flag := 'N';
5592 l_parameter_rec.parameter_name := 'BIS_PREVIOUS_EFFECTIVE_END_DATE';
5593 l_parameter_rec.parameter_value := l_prev_time_level_id;
5594 l_parameter_rec.parameter_description := l_prev_time_level_value;
5595 l_parameter_rec.period_date := l_prev_effective_end_date;
5596
5597 CREATE_PARAMETER ( p_user_session_rec => l_user_session_rec,
5598 p_parameter_rec => l_parameter_rec,
5599 x_return_status => x_return_status,
5600 x_msg_count => x_msg_count,
5601 x_msg_data => x_msg_data
5602 );
5603
5604 /*-----BugFix#2887200 -ansingh-------*/
5605
5606 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5607 RETURN;
5608 END IF;
5609
5610 ELSE
5611 if pOrgParam = 1 then
5612 l_time_parameter_rec.org_name := pParameter1;
5613 l_time_parameter_rec.org_value := pParameterValue1;
5614 elsif pOrgParam = 2 then
5615 l_time_parameter_rec.org_name := pParameter2;
5616 l_time_parameter_rec.org_value := pParameterValue2;
5617 elsif pOrgParam = 3 then
5618 l_time_parameter_rec.org_name := pParameter3;
5619 l_time_parameter_rec.org_value := pParameterValue3;
5620 elsif pOrgParam = 4 then
5621 l_time_parameter_rec.org_name := pParameter4;
5622 l_time_parameter_rec.org_value := pParameterValue4;
5623 elsif pOrgParam = 5 then
5624 l_time_parameter_rec.org_name := pParameter5;
5625 l_time_parameter_rec.org_value := pParameterValue5;
5626 elsif pOrgParam = 6 then
5627 l_time_parameter_rec.org_name := pParameter6;
5628 l_time_parameter_rec.org_value := pParameterValue6;
5629 elsif pOrgParam = 7 then
5630 l_time_parameter_rec.org_name := pParameter7;
5631 l_time_parameter_rec.org_value := pParameterValue7;
5632 elsif pOrgParam = 8 then
5633 l_time_parameter_rec.org_name := pParameter8;
5634 l_time_parameter_rec.org_value := pParameterValue8;
5635 elsif pOrgParam = 9 then
5636 l_time_parameter_rec.org_name := pParameter9;
5637 l_time_parameter_rec.org_value := pParameterValue9;
5638 elsif pOrgParam = 10 then
5639 l_time_parameter_rec.org_name := pParameter10;
5640 l_time_parameter_rec.org_value := pParameterValue10;
5641 elsif pOrgParam = 11 then
5642 l_time_parameter_rec.org_name := pParameter11;
5643 l_time_parameter_rec.org_value := pParameterValue11;
5644 elsif pOrgParam = 12 then
5645 l_time_parameter_rec.org_name := pParameter12;
5646 l_time_parameter_rec.org_value := pParameterValue12;
5647 elsif pOrgParam = 13 then
5648 l_time_parameter_rec.org_name := pParameter13;
5649 l_time_parameter_rec.org_value := pParameterValue13;
5650 elsif pOrgParam = 14 then
5651 l_time_parameter_rec.org_name := pParameter14;
5652 l_time_parameter_rec.org_value := pParameterValue14;
5653 elsif pOrgParam = 15 then
5654 l_time_parameter_rec.org_name := pParameter15;
5655 l_time_parameter_rec.org_value := pParameterValue15;
5656 else
5657 l_time_parameter_rec.org_value := G_ALL;
5658 end if;
5659
5660 l_time_parameter_Rec.parameter_name := pTimeParameter;
5661 l_time_parameter_rec.from_description := pTimeFromParameter;
5662 l_time_parameter_rec.to_Description := pTimeToParameter;
5663 l_time_parameter_rec.default_flag := pAddToDefault;
5664 l_time_parameter_rec.dimension := substr(pTimeParameter,1, instr(pTimeParameter,'+')-1);
5665 l_time_parameter_rec.required_flag := pTimeRequired;
5666 l_time_parameter_rec.parameter_label := pTimeParamName;
5667 l_time_parameter_rec.id_flag := pSaveByIds;
5668 validate_and_save_Time(p_user_session_Rec => l_user_session_rec
5669 ,p_time_parameter_rec => l_time_parameter_Rec
5670 ,x_return_status => x_return_status
5671 ,x_msg_count => x_msg_count
5672 ,x_msg_data => x_msg_Data
5673 );
5674 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)THEN
5675 RETURN;
5676 END IF;
5677 END IF;
5678 END IF;
5679 COMMIT;
5680 EXCEPTION
5681 WHEN FND_API.G_EXC_ERROR THEN
5682 ROLLBACK;
5683 x_return_status := FND_API.G_RET_STS_ERROR;
5684 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
5685 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5686 ROLLBACK;
5687 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5688 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
5689 WHEN OTHERS THEN
5690 ROLLBACK;
5691 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5692 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
5693 END;
5694
5695 --jprabhud 09/24/02 - Enh 2470068 Storing of Graphs to FND_LOBS
5696 PROCEDURE RETRIEVE_GRAPH_FILEID(p_user_id in varchar2,
5697 p_schedule_id in varchar2,
5698 p_attribute_name in varchar2,
5699 p_function_name in varchar2,
5700 x_graph_file_id out NOCOPY varchar2)
5701 IS
5702 cursor cGraphFileId is
5703 select session_value from bis_user_attributes
5704 where user_id = p_user_id
5705 and schedule_id = p_schedule_id
5706 and attribute_name = p_attribute_name
5707 and function_name = p_function_name;
5708
5709 BEGIN
5710 if cGraphFileId%ISOPEN then
5711 CLOSE cGraphFileId;
5712 end if;
5713
5714 OPEN cGraphFileId;
5715 LOOP
5716 FETCH cGraphFileId INTO x_graph_file_id ;
5717 if cGraphFileId%NOTFOUND then
5718 CLOSE cGraphFileId;
5719 RAISE NO_DATA_FOUND;
5720 end if;
5721 EXIT;
5722 END LOOP;
5723 CLOSE cGraphFileId;
5724 EXCEPTION
5725 WHEN NO_DATA_FOUND then
5726 x_graph_file_id := null;
5727 WHEN others then
5728 x_graph_file_id := null;
5729 END RETRIEVE_GRAPH_FILEID;
5730
5731 --jprabhud 09/24/02 - Enh 2470068 Storing of Graphs to FND_LOBS
5732 -- save the file id associated with the previous schedule, for the same plug,
5733 -- for the new schedule id as the previous schedule gets deleted.
5734 PROCEDURE SAVE_GRAPH_FILEID(p_user_id in varchar2,
5735 p_schedule_id in varchar2,
5736 p_attribute_name in varchar2,
5737 p_function_name in varchar2,
5738 p_graph_file_id in varchar2)
5739 IS
5740 BEGIN
5741 insert into bis_user_attributes
5742 (user_id, function_name, attribute_name, session_value,
5743 schedule_id,creation_date, created_by,
5744 last_update_Date, last_updated_by)
5745 VALUES
5746 (p_user_id,p_function_name,p_attribute_name,p_graph_file_id,
5747 p_schedule_id,sysdate,-1,sysdate,-1);
5748 commit;
5749 END SAVE_GRAPH_FILEID;
5750
5751 -- jprabhud - 12/20/02 - NLS Bug 2320171 Graph Fonts and Mutli-Byte characters
5752 -- x_context_values has the format PATH:value;URI:value
5753 PROCEDURE RETRIEVE_CONTEXT_VALUES(p_user_id in varchar2,
5754 p_schedule_id in varchar2,
5755 p_attribute_name in varchar2,
5756 p_function_name in varchar2,
5757 x_context_values out NOCOPY varchar2)
5758 IS
5759 cursor cContextValues is
5760 select session_value from bis_user_attributes
5761 where user_id = p_user_id
5762 and schedule_id = p_schedule_id
5763 and attribute_name = p_attribute_name
5764 and function_name = p_function_name;
5765
5766 BEGIN
5767 if cContextValues%ISOPEN then
5768 CLOSE cContextValues;
5769 end if;
5770
5771 OPEN cContextValues;
5772 LOOP
5773 FETCH cContextValues INTO x_context_values ;
5774 if cContextValues%NOTFOUND then
5775 CLOSE cContextValues;
5776 RAISE NO_DATA_FOUND;
5777 end if;
5778 EXIT;
5779 END LOOP;
5780 CLOSE cContextValues;
5781 EXCEPTION
5782 WHEN NO_DATA_FOUND then
5783 x_context_values := null;
5784 WHEN others then
5785 x_context_values := null;
5786 END RETRIEVE_CONTEXT_VALUES;
5787
5788
5789 -- jprabhud - 12/20/02 - NLS Bug 2320171 Graph Fonts and Mutli-Byte characters
5790 -- p_context_values has the format PATH:value;URI:value
5791 PROCEDURE SAVE_CONTEXT_VALUES(p_user_id in varchar2,
5792 p_schedule_id in varchar2,
5793 p_attribute_name in varchar2,
5794 p_function_name in varchar2,
5795 p_context_values in varchar2)
5796 IS
5797 BEGIN
5798 insert into bis_user_attributes
5799 (user_id, function_name, attribute_name, session_value,
5800 schedule_id,creation_date, created_by,
5801 last_update_Date, last_updated_by)
5802 VALUES
5803 (p_user_id,p_function_name,p_attribute_name,p_context_values,
5804 p_schedule_id,sysdate,-1,sysdate,-1);
5805 commit;
5806 END SAVE_CONTEXT_VALUES;
5807
5808
5809
5810 function GET_LOV_WHERE(p_parameter_tbl in BIS_PMV_PARAMETERS_PVT.PARAMETER_TBL_TYPE,
5811 p_where_clause in VARCHAR2,
5812 p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type)
5813 return varchar2 is
5814 l_lov_where varchar2(2000) := p_where_clause;
5815 l_index1 number := 1;
5816 l_index2 number := 1;
5817 l_count number := 0;
5818 l_attribute_code varchar2(2000);
5819 l_attribute2 varchar2(2000);
5820 l_parameter_name varchar2(2000);
5821 l_parameter_rec BIS_PMV_PARAMETERS_PVT.PARAMETER_REC_TYPE;
5822 l_parameter_value varchar2(2000);
5823 l_parameter_description varchar2(2000);
5824 l_return_status varchar2(2000);
5825 l_msg_count number;
5826 l_msg_data varchar2(2000);
5827 l_index number;
5828
5829 begin
5830 loop
5831 /*
5832 --nbarik - 05/05/03 - Bug Fix 2691199 - Use p_where_clause here
5833 as l_lov_where will be changed after value replace and the index
5834 won't be correct
5835
5836 l_index1 := instr(l_lov_where, '{', l_index1);
5837 l_index2 := instr(l_lov_where, '}', l_index1+1);
5838 */
5839 l_index1 := instr(p_where_clause, '{', l_index1);
5840 l_index2 := instr(p_where_clause, '}', l_index1+1);
5841 if l_index1 = 0 or l_index2 = 0 or l_count > 100 then
5842 exit;
5843 end if;
5844 --nbarik - 05/05/03 - Bug Fix 2691199 - Use p_where_clause
5845 --l_attribute_code := substr(l_lov_where, l_index1+1, l_index2-l_index1-1);
5846 l_attribute_code := substr(p_where_clause, l_index1+1, l_index2-l_index1-1);
5847 l_attribute2 := BIS_PMV_UTIL.getDimensionForAttribute(rtrim(ltrim(l_attribute_code)),p_user_session_rec.region_code);
5848 l_parameter_name := nvl(l_attribute2, l_attribute_code);
5849
5850 if p_parameter_tbl.COUNT > 0 then
5851 for i in p_parameter_tbl.FIRST..p_parameter_tbl.LAST loop
5852 l_parameter_rec := p_parameter_tbl(i);
5853 if l_parameter_rec.parameter_name = l_parameter_name then
5854
5855 IF l_parameter_rec.id_flag = 'Y' THEN
5856 l_parameter_value := l_parameter_rec.parameter_description;
5857 ELSIF (instr(l_parameter_rec.parameter_description, '^~]*') > 0)
5858 then
5859 l_index := INSTR(l_parameter_rec.parameter_description, '^~]*');
5860 DECODE_ID_VALUE (
5861 p_code => l_parameter_rec.parameter_description
5862 ,p_index => l_index
5863 ,x_id => l_parameter_value
5864 ,x_value => l_parameter_description);
5865 IF INSTR(l_parameter_value, '''', 1)<>1 AND INSTR(l_parameter_value, '''', -1)<>
5866 LENGTH(l_parameter_value) THEN
5867 l_parameter_value := '''' || l_parameter_value || '''';
5868 END IF;
5869 ELSIF (l_parameter_rec.parameter_description=g_All) then
5870 l_parameter_value := l_parameter_rec.parameter_description;
5871 ELSE
5872 GET_NONTIME_VALIDATED_VALUE (p_parameter_name => l_parameter_rec.parameter_name
5873 ,p_parameter_description => l_parameter_rec.parameter_description
5874 ,p_region_code => p_user_session_rec.region_code
5875 ,p_responsibility_id => p_user_session_rec.responsibility_id
5876 ,x_parameter_value => l_parameter_value
5877 ,x_return_status => l_return_status
5878 ,x_msg_count => l_msg_count
5879 ,x_msg_data => l_msg_data);
5880 END IF; --end of id_flag
5881
5882 l_parameter_description := l_parameter_rec.parameter_description;
5883 exit;
5884 end if;
5885 end loop;
5886 end if;
5887
5888 if l_attribute2 is not null then
5889 if (l_parameter_value = g_all) then
5890 l_parameter_value := ''''||upper(l_parameter_value) ||'''';
5891 end if;
5892 l_lov_where := replace(l_lov_where, '{'||l_attribute_code||'}',l_parameter_value);
5893 else
5894 l_lov_where := replace(l_lov_where, '{'||l_attribute_code||'}',l_parameter_description);
5895 end if;
5896
5897 l_index1 := l_index2+1;
5898 l_count := l_count + 1;
5899 end loop;
5900
5901 return l_lov_where;
5902
5903 end GET_LOV_WHERE;
5904
5905
5906
5907 /* serao - added pSessionId so that the as_of_date does not get over-ridden to
5908 sysdate */
5909 PROCEDURE bulkInsertIntoPage(
5910 pSessionId IN VARCHAR2,
5911 pPageId in VARCHAR2,
5912 pUserId in VARCHAR2,
5913 pFunctionName IN VARCHAR2,
5914 pAttributeNameTbl IN BISVIEWER.t_char,
5915 pDimensionTbl IN BISVIEWER.t_char,
5916 pSessionValueTbl IN BISVIEWER.t_char,
5917 pSessionDescTbl IN BISVIEWER.t_char,
5918 pPeriodDateTbl IN BISVIEWER.t_date
5919 ) IS
5920 BEGIN
5921 IF pAttributeNameTbl IS NOT NULL AND pAttributeNameTbl.COUNT >0 THEN
5922 FORALL i IN pAttributeNameTbl.FIRST..pAttributeNameTbl.LAST
5923 insert into bis_user_attributes (
5924 SESSION_ID,
5925 USER_ID,
5926 FUNCTION_NAME,
5927 PAGE_ID,
5928 SESSION_VALUE,
5929 SESSION_DESCRIPTION,
5930 ATTRIBUTE_NAME,
5931 DIMENSION,
5932 PERIOD_DATE,
5933 LAST_UPDATE_DATE
5934 )VALUES (
5935 pSessionId,
5936 pUserId,
5937 pFunctionName,
5938 pPageId,
5939 pSessionValueTbl(i),
5940 pSessionDescTbl(i),
5941 pAttributeNameTbl(i),
5942 pDimensionTbl(i),
5943 pPeriodDateTbl(i),
5944 SYSDATE
5945 );
5946 END IF;
5947 END bulkInsertIntoPage;
5948
5949 --nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
5950 PROCEDURE VALIDATE_DRILL_PARAMETER
5951 (p_user_param_tbl IN parameter_tbl_type
5952 ,p_user_param_rec IN parameter_rec_type
5953 ,p_user_session_rec IN BIS_PMV_SESSION_PVT.session_rec_type
5954 ,x_valid OUT NOCOPY VARCHAR2
5955 ,x_return_status OUT NOCOPY VARCHAR2
5956 ,x_msg_count OUT NOCOPY NUMBER
5957 ,x_msg_data OUT NOCOPY VARCHAR2
5958 ) IS
5959
5960 l_user_param_tbl parameter_tbl_type;
5961 l_user_param_rec parameter_rec_type;
5962 l_lov_where varchar2(2000);
5963
5964 BEGIN
5965
5966 l_useR_param_Tbl := p_user_param_Tbl;
5967 l_user_param_rec := p_user_param_rec;
5968 IF (l_user_param_rec.parameter_name IS NOT NULL ) THEN
5969 IF (l_user_param_rec.parameter_description <> ROLLING_DIMENSION_DESCRIPTION
5970 OR (trim(l_user_param_rec.parameter_description) IS NULL AND l_user_param_rec.required_flag = 'Y') ) THEN
5971 IF (l_user_param_rec.lov_where is not null and
5972 instr(l_user_param_rec.parameter_description, '^~]*') <= 0 and
5973 l_user_param_rec.parameter_description <> g_all ) then
5974 l_lov_where := GET_LOV_WHERE(p_parameter_tbl => l_user_param_Tbl,
5975 p_where_clause => l_user_param_rec.lov_where,
5976 p_user_session_rec => p_user_session_rec);
5977 l_user_param_rec.lov_where := l_lov_where;
5978 END IF;
5979
5980
5981 VALIDATE_PARAMETER(
5982 p_user_session_rec => p_user_session_rec
5983 , p_parameter_rec => l_user_param_rec
5984 , x_valid => x_valid
5985 , x_return_status => x_return_status
5986 , x_msg_count => x_msg_count
5987 , x_msg_Data => x_msg_data);
5988 END IF; -- if rolling dim
5989
5990 END IF; -- if param name is not null
5991
5992 EXCEPTION
5993 WHEN FND_API.G_EXC_ERROR THEN
5994 ROLLBACK;
5995 x_return_status := FND_API.G_RET_STS_ERROR;
5996 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
5997 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5998 ROLLBACK;
5999 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6000 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6001 WHEN OTHERS THEN
6002 ROLLBACK;
6003 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6004 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6005
6006 END VALIDATE_DRILL_PARAMETER;
6007
6008 FUNCTION GET_PARAM_LOV_WHERE (
6009 pParamName IN VARCHAR2,
6010 pParamRegionGroup IN parameter_group_tbl_type
6011 ) RETURN VARCHAR2
6012 IS
6013 BEGIN
6014
6015 IF pParamRegionGroup IS NOT NULL AND pParamRegionGroup.COUNT >0 THEN
6016 FOR i In pParamRegionGroup.FIRST..pParamRegionGroup.LAST LOOP
6017 IF (pParamRegionGroup(i).attribute_name = pParamName) THEN
6018 RETURN pParamRegionGroup(i).lov_where;
6019 END IF;
6020 END LOOP;
6021 END IF;
6022
6023 RETURN NULL;
6024 END GET_PARAM_LOV_WHERE;
6025
6026 --nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
6027 PROCEDURE GET_VALIDATED_DRILL_PARAMS (
6028 lAttributeCodeTable IN BISVIEWER.t_char,
6029 lDimensionTable IN BISVIEWER.t_char,
6030 lSessionValueTable IN BISVIEWER.t_char,
6031 lSessionDescTable IN BISVIEWER.t_char,
6032 lPeriodDateTable IN BISVIEWER.t_date,
6033 pParamRegionCode IN VARCHAR2,
6034 pParamFunctionName IN VARCHAR2,
6035 pParamRegionGroup IN parameter_group_tbl_type,
6036 pPageId IN VARCHAR2,
6037 pUserId IN VARCHAR2,
6038 xAttributeCodeTable OUT NOCOPY BISVIEWER.t_char,
6039 xDimensionTable OUT NOCOPY BISVIEWER.t_char,
6040 xSessionValueTable OUT NOCOPY BISVIEWER.t_char,
6041 xSessionDescTable OUT NOCOPY BISVIEWER.t_char,
6042 xPeriodDateTable OUT NOCOPY BISVIEWER.t_date,
6043 x_DrillDefaultParameters OUT NOCOPY VARCHAR2
6044 )
6045 IS
6046
6047 CURSOR getFunctionParams IS
6048 SELECT parameters
6049 FROM fnd_form_functions
6050 WHERE function_name = pParamFunctionName;
6051 /*
6052 CURSOR getPageParams IS
6053 SELECt attribute_name, session_value, session_description, dimension, period_date, operator
6054 FROM bis_user_attributes
6055 WHERE page_id = pPageId
6056 AND user_id = pUserId;
6057 */
6058 -- nbarik - 03/29/04 - Parameter Validation while navigating through related links
6059 CURSOR c_validation_parameters IS
6060 SELECT a.attribute2, c.attribute26
6061 FROM ak_region_items a, bis_ak_region_item_extension c
6062 WHERE a.region_code=pParamRegionCode AND a.attribute_code=c.attribute_code(+) AND a.region_code=c.region_code(+);
6063
6064 lValidationAttrList BISVIEWER.t_char;
6065 lValidationReqList BISVIEWER.t_char;
6066 l_validation_req VARCHAR2(30);
6067 l_parameter_rec PARAMETER_REC_TYPE;
6068 l_parameter_Rec_tbl parameter_tbl_type;
6069 l_user_Session_rec BIS_PMV_SESSION_PVT.session_rec_type;
6070 lCount NUMBER := 1;
6071 lFunctionParams VARCHAR2(2000);
6072 lSaveById VARCHAR2(1);
6073 l_return_status VARCHAR2(2000);
6074 l_msg_count NUMBER;
6075 l_msg_data VARCHAR2(2000);
6076 l_valid VARCHAR2(1);
6077 l_PLSQLFunction VARCHAR2(200);
6078 l_function_result VARCHAR2(3000);
6079 l_attribute_code VARCHAR2(150);
6080 l_default_value VARCHAR2(2000);
6081 l_default_desc VARCHAR2(2000);
6082 l_pParameters VARCHAR2(2000);
6083 BEGIN
6084
6085 xAttributeCodeTable := lAttributeCodeTable;
6086 xDimensionTable := lDimensionTable;
6087 xSessionValueTable := lSessionValueTable;
6088 xSessionDescTable := lSessionDescTable;
6089 xPeriodDateTable := lPeriodDateTable;
6090
6091 -- nbarik - 03/29/04 - Parameter Validation while navigating through related links
6092 IF c_validation_parameters%ISOPEN THEN
6093 CLOSE c_validation_parameters;
6094 END IF;
6095 OPEN c_validation_parameters;
6096 FETCH c_validation_parameters BULK COLLECT INTO lValidationAttrList, lValidationReqList;
6097 CLOSE c_validation_parameters;
6098
6099 IF getFunctionParams%ISOPEN THEN
6100 CLOSE getFunctionParams ;
6101 END IF;
6102 OPEN getFunctionParams ;
6103 FETCH getFunctionParams INTO lFunctionParams;
6104 CLOSE getFunctionParams ;
6105
6106 l_PLSQLFunction := BIS_PMV_UTIL.getParameterValue(lFunctionParams, 'pPLSQLFunction');
6107 processDynamicAttributeValue(
6108 pPlSqlFunctionName => l_PLSQLFunction
6109 , xOutPut => l_function_result
6110 );
6111 --l_function_result := BIS_PMV_UTIL.getFunctionResult(l_PLSQLFunction);
6112 IF l_function_result IS NOT NULL THEN
6113 IF substr(l_function_result, 1, 1) = '&' THEN
6114 lFunctionParams := lFunctionParams || l_function_result;
6115 ELSE
6116 lFunctionParams := lFunctionParams || '&' || l_function_result;
6117 END IF;
6118 END IF;
6119 -- For report default parameters
6120 l_pParameters := BIS_PMV_UTIL.getParameterValue(lFunctionParams, 'pParameters');
6121 IF (l_pParameters IS NOT NULL) THEN
6122 lFunctionParams := replace (lFunctionParams, '~', '&');
6123 lFunctionParams := replace (lFunctionParams, '@', '=');
6124 lFunctionParams := replace (lFunctionParams, '^', '+');
6125 END IF;
6126
6127 lsaveById := BIS_PMV_UTIL.getParameterValue (lFunctionParams, 'pParamIds');
6128 IF lSaveById IS NULL THEN
6129 lSaveByid := 'N';
6130 END IF;
6131
6132 IF lAttributeCodeTable IS NOT NULL AND lAttributeCodeTable.COUNT > 0 THEN
6133 FOR i IN lAttributeCodeTable.FIRST..lAttributeCodeTable.LAST LOOP
6134 l_parameter_rec.parameter_name := lAttributeCodeTable(i);
6135 l_parameter_rec.default_flag := 'N';
6136 l_parameter_rec.dimension := lDimensionTable(i);
6137 l_parameter_Rec.parameter_label := lAttributeCodeTable(i);
6138 --l_parameter_rec.operator := lOperatorlist(i);
6139 l_parameter_rec.required_flag := 'N'; --mandatory param validation will not happen
6140 l_parameter_rec.lov_where := GET_PARAM_LOV_WHERE (lAttributeCodeTable(i), pParamRegionGroup );
6141 l_parameter_rec.id_flag := lSaveById;
6142 l_parameter_rec.parameter_value := lSessionValueTable(i);
6143 IF (lSaveById = 'Y') THEN
6144 l_parameter_rec.parameter_description := lSessionValueTable(i); -- because in validate_nontime, desc used to validate
6145 ELSE
6146 l_parameter_rec.parameter_description := lSessionDescTable(i);
6147 END IF;
6148
6149 l_parameter_rec_tbl(lCount) := l_parameter_rec;
6150 lCount := lCount +1;
6151 END LOOP;
6152 END IF;
6153
6154 l_user_session_rec.function_name := pParamFunctionName;
6155 l_user_session_rec.region_code := pParamRegionCode;
6156 l_user_session_rec.page_id := pPageId;
6157 l_user_session_rec.session_id := icx_sec.getID(icx_sec.PV_SESSION_ID); -- can we call this without validate
6158 l_user_session_rec.responsibility_id := icx_sec.getID(icx_sec.PV_RESPONSIBILITY_ID);
6159 l_user_Session_rec.user_id := pUserId;
6160
6161 IF lAttributeCodeTable IS NOT NULL AND lAttributeCodeTable.COUNT > 0 THEN
6162 FOR i IN lAttributeCodeTable.FIRST..lAttributeCodeTable.LAST LOOP
6163 l_validation_req := 'N';
6164 IF lValidationAttrList IS NOT NULL AND lValidationAttrList.COUNT > 0 THEN
6165 FOR j IN lValidationAttrList.FIRST..lValidationAttrList.LAST LOOP
6166 IF (lAttributeCodeTable(i) = lValidationAttrList(j)) THEN
6167 l_validation_req := lValidationReqList(j);
6168 EXIT;
6169 END IF;
6170 END LOOP;
6171 END IF;
6172 l_valid := 'Y';
6173 IF (l_validation_req = 'Y') THEN
6174 VALIDATE_DRILL_PARAMETER(
6175 p_user_param_tbl => l_parameter_rec_tbl
6176 , p_user_param_rec => l_parameter_rec_tbl(i)
6177 , p_user_session_rec => l_user_Session_rec
6178 , x_valid => l_valid
6179 , x_return_status => l_return_status
6180 , x_msg_count => l_msg_count
6181 , x_msg_data => l_msg_data
6182 );
6183 IF l_valid <> 'Y' THEN
6184 -- Assign the value from form function
6185 l_attribute_code := BIS_PMV_UTIL.getAttributeForDimension(lAttributeCodeTable(i), pParamRegionCode);
6186 l_default_value := BIS_PMV_UTIL.getParameterValue(lFunctionParams, l_attribute_code);
6187 IF l_default_value IS NOT NULL THEN
6188 IF (lSaveById = 'Y') THEN
6189 GET_NONTIME_VALIDATED_ID (p_parameter_name => l_parameter_rec_tbl(i).parameter_name
6190 ,p_parameter_value => l_default_value
6191 ,p_lov_where => l_parameter_rec_tbl(i).lov_where
6192 ,p_region_code => l_user_session_rec.region_code
6193 ,p_responsibility_id => l_user_session_rec.responsibility_id
6194 ,x_parameter_description => l_default_desc
6195 ,x_return_status => l_return_status
6196 ,x_msg_count => l_msg_count
6197 ,x_msg_data => l_msg_data);
6198 ELSE
6199 l_default_desc := l_default_value;
6200 GET_NONTIME_VALIDATED_VALUE (p_parameter_name => l_parameter_rec_tbl(i).parameter_name
6201 ,p_parameter_description => l_default_desc
6202 ,p_lov_where => l_parameter_rec_tbl(i).lov_where
6203 ,p_region_code => l_user_session_rec.region_code
6204 ,p_responsibility_id => l_user_session_rec.responsibility_id
6205 ,x_parameter_value => l_default_value
6206 ,x_return_status => l_return_status
6207 ,x_msg_count => l_msg_count
6208 ,x_msg_data => l_msg_data);
6209 END IF;
6210 IF (substr(l_default_value,1,1) <> '''') THEN
6211 l_default_value := ''''|| l_default_value || '''';
6212 END IF;
6213 IF (x_DrillDefaultParameters IS NULL) THEN
6214 x_DrillDefaultParameters := 'pDrillParamRegion=' || pParamRegionCode;
6215 END IF;
6216 x_DrillDefaultParameters := x_DrillDefaultParameters || '&pDrillParamName=' || BIS_PMV_UTIL.encode(lAttributeCodeTable(i)) ||
6217 '&pDrillPrevDesc=' || BIS_PMV_UTIL.encode(xSessionDescTable(i)) ||
6218 '&pDrillCurrentDesc=' || BIS_PMV_UTIL.encode(l_default_desc);
6219 xSessionValueTable(i) := l_default_value;
6220 xSessionDescTable(i) := l_default_desc;
6221 END IF;
6222 -- Assign the first value in the drop down - Not required
6223 END IF;
6224 END IF;
6225 END LOOP;
6226 END IF;
6227
6228 END GET_VALIDATED_DRILL_PARAMS;
6229
6230 PROCEDURE getPageParamFuncProps(
6231 pPageId IN VARCHAR2,
6232 pUserId IN VARCHAR2,
6233 xFunctionName OUT NOCOPY VARCHAR2,
6234 xRegionCode OUT NOCOPY VARCHAR2
6235 )
6236 IS
6237 CURSOR getPageToFunctionName IS
6238 SELECT function_name
6239 FROM bis_user_attributes
6240 WHERE page_id=pPageId
6241 AND user_id = pUserId
6242 AND function_name IS NOT NULL
6243 AND rownum < 2;
6244
6245 BEGIN
6246
6247 -- for the page 2 , get the function_name and hence the region for the pageTo
6248 IF getPageToFunctionName%ISOPEN then
6249 close getPageToFunctionName;
6250 END IF;
6251 OPEN getPageToFunctionName;
6252 FETCH getPageToFunctionName INTO xFunctionName;
6253 CLOSE getPageToFunctionName;
6254
6255 IF (xFunctionName IS NOT NULL) THEN
6256 xRegionCode := BIS_PMV_UTIL.getReportRegion(xFunctionName);
6257 END IF;
6258
6259 END getPageParamFuncProps;
6260
6261 /* serao - 04/03- added sessionId to be inserted into page level records -
6262 mainly for the as_of_date so that it is not over-ridden by sysdate */
6263 PROCEDURE copyParamtersBetweenPages(
6264 pSessionId IN VARCHAR2,
6265 pFromPageId IN VARCHAR2,
6266 pToPageId IN VARCHAR2,
6267 pUserId IN VARCHAR2,
6268 xParamRegionCode OUT NOCOPY VARCHAR2,
6269 xParamFunctionName OUT NOCOPY VARCHAR2,
6270 xParamGroup OUT NOCOPY parameter_group_tbl_type,
6271 -- nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
6272 x_DrillDefaultParameters OUT NOCOPY VARCHAR2,
6273 x_return_status OUT NOCOPY VARCHAR2,
6274 x_msg_count OUT NOCOPY NUMBER,
6275 x_msg_data OUT NOCOPY VARCHAR2
6276 ) IS
6277
6278 CURSOR getPageFromParams IS
6279 SELECT attribute_name, dimension, session_value, session_description, period_date
6280 FROM bis_user_attributes
6281 WHERE page_id = pFromPageId
6282 AND user_id = pUserId;
6283
6284 vAttributeCodeTable BISVIEWER.t_char;
6285 vDimensionTable BISVIEWER.t_char;
6286 vSessionValueTable BISVIEWER.t_char;
6287 vSessionDescTable BISVIEWER.t_char;
6288 vPeriodDateTable BISVIEWER.t_date;
6289
6290 lAttributeCodeTable BISVIEWER.t_char;
6291 lDimensionTable BISVIEWER.t_char;
6292 lSessionValueTable BISVIEWER.t_char;
6293 lSessionDescTable BISVIEWER.t_char;
6294 lPeriodDateTable BISVIEWER.t_date;
6295
6296 lAttrNameForInsert BISVIEWER.t_char;
6297 lDimensionForInsert BISVIEWER.t_char;
6298 lSessValueForInsert BISVIEWER.t_char;
6299 lSessDescForInsert BISVIEWER.t_char;
6300 lPeriodDateForInsert BISVIEWER.t_date;
6301 lAttrNameForDelete BISVIEWER.t_char;
6302
6303 lTCTExists boolean := false;
6304 lNestedRegionCode VARCHAR2(250);
6305 lAsofDateExists boolean;
6306 l_valid VARCHAR2(1);
6307 BEGIN
6308
6309 getPageParamFuncProps( pToPageId, pUserId, xParamFunctionName, xParamRegionCode);
6310
6311 IF (xParamFunctionName IS NOT NULL AND xParamRegionCode IS NOT NULL ) THEN
6312
6313 getParameterGroupsForRegion ( pRegionCode => xParamRegionCode,
6314 xParameterGroup => xParamGroup,
6315 xTCTExists => lTCTExists,
6316 xNestedRegion => lNestedRegionCode,
6317 xAsofDateExists => lAsofDateExists
6318 );
6319
6320 -- get the attributes from the pageFrom
6321 IF getPageFromParams%ISOPEN then
6322 close getPageFromParams;
6323 END IF;
6324 OPEN getPageFromParams;
6325 FETCH getPageFromParams BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
6326 CLOSE getPageFromParams;
6327
6328 --nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
6329 GET_VALIDATED_DRILL_PARAMS (
6330 lAttributeCodeTable => vAttributeCodeTable,
6331 lDimensionTable => vDimensionTable,
6332 lSessionValueTable => vSessionValueTable,
6333 lSessionDescTable => vSessionDescTable,
6334 lPeriodDateTable => vPeriodDateTable,
6335 pParamRegionCode => xParamRegionCode,
6336 pParamFunctionName => xParamFunctionName,
6337 pParamRegionGroup => xParamGroup,
6338 pPageId => pToPageId,
6339 pUserId => pUserId,
6340 xAttributeCodeTable => lAttributeCodeTable,
6341 xDimensionTable => lDimensionTable,
6342 xSessionValueTable => lSessionValueTable,
6343 xSessionDescTable => lSessionDescTable,
6344 xPeriodDateTable => lPeriodDateTable,
6345 x_DrillDefaultParameters => x_DrillDefaultParameters
6346 );
6347 --get all the delete and insert tables
6348 getDeleteAndInsertTables(
6349 pUserId => pUserId,
6350 pAttributeNameTbl => lAttributeCodeTable,
6351 pDimensionTbl => lDimensionTable,
6352 pSessionValueTbl => lSessionValueTable,
6353 pSessionDescTbl => lSessionDescTable,
6354 pPeriodDateTbl=> lPeriodDateTable,
6355 pParameterGroup => xParamGroup,
6356 pIncludeViewBy => FALSE,
6357 pIncludeBusinessPlan => FALSE,
6358 pIncludePrevAsOfDate => TRUE,
6359 xAttrNameForInsert => lAttrNameForInsert,
6360 xDimensionForInsert => lDimensionForInsert,
6361 xSessValueForInsert => lSessValueForInsert,
6362 xSessDescForInsert => lSessDescForInsert,
6363 xPeriodDateForInsert => lPeriodDateForInsert,
6364 xAttrNameForDelete => lAttrNameForDelete
6365 ) ;
6366
6367 --bulk delete and insert for the page
6368 IF (lAttrNameForDelete IS NOT NULL AND lAttrNameForDelete.COUNT > 0) THEN
6369 bulkDeleteFromPage(
6370 pPAgeId => pToPageId ,
6371 pUserId => pUserId ,
6372 pFunctionName => xParamFunctionName,
6373 pAttributeNameTbl => lAttrNameForDelete
6374 );
6375 END IF;
6376
6377 IF (lAttrNameForInsert IS NOT NULL AND lAttrNameForInsert.COUNT > 0) THEN
6378 bulkInsertIntoPage(
6379 pSessionId => pSessionId,
6380 pPageId => pToPageId,
6381 pUserId => pUserId,
6382 pFunctionName => xParamFunctionName,
6383 pAttributeNameTbl => lAttrNameForInsert,
6384 pDimensionTbl => lDimensionForInsert,
6385 pSessionValueTbl => lSessValueForInsert,
6386 pSessionDescTbl => lSessDescForInsert,
6387 pPeriodDateTbl => lPeriodDateForInsert
6388 );
6389 END IF;
6390
6391 END IF; -- lRegionCode
6392
6393 COMMIT;
6394
6395 EXCEPTION
6396 WHEN FND_API.G_EXC_ERROR THEN
6397 x_return_status := FND_API.G_RET_STS_ERROR;
6398 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6399 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6400 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6401 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6402 WHEN OTHERS THEN
6403 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6404 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6405 END copyParamtersBetweenPages;
6406
6407 procedure executeLovBindSQL
6408 (p_bind_sql in varchar2
6409 ,p_bind_variables in varchar2
6410 ,p_time_flag in varchar2
6411 ,x_parameter_id out NOCOPY varchar2
6412 ,x_parameter_value out NOCOPY varchar2
6413 ,x_start_date out NOCOPY date
6414 ,x_end_date out NOCOPY date
6415 ,x_return_status OUT NOCOPY VARCHAR2
6416 ,x_msg_count OUT NOCOPY NUMBER
6417 ,x_msg_data OUT NOCOPY VARCHAR2
6418 ) is
6419
6420 l_bind_values BISVIEWER.t_char;
6421
6422 begin
6423
6424 if (length(p_bind_variables) > 0) then
6425 BIS_PMV_UTIL.SETUP_BIND_VARIABLES(
6426 p_bind_variables => p_bind_variables,
6427 x_bind_var_tbl => l_bind_values);
6428 end if;
6429
6430 if (l_bind_values.COUNT = 1) then
6431 if p_time_flag = 'Y' then
6432 execute immediate p_bind_sql into x_parameter_id, x_parameter_value, x_start_date, x_end_date using l_bind_values(1);
6433 else
6434 execute immediate p_bind_sql into x_parameter_id, x_parameter_value using l_bind_values(1);
6435 end if;
6436 elsif (l_bind_values.COUNT = 2) then
6437 if p_time_flag = 'Y' then
6438 execute immediate p_bind_sql into x_parameter_id, x_parameter_value, x_start_date, x_end_date using l_bind_values(1), l_bind_values(2);
6439 else
6440 execute immediate p_bind_sql into x_parameter_id, x_parameter_value using l_bind_values(1), l_bind_values(2);
6441 end if;
6442 elsif (l_bind_values.COUNT = 3) then
6443 if p_time_flag = 'Y' then
6444 execute immediate p_bind_sql into x_parameter_id, x_parameter_value, x_start_date, x_end_date using l_bind_values(1), l_bind_values(2), l_bind_values(3);
6445 else
6446 execute immediate p_bind_sql into x_parameter_id, x_parameter_value using l_bind_values(1), l_bind_values(2), l_bind_values(3);
6447 end if;
6448 else
6449 executeLovDynamicSQL
6450 (p_bind_sql => p_bind_sql
6451 ,p_bind_values => l_bind_values
6452 ,p_time_flag => p_time_flag
6453 ,x_parameter_id => x_parameter_id
6454 ,x_parameter_value => x_parameter_value
6455 ,x_start_date => x_start_date
6456 ,x_end_date => x_end_date
6457 ,x_return_status => x_return_status
6458 ,x_msg_count => x_msg_count
6459 ,x_msg_data => x_msg_data
6460 );
6461 end if;
6462
6463 EXCEPTION
6464 WHEN OTHERS THEN
6465 executeLovDynamicSQL
6466 (p_bind_sql => p_bind_sql
6467 ,p_bind_values => l_bind_values
6468 ,p_time_flag => p_time_flag
6469 ,x_parameter_id => x_parameter_id
6470 ,x_parameter_value => x_parameter_value
6471 ,x_start_date => x_start_date
6472 ,x_end_date => x_end_date
6473 ,x_return_status => x_return_status
6474 ,x_msg_count => x_msg_count
6475 ,x_msg_data => x_msg_data
6476 );
6477 END executeLovBindSQL;
6478
6479 procedure executeLovDynamicSQL
6480 (p_bind_sql in varchar2
6481 ,p_bind_values in BISVIEWER.t_char
6482 ,p_time_flag in varchar2
6483 ,x_parameter_id out NOCOPY varchar2
6484 ,x_parameter_value out NOCOPY varchar2
6485 ,x_start_date out NOCOPY date
6486 ,x_end_date out NOCOPY date
6487 ,x_return_status OUT NOCOPY VARCHAR2
6488 ,x_msg_count OUT NOCOPY NUMBER
6489 ,x_msg_data OUT NOCOPY VARCHAR2
6490 ) is
6491
6492 l_bind_sql varchar2(2000);
6493 l_bind_col varchar2(2000);
6494 l_cursor integer;
6495 ignore integer;
6496
6497 begin
6498
6499 l_bind_sql := replace(p_bind_sql, ':', ':x');
6500
6501 l_cursor := dbms_sql.open_cursor;
6502 dbms_sql.parse(l_cursor, l_bind_sql, DBMS_SQL.native);
6503
6504 if (p_bind_values.COUNT > 0) then
6505 for i in p_bind_values.FIRST..p_bind_values.LAST loop
6506 l_bind_col := ':x'|| i;
6507 dbms_sql.bind_variable(l_cursor, l_bind_col, p_bind_values(i));
6508 end loop;
6509 end if;
6510
6511 dbms_sql.define_column(l_cursor, 1, x_parameter_id, 2000);
6512 dbms_sql.define_column(l_cursor, 2, x_parameter_value, 2000);
6513
6514 if p_time_flag = 'Y' then
6515 dbms_sql.define_column(l_cursor, 3, x_start_date);
6516 dbms_sql.define_column(l_cursor, 4, x_end_date);
6517 end if;
6518
6519 ignore := dbms_sql.execute_and_fetch(l_cursor);
6520
6521 dbms_sql.column_value (l_cursor, 1, x_parameter_id);
6522 dbms_sql.column_value (l_cursor, 2, x_parameter_value);
6523
6524 if p_time_flag = 'Y' then
6525 dbms_sql.column_value (l_cursor, 3, x_start_date);
6526 dbms_sql.column_value (l_cursor, 4, x_end_date);
6527 end if;
6528
6529 dbms_sql.close_cursor(l_cursor);
6530
6531 EXCEPTION
6532 WHEN FND_API.G_EXC_ERROR THEN
6533 x_return_status := FND_API.G_RET_STS_ERROR;
6534 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6535 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6536 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6537 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6538 WHEN OTHERS THEN
6539 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6540 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6541 END executeLovDynamicSQL;
6542
6543 PROCEDURE copyParamsFromReportToPage(
6544 pFunctionName IN VARCHAR2,
6545 pSessionId IN VARCHAR2,
6546 pUserId IN VARCHAR2,
6547 pToPageId IN VARCHAR2,
6548 xParamRegionCode OUT NOCOPY VARCHAR2,
6549 xParamFunctionName OUT NOCOPY VARCHAR2,
6550 xParamGroup OUT NOCOPY parameter_group_tbl_type,
6551 x_DrillDefaultParameters OUT NOCOPY VARCHAR2,
6552 x_return_status OUT NOCOPY VARCHAR2,
6553 x_msg_count OUT NOCOPY NUMBER,
6554 x_msg_data OUT NOCOPY VARCHAR2
6555 ) IS
6556
6557
6558 CURSOR getParamsFromReport IS
6559 SELECT attribute_name, dimension, session_value, session_description, period_date
6560 FROM bis_user_attributes
6561 WHERE function_name = pFunctionName
6562 AND session_id = pSessionId
6563 AND user_id = pUserId
6564 AND schedule_id IS NULL;
6565
6566 vAttributeCodeTable BISVIEWER.t_char;
6567 vDimensionTable BISVIEWER.t_char;
6568 vSessionValueTable BISVIEWER.t_char;
6569 vSessionDescTable BISVIEWER.t_char;
6570 vPeriodDateTable BISVIEWER.t_date;
6571
6572 lAttributeCodeTable BISVIEWER.t_char;
6573 lDimensionTable BISVIEWER.t_char;
6574 lSessionValueTable BISVIEWER.t_char;
6575 lSessionDescTable BISVIEWER.t_char;
6576 lPeriodDateTable BISVIEWER.t_date;
6577
6578 lAttrNameForInsert BISVIEWER.t_char;
6579 lDimensionForInsert BISVIEWER.t_char;
6580 lSessValueForInsert BISVIEWER.t_char;
6581 lSessDescForInsert BISVIEWER.t_char;
6582 lPeriodDateForInsert BISVIEWER.t_date;
6583 lAttrNameForDelete BISVIEWER.t_char;
6584
6585 lTCTExists boolean := false;
6586 lNestedRegionCode VARCHAR2(250);
6587 lAsofDateExists boolean;
6588 l_valid VARCHAR2(1);
6589 BEGIN
6590
6591 getPageParamFuncProps( pToPageId, pUserId, xParamFunctionName, xParamRegionCode);
6592
6593 IF (xParamFunctionName IS NOT NULL AND xParamRegionCode IS NOT NULL ) THEN
6594 getParameterGroupsForRegion ( pRegionCode => xParamRegionCode,
6595 xParameterGroup => xParamGroup,
6596 xTCTExists => lTCTExists,
6597 xNestedRegion => lNestedRegionCode,
6598 xAsofDateExists => lAsofDateExists);
6599
6600 -- get the attributes from the pageFrom
6601 IF getParamsFromReport%ISOPEN then
6602 close getParamsFromReport;
6603 END IF;
6604 OPEN getParamsFromReport;
6605 FETCH getParamsFromReport BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
6606 CLOSE getParamsFromReport;
6607
6608 --nbarik - 04/20/04 - Enhancement 3378782 - Parameter Validation
6609 GET_VALIDATED_DRILL_PARAMS (
6610 lAttributeCodeTable => vAttributeCodeTable,
6611 lDimensionTable => vDimensionTable,
6612 lSessionValueTable => vSessionValueTable,
6613 lSessionDescTable => vSessionDescTable,
6614 lPeriodDateTable => vPeriodDateTable,
6615 pParamRegionCode => xParamRegionCode,
6616 pParamFunctionName => xParamFunctionName,
6617 pParamRegionGroup => xParamGroup,
6618 pPageId => pToPageId,
6619 pUserId => pUserId,
6620 xAttributeCodeTable => lAttributeCodeTable,
6621 xDimensionTable => lDimensionTable,
6622 xSessionValueTable => lSessionValueTable,
6623 xSessionDescTable => lSessionDescTable,
6624 xPeriodDateTable => lPeriodDateTable,
6625 x_DrillDefaultParameters => x_DrillDefaultParameters
6626 );
6627
6628 --get all the delete and insert tables
6629 getDeleteAndInsertTables(
6630 pUserId => pUserId,
6631 pAttributeNameTbl => lAttributeCodeTable,
6632 pDimensionTbl => lDimensionTable,
6633 pSessionValueTbl => lSessionValueTable,
6634 pSessionDescTbl => lSessionDescTable,
6635 pPeriodDateTbl=> lPeriodDateTable,
6636 pParameterGroup => xParamGroup,
6637 pIncludeViewBy => FALSE,
6638 pIncludeBusinessPlan => FALSE,
6639 pIncludePrevAsOfDate => TRUE,
6640 xAttrNameForInsert => lAttrNameForInsert,
6641 xDimensionForInsert => lDimensionForInsert,
6642 xSessValueForInsert => lSessValueForInsert,
6643 xSessDescForInsert => lSessDescForInsert,
6644 xPeriodDateForInsert => lPeriodDateForInsert,
6645 xAttrNameForDelete => lAttrNameForDelete
6646 ) ;
6647
6648 --bulk delete and insert for the page
6649 IF (lAttrNameForDelete IS NOT NULL AND lAttrNameForDelete.COUNT > 0) THEN
6650 bulkDeleteFromPage(
6651 pPAgeId => pToPageId ,
6652 pUserId => pUserId ,
6653 pFunctionName => xParamFunctionName,
6654 pAttributeNameTbl => lAttrNameForDelete
6655 );
6656 END IF;
6657
6658 IF (lAttrNameForInsert IS NOT NULL AND lAttrNameForInsert.COUNT > 0) THEN
6659 bulkInsertIntoPage(
6660 pSessionId => pSessionId,
6661 pPageId => pToPageId,
6662 pUserId => pUserId,
6663 pFunctionName => xParamFunctionName,
6664 pAttributeNameTbl => lAttrNameForInsert,
6665 pDimensionTbl => lDimensionForInsert,
6666 pSessionValueTbl => lSessValueForInsert,
6667 pSessionDescTbl => lSessDescForInsert,
6668 pPeriodDateTbl => lPeriodDateForInsert
6669 );
6670 END IF;
6671 END IF; --lRegionCode
6672
6673 COMMIT;
6674 EXCEPTION
6675 WHEN FND_API.G_EXC_ERROR THEN
6676 x_return_status := FND_API.G_RET_STS_ERROR;
6677 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6678 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6679 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6680 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6681 WHEN OTHERS THEN
6682 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6683 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count, p_data => x_msg_data);
6684
6685 END copyParamsFromReportToPage;
6686
6687 PROCEDURE saveDateParams(
6688 p_user_Session_rec BIS_PMV_SESSION_PVT.session_rec_type,
6689 pAsOfDate IN DATE ,
6690 p_prev_asof_Date IN DATE ,
6691 p_curr_effective_start_date IN DATE ,
6692 p_curr_effective_end_date IN DATE ,
6693 p_curr_report_Start_date IN DATE ,
6694 p_prev_report_Start_date IN DATE,
6695 p_time_level_id IN VARCHAR2,
6696 p_time_level_value IN VARCHAR2,
6697 p_prev_effective_start_date IN DATE,
6698 p_prev_effective_end_date IN DATE,
6699 p_prev_time_level_id IN VARCHAR2,
6700 p_prev_time_level_value IN VARCHAR2
6701 ) IS
6702 l_parameter_rec BIS_PMV_PARAMETERS_PVT.PARAMETER_REC_TYPE;
6703 l_date_format varchar2(30) := 'DD-MM-RRRR';
6704 l_asof_Date DATE;
6705 x_return_status VARCHAR2(2000);
6706 x_msg_count NUMBER;
6707 x_msg_data VARCHAR2(2000);
6708 l_canonical_date_format varchar2(30) := 'DD/MM/RRRR';
6709
6710 BEGIN
6711
6712 IF (pAsOfDate IS NOT NULL) THEN
6713
6714 --serao - bug 3087341
6715 l_asof_Date := pAsOfDate;
6716 l_parameter_Rec.parameter_name := 'AS_OF_DATE';
6717 --l_parameter_Rec.parameter_description := to_char(l_asof_date,'DD-MON-YYYY');
6718 --l_parameter_rec.parameter_value := to_char(l_asof_date,'DD-MON-YYYY');
6719
6720 l_parameter_Rec.parameter_description := to_char(l_asof_date,l_canonical_date_format);
6721 l_parameter_rec.parameter_value := to_char(l_asof_date,l_canonical_date_format);
6722 l_parameter_Rec.period_date := trunc(l_asof_Date);
6723 l_parameter_Rec.default_flag := 'N';
6724 l_parameter_rec.hierarchy_flag := 'N';
6725
6726 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
6727 ,p_parameter_rec => l_parameter_rec
6728 ,x_return_status => x_return_status
6729 ,x_msg_count => x_msg_count
6730 ,x_msg_data => x_msg_data);
6731
6732 --BIS_P_ASOF_DATE Record
6733 BIS_PMV_TIME_LEVELS_PVT.GET_TIME_PARAMETER_RECORD (
6734 p_TimeParamterName => 'BIS_P_ASOF_DATE',
6735 p_DateParameter => p_prev_asof_Date,
6736 x_parameterRecord => l_parameter_rec,
6737 x_Return_status => x_return_Status,
6738 x_msg_count => x_msg_count,
6739 x_msg_data => x_msg_data
6740 );
6741
6742 CREATE_PARAMETER ( p_user_session_rec => p_user_session_rec,
6743 p_parameter_rec => l_parameter_rec,
6744 x_return_status => x_return_status,
6745 x_msg_count => x_msg_count,
6746 x_msg_data => x_msg_data
6747 );
6748
6749 --BIS_CUR_REPORT_START_DATE Record
6750 BIS_PMV_TIME_LEVELS_PVT.GET_TIME_PARAMETER_RECORD(
6751 p_TimeParamterName => 'BIS_CUR_REPORT_START_DATE',
6752 p_DateParameter => p_curr_report_Start_date,
6753 x_parameterRecord => l_parameter_rec,
6754 x_Return_status => x_return_Status,
6755 x_msg_count => x_msg_count,
6756 x_msg_data => x_msg_data
6757 );
6758
6759 CREATE_PARAMETER ( p_user_session_rec => p_user_session_rec,
6760 p_parameter_rec => l_parameter_rec,
6761 x_return_status => x_return_status,
6762 x_msg_count => x_msg_count,
6763 x_msg_data => x_msg_data
6764 );
6765
6766 --BIS_PREV_REPORT_START_DATE Record
6767 BIS_PMV_TIME_LEVELS_PVT.GET_TIME_PARAMETER_RECORD(
6768 p_TimeParamterName => 'BIS_PREV_REPORT_START_DATE',
6769 p_DateParameter => p_prev_report_Start_date,
6770 x_parameterRecord => l_parameter_rec,
6771 x_Return_status => x_return_Status,
6772 x_msg_count => x_msg_count,
6773 x_msg_data => x_msg_data
6774 );
6775
6776 CREATE_PARAMETER ( p_user_session_rec => p_user_session_rec,
6777 p_parameter_rec => l_parameter_rec,
6778 x_return_status => x_return_status,
6779 x_msg_count => x_msg_count,
6780 x_msg_data => x_msg_data
6781 );
6782
6783 l_parameter_rec.dimension := NULL;
6784 l_parameter_rec.default_flag := 'N';
6785 l_parameter_rec.parameter_name := 'BIS_PREVIOUS_EFFECTIVE_START_DATE';
6786 l_parameter_rec.parameter_value := p_prev_time_level_id;
6787 l_parameter_rec.parameter_description := p_prev_time_level_value;
6788 l_parameter_rec.period_date := p_prev_effective_start_date;
6789
6790 CREATE_PARAMETER ( p_user_session_rec => p_user_session_rec,
6791 p_parameter_rec => l_parameter_rec,
6792 x_return_status => x_return_status,
6793 x_msg_count => x_msg_count,
6794 x_msg_data => x_msg_data
6795 );
6796
6797 --BIS_PREVIOUS_EFFECTIVE_END_DATE Record
6798 l_parameter_rec.dimension := NULL;
6799 l_parameter_rec.default_flag := 'N';
6800 l_parameter_rec.parameter_name := 'BIS_PREVIOUS_EFFECTIVE_END_DATE';
6801 l_parameter_rec.parameter_value := p_prev_time_level_id;
6802 l_parameter_rec.parameter_description := p_prev_time_level_value;
6803 l_parameter_rec.period_date := p_prev_effective_end_date;
6804
6805 CREATE_PARAMETER ( p_user_session_rec => p_user_session_rec,
6806 p_parameter_rec => l_parameter_rec,
6807 x_return_status => x_return_status,
6808 x_msg_count => x_msg_count,
6809 x_msg_data => x_msg_data
6810 );
6811
6812 END IF ; --pAsOfDate
6813
6814 END saveDateParams;
6815
6816 --BugFix 3308824
6817 PROCEDURE SAVE_TIME_PARAMS(pTimeAttribute IN VARCHAR2,
6818 p_user_Session_rec IN BIS_PMV_SESSION_PVT.session_rec_type,
6819 x_time_level_id IN VARCHAR2,
6820 x_time_level_value IN VARCHAR2,
6821 x_start_date IN DATE,
6822 x_end_date IN DATE
6823 )IS
6824
6825 l_return_status VARCHAR2(2000);
6826 l_msg_count NUMBER;
6827 l_msg_data VARCHAR2(2000);
6828 l_parameter_rec parameter_rec_type;
6829 l_time_parameter_rec time_parameter_rec_type;
6830
6831 BEGIN
6832
6833 l_time_parameter_rec.parameter_name := pTimeAttribute;
6834 l_time_parameter_rec.dimension := substr(pTimeAttribute,1,instr(pTimeAttribute,'+')-1);
6835 l_time_parameter_rec.from_description := x_time_level_id;
6836 l_time_parameter_rec.to_description := x_time_level_id;
6837 l_time_parameter_rec.default_flag := 'N';
6838 l_time_parameter_rec.id_flag := 'Y';
6839 --BugFix 3515051
6840 VALIDATE_AND_SAVE_TIME(p_user_session_rec => p_user_session_rec,
6841 p_time_parameter_rec => l_time_parameter_rec,
6842 x_return_status => l_return_status,
6843 x_msg_count => l_msg_count,
6844 x_msg_data => l_msg_data);
6845
6846 /*
6847 l_parameter_rec.dimension := l_time_parameter_rec.dimension;
6848 l_parameter_rec.default_flag := l_time_parameter_rec.default_flag;
6849
6850 l_parameter_rec.parameter_name := l_time_parameter_rec.parameter_name || '_FROM';
6851 l_parameter_rec.parameter_description := l_time_parameter_rec.from_description;
6852 l_parameter_Rec.parameter_Value := l_Time_parameter_rec.from_description;
6853 l_parameter_Rec.period_date := x_start_date;
6854 --create the "from" record
6855
6856 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
6857 ,p_parameter_rec => l_parameter_rec
6858 ,x_return_status => l_return_status
6859 ,x_msg_count => l_msg_count
6860 ,x_msg_data => l_msg_data);
6861
6862 l_parameter_rec.parameter_name := l_time_parameter_rec.parameter_name || '_TO';
6863 l_parameter_rec.parameter_description := l_time_parameter_rec.to_description;
6864 l_parameter_Rec.parameter_Value := l_Time_parameter_rec.to_description;
6865 l_parameter_Rec.period_date := x_end_date;
6866
6867 --create the "to" record
6868 CREATE_PARAMETER (p_user_session_rec => p_user_session_rec
6869 ,p_parameter_rec => l_parameter_rec
6870 ,x_return_status => l_return_status
6871 ,x_msg_count => l_msg_count
6872 ,x_msg_data => l_msg_data);
6873 */
6874 END SAVE_TIME_PARAMS;
6875
6876 PROCEDURE COMPUTE_AND_SAVE_DATES(
6877 pTimeAttribute IN VARCHAR2,
6878 pTimeComparisonType IN VARCHAR2,
6879 p_user_Session_rec BIS_PMV_SESSION_PVT.session_rec_type,
6880 x_time_level_id OUT NOCOPY VARCHAR2,
6881 x_time_level_value OUT NOCOPY VARCHAR2
6882 ) IS
6883 l_time_attr_2 varchar2(2000);
6884 l_time_level_id VARCHAR2(2000);
6885 l_time_level_value VARCHAR2(2000);
6886
6887 l_asof_date VARCHAR2(80);
6888 l_prev_asof_date_desc varchar2(80);
6889 l_curr_report_start_date_desc varchar2(80);
6890 l_prev_report_start_date_desc varchar2(80);
6891
6892 l_prev_asof_Date DATE;
6893 l_curr_effective_start_date DATE;
6894 l_curr_effective_end_date DATE;
6895 l_curr_report_start_date DATE;
6896 l_prev_report_start_date DATE;
6897 -- nbarik - 07/17/03 - Bug Fix 2999602
6898 l_prev_effective_start_date DATE;
6899 l_prev_effective_end_date DATE;
6900 l_prev_time_level_id VARCHAR2(2000);
6901 l_prev_time_level_value VARCHAR2(2000);
6902
6903 l_return_status VARCHAR2(2000);
6904 l_msg_count NUMBER;
6905 l_msg_data VARCHAR2(2000);
6906 l_error varchar2(1000);
6907
6908 BEGIN
6909 BIS_PMV_TIME_LEVELS_PVT.GET_COMPUTED_DATES(
6910 p_region_code => p_user_session_rec.region_code,
6911 p_resp_id => p_user_session_rec.responsibility_id,
6912 p_time_comparison_type => pTimeComparisonType,
6913 p_asof_date => NULL, --serao - bug 3087341
6914 p_time_level => pTimeAttribute,
6915 x_prev_asof_Date => l_prev_asof_date,
6916 x_curr_effective_start_date => l_curr_effective_start_date,
6917 x_curr_effective_end_date => l_curr_effective_end_date,
6918 x_curr_report_Start_date => l_curr_report_start_date,
6919 x_prev_report_Start_date => l_prev_report_start_date,
6920 x_time_level_id => l_time_level_id,
6921 x_time_level_value => l_time_level_value,
6922 x_prev_effective_start_date => l_prev_effective_start_date,
6923 x_prev_effective_end_date => l_prev_effective_end_date,
6924 x_prev_time_level_id => l_prev_time_level_id,
6925 x_prev_time_level_value => l_prev_time_level_value,
6926 x_return_status => l_return_status,
6927 x_msg_count => l_msg_count,
6928 x_msg_Data => l_msg_Data
6929 );
6930 x_time_level_id := l_time_level_id;
6931 x_time_level_value := l_time_level_value;
6932
6933 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
6934 RETURN;
6935 END IF;
6936
6937 saveDateParams(
6938 p_user_Session_rec => p_user_Session_rec,
6939 pAsOfDate => SYSDATE,
6940 p_prev_asof_Date => l_prev_asof_date,
6941 p_curr_effective_start_date => l_curr_effective_start_date,
6942 p_curr_effective_end_date => l_curr_effective_end_date ,
6943 p_curr_report_Start_date => l_curr_report_start_date,
6944 p_prev_report_Start_date => l_prev_report_start_date,
6945 p_time_level_id => l_time_level_id,
6946 p_time_level_value => l_time_level_value,
6947 p_prev_effective_start_date => l_prev_effective_start_date,
6948 p_prev_effective_end_date => l_prev_effective_end_date ,
6949 p_prev_time_level_id => l_prev_time_level_id,
6950 p_prev_time_level_value => l_prev_time_level_value
6951 );
6952
6953 --BugFix 3308824
6954 SAVE_TIME_PARAMS(pTimeAttribute => pTimeAttribute,
6955 p_user_Session_rec => p_user_Session_rec,
6956 x_time_level_id => l_time_level_id,
6957 x_time_level_value => l_time_level_value,
6958 x_start_date => l_curr_report_start_date,
6959 x_end_date => l_curr_effective_end_date
6960 );
6961
6962
6963 END COMPUTE_AND_SAVE_DATES;
6964
6965 --BugFix 3099789 Moved Time Saving logic from override preFunction to copy_time_params
6966 -- nbarik - 02/19/04 - BugFix 3441967 - Added p_IsPreFuncTCTExists, p_IsPreFuncCalcDatesExists
6967 PROCEDURE COPY_TIME_PARAMS(pSessionId in varchar2,
6968 pUserId in varchar2,
6969 pFunctionName in varchar2,
6970 pRegionCode in varchar2,
6971 pRespId in varchar2 default null,
6972 pParameterGroup IN parameter_group_tbl_type,
6973 pTCTExists in boolean default false,
6974 p_IsPreFuncTCTExists IN BOOLEAN DEFAULT TRUE,
6975 p_IsPreFuncCalcDatesExists IN BOOLEAN DEFAULT TRUE,
6976 x_time_attribute OUT NOCOPY VARCHAR2
6977 )IS
6978 CURSOR getFunctionParameters IS
6979 SELECT attribute_name, dimension, session_value, session_description, period_date
6980 FROM bis_user_attributes
6981 WHERE function_name =pFunctionName
6982 AND session_id = pSessionId
6983 AND user_id = pUserId
6984 AND (attribute_name ='AS_OF_DATE' OR dimension ='TIME');
6985
6986 vAttributeCodeTable BISVIEWER.t_char;
6987 vDimensionTable BISVIEWER.t_char;
6988 vSessionValueTable BISVIEWER.t_char;
6989 vSessionDescTable BISVIEWER.t_char;
6990 vPeriodDateTable BISVIEWER.t_date;
6991
6992 l_time_attr_2 varchar2(2000);
6993 l_time_level_id VARCHAR2(2000);
6994 l_time_level_value VARCHAR2(2000);
6995
6996 l_asof_date VARCHAR2(80);
6997 l_prev_asof_date_desc varchar2(80);
6998 l_curr_report_start_date_desc varchar2(80);
6999 l_prev_report_start_date_desc varchar2(80);
7000
7001 l_prev_asof_Date DATE;
7002 l_curr_effective_start_date DATE;
7003 l_curr_effective_end_date DATE;
7004 l_curr_report_start_date DATE;
7005 l_prev_report_start_date DATE;
7006 -- nbarik - 07/17/03 - Bug Fix 2999602
7007 l_prev_effective_start_date DATE;
7008 l_prev_effective_end_date DATE;
7009 l_prev_time_level_id VARCHAR2(2000);
7010 l_prev_time_level_value VARCHAR2(2000);
7011
7012 l_return_status VARCHAR2(2000);
7013 l_msg_count NUMBER;
7014 l_msg_data VARCHAR2(2000);
7015
7016 IsTimeDimensionInGroup BOOLEAN := FALSE;
7017 l_count number;
7018 l_canonical_date_format VARCHAR2(30) :='DD/MM/RRRR';
7019 BEGIN
7020 IF getFunctionParameters%ISOPEN THEN
7021 CLOSE getFunctionParameters;
7022 END IF;
7023 OPEN getFunctionParameters;
7024 FETCH getFunctionParameters BULK COLLECT INTO vAttributeCodeTable, vDimensionTable, vSessionValueTable, vSessionDescTable, vPeriodDateTable;
7025 CLOSE getFunctionParameters;
7026
7027 --nbarik - 10/21/03 - Bug Fix 3201277
7028 IF vAttributeCodeTable IS NOT NULL AND vAttributeCodeTable.COUNT > 0 THEN
7029 FOR k IN vAttributeCodeTable.FIRST..vAttributeCodeTable.LAST LOOP
7030 IF vDimensionTable(k) = 'TIME' THEN
7031 x_time_attribute := vAttributeCodeTable(k);
7032 EXIT;
7033 END IF;
7034 END LOOP;
7035 END IF;
7036
7037 --serao - bug3093012- if there is no time, then there is no need to
7038 -- calculate the as_of_date related params
7039 IsTimeDimensionInGroup := IsdimensionInParamGrp( 'TIME', pParameterGroup);
7040
7041 --aleung, 7/16/03, bug 2965660
7042 IF (pTCTExists <> true AND IsTimeDimensionInGroup) THEN
7043
7044 IF vAttributeCodeTable IS NOT NULL AND vAttributeCodeTable.COUNT > 0 THEN
7045 FOR i IN vAttributeCodeTable.FIRST..vAttributeCodeTable.LAST LOOP
7046 IF vAttributeCodeTable(i) = 'AS_OF_DATE' THEN
7047 l_asof_date := vSessionValueTable(i);
7048 ELSIF substr(vAttributeCodeTable(i), length(vAttributeCodeTable(i))-length('_FROM')+1) = '_FROM' THEN
7049 l_time_attr_2 := substr(vAttributeCodeTable(i),1, length(vAttributeCodeTable(i))-length('_FROM'));
7050 END IF;
7051 END LOOP;
7052 END IF;
7053
7054 --serao - added timeattr check for bug 3113428
7055 IF (l_asof_date IS NOT NULL AND l_time_attr_2 IS NOT NULL) THEN
7056 --get all the date information.
7057 -- nbarik - 07/17/03 - Bug Fix 2999602
7058
7059 BIS_PMV_TIME_LEVELS_PVT.GET_COMPUTED_DATES(
7060 p_region_code => pRegionCode,
7061 p_resp_id => pRespId,
7062 p_time_comparison_type => 'TIME_COMPARISON_TYPE+SEQUENTIAL',
7063 p_asof_date => l_asof_date,
7064 p_time_level => l_time_attr_2,
7065 x_prev_asof_Date => l_prev_asof_date,
7066 x_curr_effective_start_date => l_curr_effective_start_date,
7067 x_curr_effective_end_date => l_curr_effective_end_date,
7068 x_curr_report_Start_date => l_curr_report_start_date,
7069 x_prev_report_Start_date => l_prev_report_start_date,
7070 x_time_level_id => l_time_level_id,
7071 x_time_level_value => l_time_level_value,
7072 x_prev_effective_start_date => l_prev_effective_start_date,
7073 x_prev_effective_end_date => l_prev_effective_end_date,
7074 x_prev_time_level_id => l_prev_time_level_id,
7075 x_prev_time_level_value => l_prev_time_level_value,
7076 x_return_status => l_return_status,
7077 x_msg_count => l_msg_count,
7078 x_msg_Data => l_msg_Data
7079 );
7080
7081 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7082 RETURN;
7083 END IF;
7084
7085 --l_prev_asof_date_desc := to_char(l_prev_asof_date,'DD-MON-YYYY');
7086 --l_curr_report_start_date_desc := to_char(l_curr_report_start_date,'DD-MON-YYYY');
7087 --l_prev_report_start_date_desc := to_char(l_prev_report_start_date,'DD-MON-YYYY');
7088
7089 l_prev_asof_date_desc := to_char(l_prev_asof_date,l_canonical_date_format);
7090 l_curr_report_start_date_desc := to_char(l_curr_report_start_date,l_canonical_date_format);
7091 l_prev_report_start_date_desc := to_char(l_prev_report_start_date,l_canonical_date_format);
7092
7093
7094 IF vAttributeCodeTable IS NOT NULL AND vAttributeCodeTable.COUNT > 0 THEN
7095
7096 l_count := vAttributeCodeTable.COUNT+1;
7097 vAttributeCodeTable(l_count) := 'BIS_P_ASOF_DATE';
7098 vSessionValueTable(l_count) := l_prev_asof_date_desc;
7099 vSessionDescTable(l_count) := l_prev_asof_date_desc;
7100 vPeriodDateTable(l_count) := l_prev_asof_date;
7101 vDimensionTable(l_count) := null;
7102 l_count := l_count + 1;
7103
7104 vAttributeCodeTable(l_count) := 'BIS_CUR_REPORT_START_DATE';
7105 vSessionValueTable(l_count) := l_curr_report_start_date_desc;
7106 vSessionDescTable(l_count) := l_curr_report_start_date_desc;
7107 vPeriodDateTable(l_count) := l_curr_report_start_date;
7108 vDimensionTable(l_count) := null;
7109 l_count := l_count + 1;
7110
7111 vAttributeCodeTable(l_count) := 'BIS_PREV_REPORT_START_DATE';
7112 vSessionValueTable(l_count) := l_prev_report_start_date_desc;
7113 vSessionDescTable(l_count) := l_prev_report_start_date_desc;
7114 vPeriodDateTable(l_count) := l_prev_report_start_date;
7115 vDimensionTable(l_count) := null;
7116 l_count := l_count + 1;
7117
7118 vAttributeCodeTable(l_count) := 'BIS_PREVIOUS_EFFECTIVE_START_DATE';
7119 vSessionValueTable(l_count) := l_prev_time_level_id;
7120 vSessionDescTable(l_count) := l_prev_time_level_value;
7121 vPeriodDateTable(l_count) := l_prev_effective_start_date;
7122 vDimensionTable(l_count) := null;
7123 l_count := l_count + 1;
7124
7125 vAttributeCodeTable(l_count) := 'BIS_PREVIOUS_EFFECTIVE_END_DATE';
7126 vSessionValueTable(l_count) := l_prev_time_level_id;
7127 vSessionDescTable(l_count) := l_prev_time_level_value;
7128 vPeriodDateTable(l_count) := l_prev_effective_end_date;
7129 vDimensionTable(l_count) := null;
7130
7131 END IF;
7132
7133 END IF; -- copy params only if the get_computed func was called , bug 3543057
7134 -- nbarik - 02/19/04 - Bug Fix 3441967
7135 /*The below condition will be true only when we are navigating from a report which don't
7136 have TCT defined to a report which has TCT defined. So in this case we don't want to
7137 calculate date related parameters again. Instead we will copy the TCT as SEQUENTIAL,
7138 since date parameters saved for previous report is based on SEQUENTIAL.
7139 */
7140 ELSIF (pTCTExists AND ( NOT p_IsPreFuncTCTExists ) AND p_IsPreFuncCalcDatesExists) THEN
7141 IF vAttributeCodeTable IS NOT NULL AND vAttributeCodeTable.COUNT > 0 THEN
7142 l_count := vAttributeCodeTable.COUNT+1;
7143 vAttributeCodeTable(l_count) := 'TIME_COMPARISON_TYPE+SEQUENTIAL';
7144 vSessionValueTable(l_count) := 'TIME_COMPARISON_TYPE+SEQUENTIAL';
7145 vSessionDescTable(l_count) := 'TIME_COMPARISON_TYPE+SEQUENTIAL';
7146 vPeriodDateTable(l_count) := null;
7147 vDimensionTable(l_count) := 'TIME_COMPARISON_TYPE';
7148 END IF;
7149 END IF;--!pTCTExists
7150
7151 deleteAndInsertIntoSession(
7152 pSessionId => pSessionId,
7153 pUserId => pUserId,
7154 pFunctionName => pFunctionName,
7155 pAttributeNameTbl => vAttributeCodeTable,
7156 pDimensionTbl => vDimensionTable,
7157 pSessionValueTbl => vSessionValueTable,
7158 pSessionDescTbl => vSessionDescTable,
7159 pPeriodDateTbl => vPeriodDateTable,
7160 pParameterGroup => pParameterGroup,
7161 pIncludePrevAsOfDate => TRUE
7162 );
7163
7164
7165 END COPY_TIME_PARAMS;
7166
7167 --Pass as of date as Date 3094234
7168 PROCEDURE UPDATE_COMPUTED_DATES(
7169 p_user_id IN NUMBER,
7170 p_page_id IN NUMBER,
7171 p_function_name IN VARCHAR2,
7172 p_time_comparison_type IN VARCHAR2,
7173 p_asof_date IN DATE,
7174 p_time_level IN VARCHAR2,
7175 x_prev_asof_Date OUT NOCOPY DATE,
7176 x_curr_report_Start_date OUT NOCOPY DATE,
7177 x_prev_report_Start_date OUT NOCOPY DATE,
7178 x_curr_effective_start_date OUT NOCOPY DATE,
7179 x_curr_effective_end_date OUT NOCOPY DATE,
7180 x_time_level_id OUT NOCOPY VARCHAR2,
7181 x_time_level_value OUT NOCOPY VARCHAR2,
7182 x_prev_effective_start_date OUT NOCOPY DATE,
7183 x_prev_effective_end_date OUT NOCOPY DATE,
7184 x_prev_time_level_id OUT NOCOPY VARCHAR2,
7185 x_prev_time_level_value OUT NOCOPY VARCHAR2,
7186 x_prev_asof_Date_char OUT NOCOPY VARCHAR2,
7187 x_curr_report_Start_date_char OUT NOCOPY VARCHAR2,
7188 x_prev_report_Start_date_char OUT NOCOPY VARCHAR2,
7189 x_curr_eff_start_date_char OUT NOCOPY VARCHAR2,
7190 x_curr_eff_end_date_char OUT NOCOPY VARCHAR2,
7191 x_prev_eff_start_date_char OUT NOCOPY VARCHAR2,
7192 x_prev_eff_end_date_char OUT NOCOPY VARCHAR2,
7193 x_return_status OUT NOCOPY VARCHAR2,
7194 p_plug_id IN NUMBER DEFAULT 0
7195 )
7196 IS
7197
7198 l_RegionCode varchar2(80);
7199
7200 l_AsOfDate_Char varchar2(80);
7201 l_PrevAsOfDate_Char varchar2(80);
7202 l_CurrReportStartDate_Char varchar2(80);
7203 l_PrevReportStartDate_Char varchar2(80);
7204
7205 l_TimeLevelId varchar2(2000);
7206 l_TimeLevelValue varchar2(2000);
7207 l_PrevTimeLevelId varchar2(2000);
7208 l_PrevTimeLevelValue varchar2(2000);
7209
7210 l_PrevAsOfDate date;
7211 l_CurrReportStartDate date;
7212 l_PrevReportStartDate date;
7213 l_CurrEffStartDate date;
7214 l_CurrEffEndDate date;
7215 l_PrevEffStartDate date;
7216 l_PrevEffEndDate date;
7217
7218 l_msg_count number;
7219 l_msg_Data varchar2(200);
7220 l_canonical_format varchar2(100) := 'DD/MM/YYYY';
7221
7222
7223 CURSOR getScheduleId (p_plug_id NUMBER, p_user_id NUMBER) IS
7224 SELECT SCHEDULE_ID
7225 FROM BIS_SCHEDULE_PREFERENCES
7226 WHERE PLUG_ID = p_plug_id
7227 AND USER_ID = p_user_id;
7228
7229 l_schedule_id NUMBER;
7230
7231 BEGIN
7232
7233 l_RegionCode := BIS_PMV_UTIL.getReportRegion(p_function_name);
7234 l_AsOfDate_Char := to_char(p_asof_date,l_canonical_format);
7235
7236 BIS_PMV_TIME_LEVELS_PVT.GET_COMPUTED_DATES (
7237 p_region_code => l_RegionCode,
7238 p_resp_id => null,
7239 p_time_comparison_type => p_time_comparison_type,
7240 p_asof_date => l_AsOfDate_Char,
7241 p_time_level => p_time_level,
7242 x_prev_asof_Date => l_PrevAsOfDate,
7243 x_curr_effective_start_date => l_CurrEffStartDate,
7244 x_curr_effective_end_date => l_CurrEffEndDate,
7245 x_curr_report_Start_date => l_CurrReportStartDate,
7246 x_prev_report_Start_date => l_PrevReportStartDate,
7247 x_time_level_id => l_TimeLevelId,
7248 x_time_level_value => l_TimeLevelValue,
7249 x_prev_effective_start_date => l_PrevEffStartDate,
7250 x_prev_effective_end_date => l_PrevEffEndDate,
7251 x_prev_time_level_id => l_PrevTimeLevelId,
7252 x_prev_time_level_value => l_PrevTimeLevelValue,
7253 x_return_status => x_return_status,
7254 x_msg_count => l_msg_count,
7255 x_msg_Data => l_msg_data
7256 );
7257
7258
7259 l_PrevAsOfDate_Char := to_char(l_PrevAsOfDate, l_canonical_format);
7260 l_CurrReportStartDate_Char := to_char(l_CurrReportStartDate, l_canonical_format);
7261 l_PrevReportStartDate_Char := to_char(l_PrevReportStartDate, l_canonical_format);
7262 x_curr_eff_start_date_char := to_char(l_CurrEffStartDate, l_canonical_format);
7263 x_curr_eff_end_date_char := to_char(l_CurrEffEndDate, l_canonical_format);
7264 x_prev_eff_start_date_char := to_char(l_PrevEffStartDate, l_canonical_format);
7265 x_prev_eff_end_date_char := to_char(l_PrevEffEndDate, l_canonical_format);
7266
7267
7268 IF p_page_id IS NULL THEN
7269 --update bis_user_attributes for schedule_id -ansingh
7270 IF getScheduleId%ISOPEN THEN
7271 CLOSE getScheduleId;
7272 END IF;
7273 OPEN getScheduleId(p_plug_id, p_user_id);
7274 FETCH getScheduleId INTO l_schedule_id;
7275 CLOSE getScheduleId;
7276
7277
7278 UPDATE BIS_USER_ATTRIBUTES SET
7279 session_value = DECODE(attribute_name, 'AS_OF_DATE', l_AsOfDate_Char, 'BIS_P_ASOF_DATE', l_PrevAsOfDate_Char,
7280 'BIS_CUR_REPORT_START_DATE', l_CurrReportStartDate_Char, 'BIS_PREV_REPORT_START_DATE', l_PrevReportStartDate_Char,
7281 'BIS_PREVIOUS_EFFECTIVE_START_DATE', l_PrevTimeLevelId, 'BIS_PREVIOUS_EFFECTIVE_END_DATE', l_PrevTimeLevelId,
7282 p_time_level || '_FROM', l_TimeLevelId, p_time_level || '_TO', l_TimeLevelId),
7283
7284 session_description = DECODE(attribute_name, 'AS_OF_DATE', l_AsOfDate_Char, 'BIS_P_ASOF_DATE', l_PrevAsOfDate_Char,
7285 'BIS_CUR_REPORT_START_DATE', l_CurrReportStartDate_Char, 'BIS_PREV_REPORT_START_DATE', l_PrevReportStartDate_Char,
7286 'BIS_PREVIOUS_EFFECTIVE_START_DATE', l_PrevTimeLevelValue, 'BIS_PREVIOUS_EFFECTIVE_END_DATE', l_PrevTimeLevelValue,
7287 p_time_level || '_FROM', l_TimeLevelValue, p_time_level || '_TO', l_TimeLevelValue),
7288
7289 period_date = DECODE(attribute_name, 'AS_OF_DATE', trunc(p_asof_date), 'BIS_P_ASOF_DATE', l_PrevAsOfDate,
7290 'BIS_CUR_REPORT_START_DATE', l_CurrReportStartDate, 'BIS_PREV_REPORT_START_DATE', l_PrevReportStartDate,
7291 'BIS_PREVIOUS_EFFECTIVE_START_DATE', l_PrevEffStartDate, 'BIS_PREVIOUS_EFFECTIVE_END_DATE', l_PrevEffEndDate,
7292 p_time_level || '_FROM', l_CurrEffStartDate, p_time_level || '_TO', l_CurrEffEndDate),
7293
7294 last_update_date = sysdate,
7295 last_updated_by = p_user_id
7296 WHERE schedule_id = l_schedule_id
7297 AND attribute_name IN ('AS_OF_DATE','BIS_P_ASOF_DATE','BIS_CUR_REPORT_START_DATE','BIS_PREV_REPORT_START_DATE',
7298 'BIS_PREVIOUS_EFFECTIVE_START_DATE','BIS_PREVIOUS_EFFECTIVE_END_DATE',p_time_level || '_FROM', p_time_level || '_TO');
7299 COMMIT;
7300
7301 ELSE
7302 --update bis_user_attributes for page_id -ansingh
7303 UPDATE BIS_USER_ATTRIBUTES SET
7304 session_value = DECODE(attribute_name, 'AS_OF_DATE', l_AsOfDate_Char, 'BIS_P_ASOF_DATE', l_PrevAsOfDate_Char,
7305 'BIS_CUR_REPORT_START_DATE', l_CurrReportStartDate_Char, 'BIS_PREV_REPORT_START_DATE', l_PrevReportStartDate_Char,
7306 'BIS_PREVIOUS_EFFECTIVE_START_DATE', l_PrevTimeLevelId, 'BIS_PREVIOUS_EFFECTIVE_END_DATE', l_PrevTimeLevelId,
7307 p_time_level || '_FROM', l_TimeLevelId, p_time_level || '_TO', l_TimeLevelId),
7308
7309 session_description = DECODE(attribute_name, 'AS_OF_DATE', l_AsOfDate_Char, 'BIS_P_ASOF_DATE', l_PrevAsOfDate_Char,
7310 'BIS_CUR_REPORT_START_DATE', l_CurrReportStartDate_Char, 'BIS_PREV_REPORT_START_DATE', l_PrevReportStartDate_Char,
7311 'BIS_PREVIOUS_EFFECTIVE_START_DATE', l_PrevTimeLevelValue, 'BIS_PREVIOUS_EFFECTIVE_END_DATE', l_PrevTimeLevelValue,
7312 p_time_level || '_FROM', l_TimeLevelValue, p_time_level || '_TO', l_TimeLevelValue),
7313
7314 period_date = DECODE(attribute_name, 'AS_OF_DATE', trunc(p_asof_date), 'BIS_P_ASOF_DATE', l_PrevAsOfDate,
7315 'BIS_CUR_REPORT_START_DATE', l_CurrReportStartDate, 'BIS_PREV_REPORT_START_DATE', l_PrevReportStartDate,
7316 'BIS_PREVIOUS_EFFECTIVE_START_DATE', l_PrevEffStartDate, 'BIS_PREVIOUS_EFFECTIVE_END_DATE', l_PrevEffEndDate,
7317 p_time_level || '_FROM', l_CurrEffStartDate, p_time_level || '_TO', l_CurrEffEndDate),
7318
7319 last_update_date = sysdate,
7320 last_updated_by = p_user_id
7321 WHERE user_id = p_user_id
7322 AND page_id = p_page_id
7323 AND attribute_name IN ('AS_OF_DATE','BIS_P_ASOF_DATE','BIS_CUR_REPORT_START_DATE','BIS_PREV_REPORT_START_DATE',
7324 'BIS_PREVIOUS_EFFECTIVE_START_DATE','BIS_PREVIOUS_EFFECTIVE_END_DATE',p_time_level || '_FROM', p_time_level || '_TO');
7325 COMMIT;
7326
7327 END IF;
7328
7329
7330 x_prev_asof_Date := l_PrevAsOfDate;
7331 x_curr_report_Start_date := l_CurrReportStartDate;
7332 x_prev_report_Start_date := l_PrevReportStartDate;
7333 x_curr_effective_start_date := l_CurrEffStartDate;
7334 x_curr_effective_end_date := l_CurrEffEndDate;
7335 x_time_level_id := l_TimeLevelId;
7336 x_time_level_value := l_TimeLevelValue;
7337 x_prev_effective_start_date := l_PrevEffStartDate;
7338 x_prev_effective_end_date := l_PrevEffEndDate;
7339 x_prev_time_level_id := l_PrevTimeLevelId;
7340 x_prev_time_level_value := l_PrevTimeLevelValue;
7341 x_prev_asof_Date_char := l_PrevAsOfDate_Char;
7342 x_curr_report_Start_date_char := l_CurrReportStartDate_Char;
7343 x_prev_report_Start_date_char := l_PrevReportStartDate_Char;
7344 x_return_status := 'S';
7345 EXCEPTION
7346 WHEN others THEN
7347 rollback;
7348 x_return_status := 'E';
7349 End UPDATE_COMPUTED_DATES;
7350
7351 END BIS_PMV_PARAMETERS_PVT;