[Home] [Help]
PACKAGE BODY: APPS.IGS_PS_FLD_STDY_HIST_PKG
Source
1 package body IGS_PS_FLD_STDY_HIST_PKG as
2 /* $Header: IGSPI55B.pls 120.1 2006/07/25 15:06:56 sommukhe noship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_PS_FLD_STDY_HIST_ALL%RowType;
6 new_references IGS_PS_FLD_STDY_HIST_ALL%RowType;
7
8 PROCEDURE Set_Column_Values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_hist_who IN NUMBER DEFAULT NULL,
12 x_description IN VARCHAR2 DEFAULT NULL,
13 x_govt_field_of_study IN VARCHAR2 DEFAULT NULL,
14 x_closed_ind IN VARCHAR2 DEFAULT NULL,
15 x_field_of_study IN VARCHAR2 DEFAULT NULL,
16 x_hist_start_dt IN DATE DEFAULT NULL,
17 x_hist_end_dt IN DATE DEFAULT NULL,
18 x_creation_date IN DATE DEFAULT NULL,
19 x_created_by IN NUMBER DEFAULT NULL,
20 x_last_update_date IN DATE DEFAULT NULL,
21 x_last_updated_by IN NUMBER DEFAULT NULL,
22 x_last_update_login IN NUMBER DEFAULT NULL,
23 x_org_id IN NUMBER DEFAULT NULL,
24 x_fos_type_code IN VARCHAR2 DEFAULT NULL
25 ) AS
26
27 CURSOR cur_old_ref_values IS
28 SELECT *
29 FROM IGS_PS_FLD_STDY_HIST_ALL
30 WHERE rowid = x_rowid;
31
32 BEGIN
33
34 l_rowid := x_rowid;
35
36 -- Code for setting the Old and New Reference Values.
37 -- Populate Old Values.
38 Open cur_old_ref_values;
39 Fetch cur_old_ref_values INTO old_references;
40 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
41 Close cur_old_ref_values;
42 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
43 IGS_GE_MSG_STACK.ADD;
44 App_Exception.Raise_Exception;
45 Return;
46 END IF;
47 Close cur_old_ref_values;
48
49 -- Populate New Values.
50 new_references.hist_who := x_hist_who;
51 new_references.description := x_description;
52 new_references.govt_field_of_study := x_govt_field_of_study;
53 new_references.closed_ind := x_closed_ind;
54 new_references.field_of_study := x_field_of_study;
55 new_references.hist_start_dt := x_hist_start_dt;
56 new_references.hist_end_dt := x_hist_end_dt;
57 IF (p_action = 'UPDATE') THEN
58 new_references.creation_date := old_references.creation_date;
59 new_references.created_by := old_references.created_by;
60 ELSE
61 new_references.creation_date := x_creation_date;
62 new_references.created_by := x_created_by;
63 END IF;
64 new_references.last_update_date := x_last_update_date;
65 new_references.last_updated_by := x_last_updated_by;
66 new_references.last_update_login := x_last_update_login;
67 new_references.org_id := x_org_id;
68 new_references.fos_type_code := x_fos_type_code;
69
70 END Set_Column_Values;
71
72 PROCEDURE Check_Constraints (
73 Column_Name IN VARCHAR2 DEFAULT NULL,
74 Column_Value IN VARCHAR2 DEFAULT NULL
75 )
76 AS
77 BEGIN
78 IF column_name is null then
79 NULL;
80 ELSIF upper(Column_name) = 'CLOSED_IND' then
81 new_references.closed_ind := column_value;
82 ELSIF upper(Column_name) = 'FIELD_OF_STUDY' then
83 new_references.field_of_study := column_value;
84 ELSIF upper(Column_name) = 'GOVT_FIELD_OF_STUDY' then
85 new_references.govt_field_of_study := column_value;
86 END IF;
87
88 IF upper(column_name) = 'CLOSED_IND' OR
89 column_name is null Then
90 IF new_references.closed_ind NOT IN ('Y','N') THEN
91 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
92 IGS_GE_MSG_STACK.ADD;
93 App_Exception.Raise_Exception;
94 END IF;
95 END IF;
96
97 IF upper(column_name) = 'FIELD_OF_STUDY' OR
98 column_name is null Then
99 IF new_references.field_of_study <> UPPER(new_references.field_of_study) Then
100 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
101 IGS_GE_MSG_STACK.ADD;
102 App_Exception.Raise_Exception;
103 END IF;
104 END IF;
105
106 IF upper(column_name) = 'GOVT_FIELD_OF_STUDY' OR
107 column_name is null Then
108 IF new_references.govt_field_of_study <> UPPER(new_references.govt_field_of_study) Then
109 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
110 IGS_GE_MSG_STACK.ADD;
111 App_Exception.Raise_Exception;
112 END IF;
113 END IF;
114 END check_constraints;
115
116 FUNCTION Get_PK_For_Validation (
117 x_field_of_study IN VARCHAR2,
118 x_hist_start_dt IN DATE
119 ) RETURN BOOLEAN AS
120
121 CURSOR cur_rowid IS
122 SELECT rowid
123 FROM IGS_PS_FLD_STDY_HIST_ALL
124 WHERE field_of_study = x_field_of_study
125 AND hist_start_dt = x_hist_start_dt
126 FOR UPDATE NOWAIT;
127
128 lv_rowid cur_rowid%RowType;
129
130 BEGIN
131
132 Open cur_rowid;
133 Fetch cur_rowid INTO lv_rowid;
134 IF (cur_rowid%FOUND) THEN
135 Close cur_rowid;
136 Return (TRUE);
137 ELSE
138 Close cur_rowid;
139 Return (FALSE);
140 END IF;
141 END Get_PK_For_Validation;
142
143 PROCEDURE Before_DML (
144 p_action IN VARCHAR2,
145 x_rowid IN VARCHAR2 DEFAULT NULL,
146 x_hist_who IN NUMBER DEFAULT NULL,
147 x_description IN VARCHAR2 DEFAULT NULL,
148 x_govt_field_of_study IN VARCHAR2 DEFAULT NULL,
149 x_closed_ind IN VARCHAR2 DEFAULT NULL,
150 x_field_of_study IN VARCHAR2 DEFAULT NULL,
151 x_hist_start_dt IN DATE DEFAULT NULL,
152 x_hist_end_dt IN DATE DEFAULT NULL,
153 x_creation_date IN DATE DEFAULT NULL,
154 x_created_by IN NUMBER DEFAULT NULL,
155 x_last_update_date IN DATE DEFAULT NULL,
156 x_last_updated_by IN NUMBER DEFAULT NULL,
157 x_last_update_login IN NUMBER DEFAULT NULL,
158 x_org_id IN NUMBER DEFAULT NULL,
159 x_fos_type_code IN VARCHAR2 DEFAULT NULL
160 ) AS
161 BEGIN
162
163 Set_Column_Values (
164 p_action,
165 x_rowid,
166 x_hist_who,
167 x_description,
168 x_govt_field_of_study,
169 x_closed_ind,
170 x_field_of_study,
171 x_hist_start_dt,
172 x_hist_end_dt,
173 x_creation_date,
174 x_created_by,
175 x_last_update_date,
176 x_last_updated_by,
177 x_last_update_login,
178 x_org_id,
179 x_fos_type_code
180 );
181 IF (p_action = 'INSERT') THEN
182 -- Call all the procedures related to Before Insert.
183 IF Get_PK_For_Validation (
184 new_references.field_of_study,
185 new_references.hist_start_dt
186 ) THEN
187 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
188 IGS_GE_MSG_STACK.ADD;
189 App_Exception.Raise_Exception;
190 END IF;
191 Check_Constraints;
192 ELSIF (p_action = 'UPDATE') THEN
193 -- Call all the procedures related to Before Update.
194 Check_Constraints;
195
196 ELSIF (p_action = 'VALIDATE_INSERT') THEN
197 IF Get_PK_For_Validation (
198 new_references.field_of_study,
199 new_references.hist_start_dt
200 ) THEN
201 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
202 IGS_GE_MSG_STACK.ADD;
203 App_Exception.Raise_Exception;
204 END IF;
205 Check_Constraints;
206 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
207 Check_Constraints;
208
209 END IF;
210 END Before_DML;
211
212 PROCEDURE After_DML (
213 p_action IN VARCHAR2,
214 x_rowid IN VARCHAR2
215 ) AS
216 BEGIN
217
218 l_rowid := x_rowid;
219
220
221 END After_DML;
222
223 procedure INSERT_ROW (
224 X_ROWID in out NOCOPY VARCHAR2,
225 X_FIELD_OF_STUDY in VARCHAR2,
226 X_HIST_START_DT in DATE,
227 X_HIST_END_DT in DATE,
228 X_HIST_WHO in NUMBER,
229 X_DESCRIPTION in VARCHAR2,
230 X_GOVT_FIELD_OF_STUDY in VARCHAR2,
231 X_CLOSED_IND in VARCHAR2,
232 X_MODE in VARCHAR2 default 'R',
233 X_ORG_ID in NUMBER,
234 X_FOS_TYPE_CODE VARCHAR2
235 ) as
236 cursor C is select ROWID from IGS_PS_FLD_STDY_HIST_ALL
237 where FIELD_OF_STUDY = X_FIELD_OF_STUDY
238 and HIST_START_DT = X_HIST_START_DT;
239 X_LAST_UPDATE_DATE DATE;
240 X_LAST_UPDATED_BY NUMBER;
241 X_LAST_UPDATE_LOGIN NUMBER;
242 begin
243 X_LAST_UPDATE_DATE := SYSDATE;
244 if(X_MODE = 'I') then
245 X_LAST_UPDATED_BY := 1;
246 X_LAST_UPDATE_LOGIN := 0;
247 elsif (X_MODE = 'R') then
248 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
249 if X_LAST_UPDATED_BY is NULL then
250 X_LAST_UPDATED_BY := -1;
251 end if;
252 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
253 if X_LAST_UPDATE_LOGIN is NULL then
254 X_LAST_UPDATE_LOGIN := -1;
255 end if;
256 else
257 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
258 IGS_GE_MSG_STACK.ADD;
259 app_exception.raise_exception;
260 end if;
261
262 Before_DML( p_action => 'INSERT',
263 x_rowid => X_ROWID,
264 x_hist_who => X_HIST_WHO,
265 x_description => X_DESCRIPTION,
266 x_govt_field_of_study => X_GOVT_FIELD_OF_STUDY,
267 x_closed_ind => X_CLOSED_IND,
268 x_field_of_study => X_FIELD_OF_STUDY,
269 x_hist_start_dt => X_HIST_START_DT,
270 x_hist_end_dt => X_HIST_END_DT,
271 x_creation_date => X_LAST_UPDATE_DATE,
272 x_created_by => X_LAST_UPDATED_BY,
273 x_last_update_date => X_LAST_UPDATE_DATE,
274 x_last_updated_by => X_LAST_UPDATED_BY,
275 x_last_update_login => X_LAST_UPDATE_LOGIN,
276 x_org_id => igs_ge_gen_003.get_org_id,
277 x_fos_type_code => X_FOS_TYPE_CODE
278 );
279
280 insert into IGS_PS_FLD_STDY_HIST_ALL (
281 FIELD_OF_STUDY,
282 HIST_START_DT,
283 HIST_END_DT,
284 HIST_WHO,
285 DESCRIPTION,
286 GOVT_FIELD_OF_STUDY,
287 CLOSED_IND,
288 CREATION_DATE,
289 CREATED_BY,
290 LAST_UPDATE_DATE,
291 LAST_UPDATED_BY,
292 LAST_UPDATE_LOGIN,
293 ORG_ID,
294 FOS_TYPE_CODE
295 ) values (
296 NEW_REFERENCES.FIELD_OF_STUDY,
297 NEW_REFERENCES.HIST_START_DT,
298 NEW_REFERENCES.HIST_END_DT,
299 NEW_REFERENCES.HIST_WHO,
300 NEW_REFERENCES.DESCRIPTION,
301 NEW_REFERENCES.GOVT_FIELD_OF_STUDY,
302 NEW_REFERENCES.CLOSED_IND,
303 X_LAST_UPDATE_DATE,
304 X_LAST_UPDATED_BY,
305 X_LAST_UPDATE_DATE,
306 X_LAST_UPDATED_BY,
307 X_LAST_UPDATE_LOGIN,
308 NEW_REFERENCES.ORG_ID,
309 NEW_REFERENCES.FOS_TYPE_CODE
310 );
311
312 open c;
313 fetch c into X_ROWID;
314 if (c%notfound) then
315 close c;
316 raise no_data_found;
317 end if;
318 close c;
319 After_DML(
320 p_action => 'INSERT',
321 x_rowid => X_ROWID
322 );
323 end INSERT_ROW;
324
325 procedure LOCK_ROW (
326 X_ROWID in VARCHAR2,
327 X_FIELD_OF_STUDY in VARCHAR2,
328 X_HIST_START_DT in DATE,
329 X_HIST_END_DT in DATE,
330 X_HIST_WHO in NUMBER,
331 X_DESCRIPTION in VARCHAR2,
332 X_GOVT_FIELD_OF_STUDY in VARCHAR2,
333 X_CLOSED_IND in VARCHAR2,
334 X_FOS_TYPE_CODE VARCHAR2
335
336 ) as
337 cursor c1 is select
338 HIST_END_DT,
339 HIST_WHO,
340 DESCRIPTION,
341 GOVT_FIELD_OF_STUDY,
342 CLOSED_IND
343
344 from IGS_PS_FLD_STDY_HIST_ALL
345 where ROWID = X_ROWID for update nowait;
346 tlinfo c1%rowtype;
347
348 begin
349 open c1;
350 fetch c1 into tlinfo;
351 if (c1%notfound) then
352 close c1;
353 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
354 IGS_GE_MSG_STACK.ADD;
355 app_exception.raise_exception;
356 return;
357 end if;
358 close c1;
359
360 if ( (tlinfo.HIST_END_DT = X_HIST_END_DT)
361 AND (tlinfo.HIST_WHO = X_HIST_WHO)
362 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
363 OR ((tlinfo.DESCRIPTION is null)
364 AND (X_DESCRIPTION is null)))
365 AND ((tlinfo.GOVT_FIELD_OF_STUDY = X_GOVT_FIELD_OF_STUDY)
366 OR ((tlinfo.GOVT_FIELD_OF_STUDY is null)
367 AND (X_GOVT_FIELD_OF_STUDY is null)))
368 AND ((tlinfo.CLOSED_IND = X_CLOSED_IND)
369 OR ((tlinfo.CLOSED_IND is null)
370 AND (X_CLOSED_IND is null)))
371
372 ) then
373 null;
374 else
375 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
376 IGS_GE_MSG_STACK.ADD;
377 app_exception.raise_exception;
378 end if;
379 return;
380 end LOCK_ROW;
381
382 procedure UPDATE_ROW (
383 X_ROWID in VARCHAR2,
384 X_FIELD_OF_STUDY in VARCHAR2,
385 X_HIST_START_DT in DATE,
386 X_HIST_END_DT in DATE,
387 X_HIST_WHO in NUMBER,
388 X_DESCRIPTION in VARCHAR2,
389 X_GOVT_FIELD_OF_STUDY in VARCHAR2,
390 X_CLOSED_IND in VARCHAR2,
391 X_FOS_TYPE_CODE in VARCHAR2,
392 X_MODE in VARCHAR2 default 'R'
393
394 ) as
395 X_LAST_UPDATE_DATE DATE;
396 X_LAST_UPDATED_BY NUMBER;
397 X_LAST_UPDATE_LOGIN NUMBER;
398 begin
399 X_LAST_UPDATE_DATE := SYSDATE;
400 if(X_MODE = 'I') then
401 X_LAST_UPDATED_BY := 1;
402 X_LAST_UPDATE_LOGIN := 0;
403 elsif (X_MODE = 'R') then
404 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
405 if X_LAST_UPDATED_BY is NULL then
406 X_LAST_UPDATED_BY := -1;
407 end if;
408 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
409 if X_LAST_UPDATE_LOGIN is NULL then
410 X_LAST_UPDATE_LOGIN := -1;
411 end if;
412 else
413 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
414 IGS_GE_MSG_STACK.ADD;
415 app_exception.raise_exception;
416 end if;
417
418 Before_DML( p_action => 'UPDATE',
419 x_rowid => X_ROWID,
420 x_hist_who => X_HIST_WHO,
421 x_description => X_DESCRIPTION,
422 x_govt_field_of_study => X_GOVT_FIELD_OF_STUDY,
423 x_closed_ind => X_CLOSED_IND,
424 x_field_of_study => X_FIELD_OF_STUDY,
425 x_hist_start_dt => X_HIST_START_DT,
426 x_hist_end_dt => X_HIST_END_DT,
427 x_creation_date => X_LAST_UPDATE_DATE,
428 x_created_by => X_LAST_UPDATED_BY,
429 x_last_update_date => X_LAST_UPDATE_DATE,
430 x_last_updated_by => X_LAST_UPDATED_BY,
431 x_last_update_login => X_LAST_UPDATE_LOGIN,
432 x_fos_type_code => X_FOS_TYPE_CODE
433 );
434 update IGS_PS_FLD_STDY_HIST_ALL set
435 HIST_END_DT = NEW_REFERENCES.HIST_END_DT,
436 HIST_WHO = NEW_REFERENCES.HIST_WHO,
437 DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
438 GOVT_FIELD_OF_STUDY = NEW_REFERENCES.GOVT_FIELD_OF_STUDY,
439 CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
440 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
441 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
442 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
443 FOS_TYPE_CODE = NEW_REFERENCES.FOS_TYPE_CODE
444
445 where ROWID = X_ROWID
446 ;
447 if (sql%notfound) then
448 raise no_data_found;
449 end if;
450 After_DML(
451 p_action => 'UPDATE',
452 x_rowid => X_ROWID
453 );
454 end UPDATE_ROW;
455
456 procedure ADD_ROW (
457 X_ROWID in out NOCOPY VARCHAR2,
458 X_FIELD_OF_STUDY in VARCHAR2,
459 X_HIST_START_DT in DATE,
460 X_HIST_END_DT in DATE,
461 X_HIST_WHO in NUMBER,
462 X_DESCRIPTION in VARCHAR2,
463 X_GOVT_FIELD_OF_STUDY in VARCHAR2,
464 X_CLOSED_IND in VARCHAR2,
465 X_MODE in VARCHAR2 default 'R',
466 X_ORG_ID in NUMBER,
467 X_FOS_TYPE_CODE in VARCHAR2
468 ) as
469 cursor c1 is select rowid from IGS_PS_FLD_STDY_HIST_ALL
470 where FIELD_OF_STUDY = X_FIELD_OF_STUDY
471 and HIST_START_DT = X_HIST_START_DT
472 ;
473 begin
474 open c1;
475 fetch c1 into X_ROWID;
476 if (c1%notfound) then
477 close c1;
478 INSERT_ROW (
479 X_ROWID,
480 X_FIELD_OF_STUDY,
481 X_HIST_START_DT,
482 X_HIST_END_DT,
483 X_HIST_WHO,
484 X_DESCRIPTION,
485 X_GOVT_FIELD_OF_STUDY,
486 X_CLOSED_IND,
487 X_MODE,
488 X_ORG_ID,
489 X_FOS_TYPE_CODE);
490 return;
491 end if;
492 close c1;
493 UPDATE_ROW (
494 X_ROWID,
495 X_FIELD_OF_STUDY,
496 X_HIST_START_DT,
497 X_HIST_END_DT,
498 X_HIST_WHO,
499 X_DESCRIPTION,
500 X_GOVT_FIELD_OF_STUDY,
501 X_CLOSED_IND,
502 X_FOS_TYPE_CODE,
503 X_MODE
504 );
505 end ADD_ROW;
506
507 procedure DELETE_ROW (
508 X_ROWID in VARCHAR2
509 ) as
510 begin
511 Before_DML( p_action => 'DELETE',
512 x_rowid => X_ROWID
513 );
514 delete from IGS_PS_FLD_STDY_HIST_ALL
515 where ROWID = X_ROWID;
516 if (sql%notfound) then
517 raise no_data_found;
518 end if;
519 After_DML(
520 p_action => 'DELETE',
521 x_rowid => X_ROWID
522 );
523 end DELETE_ROW;
524
525 end IGS_PS_FLD_STDY_HIST_PKG;