DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_CUSTOM_SETUPS_PKG

Source


1 package body AMS_CUSTOM_SETUPS_PKG as
2 /* $Header: amslcusb.pls 120.1 2005/08/26 02:38:38 vmodur noship $ */
3 procedure INSERT_ROW (
4   X_ROWID in OUT NOCOPY VARCHAR2,
5   X_CUSTOM_SETUP_ID in NUMBER,
6   X_OBJECT_VERSION_NUMBER in NUMBER,
7   X_ACTIVITY_TYPE_CODE in VARCHAR2,
8   X_MEDIA_ID in NUMBER,
9   X_ENABLED_FLAG in VARCHAR2,
10   X_OBJECT_TYPE in VARCHAR2,
11   X_SOURCE_CODE_SUFFIX in VARCHAR2,
12   X_SETUP_NAME in VARCHAR2,
13   X_DESCRIPTION in VARCHAR2,
14   X_APPLICATION_ID in NUMBER,
15   X_CREATION_DATE in DATE,
16   X_CREATED_BY in NUMBER,
17   X_LAST_UPDATE_DATE in DATE,
18   X_LAST_UPDATED_BY in NUMBER,
19   X_LAST_UPDATE_LOGIN in NUMBER,
20   X_ALLOW_ESSENTIAL_GROUPING in VARCHAR2,
21   X_USAGE in VARCHAR2,
22   X_MIGRATED_CUSTOM_SETUP_ID in NUMBER
23 ) is
24   cursor C is select ROWID from AMS_CUSTOM_SETUPS_B
25     where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID
26     ;
27 begin
28   insert into AMS_CUSTOM_SETUPS_B (
29     CUSTOM_SETUP_ID,
30     OBJECT_VERSION_NUMBER,
31     ACTIVITY_TYPE_CODE,
32     MEDIA_ID,
33     ENABLED_FLAG,
34     OBJECT_TYPE,
35     SOURCE_CODE_SUFFIX,
36     APPLICATION_ID,
37     CREATION_DATE,
38     CREATED_BY,
39     LAST_UPDATE_DATE,
40     LAST_UPDATED_BY,
41     LAST_UPDATE_LOGIN,
42     ALLOW_ESSENTIAL_GROUPING,
43     USAGE,
44     MIGRATED_CUSTOM_SETUP_ID
45   ) values (
46     X_CUSTOM_SETUP_ID,
47     X_OBJECT_VERSION_NUMBER,
48     X_ACTIVITY_TYPE_CODE,
49     X_MEDIA_ID,
50     X_ENABLED_FLAG,
51     X_OBJECT_TYPE,
52     X_SOURCE_CODE_SUFFIX,
53     X_APPLICATION_ID,
54     X_CREATION_DATE,
55     X_CREATED_BY,
56     X_LAST_UPDATE_DATE,
57     X_LAST_UPDATED_BY,
58     X_LAST_UPDATE_LOGIN,
59     X_ALLOW_ESSENTIAL_GROUPING,
60     X_USAGE,
61     X_MIGRATED_CUSTOM_SETUP_ID
62   );
63 
64   insert into AMS_CUSTOM_SETUPS_TL (
65     LAST_UPDATE_DATE,
66     LAST_UPDATED_BY,
67     CREATION_DATE,
68     CREATED_BY,
69     LAST_UPDATE_LOGIN,
70     SETUP_NAME,
71     DESCRIPTION,
72     CUSTOM_SETUP_ID,
73     LANGUAGE,
74     SOURCE_LANG
75   ) select
76     X_LAST_UPDATE_DATE,
77     X_LAST_UPDATED_BY,
78     X_CREATION_DATE,
79     X_CREATED_BY,
80     X_LAST_UPDATE_LOGIN,
81     X_SETUP_NAME,
82     X_DESCRIPTION,
83     X_CUSTOM_SETUP_ID,
84     L.LANGUAGE_CODE,
85     userenv('LANG')
86   from FND_LANGUAGES L
87   where L.INSTALLED_FLAG in ('I', 'B')
88   and not exists
89     (select NULL
90     from AMS_CUSTOM_SETUPS_TL T
91     where T.CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID
92     and T.LANGUAGE = L.LANGUAGE_CODE);
93 
94   open c;
95   fetch c into X_ROWID;
96   if (c%notfound) then
97     close c;
98     raise no_data_found;
99   end if;
100   close c;
101 
102 end INSERT_ROW;
103 
104 procedure LOCK_ROW (
105   X_CUSTOM_SETUP_ID in NUMBER,
106   X_OBJECT_VERSION_NUMBER in NUMBER,
107   X_ACTIVITY_TYPE_CODE in VARCHAR2,
108   X_MEDIA_ID in NUMBER,
109   X_ENABLED_FLAG in VARCHAR2,
110   X_OBJECT_TYPE in VARCHAR2,
111   X_SETUP_NAME in VARCHAR2,
112   X_DESCRIPTION in VARCHAR2,
113   X_ALLOW_ESSENTIAL_GROUPING in VARCHAR2,
114   X_USAGE in VARCHAR2,
115   X_MIGRATED_CUSTOM_SETUP_ID IN NUMBER
116 ) is
117   cursor c is select
118       OBJECT_VERSION_NUMBER,
119       ACTIVITY_TYPE_CODE,
120       MEDIA_ID,
121       ENABLED_FLAG,
122       OBJECT_TYPE,
123       ALLOW_ESSENTIAL_GROUPING,
124       USAGE,
125       MIGRATED_CUSTOM_SETUP_ID
126     from AMS_CUSTOM_SETUPS_B
127     where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID
128     for update of CUSTOM_SETUP_ID nowait;
129   recinfo c%rowtype;
130 
131   cursor c1 is select
132       SETUP_NAME,
133       DESCRIPTION,
134       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
135     from AMS_CUSTOM_SETUPS_TL
136     where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID
137     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
138     for update of CUSTOM_SETUP_ID nowait;
139 begin
140   open c;
141   fetch c into recinfo;
142   if (c%notfound) then
143     close c;
144     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
145     app_exception.raise_exception;
146   end if;
147   close c;
148   if (    ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
149            OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
150       AND ((recinfo.ACTIVITY_TYPE_CODE = X_ACTIVITY_TYPE_CODE)
151            OR ((recinfo.ACTIVITY_TYPE_CODE is null) AND (X_ACTIVITY_TYPE_CODE is null)))
152       AND ((recinfo.MEDIA_ID = X_MEDIA_ID)
153            OR ((recinfo.MEDIA_ID is null) AND (X_MEDIA_ID is null)))
154       AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
155       AND (recinfo.ALLOW_ESSENTIAL_GROUPING = X_ALLOW_ESSENTIAL_GROUPING)
156       AND (recinfo.USAGE = X_USAGE)
157       AND (recinfo.MIGRATED_CUSTOM_SETUP_ID = X_MIGRATED_CUSTOM_SETUP_ID)
158       AND (recinfo.OBJECT_TYPE = X_OBJECT_TYPE)
159   ) then
160     null;
161   else
162     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
163     app_exception.raise_exception;
164   end if;
165 
166   for tlinfo in c1 loop
167     if (tlinfo.BASELANG = 'Y') then
168       if (    (tlinfo.SETUP_NAME = X_SETUP_NAME)
169           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
170                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
171       ) then
172         null;
173       else
174         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
175         app_exception.raise_exception;
176       end if;
177     end if;
178   end loop;
179   return;
180 end LOCK_ROW;
181 
182 procedure UPDATE_ROW (
183   X_CUSTOM_SETUP_ID in NUMBER,
184   X_OBJECT_VERSION_NUMBER in NUMBER,
185   X_ACTIVITY_TYPE_CODE in VARCHAR2,
186   X_MEDIA_ID in NUMBER,
187   X_ENABLED_FLAG in VARCHAR2,
188   X_OBJECT_TYPE in VARCHAR2,
189   X_SOURCE_CODE_SUFFIX in VARCHAR2,
190   X_SETUP_NAME in VARCHAR2,
191   X_DESCRIPTION in VARCHAR2,
192   X_APPLICATION_ID in NUMBER,
193   X_LAST_UPDATE_DATE in DATE,
194   X_LAST_UPDATED_BY in NUMBER,
195   X_LAST_UPDATE_LOGIN in NUMBER,
196   X_ALLOW_ESSENTIAL_GROUPING in VARCHAR2,
197   X_USAGE in VARCHAR2,
198   X_MIGRATED_CUSTOM_SETUP_ID in NUMBER
199 ) is
200 begin
201   update AMS_CUSTOM_SETUPS_B set
202     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
203     ACTIVITY_TYPE_CODE = X_ACTIVITY_TYPE_CODE,
204     MEDIA_ID = X_MEDIA_ID,
205     ENABLED_FLAG = X_ENABLED_FLAG,
206     OBJECT_TYPE = X_OBJECT_TYPE,
207     APPLICATION_ID =  X_APPLICATION_ID,
208     SOURCE_CODE_SUFFIX = X_SOURCE_CODE_SUFFIX,
209     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
210     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
211     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
212     ALLOW_ESSENTIAL_GROUPING = X_ALLOW_ESSENTIAL_GROUPING,
213     USAGE=X_USAGE,
214     MIGRATED_CUSTOM_SETUP_ID = X_MIGRATED_CUSTOM_SETUP_ID
215   where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID;
216 
217   if (sql%notfound) then
218     raise no_data_found;
219   end if;
220 
221   update AMS_CUSTOM_SETUPS_TL set
222     SETUP_NAME = X_SETUP_NAME,
223     DESCRIPTION = X_DESCRIPTION,
224     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
225     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
226     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
227     SOURCE_LANG = userenv('LANG')
228   where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID
229   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
230 
231   if (sql%notfound) then
232     raise no_data_found;
233   end if;
234 end UPDATE_ROW;
235 
236 procedure DELETE_ROW (
237   X_CUSTOM_SETUP_ID in NUMBER
238 ) is
239 begin
240   delete from AMS_CUSTOM_SETUPS_TL
241   where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID;
242 
243   if (sql%notfound) then
244     raise no_data_found;
245   end if;
246 
247   delete from AMS_CUSTOM_SETUPS_B
248   where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID;
249 
250   if (sql%notfound) then
251     raise no_data_found;
252   end if;
253 end DELETE_ROW;
254 
255 procedure ADD_LANGUAGE
256 is
257 begin
258   delete from AMS_CUSTOM_SETUPS_TL T
259   where not exists
260     (select NULL
261     from AMS_CUSTOM_SETUPS_B B
262     where B.CUSTOM_SETUP_ID = T.CUSTOM_SETUP_ID
263     );
264 
265   update AMS_CUSTOM_SETUPS_TL T set (
266       SETUP_NAME,
267       DESCRIPTION
268     ) = (select
269       B.SETUP_NAME,
270       B.DESCRIPTION
271     from AMS_CUSTOM_SETUPS_TL B
272     where B.CUSTOM_SETUP_ID = T.CUSTOM_SETUP_ID
273     and B.LANGUAGE = T.SOURCE_LANG)
274   where (
275       T.CUSTOM_SETUP_ID,
276       T.LANGUAGE
277   ) in (select
278       SUBT.CUSTOM_SETUP_ID,
279       SUBT.LANGUAGE
280     from AMS_CUSTOM_SETUPS_TL SUBB, AMS_CUSTOM_SETUPS_TL SUBT
281     where SUBB.CUSTOM_SETUP_ID = SUBT.CUSTOM_SETUP_ID
282     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
283     and (SUBB.SETUP_NAME <> SUBT.SETUP_NAME
284       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
285       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
286       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
287   ));
288 
289   insert into AMS_CUSTOM_SETUPS_TL (
290     LAST_UPDATE_DATE,
291     LAST_UPDATED_BY,
292     CREATION_DATE,
293     CREATED_BY,
294     LAST_UPDATE_LOGIN,
295     SETUP_NAME,
296     DESCRIPTION,
297     CUSTOM_SETUP_ID,
298     LANGUAGE,
299     SOURCE_LANG
300   ) select
301     B.LAST_UPDATE_DATE,
302     B.LAST_UPDATED_BY,
303     B.CREATION_DATE,
304     B.CREATED_BY,
305     B.LAST_UPDATE_LOGIN,
306     B.SETUP_NAME,
307     B.DESCRIPTION,
308     B.CUSTOM_SETUP_ID,
309     L.LANGUAGE_CODE,
310     B.SOURCE_LANG
311   from AMS_CUSTOM_SETUPS_TL B, FND_LANGUAGES L
312   where L.INSTALLED_FLAG in ('I', 'B')
313   and B.LANGUAGE = userenv('LANG')
314   and not exists
315     (select NULL
316     from AMS_CUSTOM_SETUPS_TL T
317     where T.CUSTOM_SETUP_ID = B.CUSTOM_SETUP_ID
318     and T.LANGUAGE = L.LANGUAGE_CODE);
319 end ADD_LANGUAGE;
320 
321 
322 procedure TRANSLATE_ROW(
323        X_CUSTOM_SETUP_ID    in NUMBER
324      , X_SETUP_NAME  in VARCHAR2
325      , X_DESCRIPTION    in VARCHAR2
326      , x_owner   in VARCHAR2
327  ) is
328  begin
329   update ams_custom_setups_tl set
330     setup_name = nvl(x_SETUP_NAME,   setup_name),
331     description = nvl(x_description, description),
332     source_lang = userenv('LANG'),
333     last_update_date = sysdate,
334     last_updated_by = decode(x_owner, 'SEED', 1, 0),
335     last_update_login = 0
336  where  custom_setup_id = x_custom_setup_id
337  and      userenv('LANG') in (language, source_lang);
338 end TRANSLATE_ROW;
339 
340 
341 /* This procedure is used to load the data from flat file to customer's database.
342   If there is no row existing for the data from flat file then create the data.
343   else
344     1) modify the whole data when data in db is not modified by customer which can be found
345       by comparing last updated by value to be
346           SEED/DATAMERGE(1), or
347           INITIAL SETUP/ORACLE (2), or
348           SYSTEM ADMINISTRATOR (0).or
349     2) modify the whole data when custom_mode is 'FORCE'
350     3) if the data in db is modified by customer, which can be found by
351       by comparing last updated by value to be not of 0,1,2, then
352         in that case modify only the user unexposed data with last updated by as 3 to
353         distinguish that data is updated by patch.
354 */
355 procedure  LOAD_ROW(
356   X_CUSTOM_SETUP_ID    in  NUMBER,
357   X_ACTIVITY_TYPE_CODE in  VARCHAR2,
358   X_MEDIA_ID     in       NUMBER,
359   X_ENABLED_FLAG in    VARCHAR2,
360   X_OBJECT_TYPE  in    VARCHAR2,
361   X_SOURCE_CODE_SUFFIX in VARCHAR2,
362   X_SETUP_NAME   in     VARCHAR2,
363   X_DESCRIPTION  in   VARCHAR2,
364   X_ALLOW_ESSENTIAL_GROUPING in VARCHAR2,
365   X_USAGE in VARCHAR2 := NULL,
366   X_MIGRATED_CUSTOM_SETUP_ID in NUMBER,
367   X_APPLICATION_ID in NUMBER,
368   X_Owner        in     VARCHAR2,
369   x_custom_mode  IN VARCHAR2,
370   X_LAST_UPDATE_DATE in DATE
371 ) is
372 
373 l_user_id   number := 1;
374 -- user id to be used in case of exceptions to update the customer modified unexposed data.
375 l_excp_user_id number := 3 ;
376 
377 l_obj_verno  number;
378 l_dummy_number  number;
379 l_row_id    varchar2(100);
380 l_CUSTOM_SETUP_ID   number;
381 l_db_luby_id NUMBER;
382 
383 cursor  c_db_data_details is
384   select last_updated_by, nvl(object_version_number,1)
385   from    ams_custom_setups_b
386   where  CUSTOM_SETUP_ID =  X_CUSTOM_SETUP_ID;
387 
388 cursor c_chk_cus_exists is
389   select 1
390   from   ams_custom_setups_b
391    where  CUSTOM_SETUP_ID =  X_CUSTOM_SETUP_ID;
392 
393 cursor c_get_cusid is
394    select ams_custom_setups_b_S.nextval
395    from dual;
396 
397 BEGIN
398 
399   -- set the last_updated_by to be used while updating the data in customer data.
400   if X_OWNER = 'SEED' then
401     l_user_id := 1;
402   elsif X_OWNER = 'ORACLE' THEN
403     l_user_id := 2;
404   elsif X_OWNER = 'SYSADMIN' THEN
405     l_user_id := 0;
406   end if ;
407 
408 
409   open c_chk_cus_exists;
410   fetch c_chk_cus_exists into l_dummy_number;
411   if c_chk_cus_exists%notfound
412   then
413     -- data does not exist in customer, and hence create the data.
414     close c_chk_cus_exists;
415     if x_custom_setup_id is null
416     then
417       open c_get_cusid;
418       fetch c_get_cusid into l_CUSTOM_SETUP_ID;
419       close c_get_cusid;
420     else
421       l_CUSTOM_SETUP_ID := x_custom_setup_id;
422     end if;
423 
424     l_obj_verno := 1;
425 
426     AMS_CUSTOM_SETUPS_PKG.INSERT_ROW(
427       X_ROWID  => l_row_id,
428       X_CUSTOM_SETUP_ID  => l_CUSTOM_SETUP_ID ,
429       X_OBJECT_VERSION_NUMBER => l_obj_verno  ,
430       X_ACTIVITY_TYPE_CODE  => X_ACTIVITY_TYPE_CODE,
431       X_MEDIA_ID  => X_MEDIA_ID,
432       X_ENABLED_FLAG  => X_ENABLED_FLAG,
433       X_OBJECT_TYPE  => X_OBJECT_TYPE,
434       X_SOURCE_CODE_SUFFIX => X_SOURCE_CODE_SUFFIX,
435       X_SETUP_NAME  => X_SETUP_NAME,
436       X_DESCRIPTION  => X_DESCRIPTION,
437       X_APPLICATION_ID => X_APPLICATION_ID,
438       X_CREATION_DATE  => X_LAST_UPDATE_DATE,
439       X_CREATED_BY  => l_user_id,
440       X_LAST_UPDATE_DATE  => X_LAST_UPDATE_DATE,
441       X_LAST_UPDATED_BY  => l_user_id,
442       X_LAST_UPDATE_LOGIN  => 0,
443       X_ALLOW_ESSENTIAL_GROUPING => X_ALLOW_ESSENTIAL_GROUPING,
444       X_USAGE => X_USAGE,
445       X_MIGRATED_CUSTOM_SETUP_ID => X_MIGRATED_CUSTOM_SETUP_ID
446       );
447   else
448     -- Update the data as per above rules.
449     close c_chk_cus_exists;
450     open c_db_data_details;
451     fetch c_db_data_details into l_db_luby_id, l_obj_verno;
452     close c_db_data_details;
453     if ( l_db_luby_id IN (1, 2, 0)
454       OR NVL(x_custom_mode,'PRESERVE') = 'FORCE') THEN
455       AMS_CUSTOM_SETUPS_PKG.UPDATE_ROW(
456         X_CUSTOM_SETUP_ID  => X_CUSTOM_SETUP_ID,
457         X_OBJECT_VERSION_NUMBER => l_obj_verno + 1  ,
458         X_ACTIVITY_TYPE_CODE  => X_ACTIVITY_TYPE_CODE,
459         X_MEDIA_ID  => X_MEDIA_ID ,
460         X_ENABLED_FLAG  => X_ENABLED_FLAG,
461         X_OBJECT_TYPE  => X_OBJECT_TYPE,
462         X_SOURCE_CODE_SUFFIX => X_SOURCE_CODE_SUFFIX,
463         X_SETUP_NAME  => X_SETUP_NAME,
464         X_DESCRIPTION  => X_DESCRIPTION,
465         X_APPLICATION_ID => X_APPLICATION_ID,
466         X_LAST_UPDATE_DATE  => X_LAST_UPDATE_DATE,
467         X_LAST_UPDATED_BY  => l_user_id,
468         X_LAST_UPDATE_LOGIN  => 0,
469 	X_ALLOW_ESSENTIAL_GROUPING => X_ALLOW_ESSENTIAL_GROUPING,
470 	X_USAGE => X_USAGE,
471         X_MIGRATED_CUSTOM_SETUP_ID => X_MIGRATED_CUSTOM_SETUP_ID
472       );
473 --Commented OUT NOCOPY as this will not be ever needed as per nrengasw, and bgeorge.
474 /*
475     else
476       update AMS_CUSTOM_SETUPS_B set
477         OBJECT_VERSION_NUMBER = l_obj_verno + 1,
478         OBJECT_TYPE  = X_OBJECT_TYPE,
479         ACTIVITY_TYPE_CODE  = X_ACTIVITY_TYPE_CODE,
480         SOURCE_CODE_SUFFIX = X_SOURCE_CODE_SUFFIX,
481         MEDIA_ID  = X_MEDIA_ID , --???
482         LAST_UPDATE_DATE = sysdate,
483         LAST_UPDATED_BY = l_excp_user_id,
484         LAST_UPDATE_LOGIN = 0
485       where CUSTOM_SETUP_ID = X_CUSTOM_SETUP_ID;
486       if (sql%notfound) then
487         raise no_data_found;
488       end if;
489 */
490     end if;
491   end if;
492 END LOAD_ROW;
493 
494 end AMS_CUSTOM_SETUPS_PKG;