DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_KPI_DIM_SETS_PKG

Source


1 package body BSC_KPI_DIM_SETS_PKG as
2 /* $Header: BSCKDSTB.pls 120.1 2007/02/08 13:19:02 akoduri ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out NOCOPY VARCHAR2,
5   X_INDICATOR in NUMBER,
6   X_DIM_SET_ID in NUMBER,
7   X_NAME in VARCHAR2,
8   X_CREATION_DATE in DATE,
9   X_CREATED_BY in NUMBER,
10   X_LAST_UPDATE_DATE in DATE,
11   X_LAST_UPDATED_BY in NUMBER,
12   X_LAST_UPDATE_LOGIN in NUMBER
13 ) is
14   cursor C is select ROWID from BSC_KPI_DIM_SETS_TL
15     where INDICATOR = X_INDICATOR
16     and DIM_SET_ID = X_DIM_SET_ID
17     and LANGUAGE = userenv('LANG')
18     ;
19 begin
20   insert into BSC_KPI_DIM_SETS_TL (
21     INDICATOR,
22     DIM_SET_ID,
23     NAME,
24     LANGUAGE,
25     SOURCE_LANG,
26 	  CREATION_DATE ,
27 	  CREATED_BY,
28 	  LAST_UPDATE_DATE,
29 	  LAST_UPDATED_BY ,
30 	  LAST_UPDATE_LOGIN
31   ) select
32     X_INDICATOR,
33     X_DIM_SET_ID,
34     X_NAME,
35     L.LANGUAGE_CODE,
36     userenv('LANG'),
37 	 X_CREATION_DATE ,
38 	  X_CREATED_BY,
39 	  X_LAST_UPDATE_DATE,
40 	  X_LAST_UPDATED_BY ,
41 	  X_LAST_UPDATE_LOGIN
42   from FND_LANGUAGES L
43   where L.INSTALLED_FLAG in ('I', 'B')
44   and not exists
45     (select NULL
46     from BSC_KPI_DIM_SETS_TL T
47     where T.INDICATOR = X_INDICATOR
48     and T.DIM_SET_ID = X_DIM_SET_ID
49     and T.LANGUAGE = L.LANGUAGE_CODE);
50 
51   open c;
52   fetch c into X_ROWID;
53   if (c%notfound) then
54     close c;
55     raise no_data_found;
56   end if;
57   close c;
58 
59 end INSERT_ROW;
60 
61 procedure LOCK_ROW (
62   X_INDICATOR in NUMBER,
63   X_DIM_SET_ID in NUMBER,
64   X_NAME in VARCHAR2
65 ) is
66   cursor c1 is select
67       NAME,
68       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
69     from BSC_KPI_DIM_SETS_TL
70     where INDICATOR = X_INDICATOR
71     and DIM_SET_ID = X_DIM_SET_ID
72     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
73     for update of INDICATOR nowait;
74 begin
75   for tlinfo in c1 loop
76     if (tlinfo.BASELANG = 'Y') then
77       if (    (tlinfo.NAME = X_NAME)
78       ) then
79         null;
80       else
81         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
82         app_exception.raise_exception;
83       end if;
84     end if;
85   end loop;
86   return;
87 end LOCK_ROW;
88 
89 procedure UPDATE_ROW (
90   X_INDICATOR in NUMBER,
91   X_DIM_SET_ID in NUMBER,
92   X_NAME in VARCHAR2,
93   X_CREATION_DATE in DATE,
94   X_CREATED_BY in NUMBER,
95   X_LAST_UPDATE_DATE in DATE,
96   X_LAST_UPDATED_BY in NUMBER,
97   X_LAST_UPDATE_LOGIN in NUMBER
98 ) is
99 begin
100   update BSC_KPI_DIM_SETS_TL set
101     NAME = X_NAME,
102     SOURCE_LANG = userenv('LANG'),
103     LAST_UPDATE_DATE = DECODE(LAST_UPDATED_BY,1,X_LAST_UPDATE_DATE,LAST_UPDATE_DATE),
104     LAST_UPDATED_BY = DECODE(LAST_UPDATED_BY,1,X_LAST_UPDATED_BY,LAST_UPDATED_BY),
105     LAST_UPDATE_LOGIN = DECODE(LAST_UPDATED_BY,1,X_LAST_UPDATE_LOGIN,LAST_UPDATE_LOGIN)
106   where INDICATOR = X_INDICATOR
107   and DIM_SET_ID = X_DIM_SET_ID
108   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
109 
110   if (sql%notfound) then
111     raise no_data_found;
112   end if;
113 end UPDATE_ROW;
114 
115 procedure DELETE_ROW (
116   X_INDICATOR in NUMBER,
117   X_DIM_SET_ID in NUMBER
118 ) is
119 begin
120   delete from BSC_KPI_DIM_SETS_TL
121   where INDICATOR = X_INDICATOR
122   and DIM_SET_ID = X_DIM_SET_ID;
123 
124   if (sql%notfound) then
125     raise no_data_found;
126   end if;
127 
128 end DELETE_ROW;
129 
130 procedure ADD_LANGUAGE
131 is
132 begin
133   update BSC_KPI_DIM_SETS_TL T set (
134       NAME
135     ) = (select
136       B.NAME
137     from BSC_KPI_DIM_SETS_TL B
138     where B.INDICATOR = T.INDICATOR
139     and B.DIM_SET_ID = T.DIM_SET_ID
140     and B.LANGUAGE = T.SOURCE_LANG)
141   where (
142       T.INDICATOR,
143       T.DIM_SET_ID,
144       T.LANGUAGE
145   ) in (select
146       SUBT.INDICATOR,
147       SUBT.DIM_SET_ID,
148       SUBT.LANGUAGE
149     from BSC_KPI_DIM_SETS_TL SUBB, BSC_KPI_DIM_SETS_TL SUBT
150     where SUBB.INDICATOR = SUBT.INDICATOR
151     and SUBB.DIM_SET_ID = SUBT.DIM_SET_ID
152     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
153     and (SUBB.NAME <> SUBT.NAME
154   ));
155 
156   insert into BSC_KPI_DIM_SETS_TL (
157     INDICATOR,
158     DIM_SET_ID,
159     NAME,
160     LANGUAGE,
161     SOURCE_LANG,
162    CREATION_DATE ,
163     CREATED_BY,
164     LAST_UPDATE_DATE,
165     LAST_UPDATED_BY
166   ) select
167     B.INDICATOR,
168     B.DIM_SET_ID,
169     B.NAME,
170     L.LANGUAGE_CODE,
171     B.SOURCE_LANG,
172     B.CREATION_DATE ,
173     B.CREATED_BY,
174     B.LAST_UPDATE_DATE,
175     B.LAST_UPDATED_BY
176   from BSC_KPI_DIM_SETS_TL B, FND_LANGUAGES L
177   where L.INSTALLED_FLAG in ('I', 'B')
178   and B.LANGUAGE = userenv('LANG')
179   and not exists
180     (select NULL
181     from BSC_KPI_DIM_SETS_TL T
182     where T.INDICATOR = B.INDICATOR
183     and T.DIM_SET_ID = B.DIM_SET_ID
184     and T.LANGUAGE = L.LANGUAGE_CODE);
185 end ADD_LANGUAGE;
186 
187 FUNCTION Get_Dim_Set_Name (
188   p_Indicator    IN  NUMBER
189  ,p_Dim_Set_Id   IN  NUMBER
190 ) RETURN VARCHAR2 IS
191   CURSOR c_Dim_Set_Name IS
192   SELECT Name
193   FROM   bsc_kpi_dim_sets_vl
194   WHERE  indicator = p_Indicator
195   AND    dim_set_id = p_Dim_Set_Id;
196   l_Dim_Set_Name  bsc_kpi_dim_sets_vl.Name%TYPE := NULL;
197 BEGIN
198 
199   OPEN c_Dim_Set_Name;
200   FETCH c_Dim_Set_Name INTO l_Dim_Set_Name;
201   CLOSE c_Dim_Set_Name;
202 
203   RETURN l_Dim_Set_Name;
204 
205 EXCEPTION
206   WHEN OTHERS THEN
207     RETURN l_Dim_Set_Name;
208 END Get_Dim_Set_Name;
209 
210 FUNCTION Get_Dim_Level_Names (
211   p_Indicator    IN  NUMBER
212  ,p_Dim_Set_Id   IN  NUMBER
213 ) RETURN VARCHAR2 IS
214 
215   CURSOR c_dim_levels IS
216   SELECT Name
217   FROM   bsc_kpi_dim_levels_vl
218   WHERE  indicator = p_Indicator
219   AND    dim_set_id = p_Dim_Set_Id
220   AND    status = 2;
221   l_Dim_Level_Names  VARCHAR2(2000) := '';
222 BEGIN
223   FOR cd in c_dim_levels LOOP
224     l_Dim_Level_Names := l_Dim_Level_Names || ' / ' || cd.Name;
225   END LOOP;
226   IF SUBSTR(l_Dim_Level_Names,1,3) = ' / ' THEN
227     l_Dim_Level_Names := SUBSTR(l_Dim_Level_Names,4);
228   END IF;
229   IF (l_Dim_Level_Names IS NULL) THEN
230     l_Dim_Level_Names := fnd_message.get_string('BSC','BSC_NO_DIM_OBJS_IN_DIMSET');
231   END IF;
232   RETURN l_Dim_Level_Names;
233 EXCEPTION
234   WHEN OTHERS THEN
235     RETURN l_Dim_Level_Names;
236 END Get_Dim_Level_Names;
237 
238 end BSC_KPI_DIM_SETS_PKG;