[Home] [Help]
PACKAGE BODY: APPS.IGF_SL_DL_CHG_FLD_PKG
Source
1 PACKAGE BODY igf_sl_dl_chg_fld_pkg AS
2 /* $Header: IGFLI16B.pls 115.5 2002/11/28 14:25:04 nsidana ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references igf_sl_dl_chg_fld%ROWTYPE;
6 new_references igf_sl_dl_chg_fld%ROWTYPE;
7
8 PROCEDURE set_column_values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_dchg_id IN NUMBER DEFAULT NULL,
12 x_dl_version IN VARCHAR2 DEFAULT NULL,
13 x_chg_code IN VARCHAR2 DEFAULT NULL,
14 x_loan_catg IN VARCHAR2 DEFAULT NULL,
15 x_fld_name IN VARCHAR2 DEFAULT NULL,
16 x_fld_length IN NUMBER DEFAULT NULL,
17 x_creation_date IN DATE DEFAULT NULL,
18 x_created_by IN NUMBER DEFAULT NULL,
19 x_last_update_date IN DATE DEFAULT NULL,
20 x_last_updated_by IN NUMBER DEFAULT NULL,
21 x_last_update_login IN NUMBER DEFAULT NULL
22 ) AS
23 /*
24 || Created By : venagara
25 || Created On : 05-DEC-2000
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 IGF_SL_DL_CHG_FLD
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.dchg_id := x_dchg_id;
57 new_references.dl_version := x_dl_version;
58 new_references.chg_code := x_chg_code;
59 new_references.loan_catg := x_loan_catg;
60 new_references.fld_name := x_fld_name;
61 new_references.fld_length := x_fld_length;
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 PROCEDURE check_uniqueness AS
79 /*
80 || Created By : venagara
81 || Created On : 05-DEC-2000
82 || Purpose : Handles the Unique Constraint logic defined for the columns.
83 || Known limitations, enhancements or remarks :
84 || Change History :
85 || Who When What
86 || (reverse chronological order - newest change first)
87 */
88 BEGIN
89
90 IF ( get_uk_for_validation (
91 new_references.dl_version,
92 new_references.loan_catg,
93 new_references.fld_name
94 )
95 ) THEN
96 fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
97 igs_ge_msg_stack.add;
98 app_exception.raise_exception;
99 END IF;
100
101 IF ( get_uk2_for_validation (
102 new_references.dl_version,
103 new_references.loan_catg,
104 new_references.chg_code
105 )
106 ) THEN
107 fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
108 igs_ge_msg_stack.add;
109 app_exception.raise_exception;
110 END IF;
111
112 END check_uniqueness;
113
114
115 FUNCTION get_pk_for_validation (
116 x_dchg_id IN NUMBER
117 ) RETURN BOOLEAN AS
118 /*
119 || Created By : venagara
120 || Created On : 05-DEC-2000
121 || Purpose : Validates the Primary Key of the table.
122 || Known limitations, enhancements or remarks :
123 || Change History :
124 || Who When What
125 || (reverse chronological order - newest change first)
126 */
127 CURSOR cur_rowid IS
128 SELECT rowid
129 FROM igf_sl_dl_chg_fld
130 WHERE dchg_id = x_dchg_id
131 FOR UPDATE NOWAIT;
132
133 lv_rowid cur_rowid%RowType;
134
135 BEGIN
136
137 OPEN cur_rowid;
138 FETCH cur_rowid INTO lv_rowid;
139 IF (cur_rowid%FOUND) THEN
140 CLOSE cur_rowid;
141 RETURN(TRUE);
142 ELSE
143 CLOSE cur_rowid;
144 RETURN(FALSE);
145 END IF;
146
147 END get_pk_for_validation;
148
149
150 FUNCTION get_uk_for_validation (
151 x_dl_version IN VARCHAR2,
152 x_loan_catg IN VARCHAR2,
153 x_fld_name IN VARCHAR2
154 ) RETURN BOOLEAN AS
155 /*
156 || Created By : venagara
157 || Created On : 05-DEC-2000
158 || Purpose : Validates the Unique Keys of the table.
159 || Known limitations, enhancements or remarks :
160 || Change History :
161 || Who When What
162 || (reverse chronological order - newest change first)
163 */
164 CURSOR cur_rowid IS
165 SELECT rowid
166 FROM igf_sl_dl_chg_fld
167 WHERE dl_version = x_dl_version
168 AND loan_catg = x_loan_catg
169 AND fld_name = x_fld_name
170 AND ((l_rowid IS NULL) OR (rowid <> l_rowid));
171
172 lv_rowid cur_rowid%RowType;
173
174 BEGIN
175
176 OPEN cur_rowid;
177 FETCH cur_rowid INTO lv_rowid;
178 IF (cur_rowid%FOUND) THEN
179 CLOSE cur_rowid;
180 RETURN (true);
181 ELSE
182 CLOSE cur_rowid;
183 RETURN(FALSE);
184 END IF;
185
186 END get_uk_for_validation ;
187
188
189 FUNCTION get_uk2_for_validation (
190 x_dl_version IN VARCHAR2,
191 x_loan_catg IN VARCHAR2,
192 x_chg_code IN VARCHAR2
193 ) RETURN BOOLEAN AS
194 /*
195 || Created By : venagara
196 || Created On : 05-DEC-2000
197 || Purpose : Validates the Unique Keys of the table.
198 || Known limitations, enhancements or remarks :
199 || Change History :
200 || Who When What
201 || (reverse chronological order - newest change first)
202 */
203 CURSOR cur_rowid IS
204 SELECT rowid
205 FROM igf_sl_dl_chg_fld
206 WHERE dl_version = x_dl_version
207 AND loan_catg = x_loan_catg
208 AND chg_code = x_chg_code
209 AND ((l_rowid IS NULL) OR (rowid <> l_rowid));
210
211 lv_rowid cur_rowid%RowType;
212
213 BEGIN
214
215 OPEN cur_rowid;
216 FETCH cur_rowid INTO lv_rowid;
217 IF (cur_rowid%FOUND) THEN
218 CLOSE cur_rowid;
219 RETURN (true);
220 ELSE
221 CLOSE cur_rowid;
222 RETURN(FALSE);
223 END IF;
224
225 END get_uk2_for_validation ;
226
227
228 PROCEDURE before_dml (
229 p_action IN VARCHAR2,
230 x_rowid IN VARCHAR2 DEFAULT NULL,
231 x_dchg_id IN NUMBER DEFAULT NULL,
232 x_dl_version IN VARCHAR2 DEFAULT NULL,
233 x_chg_code IN VARCHAR2 DEFAULT NULL,
234 x_loan_catg IN VARCHAR2 DEFAULT NULL,
235 x_fld_name IN VARCHAR2 DEFAULT NULL,
236 x_fld_length IN NUMBER DEFAULT NULL,
237 x_creation_date IN DATE DEFAULT NULL,
238 x_created_by IN NUMBER DEFAULT NULL,
239 x_last_update_date IN DATE DEFAULT NULL,
240 x_last_updated_by IN NUMBER DEFAULT NULL,
241 x_last_update_login IN NUMBER DEFAULT NULL
242 ) AS
243 /*
244 || Created By : venagara
245 || Created On : 05-DEC-2000
246 || Purpose : Initialises the columns, Checks Constraints, Calls the
247 || Trigger Handlers for the table, before any DML operation.
248 || Known limitations, enhancements or remarks :
249 || Change History :
250 || Who When What
251 || (reverse chronological order - newest change first)
252 */
253 BEGIN
254
255 set_column_values (
256 p_action,
257 x_rowid,
258 x_dchg_id,
259 x_dl_version,
260 x_chg_code,
261 x_loan_catg,
262 x_fld_name,
263 x_fld_length,
264 x_creation_date,
265 x_created_by,
266 x_last_update_date,
267 x_last_updated_by,
268 x_last_update_login
269 );
270
271 IF (p_action = 'INSERT') THEN
272 -- Call all the procedures related to Before Insert.
273 IF ( get_pk_for_validation(
274 new_references.dchg_id
275 )
276 ) THEN
277 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
278 igs_ge_msg_stack.add;
279 app_exception.raise_exception;
280 END IF;
281 check_uniqueness;
282 ELSIF (p_action = 'UPDATE') THEN
283 -- Call all the procedures related to Before Update.
284 check_uniqueness;
285 ELSIF (p_action = 'VALIDATE_INSERT') THEN
286 -- Call all the procedures related to Before Insert.
287 IF ( get_pk_for_validation (
288 new_references.dchg_id
289 )
290 ) THEN
291 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
292 igs_ge_msg_stack.add;
293 app_exception.raise_exception;
294 END IF;
295 check_uniqueness;
296 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
297 check_uniqueness;
298 END IF;
299
300 END before_dml;
301
302
303 PROCEDURE insert_row (
304 x_rowid IN OUT NOCOPY VARCHAR2,
305 x_dchg_id IN OUT NOCOPY NUMBER,
306 x_dl_version IN VARCHAR2,
307 x_chg_code IN VARCHAR2,
308 x_loan_catg IN VARCHAR2,
309 x_fld_name IN VARCHAR2,
310 x_fld_length IN NUMBER,
311 x_mode IN VARCHAR2 DEFAULT 'R'
312 ) AS
313 /*
314 || Created By : venagara
315 || Created On : 05-DEC-2000
316 || Purpose : Handles the INSERT DML logic for the table.
317 || Known limitations, enhancements or remarks :
318 || Change History :
319 || Who When What
320 || (reverse chronological order - newest change first)
321 */
322 CURSOR c IS
323 SELECT rowid
324 FROM igf_sl_dl_chg_fld
325 WHERE dchg_id = x_dchg_id;
326
327 x_last_update_date DATE;
328 x_last_updated_by NUMBER;
329 x_last_update_login NUMBER;
330
331 BEGIN
332
333 x_last_update_date := SYSDATE;
334 IF (x_mode = 'I') THEN
335 x_last_updated_by := 1;
336 x_last_update_login := 0;
337 ELSIF (x_mode = 'R') THEN
338 x_last_updated_by := fnd_global.user_id;
339 IF (x_last_updated_by IS NULL) THEN
340 x_last_updated_by := -1;
341 END IF;
342 x_last_update_login := fnd_global.login_id;
343 IF (x_last_update_login IS NULL) THEN
344 x_last_update_login := -1;
345 END IF;
346 ELSE
347 fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
348 igs_ge_msg_stack.add;
349 app_exception.raise_exception;
350 END IF;
351
352 SELECT igf_sl_dl_chg_fld_s.NEXTVAL into x_dchg_id FROM DUAL;
353
354 before_dml(
355 p_action => 'INSERT',
356 x_rowid => x_rowid,
357 x_dchg_id => x_dchg_id,
358 x_dl_version => x_dl_version,
359 x_chg_code => x_chg_code,
360 x_loan_catg => x_loan_catg,
361 x_fld_name => x_fld_name,
362 x_fld_length => x_fld_length,
363 x_creation_date => x_last_update_date,
364 x_created_by => x_last_updated_by,
365 x_last_update_date => x_last_update_date,
366 x_last_updated_by => x_last_updated_by,
367 x_last_update_login => x_last_update_login
368 );
369
370 INSERT INTO igf_sl_dl_chg_fld (
371 dchg_id,
372 dl_version,
373 chg_code,
374 loan_catg,
375 fld_name,
376 fld_length,
377 creation_date,
378 created_by,
379 last_update_date,
380 last_updated_by,
381 last_update_login
382 ) VALUES (
383 new_references.dchg_id,
384 new_references.dl_version,
385 new_references.chg_code,
386 new_references.loan_catg,
390 x_last_updated_by,
387 new_references.fld_name,
388 new_references.fld_length,
389 x_last_update_date,
391 x_last_update_date,
392 x_last_updated_by,
393 x_last_update_login
394 );
395
396 OPEN c;
397 FETCH c INTO x_rowid;
398 IF (c%NOTFOUND) THEN
399 CLOSE c;
400 RAISE NO_DATA_FOUND;
401 END IF;
402 CLOSE c;
403
404 END insert_row;
405
406
407 PROCEDURE lock_row (
408 x_rowid IN VARCHAR2,
409 x_dchg_id IN NUMBER,
410 x_dl_version IN VARCHAR2,
411 x_chg_code IN VARCHAR2,
412 x_loan_catg IN VARCHAR2,
413 x_fld_name IN VARCHAR2,
414 x_fld_length IN NUMBER
415 ) AS
416 /*
417 || Created By : venagara
418 || Created On : 05-DEC-2000
419 || Purpose : Handles the LOCK mechanism for the table.
420 || Known limitations, enhancements or remarks :
421 || Change History :
422 || Who When What
423 || (reverse chronological order - newest change first)
424 */
425 CURSOR c1 IS
426 SELECT
427 dl_version,
428 chg_code,
429 loan_catg,
430 fld_name,
431 fld_length
432 FROM igf_sl_dl_chg_fld
433 WHERE rowid = x_rowid
434 FOR UPDATE NOWAIT;
435
436 tlinfo c1%ROWTYPE;
437
438 BEGIN
439
440 OPEN c1;
441 FETCH c1 INTO tlinfo;
442 IF (c1%notfound) THEN
443 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
444 igs_ge_msg_stack.add;
445 CLOSE c1;
446 app_exception.raise_exception;
447 RETURN;
448 END IF;
449 CLOSE c1;
450
451 IF (
452 (tlinfo.dl_version = x_dl_version)
453 AND (tlinfo.chg_code = x_chg_code)
454 AND (tlinfo.loan_catg = x_loan_catg)
455 AND (tlinfo.fld_name = x_fld_name)
456 AND ((tlinfo.fld_length = x_fld_length) OR ((tlinfo.fld_length IS NULL) AND (X_fld_length IS NULL)))
457 ) THEN
458 NULL;
459 ELSE
460 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
461 igs_ge_msg_stack.add;
462 app_exception.raise_exception;
463 END IF;
464
465 RETURN;
466
467 END lock_row;
468
469
470 PROCEDURE update_row (
471 x_rowid IN VARCHAR2,
472 x_dchg_id IN NUMBER,
473 x_dl_version IN VARCHAR2,
474 x_chg_code IN VARCHAR2,
475 x_loan_catg IN VARCHAR2,
476 x_fld_name IN VARCHAR2,
477 x_fld_length IN NUMBER,
478 x_mode IN VARCHAR2 DEFAULT 'R'
479 ) AS
480 /*
481 || Created By : venagara
482 || Created On : 05-DEC-2000
483 || Purpose : Handles the UPDATE DML logic for the table.
484 || Known limitations, enhancements or remarks :
485 || Change History :
486 || Who When What
487 || (reverse chronological order - newest change first)
488 */
489 x_last_update_date DATE ;
490 x_last_updated_by NUMBER;
491 x_last_update_login NUMBER;
492
493 BEGIN
494
495 x_last_update_date := SYSDATE;
496 IF (X_MODE = 'I') THEN
497 x_last_updated_by := 1;
498 x_last_update_login := 0;
499 ELSIF (x_mode = 'R') THEN
500 x_last_updated_by := fnd_global.user_id;
501 IF x_last_updated_by IS NULL THEN
502 x_last_updated_by := -1;
503 END IF;
504 x_last_update_login := fnd_global.login_id;
505 IF (x_last_update_login IS NULL) THEN
506 x_last_update_login := -1;
507 END IF;
508 ELSE
509 fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
510 igs_ge_msg_stack.add;
511 app_exception.raise_exception;
512 END IF;
513
514 before_dml(
515 p_action => 'UPDATE',
516 x_rowid => x_rowid,
517 x_dchg_id => x_dchg_id,
518 x_dl_version => x_dl_version,
519 x_chg_code => x_chg_code,
520 x_loan_catg => x_loan_catg,
521 x_fld_name => x_fld_name,
522 x_fld_length => x_fld_length,
523 x_creation_date => x_last_update_date,
524 x_created_by => x_last_updated_by,
525 x_last_update_date => x_last_update_date,
526 x_last_updated_by => x_last_updated_by,
527 x_last_update_login => x_last_update_login
528 );
529
530 UPDATE igf_sl_dl_chg_fld
531 SET
532 dl_version = new_references.dl_version,
533 chg_code = new_references.chg_code,
534 loan_catg = new_references.loan_catg,
535 fld_name = new_references.fld_name,
539 last_update_login = x_last_update_login
536 fld_length = new_references.fld_length,
537 last_update_date = x_last_update_date,
538 last_updated_by = x_last_updated_by,
540 WHERE rowid = x_rowid;
541
542 IF (SQL%NOTFOUND) THEN
543 RAISE NO_DATA_FOUND;
544 END IF;
545
546 END update_row;
547
548
549 PROCEDURE add_row (
550 x_rowid IN OUT NOCOPY VARCHAR2,
551 x_dchg_id IN OUT NOCOPY NUMBER,
555 x_fld_name IN VARCHAR2,
552 x_dl_version IN VARCHAR2,
553 x_chg_code IN VARCHAR2,
554 x_loan_catg IN VARCHAR2,
556 x_fld_length IN NUMBER,
557 x_mode IN VARCHAR2 DEFAULT 'R'
558 ) AS
559 /*
560 || Created By : venagara
561 || Created On : 05-DEC-2000
562 || Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
563 || Known limitations, enhancements or remarks :
564 || Change History :
565 || Who When What
566 || (reverse chronological order - newest change first)
567 */
568 CURSOR c1 IS
569 SELECT rowid
570 FROM igf_sl_dl_chg_fld
571 WHERE dchg_id = x_dchg_id;
572
573 BEGIN
574
575 OPEN c1;
576 FETCH c1 INTO x_rowid;
577 IF (c1%NOTFOUND) THEN
578 CLOSE c1;
579
580 insert_row (
581 x_rowid,
582 x_dchg_id,
583 x_dl_version,
584 x_chg_code,
585 x_loan_catg,
586 x_fld_name,
587 x_fld_length,
588 x_mode
589 );
590 RETURN;
591 END IF;
592 CLOSE c1;
593
594 update_row (
595 x_rowid,
596 x_dchg_id,
597 x_dl_version,
598 x_chg_code,
602 x_mode
599 x_loan_catg,
600 x_fld_name,
601 x_fld_length,
603 );
604
605 END add_row;
606
607
608 PROCEDURE delete_row (
609 x_rowid IN VARCHAR2
610 ) AS
611 /*
612 || Created By : venagara
613 || Created On : 05-DEC-2000
614 || Purpose : Handles the DELETE DML logic for the table.
615 || Known limitations, enhancements or remarks :
616 || Change History :
617 || Who When What
618 || (reverse chronological order - newest change first)
619 */
620 BEGIN
621
622 before_dml (
623 p_action => 'DELETE',
624 x_rowid => x_rowid
625 );
626
627 DELETE FROM igf_sl_dl_chg_fld
628 WHERE rowid = x_rowid;
629
630 IF (SQL%NOTFOUND) THEN
631 RAISE NO_DATA_FOUND;
632 END IF;
633
634 END delete_row;
635
636
637 END igf_sl_dl_chg_fld_pkg;