[Home] [Help]
PACKAGE BODY: APPS.FEM_OBJECT_TYPES_PKG
Source
1 package body FEM_OBJECT_TYPES_PKG as
2 /* $Header: fem_objtyp_pkb.plb 120.1 2005/06/22 13:20:43 appldev ship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out nocopy VARCHAR2,
5 X_OBJECT_TYPE_CODE in VARCHAR2,
6 X_OBJECT_PLSQL_PKG_NAME in VARCHAR2,
7 X_VIEW_ONLY_OA_FUNCTION_NAME in VARCHAR2,
8 X_ALWAYS_RERUNNABLE_FLAG in VARCHAR2,
9 X_CONCURRENT_PROGRAM_NAME in VARCHAR2,
10 X_CONCURRENT_PROGRAM_APP_ID in NUMBER,
11 X_AVAILABLE_IN_RULESETS_FLAG in VARCHAR2,
12 X_PROCESS_ENGINE_CD in NUMBER,
13 X_USAGE_CODE in NUMBER,
14 X_CONCURRENT_MGR_ENABLED_FLAG in VARCHAR2,
15 X_MULTIPLE_DEFINITIONS_FLAG in VARCHAR2,
16 X_WORKFLOW_ENABLED_FLAG in VARCHAR2,
17 X_DATA_EDIT_LOCK_FLAG in VARCHAR2,
18 X_VISUAL_TRACE_FLAG in VARCHAR2,
19 X_UNDO_FLAG in VARCHAR2,
20 X_EXECUTABLE_FLAG in VARCHAR2,
21 X_EXECUTABLE_LOCK_FLAG in VARCHAR2,
22 X_ISETUP_IMPORT_EXPORT_FLAG in VARCHAR2,
23 X_CUSTOM_IMPORT_EXPORT_FLAG in VARCHAR2,
24 X_OBJECT_TYPE_NAME in VARCHAR2,
25 X_DESCRIPTION in VARCHAR2,
26 X_CREATION_DATE in DATE,
27 X_CREATED_BY in NUMBER,
28 X_LAST_UPDATE_DATE in DATE,
29 X_LAST_UPDATED_BY in NUMBER,
30 X_LAST_UPDATE_LOGIN in NUMBER
31 ) is
32 cursor C is select ROWID from FEM_OBJECT_TYPES_B
33 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE
34 ;
35 begin
36 insert into FEM_OBJECT_TYPES_B (
37 OBJECT_PLSQL_PKG_NAME,
38 VIEW_ONLY_OA_FUNCTION_NAME,
39 ALWAYS_RERUNNABLE_FLAG,
40 CONCURRENT_PROGRAM_NAME,
41 CONCURRENT_PROGRAM_APP_ID,
42 AVAILABLE_IN_RULESETS_FLAG,
43 PROCESS_ENGINE_CD,
44 USAGE_CODE,
45 CONCURRENT_MGR_ENABLED_FLAG,
46 MULTIPLE_DEFINITIONS_FLAG,
47 WORKFLOW_ENABLED_FLAG,
48 DATA_EDIT_LOCK_FLAG,
49 VISUAL_TRACE_FLAG,
50 UNDO_FLAG,
51 EXECUTABLE_FLAG,
52 EXECUTABLE_LOCK_FLAG,
53 OBJECT_TYPE_CODE,
54 ISETUP_IMPORT_EXPORT_FLAG,
55 CUSTOM_IMPORT_EXPORT_FLAG,
56 CREATION_DATE,
57 CREATED_BY,
58 LAST_UPDATE_DATE,
59 LAST_UPDATED_BY,
60 LAST_UPDATE_LOGIN
61 ) values (
62 X_OBJECT_PLSQL_PKG_NAME,
63 X_VIEW_ONLY_OA_FUNCTION_NAME,
64 X_ALWAYS_RERUNNABLE_FLAG,
65 X_CONCURRENT_PROGRAM_NAME,
66 X_CONCURRENT_PROGRAM_APP_ID,
67 X_AVAILABLE_IN_RULESETS_FLAG,
68 X_PROCESS_ENGINE_CD,
69 X_USAGE_CODE,
70 X_CONCURRENT_MGR_ENABLED_FLAG,
71 X_MULTIPLE_DEFINITIONS_FLAG,
72 X_WORKFLOW_ENABLED_FLAG,
73 X_DATA_EDIT_LOCK_FLAG,
74 X_VISUAL_TRACE_FLAG,
75 X_UNDO_FLAG,
76 X_EXECUTABLE_FLAG,
77 X_EXECUTABLE_LOCK_FLAG,
78 X_OBJECT_TYPE_CODE,
79 X_ISETUP_IMPORT_EXPORT_FLAG,
80 X_CUSTOM_IMPORT_EXPORT_FLAG,
81 X_CREATION_DATE,
82 X_CREATED_BY,
83 X_LAST_UPDATE_DATE,
84 X_LAST_UPDATED_BY,
85 X_LAST_UPDATE_LOGIN
86 );
87
88 insert into FEM_OBJECT_TYPES_TL (
89 OBJECT_TYPE_CODE,
90 OBJECT_TYPE_NAME,
91 DESCRIPTION,
92 CREATION_DATE,
93 CREATED_BY,
94 LAST_UPDATED_BY,
95 LAST_UPDATE_DATE,
96 LAST_UPDATE_LOGIN,
97 LANGUAGE,
98 SOURCE_LANG
99 ) select
100 X_OBJECT_TYPE_CODE,
101 X_OBJECT_TYPE_NAME,
102 X_DESCRIPTION,
103 X_CREATION_DATE,
104 X_CREATED_BY,
105 X_LAST_UPDATED_BY,
106 X_LAST_UPDATE_DATE,
107 X_LAST_UPDATE_LOGIN,
108 L.LANGUAGE_CODE,
109 userenv('LANG')
110 from FND_LANGUAGES L
111 where L.INSTALLED_FLAG in ('I', 'B')
112 and not exists
113 (select NULL
114 from FEM_OBJECT_TYPES_TL T
115 where T.OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE
116 and T.LANGUAGE = L.LANGUAGE_CODE);
117
118 open c;
119 fetch c into X_ROWID;
120 if (c%notfound) then
121 close c;
122 raise no_data_found;
123 end if;
124 close c;
125
126 end INSERT_ROW;
127
128 procedure LOCK_ROW (
129 X_OBJECT_TYPE_CODE in VARCHAR2,
130 X_OBJECT_PLSQL_PKG_NAME in VARCHAR2,
131 X_VIEW_ONLY_OA_FUNCTION_NAME in VARCHAR2,
132 X_ALWAYS_RERUNNABLE_FLAG in VARCHAR2,
133 X_CONCURRENT_PROGRAM_NAME in VARCHAR2,
134 X_CONCURRENT_PROGRAM_APP_ID in NUMBER,
135 X_AVAILABLE_IN_RULESETS_FLAG in VARCHAR2,
136 X_PROCESS_ENGINE_CD in NUMBER,
137 X_USAGE_CODE in NUMBER,
138 X_CONCURRENT_MGR_ENABLED_FLAG in VARCHAR2,
139 X_MULTIPLE_DEFINITIONS_FLAG in VARCHAR2,
140 X_WORKFLOW_ENABLED_FLAG in VARCHAR2,
141 X_DATA_EDIT_LOCK_FLAG in VARCHAR2,
142 X_VISUAL_TRACE_FLAG in VARCHAR2,
143 X_UNDO_FLAG in VARCHAR2,
144 X_EXECUTABLE_FLAG in VARCHAR2,
145 X_EXECUTABLE_LOCK_FLAG in VARCHAR2,
146 X_ISETUP_IMPORT_EXPORT_FLAG in VARCHAR2,
147 X_CUSTOM_IMPORT_EXPORT_FLAG in VARCHAR2,
148 X_OBJECT_TYPE_NAME in VARCHAR2,
149 X_DESCRIPTION in VARCHAR2
150 ) is
151 cursor c is select
152 OBJECT_PLSQL_PKG_NAME,
153 VIEW_ONLY_OA_FUNCTION_NAME,
154 ALWAYS_RERUNNABLE_FLAG,
155 CONCURRENT_PROGRAM_NAME,
156 CONCURRENT_PROGRAM_APP_ID,
157 AVAILABLE_IN_RULESETS_FLAG,
158 PROCESS_ENGINE_CD,
159 USAGE_CODE,
160 CONCURRENT_MGR_ENABLED_FLAG,
161 MULTIPLE_DEFINITIONS_FLAG,
162 WORKFLOW_ENABLED_FLAG,
163 DATA_EDIT_LOCK_FLAG,
164 VISUAL_TRACE_FLAG,
165 UNDO_FLAG,
166 EXECUTABLE_FLAG,
167 EXECUTABLE_LOCK_FLAG,
168 ISETUP_IMPORT_EXPORT_FLAG,
169 CUSTOM_IMPORT_EXPORT_FLAG
170 from FEM_OBJECT_TYPES_B
171 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE
172 for update of OBJECT_TYPE_CODE nowait;
173 recinfo c%rowtype;
174
175 cursor c1 is select
176 OBJECT_TYPE_NAME,
177 DESCRIPTION,
178 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
179 from FEM_OBJECT_TYPES_TL
180 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE
181 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
182 for update of OBJECT_TYPE_CODE nowait;
183 begin
184 open c;
185 fetch c into recinfo;
186 if (c%notfound) then
187 close c;
188 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
189 app_exception.raise_exception;
190 end if;
191 close c;
192 if ( ((recinfo.OBJECT_PLSQL_PKG_NAME = X_OBJECT_PLSQL_PKG_NAME)
193 OR ((recinfo.OBJECT_PLSQL_PKG_NAME is null) AND (X_OBJECT_PLSQL_PKG_NAME is null)))
194 AND ((recinfo.VIEW_ONLY_OA_FUNCTION_NAME = X_VIEW_ONLY_OA_FUNCTION_NAME)
195 OR ((recinfo.VIEW_ONLY_OA_FUNCTION_NAME is null) AND (X_VIEW_ONLY_OA_FUNCTION_NAME is null)))
196 AND (recinfo.ALWAYS_RERUNNABLE_FLAG = X_ALWAYS_RERUNNABLE_FLAG)
197 AND ((recinfo.CONCURRENT_PROGRAM_NAME = X_CONCURRENT_PROGRAM_NAME)
198 OR ((recinfo.CONCURRENT_PROGRAM_NAME is null) AND (X_CONCURRENT_PROGRAM_NAME is null)))
199 AND ((recinfo.CONCURRENT_PROGRAM_APP_ID = X_CONCURRENT_PROGRAM_APP_ID)
200 OR ((recinfo.CONCURRENT_PROGRAM_APP_ID is null) AND (X_CONCURRENT_PROGRAM_APP_ID is null)))
201 AND (recinfo.AVAILABLE_IN_RULESETS_FLAG = X_AVAILABLE_IN_RULESETS_FLAG)
202 AND ((recinfo.PROCESS_ENGINE_CD = X_PROCESS_ENGINE_CD)
203 OR ((recinfo.PROCESS_ENGINE_CD is null) AND (X_PROCESS_ENGINE_CD is null)))
204 AND ((recinfo.USAGE_CODE = X_USAGE_CODE)
205 OR ((recinfo.USAGE_CODE is null) AND (X_USAGE_CODE is null)))
206 AND (recinfo.CONCURRENT_MGR_ENABLED_FLAG = X_CONCURRENT_MGR_ENABLED_FLAG)
207 AND (recinfo.MULTIPLE_DEFINITIONS_FLAG = X_MULTIPLE_DEFINITIONS_FLAG)
208 AND (recinfo.WORKFLOW_ENABLED_FLAG = X_WORKFLOW_ENABLED_FLAG)
209 AND (recinfo.DATA_EDIT_LOCK_FLAG = X_DATA_EDIT_LOCK_FLAG)
210 AND (recinfo.VISUAL_TRACE_FLAG = X_VISUAL_TRACE_FLAG)
211 AND (recinfo.UNDO_FLAG = X_UNDO_FLAG)
212 AND (recinfo.EXECUTABLE_FLAG = X_EXECUTABLE_FLAG)
213 AND (recinfo.EXECUTABLE_LOCK_FLAG = X_EXECUTABLE_LOCK_FLAG)
214 AND (recinfo.ISETUP_IMPORT_EXPORT_FLAG = X_ISETUP_IMPORT_EXPORT_FLAG)
215 AND (recinfo.CUSTOM_IMPORT_EXPORT_FLAG = X_CUSTOM_IMPORT_EXPORT_FLAG)
216 ) then
217 null;
218 else
219 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
220 app_exception.raise_exception;
221 end if;
222
223 for tlinfo in c1 loop
224 if (tlinfo.BASELANG = 'Y') then
225 if ( (tlinfo.OBJECT_TYPE_NAME = X_OBJECT_TYPE_NAME)
226 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
227 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
228 ) then
229 null;
230 else
231 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
232 app_exception.raise_exception;
233 end if;
234 end if;
235 end loop;
236 return;
237 end LOCK_ROW;
238
239 procedure UPDATE_ROW (
240 X_OBJECT_TYPE_CODE in VARCHAR2,
241 X_OBJECT_PLSQL_PKG_NAME in VARCHAR2,
242 X_VIEW_ONLY_OA_FUNCTION_NAME in VARCHAR2,
243 X_ALWAYS_RERUNNABLE_FLAG in VARCHAR2,
244 X_CONCURRENT_PROGRAM_NAME in VARCHAR2,
245 X_CONCURRENT_PROGRAM_APP_ID in NUMBER,
246 X_AVAILABLE_IN_RULESETS_FLAG in VARCHAR2,
247 X_PROCESS_ENGINE_CD in NUMBER,
248 X_USAGE_CODE in NUMBER,
249 X_CONCURRENT_MGR_ENABLED_FLAG in VARCHAR2,
250 X_MULTIPLE_DEFINITIONS_FLAG in VARCHAR2,
251 X_WORKFLOW_ENABLED_FLAG in VARCHAR2,
252 X_DATA_EDIT_LOCK_FLAG in VARCHAR2,
253 X_VISUAL_TRACE_FLAG in VARCHAR2,
254 X_UNDO_FLAG in VARCHAR2,
255 X_EXECUTABLE_FLAG in VARCHAR2,
256 X_EXECUTABLE_LOCK_FLAG in VARCHAR2,
257 X_ISETUP_IMPORT_EXPORT_FLAG in VARCHAR2,
258 X_CUSTOM_IMPORT_EXPORT_FLAG in VARCHAR2,
259 X_OBJECT_TYPE_NAME in VARCHAR2,
260 X_DESCRIPTION in VARCHAR2,
261 X_LAST_UPDATE_DATE in DATE,
262 X_LAST_UPDATED_BY in NUMBER,
263 X_LAST_UPDATE_LOGIN in NUMBER
264 ) is
265 begin
266 update FEM_OBJECT_TYPES_B set
267 OBJECT_PLSQL_PKG_NAME = X_OBJECT_PLSQL_PKG_NAME,
268 VIEW_ONLY_OA_FUNCTION_NAME = X_VIEW_ONLY_OA_FUNCTION_NAME,
269 ALWAYS_RERUNNABLE_FLAG = X_ALWAYS_RERUNNABLE_FLAG,
270 CONCURRENT_PROGRAM_NAME = X_CONCURRENT_PROGRAM_NAME,
271 CONCURRENT_PROGRAM_APP_ID = X_CONCURRENT_PROGRAM_APP_ID,
272 AVAILABLE_IN_RULESETS_FLAG = X_AVAILABLE_IN_RULESETS_FLAG,
273 PROCESS_ENGINE_CD = X_PROCESS_ENGINE_CD,
274 USAGE_CODE = X_USAGE_CODE,
275 CONCURRENT_MGR_ENABLED_FLAG = X_CONCURRENT_MGR_ENABLED_FLAG,
276 MULTIPLE_DEFINITIONS_FLAG = X_MULTIPLE_DEFINITIONS_FLAG,
277 WORKFLOW_ENABLED_FLAG = X_WORKFLOW_ENABLED_FLAG,
278 DATA_EDIT_LOCK_FLAG = X_DATA_EDIT_LOCK_FLAG,
279 VISUAL_TRACE_FLAG = X_VISUAL_TRACE_FLAG,
280 UNDO_FLAG = X_UNDO_FLAG,
281 EXECUTABLE_FLAG = X_EXECUTABLE_FLAG,
282 EXECUTABLE_LOCK_FLAG = X_EXECUTABLE_LOCK_FLAG,
283 ISETUP_IMPORT_EXPORT_FLAG = X_ISETUP_IMPORT_EXPORT_FLAG,
284 CUSTOM_IMPORT_EXPORT_FLAG = X_CUSTOM_IMPORT_EXPORT_FLAG,
285 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
286 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
287 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
288 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE;
289
290 if (sql%notfound) then
291 raise no_data_found;
292 end if;
293
294 update FEM_OBJECT_TYPES_TL set
295 OBJECT_TYPE_NAME = X_OBJECT_TYPE_NAME,
296 DESCRIPTION = X_DESCRIPTION,
297 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
298 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
299 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
300 SOURCE_LANG = userenv('LANG')
301 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE
302 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
303
304 if (sql%notfound) then
305 raise no_data_found;
306 end if;
307 end UPDATE_ROW;
308
309 procedure DELETE_ROW (
310 X_OBJECT_TYPE_CODE in VARCHAR2
311 ) is
312 begin
313 delete from FEM_OBJECT_TYPES_TL
314 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE;
315
316 if (sql%notfound) then
317 raise no_data_found;
318 end if;
319
320 delete from FEM_OBJECT_TYPES_B
321 where OBJECT_TYPE_CODE = X_OBJECT_TYPE_CODE;
322
323 if (sql%notfound) then
324 raise no_data_found;
325 end if;
326 end DELETE_ROW;
327
328 procedure ADD_LANGUAGE
329 is
330 begin
331 delete from FEM_OBJECT_TYPES_TL T
332 where not exists
333 (select NULL
334 from FEM_OBJECT_TYPES_B B
335 where B.OBJECT_TYPE_CODE = T.OBJECT_TYPE_CODE
336 );
337
338 update FEM_OBJECT_TYPES_TL T set (
339 OBJECT_TYPE_NAME,
340 DESCRIPTION
341 ) = (select
342 B.OBJECT_TYPE_NAME,
343 B.DESCRIPTION
344 from FEM_OBJECT_TYPES_TL B
345 where B.OBJECT_TYPE_CODE = T.OBJECT_TYPE_CODE
346 and B.LANGUAGE = T.SOURCE_LANG)
347 where (
348 T.OBJECT_TYPE_CODE,
349 T.LANGUAGE
350 ) in (select
351 SUBT.OBJECT_TYPE_CODE,
352 SUBT.LANGUAGE
353 from FEM_OBJECT_TYPES_TL SUBB, FEM_OBJECT_TYPES_TL SUBT
354 where SUBB.OBJECT_TYPE_CODE = SUBT.OBJECT_TYPE_CODE
355 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
356 and (SUBB.OBJECT_TYPE_NAME <> SUBT.OBJECT_TYPE_NAME
357 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
358 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
359 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
360 ));
361
362 insert into FEM_OBJECT_TYPES_TL (
363 OBJECT_TYPE_CODE,
364 OBJECT_TYPE_NAME,
365 DESCRIPTION,
366 CREATION_DATE,
367 CREATED_BY,
368 LAST_UPDATED_BY,
369 LAST_UPDATE_DATE,
370 LAST_UPDATE_LOGIN,
371 LANGUAGE,
372 SOURCE_LANG
373 ) select /*+ ORDERED */
374 B.OBJECT_TYPE_CODE,
375 B.OBJECT_TYPE_NAME,
376 B.DESCRIPTION,
377 B.CREATION_DATE,
378 B.CREATED_BY,
379 B.LAST_UPDATED_BY,
380 B.LAST_UPDATE_DATE,
381 B.LAST_UPDATE_LOGIN,
382 L.LANGUAGE_CODE,
383 B.SOURCE_LANG
384 from FEM_OBJECT_TYPES_TL B, FND_LANGUAGES L
385 where L.INSTALLED_FLAG in ('I', 'B')
386 and B.LANGUAGE = userenv('LANG')
387 and not exists
388 (select NULL
389 from FEM_OBJECT_TYPES_TL T
390 where T.OBJECT_TYPE_CODE = B.OBJECT_TYPE_CODE
391 and T.LANGUAGE = L.LANGUAGE_CODE);
392 end ADD_LANGUAGE;
393 PROCEDURE TRANSLATE_ROW(
394 x_OBJECT_TYPE_CODE in varchar2,
395 x_owner in varchar2,
396 x_last_update_date in varchar2,
397 x_OBJECT_TYPE_NAME in varchar2,
398 x_description in varchar2,
399 x_custom_mode in varchar2) is
400
401 owner_id number;
402 ludate date;
403 row_id varchar2(64);
404 f_luby number; -- entity owner in file
405 f_ludate date; -- entity update date in file
406 db_luby number; -- entity owner in db
407 db_ludate date; -- entity update date in db
408 begin
409
410
411 -- Translate owner to file_last_updated_by
412 f_luby := fnd_load_util.owner_id(x_owner);
413
414 -- Translate char last_update_date to date
415 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
416 begin
417 select LAST_UPDATED_BY, LAST_UPDATE_DATE
418 into db_luby, db_ludate
419 from FEM_OBJECT_TYPES_TL
420 where OBJECT_TYPE_CODE = x_OBJECT_TYPE_CODE
421 and LANGUAGE = userenv('LANG');
422
423 -- Test for customization and version
424 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
425 db_ludate, x_custom_mode)) then
426 -- Update translations for this language
427 update FEM_OBJECT_TYPES_TL set
428 OBJECT_TYPE_NAME = decode(x_OBJECT_TYPE_NAME,
429 fnd_load_util.null_value, null, -- Real null
430 null, x_OBJECT_TYPE_NAME, -- No change
431 x_OBJECT_TYPE_NAME),
432 DESCRIPTION = nvl(x_description, DESCRIPTION),
433 LAST_UPDATE_DATE = f_ludate,
434 LAST_UPDATED_BY = f_luby,
435 LAST_UPDATE_LOGIN = 0,
436 SOURCE_LANG = userenv('LANG')
437 where userenv('LANG') in (LANGUAGE, SOURCE_LANG)
438 and OBJECT_TYPE_CODE = x_OBJECT_TYPE_CODE;
439 end if;
440 exception
441 when no_data_found then
442 -- Do not insert missing translations, skip this row
443 null;
444 end;
445 end TRANSLATE_ROW;
446
447
448 end FEM_OBJECT_TYPES_PKG;