DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_PP_INS_APPLS_PKG

Source


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