DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_GPC_CLS_STNDG_PKG

Source


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