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