1 package body ENG_CHANGE_LINES_PKG as
2 /* $Header: ENGCHLUB.pls 115.8 2003/11/22 18:59:27 sshrikha ship $ */
3 procedure INSERT_ROW (
4 X_ROWID in out NOCOPY VARCHAR2,
5 X_CHANGE_LINE_ID in NUMBER,
6 X_REQUEST_ID in NUMBER,
7 X_CHANGE_ID in NUMBER,
8 X_SEQUENCE_NUMBER in NUMBER,
9 X_CHANGE_TYPE_ID in NUMBER,
10 X_STATUS_CODE in VARCHAR2,
11 X_ASSIGNEE_ID in NUMBER,
12 X_NEED_BY_DATE in DATE,
13 X_ORIGINAL_SYSTEM_REFERENCE in VARCHAR2,
14 X_NAME in VARCHAR2,
15 X_DESCRIPTION in VARCHAR2,
16 X_SCHEDULED_DATE in DATE,
17 X_IMPLEMENTATION_DATE in DATE,
18 X_CANCELATION_DATE in DATE,
19 X_CREATION_DATE in DATE,
20 X_CREATED_BY in NUMBER,
21 X_LAST_UPDATE_DATE in DATE,
22 X_LAST_UPDATED_BY in NUMBER,
23 X_LAST_UPDATE_LOGIN in NUMBER,
24 X_PROGRAM_ID IN NUMBER,
25 X_PROGRAM_APPLICATION_ID IN NUMBER,
26 X_PROGRAM_UPDATE_DATE IN DATE,
27 X_APPROVAL_STATUS_TYPE IN NUMBER,
28 X_APPROVAL_DATE IN DATE,
29 X_APPROVAL_REQUEST_DATE IN DATE,
30 X_ROUTE_ID IN NUMBER,
31 X_REQUIRED_FLAG IN VARCHAR2,
32 X_COMPLETE_BEFORE_STATUS_CODE IN NUMBER,
33 X_START_AFTER_STATUS_CODE IN NUMBER
34
35 ) is
36 cursor C is select ROWID from ENG_CHANGE_LINES
37 where CHANGE_LINE_ID = X_CHANGE_LINE_ID
38 ;
39 begin
40 insert into ENG_CHANGE_LINES (
41 CHANGE_LINE_ID,
42 REQUEST_ID,
43 CHANGE_ID,
44 SEQUENCE_NUMBER,
45 CHANGE_TYPE_ID,
46 SCHEDULED_DATE,
47 IMPLEMENTATION_DATE,
48 CANCELATION_DATE,
49 STATUS_CODE,
50 ASSIGNEE_ID,
51 NEED_BY_DATE,
52 ORIGINAL_SYSTEM_REFERENCE,
53 CREATION_DATE,
54 CREATED_BY,
55 LAST_UPDATE_DATE,
56 LAST_UPDATED_BY,
57 LAST_UPDATE_LOGIN,
58 APPROVAL_STATUS_TYPE,
59 APPROVAL_DATE,
60 APPROVAL_REQUEST_DATE,
61 ROUTE_ID,
62 REQUIRED_FLAG,
63 COMPLETE_BEFORE_STATUS_CODE,
64 START_AFTER_STATUS_CODE
65
66 ) values (
67 X_CHANGE_LINE_ID,
68 X_REQUEST_ID,
69 X_CHANGE_ID,
70 X_SEQUENCE_NUMBER,
71 X_CHANGE_TYPE_ID,
72 X_SCHEDULED_DATE,
73 X_IMPLEMENTATION_DATE,
74 X_CANCELATION_DATE,
75 X_STATUS_CODE,
76 X_ASSIGNEE_ID,
77 X_NEED_BY_DATE,
78 X_ORIGINAL_SYSTEM_REFERENCE,
79 X_CREATION_DATE,
80 X_CREATED_BY,
81 X_LAST_UPDATE_DATE,
82 X_LAST_UPDATED_BY,
83 X_LAST_UPDATE_LOGIN,
84 NVL(X_APPROVAL_STATUS_TYPE,1),
85 X_APPROVAL_DATE,
86 X_APPROVAL_REQUEST_DATE,
87 X_ROUTE_ID,
88 X_REQUIRED_FLAG,
89 X_COMPLETE_BEFORE_STATUS_CODE,
90 X_START_AFTER_STATUS_CODE
91 );
92
93 insert into ENG_CHANGE_LINES_TL (
94 CHANGE_LINE_ID,
95 CREATION_DATE,
96 CREATED_BY,
97 LAST_UPDATE_DATE,
98 LAST_UPDATED_BY,
99 LAST_UPDATE_LOGIN,
100 NAME,
101 DESCRIPTION,
102 LANGUAGE,
103 SOURCE_LANG
104 ) select
105 X_CHANGE_LINE_ID,
106 X_CREATION_DATE,
107 X_CREATED_BY,
108 X_LAST_UPDATE_DATE,
109 X_LAST_UPDATED_BY,
110 X_LAST_UPDATE_LOGIN,
111 X_NAME,
112 X_DESCRIPTION,
113 L.LANGUAGE_CODE,
114 userenv('LANG')
115 from FND_LANGUAGES L
116 where L.INSTALLED_FLAG in ('I', 'B')
117 and not exists
118 (select NULL
119 from ENG_CHANGE_LINES_TL T
120 where T.CHANGE_LINE_ID = X_CHANGE_LINE_ID
121 and T.LANGUAGE = L.LANGUAGE_CODE);
122
123 open c;
124 fetch c into X_ROWID;
125 if (c%notfound) then
126 close c;
127 raise no_data_found;
128 end if;
129 close c;
130
131 end INSERT_ROW;
132
133 procedure LOCK_ROW (
134 X_CHANGE_LINE_ID in NUMBER,
135 X_REQUEST_ID in NUMBER,
136 X_CHANGE_ID in NUMBER,
137 X_SEQUENCE_NUMBER in NUMBER,
138 X_CHANGE_TYPE_ID in NUMBER,
139 X_STATUS_CODE in VARCHAR2,
140 X_ASSIGNEE_ID in NUMBER,
141 X_NEED_BY_DATE in DATE,
142 X_ORIGINAL_SYSTEM_REFERENCE in VARCHAR2,
143 X_NAME in VARCHAR2,
144 X_DESCRIPTION in VARCHAR2,
145 X_SCHEDULED_DATE in DATE,
146 X_IMPLEMENTATION_DATE in DATE,
147 X_CANCELATION_DATE in DATE,
148 X_PROGRAM_ID IN NUMBER,
149 X_PROGRAM_APPLICATION_ID IN NUMBER,
150 X_PROGRAM_UPDATE_DATE IN DATE,
151 X_APPROVAL_STATUS_TYPE IN NUMBER,
152 X_APPROVAL_DATE IN DATE,
153 X_APPROVAL_REQUEST_DATE IN DATE,
154 X_ROUTE_ID IN NUMBER,
155 X_REQUIRED_FLAG IN VARCHAR2,
156 X_COMPLETE_BEFORE_STATUS_CODE IN NUMBER,
157 X_START_AFTER_STATUS_CODE IN NUMBER
158 ) is
159 cursor c is select
160 REQUEST_ID,
161 CHANGE_ID,
162 SEQUENCE_NUMBER,
163 CHANGE_TYPE_ID,
164 SCHEDULED_DATE,
165 IMPLEMENTATION_DATE,
166 CANCELATION_DATE,
167 STATUS_CODE,
168 ASSIGNEE_ID,
169 NEED_BY_DATE,
170 ORIGINAL_SYSTEM_REFERENCE,
171 APPROVAL_STATUS_TYPE,
172 APPROVAL_DATE,
173 APPROVAL_REQUEST_DATE,
174 ROUTE_ID,
175 REQUIRED_FLAG,
176 COMPLETE_BEFORE_STATUS_CODE,
177 START_AFTER_STATUS_CODE
178 from ENG_CHANGE_LINES
179 where CHANGE_LINE_ID = X_CHANGE_LINE_ID
180 for update of CHANGE_LINE_ID nowait;
181 recinfo c%rowtype;
182
183 cursor c1 is select
184 NAME,
185 DESCRIPTION,
186 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
187 from ENG_CHANGE_LINES_TL
188 where CHANGE_LINE_ID = X_CHANGE_LINE_ID
189 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
190 for update of CHANGE_LINE_ID nowait;
191 begin
192 open c;
193 fetch c into recinfo;
194 if (c%notfound) then
195 close c;
196 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
197 app_exception.raise_exception;
198 end if;
199 close c;
200 if ( ((recinfo.REQUEST_ID = X_REQUEST_ID)
201 OR ((recinfo.REQUEST_ID is null) AND (X_REQUEST_ID is null)))
202 AND (recinfo.CHANGE_ID= X_CHANGE_ID)
203 AND (recinfo.SEQUENCE_NUMBER = X_SEQUENCE_NUMBER)
204 AND (recinfo.CHANGE_TYPE_ID = X_CHANGE_TYPE_ID)
205 AND ((recinfo.SCHEDULED_DATE = X_SCHEDULED_DATE)
206 OR ((recinfo.SCHEDULED_DATE is null) AND (X_SCHEDULED_DATE is null)))
207 AND ((recinfo.IMPLEMENTATION_DATE = X_IMPLEMENTATION_DATE)
208 OR ((recinfo.IMPLEMENTATION_DATE is null) AND (X_IMPLEMENTATION_DATE is null)))
209 AND ((recinfo.CANCELATION_DATE = X_CANCELATION_DATE)
210 OR ((recinfo.CANCELATION_DATE is null) AND (X_CANCELATION_DATE is null)))
211 AND ((recinfo.STATUS_CODE = X_STATUS_CODE)
212 OR ((recinfo.STATUS_CODE is null) AND (X_STATUS_CODE is null)))
213 AND ((recinfo.ASSIGNEE_ID = X_ASSIGNEE_ID)
214 OR ((recinfo.ASSIGNEE_ID is null) AND (X_ASSIGNEE_ID is null)))
215 AND ((recinfo.NEED_BY_DATE= X_NEED_BY_DATE)
216 OR ((recinfo.NEED_BY_DATE is null) AND (X_NEED_BY_DATE is null)))
217 AND ((recinfo.ORIGINAL_SYSTEM_REFERENCE = X_ORIGINAL_SYSTEM_REFERENCE)
218 OR ((recinfo.ORIGINAL_SYSTEM_REFERENCE is null) AND (X_ORIGINAL_SYSTEM_REFERENCE is null)))
219 AND ((recinfo.APPROVAL_STATUS_TYPE = X_APPROVAL_STATUS_TYPE)
220 OR ((recinfo.APPROVAL_STATUS_TYPE IS NULL) AND (X_APPROVAL_STATUS_TYPE IS NULL)))
221 AND ((recinfo.APPROVAL_DATE = X_APPROVAL_DATE)
222 OR ((recinfo.APPROVAL_DATE IS NULL) AND (X_APPROVAL_DATE IS NULL)))
223 AND ((recinfo.APPROVAL_REQUEST_DATE = X_APPROVAL_REQUEST_DATE)
224 OR ((recinfo.APPROVAL_REQUEST_DATE IS NULL) AND (X_APPROVAL_REQUEST_DATE IS NULL)))
225 AND ((recinfo.ROUTE_ID = X_ROUTE_ID)
226 OR ((recinfo.ROUTE_ID IS NULL) AND (X_ROUTE_ID IS NULL)))
227 AND ((recinfo.REQUIRED_FLAG = X_REQUIRED_FLAG)
228 OR ((recinfo.REQUIRED_FLAG IS NULL) AND (X_REQUIRED_FLAG IS NULL)))
229 AND ((recinfo.COMPLETE_BEFORE_STATUS_CODE = X_COMPLETE_BEFORE_STATUS_CODE)
230 OR ((recinfo.COMPLETE_BEFORE_STATUS_CODE IS NULL) AND (X_COMPLETE_BEFORE_STATUS_CODE IS NULL)))
231 AND ((recinfo.START_AFTER_STATUS_CODE = X_START_AFTER_STATUS_CODE)
232 OR ((recinfo.START_AFTER_STATUS_CODE IS NULL) AND (X_START_AFTER_STATUS_CODE IS NULL)))
233 ) then
234 null;
235 else
236 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
237 app_exception.raise_exception;
238 end if;
239
240 for tlinfo in c1 loop
241 if (tlinfo.BASELANG = 'Y') then
242 if ( (tlinfo.NAME = X_NAME)
243 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
244 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
245 ) then
246 null;
247 else
248 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
249 app_exception.raise_exception;
250 end if;
251 end if;
252 end loop;
253 return;
254 end LOCK_ROW;
255
256 procedure UPDATE_ROW (
257 X_CHANGE_LINE_ID in NUMBER,
258 X_REQUEST_ID in NUMBER,
259 X_CHANGE_ID in NUMBER,
260 X_SEQUENCE_NUMBER in NUMBER,
261 X_CHANGE_TYPE_ID in NUMBER,
262 X_STATUS_CODE in VARCHAR2,
263 X_ASSIGNEE_ID in NUMBER,
264 X_NEED_BY_DATE in DATE,
265 X_ORIGINAL_SYSTEM_REFERENCE in VARCHAR2,
266 X_NAME in VARCHAR2,
267 X_DESCRIPTION in VARCHAR2,
268 X_SCHEDULED_DATE in DATE,
269 X_IMPLEMENTATION_DATE in DATE,
270 X_CANCELATION_DATE in DATE,
271 X_LAST_UPDATE_DATE in DATE,
272 X_LAST_UPDATED_BY in NUMBER,
273 X_LAST_UPDATE_LOGIN in NUMBER,
274 X_PROGRAM_ID IN NUMBER,
275 X_PROGRAM_APPLICATION_ID IN NUMBER,
276 X_PROGRAM_UPDATE_DATE IN DATE,
277 X_APPROVAL_STATUS_TYPE IN NUMBER,
278 X_APPROVAL_DATE IN DATE,
279 X_APPROVAL_REQUEST_DATE IN DATE,
280 X_ROUTE_ID IN NUMBER,
281 X_REQUIRED_FLAG IN VARCHAR2,
282 X_COMPLETE_BEFORE_STATUS_CODE IN NUMBER,
283 X_START_AFTER_STATUS_CODE IN NUMBER
284
285 ) is
286 begin
287 update ENG_CHANGE_LINES set
288 REQUEST_ID = X_REQUEST_ID,
289 CHANGE_ID = X_CHANGE_ID,
290 SEQUENCE_NUMBER = X_SEQUENCE_NUMBER,
291 CHANGE_TYPE_ID = X_CHANGE_TYPE_ID,
292 SCHEDULED_DATE = X_SCHEDULED_DATE,
293 IMPLEMENTATION_DATE = X_IMPLEMENTATION_DATE,
294 CANCELATION_DATE = X_CANCELATION_DATE,
295 STATUS_CODE = X_STATUS_CODE,
296 ASSIGNEE_ID = X_ASSIGNEE_ID,
297 NEED_BY_DATE = X_NEED_BY_DATE,
298 ORIGINAL_SYSTEM_REFERENCE = X_ORIGINAL_SYSTEM_REFERENCE,
299 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
300 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
301 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
302 APPROVAL_STATUS_TYPE = X_APPROVAL_STATUS_TYPE,
303 APPROVAL_DATE = X_APPROVAL_DATE,
304 APPROVAL_REQUEST_DATE = X_APPROVAL_REQUEST_DATE,
305 ROUTE_ID = X_ROUTE_ID,
306 REQUIRED_FLAG = X_REQUIRED_FLAG,
307 COMPLETE_BEFORE_STATUS_CODE = X_COMPLETE_BEFORE_STATUS_CODE,
308 START_AFTER_STATUS_CODE = X_START_AFTER_STATUS_CODE
309 where CHANGE_LINE_ID = X_CHANGE_LINE_ID;
310
311 if (sql%notfound) then
312 raise no_data_found;
313 end if;
314
315 update ENG_CHANGE_LINES_TL set
316 NAME = X_NAME,
317 DESCRIPTION = X_DESCRIPTION,
318 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
319 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
320 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
321 SOURCE_LANG = userenv('LANG')
322 where CHANGE_LINE_ID = X_CHANGE_LINE_ID
323 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
324
325 if (sql%notfound) then
326 raise no_data_found;
327 end if;
328 end UPDATE_ROW;
329
330 procedure DELETE_ROW (
331 X_CHANGE_LINE_ID in NUMBER
332 ) is
333 begin
334 delete from ENG_CHANGE_LINES_TL
335 where CHANGE_LINE_ID = X_CHANGE_LINE_ID;
336
337 if (sql%notfound) then
338 raise no_data_found;
339 end if;
340
341 delete from ENG_CHANGE_LINES
342 where CHANGE_LINE_ID = X_CHANGE_LINE_ID;
343
344 if (sql%notfound) then
345 raise no_data_found;
346 end if;
347 end DELETE_ROW;
348
349 procedure ADD_LANGUAGE
350 is
351 begin
352 delete from ENG_CHANGE_LINES_TL T
353 where not exists
354 (select NULL
355 from ENG_CHANGE_LINES B
356 where B.CHANGE_LINE_ID = T.CHANGE_LINE_ID
357 );
358
359 update ENG_CHANGE_LINES_TL T set (
360 NAME,
361 DESCRIPTION
362 ) = (select
363 B.NAME,
364 B.DESCRIPTION
365 from ENG_CHANGE_LINES_TL B
366 where B.CHANGE_LINE_ID = T.CHANGE_LINE_ID
367 and B.LANGUAGE = T.SOURCE_LANG)
368 where (
369 T.CHANGE_LINE_ID,
370 T.LANGUAGE
371 ) in (select
372 SUBT.CHANGE_LINE_ID,
373 SUBT.LANGUAGE
374 from ENG_CHANGE_LINES_TL SUBB, ENG_CHANGE_LINES_TL SUBT
375 where SUBB.CHANGE_LINE_ID = SUBT.CHANGE_LINE_ID
376 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
377 and (SUBB.NAME <> SUBT.NAME
378 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
379 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
380 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
381 ));
382
383 insert into ENG_CHANGE_LINES_TL (
384 CHANGE_LINE_ID,
385 CREATION_DATE,
386 CREATED_BY,
387 LAST_UPDATE_DATE,
388 LAST_UPDATED_BY,
389 LAST_UPDATE_LOGIN,
390 NAME,
391 DESCRIPTION,
392 LANGUAGE,
393 SOURCE_LANG
394 ) select
395 B.CHANGE_LINE_ID,
396 B.CREATION_DATE,
397 B.CREATED_BY,
398 B.LAST_UPDATE_DATE,
399 B.LAST_UPDATED_BY,
400 B.LAST_UPDATE_LOGIN,
401 B.NAME,
402 B.DESCRIPTION,
403 L.LANGUAGE_CODE,
404 B.SOURCE_LANG
405 from ENG_CHANGE_LINES_TL B, FND_LANGUAGES L
406 where L.INSTALLED_FLAG in ('I', 'B')
407 and B.LANGUAGE = userenv('LANG')
408 and not exists
409 (select NULL
410 from ENG_CHANGE_LINES_TL T
411 where T.CHANGE_LINE_ID = B.CHANGE_LINE_ID
412 and T.LANGUAGE = L.LANGUAGE_CODE);
413 end ADD_LANGUAGE;
414
415 end ENG_CHANGE_LINES_PKG;