DBA Data[Home] [Help]

PACKAGE BODY: APPS.AMS_MESSAGES_PKG

Source


1 package body AMS_MESSAGES_PKG as
2 /* $Header: amslmsgb.pls 115.4 2002/11/15 21:01:00 abhola ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in OUT NOCOPY VARCHAR2,
5   X_MESSAGE_ID in NUMBER,
6   X_MESSAGE_TYPE_CODE in VARCHAR2,
7   X_OWNER_USER_ID in NUMBER,
8   X_OBJECT_VERSION_NUMBER in NUMBER,
9   X_DATE_EFFECTIVE_FROM in DATE,
10   X_DATE_EFFECTIVE_TO in DATE,
11   X_ACTIVE_FLAG in VARCHAR2,
12   X_MESSAGE_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 AMS_MESSAGES_B
21     where MESSAGE_ID = X_MESSAGE_ID
22     ;
23 begin
24   insert into AMS_MESSAGES_B (
25     MESSAGE_TYPE_CODE,
26     OWNER_USER_ID,
27     MESSAGE_ID,
28     OBJECT_VERSION_NUMBER,
29     DATE_EFFECTIVE_FROM,
30     DATE_EFFECTIVE_TO,
31     ACTIVE_FLAG,
32     CREATION_DATE,
33     CREATED_BY,
34     LAST_UPDATE_DATE,
35     LAST_UPDATED_BY,
36     LAST_UPDATE_LOGIN
37   ) values (
38     X_MESSAGE_TYPE_CODE,
39     X_OWNER_USER_ID,
40     X_MESSAGE_ID,
41     X_OBJECT_VERSION_NUMBER,
42     X_DATE_EFFECTIVE_FROM,
43     X_DATE_EFFECTIVE_TO,
44     X_ACTIVE_FLAG,
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 AMS_MESSAGES_TL (
53     DESCRIPTION,
54     MESSAGE_ID,
55     LAST_UPDATE_DATE,
56     LAST_UPDATED_BY,
57     CREATION_DATE,
58     CREATED_BY,
59     LAST_UPDATE_LOGIN,
60     MESSAGE_NAME,
61     LANGUAGE,
62     SOURCE_LANG
63   ) select
64     X_DESCRIPTION,
65     X_MESSAGE_ID,
66     X_LAST_UPDATE_DATE,
67     X_LAST_UPDATED_BY,
68     X_CREATION_DATE,
69     X_CREATED_BY,
70     X_LAST_UPDATE_LOGIN,
71     X_MESSAGE_NAME,
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 AMS_MESSAGES_TL T
79     where T.MESSAGE_ID = X_MESSAGE_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_MESSAGE_ID in NUMBER,
94   X_MESSAGE_TYPE_CODE in VARCHAR2,
95   X_OWNER_USER_ID in NUMBER,
96   X_OBJECT_VERSION_NUMBER in NUMBER,
97   X_DATE_EFFECTIVE_FROM in DATE,
98   X_DATE_EFFECTIVE_TO in DATE,
99   X_ACTIVE_FLAG in VARCHAR2,
100   X_MESSAGE_NAME in VARCHAR2,
101   X_DESCRIPTION in VARCHAR2
102 ) is
103   cursor c is select
104       MESSAGE_TYPE_CODE,
105       OWNER_USER_ID,
106       OBJECT_VERSION_NUMBER,
107       DATE_EFFECTIVE_FROM,
108       DATE_EFFECTIVE_TO,
109       ACTIVE_FLAG
110     from AMS_MESSAGES_B
111     where MESSAGE_ID = X_MESSAGE_ID
112     for update of MESSAGE_ID nowait;
113   recinfo c%rowtype;
114 
115   cursor c1 is select
116       MESSAGE_NAME,
117       DESCRIPTION,
118       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
119     from AMS_MESSAGES_TL
120     where MESSAGE_ID = X_MESSAGE_ID
121     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
122     for update of MESSAGE_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.MESSAGE_TYPE_CODE = X_MESSAGE_TYPE_CODE)
133            OR ((recinfo.MESSAGE_TYPE_CODE is null) AND (X_MESSAGE_TYPE_CODE is null)))
134       AND ((recinfo.OWNER_USER_ID = X_OWNER_USER_ID)
135            OR ((recinfo.OWNER_USER_ID is null) AND (X_OWNER_USER_ID is null)))
136       AND ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
137            OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
138       AND ((recinfo.DATE_EFFECTIVE_FROM = X_DATE_EFFECTIVE_FROM)
139            OR ((recinfo.DATE_EFFECTIVE_FROM is null) AND (X_DATE_EFFECTIVE_FROM is null)))
140       AND ((recinfo.DATE_EFFECTIVE_TO = X_DATE_EFFECTIVE_TO)
141            OR ((recinfo.DATE_EFFECTIVE_TO is null) AND (X_DATE_EFFECTIVE_TO is null)))
142       AND (recinfo.ACTIVE_FLAG = X_ACTIVE_FLAG)
143   ) then
144     null;
145   else
146     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
147     app_exception.raise_exception;
148   end if;
149 
150   for tlinfo in c1 loop
151     if (tlinfo.BASELANG = 'Y') then
152       if (    (tlinfo.MESSAGE_NAME = X_MESSAGE_NAME)
153           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
154                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
155       ) then
156         null;
157       else
158         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
159         app_exception.raise_exception;
160       end if;
161     end if;
162   end loop;
163   return;
164 end LOCK_ROW;
165 
166 procedure UPDATE_ROW (
167   X_MESSAGE_ID in NUMBER,
168   X_MESSAGE_TYPE_CODE in VARCHAR2,
169   X_OWNER_USER_ID in NUMBER,
170   X_OBJECT_VERSION_NUMBER in NUMBER,
171   X_DATE_EFFECTIVE_FROM in DATE,
172   X_DATE_EFFECTIVE_TO in DATE,
173   X_ACTIVE_FLAG in VARCHAR2,
174   X_MESSAGE_NAME in VARCHAR2,
175   X_DESCRIPTION in VARCHAR2,
176   X_LAST_UPDATE_DATE in DATE,
177   X_LAST_UPDATED_BY in NUMBER,
178   X_LAST_UPDATE_LOGIN in NUMBER
179 ) is
180 begin
181   update AMS_MESSAGES_B set
182     MESSAGE_TYPE_CODE = X_MESSAGE_TYPE_CODE,
183     OWNER_USER_ID = X_OWNER_USER_ID,
184     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
185     DATE_EFFECTIVE_FROM = X_DATE_EFFECTIVE_FROM,
186     DATE_EFFECTIVE_TO = X_DATE_EFFECTIVE_TO,
187     ACTIVE_FLAG = X_ACTIVE_FLAG,
188     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
189     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
190     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
191   where MESSAGE_ID = X_MESSAGE_ID;
192 
193   if (sql%notfound) then
194     raise no_data_found;
195   end if;
196 
197   update AMS_MESSAGES_TL set
198     MESSAGE_NAME = X_MESSAGE_NAME,
199     DESCRIPTION = X_DESCRIPTION,
200     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
201     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
202     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
203     SOURCE_LANG = userenv('LANG')
204   where MESSAGE_ID = X_MESSAGE_ID
205   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
206 
207   if (sql%notfound) then
208     raise no_data_found;
209   end if;
210 end UPDATE_ROW;
211 
212 procedure DELETE_ROW (
213   X_MESSAGE_ID in NUMBER
214 ) is
215 begin
216   delete from AMS_MESSAGES_TL
217   where MESSAGE_ID = X_MESSAGE_ID;
218 
219   if (sql%notfound) then
220     raise no_data_found;
221   end if;
222 
223   delete from AMS_MESSAGES_B
224   where MESSAGE_ID = X_MESSAGE_ID;
225 
226   if (sql%notfound) then
227     raise no_data_found;
228   end if;
229 end DELETE_ROW;
230 
231 procedure ADD_LANGUAGE
232 is
233 begin
234   delete from AMS_MESSAGES_TL T
235   where not exists
236     (select NULL
237     from AMS_MESSAGES_B B
238     where B.MESSAGE_ID = T.MESSAGE_ID
239     );
240 
241   update AMS_MESSAGES_TL T set (
242       MESSAGE_NAME,
243       DESCRIPTION
244     ) = (select
245       B.MESSAGE_NAME,
246       B.DESCRIPTION
247     from AMS_MESSAGES_TL B
248     where B.MESSAGE_ID = T.MESSAGE_ID
249     and B.LANGUAGE = T.SOURCE_LANG)
250   where (
251       T.MESSAGE_ID,
252       T.LANGUAGE
253   ) in (select
254       SUBT.MESSAGE_ID,
255       SUBT.LANGUAGE
256     from AMS_MESSAGES_TL SUBB, AMS_MESSAGES_TL SUBT
257     where SUBB.MESSAGE_ID = SUBT.MESSAGE_ID
258     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
259     and (SUBB.MESSAGE_NAME <> SUBT.MESSAGE_NAME
260       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
261       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
262       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
263   ));
264 
265   insert into AMS_MESSAGES_TL (
266     DESCRIPTION,
267     MESSAGE_ID,
268     LAST_UPDATE_DATE,
269     LAST_UPDATED_BY,
270     CREATION_DATE,
271     CREATED_BY,
272     LAST_UPDATE_LOGIN,
273     MESSAGE_NAME,
274     LANGUAGE,
275     SOURCE_LANG
276   ) select
277     B.DESCRIPTION,
278     B.MESSAGE_ID,
279     B.LAST_UPDATE_DATE,
280     B.LAST_UPDATED_BY,
281     B.CREATION_DATE,
282     B.CREATED_BY,
283     B.LAST_UPDATE_LOGIN,
284     B.MESSAGE_NAME,
285     L.LANGUAGE_CODE,
286     B.SOURCE_LANG
287   from AMS_MESSAGES_TL B, FND_LANGUAGES L
288   where L.INSTALLED_FLAG in ('I', 'B')
289   and B.LANGUAGE = userenv('LANG')
290   and not exists
291     (select NULL
292     from AMS_MESSAGES_TL T
293     where T.MESSAGE_ID = B.MESSAGE_ID
294     and T.LANGUAGE = L.LANGUAGE_CODE);
295 end ADD_LANGUAGE;
296 
297 procedure TRANSLATE_ROW(
298   X_MESSAGE_ID in NUMBER,
299   X_MESSAGE_NAME in VARCHAR2,
300   X_DESCRIPTION in VARCHAR2,
301   X_OWNER in VARCHAR2
302 )
303 is
304 begin
305     update ams_messages_tl set
306        message_name = nvl(x_message_name, message_name),
307        description = nvl(x_description, description),
308        source_lang = userenv('LANG'),
309        last_update_date = sysdate,
310        last_updated_by = decode(x_owner, 'SEED', 1, 0),
311        last_update_login = 0
312     where  message_id = x_message_id
313     and      userenv('LANG') in (language, source_lang);
314 end TRANSLATE_ROW;
315 
316 procedure LOAD_ROW(
317   X_MESSAGE_ID in NUMBER,
318   X_MESSAGE_TYPE_CODE in VARCHAR2,
319   X_OWNER_USER_ID in NUMBER,
320   X_OBJECT_VERSION_NUMBER in NUMBER,
321   X_DATE_EFFECTIVE_FROM in DATE,
322   X_DATE_EFFECTIVE_TO in DATE,
323   X_ACTIVE_FLAG in VARCHAR2,
324   X_MESSAGE_NAME in VARCHAR2,
325   X_DESCRIPTION in VARCHAR2,
326   X_OWNER in VARCHAR2
327 )
328 is
329 
330   l_user_id    number := 0;
331   l_version    number;
332   l_msg_id     number;
333   l_dummy_char varchar2(1);
334   l_row_id     varchar2(100);
335 
336   cursor c_version is
337   select object_version_number
338   from   ams_messages_b
339   where  message_id = X_MESSAGE_ID;
340 
341   cursor c_msg_exists is
342   select 'x'
343   from   ams_messages_b
344   where  message_id = X_MESSAGE_ID;
345 
346   cursor c_msg_id is
347   select ams_messages_b_s.nextval
348   from   dual;
349 
350 BEGIN
351 
352   open c_msg_exists;
353   fetch c_msg_exists into l_dummy_char;
354   if c_msg_exists%notfound then
355     close c_msg_exists;
356     if X_MESSAGE_ID is null then
357       open c_msg_id;
358       fetch c_msg_id into l_msg_id;
359       close c_msg_id;
360     else
361        l_msg_id := X_MESSAGE_ID;
362     end if;
363     l_version := 1;
364     AMS_MESSAGES_PKG.INSERT_ROW(
365       X_ROWID	=> l_row_id,
366       X_MESSAGE_ID => l_msg_id,
367       X_OBJECT_VERSION_NUMBER => l_version,
368       X_MESSAGE_TYPE_CODE => X_MESSAGE_TYPE_CODE,
369       X_OWNER_USER_ID => X_OWNER_USER_ID,
370       X_DATE_EFFECTIVE_FROM => X_DATE_EFFECTIVE_FROM,
371       X_DATE_EFFECTIVE_TO => X_DATE_EFFECTIVE_TO,
372       X_ACTIVE_FLAG => X_ACTIVE_FLAG,
376       X_CREATED_BY => l_user_id,
373       X_MESSAGE_NAME => X_MESSAGE_NAME,
374       X_DESCRIPTION => X_DESCRIPTION,
375       X_CREATION_DATE => SYSDATE,
377       X_LAST_UPDATE_DATE => SYSDATE,
378       X_LAST_UPDATED_BY => l_user_id,
379       X_LAST_UPDATE_LOGIN	=> 0
380     );
381   else
382     close c_msg_exists;
383     open c_version;
384     fetch c_version into l_version;
385     close c_version;
386     AMS_MESSAGES_PKG.UPDATE_ROW(
387       X_MESSAGE_ID => X_MESSAGE_ID,
388       X_OBJECT_VERSION_NUMBER => l_version + 1,
389       X_MESSAGE_TYPE_CODE => X_MESSAGE_TYPE_CODE,
390       X_OWNER_USER_ID => X_OWNER_USER_ID,
391       X_DATE_EFFECTIVE_FROM => X_DATE_EFFECTIVE_FROM,
392       X_DATE_EFFECTIVE_TO => X_DATE_EFFECTIVE_TO,
393       X_ACTIVE_FLAG => X_ACTIVE_FLAG,
394       X_MESSAGE_NAME => X_MESSAGE_NAME,
395       X_DESCRIPTION => X_DESCRIPTION,
396       X_LAST_UPDATE_DATE => SYSDATE,
397       X_LAST_UPDATED_BY => l_user_id,
398       X_LAST_UPDATE_LOGIN	=> 0
399     );
400   end if;
401 END LOAD_ROW;
402 
403 end AMS_MESSAGES_PKG;