DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_AW_CORRESP_PKG

Source


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