DBA Data[Home] [Help]

PACKAGE BODY: APPS.FND_REQUEST_SET_STAGES_PKG

Source


1 package body FND_REQUEST_SET_STAGES_PKG as
2 /* $Header: AFRSRSSB.pls 120.2 2005/08/19 20:20:34 ckclark ship $ */
3 
4 procedure INSERT_ROW (
5   X_ROWID in out nocopy VARCHAR2,
6   X_REQUEST_SET_ID in NUMBER,
7   X_SET_APPLICATION_ID in NUMBER,
8   X_REQUEST_SET_STAGE_ID in NUMBER,
9   X_STAGE_NAME in VARCHAR2,
10   X_CRITICAL in VARCHAR2,
11   X_OUTCOME in VARCHAR2,
12   X_ALLOW_CONSTRAINTS_FLAG in VARCHAR2,
13   X_DISPLAY_SEQUENCE in NUMBER,
14   X_FUNCTION_APPLICATION_ID in NUMBER,
15   X_FUNCTION_ID in NUMBER,
16   X_SUCCESS_LINK in NUMBER,
17   X_WARNING_LINK in NUMBER,
18   X_ERROR_LINK in NUMBER,
19   X_CONCURRENT_PROGRAM_ID in NUMBER,
20   X_X in NUMBER,
21   X_Y in NUMBER,
22   X_ICON_NAME in VARCHAR2,
23   X_USER_STAGE_NAME in VARCHAR2,
24   X_DESCRIPTION in VARCHAR2,
25   X_CREATION_DATE in DATE,
26   X_CREATED_BY in NUMBER,
27   X_LAST_UPDATE_DATE in DATE,
28   X_LAST_UPDATED_BY in NUMBER,
29   X_LAST_UPDATE_LOGIN in NUMBER
30 ) is
31   cursor C is select ROWID from FND_REQUEST_SET_STAGES
32     where REQUEST_SET_ID = X_REQUEST_SET_ID
33     and SET_APPLICATION_ID = X_SET_APPLICATION_ID
34     and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID
35     ;
36 begin
37   insert into FND_REQUEST_SET_STAGES (
38     SET_APPLICATION_ID,
39     REQUEST_SET_ID,
40     REQUEST_SET_STAGE_ID,
41     STAGE_NAME,
42     CRITICAL,
43     OUTCOME,
44     ALLOW_CONSTRAINTS_FLAG,
45     DISPLAY_SEQUENCE,
46     FUNCTION_APPLICATION_ID,
47     FUNCTION_ID,
48     SUCCESS_LINK,
49     WARNING_LINK,
50     ERROR_LINK,
51     CONCURRENT_PROGRAM_ID,
52     X,
53     Y,
54     ICON_NAME,
55     CREATION_DATE,
56     CREATED_BY,
57     LAST_UPDATE_DATE,
58     LAST_UPDATED_BY,
59     LAST_UPDATE_LOGIN
60   ) values (
61     X_SET_APPLICATION_ID,
62     X_REQUEST_SET_ID,
63     X_REQUEST_SET_STAGE_ID,
64     X_STAGE_NAME,
65     X_CRITICAL,
66     X_OUTCOME,
67     X_ALLOW_CONSTRAINTS_FLAG,
68     X_DISPLAY_SEQUENCE,
69     X_FUNCTION_APPLICATION_ID,
70     X_FUNCTION_ID,
71     X_SUCCESS_LINK,
72     X_WARNING_LINK,
73     X_ERROR_LINK,
74     X_CONCURRENT_PROGRAM_ID,
75     X_X,
76     X_Y,
77     X_ICON_NAME,
78     X_CREATION_DATE,
79     X_CREATED_BY,
80     X_LAST_UPDATE_DATE,
81     X_LAST_UPDATED_BY,
82     X_LAST_UPDATE_LOGIN
83   );
84 
85   insert into FND_REQUEST_SET_STAGES_TL (
86     SET_APPLICATION_ID,
87     REQUEST_SET_ID,
88     REQUEST_SET_STAGE_ID,
89     CREATION_DATE,
90     CREATED_BY,
91     LAST_UPDATE_DATE,
92     LAST_UPDATED_BY,
93     LAST_UPDATE_LOGIN,
94     USER_STAGE_NAME,
95     DESCRIPTION,
96     LANGUAGE,
97     SOURCE_LANG
98   ) select
99     X_SET_APPLICATION_ID,
100     X_REQUEST_SET_ID,
101     X_REQUEST_SET_STAGE_ID,
102     X_CREATION_DATE,
103     X_CREATED_BY,
104     X_LAST_UPDATE_DATE,
105     X_LAST_UPDATED_BY,
106     X_LAST_UPDATE_LOGIN,
107     X_USER_STAGE_NAME,
108     X_DESCRIPTION,
109     L.LANGUAGE_CODE,
110     userenv('LANG')
111   from FND_LANGUAGES L
112   where L.INSTALLED_FLAG in ('I', 'B')
113   and not exists
114     (select NULL
115     from FND_REQUEST_SET_STAGES_TL T
116     where T.REQUEST_SET_ID = X_REQUEST_SET_ID
117     and T.SET_APPLICATION_ID = X_SET_APPLICATION_ID
118     and T.REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID
119     and T.LANGUAGE = L.LANGUAGE_CODE);
120 
121   open c;
122   fetch c into X_ROWID;
123   if (c%notfound) then
124     close c;
125     raise no_data_found;
126   end if;
127   close c;
128 
129 end INSERT_ROW;
130 
131 procedure LOCK_ROW (
132   X_REQUEST_SET_ID in NUMBER,
133   X_SET_APPLICATION_ID in NUMBER,
134   X_REQUEST_SET_STAGE_ID in NUMBER,
135   X_STAGE_NAME in VARCHAR2,
136   X_CRITICAL in VARCHAR2,
137   X_OUTCOME in VARCHAR2,
138   X_ALLOW_CONSTRAINTS_FLAG in VARCHAR2,
139   X_DISPLAY_SEQUENCE in NUMBER,
140   X_FUNCTION_APPLICATION_ID in NUMBER,
141   X_FUNCTION_ID in NUMBER,
142   X_SUCCESS_LINK in NUMBER,
143   X_WARNING_LINK in NUMBER,
144   X_ERROR_LINK in NUMBER,
145   X_CONCURRENT_PROGRAM_ID in NUMBER,
146   X_X in NUMBER,
147   X_Y in NUMBER,
148   X_ICON_NAME in VARCHAR2,
149   X_USER_STAGE_NAME in VARCHAR2,
150   X_DESCRIPTION in VARCHAR2
151 ) is
152   cursor c is select
153       STAGE_NAME,
154       CRITICAL,
155       OUTCOME,
156       ALLOW_CONSTRAINTS_FLAG,
157       DISPLAY_SEQUENCE,
158       FUNCTION_APPLICATION_ID,
159       FUNCTION_ID,
160       SUCCESS_LINK,
161       WARNING_LINK,
162       ERROR_LINK,
163       CONCURRENT_PROGRAM_ID,
164       X,
165       Y,
166       ICON_NAME
167     from FND_REQUEST_SET_STAGES
168     where REQUEST_SET_ID = X_REQUEST_SET_ID
169     and SET_APPLICATION_ID = X_SET_APPLICATION_ID
170     and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID
171     for update of REQUEST_SET_ID nowait;
172   recinfo c%rowtype;
173 
174   cursor c1 is select
175       USER_STAGE_NAME,
176       DESCRIPTION
177     from FND_REQUEST_SET_STAGES_TL
178     where REQUEST_SET_ID = X_REQUEST_SET_ID
179     and SET_APPLICATION_ID = X_SET_APPLICATION_ID
180     and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID
181     and LANGUAGE = userenv('LANG')
182     for update of REQUEST_SET_ID nowait;
183   tlinfo c1%rowtype;
184 
185 begin
186   open c;
187   fetch c into recinfo;
188   if (c%notfound) then
189     close c;
190     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
191     app_exception.raise_exception;
192   end if;
193   close c;
194   if (    (recinfo.STAGE_NAME = X_STAGE_NAME)
195       AND (recinfo.CRITICAL = X_CRITICAL)
196       AND (recinfo.OUTCOME = X_OUTCOME)
197       AND (recinfo.ALLOW_CONSTRAINTS_FLAG = X_ALLOW_CONSTRAINTS_FLAG)
198       AND (recinfo.DISPLAY_SEQUENCE = X_DISPLAY_SEQUENCE)
199       AND ((recinfo.FUNCTION_APPLICATION_ID = X_FUNCTION_APPLICATION_ID)
200            OR ((recinfo.FUNCTION_APPLICATION_ID is null) AND (X_FUNCTION_APPLICATION_ID is null)))
201       AND ((recinfo.FUNCTION_ID = X_FUNCTION_ID)
202            OR ((recinfo.FUNCTION_ID is null) AND (X_FUNCTION_ID is null)))
203       AND ((recinfo.SUCCESS_LINK = X_SUCCESS_LINK)
204            OR ((recinfo.SUCCESS_LINK is null) AND (X_SUCCESS_LINK is null)))
205       AND ((recinfo.WARNING_LINK = X_WARNING_LINK)
206            OR ((recinfo.WARNING_LINK is null) AND (X_WARNING_LINK is null)))
207       AND ((recinfo.ERROR_LINK = X_ERROR_LINK)
208            OR ((recinfo.ERROR_LINK is null) AND (X_ERROR_LINK is null)))
209       AND ((recinfo.CONCURRENT_PROGRAM_ID = X_CONCURRENT_PROGRAM_ID)
210            OR ((recinfo.CONCURRENT_PROGRAM_ID is null) AND (X_CONCURRENT_PROGRAM_ID is null)))
211       AND ((recinfo.X = X_X)
212            OR ((recinfo.X is null) AND (X_X is null)))
213       AND ((recinfo.Y = X_Y)
214            OR ((recinfo.Y is null) AND (X_Y is null)))
215       AND ((recinfo.ICON_NAME = X_ICON_NAME)
216            OR ((recinfo.ICON_NAME is null) AND (X_ICON_NAME is null)))
217   ) then
218     null;
219   else
220     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
221     app_exception.raise_exception;
222   end if;
223 
224   open c1;
225   fetch c1 into tlinfo;
226   if (c1%notfound) then
227     close c1;
228     return;
229   end if;
230   close c1;
231 
232   if (    (tlinfo.USER_STAGE_NAME = X_USER_STAGE_NAME)
233       AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
234            OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
235   ) then
236     null;
237   else
238     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
239     app_exception.raise_exception;
240   end if;
241   return;
242 end LOCK_ROW;
243 
244 procedure UPDATE_ROW (
245   X_REQUEST_SET_ID in NUMBER,
246   X_SET_APPLICATION_ID in NUMBER,
247   X_REQUEST_SET_STAGE_ID in NUMBER,
248   X_STAGE_NAME in VARCHAR2,
249   X_CRITICAL in VARCHAR2,
250   X_OUTCOME in VARCHAR2,
251   X_ALLOW_CONSTRAINTS_FLAG in VARCHAR2,
252   X_DISPLAY_SEQUENCE in NUMBER,
253   X_FUNCTION_APPLICATION_ID in NUMBER,
254   X_FUNCTION_ID in NUMBER,
255   X_SUCCESS_LINK in NUMBER,
256   X_WARNING_LINK in NUMBER,
257   X_ERROR_LINK in NUMBER,
258   X_CONCURRENT_PROGRAM_ID in NUMBER,
259   X_X in NUMBER,
260   X_Y in NUMBER,
261   X_ICON_NAME in VARCHAR2,
262   X_USER_STAGE_NAME in VARCHAR2,
263   X_DESCRIPTION in VARCHAR2,
264   X_LAST_UPDATE_DATE in DATE,
265   X_LAST_UPDATED_BY in NUMBER,
266   X_LAST_UPDATE_LOGIN in NUMBER
267 ) is
268 begin
269   update FND_REQUEST_SET_STAGES set
270     STAGE_NAME = X_STAGE_NAME,
271     CRITICAL = X_CRITICAL,
272     OUTCOME = X_OUTCOME,
273     ALLOW_CONSTRAINTS_FLAG = X_ALLOW_CONSTRAINTS_FLAG,
274     DISPLAY_SEQUENCE = X_DISPLAY_SEQUENCE,
275     FUNCTION_APPLICATION_ID = X_FUNCTION_APPLICATION_ID,
276     FUNCTION_ID = X_FUNCTION_ID,
277     SUCCESS_LINK = X_SUCCESS_LINK,
278     WARNING_LINK = X_WARNING_LINK,
279     ERROR_LINK = X_ERROR_LINK,
280     CONCURRENT_PROGRAM_ID = X_CONCURRENT_PROGRAM_ID,
281     X = X_X,
282     Y = X_Y,
283     ICON_NAME = X_ICON_NAME,
284     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
285     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
286     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
287   where REQUEST_SET_ID = X_REQUEST_SET_ID
288   and SET_APPLICATION_ID = X_SET_APPLICATION_ID
289   and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID;
290 
291   if (sql%notfound) then
292     raise no_data_found;
293   end if;
294 
295   update FND_REQUEST_SET_STAGES_TL set
296     USER_STAGE_NAME = X_USER_STAGE_NAME,
297     DESCRIPTION = X_DESCRIPTION,
298     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
299     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
300     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
301     SOURCE_LANG = userenv('LANG')
302   where REQUEST_SET_ID = X_REQUEST_SET_ID
303   and SET_APPLICATION_ID = X_SET_APPLICATION_ID
304   and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID
305   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
306 
307   if (sql%notfound) then
308     raise no_data_found;
309   end if;
310 end UPDATE_ROW;
311 
312 procedure DELETE_ROW (
313   X_REQUEST_SET_ID in NUMBER,
314   X_SET_APPLICATION_ID in NUMBER,
315   X_REQUEST_SET_STAGE_ID in NUMBER
316 ) is
317 
318 -- This added code fixes the problem of having success, error, and/or warning links
319 --  pointing to stages which have been deleted. Before the stage gets deleted, the
320 --  following code checks to see if any other stage has a link pointing to the
321 --  stage which is about to be deleted. If so, the link is set to null.
322 --BUG 871226  (Begin of Added Declarations)
323 
324   bad_stage_id  NUMBER(15);
325 
326   bad_SL        NUMBER(15);
327   bad_WL        NUMBER(15);
328   bad_EL        NUMBER(15);
329 
330   TYPE set_app_id_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
331   TYPE req_set_id_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
332   TYPE req_set_stage_id_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
333 
334   set_app_id_array              set_app_id_table;
335   req_set_id_array              req_set_id_table;
336   req_set_stage_id_array        req_set_stage_id_table;
337 
338   bad_link_counter              BINARY_INTEGER := 0;
339 
340   CURSOR get_bad_links IS SELECT set_application_id, request_set_id, request_set_stage_id
341         FROM fnd_request_set_stages_vl WHERE (success_link =  bad_stage_id)
342                                        OR (warning_link = bad_stage_id)
343                                        OR (error_link = bad_stage_id);
344 
345 --BUG 871226  (End of Added Declarations)
346 
347 begin
348   -- Disable the concurrent program (if any).
349   begin
350     update fnd_concurrent_programs
351        set enabled_flag='N'
352      where application_id = x_set_application_id
353        and concurrent_program_id in
354            (select concurrent_program_id
355               from fnd_request_set_stages
356              where set_application_id = x_set_application_id
357                and request_set_id = x_request_set_id
358                and request_set_stage_id = x_request_set_stage_id
359                and concurrent_program_id is null);
360 
361 --BUG 871226  (Begin of Added Code)
362 
363   SELECT request_set_stage_id INTO bad_stage_id
364                                   FROM fnd_request_set_stages_vl
365                                    WHERE set_application_id = x_set_application_id
366                                    AND request_set_id = x_request_set_id
367                                    AND request_set_stage_id = x_request_set_stage_id;
368 
369   OPEN get_bad_links;
370 
371   LOOP
372         FETCH get_bad_links INTO set_app_id_array(bad_link_counter),
373                                  req_set_id_array(bad_link_counter),
374                                  req_set_stage_id_array(bad_link_counter);
375 
376         EXIT WHEN get_bad_links%NOTFOUND;
377         bad_link_counter := bad_link_counter + 1; -- counter gets inc 1 too high here
378   END LOOP;
379 
380   CLOSE get_bad_links;
381 
382 
383   FOR array_index IN 0..bad_link_counter - 1  LOOP  -- dec 1 from counter because too high
384 
385         SELECT success_link,warning_link,error_link INTO bad_SL,bad_WL,bad_EL
386                        FROM fnd_request_set_stages_vl WHERE
387                         set_application_id = set_app_id_array(array_index) AND
388                         request_set_id = req_set_id_array(array_index) AND
389                         request_set_stage_id = req_set_stage_id_array(array_index);
390 
391         IF (bad_SL = bad_stage_id )  THEN
392                         UPDATE fnd_request_set_stages SET success_link = NULL WHERE
393                                  set_application_id = set_app_id_array(array_index) AND
394                                  request_set_id = req_set_id_array(array_index) AND
395                                  request_set_stage_id = req_set_stage_id_array(array_index);
396         END IF;
397 
398         IF (bad_WL = bad_stage_id)  THEN
399                         UPDATE fnd_request_set_stages SET warning_link = NULL WHERE
400                                  set_application_id = set_app_id_array(array_index) AND
401                                  request_set_id = req_set_id_array(array_index) AND
402                                  request_set_stage_id = req_set_stage_id_array(array_index);
403         END IF;
404 
405         IF (bad_EL = bad_stage_id)  THEN
406                         UPDATE fnd_request_set_stages SET error_link = NULL WHERE
407                                  set_application_id = set_app_id_array(array_index) AND
408                                  request_set_id = req_set_id_array(array_index) AND
409                                  request_set_stage_id = req_set_stage_id_array(array_index);
410         END IF;
411   END LOOP;
412 --BUG 871226  (End of Added Code)
413 
414   exception
415     when no_data_found then -- We don't care.
416       null;
417   end;
418 
419   delete from FND_REQUEST_SET_PROGRAM_ARGS
420    where (application_id, request_set_id, request_set_program_id)
421       in (select set_application_id, request_set_id, request_set_program_id
422             from fnd_request_set_programs
423            where set_application_id =  x_set_application_id
424              and request_set_id = x_request_set_id
425              and request_set_stage_id = x_request_set_stage_id);
426 
427   delete from fnd_request_set_programs
428    where set_application_id =  x_set_application_id
429      and request_set_id = x_request_set_id
430      and request_set_stage_id = x_request_set_stage_id;
431 
432   delete from FND_STAGE_FN_PARAMETER_VALUES
433   where SET_APPLICATION_ID = X_SET_APPLICATION_ID
434   and REQUEST_SET_ID = X_REQUEST_SET_ID
435   and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID;
436 
437   delete from FND_REQUEST_SET_STAGES
438   where SET_APPLICATION_ID = X_SET_APPLICATION_ID
439   and REQUEST_SET_ID = X_REQUEST_SET_ID
440   and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID;
441 
442   if (sql%notfound) then
443     raise no_data_found;
444   end if;
445 
446   delete from FND_REQUEST_SET_STAGES_TL
447   where SET_APPLICATION_ID = X_SET_APPLICATION_ID
448   and REQUEST_SET_ID = X_REQUEST_SET_ID
449   and REQUEST_SET_STAGE_ID = X_REQUEST_SET_STAGE_ID;
450 
451   if (sql%notfound) then
452     raise no_data_found;
453   end if;
454 end DELETE_ROW;
455 
456 
457 procedure ADD_LANGUAGE
458 is
459 begin
460 /* Mar/19/03 requested by Ric Ginsberg */
461 /* The following delete and update statements are commented out */
462 /* as a quick workaround to fix the time-consuming table handler issue */
463 /* Eventually we'll need to turn them into a separate fix_language procedure */
464 /*
465 
466   delete from FND_REQUEST_SET_STAGES_TL T
467   where not exists
468     (select NULL
469     from FND_REQUEST_SET_STAGES B
470     where B.REQUEST_SET_ID = T.REQUEST_SET_ID
471     and B.SET_APPLICATION_ID = T.SET_APPLICATION_ID
472     and B.REQUEST_SET_STAGE_ID = T.REQUEST_SET_STAGE_ID
473     );
474 
475   update FND_REQUEST_SET_STAGES_TL T set (
476       USER_STAGE_NAME,
477       DESCRIPTION
478     ) = (select
479       B.USER_STAGE_NAME,
480       B.DESCRIPTION
481     from FND_REQUEST_SET_STAGES_TL B
482     where B.REQUEST_SET_ID = T.REQUEST_SET_ID
483     and B.SET_APPLICATION_ID = T.SET_APPLICATION_ID
484     and B.REQUEST_SET_STAGE_ID = T.REQUEST_SET_STAGE_ID
485     and B.LANGUAGE = T.SOURCE_LANG)
486   where (
487       T.REQUEST_SET_ID,
488       T.SET_APPLICATION_ID,
489       T.REQUEST_SET_STAGE_ID,
490       T.LANGUAGE
491   ) in (select
492       SUBT.REQUEST_SET_ID,
493       SUBT.SET_APPLICATION_ID,
494       SUBT.REQUEST_SET_STAGE_ID,
495       SUBT.LANGUAGE
496     from FND_REQUEST_SET_STAGES_TL SUBB, FND_REQUEST_SET_STAGES_TL SUBT
497     where SUBB.REQUEST_SET_ID = SUBT.REQUEST_SET_ID
498     and SUBB.SET_APPLICATION_ID = SUBT.SET_APPLICATION_ID
499     and SUBB.REQUEST_SET_STAGE_ID = SUBT.REQUEST_SET_STAGE_ID
500     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
501     and (SUBB.USER_STAGE_NAME <> SUBT.USER_STAGE_NAME
502       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
503       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
504       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
505   ));
506 */
507 
508   insert into FND_REQUEST_SET_STAGES_TL (
509     SET_APPLICATION_ID,
510     REQUEST_SET_ID,
511     REQUEST_SET_STAGE_ID,
512     CREATION_DATE,
513     CREATED_BY,
514     LAST_UPDATE_DATE,
515     LAST_UPDATED_BY,
516     LAST_UPDATE_LOGIN,
517     USER_STAGE_NAME,
518     DESCRIPTION,
519     LANGUAGE,
520     SOURCE_LANG
521   ) select
522     B.SET_APPLICATION_ID,
523     B.REQUEST_SET_ID,
524     B.REQUEST_SET_STAGE_ID,
525     B.CREATION_DATE,
526     B.CREATED_BY,
527     B.LAST_UPDATE_DATE,
528     B.LAST_UPDATED_BY,
529     B.LAST_UPDATE_LOGIN,
530     B.USER_STAGE_NAME,
531     B.DESCRIPTION,
532     L.LANGUAGE_CODE,
533     B.SOURCE_LANG
534   from FND_REQUEST_SET_STAGES_TL B, FND_LANGUAGES L
535   where L.INSTALLED_FLAG in ('I', 'B')
536   and B.LANGUAGE = userenv('LANG')
537   and not exists
538     (select NULL
539     from FND_REQUEST_SET_STAGES_TL T
540     where T.REQUEST_SET_ID = B.REQUEST_SET_ID
541     and T.SET_APPLICATION_ID = B.SET_APPLICATION_ID
542     and T.REQUEST_SET_STAGE_ID = B.REQUEST_SET_STAGE_ID
543     and T.LANGUAGE = L.LANGUAGE_CODE);
544 end ADD_LANGUAGE;
545 
546 end FND_REQUEST_SET_STAGES_PKG;