[Home] [Help]
PACKAGE BODY: APPS.IGS_UC_OLD_OUSTAT_PKG
Source
1 PACKAGE BODY igs_uc_old_oustat_pkg AS
2 /* $Header: IGSXI43B.pls 115.3 2003/02/28 07:51:55 bayadav noship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references igs_uc_old_oustat%ROWTYPE;
6 new_references igs_uc_old_oustat%ROWTYPE;
7
8 PROCEDURE set_column_values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2,
11 x_app_no IN NUMBER,
12 x_choice_no IN NUMBER,
13 x_old_outcome_status IN VARCHAR2,
14 x_decision_date IN DATE,
15 x_decision_reason_id IN NUMBER,
16 x_decision_make_id IN NUMBER,
17 x_creation_date IN DATE,
18 x_created_by IN NUMBER,
19 x_last_update_date IN DATE,
20 x_last_updated_by IN NUMBER,
21 x_last_update_login IN NUMBER
22 ) AS
23 /*
24 || Created By : [email protected]
25 || Created On : 17-SEP-2002
26 || Purpose : Initialises the Old and New references for the columns of the table.
27 || Known limitations, enhancements or remarks :
28 || Change History :
29 || Who When What
30 || (reverse chronological order - newest change first)
31 */
32
33 CURSOR cur_old_ref_values IS
34 SELECT *
35 FROM igs_uc_old_oustat
36 WHERE rowid = x_rowid;
37
38 BEGIN
39
40 l_rowid := x_rowid;
41
42 -- Code for setting the Old and New Reference Values.
43 -- Populate Old Values.
44 OPEN cur_old_ref_values;
45 FETCH cur_old_ref_values INTO old_references;
46 IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
47 CLOSE cur_old_ref_values;
48 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
49 igs_ge_msg_stack.add;
50 app_exception.raise_exception;
51 RETURN;
52 END IF;
53 CLOSE cur_old_ref_values;
54
55 -- Populate New Values.
56 new_references.app_no := x_app_no;
57 new_references.choice_no := x_choice_no;
58 new_references.old_outcome_status := x_old_outcome_status;
59 new_references.decision_date := x_decision_date;
60 new_references.decision_reason_id := x_decision_reason_id;
61 new_references.decision_make_id := x_decision_make_id;
62
63 IF (p_action = 'UPDATE') THEN
64 new_references.creation_date := old_references.creation_date;
65 new_references.created_by := old_references.created_by;
66 ELSE
67 new_references.creation_date := x_creation_date;
68 new_references.created_by := x_created_by;
69 END IF;
70
71 new_references.last_update_date := x_last_update_date;
72 new_references.last_updated_by := x_last_updated_by;
73 new_references.last_update_login := x_last_update_login;
74
75 END set_column_values;
76
77
78 FUNCTION get_pk_for_validation (
79 x_app_no IN NUMBER,
80 x_choice_no IN NUMBER
81 ) RETURN BOOLEAN AS
82 /*
83 || Created By : [email protected]
84 || Created On : 17-SEP-2002
85 || Purpose : Validates the Primary Key of the table.
86 || Known limitations, enhancements or remarks :
87 || Change History :
88 || Who When What
89 || (reverse chronological order - newest change first)
90 */
91 CURSOR cur_rowid IS
92 SELECT rowid
93 FROM igs_uc_old_oustat
94 WHERE app_no = x_app_no
95 AND choice_no = x_choice_no ;
96
97 lv_rowid cur_rowid%RowType;
98
99 BEGIN
100
101 OPEN cur_rowid;
102 FETCH cur_rowid INTO lv_rowid;
103 IF (cur_rowid%FOUND) THEN
104 CLOSE cur_rowid;
105 RETURN(TRUE);
106 ELSE
107 CLOSE cur_rowid;
108 RETURN(FALSE);
109 END IF;
110
111 END get_pk_for_validation;
112
113
114 PROCEDURE before_dml (
115 p_action IN VARCHAR2,
116 x_rowid IN VARCHAR2,
117 x_app_no IN NUMBER,
118 x_choice_no IN NUMBER,
119 x_old_outcome_status IN VARCHAR2,
120 x_decision_date IN DATE,
121 x_decision_reason_id IN NUMBER,
122 x_decision_make_id IN NUMBER,
123 x_creation_date IN DATE,
124 x_created_by IN NUMBER,
125 x_last_update_date IN DATE,
126 x_last_updated_by IN NUMBER,
127 x_last_update_login IN NUMBER
128 ) AS
129 /*
130 || Created By : [email protected]
131 || Created On : 17-SEP-2002
132 || Purpose : Initialises the columns, Checks Constraints, Calls the
133 || Trigger Handlers for the table, before any DML operation.
134 || Known limitations, enhancements or remarks :
135 || Change History :
136 || Who When What
137 || (reverse chronological order - newest change first)
138 */
139 BEGIN
140
141 set_column_values (
142 p_action,
143 x_rowid,
144 x_app_no,
145 x_choice_no,
146 x_old_outcome_status,
147 x_decision_date,
148 x_decision_reason_id,
149 x_decision_make_id,
150 x_creation_date,
151 x_created_by,
152 x_last_update_date,
153 x_last_updated_by,
154 x_last_update_login
155 );
156
157 IF (p_action = 'INSERT') THEN
158 -- Call all the procedures related to Before Insert.
159 IF ( get_pk_for_validation(
160 new_references.app_no,
161 new_references.choice_no
162 )
163 ) THEN
164 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
165 igs_ge_msg_stack.add;
166 app_exception.raise_exception;
167 END IF;
168 ELSIF (p_action = 'VALIDATE_INSERT') THEN
169 -- Call all the procedures related to Before Insert.
170 IF ( get_pk_for_validation (
171 new_references.app_no,
172 new_references.choice_no
173 )
174 ) THEN
175 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
176 igs_ge_msg_stack.add;
177 app_exception.raise_exception;
178 END IF;
179 END IF;
180
181 END before_dml;
182
183
184 PROCEDURE insert_row (
185 x_rowid IN OUT NOCOPY VARCHAR2,
186 x_app_no IN NUMBER,
187 x_choice_no IN NUMBER,
188 x_old_outcome_status IN VARCHAR2,
189 x_decision_date IN DATE,
190 x_decision_reason_id IN NUMBER,
191 x_decision_make_id IN NUMBER,
192 x_mode IN VARCHAR2
193 ) AS
194 /*
195 || Created By : [email protected]
196 || Created On : 17-SEP-2002
197 || Purpose : Handles the INSERT DML logic for the table.
198 || Known limitations, enhancements or remarks :
199 || Change History :
200 || Who When What
201 || (reverse chronological order - newest change first)
202 */
203
204 x_last_update_date DATE;
205 x_last_updated_by NUMBER;
206 x_last_update_login NUMBER;
207
208 BEGIN
209
210 x_last_update_date := SYSDATE;
211 IF (x_mode = 'I') THEN
212 x_last_updated_by := 1;
213 x_last_update_login := 0;
214 ELSIF (x_mode = 'R') THEN
215 x_last_updated_by := fnd_global.user_id;
216 IF (x_last_updated_by IS NULL) THEN
217 x_last_updated_by := -1;
218 END IF;
219 x_last_update_login := fnd_global.login_id;
220 IF (x_last_update_login IS NULL) THEN
221 x_last_update_login := -1;
222 END IF;
223 ELSE
224 fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
225 igs_ge_msg_stack.add;
226 app_exception.raise_exception;
227 END IF;
228
229 before_dml(
230 p_action => 'INSERT',
231 x_rowid => x_rowid,
232 x_app_no => x_app_no,
233 x_choice_no => x_choice_no,
234 x_old_outcome_status => x_old_outcome_status,
235 x_decision_date => x_decision_date,
236 x_decision_reason_id => x_decision_reason_id,
237 x_decision_make_id => x_decision_make_id,
238 x_creation_date => x_last_update_date,
239 x_created_by => x_last_updated_by,
240 x_last_update_date => x_last_update_date,
241 x_last_updated_by => x_last_updated_by,
242 x_last_update_login => x_last_update_login
243 );
244
245 INSERT INTO igs_uc_old_oustat (
246 app_no,
247 choice_no,
248 old_outcome_status,
249 decision_date,
250 decision_reason_id,
251 decision_make_id,
252 creation_date,
253 created_by,
254 last_update_date,
255 last_updated_by,
256 last_update_login
257 ) VALUES (
258 new_references.app_no,
259 new_references.choice_no,
260 new_references.old_outcome_status,
261 new_references.decision_date,
262 new_references.decision_reason_id,
263 new_references.decision_make_id,
264 x_last_update_date,
265 x_last_updated_by,
266 x_last_update_date,
267 x_last_updated_by,
268 x_last_update_login
269 ) RETURNING ROWID INTO x_rowid;
270
271 END insert_row;
272
273
274 PROCEDURE lock_row (
275 x_rowid IN VARCHAR2,
276 x_app_no IN NUMBER,
277 x_choice_no IN NUMBER,
278 x_old_outcome_status IN VARCHAR2,
279 x_decision_date IN DATE,
280 x_decision_reason_id IN NUMBER,
281 x_decision_make_id IN NUMBER
282 ) AS
283 /*
284 || Created By : [email protected]
285 || Created On : 17-SEP-2002
286 || Purpose : Handles the LOCK mechanism for the table.
287 || Known limitations, enhancements or remarks :
288 || Change History :
289 || Who When What
290 || (reverse chronological order - newest change first)
291 */
292 CURSOR c1 IS
293 SELECT
294 old_outcome_status,
295 decision_date,
296 decision_reason_id,
297 decision_make_id
298 FROM igs_uc_old_oustat
299 WHERE rowid = x_rowid
300 FOR UPDATE NOWAIT;
301
302 tlinfo c1%ROWTYPE;
303
304 BEGIN
305
306 OPEN c1;
307 FETCH c1 INTO tlinfo;
308 IF (c1%notfound) THEN
309 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
310 igs_ge_msg_stack.add;
311 CLOSE c1;
312 app_exception.raise_exception;
313 RETURN;
314 END IF;
315 CLOSE c1;
316
317 IF (
318 (tlinfo.old_outcome_status = x_old_outcome_status)
319 AND ((TRUNC(tlinfo.decision_date) = TRUNC(x_decision_date)) OR ((tlinfo.decision_date IS NULL) AND (X_decision_date IS NULL)))
320 AND ((tlinfo.decision_reason_id = x_decision_reason_id) OR ((tlinfo.decision_reason_id IS NULL) AND (X_decision_reason_id IS NULL)))
321 AND ((tlinfo.decision_make_id = x_decision_make_id) OR ((tlinfo.decision_make_id IS NULL) AND (X_decision_make_id IS NULL)))
322 ) THEN
323 NULL;
324 ELSE
325 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
326 igs_ge_msg_stack.add;
327 app_exception.raise_exception;
328 END IF;
329
330 RETURN;
331
332 END lock_row;
333
334
335 PROCEDURE update_row (
336 x_rowid IN VARCHAR2,
337 x_app_no IN NUMBER,
338 x_choice_no IN NUMBER,
339 x_old_outcome_status IN VARCHAR2,
340 x_decision_date IN DATE,
341 x_decision_reason_id IN NUMBER,
342 x_decision_make_id IN NUMBER,
343 x_mode IN VARCHAR2
344 ) AS
345 /*
346 || Created By : [email protected]
347 || Created On : 17-SEP-2002
348 || Purpose : Handles the UPDATE DML logic for the table.
349 || Known limitations, enhancements or remarks :
350 || Change History :
351 || Who When What
352 || (reverse chronological order - newest change first)
353 */
354 x_last_update_date DATE ;
355 x_last_updated_by NUMBER;
356 x_last_update_login NUMBER;
357
358 BEGIN
359
360 x_last_update_date := SYSDATE;
361 IF (X_MODE = 'I') THEN
362 x_last_updated_by := 1;
363 x_last_update_login := 0;
364 ELSIF (x_mode = 'R') THEN
365 x_last_updated_by := fnd_global.user_id;
366 IF x_last_updated_by IS NULL THEN
367 x_last_updated_by := -1;
368 END IF;
369 x_last_update_login := fnd_global.login_id;
370 IF (x_last_update_login IS NULL) THEN
371 x_last_update_login := -1;
372 END IF;
373 ELSE
374 fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
375 igs_ge_msg_stack.add;
376 app_exception.raise_exception;
377 END IF;
378
379 before_dml(
380 p_action => 'UPDATE',
381 x_rowid => x_rowid,
382 x_app_no => x_app_no,
383 x_choice_no => x_choice_no,
384 x_old_outcome_status => x_old_outcome_status,
385 x_decision_date => x_decision_date,
386 x_decision_reason_id => x_decision_reason_id,
387 x_decision_make_id => x_decision_make_id,
388 x_creation_date => x_last_update_date,
389 x_created_by => x_last_updated_by,
390 x_last_update_date => x_last_update_date,
391 x_last_updated_by => x_last_updated_by,
392 x_last_update_login => x_last_update_login
393 );
394
395 UPDATE igs_uc_old_oustat
396 SET
397 old_outcome_status = new_references.old_outcome_status,
398 decision_date = new_references.decision_date,
399 decision_reason_id = new_references.decision_reason_id,
400 decision_make_id = new_references.decision_make_id,
401 last_update_date = x_last_update_date,
402 last_updated_by = x_last_updated_by,
403 last_update_login = x_last_update_login
404 WHERE rowid = x_rowid;
405
406 IF (SQL%NOTFOUND) THEN
407 RAISE NO_DATA_FOUND;
408 END IF;
409
410 END update_row;
411
412
413 PROCEDURE add_row (
414 x_rowid IN OUT NOCOPY VARCHAR2,
415 x_app_no IN NUMBER,
416 x_choice_no IN NUMBER,
417 x_old_outcome_status IN VARCHAR2,
418 x_decision_date IN DATE,
419 x_decision_reason_id IN NUMBER,
420 x_decision_make_id IN NUMBER,
421 x_mode IN VARCHAR2
422 ) AS
423 /*
424 || Created By : [email protected]
425 || Created On : 17-SEP-2002
426 || Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
427 || Known limitations, enhancements or remarks :
428 || Change History :
429 || Who When What
430 || (reverse chronological order - newest change first)
431 */
432 CURSOR c1 IS
433 SELECT rowid
434 FROM igs_uc_old_oustat
435 WHERE app_no = x_app_no
436 AND choice_no = x_choice_no;
437
438 BEGIN
439
440 OPEN c1;
441 FETCH c1 INTO x_rowid;
442 IF (c1%NOTFOUND) THEN
443 CLOSE c1;
444
445 insert_row (
446 x_rowid,
447 x_app_no,
448 x_choice_no,
449 x_old_outcome_status,
450 x_decision_date,
451 x_decision_reason_id,
452 x_decision_make_id,
453 x_mode
454 );
455 RETURN;
456 END IF;
457 CLOSE c1;
458
459 update_row (
460 x_rowid,
461 x_app_no,
462 x_choice_no,
463 x_old_outcome_status,
464 x_decision_date,
465 x_decision_reason_id,
466 x_decision_make_id,
467 x_mode
468 );
469
470 END add_row;
471
472
473 PROCEDURE delete_row (
474 x_rowid IN VARCHAR2
475 ) AS
476 /*
477 || Created By : [email protected]
478 || Created On : 17-SEP-2002
479 || Purpose : Handles the DELETE DML logic for the table.
480 || Known limitations, enhancements or remarks :
481 || Change History :
482 || Who When What
483 || (reverse chronological order - newest change first)
484 */
485 BEGIN
486
487 before_dml (
488 p_action => 'DELETE',
489 x_rowid => x_rowid
490 );
491
492 DELETE FROM igs_uc_old_oustat
493 WHERE rowid = x_rowid;
494
495 IF (SQL%NOTFOUND) THEN
496 RAISE NO_DATA_FOUND;
497 END IF;
498
499 END delete_row;
500
501
502 END igs_uc_old_oustat_pkg;