DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_SYS_DIM_LEVELS_PKG

Source


1 package body BSC_SYS_DIM_LEVELS_PKG as
2 /* $Header: BSCSDMLB.pls 115.6 2003/02/12 14:29:16 adeulgao ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out NOCOPY VARCHAR2,
5   X_DIM_LEVEL_ID in NUMBER,
6   X_LEVEL_TABLE_NAME in VARCHAR2,
7   X_TABLE_TYPE in NUMBER,
8   X_LEVEL_PK_COL in VARCHAR2,
9   X_ABBREVIATION in VARCHAR2,
10   X_VALUE_ORDER_BY in NUMBER,
11   X_COMP_ORDER_BY in NUMBER,
12   X_CUSTOM_GROUP in NUMBER,
13   X_USER_KEY_SIZE in NUMBER,
14   X_DISP_KEY_SIZE in NUMBER,
15   X_NAME in VARCHAR2,
16   X_HELP in VARCHAR2,
17   X_TOTAL_DISP_NAME in VARCHAR2,
18   X_COMP_DISP_NAME in VARCHAR2
19 ) is
20   cursor C is select ROWID from BSC_SYS_DIM_LEVELS_B
21     where DIM_LEVEL_ID = X_DIM_LEVEL_ID
22     ;
23 begin
24   insert into BSC_SYS_DIM_LEVELS_B (
25     DIM_LEVEL_ID,
26     LEVEL_TABLE_NAME,
27     TABLE_TYPE,
28     LEVEL_PK_COL,
29     ABBREVIATION,
30     VALUE_ORDER_BY,
31     COMP_ORDER_BY,
32     CUSTOM_GROUP,
33     USER_KEY_SIZE,
34     DISP_KEY_SIZE
35   ) values (
36     X_DIM_LEVEL_ID,
37     X_LEVEL_TABLE_NAME,
38     X_TABLE_TYPE,
39     X_LEVEL_PK_COL,
40     X_ABBREVIATION,
41     X_VALUE_ORDER_BY,
42     X_COMP_ORDER_BY,
43     X_CUSTOM_GROUP,
44     X_USER_KEY_SIZE,
45     X_DISP_KEY_SIZE
46   );
47 
48   insert into BSC_SYS_DIM_LEVELS_TL (
49     DIM_LEVEL_ID,
50     NAME,
51     HELP,
52     TOTAL_DISP_NAME,
53     COMP_DISP_NAME,
54     LANGUAGE,
55     SOURCE_LANG
56   ) select
57     X_DIM_LEVEL_ID,
58     X_NAME,
59     X_HELP,
60     X_TOTAL_DISP_NAME,
61     X_COMP_DISP_NAME,
62     L.LANGUAGE_CODE,
63     userenv('LANG')
64   from FND_LANGUAGES L
65   where L.INSTALLED_FLAG in ('I', 'B')
66   and not exists
67     (select NULL
68     from BSC_SYS_DIM_LEVELS_TL T
69     where T.DIM_LEVEL_ID = X_DIM_LEVEL_ID
70     and T.LANGUAGE = L.LANGUAGE_CODE);
71 
72   open c;
73   fetch c into X_ROWID;
74   if (c%notfound) then
75     close c;
76     raise no_data_found;
77   end if;
78   close c;
79 
80 end INSERT_ROW;
81 
82 procedure LOCK_ROW (
83   X_DIM_LEVEL_ID in NUMBER,
84   X_LEVEL_TABLE_NAME in VARCHAR2,
85   X_TABLE_TYPE in NUMBER,
86   X_LEVEL_PK_COL in VARCHAR2,
87   X_ABBREVIATION in VARCHAR2,
88   X_VALUE_ORDER_BY in NUMBER,
89   X_COMP_ORDER_BY in NUMBER,
90   X_CUSTOM_GROUP in NUMBER,
91   X_USER_KEY_SIZE in NUMBER,
92   X_DISP_KEY_SIZE in NUMBER,
93   X_NAME in VARCHAR2,
94   X_HELP in VARCHAR2,
95   X_TOTAL_DISP_NAME in VARCHAR2,
96   X_COMP_DISP_NAME in VARCHAR2
97 ) is
98   cursor c is select
99       LEVEL_TABLE_NAME,
100       TABLE_TYPE,
101       LEVEL_PK_COL,
102       ABBREVIATION,
103       VALUE_ORDER_BY,
104       COMP_ORDER_BY,
105       CUSTOM_GROUP,
106       USER_KEY_SIZE,
107       DISP_KEY_SIZE
108     from BSC_SYS_DIM_LEVELS_B
109     where DIM_LEVEL_ID = X_DIM_LEVEL_ID
110     for update of DIM_LEVEL_ID nowait;
111   recinfo c%rowtype;
112 
113   cursor c1 is select
114       NAME,
115       HELP,
116       TOTAL_DISP_NAME,
117       COMP_DISP_NAME,
118       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
119     from BSC_SYS_DIM_LEVELS_TL
120     where DIM_LEVEL_ID = X_DIM_LEVEL_ID
121     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
122     for update of DIM_LEVEL_ID nowait;
123 begin
124   open c;
125   fetch c into recinfo;
126   if (c%notfound) then
127     close c;
128     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
129     app_exception.raise_exception;
130   end if;
131   close c;
132   if (    (recinfo.LEVEL_TABLE_NAME = X_LEVEL_TABLE_NAME)
133       AND (recinfo.TABLE_TYPE = X_TABLE_TYPE)
134       AND (recinfo.LEVEL_PK_COL = X_LEVEL_PK_COL)
135       AND (recinfo.ABBREVIATION = X_ABBREVIATION)
136       AND (recinfo.VALUE_ORDER_BY = X_VALUE_ORDER_BY)
137       AND (recinfo.COMP_ORDER_BY = X_COMP_ORDER_BY)
138       AND (recinfo.CUSTOM_GROUP = X_CUSTOM_GROUP)
139       AND (recinfo.USER_KEY_SIZE = X_USER_KEY_SIZE)
140       AND (recinfo.DISP_KEY_SIZE = X_DISP_KEY_SIZE)
141   ) then
142     null;
143   else
144     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
145     app_exception.raise_exception;
146   end if;
147 
148   for tlinfo in c1 loop
149     if (tlinfo.BASELANG = 'Y') then
150       if (    (tlinfo.NAME = X_NAME)
151           AND (tlinfo.HELP = X_HELP)
152           AND ((tlinfo.TOTAL_DISP_NAME = X_TOTAL_DISP_NAME)
153                OR ((tlinfo.TOTAL_DISP_NAME is null) AND (X_TOTAL_DISP_NAME is null)))
154           AND ((tlinfo.COMP_DISP_NAME = X_COMP_DISP_NAME)
155                OR ((tlinfo.COMP_DISP_NAME is null) AND (X_COMP_DISP_NAME is null)))
156       ) then
157         null;
158       else
159         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
160         app_exception.raise_exception;
161       end if;
162     end if;
163   end loop;
164   return;
165 end LOCK_ROW;
166 
167 procedure UPDATE_ROW (
168   X_DIM_LEVEL_ID in NUMBER,
169   X_LEVEL_TABLE_NAME in VARCHAR2,
170   X_TABLE_TYPE in NUMBER,
171   X_LEVEL_PK_COL in VARCHAR2,
172   X_ABBREVIATION in VARCHAR2,
173   X_VALUE_ORDER_BY in NUMBER,
174   X_COMP_ORDER_BY in NUMBER,
175   X_CUSTOM_GROUP in NUMBER,
176   X_USER_KEY_SIZE in NUMBER,
177   X_DISP_KEY_SIZE in NUMBER,
178   X_NAME in VARCHAR2,
179   X_HELP in VARCHAR2,
180   X_TOTAL_DISP_NAME in VARCHAR2,
181   X_COMP_DISP_NAME in VARCHAR2
182 ) is
183 begin
184   update BSC_SYS_DIM_LEVELS_B set
185     LEVEL_TABLE_NAME = X_LEVEL_TABLE_NAME,
186     TABLE_TYPE = X_TABLE_TYPE,
187     LEVEL_PK_COL = X_LEVEL_PK_COL,
188     ABBREVIATION = X_ABBREVIATION,
189     VALUE_ORDER_BY = X_VALUE_ORDER_BY,
190     COMP_ORDER_BY = X_COMP_ORDER_BY,
191     CUSTOM_GROUP = X_CUSTOM_GROUP,
192     USER_KEY_SIZE = X_USER_KEY_SIZE,
193     DISP_KEY_SIZE = X_DISP_KEY_SIZE
194   where DIM_LEVEL_ID = X_DIM_LEVEL_ID;
195 
196   if (sql%notfound) then
197     raise no_data_found;
198   end if;
199 
200   update BSC_SYS_DIM_LEVELS_TL set
201     NAME = X_NAME,
202     HELP = X_HELP,
203     TOTAL_DISP_NAME = X_TOTAL_DISP_NAME,
204     COMP_DISP_NAME = X_COMP_DISP_NAME,
205     SOURCE_LANG = userenv('LANG')
206   where DIM_LEVEL_ID = X_DIM_LEVEL_ID
207   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
208 
209   if (sql%notfound) then
210     raise no_data_found;
211   end if;
212 end UPDATE_ROW;
213 
214 procedure DELETE_ROW (
215   X_DIM_LEVEL_ID in NUMBER
216 ) is
217 begin
218   delete from BSC_SYS_DIM_LEVELS_TL
219   where DIM_LEVEL_ID = X_DIM_LEVEL_ID;
220 
221   if (sql%notfound) then
222     raise no_data_found;
223   end if;
224 
225   delete from BSC_SYS_DIM_LEVELS_B
226   where DIM_LEVEL_ID = X_DIM_LEVEL_ID;
227 
228   if (sql%notfound) then
229     raise no_data_found;
230   end if;
231 end DELETE_ROW;
232 
233 procedure ADD_LANGUAGE
234 is
235 begin
236   delete from BSC_SYS_DIM_LEVELS_TL T
237   where not exists
238     (select NULL
239     from BSC_SYS_DIM_LEVELS_B B
240     where B.DIM_LEVEL_ID = T.DIM_LEVEL_ID
241     );
242 
243   update BSC_SYS_DIM_LEVELS_TL T set (
244       NAME,
245       HELP,
246       TOTAL_DISP_NAME,
247       COMP_DISP_NAME
248     ) = (select
249       B.NAME,
250       B.HELP,
251       B.TOTAL_DISP_NAME,
252       B.COMP_DISP_NAME
253     from BSC_SYS_DIM_LEVELS_TL B
254     where B.DIM_LEVEL_ID = T.DIM_LEVEL_ID
255     and B.LANGUAGE = T.SOURCE_LANG)
256   where (
257       T.DIM_LEVEL_ID,
258       T.LANGUAGE
259   ) in (select
260       SUBT.DIM_LEVEL_ID,
261       SUBT.LANGUAGE
262     from BSC_SYS_DIM_LEVELS_TL SUBB, BSC_SYS_DIM_LEVELS_TL SUBT
263     where SUBB.DIM_LEVEL_ID = SUBT.DIM_LEVEL_ID
264     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
265     and (SUBB.NAME <> SUBT.NAME
266       or SUBB.HELP <> SUBT.HELP
267       or SUBB.TOTAL_DISP_NAME <> SUBT.TOTAL_DISP_NAME
268       or (SUBB.TOTAL_DISP_NAME is null and SUBT.TOTAL_DISP_NAME is not null)
269       or (SUBB.TOTAL_DISP_NAME is not null and SUBT.TOTAL_DISP_NAME is null)
270       or SUBB.COMP_DISP_NAME <> SUBT.COMP_DISP_NAME
271       or (SUBB.COMP_DISP_NAME is null and SUBT.COMP_DISP_NAME is not null)
272       or (SUBB.COMP_DISP_NAME is not null and SUBT.COMP_DISP_NAME is null)
273   ));
274 
275   insert into BSC_SYS_DIM_LEVELS_TL (
276     DIM_LEVEL_ID,
277     NAME,
278     HELP,
279     TOTAL_DISP_NAME,
280     COMP_DISP_NAME,
281     LANGUAGE,
282     SOURCE_LANG
283   ) select
284     B.DIM_LEVEL_ID,
285     B.NAME,
286     B.HELP,
287     B.TOTAL_DISP_NAME,
288     B.COMP_DISP_NAME,
289     L.LANGUAGE_CODE,
290     B.SOURCE_LANG
291   from BSC_SYS_DIM_LEVELS_TL B, FND_LANGUAGES L
292   where L.INSTALLED_FLAG in ('I', 'B')
293   and B.LANGUAGE = userenv('LANG')
294   and not exists
295     (select NULL
296     from BSC_SYS_DIM_LEVELS_TL T
297     where T.DIM_LEVEL_ID = B.DIM_LEVEL_ID
298     and T.LANGUAGE = L.LANGUAGE_CODE);
299 end ADD_LANGUAGE;
300 
301 end BSC_SYS_DIM_LEVELS_PKG;