DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_HE_UT_EXCL_QALS_PKG

Source


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