[Home] [Help]
PACKAGE BODY: APPS.FEM_GLOBAL_VS_COMBOS_PKG
Source
1 package body FEM_GLOBAL_VS_COMBOS_PKG as
2 /* $Header: fem_globvsc_pkb.plb 120.0 2005/06/06 20:49:46 appldev noship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out nocopy VARCHAR2,
5 X_GLOBAL_VS_COMBO_ID in NUMBER,
6 X_GLOBAL_VS_COMBO_DISPLAY_CODE in VARCHAR2,
7 X_ENABLED_FLAG in VARCHAR2,
8 X_READ_ONLY_FLAG in VARCHAR2,
9 X_PERSONAL_FLAG in VARCHAR2,
10 X_OBJECT_VERSION_NUMBER in NUMBER,
11 X_GLOBAL_VS_COMBO_NAME in VARCHAR2,
12 X_DESCRIPTION in VARCHAR2,
13 X_CREATION_DATE in DATE,
14 X_CREATED_BY in NUMBER,
15 X_LAST_UPDATE_DATE in DATE,
16 X_LAST_UPDATED_BY in NUMBER,
17 X_LAST_UPDATE_LOGIN in NUMBER
18 ) is
19 cursor C is select ROWID from FEM_GLOBAL_VS_COMBOS_B
20 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID
21 ;
22 begin
23 insert into FEM_GLOBAL_VS_COMBOS_B (
24 GLOBAL_VS_COMBO_DISPLAY_CODE,
25 ENABLED_FLAG,
26 READ_ONLY_FLAG,
27 PERSONAL_FLAG,
28 GLOBAL_VS_COMBO_ID,
29 OBJECT_VERSION_NUMBER,
30 CREATION_DATE,
31 CREATED_BY,
32 LAST_UPDATE_DATE,
33 LAST_UPDATED_BY,
34 LAST_UPDATE_LOGIN
35 ) values (
36 X_GLOBAL_VS_COMBO_DISPLAY_CODE,
37 X_ENABLED_FLAG,
38 X_READ_ONLY_FLAG,
39 X_PERSONAL_FLAG,
40 X_GLOBAL_VS_COMBO_ID,
41 X_OBJECT_VERSION_NUMBER,
42 X_CREATION_DATE,
43 X_CREATED_BY,
44 X_LAST_UPDATE_DATE,
45 X_LAST_UPDATED_BY,
46 X_LAST_UPDATE_LOGIN
47 );
48
49 insert into FEM_GLOBAL_VS_COMBOS_TL (
50 LAST_UPDATE_DATE,
51 LAST_UPDATE_LOGIN,
52 GLOBAL_VS_COMBO_ID,
53 GLOBAL_VS_COMBO_NAME,
54 DESCRIPTION,
55 CREATION_DATE,
56 CREATED_BY,
57 LAST_UPDATED_BY,
58 LANGUAGE,
59 SOURCE_LANG
60 ) select
61 X_LAST_UPDATE_DATE,
62 X_LAST_UPDATE_LOGIN,
63 X_GLOBAL_VS_COMBO_ID,
64 X_GLOBAL_VS_COMBO_NAME,
65 X_DESCRIPTION,
66 X_CREATION_DATE,
67 X_CREATED_BY,
68 X_LAST_UPDATED_BY,
69 L.LANGUAGE_CODE,
70 userenv('LANG')
71 from FND_LANGUAGES L
72 where L.INSTALLED_FLAG in ('I', 'B')
73 and not exists
74 (select NULL
75 from FEM_GLOBAL_VS_COMBOS_TL T
76 where T.GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID
77 and T.LANGUAGE = L.LANGUAGE_CODE);
78
79 open c;
80 fetch c into X_ROWID;
81 if (c%notfound) then
82 close c;
83 raise no_data_found;
84 end if;
85 close c;
86
87 end INSERT_ROW;
88
89 procedure LOCK_ROW (
90 X_GLOBAL_VS_COMBO_ID in NUMBER,
91 X_GLOBAL_VS_COMBO_DISPLAY_CODE in VARCHAR2,
92 X_ENABLED_FLAG in VARCHAR2,
93 X_READ_ONLY_FLAG in VARCHAR2,
94 X_PERSONAL_FLAG in VARCHAR2,
95 X_OBJECT_VERSION_NUMBER in NUMBER,
96 X_GLOBAL_VS_COMBO_NAME in VARCHAR2,
97 X_DESCRIPTION in VARCHAR2
98 ) is
99 cursor c is select
100 GLOBAL_VS_COMBO_DISPLAY_CODE,
101 ENABLED_FLAG,
102 READ_ONLY_FLAG,
103 PERSONAL_FLAG,
104 OBJECT_VERSION_NUMBER
105 from FEM_GLOBAL_VS_COMBOS_B
106 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID
107 for update of GLOBAL_VS_COMBO_ID nowait;
108 recinfo c%rowtype;
109
110 cursor c1 is select
111 GLOBAL_VS_COMBO_NAME,
112 DESCRIPTION,
113 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
114 from FEM_GLOBAL_VS_COMBOS_TL
115 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID
116 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
117 for update of GLOBAL_VS_COMBO_ID nowait;
118 begin
119 open c;
120 fetch c into recinfo;
121 if (c%notfound) then
122 close c;
123 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
124 app_exception.raise_exception;
125 end if;
126 close c;
127 if ( (recinfo.GLOBAL_VS_COMBO_DISPLAY_CODE = X_GLOBAL_VS_COMBO_DISPLAY_CODE)
128 AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
129 AND (recinfo.READ_ONLY_FLAG = X_READ_ONLY_FLAG)
130 AND (recinfo.PERSONAL_FLAG = X_PERSONAL_FLAG)
131 AND (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
132 ) then
133 null;
134 else
135 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
136 app_exception.raise_exception;
137 end if;
138
139 for tlinfo in c1 loop
140 if (tlinfo.BASELANG = 'Y') then
141 if ( (tlinfo.GLOBAL_VS_COMBO_NAME = X_GLOBAL_VS_COMBO_NAME)
142 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
143 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
144 ) then
145 null;
146 else
147 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
148 app_exception.raise_exception;
149 end if;
150 end if;
151 end loop;
152 return;
153 end LOCK_ROW;
154
155 procedure UPDATE_ROW (
156 X_GLOBAL_VS_COMBO_ID in NUMBER,
157 X_GLOBAL_VS_COMBO_DISPLAY_CODE in VARCHAR2,
158 X_ENABLED_FLAG in VARCHAR2,
159 X_READ_ONLY_FLAG in VARCHAR2,
160 X_PERSONAL_FLAG in VARCHAR2,
161 X_OBJECT_VERSION_NUMBER in NUMBER,
162 X_GLOBAL_VS_COMBO_NAME in VARCHAR2,
163 X_DESCRIPTION in VARCHAR2,
164 X_LAST_UPDATE_DATE in DATE,
165 X_LAST_UPDATED_BY in NUMBER,
166 X_LAST_UPDATE_LOGIN in NUMBER
167 ) is
168 begin
169 update FEM_GLOBAL_VS_COMBOS_B set
170 GLOBAL_VS_COMBO_DISPLAY_CODE = X_GLOBAL_VS_COMBO_DISPLAY_CODE,
171 ENABLED_FLAG = X_ENABLED_FLAG,
172 READ_ONLY_FLAG = X_READ_ONLY_FLAG,
173 PERSONAL_FLAG = X_PERSONAL_FLAG,
174 OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
175 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
176 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
177 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
178 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID;
179
180 if (sql%notfound) then
181 raise no_data_found;
182 end if;
183
184 update FEM_GLOBAL_VS_COMBOS_TL set
185 GLOBAL_VS_COMBO_NAME = X_GLOBAL_VS_COMBO_NAME,
186 DESCRIPTION = X_DESCRIPTION,
187 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
188 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
189 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
190 SOURCE_LANG = userenv('LANG')
191 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID
192 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
193
194 if (sql%notfound) then
195 raise no_data_found;
196 end if;
197 end UPDATE_ROW;
198
199 procedure DELETE_ROW (
200 X_GLOBAL_VS_COMBO_ID in NUMBER
201 ) is
202 begin
203 delete from FEM_GLOBAL_VS_COMBOS_TL
204 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID;
205
206 if (sql%notfound) then
207 raise no_data_found;
208 end if;
209
210 delete from FEM_GLOBAL_VS_COMBOS_B
211 where GLOBAL_VS_COMBO_ID = X_GLOBAL_VS_COMBO_ID;
212
213 if (sql%notfound) then
214 raise no_data_found;
215 end if;
216 end DELETE_ROW;
217
218 procedure ADD_LANGUAGE
219 is
220 begin
221 delete from FEM_GLOBAL_VS_COMBOS_TL T
222 where not exists
223 (select NULL
224 from FEM_GLOBAL_VS_COMBOS_B B
225 where B.GLOBAL_VS_COMBO_ID = T.GLOBAL_VS_COMBO_ID
226 );
227
228 update FEM_GLOBAL_VS_COMBOS_TL T set (
229 GLOBAL_VS_COMBO_NAME,
230 DESCRIPTION
231 ) = (select
232 B.GLOBAL_VS_COMBO_NAME,
233 B.DESCRIPTION
234 from FEM_GLOBAL_VS_COMBOS_TL B
235 where B.GLOBAL_VS_COMBO_ID = T.GLOBAL_VS_COMBO_ID
236 and B.LANGUAGE = T.SOURCE_LANG)
237 where (
238 T.GLOBAL_VS_COMBO_ID,
239 T.LANGUAGE
240 ) in (select
241 SUBT.GLOBAL_VS_COMBO_ID,
242 SUBT.LANGUAGE
243 from FEM_GLOBAL_VS_COMBOS_TL SUBB, FEM_GLOBAL_VS_COMBOS_TL SUBT
244 where SUBB.GLOBAL_VS_COMBO_ID = SUBT.GLOBAL_VS_COMBO_ID
245 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
246 and (SUBB.GLOBAL_VS_COMBO_NAME <> SUBT.GLOBAL_VS_COMBO_NAME
247 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
248 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
249 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
250 ));
251
252 insert into FEM_GLOBAL_VS_COMBOS_TL (
253 LAST_UPDATE_DATE,
254 LAST_UPDATE_LOGIN,
255 GLOBAL_VS_COMBO_ID,
256 GLOBAL_VS_COMBO_NAME,
257 DESCRIPTION,
258 CREATION_DATE,
259 CREATED_BY,
260 LAST_UPDATED_BY,
261 LANGUAGE,
262 SOURCE_LANG
263 ) select /*+ ORDERED */
264 B.LAST_UPDATE_DATE,
265 B.LAST_UPDATE_LOGIN,
266 B.GLOBAL_VS_COMBO_ID,
267 B.GLOBAL_VS_COMBO_NAME,
268 B.DESCRIPTION,
269 B.CREATION_DATE,
270 B.CREATED_BY,
271 B.LAST_UPDATED_BY,
272 L.LANGUAGE_CODE,
273 B.SOURCE_LANG
274 from FEM_GLOBAL_VS_COMBOS_TL B, FND_LANGUAGES L
275 where L.INSTALLED_FLAG in ('I', 'B')
276 and B.LANGUAGE = userenv('LANG')
277 and not exists
278 (select NULL
279 from FEM_GLOBAL_VS_COMBOS_TL T
280 where T.GLOBAL_VS_COMBO_ID = B.GLOBAL_VS_COMBO_ID
281 and T.LANGUAGE = L.LANGUAGE_CODE);
282 end ADD_LANGUAGE;
283 PROCEDURE TRANSLATE_ROW(
284 x_GLOBAL_VS_COMBO_ID in number,
285 x_owner in varchar2,
286 x_last_update_date in varchar2,
287 x_GLOBAL_VS_COMBO_NAME in varchar2,
288 x_description in varchar2,
289 x_custom_mode in varchar2) is
290
291 owner_id number;
292 ludate date;
293 row_id varchar2(64);
294 f_luby number; -- entity owner in file
295 f_ludate date; -- entity update date in file
296 db_luby number; -- entity owner in db
297 db_ludate date; -- entity update date in db
298 begin
299
300
301 -- Translate owner to file_last_updated_by
302 f_luby := fnd_load_util.owner_id(x_owner);
303
304 -- Translate char last_update_date to date
305 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
306 begin
307 select LAST_UPDATED_BY, LAST_UPDATE_DATE
308 into db_luby, db_ludate
309 from FEM_GLOBAL_VS_COMBOS_TL
310 where GLOBAL_VS_COMBO_ID = x_GLOBAL_VS_COMBO_ID
311 and LANGUAGE = userenv('LANG');
312
313 -- Test for customization and version
314 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
315 db_ludate, x_custom_mode)) then
316 -- Update translations for this language
317 update FEM_GLOBAL_VS_COMBOS_TL set
318 GLOBAL_VS_COMBO_NAME = decode(x_GLOBAL_VS_COMBO_NAME,
319 fnd_load_util.null_value, null, -- Real null
320 null, x_GLOBAL_VS_COMBO_NAME, -- No change
321 x_GLOBAL_VS_COMBO_NAME),
322 DESCRIPTION = nvl(x_description, DESCRIPTION),
323 LAST_UPDATE_DATE = f_ludate,
324 LAST_UPDATED_BY = f_luby,
325 LAST_UPDATE_LOGIN = 0,
326 SOURCE_LANG = userenv('LANG')
327 where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
328 and GLOBAL_VS_COMBO_ID = x_GLOBAL_VS_COMBO_ID;
329 end if;
330 exception
331 when no_data_found then
332 -- Do not insert missing translations, skip this row
333 null;
334 end;
335 end TRANSLATE_ROW;
336
337
338 end FEM_GLOBAL_VS_COMBOS_PKG;