DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_SL_PNOTE_STAT_H_PKG

Source


1 PACKAGE BODY igf_sl_pnote_stat_h_pkg AS
2 /* $Header: IGFLI28B.pls 115.5 2002/11/28 14:27:52 nsidana noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igf_sl_pnote_stat_h%ROWTYPE;
6   new_references igf_sl_pnote_stat_h%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_dlpnh_id                          IN     NUMBER      DEFAULT NULL,
12     x_loan_id                           IN     NUMBER      DEFAULT NULL,
13     x_pnote_status                      IN     VARCHAR2    DEFAULT NULL,
14     x_pnote_status_date                 IN     DATE        DEFAULT NULL,
15     x_creation_date                     IN     DATE        DEFAULT NULL,
16     x_created_by                        IN     NUMBER      DEFAULT NULL,
17     x_last_update_date                  IN     DATE        DEFAULT NULL,
18     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
19     x_last_update_login                 IN     NUMBER      DEFAULT NULL
20   ) AS
21   /*
22   ||  Created By : viramali
23   ||  Created On : 10-MAY-2001
24   ||  Purpose : Initialises the Old and New references for the columns of the table.
25   ||  Known limitations, enhancements or remarks :
26   ||  Change History :
27   ||  Who             When            What
28   ||  (reverse chronological order - newest change first)
29   */
30 
31     CURSOR cur_old_ref_values IS
32       SELECT   *
33       FROM     IGF_SL_PNOTE_STAT_H
34       WHERE    rowid = x_rowid;
35 
36   BEGIN
37 
38     l_rowid := x_rowid;
39 
40     -- Code for setting the Old and New Reference Values.
41     -- Populate Old Values.
42     OPEN cur_old_ref_values;
43     FETCH cur_old_ref_values INTO old_references;
44     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
45       CLOSE cur_old_ref_values;
46       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
47       igs_ge_msg_stack.add;
48       app_exception.raise_exception;
49       RETURN;
50     END IF;
51     CLOSE cur_old_ref_values;
52 
53     -- Populate New Values.
54     new_references.dlpnh_id                          := x_dlpnh_id;
55     new_references.loan_id                           := x_loan_id;
56     new_references.pnote_status                      := x_pnote_status;
57     new_references.pnote_status_date                 := x_pnote_status_date;
58 
59     IF (p_action = 'UPDATE') THEN
60       new_references.creation_date                   := old_references.creation_date;
61       new_references.created_by                      := old_references.created_by;
62     ELSE
63       new_references.creation_date                   := x_creation_date;
64       new_references.created_by                      := x_created_by;
65     END IF;
66 
67     new_references.last_update_date                  := x_last_update_date;
68     new_references.last_updated_by                   := x_last_updated_by;
69     new_references.last_update_login                 := x_last_update_login;
70 
71   END set_column_values;
72 
73 
74   PROCEDURE check_parent_existance AS
75   /*
76   ||  Created By : viramali
77   ||  Created On : 10-MAY-2001
78   ||  Purpose : Checks for the existance of Parent records.
79   ||  Known limitations, enhancements or remarks :
80   ||  Change History :
81   ||  Who             When            What
82   ||  (reverse chronological order - newest change first)
83   */
84   BEGIN
85 
86     IF (((old_references.loan_id = new_references.loan_id)) OR
87         ((new_references.loan_id IS NULL))) THEN
88       NULL;
89     ELSIF NOT igf_sl_lor_pkg.get_uk_For_validation (
90                 new_references.loan_id
91               ) THEN
92       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
93       igs_ge_msg_stack.add;
94       app_exception.raise_exception;
95     END IF;
96 
97   END check_parent_existance;
98 
99 
100   FUNCTION get_pk_for_validation (
101     x_dlpnh_id                          IN     NUMBER
102   ) RETURN BOOLEAN AS
103   /*
104   ||  Created By : viramali
105   ||  Created On : 10-MAY-2001
106   ||  Purpose : Validates the Primary Key of the table.
107   ||  Known limitations, enhancements or remarks :
108   ||  Change History :
109   ||  Who             When            What
110   ||  (reverse chronological order - newest change first)
111   */
112     CURSOR cur_rowid IS
113       SELECT   rowid
114       FROM     igf_sl_pnote_stat_h
115       WHERE    dlpnh_id = x_dlpnh_id
116       FOR UPDATE NOWAIT;
117 
118     lv_rowid cur_rowid%RowType;
119 
120   BEGIN
121 
122     OPEN cur_rowid;
123     FETCH cur_rowid INTO lv_rowid;
124     IF (cur_rowid%FOUND) THEN
125       CLOSE cur_rowid;
126       RETURN(TRUE);
127     ELSE
128       CLOSE cur_rowid;
129       RETURN(FALSE);
130     END IF;
131 
132   END get_pk_for_validation;
133 
134 
135   PROCEDURE get_ufk_igf_sl_lor (
136     x_loan_id                           IN     NUMBER
137   ) AS
138   /*
139   ||  Created By : viramali
140   ||  Created On : 10-MAY-2001
141   ||  Purpose : Validates the Foreign Keys for the table.
142   ||  Known limitations, enhancements or remarks :
143   ||  Change History :
144   ||  Bug : 2413695 IGF Messages Issues
145   ||  Who             When            What
146   ||  mesriniv        13-jun-2002    changed msg name -IGF_DLPNH_LOR_FK
147   ||  (reverse chronological order - newest change first)
148   */
149     CURSOR cur_rowid IS
150       SELECT   rowid
151       FROM     igf_sl_pnote_stat_h
152       WHERE   ((loan_id = x_loan_id));
153 
154     lv_rowid cur_rowid%RowType;
155 
156   BEGIN
157 
158     OPEN cur_rowid;
159     FETCH cur_rowid INTO lv_rowid;
160     IF (cur_rowid%FOUND) THEN
161       CLOSE cur_rowid;
162       fnd_message.set_name ('IGF', 'IGF_SL_DLPNH_LOR_FK');
163       igs_ge_msg_stack.add;
164       app_exception.raise_exception;
165       RETURN;
166     END IF;
167     CLOSE cur_rowid;
168 
169   END get_ufk_igf_sl_lor;
170 
171 
172   PROCEDURE before_dml (
173     p_action                            IN     VARCHAR2,
174     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
175     x_dlpnh_id                          IN     NUMBER      DEFAULT NULL,
176     x_loan_id                           IN     NUMBER      DEFAULT NULL,
177     x_pnote_status                      IN     VARCHAR2    DEFAULT NULL,
178     x_pnote_status_date                 IN     DATE        DEFAULT NULL,
179     x_creation_date                     IN     DATE        DEFAULT NULL,
180     x_created_by                        IN     NUMBER      DEFAULT NULL,
181     x_last_update_date                  IN     DATE        DEFAULT NULL,
182     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
183     x_last_update_login                 IN     NUMBER      DEFAULT NULL
184   ) AS
185   /*
186   ||  Created By : viramali
187   ||  Created On : 10-MAY-2001
188   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
189   ||            Trigger Handlers for the table, before any DML operation.
190   ||  Known limitations, enhancements or remarks :
191   ||  Change History :
192   ||  Who             When            What
193   ||  (reverse chronological order - newest change first)
194   */
195   BEGIN
196 
197     set_column_values (
198       p_action,
199       x_rowid,
200       x_dlpnh_id,
201       x_loan_id,
202       x_pnote_status,
203       x_pnote_status_date,
204       x_creation_date,
205       x_created_by,
206       x_last_update_date,
207       x_last_updated_by,
208       x_last_update_login
209     );
210 
211     IF (p_action = 'INSERT') THEN
212       -- Call all the procedures related to Before Insert.
213       IF ( get_pk_for_validation(
214              new_references.dlpnh_id
215            )
216          ) THEN
217         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
218         igs_ge_msg_stack.add;
219         app_exception.raise_exception;
220       END IF;
221       check_parent_existance;
222     ELSIF (p_action = 'UPDATE') THEN
223       -- Call all the procedures related to Before Update.
224       check_parent_existance;
225     ELSIF (p_action = 'VALIDATE_INSERT') THEN
226       -- Call all the procedures related to Before Insert.
227       IF ( get_pk_for_validation (
228              new_references.dlpnh_id
229            )
230          ) THEN
231         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
232         igs_ge_msg_stack.add;
233         app_exception.raise_exception;
234       END IF;
235     END IF;
236 
237   END before_dml;
238 
239 
240   PROCEDURE insert_row (
241     x_rowid                             IN OUT NOCOPY VARCHAR2,
242     x_dlpnh_id                          IN OUT NOCOPY NUMBER,
243     x_loan_id                           IN     NUMBER,
244     x_pnote_status                      IN     VARCHAR2,
245     x_pnote_status_date                 IN     DATE,
246     x_mode                              IN     VARCHAR2 DEFAULT 'R'
247   ) AS
248   /*
249   ||  Created By : viramali
250   ||  Created On : 10-MAY-2001
251   ||  Purpose : Handles the INSERT DML logic for the table.
252   ||  Known limitations, enhancements or remarks :
253   ||  Change History :
254   ||  Who             When            What
255   ||  (reverse chronological order - newest change first)
256   */
257     CURSOR c IS
258       SELECT   rowid
259       FROM     igf_sl_pnote_stat_h
260       WHERE    dlpnh_id                          = x_dlpnh_id;
261 
262     x_last_update_date           DATE;
263     x_last_updated_by            NUMBER;
264     x_last_update_login          NUMBER;
265     x_request_id                 NUMBER;
266     x_program_id                 NUMBER;
267     x_program_application_id     NUMBER;
268     x_program_update_date        DATE;
269 
270   BEGIN
271 
272     x_last_update_date := SYSDATE;
273     IF (x_mode = 'I') THEN
274       x_last_updated_by := 1;
275       x_last_update_login := 0;
276     ELSIF (x_mode = 'R') THEN
277       x_last_updated_by := fnd_global.user_id;
278       IF (x_last_updated_by IS NULL) THEN
279         x_last_updated_by := -1;
280       END IF;
281       x_last_update_login := fnd_global.login_id;
282       IF (x_last_update_login IS NULL) THEN
283         x_last_update_login := -1;
284       END IF;
285       x_request_id             := fnd_global.conc_request_id;
286       x_program_id             := fnd_global.conc_program_id;
287       x_program_application_id := fnd_global.prog_appl_id;
288 
289       IF (x_request_id = -1) THEN
290         x_request_id             := NULL;
291         x_program_id             := NULL;
292         x_program_application_id := NULL;
293         x_program_update_date    := NULL;
294       ELSE
295         x_program_update_date    := SYSDATE;
296       END IF;
297     ELSE
298       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
299       igs_ge_msg_stack.add;
300       app_exception.raise_exception;
301     END IF;
302 
303     SELECT    igf_sl_pnote_stat_h_s.NEXTVAL
304     INTO      x_dlpnh_id
305     FROM      dual;
306 
307     before_dml(
308       p_action                            => 'INSERT',
309       x_rowid                             => x_rowid,
310       x_dlpnh_id                          => x_dlpnh_id,
311       x_loan_id                           => x_loan_id,
312       x_pnote_status                      => x_pnote_status,
313       x_pnote_status_date                 => x_pnote_status_date,
314       x_creation_date                     => x_last_update_date,
315       x_created_by                        => x_last_updated_by,
316       x_last_update_date                  => x_last_update_date,
317       x_last_updated_by                   => x_last_updated_by,
318       x_last_update_login                 => x_last_update_login
319     );
320 
321     INSERT INTO igf_sl_pnote_stat_h (
322       dlpnh_id,
323       loan_id,
324       pnote_status,
325       pnote_status_date,
326       creation_date,
327       created_by,
328       last_update_date,
329       last_updated_by,
330       last_update_login,
331       request_id,
332       program_id,
333       program_application_id,
334       program_update_date
335     ) VALUES (
336       new_references.dlpnh_id,
337       new_references.loan_id,
338       new_references.pnote_status,
339       new_references.pnote_status_date,
340       x_last_update_date,
341       x_last_updated_by,
342       x_last_update_date,
343       x_last_updated_by,
344       x_last_update_login ,
345       x_request_id,
346       x_program_id,
347       x_program_application_id,
348       x_program_update_date
349     );
350 
351     OPEN c;
352     FETCH c INTO x_rowid;
353     IF (c%NOTFOUND) THEN
354       CLOSE c;
355       RAISE NO_DATA_FOUND;
356     END IF;
357     CLOSE c;
358 
359   END insert_row;
360 
361 
362   PROCEDURE lock_row (
363     x_rowid                             IN     VARCHAR2,
364     x_dlpnh_id                          IN     NUMBER,
365     x_loan_id                           IN     NUMBER,
366     x_pnote_status                      IN     VARCHAR2,
367     x_pnote_status_date                 IN     DATE
368   ) AS
369   /*
370   ||  Created By : viramali
371   ||  Created On : 10-MAY-2001
372   ||  Purpose : Handles the LOCK mechanism for the table.
373   ||  Known limitations, enhancements or remarks :
374   ||  Change History :
375   ||  Who             When            What
376   ||  (reverse chronological order - newest change first)
377   */
378     CURSOR c1 IS
379       SELECT
380         loan_id,
381         pnote_status,
382         pnote_status_date
383       FROM  igf_sl_pnote_stat_h
384       WHERE rowid = x_rowid
385       FOR UPDATE NOWAIT;
386 
387     tlinfo c1%ROWTYPE;
388 
389   BEGIN
390 
391     OPEN c1;
392     FETCH c1 INTO tlinfo;
393     IF (c1%notfound) THEN
394       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
395       igs_ge_msg_stack.add;
396       CLOSE c1;
397       app_exception.raise_exception;
398       RETURN;
399     END IF;
400     CLOSE c1;
401 
402     IF (
403         (tlinfo.loan_id = x_loan_id)
404         AND ((tlinfo.pnote_status = x_pnote_status) OR ((tlinfo.pnote_status IS NULL) AND (X_pnote_status IS NULL)))
405         AND ((tlinfo.pnote_status_date = x_pnote_status_date) OR ((tlinfo.pnote_status_date IS NULL) AND (X_pnote_status_date IS NULL)))
406        ) THEN
407       NULL;
408     ELSE
409       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
410       igs_ge_msg_stack.add;
411       app_exception.raise_exception;
412     END IF;
413 
414     RETURN;
415 
416   END lock_row;
417 
418 
419   PROCEDURE update_row (
420     x_rowid                             IN     VARCHAR2,
421     x_dlpnh_id                          IN     NUMBER,
422     x_loan_id                           IN     NUMBER,
423     x_pnote_status                      IN     VARCHAR2,
424     x_pnote_status_date                 IN     DATE,
425     x_mode                              IN     VARCHAR2 DEFAULT 'R'
426   ) AS
427   /*
428   ||  Created By : viramali
429   ||  Created On : 10-MAY-2001
430   ||  Purpose : Handles the UPDATE DML logic for the table.
431   ||  Known limitations, enhancements or remarks :
432   ||  Change History :
433   ||  Who             When            What
434   ||  (reverse chronological order - newest change first)
435   */
436     x_last_update_date           DATE ;
437     x_last_updated_by            NUMBER;
438     x_last_update_login          NUMBER;
439     x_request_id                 NUMBER;
440     x_program_id                 NUMBER;
441     x_program_application_id     NUMBER;
442     x_program_update_date        DATE;
443 
444   BEGIN
445 
446     x_last_update_date := SYSDATE;
447     IF (X_MODE = 'I') THEN
448       x_last_updated_by := 1;
449       x_last_update_login := 0;
450     ELSIF (x_mode = 'R') THEN
451       x_last_updated_by := fnd_global.user_id;
452       IF x_last_updated_by IS NULL THEN
453         x_last_updated_by := -1;
454       END IF;
455       x_last_update_login := fnd_global.login_id;
456       IF (x_last_update_login IS NULL) THEN
457         x_last_update_login := -1;
458       END IF;
459     ELSE
460       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
461       igs_ge_msg_stack.add;
462       app_exception.raise_exception;
463     END IF;
464 
465     before_dml(
466       p_action                            => 'UPDATE',
467       x_rowid                             => x_rowid,
468       x_dlpnh_id                          => x_dlpnh_id,
469       x_loan_id                           => x_loan_id,
470       x_pnote_status                      => x_pnote_status,
471       x_pnote_status_date                 => x_pnote_status_date,
472       x_creation_date                     => x_last_update_date,
473       x_created_by                        => x_last_updated_by,
474       x_last_update_date                  => x_last_update_date,
475       x_last_updated_by                   => x_last_updated_by,
476       x_last_update_login                 => x_last_update_login
477     );
478 
479     IF (x_mode = 'R') THEN
480       x_request_id := fnd_global.conc_request_id;
481       x_program_id := fnd_global.conc_program_id;
482       x_program_application_id := fnd_global.prog_appl_id;
483       IF (x_request_id =  -1) THEN
484         x_request_id := old_references.request_id;
485         x_program_id := old_references.program_id;
486         x_program_application_id := old_references.program_application_id;
487         x_program_update_date := old_references.program_update_date;
488       ELSE
489         x_program_update_date := SYSDATE;
490       END IF;
491     END IF;
492 
493     UPDATE igf_sl_pnote_stat_h
494       SET
495         loan_id                           = new_references.loan_id,
496         pnote_status                      = new_references.pnote_status,
497         pnote_status_date                 = new_references.pnote_status_date,
498         last_update_date                  = x_last_update_date,
499         last_updated_by                   = x_last_updated_by,
500         last_update_login                 = x_last_update_login ,
501         request_id                        = x_request_id,
502         program_id                        = x_program_id,
503         program_application_id            = x_program_application_id,
504         program_update_date               = x_program_update_date
505       WHERE rowid = x_rowid;
506 
507     IF (SQL%NOTFOUND) THEN
508       RAISE NO_DATA_FOUND;
509     END IF;
510 
511   END update_row;
512 
513 
514   PROCEDURE add_row (
515     x_rowid                             IN OUT NOCOPY VARCHAR2,
516     x_dlpnh_id                          IN OUT NOCOPY NUMBER,
517     x_loan_id                           IN     NUMBER,
518     x_pnote_status                      IN     VARCHAR2,
519     x_pnote_status_date                 IN     DATE,
520     x_mode                              IN     VARCHAR2 DEFAULT 'R'
521   ) AS
522   /*
523   ||  Created By : viramali
524   ||  Created On : 10-MAY-2001
525   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
526   ||  Known limitations, enhancements or remarks :
527   ||  Change History :
528   ||  Who             When            What
529   ||  (reverse chronological order - newest change first)
530   */
531     CURSOR c1 IS
532       SELECT   rowid
533       FROM     igf_sl_pnote_stat_h
534       WHERE    dlpnh_id                          = x_dlpnh_id;
535 
536   BEGIN
537 
538     OPEN c1;
539     FETCH c1 INTO x_rowid;
540     IF (c1%NOTFOUND) THEN
541       CLOSE c1;
542 
543       insert_row (
544         x_rowid,
545         x_dlpnh_id,
546         x_loan_id,
547         x_pnote_status,
548         x_pnote_status_date,
549         x_mode
550       );
551       RETURN;
552     END IF;
553     CLOSE c1;
554 
555     update_row (
556       x_rowid,
557       x_dlpnh_id,
558       x_loan_id,
559       x_pnote_status,
560       x_pnote_status_date,
561       x_mode
562     );
563 
564   END add_row;
565 
566 
567   PROCEDURE delete_row (
568     x_rowid IN VARCHAR2
569   ) AS
570   /*
571   ||  Created By : viramali
572   ||  Created On : 10-MAY-2001
573   ||  Purpose : Handles the DELETE DML logic for the table.
574   ||  Known limitations, enhancements or remarks :
575   ||  Change History :
576   ||  Who             When            What
577   ||  (reverse chronological order - newest change first)
578   */
579   BEGIN
580 
581     before_dml (
582       p_action => 'DELETE',
583       x_rowid => x_rowid
584     );
585 
586     DELETE FROM igf_sl_pnote_stat_h
587     WHERE rowid = x_rowid;
588 
589     IF (SQL%NOTFOUND) THEN
590       RAISE NO_DATA_FOUND;
591     END IF;
592 
593   END delete_row;
594 
595 
596 END igf_sl_pnote_stat_h_pkg;