DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_SAFETY_STATUSES_PKG

Source


1 package body EAM_SAFETY_STATUSES_PKG as
2 /* $Header: EAMSFSTB.pls 120.0.12010000.4 2010/03/24 14:30:47 vboddapa noship $ */
3 /***************************************************************************
4 --
5 --  Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
6 --  All rights reserved.
7 --
8 --  FILENAME
9 --
10 --      EAMSFSTB.pls
11 --
12 --  DESCRIPTION
13 --
14 --      Body of package EAM_SAFETY_STATUSES_PKG
15 --
16 --  NOTES
17 --
18 --  HISTORY
19 --
20 --  24-MAR-2010    vboddapa     Initial Creation
21 ***************************************************************************/
22 
23 
24 --This procedure will insert new rows in EAM_SAFETY_USR_DEF_STATUSES_B and eam_safety_usr_def_statuses_tl tables
25 procedure INSERT_ROW (
26                 X_ROWID						 in out NOCOPY VARCHAR2,
27                 X_STATUS_ID					  in out NOCOPY NUMBER,
28                 P_SEEDED_FLAG				in VARCHAR2,
29                 P_SYSTEM_STATUS			in NUMBER,
30                 P_ENABLED_FLAG				in VARCHAR2,
31                 P_USER_DEFINED_STATUS		 in VARCHAR2,
32                 P_ENTITY_TYPE	        in NUMBER,
33                 P_CREATION_DATE				in DATE,
34                 P_CREATED_BY				in NUMBER,
35                 P_LAST_UPDATE_DATE			in DATE,
36                 P_LAST_UPDATED_BY			in NUMBER,
37                 P_LAST_UPDATE_LOGIN		in NUMBER
38                 ) is
39 
40                 cursor C is select ROWID from eam_safety_usr_def_statuses_b
41                 where STATUS_ID = X_STATUS_ID and
42                 entity_type = P_ENTITY_TYPE;
43 
44                 CURSOR C2 IS SELECT eam_wo_statuses_b_s.nextval FROM sys.dual;
45 
46 begin
47 				if (X_Status_Id is NULL) then
48 						   OPEN C2;
49 						   FETCH C2 INTO X_Status_ID;
50 						   CLOSE C2;
51 				end if;
52 
53 
54                 insert into eam_safety_usr_def_statuses_b (
55 							    STATUS_ID,
56 							    SEEDED_FLAG,
57                   ENTITY_TYPE,
58 							    SYSTEM_STATUS,
59 							    ENABLED_FLAG,
60 							    CREATION_DATE,
61 							    CREATED_BY,
62 							    LAST_UPDATE_DATE,
63 							    LAST_UPDATED_BY,
64 							    LAST_UPDATE_LOGIN
65 							  ) values (
66 							    X_STATUS_ID,
67 							    P_SEEDED_FLAG,
68                   P_ENTITY_TYPE,
69 							    P_SYSTEM_STATUS,
70 							    P_ENABLED_FLAG,
71 							    P_CREATION_DATE,
72 							    P_CREATED_BY,
73 							    P_LAST_UPDATE_DATE,
74 							    P_LAST_UPDATED_BY,
75 							    P_LAST_UPDATE_LOGIN
76 							  );
77 
78                 IF( P_USER_DEFINED_STATUS IS NOT NULL) THEN
79                   -- user_defined_status will be Null for seeded WIP statuses
80 
81                     insert into eam_safety_usr_def_statuses_tl (
82 											    LAST_UPDATE_LOGIN,
83 											    CREATION_DATE,
84 											    STATUS_ID,
85 											    USER_DEFINED_STATUS,
86                           ENTITY_TYPE,
87 											    LAST_UPDATE_DATE,
88 											    LAST_UPDATED_BY,
89 											    CREATED_BY,
90 											    LANGUAGE,
91 											    SOURCE_LANG
92 											  ) select
93 											    P_LAST_UPDATE_LOGIN,
94 											    P_CREATION_DATE,
95 											    X_STATUS_ID,
96 											    P_USER_DEFINED_STATUS,
97                           P_ENTITY_TYPE,
98 											    P_LAST_UPDATE_DATE,
99 											    P_LAST_UPDATED_BY,
100 											    P_CREATED_BY,
101 											    L.LANGUAGE_CODE,
102 											    userenv('LANG')
103                     from
104 											      FND_LANGUAGES L
105                     where
106                           L.INSTALLED_FLAG in ('I', 'B')
107 												  and not exists
108 												    (select NULL
109 												    from eam_safety_usr_def_statuses_tl T
110 												    where T.STATUS_ID = X_STATUS_ID
111 												    and T.LANGUAGE = L.LANGUAGE_CODE
112                             and T.entity_type = P_ENTITY_TYPE);
113 
114 											  open c;
115 											  fetch c into X_ROWID;
116 											  if (c%notfound) then
117 											    close c;
118 											    raise no_data_found;
119 											  end if;
120 											  close c;
121 					END IF;
122 end INSERT_ROW;
123 
124 --This procedure will update rows in EAM_SAFETY_USR_DEF_STATUSES_B and eam_safety_usr_def_statuses_tl tables
125 procedure UPDATE_ROW (
126   P_STATUS_ID					  in NUMBER,
127   P_SEEDED_FLAG				in VARCHAR2,
128   P_SYSTEM_STATUS			in NUMBER,
129   P_ENABLED_FLAG				in VARCHAR2,
130   P_USER_DEFINED_STATUS		 in VARCHAR2,
131   P_ENTITY_TYPE	        in NUMBER,
132   P_LAST_UPDATE_DATE			in DATE,
133   P_LAST_UPDATED_BY			in NUMBER,
134   P_LAST_UPDATE_LOGIN		in NUMBER,
135   P_MODE                                              in VARCHAR2 DEFAULT 'FORMS'
136 ) is
137 
138     l_user_id    NUMBER;
139     l_resp_id     NUMBER;
140     l_request_id    NUMBER;
141 begin
142 
143   update eam_safety_usr_def_statuses_b set
144     SEEDED_FLAG = P_SEEDED_FLAG,
145     SYSTEM_STATUS = P_SYSTEM_STATUS,
146     ENABLED_FLAG  = P_ENABLED_FLAG,
147     LAST_UPDATE_DATE = P_LAST_UPDATE_DATE,
148     LAST_UPDATED_BY = P_LAST_UPDATED_BY,
149     LAST_UPDATE_LOGIN = P_LAST_UPDATE_LOGIN
150   where STATUS_ID = P_STATUS_ID and
151   ENTITY_TYPE  = P_ENTITY_TYPE;
152 
153   if (sql%notfound) then
154     raise no_data_found;
155   end if;
156 
157     IF (P_USER_DEFINED_STATUS IS NOT NULL) THEN
158            -- user_defined_status will be Null for seeded WIP statuses
159 
160 						  update eam_safety_usr_def_statuses_tl set
161 						    USER_DEFINED_STATUS = P_USER_DEFINED_STATUS,
162 						    LAST_UPDATE_DATE = P_LAST_UPDATE_DATE,
163 						    LAST_UPDATED_BY = P_LAST_UPDATED_BY,
164 						    LAST_UPDATE_LOGIN = P_LAST_UPDATE_LOGIN,
165 						    SOURCE_LANG = userenv('LANG')
166 						  where STATUS_ID = P_STATUS_ID
167 						  and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
168               and ENTITY_TYPE  = P_ENTITY_TYPE;
169 
170 						  if (sql%notfound) then
171 							raise no_data_found;
172 						  end if;
173 
174 			     IF(p_mode = 'FORMS') THEN
175 							--Launch concurrent program to update work order intermedia index only when update_row is called from forms not during upgrade
176 							l_user_id       := fnd_global.user_id;
177 							l_resp_id      :=  fnd_global.resp_id;
178 
179 							IF (l_user_id IS NOT NULL AND l_resp_id IS NOT NULL) THEN
180 								 FND_GLOBAL.APPS_INITIALIZE(l_user_id, l_resp_id,426,0);
181 							  END IF;
182 
183 							   l_request_id := fnd_request.submit_request('EAM', 'EAMVTCIS', '',
184 											 to_char(sysdate, 'YYYY/MM/DD HH24:MI'),
185 											 FALSE,
186 											 '2',
187 											 '5',
188 											 TO_CHAR(p_status_id)
189 											 );
190 			     END IF;
191    END IF;
192 
193 end UPDATE_ROW;
194 
195 
196 
197 --This procedure will delete rows in EAM_SAFETY_USR_DEF_STATUSES_B and eam_safety_usr_def_statuses_tl tables
198 procedure DELETE_ROW (
199   P_STATUS_ID in NUMBER,
200   P_ENTITY_TYPE in NUMBER
201 ) is
202 begin
203 
204   delete from eam_safety_usr_def_statuses_tl
205   where STATUS_ID = P_STATUS_ID
206   and ENTITY_TYPE = P_ENTITY_TYPE;
207 
208   delete from eam_safety_usr_def_statuses_b
209   where STATUS_ID = P_STATUS_ID
210   and ENTITY_TYPE = P_ENTITY_TYPE;
211 
212   if (sql%notfound) then
213     raise no_data_found;
214   end if;
215 end DELETE_ROW;
216 
217 --This procedure will be called when a new langauge is installed. This will insert rows
218 -- in Eam_Wo_Statuses_TL table for the new langauge
219 procedure ADD_LANGUAGE
220 is
221 begin
222 
223   delete from eam_safety_usr_def_statuses_tl T
224   where not exists
225     (select NULL
226     from eam_safety_usr_def_statuses_b B
227     where B.STATUS_ID = T.STATUS_ID
228     and  B.ENTITY_TYPE = T.ENTITY_TYPE
229     );
230 
231   update eam_safety_usr_def_statuses_tl T set (
232       USER_DEFINED_STATUS
233     ) = (select
234       B.USER_DEFINED_STATUS
235     from
236           eam_safety_usr_def_statuses_tl B
237     where
238          B.STATUS_ID = T.STATUS_ID
239     and B.LANGUAGE = T.SOURCE_LANG
240     and  B.ENTITY_TYPE = T.ENTITY_TYPE
241     )
242   where (
243       T.STATUS_ID,
244       T.LANGUAGE,
245       T.ENTITY_TYPE
246   ) in (select
247       SUBT.STATUS_ID,
248       SUBT.LANGUAGE,
249       SUBT.ENTITY_TYPE
250     from eam_safety_usr_def_statuses_tl SUBB, eam_safety_usr_def_statuses_tl SUBT
251     where SUBB.STATUS_ID = SUBT.STATUS_ID
252     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
253     and  SUBB.ENTITY_TYPE = SUBT.ENTITY_TYPE
254     and (SUBB.USER_DEFINED_STATUS <> SUBT.USER_DEFINED_STATUS
255     ));
256 
257   insert into eam_safety_usr_def_statuses_tl (
258     LAST_UPDATE_LOGIN,
259     CREATION_DATE,
260     STATUS_ID,
261     USER_DEFINED_STATUS,
262     ENTITY_TYPE,
263     LAST_UPDATE_DATE,
264     LAST_UPDATED_BY,
265     CREATED_BY,
266     LANGUAGE,
267     SOURCE_LANG
268   ) select
269     B.LAST_UPDATE_LOGIN,
270     B.CREATION_DATE,
271     B.STATUS_ID,
272     B.USER_DEFINED_STATUS,
273     B.ENTITY_TYPE,
274     B.LAST_UPDATE_DATE,
275     B.LAST_UPDATED_BY,
276     B.CREATED_BY,
277     L.LANGUAGE_CODE,
278     B.SOURCE_LANG
279   from eam_safety_usr_def_statuses_tl B, FND_LANGUAGES L
280   where L.INSTALLED_FLAG in ('I', 'B')
281   and B.LANGUAGE = userenv('LANG')
282   and not exists
283     (select NULL
284     from eam_safety_usr_def_statuses_tl T
285     where T.STATUS_ID = B.STATUS_ID
286     and T.LANGUAGE = L.LANGUAGE_CODE
287     and T.ENTITY_TYPE = B.ENTITY_TYPE);
288 
289 end ADD_LANGUAGE;
290 
291 --This procedure will be called for all the langauges to translate the User_Defined_Status value
292 procedure TRANSLATE_ROW
293 (			P_STATUS_ID						in NUMBER,
294                          P_USER_DEFINED_STATUS			in VARCHAR2,
295                          P_ENTITY_TYPE in NUMBER,
296                          P_OWNER							in VARCHAR2,
297                          P_LAST_UPDATE_DATE				in VARCHAR2,
298                          P_CUSTOM_MODE					in VARCHAR2
299 ) IS
300 
301 f_luby    number;  -- entity owner in file
302 f_ludate  date;    -- entity update date in file
303 db_luby   number;  -- entity owner in db
304 db_ludate date;    -- entity update date in db
305 
306 begin
307 
308       IF (P_USER_DEFINED_STATUS IS NOT NULL) THEN
309            -- user_defined_status will be Null for seeded WIP statuses
310 											  f_luby := fnd_load_util.owner_id(P_OWNER);
311 											  f_ludate := nvl(to_date(P_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
312 
313 											  select LAST_UPDATED_BY, LAST_UPDATE_DATE
314 											  into  db_luby, db_ludate
315 											  from eam_safety_usr_def_statuses_tl
316 											  where STATUS_ID = P_STATUS_ID
317 											  and  language = userenv('LANG')
318                         and ENTITY_TYPE = P_ENTITY_TYPE;
319 
320 											  if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
321 															db_ludate, P_CUSTOM_MODE)) then
322 
323 														    update eam_safety_usr_def_statuses_tl set
324 														      user_defined_status = P_USER_DEFINED_STATUS,
325 														      last_update_date  = f_ludate ,
326 														      last_updated_by   = f_luby,
327 														      last_update_login = 0,
328 														      source_lang       = userenv('LANG')
329 														    where STATUS_ID = P_STATUS_ID
330 														    and  userenv('LANG') in (language, source_lang)
331                                 and ENTITY_TYPE = P_ENTITY_TYPE;
332 
333 											  end if;
334 	END IF;
335 
336 exception
337  when no_data_found then
338     -- Do not insert missing translations, skip this row
339     null;
340 end TRANSLATE_ROW;
341 
342 --This procedure will be called during upgarde of seeded statuses
343 procedure LOAD_ROW
344 (
345    X_STATUS_ID					  in out nocopy NUMBER,
346    P_SEEDED_FLAG				in VARCHAR2,
347    P_SYSTEM_STATUS			in NUMBER,
348    P_ENABLED_FLAG				in VARCHAR2,
349    P_USER_DEFINED_STATUS			 in VARCHAR2,
350    P_ENTITY_TYPE	        in NUMBER,
351    P_OWNER							in VARCHAR2,
352    P_LAST_UPDATE_DATE			in VARCHAR2,
353    P_CUSTOM_MODE					in VARCHAR2
354 ) IS
355 
356 l_row_id	  varchar2(64);
357 f_luby    number;  -- entity owner in file
358 f_ludate  date;    -- entity update date in file
359 db_luby   number;  -- entity owner in db
360 db_ludate date;    -- entity update date in db
361 
362 begin
363 
364   f_luby := fnd_load_util.owner_id(P_OWNER);
365   f_ludate := nvl(to_date(P_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
366 
367   select LAST_UPDATED_BY, LAST_UPDATE_DATE
368   into  db_luby, db_ludate
369   from eam_safety_usr_def_statuses_b
370   where status_id = X_STATUS_ID
371   and ENTITY_TYPE = P_ENTITY_TYPE;
372 
373     if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
374                                   db_ludate,P_CUSTOM_MODE)) then
375 
376      UPDATE_ROW (X_STATUS_ID ,
377                  P_SEEDED_FLAG ,
378                  P_SYSTEM_STATUS ,
379                  P_ENABLED_FLAG ,
380                  P_USER_DEFINED_STATUS ,
381                  P_ENTITY_TYPE,
382                  f_ludate ,
383                  f_luby ,
384                  0,
385 		 'UPGRADE');
386 
387      end if;
388 
389   exception
390      when NO_DATA_FOUND then
391 
392 	 INSERT_ROW (l_row_id ,
393 			 X_STATUS_ID ,
394 			 P_SEEDED_FLAG ,
395 			 P_SYSTEM_STATUS ,
396 			 P_ENABLED_FLAG ,
397 			 P_USER_DEFINED_STATUS ,
398        P_ENTITY_TYPE,
399 			  f_ludate ,
400 			  f_luby ,
401 			  f_ludate ,
402 			  f_luby ,
403 			  0 );
404 
405 end LOAD_ROW;
406 
407 
408 end EAM_SAFETY_STATUSES_PKG;