DBA Data[Home] [Help]

PACKAGE BODY: APPS.FEM_OBJECT_CATALOG_PKG

Source


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