1 PACKAGE BODY ZPB_BUSAREA_MAINT AS
2 /* $Header: ZPBVBAMB.pls 120.36 2007/12/04 14:36:43 mbhat noship $ */
3
4 TYPE epb_curs_type is REF CURSOR;
5
6 -------------------------------------------------------------------------
7 -- GET_DEFAULT_BUS_AREA_NAME - Returns a default Business Area name
8 --
9 -------------------------------------------------------------------------
10 FUNCTION GET_DEFAULT_BUS_AREA_NAME return VARCHAR2
11 is
12 l_count NUMBER;
13 l_name VARCHAR2(100);
14 begin
15 FND_MESSAGE.SET_NAME('ZPB', 'ZPB_EPB_BUSINESS_AREA');
16 l_name := FND_MESSAGE.GET;
17
18 select count(*)
19 into l_count
20 from ZPB_BUSINESS_AREAS_VL
21 where NAME = l_name;
22
23 if (l_count > 0) then
24 l_name := l_name||' '||l_count;
25 end if;
26 return l_name;
27 end GET_DEFAULT_BUS_AREA_NAME;
28
29 -------------------------------------------------------------------------
30 -- GET_PARENT_VERSION_TYPE - Returns the "Parent" version type
31 --
32 -- IN: p_version_type - The version type
33 --
34 -- OUT: The "parent" version type
35 -------------------------------------------------------------------------
36 FUNCTION GET_PARENT_VERSION_TYPE (p_version_type IN VARCHAR2)
37 return VARCHAR2
38 is
39 begin
40 if (p_version_type = 'T') then
41 return 'D';
42 elsif (p_version_type = 'D') then
43 return 'P';
44 elsif (p_version_type = 'P') then
45 return 'R';
46 else return null;
47 end if;
48 end GET_PARENT_VERSION_TYPE;
49
50
51
52 -------------------------------------------------------------------------
53 -- ADD_ATTRIBUTE - Adds an attribute to the Business Area version
54 --
55 -- IN: p_version_id - The version ID
56 -- p_logical_dim_id - Logical Dimension Id
57 -- p_attribute_id - The FEM Attribute ID
58 -------------------------------------------------------------------------
59 PROCEDURE ADD_ATTRIBUTE (p_version_id IN NUMBER,
60 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
61 p_attribute_id IN NUMBER)
62 is
63 begin
64 insert into ZPB_BUSAREA_ATTRIBUTES
65 (VERSION_ID,
66 LOGICAL_DIM_ID, -- "Consistent Dimension"
67 ATTRIBUTE_ID,
68 CREATION_DATE,
69 CREATED_BY,
70 LAST_UPDATE_LOGIN,
71 LAST_UPDATE_DATE,
72 LAST_UPDATED_BY)
73 values
74 (p_version_id,
75 p_logical_dim_id, -- "Consistent Dimension"
76 p_attribute_id,
77 sysdate,
78 FND_GLOBAL.USER_ID,
79 FND_GLOBAL.LOGIN_ID,
80 sysdate,
81 FND_GLOBAL.USER_ID);
82
83 end ADD_ATTRIBUTE;
84
85 -------------------------------------------------------------------------
86 -- ADD_CONDITION - Adds an attribute condition to the Business Area version
87 --
88 -- IN: p_version_id - The version ID
89 -- p_logical_dim_id - Logical Dimension Id
90 -- p_attribute_id - The FEM Attribute ID
91 -- p_value - The attribute value
92 -- p_value_set_id - The value set ID, for VS-enabled attributes
93 -- p_operation - The operator for the condition (default null)
94 -------------------------------------------------------------------------
95 PROCEDURE ADD_CONDITION (p_version_id IN NUMBER,
96 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
97 p_attribute_id IN NUMBER,
98 p_value IN VARCHAR2,
99 p_value_set_id IN NUMBER,
100 p_operation IN VARCHAR2)
101 is
102 begin
103 insert into ZPB_BUSAREA_CONDITIONS
104 (VERSION_ID,
105 LOGICAL_DIM_ID, -- "Consistent Dimension"
106 ATTRIBUTE_ID,
107 VALUE,
108 VALUE_SET_ID,
109 OPERATION,
110 CREATION_DATE,
111 CREATED_BY,
112 LAST_UPDATE_LOGIN,
113 LAST_UPDATE_DATE,
114 LAST_UPDATED_BY)
115 values
116 (p_version_id,
117 p_logical_dim_id, -- "Consistent Dimension"
118 p_attribute_id,
119 p_value,
120 p_value_set_id,
121 p_operation,
122 sysdate,
123 FND_GLOBAL.USER_ID,
124 FND_GLOBAL.LOGIN_ID,
125 sysdate,
126 FND_GLOBAL.USER_ID);
127 end ADD_CONDITION;
128
129 -------------------------------------------------------------------------
130 -- ADD_DATASET - Adds a dataset to the Business Area version
131 --
132 -- IN: p_version_id - The version ID
133 -- p_dataset_id - The FEM Dataset ID
134 -------------------------------------------------------------------------
135 PROCEDURE ADD_DATASET (p_version_id IN NUMBER,
136 p_dataset_id IN NUMBER)
137 is
138 begin
139 insert into ZPB_BUSAREA_DATASETS
140 (VERSION_ID,
141 DATASET_ID,
142 CREATION_DATE,
143 CREATED_BY,
144 LAST_UPDATE_LOGIN,
145 LAST_UPDATE_DATE,
146 LAST_UPDATED_BY)
147 values
148 (p_version_id,
149 p_dataset_id,
150 sysdate,
151 FND_GLOBAL.USER_ID,
152 FND_GLOBAL.LOGIN_ID,
153 sysdate,
154 FND_GLOBAL.USER_ID);
155 end ADD_DATASET;
156
157 -------------------------------------------------------------------------
158 -- ADD_DIMENSION - Adds a dimension to the Business Area version
159 --
160 -- IN: p_version_id - The version ID
161 -- p_func_dim_set_id - Functional Dimension Set Id
162 -- p_dimension_id - The FEM Dimension ID
163 -------------------------------------------------------------------------
164 PROCEDURE ADD_DIMENSION (p_version_id IN NUMBER,
165 p_func_dim_set_id IN NUMBER, -- "Consistent Dimension"
166 p_dimension_id IN NUMBER)
167 is
168 l_def_hier ZPB_BUSAREA_DIMENSIONS.DEFAULT_HIERARCHY_ID%type;
169 l_ledger ZPB_BUSAREA_LEDGERS.LEDGER_ID%type;
170 l_cal_dim_id FEM_XDIM_DIMENSIONS.DIMENSION_ID%type;
171 l_cal_dim_col FEM_XDIM_DIMENSIONS.MEMBER_COL%type;
172 l_cal_dim_code FEM_XDIM_DIMENSIONS.MEMBER_DISPLAY_CODE_COL%type;
173 l_vs_req FEM_XDIM_DIMENSIONS.VALUE_SET_REQUIRED_FLAG%type;
174 l_def_mbr_code FEM_XDIM_DIMENSIONS.DEFAULT_MEMBER_DISPLAY_CODE%type;
175 l_dim_table FEM_XDIM_DIMENSIONS.MEMBER_B_TABLE_NAME%type;
176 l_attr_table FEM_XDIM_DIMENSIONS.ATTRIBUTE_TABLE_NAME%type;
177 l_attr_id FEM_DIM_ATTRIBUTES_B.ATTRIBUTE_ID%type;
178 l_is_line ZPB_BUSAREA_DIMENSIONS.EPB_LINE_DIMENSION%type;
179 l_hier NUMBER;
180 l_count NUMBER;
181 l_command VARCHAR2(2000);
182 l_logical_dim_id ZPB_BUSAREA_DIMENSIONS.LOGICAL_DIM_ID%type;
183 l_aw_dim_name ZPB_BUSAREA_DIMENSIONS.AW_DIM_NAME%type;
184 l_aw_dim_prefix ZPB_BUSAREA_DIMENSIONS.AW_DIM_PREFIX%type;
185 l_member_b_table FEM_XDIM_DIMENSIONS.MEMBER_B_TABLE_NAME%type;
186 l_dim_type_code FEM_XDIM_DIMENSIONS.DIMENSION_TYPE_CODE%type;
187 l_len number;
188 l_suffix varchar2(1);
189 l_start_ascii_value number;
190 l_ascii_dim_count number;
191
192
193 cursor c_dim_hier_curs is
194 select HIERARCHY_OBJ_ID
195 from FEM_HIERARCHIES
196 where DIMENSION_ID = p_dimension_id
197 and PERSONAL_FLAG = 'N';
198 l_dim_hier c_dim_hier_curs%ROWTYPE;
199
200 l_curs EPB_CURS_TYPE;
201 begin
202 --
203 -- First step is to get the FEM default member/hier for the dimension
204 -- Need to use ledger picked for the business area, or else the
205 -- default ledger profile if ledgers are not picked yet
206 --
207 begin
208 select MIN(LEDGER_ID)
209 into l_ledger
210 from ZPB_BUSAREA_LEDGERS
211 where VERSION_ID = p_version_id;
212 exception
213 when no_data_found then
214 l_ledger := to_number(FND_PROFILE.VALUE_SPECIFIC('FEM_LEDGER',
215 FND_GLOBAL.USER_ID));
216 end;
217
218 select VALUE_SET_REQUIRED_FLAG,
219 decode(DIMENSION_TYPE_CODE, 'LINE', 'Y', 'N')
220 into l_vs_req, l_is_line
221 from FEM_XDIM_DIMENSIONS
222 where DIMENSION_ID = p_dimension_id;
223
224 if (l_vs_req = 'Y') then
225 begin
226 select DEFAULT_HIERARCHY_OBJ_ID
227 into l_def_hier
228 from FEM_GLOBAL_VS_COMBO_DEFS A,
229 FEM_VALUE_SETS_VL B,
230 FEM_LEDGERS_ATTR C,
231 FEM_DIM_ATTRIBUTES_B D,
232 FEM_DIM_ATTR_VERSIONS_B E
233 where D.ATTRIBUTE_VARCHAR_LABEL = 'GLOBAL_VS_COMBO'
234 and D.ATTRIBUTE_ID = E.ATTRIBUTE_ID
235 and E.DEFAULT_VERSION_FLAG = 'Y'
236 and C.ATTRIBUTE_ID = D.ATTRIBUTE_ID
237 and C.DIM_ATTRIBUTE_NUMERIC_MEMBER = A.GLOBAL_VS_COMBO_ID
238 and B.DIMENSION_ID = p_dimension_id
239 and B.VALUE_SET_ID = A.VALUE_SET_ID
240 and C.AW_SNAPSHOT_FLAG = 'N'
241 and C.LEDGER_ID = l_ledger;
242 exception
243 when no_data_found then
244 null;
245 end;
246 elsif (p_dimension_id = 1) then
247 --
248 -- For time, need to look at default member/hier for default calendar
249 --
250 select A.DIMENSION_ID,
251 A.MEMBER_COL,
252 A.MEMBER_DISPLAY_CODE_COL,
253 A.MEMBER_B_TABLE_NAME,
254 A.DEFAULT_MEMBER_DISPLAY_CODE,
255 A.ATTRIBUTE_TABLE_NAME
256 into l_cal_dim_id, l_cal_dim_col, l_cal_dim_code,
257 l_dim_table, l_def_mbr_code, l_attr_table
258 from FEM_XDIM_DIMENSIONS A,
259 FEM_DIMENSIONS_B B
260 where A.DIMENSION_ID = B.DIMENSION_ID
261 and B.DIMENSION_VARCHAR_LABEL = 'CALENDAR';
262
263 l_command := 'select A.DIM_ATTRIBUTE_NUMERIC_MEMBER
264 from '||l_attr_table||' A, FEM_DIM_ATTRIBUTES_B B,
265 FEM_DIM_ATTR_VERSIONS_B C, '||l_dim_table||' D
266 where A.'||l_cal_dim_col||' = D.'||l_cal_dim_col||'
267 and D.'||l_cal_dim_code||' = '''||l_def_mbr_code||'''
268 and A.ATTRIBUTE_ID = B.ATTRIBUTE_ID
269 and A.ATTRIBUTE_ID = C.ATTRIBUTE_ID
270 and B.DIMENSION_ID = '||l_cal_dim_id||'
271 and B.ATTRIBUTE_VARCHAR_LABEL = ''DEFAULT_HIERARCHY''
272 and A.VERSION_ID = C.VERSION_ID
273 and C.DEFAULT_VERSION_FLAG = ''Y''';
274
275 open l_curs for l_command;
276 loop
277 fetch l_curs into l_def_hier;
278 exit when l_curs%NOTFOUND;
279 end loop;
280
281 end if;
282
283 -- "Consistent Dimension"
284 -- Get the Logical Dimension Id from the sequence
285 Select zpb_busarea_logical_dims_seq.nextval
286 into l_logical_dim_id
287 from dual;
288
289 -- "Consistent Dimension"
290 -- Generate the AW Logical Dimension Name and Dim Prefix
291
292 l_start_ascii_value := 65; -- start from B, not A
293 -- will also need to skip H
294
295 Begin
296 select count(LOGICAL_DIM_ID) + l_start_ascii_value
297 into l_ascii_dim_count
298 from ZPB_BUSAREA_DIMENSIONS
299 where VERSION_ID = p_version_id
300 and DIMENSION_ID = p_dimension_id;
301 Exception
302 When no_data_found then null;
303 end;
304
305 select member_b_table_name, dimension_type_code
306 into l_member_b_table, l_dim_type_code
307 from fem_xdim_dimensions
308 where dimension_id = p_dimension_id;
309
310 if(l_dim_type_code = 'LINE') then
311 l_aw_dim_prefix := 'DL';
312 else
313 l_aw_dim_prefix := concat('D', p_dimension_id);
314 end if;
315
316 GENERATE_AW_DIM_NAME(l_dim_type_code,
317 l_member_b_table,
318 l_aw_dim_name);
319
320 if (l_ascii_dim_count > 65) then
321 -- must skip the letter H as well
322 if (l_ascii_dim_count = 72) then
323 l_ascii_dim_count := 73;
324 end if;
325
326 l_suffix := nchr(l_ascii_dim_count);
327 l_aw_dim_prefix := concat(l_aw_dim_prefix, l_suffix);
328 l_aw_dim_name := l_aw_dim_name || '_' || l_suffix;
329
330 end if;
331
332
333 insert into ZPB_BUSAREA_DIMENSIONS
334 (VERSION_ID,
335 DIMENSION_ID,
336 LOGICAL_DIM_ID, -- "Consistent Dimension"
337 FUNC_DIM_SET_ID, -- "Consistent Dimension"
338 AW_DIM_NAME, -- "Consistent Dimension"
339 AW_DIM_PREFIX, -- "Consistent Dimension"
340 DEFAULT_HIERARCHY_ID,
341 USE_MEMBER_CONDITIONS,
342 EPB_LINE_DIMENSION,
343 CONDITIONS_INCL_DESC,
344 CONDITIONS_INCL_ANC,
345 CREATION_DATE,
346 CREATED_BY,
347 LAST_UPDATE_LOGIN,
348 LAST_UPDATE_DATE,
349 LAST_UPDATED_BY)
350 values
351 (p_version_id,
352 p_dimension_id,
353 l_logical_dim_id, -- "Consistent Dimension"
354 p_func_dim_set_id, -- "Consistent Dimension"
355 l_aw_dim_name, -- "Consistent Dimension"
356 l_aw_dim_prefix, -- "Consistent Dimension"
357 l_def_hier,
358 'N',
359 l_is_line,
360 'N',
361 'N',
362 sysdate,
363 FND_GLOBAL.USER_ID,
364 FND_GLOBAL.LOGIN_ID,
365 sysdate,
366 FND_GLOBAL.USER_ID);
367
368 if (p_dimension_id <> 7) then
369 l_count := 0;
370 for l_dim_hier in c_dim_hier_curs loop
371 l_hier := l_dim_hier.HIERARCHY_OBJ_ID;
372 l_count := l_count + 1;
373 ADD_HIERARCHY (p_version_id,
374 l_logical_dim_id, -- "Consistent Dimension"
375 l_hier);
376 end loop;
377
378 if (l_count = 1) then
379 update ZPB_BUSAREA_DIMENSIONS
380 set DEFAULT_HIERARCHY_ID = l_hier
381 where VERSION_ID = p_version_id
382 and DIMENSION_ID = p_dimension_id
383 and FUNC_DIM_SET_ID = p_func_dim_set_id -- "Consistent Dimension"
384 and DEFAULT_HIERARCHY_ID is null;
385 end if;
386 end if;
387
388 end ADD_DIMENSION;
389
390 -------------------------------------------------------------------------
391 -- ADD_HIERARCHY - Adds a hierarchy to the Business Area version
392 --
393 -- IN: p_version_id - The version ID
394 -- p_logical_dim_id - Logical Dimension Id
395 -- p_hierarchy_id - The FEM Hierarchy ID
396 -------------------------------------------------------------------------
397 PROCEDURE ADD_HIERARCHY (p_version_id IN NUMBER,
398 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
399 p_hierarchy_id IN NUMBER)
400 is
401 l_multi_top FEM_HIERARCHIES.MULTI_TOP_FLAG%type;
402 l_dimension_id FEM_HIERARCHIES.DIMENSION_ID%type;
403 l_hier_table FEM_XDIM_DIMENSIONS.HIERARCHY_TABLE_NAME%type;
404 l_dim_table FEM_XDIM_DIMENSIONS.MEMBER_B_TABLE_NAME%type;
405 l_member_col FEM_XDIM_DIMENSIONS.MEMBER_COL%type;
406 l_has_pers FEM_XDIM_DIMENSIONS.HIER_EDITOR_MANAGED_FLAG%type;
407 l_command VARCHAR2(1000);
408 begin
409
410 insert into ZPB_BUSAREA_HIERARCHIES
411 (VERSION_ID,
412 LOGICAL_DIM_ID, -- "Consistent Dimension"
413 HIERARCHY_ID,
414 KEEP_VERSION,
415 INCLUDE_ALL_TOP_MEMBERS,
416 INCLUDE_ALL_LEVELS,
417 CREATION_DATE,
418 CREATED_BY,
419 LAST_UPDATE_LOGIN,
420 LAST_UPDATE_DATE,
421 LAST_UPDATED_BY)
422 values
423 (p_version_id,
424 p_logical_dim_id, -- "Consistent Dimension"
425 p_hierarchy_id,
426 'N',
427 'Y',
428 'Y',
429 sysdate,
430 FND_GLOBAL.USER_ID,
431 FND_GLOBAL.LOGIN_ID,
432 sysdate,
433 FND_GLOBAL.USER_ID);
434
435 -- "Consistent Dimension"
436 Begin
437 select MULTI_TOP_FLAG, DIMENSION_ID
438 into l_multi_top, l_dimension_id
439 from FEM_HIERARCHIES
440 where HIERARCHY_OBJ_ID = p_hierarchy_id;
441 Exception
442 When no_data_found then null;
443 End;
444
445 if (l_multi_top = FND_API.G_TRUE) then
446
447 select HIERARCHY_TABLE_NAME, HIER_EDITOR_MANAGED_FLAG
448 into l_dim_table, l_has_pers
449 from FEM_XDIM_DIMENSIONS
450 where DIMENSION_ID = l_dimension_id;
451
452 l_command := '
453 insert into ZPB_BUSAREA_HIER_MEMBERS
454 (VERSION_ID,
455 LOGICAL_DIM_ID, -- "Consistent Dimension"
456 HIERARCHY_ID,
457 MEMBER_ID,
458 VALUE_SET_ID,
459 CREATION_DATE,
460 CREATED_BY,
461 LAST_UPDATE_LOGIN,
462 LAST_UPDATE_DATE,
463 LAST_UPDATED_BY)
464 select
465 p_version_id,
466 p_logical_dim_id, -- "Consistent Dimension"
467 p_hierarchy_id,
468 A.PARENT_ID,
469 A.PARENT_VALUE_SET_ID
470 from '||l_dim_table||' A,
471 '||l_dim_table||' B
472 where A.PARENT_ID = A.CHILD_ID
473 and A.PARENT_DEPTH_NUM = 1
474 and A.PARENT_ID = B.'||l_member_col||'
475 and A.PARENT_VALUE_SET_ID = B.VALUE_SET_ID';
476 if (l_has_pers = 'Y') then
477 l_command := l_command||'
478 and B.ENABLED_FLAG = ''Y''
479 and B.PERSONAL_FLAG = ''N''';
480 end if;
481 execute immediate l_command;
482 end if;
483
484 end ADD_HIERARCHY;
485
486 -------------------------------------------------------------------------
487 -- ADD_HIERARCHY_MEMBER - Adds a top level member to the Business Area version
488 --
489 -- IN: p_version_id - The version ID
490 -- p_logical_dim_id - Logical Dimension Id
491 -- p_hierarchy_id - The FEM Hierarchy ID
492 -- p_hier_mbr_id - The FEM member ID
493 -- p_member_vset - The FEM member valueset ID (defaults to null)
494 -- p_hier_version - The FEM hierarchy version ID (defaults to null)
495 -------------------------------------------------------------------------
496 PROCEDURE ADD_HIERARCHY_MEMBER (p_version_id IN NUMBER,
497 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
498 p_hierarchy_id IN NUMBER,
499 p_member_id IN NUMBER,
500 p_member_vset IN NUMBER,
501 p_hier_version IN NUMBER)
502 is
503 begin
504 insert into ZPB_BUSAREA_HIER_MEMBERS
505 (VERSION_ID,
506 LOGICAL_DIM_ID, -- "Consistent Dimension"
507 HIERARCHY_ID,
508 MEMBER_ID,
509 VALUE_SET_ID,
510 HIER_VERSION_ID,
511 CREATION_DATE,
512 CREATED_BY,
513 LAST_UPDATE_LOGIN,
514 LAST_UPDATE_DATE,
515 LAST_UPDATED_BY)
516 values
517 (p_version_id,
518 p_logical_dim_id, -- "Consistent Dimension"
519 p_hierarchy_id,
520 p_member_id,
521 p_member_vset,
522 p_hier_version,
523 sysdate,
527 FND_GLOBAL.USER_ID);
524 FND_GLOBAL.USER_ID,
525 FND_GLOBAL.LOGIN_ID,
526 sysdate,
528
529 end ADD_HIERARCHY_MEMBER;
530
531 -------------------------------------------------------------------------
532 -- ADD_HIERARCHY_VERSION - Adds a hierarchy to the Business Area version
533 --
534 -- IN: p_version_id - The version ID
535 -- p_logical_dim_id - Logical Dimension Id
536 -- p_hierarchy_id - The FEM Hierarchy ID
537 -- p_hier_vers_id - The FEM Hierarchy Version ID
538 -------------------------------------------------------------------------
539 PROCEDURE ADD_HIERARCHY_VERSION (p_version_id IN NUMBER,
540 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
541 p_hierarchy_id IN NUMBER,
542 p_hier_vers_id IN NUMBER)
543 is
544 begin
545 insert into ZPB_BUSAREA_HIER_VERSIONS
546 (VERSION_ID,
547 LOGICAL_DIM_ID, -- "Consistent Dimension"
548 HIERARCHY_ID,
549 HIER_VERSION_ID,
550 INCLUDE_ALL_TOP_MEMBERS,
551 CREATION_DATE,
552 CREATED_BY,
553 LAST_UPDATE_LOGIN,
554 LAST_UPDATE_DATE,
555 LAST_UPDATED_BY)
556 values
557 (p_version_id,
558 p_logical_dim_id, -- "Consistent Dimension"
559 p_hierarchy_id,
560 p_hier_vers_id,
561 'Y',
562 sysdate,
563 FND_GLOBAL.USER_ID,
564 FND_GLOBAL.LOGIN_ID,
565 sysdate,
566 FND_GLOBAL.USER_ID);
567
568 end ADD_HIERARCHY_VERSION;
569
570 -------------------------------------------------------------------------
571 -- ADD_LEDGER - Adds a ledger to the Business Area version
572 --
573 -- IN: p_version_id - The version ID
574 -- p_ledger_id - The FEM Ledger ID
575 -------------------------------------------------------------------------
576 PROCEDURE ADD_LEDGER (p_version_id IN NUMBER,
577 p_ledger_id IN NUMBER)
578 is
579 begin
580 insert into ZPB_BUSAREA_LEDGERS
581 (VERSION_ID,
582 LEDGER_ID,
583 CREATION_DATE,
584 CREATED_BY,
585 LAST_UPDATE_LOGIN,
586 LAST_UPDATE_DATE,
587 LAST_UPDATED_BY)
588 values
589 (p_version_id,
590 p_ledger_id,
591 sysdate,
592 FND_GLOBAL.USER_ID,
593 FND_GLOBAL.LOGIN_ID,
594 sysdate,
595 FND_GLOBAL.USER_ID);
596 end ADD_LEDGER;
597
598 -------------------------------------------------------------------------
599 -- ADD_LEVEL - Adds a level to the Business Area version
600 --
601 -- IN: p_version_id - The version ID
602 -- p_logical_dim_id - Logical Dimension Id
603 -- p_level_id - The FEM Level ID
604 -- p_hierarchy_id - The Hierarchy to add the level to
605 -------------------------------------------------------------------------
606 PROCEDURE ADD_LEVEL (p_version_id IN NUMBER,
607 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
608 p_level_id IN NUMBER,
609 p_hierarchy_id IN NUMBER)
610 is
611 begin
612 insert into ZPB_BUSAREA_LEVELS
613 (VERSION_ID,
614 LOGICAL_DIM_ID, -- "Consistent Dimension"
615 LEVEL_ID,
616 HIERARCHY_ID,
617 CREATION_DATE,
618 CREATED_BY,
619 LAST_UPDATE_LOGIN,
620 LAST_UPDATE_DATE,
621 LAST_UPDATED_BY)
622 values
623 (p_version_id,
624 p_logical_dim_id, -- "Consistent Dimension"
625 p_level_id,
626 p_hierarchy_id,
627 sysdate,
628 FND_GLOBAL.USER_ID,
629 FND_GLOBAL.LOGIN_ID,
630 sysdate,
631 FND_GLOBAL.USER_ID);
632 end ADD_LEVEL;
633
634 -------------------------------------------------------------------------
635 -- CHANGE_HIER_VERS_INCL - Should be called anytime the user changes
636 -- what hierarchy versions are included in the
637 -- Business Area
638 --
639 -- IN: p_version_id - The version ID
640 -- p_logical_dim_id - Logical Dimension Id
641 -- p_hierarchy_id - The Hierarchy to add the level to
642 -------------------------------------------------------------------------
643 PROCEDURE CHANGE_HIER_VERS_INCL (p_version_id IN NUMBER,
644 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
645 p_hierarchy_id IN NUMBER)
646 is
647 l_incl_type ZPB_BUSAREA_HIERARCHIES.KEEP_VERSION%type;
648 l_number ZPB_BUSAREA_HIERARCHIES.NUMBER_OF_VERSIONS%type;
649 l_count NUMBER;
650
651 cursor hier_last_vers is
652 select OBJECT_DEFINITION_ID
653 from FEM_OBJECT_DEFINITION_B
654 where OBJECT_ID = p_hierarchy_id
655 and EFFECTIVE_START_DATE < sysdate
656 order by EFFECTIVE_END_DATE DESC;
657 begin
658 select KEEP_VERSION, NUMBER_OF_VERSIONS
659 into l_incl_type, l_number
660 from ZPB_BUSAREA_HIERARCHIES
664
661 where VERSION_ID = p_version_id
662 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
663 and HIERARCHY_ID = p_hierarchy_id;
665 if (l_incl_type= 'N' or l_incl_type = 'L') then
666 delete from ZPB_BUSAREA_HIER_VERSIONS
667 where VERSION_ID = p_version_id
668 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
669 and HIERARCHY_ID = p_hierarchy_id;
670
671 elsif (l_incl_type = 'S' and l_number is not null and l_number > 0) then
672 l_count := 1;
673 for each_vers in hier_last_vers loop
674 insert into ZPB_BUSAREA_HIER_VERSIONS
675 (VERSION_ID,
676 LOGICAL_DIM_ID, -- "Consistent Dimension"
677 HIERARCHY_ID,
678 HIER_VERSION_ID,
679 INCLUDE_ALL_TOP_MEMBERS,
680 LAST_UPDATE_LOGIN,
681 LAST_UPDATE_DATE,
682 LAST_UPDATED_BY,
683 CREATION_DATE,
684 CREATED_BY)
685 values
686 (p_version_id,
687 p_logical_dim_id, -- "Consistent Dimension"
688 p_hierarchy_id,
689 each_vers.OBJECT_DEFINITION_ID,
690 'Y',
691 FND_GLOBAL.LOGIN_ID,
692 sysdate,
693 FND_GLOBAL.USER_ID,
694 sysdate,
695 FND_GLOBAL.USER_ID);
696 l_count := l_count+1;
697 exit when (l_count > l_number);
698 end loop;
699 end if;
700 end CHANGE_HIER_VERS_INCL;
701
702 -------------------------------------------------------------------------
703 -- CLEAR_VERSION (private) - Clears the definition for a version to be empty
704 --
705 -- IN: p_version_id - The version ID
706 -------------------------------------------------------------------------
707 PROCEDURE CLEAR_VERSION (p_version_id IN NUMBER)
708 is
709 begin
710 delete from ZPB_BUSAREA_DIMENSIONS
711 where VERSION_ID = p_version_id;
712
713 delete from ZPB_BUSAREA_HIERARCHIES
714 where VERSION_ID = p_version_id;
715
716 delete from ZPB_BUSAREA_HIER_MEMBERS
717 where VERSION_ID = p_version_id;
718
719 delete from ZPB_BUSAREA_HIER_VERSIONS
720 where VERSION_ID = p_version_id;
721
722 delete from ZPB_BUSAREA_LEVELS
723 where VERSION_ID = p_version_id;
724
725 delete from ZPB_BUSAREA_ATTRIBUTES
726 where VERSION_ID = p_version_id;
727
728 delete from ZPB_BUSAREA_CONDITIONS
729 where VERSION_ID = p_version_id;
730
731 delete from ZPB_BUSAREA_LEDGERS
732 where VERSION_ID = p_version_id;
733
734 delete from ZPB_BUSAREA_DATASETS
735 where VERSION_ID = p_version_id;
736 end CLEAR_VERSION;
737
738 -------------------------------------------------------------------------
739 -- CREATE_BUSINESS_AREA - Creates a new empty Business Area
740 --
741 -- OUT: The created Business Area's ID
742 -------------------------------------------------------------------------
743 FUNCTION CREATE_BUSINESS_AREA
744 return NUMBER is
745 l_business_area_id ZPB_BUSINESS_AREAS.BUSINESS_AREA_ID%type;
746 l_user_id FND_USER.USER_ID%type;
747 begin
748 l_user_id := FND_GLOBAL.USER_ID;
749
750 select ZPB_BUSINESS_AREAS_SEQ.nextval into l_business_area_id from dual;
751
752 insert into ZPB_BUSINESS_AREAS
753 (BUSINESS_AREA_ID,
754 BUSAREA_CREATED_BY,
755 DATA_AW,
756 ANNOTATION_AW,
757 CREATION_DATE,
758 CREATED_BY,
759 LAST_UPDATE_LOGIN,
760 LAST_UPDATE_DATE,
761 LAST_UPDATED_BY)
762 values
763 (l_business_area_id,
764 l_user_id,
765 'ZPBDATA'||l_business_area_id,
766 'ZPBANNOT'||l_business_area_id,
767 sysdate,
768 FND_GLOBAL.USER_ID,
769 FND_GLOBAL.LOGIN_ID,
770 sysdate,
771 FND_GLOBAL.USER_ID);
772
773 insert into ZPB_BUSAREA_USERS
774 (BUSINESS_AREA_ID,
775 USER_ID,
776 CREATION_DATE,
777 CREATED_BY,
778 LAST_UPDATE_LOGIN,
779 LAST_UPDATE_DATE,
780 LAST_UPDATED_BY)
781 values
782 (l_business_area_id,
783 l_user_id,
784 sysdate,
785 FND_GLOBAL.USER_ID,
786 FND_GLOBAL.LOGIN_ID,
787 sysdate,
788 FND_GLOBAL.USER_ID);
789
790 return l_business_area_id;
791 end CREATE_BUSINESS_AREA;
792
793 -------------------------------------------------------------------------
794 -- CREATE_EMPTY_VERSION - Creates a new, empty version for a Business Area. If
795 -- the version already exists, it will be overwritten
796 -- (cleared). If you want to create a version with a
797 -- default definition, use COPY_VERSION instead.
798 --
799 -- IN: p_business_area_id - The Business Area ID of the version
800 -- p_version_type - The version type ('P', 'D', 'T', 'R')
801 --
802 -- OUT: The created Business Area version's ID
803 -------------------------------------------------------------------------
804 FUNCTION CREATE_EMPTY_VERSION (p_business_area_id IN NUMBER,
808 l_version_name ZPB_BUSAREA_VERSIONS.NAME%type;
805 p_version_type IN VARCHAR2)
806 return NUMBER is
807 l_version_id ZPB_BUSAREA_VERSIONS.VERSION_ID%type;
809 l_version_desc ZPB_BUSAREA_VERSIONS.DESCRIPTION%type;
810 l_version_curr ZPB_BUSAREA_VERSIONS.CURRENCY_ENABLED%type;
811 l_version_inter ZPB_BUSAREA_VERSIONS.INTERCOMPANY_ENABLED%type;
812 l_parent_version_type ZPB_BUSAREA_VERSIONS.VERSION_TYPE%type;
813 l_ver_fdr_obj_def_id ZPB_BUSAREA_VERSIONS.FUNC_DIM_SET_OBJ_DEF_ID%type; -- "Consistent Dimension"
814 begin
815 begin
816 select VERSION_ID
817 into l_version_id
818 from ZPB_BUSAREA_VERSIONS
819 where BUSINESS_AREA_ID = p_business_area_id
820 and VERSION_TYPE = p_version_type;
821 exception
822 when no_data_found
823 then l_version_id := null;
824 end;
825
826 --
827 -- Get the name and description of the "parent" version to default this
828 -- version to:
829 --
830 l_parent_version_type := GET_PARENT_VERSION_TYPE(p_version_type);
831 begin
832
833 select
834 NAME,
835 DESCRIPTION,
836 CURRENCY_ENABLED,
837 INTERCOMPANY_ENABLED,
838 FUNC_DIM_SET_OBJ_DEF_ID -- "Consistent Dimension"
839 into
840 l_version_name,
841 l_version_desc,
842 l_version_curr,
843 l_version_inter,
844 l_ver_fdr_obj_def_id -- "Consistent Dimension"
845 from
846 ZPB_BUSAREA_VERSIONS
847 where
848 BUSINESS_AREA_ID = p_business_area_id
849 and VERSION_TYPE = l_parent_version_type;
850
851 exception
852 when no_data_found then
853 l_version_name := GET_DEFAULT_BUS_AREA_NAME;
854 l_version_desc := null;
855 l_version_curr := 'N';
856 l_version_inter := 'N';
857 l_ver_fdr_obj_def_id := null; -- "Consistent Dimension"
858 end;
859
860 if (l_version_id is not null) then
861 CLEAR_VERSION(l_version_id);
862
863 update ZPB_BUSAREA_VERSIONS set
864 NAME = l_version_name,
865 DESCRIPTION = l_version_desc,
866 CURRENCY_ENABLED = l_version_curr,
867 INTERCOMPANY_ENABLED = l_version_inter,
868 FUNC_DIM_SET_OBJ_DEF_ID= l_ver_fdr_obj_def_id, -- "Consistent Dimension"
869 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID,
870 LAST_UPDATE_DATE = sysdate,
871 LAST_UPDATED_BY = FND_GLOBAL.USER_ID
872 where BUSINESS_AREA_ID = p_business_area_id
873 and VERSION_TYPE = p_version_type;
874
875 else
876 select ZPB_BUSAREA_VERSIONS_SEQ.nextval into l_version_id from dual;
877
878 insert into ZPB_BUSAREA_VERSIONS
879 (VERSION_ID,
880 BUSINESS_AREA_ID,
881 VERSION_TYPE,
882 NAME,
883 DESCRIPTION,
884 CURRENCY_ENABLED,
885 INTERCOMPANY_ENABLED,
886 FUNC_DIM_SET_OBJ_DEF_ID, -- "Consistent Dimension"
887 CREATION_DATE,
888 CREATED_BY,
889 LAST_UPDATE_LOGIN,
890 LAST_UPDATE_DATE,
891 LAST_UPDATED_BY)
892 values
893 (l_version_id,
894 p_business_area_id,
895 p_version_type,
896 l_version_name,
897 l_version_desc,
898 l_version_curr,
899 l_version_inter,
900 l_ver_fdr_obj_def_id, -- "Consistent Dimension"
901 sysdate,
902 FND_GLOBAL.USER_ID,
903 FND_GLOBAL.LOGIN_ID,
904 sysdate,
905 FND_GLOBAL.USER_ID);
906 end if;
907
908 return l_version_id;
909 end CREATE_EMPTY_VERSION;
910
911 -------------------------------------------------------------------------
912 -- COPY_VERSION - Copies one version to another. If the version that is to be
913 -- copied to does not exist, this function will create it.
914 -- Otherwise, it will overwrite that version's definition.
915 -- Returns the version ID of the version that was created or
916 -- overwritten.
917 --
918 -- IN: p_from_busarea_id - The Business Area ID that the version to copy
919 -- from is associated with
920 -- p_from_version_type - The version type of the version to copy from
921 -- p_to_busarea_id - The Business Area ID that the version to copy
922 -- to is associated with
923 -- p_to_version_type - The version type of the version to copy to
924 --
925 -- OUT: The ID of the version that was copied to
926 -------------------------------------------------------------------------
927 FUNCTION COPY_VERSION (p_from_busarea_id IN NUMBER,
928 p_from_version_type IN VARCHAR2,
929 p_to_busarea_id IN NUMBER,
930 p_to_version_type IN VARCHAR2)
931 return NUMBER is
932 l_from_version_id ZPB_BUSAREA_VERSIONS.VERSION_ID%type;
933 l_to_version_id ZPB_BUSAREA_VERSIONS.VERSION_ID%type;
934 l_version_name ZPB_BUSAREA_VERSIONS.NAME%type;
938 l_version_line_name ZPB_BUSAREA_VERSIONS.LINE_HIERARCHY_NAME%type;
935 l_version_desc ZPB_BUSAREA_VERSIONS.DESCRIPTION%type;
936 l_version_curr ZPB_BUSAREA_VERSIONS.CURRENCY_ENABLED%type;
937 l_version_inter ZPB_BUSAREA_VERSIONS.INTERCOMPANY_ENABLED%type;
939 l_version_line_desc ZPB_BUSAREA_VERSIONS.LINE_HIERARCHY_DESC%type;
940 l_parent_version_type ZPB_BUSAREA_VERSIONS.VERSION_TYPE%type;
941 l_ver_fdr_obj_def_id ZPB_BUSAREA_VERSIONS.FUNC_DIM_SET_OBJ_DEF_ID%type; -- "Consistent Dimension"
942
943 begin
944
945 select
946 VERSION_ID,
947 CURRENCY_ENABLED,
948 INTERCOMPANY_ENABLED,
949 LINE_HIERARCHY_NAME,
950 LINE_HIERARCHY_DESC,
951 FUNC_DIM_SET_OBJ_DEF_ID -- "Consistent Dimension"
952 into
953 l_from_version_id,
954 l_version_curr,
955 l_version_inter,
956 l_version_line_name,
957 l_version_line_desc,
958 l_ver_fdr_obj_def_id -- "Consistent Dimension"
959 from
960 ZPB_BUSAREA_VERSIONS
961 where
962 BUSINESS_AREA_ID = p_from_busarea_id
963 and VERSION_TYPE = p_from_version_type;
964
965 begin
966 select VERSION_ID
967 into l_to_version_id
968 from ZPB_BUSAREA_VERSIONS
969 where BUSINESS_AREA_ID = p_to_busarea_id
970 and VERSION_TYPE = p_to_version_type;
971 exception
972 when no_data_found then
973 l_to_version_id := CREATE_EMPTY_VERSION(p_to_busarea_id,
974 p_to_version_type);
975 end;
976
977 if (p_from_busarea_id <> p_to_busarea_id) then
978 --
979 -- Get the name from the "parent" draft:
980 --
981 l_parent_version_type := GET_PARENT_VERSION_TYPE(p_to_version_type);
982 begin
983 select NAME, DESCRIPTION
984 into l_version_name, l_version_desc
985 from ZPB_BUSAREA_VERSIONS
986 where VERSION_TYPE = l_parent_version_type
987 and BUSINESS_AREA_ID = p_to_busarea_id;
988 exception
989 when no_data_found then
990 l_version_name := GET_DEFAULT_BUS_AREA_NAME;
991 l_version_desc := null;
992 end;
993 else
994 select NAME, DESCRIPTION
995 into l_version_name, l_version_desc
996 from ZPB_BUSAREA_VERSIONS
997 where VERSION_ID = l_from_version_id;
998 end if;
999
1000 CLEAR_VERSION(l_to_version_id);
1001
1002 update ZPB_BUSAREA_VERSIONS set
1003 NAME = l_version_name,
1004 DESCRIPTION = l_version_desc,
1005 CURRENCY_ENABLED = l_version_curr,
1006 INTERCOMPANY_ENABLED = l_version_inter,
1007 FUNC_DIM_SET_OBJ_DEF_ID = l_ver_fdr_obj_def_id, -- "Consistent Dimension"
1008 LINE_HIERARCHY_NAME = l_version_line_name,
1009 LINE_HIERARCHY_DESC = l_version_line_desc,
1010 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID,
1011 LAST_UPDATE_DATE = sysdate,
1012 LAST_UPDATED_BY = FND_GLOBAL.USER_ID
1013 where VERSION_ID = l_to_version_id;
1014
1015 insert into ZPB_BUSAREA_DIMENSIONS
1016 (VERSION_ID,
1017 DIMENSION_ID,
1018 FUNC_DIM_SET_ID, -- "Consistent Dimension"
1019 LOGICAL_DIM_ID, -- "Consistent Dimension"
1020 AW_DIM_NAME, -- "Consistent Dimension"
1021 AW_DIM_PREFIX, -- "Consistent Dimension"
1022 DEFAULT_HIERARCHY_ID,
1023 USE_MEMBER_CONDITIONS,
1024 EPB_LINE_DIMENSION,
1025 LINE_HIERARCHY,
1026 CONDITIONS_INCL_ANC,
1027 CONDITIONS_INCL_DESC,
1028 CREATION_DATE,
1029 CREATED_BY,
1030 LAST_UPDATE_LOGIN,
1031 LAST_UPDATE_DATE,
1032 LAST_UPDATED_BY)
1033 select l_to_version_id,
1034 DIMENSION_ID,
1035 FUNC_DIM_SET_ID, -- "Consistent Dimension"
1036 LOGICAL_DIM_ID,-- "Consistent Dimension"
1037 AW_DIM_NAME, -- "Consistent Dimension"
1038 AW_DIM_PREFIX, -- "Consistent Dimension"
1039 DEFAULT_HIERARCHY_ID,
1040 USE_MEMBER_CONDITIONS,
1041 EPB_LINE_DIMENSION,
1042 LINE_HIERARCHY,
1043 CONDITIONS_INCL_ANC,
1044 CONDITIONS_INCL_DESC,
1045 sysdate,
1046 FND_GLOBAL.USER_ID,
1047 FND_GLOBAL.LOGIN_ID,
1048 sysdate,
1049 FND_GLOBAL.USER_ID
1050 from ZPB_BUSAREA_DIMENSIONS
1051 where VERSION_ID = l_from_version_id;
1052
1053 insert into ZPB_BUSAREA_HIERARCHIES
1054 (VERSION_ID,
1055 LOGICAL_DIM_ID, -- "Consistent Dimension"
1056 HIERARCHY_ID,
1057 KEEP_VERSION,
1058 NUMBER_OF_VERSIONS,
1059 INCLUDE_ALL_TOP_MEMBERS,
1060 INCLUDE_ALL_LEVELS,
1061 CREATION_DATE,
1062 CREATED_BY,
1063 LAST_UPDATE_LOGIN,
1064 LAST_UPDATE_DATE,
1065 LAST_UPDATED_BY)
1066 select l_to_version_id,
1067 LOGICAL_DIM_ID,-- "Consistent Dimension"
1068 HIERARCHY_ID,
1069 KEEP_VERSION,
1070 NUMBER_OF_VERSIONS,
1071 INCLUDE_ALL_TOP_MEMBERS,
1072 INCLUDE_ALL_LEVELS,
1073 sysdate,
1074 FND_GLOBAL.USER_ID,
1078 from ZPB_BUSAREA_HIERARCHIES
1075 FND_GLOBAL.LOGIN_ID,
1076 sysdate,
1077 FND_GLOBAL.USER_ID
1079 where VERSION_ID = l_from_version_id;
1080
1081 insert into ZPB_BUSAREA_HIER_MEMBERS
1082 (VERSION_ID,
1083 LOGICAL_DIM_ID, -- "Consistent Dimension"
1084 HIERARCHY_ID,
1085 MEMBER_ID,
1086 VALUE_SET_ID,
1087 HIER_VERSION_ID,
1088 CREATION_DATE,
1089 CREATED_BY,
1090 LAST_UPDATE_LOGIN,
1091 LAST_UPDATE_DATE,
1092 LAST_UPDATED_BY)
1093 select l_to_version_id,
1094 LOGICAL_DIM_ID,-- "Consistent Dimension"
1095 HIERARCHY_ID,
1096 MEMBER_ID,
1097 VALUE_SET_ID,
1098 HIER_VERSION_ID,
1099 sysdate,
1100 FND_GLOBAL.USER_ID,
1101 FND_GLOBAL.LOGIN_ID,
1102 sysdate,
1103 FND_GLOBAL.USER_ID
1104 from ZPB_BUSAREA_HIER_MEMBERS
1105 where VERSION_ID = l_from_version_id;
1106
1107 insert into ZPB_BUSAREA_HIER_VERSIONS
1108 (VERSION_ID,
1109 LOGICAL_DIM_ID, -- "Consistent Dimension"
1110 HIERARCHY_ID,
1111 HIER_VERSION_ID,
1112 INCLUDE_ALL_TOP_MEMBERS,
1113 CREATION_DATE,
1114 CREATED_BY,
1115 LAST_UPDATE_LOGIN,
1116 LAST_UPDATE_DATE,
1117 LAST_UPDATED_BY)
1118 select l_to_version_id,
1119 LOGICAL_DIM_ID,-- "Consistent Dimension"
1120 HIERARCHY_ID,
1121 HIER_VERSION_ID,
1122 INCLUDE_ALL_TOP_MEMBERS,
1123 sysdate,
1124 FND_GLOBAL.USER_ID,
1125 FND_GLOBAL.LOGIN_ID,
1126 sysdate,
1127 FND_GLOBAL.USER_ID
1128 from ZPB_BUSAREA_HIER_VERSIONS
1129 where VERSION_ID = l_from_version_id;
1130
1131 insert into ZPB_BUSAREA_LEVELS
1132 (VERSION_ID,
1133 LOGICAL_DIM_ID, -- "Consistent Dimension"
1134 HIERARCHY_ID,
1135 LEVEL_ID,
1136 CREATION_DATE,
1137 CREATED_BY,
1138 LAST_UPDATE_LOGIN,
1139 LAST_UPDATE_DATE,
1140 LAST_UPDATED_BY)
1141 select l_to_version_id,
1142 LOGICAL_DIM_ID,-- "Consistent Dimension"
1143 HIERARCHY_ID,
1144 LEVEL_ID,
1145 sysdate,
1146 FND_GLOBAL.USER_ID,
1147 FND_GLOBAL.LOGIN_ID,
1148 sysdate,
1149 FND_GLOBAL.USER_ID
1150 from ZPB_BUSAREA_LEVELS
1151 where VERSION_ID = l_from_version_id;
1152
1153 insert into ZPB_BUSAREA_ATTRIBUTES
1154 (VERSION_ID,
1155 LOGICAL_DIM_ID, -- "Consistent Dimension"
1156 ATTRIBUTE_ID,
1157 CREATION_DATE,
1158 CREATED_BY,
1159 LAST_UPDATE_LOGIN,
1160 LAST_UPDATE_DATE,
1161 LAST_UPDATED_BY)
1162 select l_to_version_id,
1163 LOGICAL_DIM_ID,-- "Consistent Dimension"
1164 ATTRIBUTE_ID,
1165 sysdate,
1166 FND_GLOBAL.USER_ID,
1167 FND_GLOBAL.LOGIN_ID,
1168 sysdate,
1169 FND_GLOBAL.USER_ID
1170 from ZPB_BUSAREA_ATTRIBUTES
1171 where VERSION_ID = l_from_version_id;
1172
1173 insert into ZPB_BUSAREA_CONDITIONS
1174 (VERSION_ID,
1175 LOGICAL_DIM_ID, -- "Consistent Dimension"
1176 ATTRIBUTE_ID,
1177 VALUE,
1178 VALUE_SET_ID,
1179 OPERATION,
1180 CREATION_DATE,
1181 CREATED_BY,
1182 LAST_UPDATE_LOGIN,
1183 LAST_UPDATE_DATE,
1184 LAST_UPDATED_BY)
1185 select l_to_version_id,
1186 LOGICAL_DIM_ID,-- "Consistent Dimension"
1187 ATTRIBUTE_ID,
1188 VALUE,
1189 VALUE_SET_ID,
1190 OPERATION,
1191 sysdate,
1192 FND_GLOBAL.USER_ID,
1193 FND_GLOBAL.LOGIN_ID,
1194 sysdate,
1195 FND_GLOBAL.USER_ID
1196 from ZPB_BUSAREA_CONDITIONS
1197 where VERSION_ID = l_from_version_id;
1198
1199 insert into ZPB_BUSAREA_DATASETS
1200 (VERSION_ID,
1201 DATASET_ID,
1202 CREATION_DATE,
1203 CREATED_BY,
1204 LAST_UPDATE_LOGIN,
1205 LAST_UPDATE_DATE,
1206 LAST_UPDATED_BY)
1207 select l_to_version_id,
1208 DATASET_ID,
1209 sysdate,
1210 FND_GLOBAL.USER_ID,
1211 FND_GLOBAL.LOGIN_ID,
1212 sysdate,
1213 FND_GLOBAL.USER_ID
1214 from ZPB_BUSAREA_DATASETS
1215 where VERSION_ID = l_from_version_id;
1216
1217 insert into ZPB_BUSAREA_LEDGERS
1218 (VERSION_ID,
1219 LEDGER_ID,
1220 CREATION_DATE,
1221 CREATED_BY,
1222 LAST_UPDATE_LOGIN,
1223 LAST_UPDATE_DATE,
1224 LAST_UPDATED_BY)
1225 select l_to_version_id,
1226 LEDGER_ID,
1227 sysdate,
1228 FND_GLOBAL.USER_ID,
1229 FND_GLOBAL.LOGIN_ID,
1230 sysdate,
1231 FND_GLOBAL.USER_ID
1232 from ZPB_BUSAREA_LEDGERS
1233 where VERSION_ID = l_from_version_id;
1234
1235 if (p_to_version_type = 'P') then
1236 update ZPB_BUSINESS_AREAS
1237 set PUBLISH_DATE = sysdate,
1238 PUBLISHED_BY = FND_GLOBAL.USER_ID
1242 set REFRESH_DATE = sysdate,
1239 where BUSINESS_AREA_ID = p_to_busarea_id;
1240 elsif (p_to_version_type = 'R') then
1241 update ZPB_BUSINESS_AREAS
1243 REFRESHED_BY = FND_GLOBAL.USER_ID
1244 where BUSINESS_AREA_ID = p_to_busarea_id;
1245 end if;
1246
1247 return l_to_version_id;
1248 end COPY_VERSION;
1249
1250 -------------------------------------------------------------------------
1251 -- DELETE_BUSINESS_AREA_CR - Submits a conc. req. to delete a Business Area
1252 --
1253 -- IN: p_business_area_id - The Business Area ID
1254 --
1255 -- OUT: concurrent request number
1256 -------------------------------------------------------------------------
1257 FUNCTION DELETE_BUSINESS_AREA_CR (p_business_area_id IN NUMBER)
1258 return NUMBER is
1259 l_ba_name ZPB_BUSAREA_VERSIONS.NAME%type;
1260 l_errbuf VARCHAR2(1000);
1261 l_retcode VARCHAR2(1);
1262 l_retVal NUMBER;
1263
1264 begin
1265 -- update the status field so that that UI knows
1266 -- that this BA is in the process of being deleted
1267 update ZPB_BUSINESS_AREAS
1268 set STATUS = 'D'
1269 where BUSINESS_AREA_ID = p_business_area_id;
1270
1271 begin
1272 select NAME
1273 into l_ba_name
1274 from ZPB_BUSINESS_AREAS_VL
1275 where BUSINESS_AREA_ID = p_business_area_id;
1276 exception
1277 when no_data_found then
1278 l_ba_name := '';
1279 DELETE_BUSINESS_AREA(l_errbuf, l_retcode, p_business_area_id);
1280 l_retVal := 0;
1281 end;
1282
1283 if (length(l_ba_name) > 0)
1284 then
1285 FND_MESSAGE.CLEAR;
1286 FND_MESSAGE.SET_NAME('ZPB', 'ZPB_BUSAREA_DELETE');
1287 FND_MESSAGE.SET_TOKEN('NAME', l_ba_name);
1288 l_retVal := FND_REQUEST.SUBMIT_REQUEST ('ZPB',
1289 'ZPB_BA_DELETE',
1290 FND_MESSAGE.GET,
1291 null,
1292 null,
1293 p_business_area_id);
1294 commit;
1295 end if;
1296
1297 return l_retVal;
1298
1299 end DELETE_BUSINESS_AREA_CR;
1300
1301
1302 -------------------------------------------------------------------------
1303 -- DELETE_BUSINESS_AREA - Deletes a Business Area, including all versions
1304 --
1305 -- IN: p_business_area_id - The Business Area ID
1306 -------------------------------------------------------------------------
1307 PROCEDURE DELETE_BUSINESS_AREA (ERRBUF OUT NOCOPY VARCHAR2,
1308 RETCODE OUT NOCOPY VARCHAR2,
1309 p_business_area_id IN NUMBER)
1310 is
1311 l_snapshot_id ZPB_BUSINESS_AREAS.SNAPSHOT_OBJECT_ID%type;
1312 l_aw ZPB_BUSINESS_AREAS.DATA_AW%type;
1313 l_msg_count NUMBER;
1314 l_msg_data VARCHAR2(1000);
1315 l_ret_status VARCHAR2(1);
1316 l_folder_count NUMBER;
1317 l_refreshed_count NUMBER;
1318
1319 cursor l_versions_curs is
1320 select VERSION_ID
1321 from ZPB_BUSAREA_VERSIONS
1322 where BUSINESS_AREA_ID = p_business_area_id;
1323 l_versions l_versions_curs%ROWTYPE;
1324
1325 cursor l_writeback_tasks_curs is
1326 select TASK_SEQ
1327 from ZPB_WRITEBACK_TASKS
1328 where BUSINESS_AREA_ID = p_business_area_id;
1329 l_tasks l_writeback_tasks_curs%ROWTYPE;
1330
1331 cursor l_cycles_curs is
1332 select ANALYSIS_CYCLE_ID
1333 from ZPB_ANALYSIS_CYCLES
1334 where BUSINESS_AREA_ID = p_business_area_id;
1335 l_cycles l_cycles_curs%ROWTYPE;
1336
1337 cursor l_aws_curs is
1338 select ZPB_AW.GET_SCHEMA||'.'||PERSONAL_AW AW_NAME
1339 from ZPB_USERS
1340 where BUSINESS_AREA_ID = p_business_area_id
1341 UNION
1342 select ZPB_AW.GET_SCHEMA||'.'||DATA_AW AW_NAME
1343 from ZPB_BUSINESS_AREAS
1344 where BUSINESS_AREA_ID = p_business_area_id
1345 UNION
1346 select ZPB_AW.GET_SCHEMA||'.'||ANNOTATION_AW AW_NAME
1347 from ZPB_BUSINESS_AREAS
1348 where BUSINESS_AREA_ID = p_business_area_id
1349 UNION
1350 select ZPB_AW.GET_SCHEMA||'.SQTEMP'||p_business_area_id from dual;
1351
1352 l_aws l_aws_curs%ROWTYPE;
1353
1354 cursor l_session_curs(l_aw_name VARCHAR2) is
1355 select 'alter system kill session '''||s.sid||','||s.serial#||'''' cmd
1356 from v$session s,
1357 v$lock l,
1358 dba_aws a
1359 where l.type='AW' and
1360 l.id1=2 and
1361 l.id2 >= 1000 and
1362 a.aw_number=l.id2 and
1363 s.sid=l.sid and
1364 a.aw_name = l_aw_name and
1365 a.owner = zpb_aw.get_schema;
1366 begin
1367 select SNAPSHOT_OBJECT_ID
1368 into l_snapshot_id
1369 from ZPB_BUSINESS_AREAS
1370 where BUSINESS_AREA_ID = p_business_area_id;
1371
1372 if (l_snapshot_id is not null) then
1373 FEM_FOLDERS_UTL_PKG.ASSIGN_USER_TO_FOLDER
1377 P_WRITE_FLAG => 'Y',
1374 (P_API_VERSION => 1.0,
1375 P_USER_ID => FND_GLOBAL.USER_ID,
1376 P_FOLDER_ID => 1100,
1378 X_MSG_COUNT => l_msg_count,
1379 X_MSG_DATA => ERRBUF,
1380 X_RETURN_STATUS => RETCODE);
1381
1382 FEM_OBJECT_CATALOG_UTIL_PKG.DELETE_OBJECT
1383 (X_MSG_COUNT => l_msg_count,
1384 X_MSG_DATA => ERRBUF,
1385 X_RETURN_STATUS => RETCODE,
1386 P_API_VERSION => 1.0,
1387 P_COMMIT => FND_API.G_FALSE,
1388 P_OBJECT_ID => l_snapshot_id);
1389 end if;
1390
1391 -- b 4616073 finds and purges all workflows for any ACID or Instance for this Business Area
1392
1393 select COUNT(*)
1394 into l_refreshed_count
1395 from ZPB_BUSAREA_VERSIONS
1396 WHERE VERSION_TYPE = 'R'
1397 and BUSINESS_AREA_ID = p_business_area_id;
1398
1399 -- if you're deleting a BA that hasn't been refreshed
1400 -- save yourself a lot of time by skipping work that
1401 -- isn't necessary
1402 if (l_refreshed_count > 0) then
1403 zpb_wfmnt.PurgeWF_BusinessArea(p_business_area_id);
1404
1405 ZPB_OLAP_VIEWS_PKG.REMOVE_BUSAREA_VIEWS(p_business_area_id);
1406
1407 delete from ZPB_STATUS_SQL
1408 where QUERY_PATH like 'oracle/apps/zpb/BusArea'||p_business_area_id||'/%';
1409
1410 delete from ZPB_ACCOUNT_STATES
1411 where BUSINESS_AREA_ID = p_business_area_id;
1412
1413 delete from ZPB_METASCOPE_ATTRIBUTES
1414 where BUSINESS_AREA_ID = p_business_area_id;
1415
1416 delete from ZPB_METASCOPE_HIERARCHIES
1417 where BUSINESS_AREA_ID = p_business_area_id;
1418
1419 delete from ZPB_METASCOPE_LEVELS
1420 where BUSINESS_AREA_ID = p_business_area_id;
1421
1422 delete from ZPB_SHADOW_USERS
1423 where BUSINESS_AREA_ID = p_business_area_id;
1424
1425 for l_tasks in l_writeback_tasks_curs loop
1426 delete from ZPB_WRITEBACK_TRANSACTION
1427 where TASK_SEQ = l_tasks.TASK_SEQ;
1428 end loop;
1429
1430 delete from ZPB_WRITEBACK_TASKS
1431 where BUSINESS_AREA_ID = p_business_area_id;
1432
1433 delete from ZPB_EXCP_RESULTS
1434 where TASK_ID in (select B.TASK_ID from ZPB_ANALYSIS_CYCLES A, ZPB_ANALYSIS_CYCLE_TASKS B
1435 where A.BUSINESS_AREA_ID = p_business_area_id
1436 AND A.ANALYSIS_CYCLE_ID = B.ANALYSIS_CYCLE_ID);
1437
1438 for l_cycles in l_cycles_curs loop
1439 delete from ZPB_AC_PARAM_VALUES
1440 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1441 delete from ZPB_ANALYSIS_CYCLE_INSTANCES
1442 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1443 delete from ZPB_ANALYSIS_CYCLE_TASKS
1444 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1445 delete from ZPB_CYCLE_COMMENTS
1446 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1447 delete from ZPB_CYCLE_DATASETS
1448 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1449 delete from ZPB_CYCLE_MODEL_DIMENSIONS
1450 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1451 delete from ZPB_CYCLE_RELATIONSHIPS
1452 where PUBLISHED_AC_ID = l_cycles.ANALYSIS_CYCLE_ID
1453 or EDITABLE_AC_ID = l_cycles.ANALYSIS_CYCLE_ID
1454 or TMP_AC_ID = l_cycles.ANALYSIS_CYCLE_ID;
1455 delete from ZPB_DATA_INITIALIZATION_DEFS
1456 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1457 delete from ZPB_DC_OBJECTS
1458 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID
1459 or AC_INSTANCE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1460 delete from ZPB_SOLVE_ALLOCATION_DEFS
1461 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1462 delete from ZPB_SOLVE_INPUT_LEVELS
1463 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1464 delete from ZPB_SOLVE_MEMBER_DEFS
1465 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1466 delete from ZPB_SOLVE_OUTPUT_LEVELS
1467 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1468 delete from ZPB_SOLVE_PROCESS_MAPS
1469 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1470 delete from ZPB_SOLVE_PROCESS_MEMBERS
1471 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1472 delete from ZPB_SOLVE_STEP_DIMHIERS
1473 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1474 delete from ZPB_VIEW_LIST
1475 where INSTANCE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1476 delete from ZPB_METASCOPE_CONTROLLEDCALCS
1477 where INSTANCE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1478 delete from ZPB_ANALYSIS_CYCLES
1479 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1480 delete from ZPB_BUSINESS_PROCESS_SCOPE
1481 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1482 delete from ZPB_CYCLE_CURRENCIES
1483 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1484 delete from ZPB_SOLVE_INPUT_SELECTIONS
1485 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1486 delete from ZPB_SOLVE_OUTPUT_SELECTIONS
1487 where ANALYSIS_CYCLE_ID = l_cycles.ANALYSIS_CYCLE_ID;
1488 end loop;
1489
1493 into l_aw
1490 ZPB_METADATA_PKG.CLEANBUSAREA(p_business_area_id);
1491
1492 select DATA_AW
1494 from ZPB_BUSINESS_AREAS
1495 where BUSINESS_AREA_ID = p_business_area_id;
1496
1497 ZPB_BUILD_METADATA.DROP_CWM2_METADATA(l_aw);
1498
1499 for l_aws in l_aws_curs loop
1500 for each in l_session_curs(l_aws.AW_NAME) loop
1501 execute immediate each.cmd;
1502 end loop;
1503 begin
1504 ZPB_AW.EXECUTE ('aw delete '||l_aws.AW_NAME);
1505 exception
1506 when others then
1507 ZPB_LOG.LOG_PLSQL_EXCEPTION
1508 ('zpb_busarea_maint.delete_business_area', 4);
1509 end;
1510 end loop;
1511
1512 end if; -- end if refreshed
1513
1514 for l_versions in l_versions_curs loop
1515 CLEAR_VERSION (l_versions.VERSION_ID);
1516 delete from ZPB_BUSAREA_VERSIONS
1517 where VERSION_ID = l_versions.VERSION_ID;
1518 end loop;
1519
1520 delete from ZPB_BUSAREA_COMMENTS
1521 where BUSINESS_AREA_ID = p_business_area_id;
1522
1523 delete from ZPB_MEASURE_SCOPE_EXEMPT_USERS
1524 where USER_ID in (select A.USER_ID from ZPB_MEASURE_SCOPE_EXEMPT_USERS A, ZPB_USERS B
1525 where B.BUSINESS_AREA_ID = p_business_area_id AND A.USER_ID = B.USER_ID);
1526
1527 delete from ZPB_USERS
1528 where BUSINESS_AREA_ID = p_business_area_id;
1529
1530 delete from ZPB_BUSAREA_USERS
1531 where BUSINESS_AREA_ID = p_business_area_id;
1532
1533 delete from ZPB_BUSINESS_AREAS
1534 where BUSINESS_AREA_ID = p_business_area_id;
1535
1536 -- Bug 5007134
1537 -- Delete the business area path in the bibeans repository
1538 -- Bug 5068930 - but only if the BA has been repos to delete
1539 begin
1540 select count(*)
1541 into l_folder_count
1542 from BISM_OBJECTS
1543 where OBJECT_NAME = 'BusArea'||p_business_area_id and
1544 OBJECT_TYPE_ID = 100;
1545 exception
1546 when no_data_found then
1547 l_folder_count := 0;
1548 end;
1549
1550 if (l_folder_count > 0) then
1551 zpb_bism.delete_bism_folder_wo_security('oracle/apps/zpb/BusArea' ||
1552 p_business_area_id, FND_GLOBAL.USER_ID);
1553 end if;
1554
1555 end DELETE_BUSINESS_AREA;
1556
1557 -------------------------------------------------------------------------
1558 -- LOGIN - Called when a user logs in to a Business Area
1559 --
1560 -- IN: p_business_area_id - The Business Area that the user logged in
1561 -- under
1562 -----------------------------------------------------------------------
1563 PROCEDURE LOGIN (p_business_area_id IN NUMBER)
1564 is
1565 begin
1566 update ZPB_USERS
1567 set LAST_BUSAREA_LOGIN = 'N',
1568 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
1569 LAST_UPDATE_DATE = sysdate
1570 where USER_ID = FND_GLOBAL.USER_ID
1571 and BUSINESS_AREA_ID <> p_business_area_id;
1572
1573 update ZPB_USERS
1574 set LAST_BUSAREA_LOGIN = 'Y',
1575 LAST_LOGIN_DATE = sysdate,
1576 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
1577 LAST_UPDATE_DATE = sysdate,
1578 SHADOW_ID = FND_GLOBAL.USER_ID
1579 where USER_ID = FND_GLOBAL.USER_ID
1580 and BUSINESS_AREA_ID = p_business_area_id;
1581 end LOGIN;
1582
1583 -------------------------------------------------------------------------
1584 -- REFRESH - Submits a conc. req. to refresh a Business Area into EPB
1585 --
1586 -- IN: p_business_area_id - The Business Area ID
1587 -------------------------------------------------------------------------
1588 FUNCTION REFRESH (p_business_area_id IN NUMBER)
1589 return NUMBER is
1590 l_ba_name ZPB_BUSAREA_VERSIONS.NAME%type;
1591 l_desc FND_CONCURRENT_REQUESTS.DESCRIPTION%type;
1592 begin
1593 select NAME
1594 into l_ba_name
1595 from ZPB_BUSINESS_AREAS_VL
1596 where BUSINESS_AREA_ID = p_business_area_id;
1597
1598 FND_MESSAGE.CLEAR;
1599 FND_MESSAGE.SET_NAME('ZPB', 'ZPB_BUSAREA_REFRESH');
1600 FND_MESSAGE.SET_TOKEN('NAME', l_ba_name);
1601 return FND_REQUEST.SUBMIT_REQUEST ('ZPB',
1602 'ZPB_MD_WRTBK',
1603 FND_MESSAGE.GET,
1604 null,
1605 null,
1606 p_business_area_id);
1607 end REFRESH;
1608
1609
1610 -------------------------------------------------------------------------
1611 -- REMOVE_ATTRIBUTE - Removes an attribute from the Business Area version
1612 --
1613 -- IN: p_version_id - The version ID
1614 -- p_logical_dim_id - Logical Dim Id
1615 -- p_attribute_id - The FEM Attribute ID
1616 -------------------------------------------------------------------------
1617 PROCEDURE REMOVE_ATTRIBUTE (p_version_id IN NUMBER,
1618 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
1619 p_attribute_id IN NUMBER)
1620 is
1621 begin
1622 delete from ZPB_BUSAREA_ATTRIBUTES
1623 where VERSION_ID = p_version_id
1627
1624 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1625 and ATTRIBUTE_ID = p_attribute_id;
1626 end REMOVE_ATTRIBUTE;
1628 -------------------------------------------------------------------------
1629 -- REMOVE_CONDITION - Removes an attribute condition from the Business
1630 -- Area version
1631 --
1632 -- IN: p_version_id - The version ID
1633 -- p_logical_dim_id - Logical Dim Id
1634 -- p_attribute_id - The FEM Attribute ID
1635 -- p_value - The attribute value
1636 -- p_value_set_id - The value set ID, for VS-enabled attributes
1637 -- p_operation - The operation of the condition
1638 -------------------------------------------------------------------------
1639 PROCEDURE REMOVE_CONDITION (p_version_id IN NUMBER,
1640 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
1641 p_attribute_id IN NUMBER,
1642 p_value IN VARCHAR2,
1643 p_operation IN VARCHAR2,
1644 p_value_set_id IN NUMBER)
1645
1646 is
1647 begin
1648 if (p_value_set_id is not null) then
1649 delete from ZPB_BUSAREA_CONDITIONS
1650 where VERSION_ID = p_version_id
1651 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1652 and ATTRIBUTE_ID = p_attribute_id
1653 and nvl(TRIM(VALUE), '*') = nvl(p_value, '*')
1654 and VALUE_SET_ID = p_value_set_id
1655 and OPERATION = p_operation;
1656
1657 else
1658 delete from ZPB_BUSAREA_CONDITIONS
1659 where VERSION_ID = p_version_id
1660 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1661 and ATTRIBUTE_ID = p_attribute_id
1662 and nvl(TRIM(VALUE), '*') = nvl(p_value, '*')
1663 and OPERATION = p_operation;
1664 end if;
1665 end REMOVE_CONDITION;
1666 -------------------------------------------------------------------------
1667 -- REMOVE_DATASET - Removes a dataset from the Business Area version
1668 --
1669 -- IN: p_version_id - The version ID
1670 -- p_dataset_id - The FEM Dataset ID
1671 -------------------------------------------------------------------------
1672 PROCEDURE REMOVE_DATASET (p_version_id IN NUMBER,
1673 p_dataset_id IN NUMBER)
1674 is
1675 begin
1676 delete from ZPB_BUSAREA_DATASETS
1677 where VERSION_ID = p_version_id
1678 and DATASET_ID = p_dataset_id;
1679 end REMOVE_DATASET;
1680
1681 -------------------------------------------------------------------------
1682 -- REMOVE_DIMENSION - Removes a dimension from the Business Area version
1683 --
1684 -- IN: p_version_id - The version ID
1685 -- p_logical_dim_id - The FEM Dimension ID
1686 -------------------------------------------------------------------------
1687 PROCEDURE REMOVE_DIMENSION (p_version_id IN NUMBER,
1688 p_logical_dim_id IN NUMBER) -- "Consistent Dimension"
1689 is
1690
1691 -- "Consistent Dimension"
1692 cursor c_dim_hier_curs is
1693 select HIERARCHY_ID
1694 from ZPB_BUSAREA_HIERARCHIES
1695 where VERSION_ID = p_version_id
1696 AND LOGICAL_DIM_ID = p_logical_dim_id;
1697
1698 l_dim_hier c_dim_hier_curs%ROWTYPE;
1699
1700 -- "Consistent Dimension"
1701 cursor c_dim_attr_curs is
1702 select ATTRIBUTE_ID
1703 from ZPB_BUSAREA_ATTRIBUTES
1704 where VERSION_ID = p_version_id
1705 AND LOGICAL_DIM_ID = p_logical_dim_id;
1706
1707 l_dim_attr c_dim_attr_curs%ROWTYPE;
1708
1709 begin
1710 for l_dim_hier in c_dim_hier_curs loop
1711 REMOVE_HIERARCHY (p_version_id,
1712 p_logical_dim_id, -- "Consistent Dimension"
1713 l_dim_hier.HIERARCHY_ID);
1714 end loop;
1715
1716 for l_dim_attr in c_dim_attr_curs loop
1717 REMOVE_ATTRIBUTE (p_version_id,
1718 p_logical_dim_id, -- "Consistent Dimension"
1719 l_dim_attr.ATTRIBUTE_ID);
1720 end loop;
1721
1722 delete from ZPB_BUSAREA_DIMENSIONS
1723 where VERSION_ID = p_version_id
1724 and LOGICAL_DIM_ID = p_logical_dim_id; -- "Consistent Dimension"
1725
1726 end REMOVE_DIMENSION;
1727
1728 -------------------------------------------------------------------------
1729 -- REMOVE_HIERARCHY - Removes a hierarchy from the Business Area version
1730 --
1731 -- IN: p_version_id - The version ID
1732 -- p_logical_dim_id - Logical Dim Id
1733 -- p_hierarchy_id - The FEM Hierarchy ID
1734 -------------------------------------------------------------------------
1735 PROCEDURE REMOVE_HIERARCHY (p_version_id IN NUMBER,
1736 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
1737 p_hierarchy_id IN NUMBER)
1738 is
1739 l_def_hier ZPB_BUSAREA_DIMENSIONS.DEFAULT_HIERARCHY_ID%type;
1740 begin
1741 delete from ZPB_BUSAREA_HIERARCHIES
1742 where VERSION_ID = p_version_id
1743 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1744 and HIERARCHY_ID = p_hierarchy_id;
1745
1746 delete from ZPB_BUSAREA_LEVELS
1750
1747 where VERSION_ID = p_version_id
1748 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1749 and HIERARCHY_ID = p_hierarchy_id;
1751 delete from ZPB_BUSAREA_HIER_MEMBERS
1752 where VERSION_ID = p_version_id
1753 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1754 and HIERARCHY_ID = p_hierarchy_id;
1755
1756 --
1757 -- Clean out the default hierarchy if the removed hier is the def one
1758 --
1759 begin
1760
1761 -- "Consistent Dimension"
1762 select DEFAULT_HIERARCHY_ID
1763 into l_def_hier
1764 from ZPB_BUSAREA_DIMENSIONS
1765 where VERSION_ID = p_version_id
1766 and LOGICAL_DIM_ID = p_logical_dim_id;
1767
1768 exception when NO_DATA_FOUND then
1769 l_def_hier := null;
1770 end;
1771
1772 if (l_def_hier = p_hierarchy_id) then
1773
1774 -- "Consistent Dimension"
1775 update ZPB_BUSAREA_DIMENSIONS
1776 set DEFAULT_HIERARCHY_ID = null
1777 where VERSION_ID = p_version_id
1778 and LOGICAL_DIM_ID = p_logical_dim_id;
1779
1780 end if;
1781
1782 end REMOVE_HIERARCHY;
1783
1784 -------------------------------------------------------------------------
1785 -- REMOVE_HIERARCHY_MEMBER - Removes a top level member to the
1786 -- Business Area version
1787 --
1788 -- IN: p_version_id - The version ID
1789 -- p_logical_dim_id - Logical Dim Id
1790 -- p_hierarchy_id - The FEM Hierarchy ID
1791 -- p_member_id - The FEM member ID
1792 -- p_member_vset - The FEM member valueset ID (defaults to null)
1793 -- p_hier_version - The FEM hierarchy version ID (defaults to null)
1794 -------------------------------------------------------------------------
1795 PROCEDURE REMOVE_HIERARCHY_MEMBER (p_version_id IN NUMBER,
1796 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
1797 p_hierarchy_id IN NUMBER,
1798 p_member_id IN NUMBER,
1799 p_member_vset IN NUMBER,
1800 p_hier_version IN NUMBER := null)
1801 is
1802 begin
1803 if (p_member_vset is not null) then
1804 if (p_hier_version is not null) then
1805 delete from ZPB_BUSAREA_HIER_MEMBERS
1806 where VERSION_ID = p_version_id
1807 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1808 and HIERARCHY_ID = p_hierarchy_id
1809 and MEMBER_ID = p_member_id
1810 and VALUE_SET_ID = p_member_vset
1811 and HIER_VERSION_ID = p_hier_version;
1812 else
1813 delete from ZPB_BUSAREA_HIER_MEMBERS
1814 where VERSION_ID = p_version_id
1815 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1816 and HIERARCHY_ID = p_hierarchy_id
1817 and MEMBER_ID = p_member_id
1818 and VALUE_SET_ID = p_member_vset;
1819 end if;
1820 elsif (p_hier_version is not null) then
1821 delete from ZPB_BUSAREA_HIER_MEMBERS
1822 where VERSION_ID = p_version_id
1823 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1824 and HIERARCHY_ID = p_hierarchy_id
1825 and MEMBER_ID = p_member_id
1826 and HIER_VERSION_ID = p_hier_version;
1827 else
1828 delete from ZPB_BUSAREA_HIER_MEMBERS
1829 where VERSION_ID = p_version_id
1830 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1831 and HIERARCHY_ID = p_hierarchy_id
1832 and MEMBER_ID = p_member_id;
1833 end if;
1834
1835 end REMOVE_HIERARCHY_MEMBER;
1836
1837 -------------------------------------------------------------------------
1838 -- REMOVE_HIERARCHY_VERSION - Removes a hierarchy to the Business Area version
1839 --
1840 -- IN: p_version_id - The version ID
1841 -- p_logical_dim_id - Logical Dim Id
1842 -- p_hierarchy_id - The FEM Hierarchy ID
1843 -- p_hier_vers_id - The FEM Hierarchy Version ID
1844 -------------------------------------------------------------------------
1845 PROCEDURE REMOVE_HIERARCHY_VERSION (p_version_id IN NUMBER,
1846 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
1847 p_hierarchy_id IN NUMBER,
1848 p_hier_vers_id IN NUMBER)
1849 is
1850 begin
1851 delete from ZPB_BUSAREA_HIER_VERSIONS
1852 where VERSION_ID = p_version_id
1853 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1854 and HIERARCHY_ID = p_hierarchy_id
1855 and nvl(HIER_VERSION_ID,-1) = nvl(p_hier_vers_id, -1);
1856 end REMOVE_HIERARCHY_VERSION;
1857
1858 -------------------------------------------------------------------------
1859 -- REMOVE_LEDGER - Removes a ledger from the Business Area version
1860 --
1861 -- IN: p_version_id - The version ID
1862 -- p_ledger_id - The FEM Ledger ID
1863 -------------------------------------------------------------------------
1864 PROCEDURE REMOVE_LEDGER (p_version_id IN NUMBER,
1865 p_ledger_id IN NUMBER)
1866 is
1867 begin
1871 end REMOVE_LEDGER;
1868 delete from ZPB_BUSAREA_LEDGERS
1869 where VERSION_ID = p_version_id
1870 and LEDGER_ID = p_ledger_id;
1872
1873 -------------------------------------------------------------------------
1874 -- REMOVE_LEVEL - Removes a level from the Business Area version
1875 --
1876 -- IN: p_version_id - The version ID
1877 -- p_logical_dim_id - Logical Dim Id
1878 -- p_hierarchy_id - The FEM Hierarchy ID
1879 -- p_level_id - The FEM Level ID
1880 -------------------------------------------------------------------------
1881 PROCEDURE REMOVE_LEVEL (p_version_id IN NUMBER,
1882 p_logical_dim_id IN NUMBER, -- "Consistent Dimension"
1883 p_hierarchy_id IN NUMBER,
1884 p_level_id IN NUMBER)
1885 is
1886 begin
1887 delete from ZPB_BUSAREA_LEVELS
1888 where VERSION_ID = p_version_id
1889 and LOGICAL_DIM_ID = p_logical_dim_id -- "Consistent Dimension"
1890 and HIERARCHY_ID = p_hierarchy_id
1891 and LEVEL_ID = p_level_id;
1892 end REMOVE_LEVEL;
1893
1894 -------------------------------------------------------------------------
1895 -- ADD_USER - Adds a user to the Business Area users table
1896 --
1897 -- IN: p_business_area_id - The business area ID
1898 -- p_user_id - The user ID
1899 -------------------------------------------------------------------------
1900 PROCEDURE ADD_USER (p_business_area_id IN NUMBER,
1901 p_user_id IN NUMBER)
1902 is
1903 begin
1904 insert into ZPB_BUSAREA_USERS
1905 (BUSINESS_AREA_ID,
1906 USER_ID,
1907 CREATION_DATE,
1908 CREATED_BY,
1909 LAST_UPDATE_LOGIN,
1910 LAST_UPDATE_DATE,
1911 LAST_UPDATED_BY)
1912 values
1913 (p_business_area_id,
1914 p_user_id,
1915 sysdate,
1916 FND_GLOBAL.USER_ID,
1917 FND_GLOBAL.LOGIN_ID,
1918 sysdate,
1919 FND_GLOBAL.USER_ID);
1920
1921 end ADD_USER;
1922
1923 -------------------------------------------------------------------------
1924 -- REMOVE_USER - Removes a user from the Business Area users
1925 --
1926 -- IN: p_business_area_id - The version ID
1927 -- p_user_id - The user ID
1928 -------------------------------------------------------------------------
1929 PROCEDURE REMOVE_USER (p_business_area_id IN NUMBER,
1930 p_user_id IN NUMBER)
1931 is
1932 begin
1933 delete from ZPB_BUSAREA_USERS
1934 where BUSINESS_AREA_ID = p_business_area_id
1935 and USER_ID = p_user_id;
1936 end REMOVE_USER;
1937
1938 -------------------------------------------------------------------------
1939 -- FDR_LEDGER_PREPOPULATE - Prepopulates the Ledger for a given FDR
1940 -- - Added for "Consistent Dimension" Project
1941 --
1942 -- IN: p_version_id - The version ID
1943 -- p_fdr_obj_def_id - FDR Object Definition Id
1944 -- p_return_status - return status
1945 -------------------------------------------------------------------------
1946 PROCEDURE FDR_LEDGER_PREPOPULATE (p_version_id IN NUMBER,
1947 p_fdr_obj_def_id IN NUMBER,
1948 p_return_status OUT NOCOPY VARCHAR2)
1949 IS
1950
1951 l_ledger_id NUMBER;
1952 l_gvsc_attr_id NUMBER;
1953
1954 CURSOR c_get_frd_ledgers IS
1955 select distinct DATA_LOC.LEDGER_ID
1956 from FEM_FUNC_DIM_SET_MAPS FDR_MAP,
1957 FEM_FUNC_DIM_SETS_B FDR_SET,
1958 FEM_DATA_LOCATIONS DATA_LOC,
1959 FEM_OBJECT_CATALOG_B OBJ,
1960 FEM_OBJECT_DEFINITION_B OBJ_DEF,
1961 FEM_LEDGERS_ATTR LEDGER_ATTR
1962 where FDR_MAP.FUNC_DIM_SET_ID = FDR_SET.FUNC_DIM_SET_ID
1963 and FDR_SET.FUNC_DIM_SET_OBJ_DEF_ID = p_fdr_obj_def_id
1964 and DATA_LOC.TABLE_NAME = FDR_MAP.TABLE_NAME
1965 and OBJ_DEF.OBJECT_DEFINITION_ID = FDR_SET.FUNC_DIM_SET_OBJ_DEF_ID
1966 and OBJ.OBJECT_ID = OBJ_DEF.OBJECT_ID
1967 and LEDGER_ATTR.LEDGER_ID = DATA_LOC.LEDGER_ID
1968 and LEDGER_ATTR.ATTRIBUTE_ID = l_gvsc_attr_id
1969 and LEDGER_ATTR.DIM_ATTRIBUTE_NUMERIC_MEMBER = OBJ.LOCAL_VS_COMBO_ID
1970 and NOT EXISTS (select BA_LEDGER.LEDGER_ID
1971 from ZPB_BUSAREA_LEDGERS BA_LEDGER
1972 where BA_LEDGER.VERSION_ID = p_version_id
1973 and BA_LEDGER.LEDGER_ID = DATA_LOC.LEDGER_ID);
1974
1975 BEGIN
1976
1977 -- The attribute Id of GLOBAL_VS_COMBO attribute
1978 -- belonging to the LEDGER dimension is being hard coded here.
1979 l_gvsc_attr_id := 10047;
1980
1981 p_return_status := 'F';
1982
1983 For c_get_frd_ledgers_rec in c_get_frd_ledgers loop
1984
1985 l_ledger_id := c_get_frd_ledgers_rec.ledger_id;
1986 ADD_LEDGER(p_version_id, l_ledger_id);
1987
1988 end loop;
1989
1990 p_return_status := 'S';
1991
1992 EXCEPTION
1993 WHEN OTHERS THEN
1994 p_return_status:= 'F';
1995
1996 END FDR_LEDGER_PREPOPULATE;
1997
1998
1999
2000 -------------------------------------------------------------------------
2001 -- FDR_DIM_PREPOPULATE - Prepopulates the Dimensions for a given FDR
2005 -- p_fdr_obj_def_id - FDR Object Definition Id
2002 -- - Added for "Consistent Dimension" Project
2003 --
2004 -- IN: p_version_id - The version ID
2006 -- p_return_status - return status
2007 -------------------------------------------------------------------------
2008 PROCEDURE FDR_DIM_PREPOPULATE (p_version_id IN NUMBER,
2009 p_fdr_obj_def_id IN NUMBER,
2010 p_return_status OUT NOCOPY VARCHAR2)
2011 IS
2012
2013 l_func_dim_set_id NUMBER;
2014 l_dimension_id NUMBER;
2015 l_invalid_dims NUMBER;
2016 l_count NUMBER;
2017 l_invalid_dim_list VARCHAR2(500);
2018
2019 CURSOR c_get_fdr_dims IS
2020 select FUNC_DIM_SET_ID, DIMENSION_ID
2021 from FEM_FUNC_DIM_SETS_B
2022 where FUNC_DIM_SET_OBJ_DEF_ID = p_fdr_obj_def_id;
2023
2024 CURSOR c_get_invalid_dims IS
2025 select A.FUNC_DIM_SET_ID, A.DIMENSION_ID, A.FUNC_DIM_SET_NAME, B.DESCRIPTION
2026 from FEM_FUNC_DIM_SETS_VL A, FEM_XDIM_DIMENSIONS_VL B
2027 where A.FUNC_DIM_SET_OBJ_DEF_ID = p_fdr_obj_def_id
2028 and A.DIMENSION_ID in (2, 5, 6, 112, 113)
2029 and A.DIMENSION_ID = B.DIMENSION_ID;
2030
2031 BEGIN
2032 p_return_status := 'F';
2033 l_invalid_dims := 0;
2034
2035 For c_get_invalid_dims_rec in c_get_invalid_dims loop
2036
2037 l_invalid_dims := 1;
2038 l_invalid_dim_list := l_invalid_dim_list || c_get_invalid_dims_rec.DESCRIPTION || ', ';
2039 End loop;
2040 -- strip off extra comma if there is one
2041 if (l_invalid_dims = 1) then
2042 -- if the last character of list of dimensions is a comma, get rid of it
2043 if (substr(l_invalid_dim_list, length(l_invalid_dim_list)) = ',') then
2044 l_invalid_dim_list := substr(l_invalid_dim_list, 1, length(l_invalid_dim_list)-1);
2045 end if;
2046 p_return_status := 'F:ZPB_BA_INV_FDR_SUPDIM:' || l_invalid_dim_list;
2047 end if;
2048 if(l_invalid_dims = 0) then
2049
2050 For c_get_fdr_dims_rec in c_get_fdr_dims loop
2051
2052 l_func_dim_set_id := c_get_fdr_dims_rec.FUNC_DIM_SET_ID;
2053 l_dimension_id := c_get_fdr_dims_rec.DIMENSION_ID;
2054
2055 select count(*)
2056 into l_count
2057 from ZPB_BUSAREA_DIMENSIONS
2058 where DIMENSION_ID = l_dimension_id
2059 and VERSION_ID = p_version_id;
2060
2061 -- if the dimension is not already in the BA, add it
2062 -- if it is already there then do a test
2063 -- if the dimension occurs twice in the FDR (not a 1-to-1 mapping)
2064 -- then copy the dimensions into the BA
2065 -- else update ZPB_BUSAREA_DIMENSIONS to have that dim point to the FDR
2066 if (l_count = 0) then
2067 ADD_DIMENSION(p_version_id,
2068 l_func_dim_set_id,
2069 l_dimension_id);
2070 else
2071 select count(*)
2072 into l_count
2073 from FEM_FUNC_DIM_SETS_B
2074 where FUNC_DIM_SET_OBJ_DEF_ID = p_fdr_obj_def_id
2075 and DIMENSION_ID = l_dimension_id;
2076
2077 if (l_count > 1) then
2078 ADD_DIMENSION(p_version_id,
2079 l_func_dim_set_id,
2080 l_dimension_id);
2081 else
2082 update ZPB_BUSAREA_DIMENSIONS
2083 set FUNC_DIM_SET_ID = l_func_dim_set_id
2084 where VERSION_ID = p_version_id
2085 and DIMENSION_ID = l_dimension_id;
2086
2087 end if;
2088
2089 end if;
2090
2091 end loop;
2092
2093 p_return_status := 'S';
2094
2095 end if;
2096
2097 EXCEPTION
2098 WHEN OTHERS THEN
2099 p_return_status:= 'F';
2100
2101 END FDR_DIM_PREPOPULATE;
2102
2103
2104
2105 -------------------------------------------------------------------------
2106 -- FDR_DATASET_PREPOPULATE - Prepopulates the Dimensions for a given FDR
2107 -- - Added for "Consistent Dimension" Project
2108 --
2109 -- IN: p_version_id - The version ID
2110 -- p_fdr_obj_def_id - FDR Object Definition Id
2111 -- p_return_status - return status
2112 -------------------------------------------------------------------------
2113 PROCEDURE FDR_DATASET_PREPOPULATE (p_version_id IN NUMBER,
2114 p_fdr_obj_def_id IN NUMBER,
2115 p_return_status OUT NOCOPY VARCHAR2)
2116 IS
2117
2118 l_dataset_id NUMBER;
2119
2120 CURSOR c_get_frd_datasets IS
2121 select distinct DATA_LOC.DATASET_CODE
2122 from FEM_FUNC_DIM_SET_MAPS FDR_MAP,
2123 FEM_FUNC_DIM_SETS_B FDR_SET,
2124 FEM_DATA_LOCATIONS DATA_LOC
2125 where FDR_MAP.FUNC_DIM_SET_ID = FDR_SET.FUNC_DIM_SET_ID
2126 and FDR_SET.FUNC_DIM_SET_OBJ_DEF_ID = p_fdr_obj_def_id
2127 and DATA_LOC.TABLE_NAME = FDR_MAP.TABLE_NAME
2128 and NOT EXISTS (select BA_DS.DATASET_ID
2129 from ZPB_BUSAREA_DATASETS BA_DS
2130 where BA_DS.VERSION_ID = p_version_id
2131 and BA_DS.DATASET_ID = DATA_LOC.DATASET_CODE);
2132 BEGIN
2133
2134 p_return_status := 'F';
2135
2136 For c_get_frd_datasets_rec in c_get_frd_datasets loop
2137
2138 l_dataset_id := c_get_frd_datasets_rec.DATASET_CODE;
2139
2140 ADD_DATASET(p_version_id, l_dataset_id);
2141
2145
2142 end loop;
2143
2144 p_return_status := 'S';
2146 EXCEPTION
2147 WHEN OTHERS THEN
2148 p_return_status:= 'F';
2149
2150 END FDR_DATASET_PREPOPULATE;
2151
2152 -------------------------------------------------------------------------
2153 -- FDR_PREPOPULATE - Prepopulates the Ledgers, Dimensions and Datasets
2154 -- for a given FDR
2155 -- - Added for "Consistent Dimension" Project
2156 --
2157 -- IN: p_version_id - The version ID
2158 -- p_fdr_obj_def_id - FDR Object Definition Id
2159 -- p_return_status - return status
2160 -------------------------------------------------------------------------
2161 PROCEDURE FDR_PREPOPULATE (p_version_id IN NUMBER,
2162 p_fdr_obj_def_id IN NUMBER,
2163 p_return_status OUT NOCOPY VARCHAR2)
2164
2165 IS
2166
2167 l_prepop_ledger_status VARCHAR2(500);
2168 l_prepop_dim_status VARCHAR2(500);
2169 l_prepop_dataset_status VARCHAR2(500);
2170
2171 BEGIN
2172
2173 p_return_status := 'F';
2174
2175 FDR_LEDGER_PREPOPULATE(p_version_id,
2176 p_fdr_obj_def_id,
2177 l_prepop_ledger_status);
2178 if (l_prepop_ledger_status <> 'S') then
2179 p_return_status := l_prepop_ledger_status;
2180 return;
2181 end if;
2182
2183 FDR_DIM_PREPOPULATE(p_version_id,
2184 p_fdr_obj_def_id,
2185 l_prepop_dim_status);
2186 if (l_prepop_dim_status <> 'S') then
2187 p_return_status := l_prepop_dim_status;
2188 return;
2189 end if;
2190
2191 FDR_DATASET_PREPOPULATE(p_version_id,
2192 p_fdr_obj_def_id,
2193 l_prepop_dataset_status);
2194 if (l_prepop_dataset_status <> 'S') then
2195 p_return_status := l_prepop_dataset_status;
2196 return;
2197 end if;
2198
2199 if(l_prepop_ledger_status = 'S' AND
2200 l_prepop_dim_status = 'S' AND
2201 l_prepop_dataset_status= 'S') then
2202
2203 p_return_status := 'S';
2204
2205 end if;
2206
2207 EXCEPTION
2208 WHEN OTHERS THEN
2209 p_return_status:= 'F';
2210
2211 END FDR_PREPOPULATE;
2212
2213
2214 -------------------------------------------------------------------------
2215 -- HANDLE_FDR_REMOVAL - Handles Removal of a FDR from a BA definition
2216 -- - Added for "Consistent Dimension" Project
2217 --
2218 -- IN: p_version_id - The version ID
2219 -- p_return_status - return status
2220 -------------------------------------------------------------------------
2221 PROCEDURE HANDLE_FDR_REMOVAL (p_version_id IN NUMBER,
2222 p_return_status OUT NOCOPY VARCHAR2)
2223 IS
2224
2225 l_dup_dims_exists NUMBER;
2226
2227 CURSOR c_get_dup_dims IS
2228 select BA_DIMS.DIMENSION_ID, count(BA_DIMS.DIMENSION_ID)
2229 from
2230 ZPB_BUSAREA_DIMENSIONS BA_DIMS
2231 where BA_DIMS.VERSION_ID = p_version_id
2232 group by BA_DIMS.DIMENSION_ID
2233 having count(BA_DIMS.DIMENSION_ID) > 1;
2234
2235
2236 BEGIN
2237
2238 -- NOTE: we could set this up to allow removal of an FDR
2239 -- if there is no refreshed version even if there
2240 -- are dimensions that are dupes. We could
2241 -- just remove all the dimensions that are in the FDR
2242 l_dup_dims_exists := -99;
2243 p_return_status := 'F';
2244
2245 for c_get_dup_dims_rec in c_get_dup_dims loop
2246 l_dup_dims_exists := c_get_dup_dims_rec.DIMENSION_ID;
2247 exit;
2248 end loop;
2249
2250 if (l_dup_dims_exists = -99) then
2251
2252 update ZPB_BUSAREA_VERSIONS
2253 set FUNC_DIM_SET_OBJ_DEF_ID = NULL
2254 where VERSION_ID = p_version_id;
2255
2256 update ZPB_BUSAREA_DIMENSIONS
2257 set FUNC_DIM_SET_ID = NULL
2258 where VERSION_ID = p_version_id;
2259
2260 p_return_status := 'S';
2261
2262 else
2263 p_return_status := 'F:ZPB_BA_INV_FDR_NOREM';
2264
2265 end if;
2266
2267
2268 EXCEPTION
2269 WHEN OTHERS THEN
2270 p_return_status:= 'F';
2271
2272 END HANDLE_FDR_REMOVAL;
2273
2274
2275 -------------------------------------------------------------------------
2276 -- HANDLE_FDR_CHANGES - Handles changes in the FDR of a BA
2277 -- - Added for "Consistent Dimension" Project
2278 --
2279 -- IN: p_version_id - The version ID
2280 -- p_fdr_obj_def_id_old - Old FDR Object Definition Id
2281 -- p_fdr_obj_def_id_new - New FDR Object Definition Id
2282 -- p_return_status - return status
2283 -------------------------------------------------------------------------
2284 PROCEDURE HANDLE_FDR_CHANGES (p_version_id IN NUMBER,
2285 p_fdr_obj_def_id_old IN NUMBER,
2286 p_fdr_obj_def_id_new IN NUMBER,
2287 p_return_status OUT NOCOPY VARCHAR2)
2288 IS
2289
2290 BEGIN
2291
2292 p_return_status := 'F';
2293
2294 if ((p_fdr_obj_def_id_old is null) AND
2295 (p_fdr_obj_def_id_new is null)) then
2296
2297 p_return_status := 'S';
2298
2299 elsif ((p_fdr_obj_def_id_old is null) AND
2300 (p_fdr_obj_def_id_new is not null)) then
2301
2302 FDR_PREPOPULATE(p_version_id,
2303 p_fdr_obj_def_id_new,
2304 p_return_status);
2305
2306 elsif ((p_fdr_obj_def_id_old is not null) AND
2307 (p_fdr_obj_def_id_new is null)) then
2308
2309 HANDLE_FDR_REMOVAL(p_version_id, p_return_status);
2310
2311 else
2312
2313 if (p_fdr_obj_def_id_old = p_fdr_obj_def_id_new) then
2314
2315 p_return_status := 'S';
2316
2317 else
2318
2319 HANDLE_FDR_REMOVAL(p_version_id, p_return_status);
2320
2321 if (p_return_status = 'S') then
2322
2323 FDR_PREPOPULATE(p_version_id,
2324 p_fdr_obj_def_id_new,
2325 p_return_status);
2326 end if;
2327
2328 end if;
2329 end if;
2330
2331 EXCEPTION
2332 WHEN OTHERS THEN
2333 p_return_status:= 'F';
2334
2335 END HANDLE_FDR_CHANGES;
2336
2337
2338 -------------------------------------------------------------------------
2339 -- GENERATE_AW_DIM_NAME - Generates the AW name of a dimension
2340 -- - Added for "Consistent Dimension" Project
2341 --
2342 -- IN: p_dim_type_code - FEM Dimension Type Code
2343 -- p_member_b_table - FEM XDIM Member B Table
2344 -- OUT: p_aw_dim_name - ZPB AW Dimension Name
2345 -------------------------------------------------------------------------
2346 PROCEDURE GENERATE_AW_DIM_NAME (p_dim_type_code IN VARCHAR2,
2350
2347 p_member_b_table IN VARCHAR2,
2348 p_aw_dim_name OUT NOCOPY VARCHAR2)
2349 IS
2351 l_aw_dim_name VARCHAR2(30);
2352 l_length NUMBER;
2353 l_schema VARCHAR2(30);
2354
2355 BEGIN
2356
2357 if(p_dim_type_code = 'LINE') then
2358
2359 l_aw_dim_name := 'LINE_ITEMS';
2360
2361 else
2362
2363 l_aw_dim_name := p_member_b_table;
2364 l_schema := zpb_aw.get_schema;
2365
2366 if (instr(l_aw_dim_name, l_schema) = 1) then
2367 l_aw_dim_name := substr(l_aw_dim_name,5);
2368 end if;
2369
2370 if (instr(l_aw_dim_name, 'FEM_') = 1) then
2371 l_aw_dim_name := substr(l_aw_dim_name,5);
2372 end if;
2373
2374 l_length := length(l_aw_dim_name);
2375
2376 if (instr(l_aw_dim_name,'_B') = (l_length - 1)) then
2377
2378 l_aw_dim_name := substr(l_aw_dim_name,1,l_length - 2);
2379
2380 elsif (instr(l_aw_dim_name,'_VL') = (l_length - 2)) then
2381
2382 l_aw_dim_name := substr(l_aw_dim_name,1,l_length - 3);
2383
2384 end if;
2385
2386 end if;
2387
2388 p_aw_dim_name := l_aw_dim_name;
2389
2390 EXCEPTION
2391 WHEN OTHERS THEN
2392 null;
2393
2394 END GENERATE_AW_DIM_NAME;
2395
2396 END ZPB_BUSAREA_MAINT;