DBA Data[Home] [Help]

PACKAGE BODY: APPS.FEM_APPLICATION_GROUPS_PKG

Source


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