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