DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_SL_DL_PDET_RESP_PKG

Source


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