DBA Data[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;