DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_AW_FUND_UNIT_PKG

Source


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