DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_GPC_PE_ID_GRP_PKG

Source


1 PACKAGE BODY igs_as_gpc_pe_id_grp_pkg AS
2 /* $Header: IGSDI55B.pls 115.7 2003/02/18 09:14:54 npalanis ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_as_gpc_pe_id_grp%ROWTYPE;
6   new_references igs_as_gpc_pe_id_grp%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_gpc_pe_grp_id                     IN     NUMBER      DEFAULT NULL,
12     x_grading_period_cd                 IN     VARCHAR2    DEFAULT NULL,
13     x_group_id                          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 : cdcruz
22   ||  Created On : 25-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_PE_ID_GRP
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_pe_grp_id                     := x_gpc_pe_grp_id;
54     new_references.grading_period_cd                 := x_grading_period_cd;
55     new_references.group_id                          := x_group_id;
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 : cdcruz
75   ||  Created On : 25-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.group_id
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 : cdcruz
100   ||  Created On : 25-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.group_id = new_references.group_id)) OR
110         ((new_references.group_id IS NULL))) THEN
111       NULL;
112     ELSIF NOT igs_pe_persid_group_pkg.get_pk_for_validation (
113                 new_references.group_id
114               ) THEN
115       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
116       igs_ge_msg_stack.add;
117       app_exception.raise_exception;
118     ELSIF NOT IGS_LOOKUPS_VIEW_PKG.Get_PK_For_Validation ('AS_GRADING_PERIOD',
119                      new_references.grading_period_cd ) THEN
120 
121      Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
122      IGS_GE_MSG_STACK.ADD ;
123      APP_EXCEPTION.RAISE_EXCEPTION ;
124 
125 
126     END IF;
127 
128   END check_parent_existance;
129 
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_GPG_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_pe_grp_id                     IN     NUMBER
166   ) RETURN BOOLEAN AS
167   /*
168   ||  Created By : cdcruz
169   ||  Created On : 25-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_pe_id_grp
179       WHERE    gpc_pe_grp_id = x_gpc_pe_grp_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_group_id                          IN     NUMBER
202   ) RETURN BOOLEAN AS
203   /*
204   ||  Created By : cdcruz
205   ||  Created On : 25-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_pe_id_grp
215       WHERE    grading_period_cd = x_grading_period_cd
216       AND      group_id = x_group_id
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   PROCEDURE BeforeInsertUpdate(p_inserting BOOLEAN , p_updating BOOLEAN) AS
236   p_message_name VARCHAR2(30);
237   BEGIN
238    IF ( p_inserting = TRUE OR (p_updating = TRUE AND new_references.group_id <> old_references.group_id ) ) THEN
239     IF  NOT IGS_PE_PERSID_GROUP_PKG.val_persid_group(new_references.group_id,p_message_name) THEN
240         Fnd_Message.Set_Name('IGS', p_message_name);
241 	IGS_GE_MSG_STACK.ADD;
242         App_Exception.Raise_Exception;
243      END IF;
244    END IF;
245   END BeforeInsertUpdate;
246 
247   PROCEDURE before_dml (
248     p_action                            IN     VARCHAR2,
249     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
250     x_gpc_pe_grp_id                     IN     NUMBER      DEFAULT NULL,
251     x_grading_period_cd                 IN     VARCHAR2    DEFAULT NULL,
252     x_group_id                          IN     NUMBER      DEFAULT NULL,
253     x_creation_date                     IN     DATE        DEFAULT NULL,
254     x_created_by                        IN     NUMBER      DEFAULT NULL,
255     x_last_update_date                  IN     DATE        DEFAULT NULL,
256     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
257     x_last_update_login                 IN     NUMBER      DEFAULT NULL
258   ) AS
259   /*
260   ||  Created By : cdcruz
261   ||  Created On : 25-JUL-2001
262   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
263   ||            Trigger Handlers for the table, before any DML operation.
264   ||  Known limitations, enhancements or remarks :
265   ||  Change History :
266   ||  Who             When            What
267   ||  (reverse chronological order - newest change first)
268   */
269   BEGIN
270 
271     set_column_values (
272       p_action,
273       x_rowid,
274       x_gpc_pe_grp_id,
275       x_grading_period_cd,
276       x_group_id,
277       x_creation_date,
278       x_created_by,
279       x_last_update_date,
280       x_last_updated_by,
281       x_last_update_login
282     );
283 
284     IF (p_action = 'INSERT') THEN
285       -- Call all the procedures related to Before Insert.
286       BeforeInsertUpdate(TRUE,FALSE);
287       IF ( get_pk_for_validation(
288              new_references.gpc_pe_grp_id
289            )
290          ) THEN
291         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
292         igs_ge_msg_stack.add;
293         app_exception.raise_exception;
294       END IF;
295       check_uniqueness;
296       check_parent_existance;
297     ELSIF (p_action = 'UPDATE') THEN
298       -- Call all the procedures related to Before Update.
299       BeforeInsertUpdate(FALSE,TRUE);
300       check_uniqueness;
301       check_parent_existance;
302     ELSIF (p_action = 'VALIDATE_INSERT') THEN
303       -- Call all the procedures related to Before Insert.
304       IF ( get_pk_for_validation (
305              new_references.gpc_pe_grp_id
306            )
307          ) THEN
308         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
309         igs_ge_msg_stack.add;
310         app_exception.raise_exception;
311       END IF;
312       check_uniqueness;
313     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
314       check_uniqueness;
315     END IF;
316 
317   END before_dml;
318 
319 
320   PROCEDURE insert_row (
321     x_rowid                             IN OUT NOCOPY VARCHAR2,
322     x_gpc_pe_grp_id                     IN OUT NOCOPY NUMBER,
323     x_grading_period_cd                 IN     VARCHAR2,
324     x_group_id                          IN     NUMBER,
325     x_mode                              IN     VARCHAR2 DEFAULT 'R'
326   ) AS
327   /*
328   ||  Created By : cdcruz
329   ||  Created On : 25-JUL-2001
330   ||  Purpose : Handles the INSERT DML logic for the table.
331   ||  Known limitations, enhancements or remarks :
332   ||  Change History :
336     CURSOR c IS
333   ||  Who             When            What
334   ||  (reverse chronological order - newest change first)
335   */
337       SELECT   rowid
338       FROM     igs_as_gpc_pe_id_grp
339       WHERE    gpc_pe_grp_id                     = x_gpc_pe_grp_id;
340 
341     x_last_update_date           DATE;
342     x_last_updated_by            NUMBER;
343     x_last_update_login          NUMBER;
344 
345   BEGIN
346 
347     x_last_update_date := SYSDATE;
348     IF (x_mode = 'I') THEN
349       x_last_updated_by := 1;
350       x_last_update_login := 0;
351     ELSIF (x_mode = 'R') THEN
352       x_last_updated_by := fnd_global.user_id;
353       IF (x_last_updated_by IS NULL) THEN
354         x_last_updated_by := -1;
355       END IF;
356       x_last_update_login := fnd_global.login_id;
357       IF (x_last_update_login IS NULL) THEN
358         x_last_update_login := -1;
359       END IF;
360     ELSE
361       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
362       igs_ge_msg_stack.add;
363       app_exception.raise_exception;
364     END IF;
365 
366     SELECT    igs_as_gpc_pe_id_grp_s.NEXTVAL
367     INTO      x_gpc_pe_grp_id
368     FROM      dual;
369 
370     before_dml(
371       p_action                            => 'INSERT',
372       x_rowid                             => x_rowid,
373       x_gpc_pe_grp_id                     => x_gpc_pe_grp_id,
374       x_grading_period_cd                 => x_grading_period_cd,
375       x_group_id                          => x_group_id,
376       x_creation_date                     => x_last_update_date,
377       x_created_by                        => x_last_updated_by,
378       x_last_update_date                  => x_last_update_date,
379       x_last_updated_by                   => x_last_updated_by,
380       x_last_update_login                 => x_last_update_login
381     );
382 
383     INSERT INTO igs_as_gpc_pe_id_grp (
384       gpc_pe_grp_id,
385       grading_period_cd,
386       group_id,
387       creation_date,
388       created_by,
389       last_update_date,
390       last_updated_by,
391       last_update_login
392     ) VALUES (
393       new_references.gpc_pe_grp_id,
394       new_references.grading_period_cd,
395       new_references.group_id,
396       x_last_update_date,
397       x_last_updated_by,
398       x_last_update_date,
399       x_last_updated_by,
400       x_last_update_login
401     );
402 
403     OPEN c;
404     FETCH c INTO x_rowid;
405     IF (c%NOTFOUND) THEN
406       CLOSE c;
407       RAISE NO_DATA_FOUND;
408     END IF;
409     CLOSE c;
410 
411   END insert_row;
412 
413 
414   PROCEDURE lock_row (
415     x_rowid                             IN     VARCHAR2,
416     x_gpc_pe_grp_id                     IN     NUMBER,
417     x_grading_period_cd                 IN     VARCHAR2,
418     x_group_id                          IN     NUMBER
419   ) AS
420   /*
421   ||  Created By : cdcruz
422   ||  Created On : 25-JUL-2001
423   ||  Purpose : Handles the LOCK mechanism for the table.
424   ||  Known limitations, enhancements or remarks :
425   ||  Change History :
426   ||  Who             When            What
427   ||  (reverse chronological order - newest change first)
428   */
429     CURSOR c1 IS
430       SELECT
431         grading_period_cd,
432         group_id
433       FROM  igs_as_gpc_pe_id_grp
434       WHERE rowid = x_rowid
435       FOR UPDATE NOWAIT;
436 
437     tlinfo c1%ROWTYPE;
438 
439   BEGIN
440 
441     OPEN c1;
442     FETCH c1 INTO tlinfo;
443     IF (c1%notfound) THEN
444       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
445       igs_ge_msg_stack.add;
446       CLOSE c1;
447       app_exception.raise_exception;
448       RETURN;
449     END IF;
450     CLOSE c1;
451 
452     IF (
453         (tlinfo.grading_period_cd = x_grading_period_cd)
454         AND (tlinfo.group_id = x_group_id)
455        ) THEN
456       NULL;
457     ELSE
458       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
459       igs_ge_msg_stack.add;
460       app_exception.raise_exception;
461     END IF;
462 
463     RETURN;
464 
465   END lock_row;
466 
467 
468   PROCEDURE update_row (
469     x_rowid                             IN     VARCHAR2,
470     x_gpc_pe_grp_id                     IN     NUMBER,
471     x_grading_period_cd                 IN     VARCHAR2,
472     x_group_id                          IN     NUMBER,
473     x_mode                              IN     VARCHAR2 DEFAULT 'R'
474   ) AS
475   /*
476   ||  Created By : cdcruz
477   ||  Created On : 25-JUL-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_gpc_pe_grp_id                     => x_gpc_pe_grp_id,
513       x_grading_period_cd                 => x_grading_period_cd,
514       x_group_id                          => x_group_id,
515       x_creation_date                     => x_last_update_date,
516       x_created_by                        => x_last_updated_by,
517       x_last_update_date                  => x_last_update_date,
518       x_last_updated_by                   => x_last_updated_by,
519       x_last_update_login                 => x_last_update_login
520     );
521 
522     UPDATE igs_as_gpc_pe_id_grp
523       SET
524         grading_period_cd                 = new_references.grading_period_cd,
525         group_id                          = new_references.group_id,
526         last_update_date                  = x_last_update_date,
527         last_updated_by                   = x_last_updated_by,
528         last_update_login                 = x_last_update_login
529       WHERE rowid = x_rowid;
530 
531     IF (SQL%NOTFOUND) THEN
532       RAISE NO_DATA_FOUND;
533     END IF;
534 
535   END update_row;
536 
537 
538   PROCEDURE add_row (
539     x_rowid                             IN OUT NOCOPY VARCHAR2,
540     x_gpc_pe_grp_id                     IN OUT NOCOPY NUMBER,
541     x_grading_period_cd                 IN     VARCHAR2,
542     x_group_id                          IN     NUMBER,
543     x_mode                              IN     VARCHAR2 DEFAULT 'R'
544   ) AS
545   /*
546   ||  Created By : cdcruz
547   ||  Created On : 25-JUL-2001
548   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
549   ||  Known limitations, enhancements or remarks :
550   ||  Change History :
551   ||  Who             When            What
552   ||  (reverse chronological order - newest change first)
553   */
554     CURSOR c1 IS
555       SELECT   rowid
556       FROM     igs_as_gpc_pe_id_grp
557       WHERE    gpc_pe_grp_id                     = x_gpc_pe_grp_id;
558 
559   BEGIN
560 
561     OPEN c1;
562     FETCH c1 INTO x_rowid;
563     IF (c1%NOTFOUND) THEN
564       CLOSE c1;
565 
566       insert_row (
567         x_rowid,
568         x_gpc_pe_grp_id,
569         x_grading_period_cd,
570         x_group_id,
571         x_mode
572       );
573       RETURN;
574     END IF;
575     CLOSE c1;
576 
577     update_row (
578       x_rowid,
579       x_gpc_pe_grp_id,
580       x_grading_period_cd,
581       x_group_id,
582       x_mode
583     );
584 
585   END add_row;
586 
587 
588   PROCEDURE delete_row (
589     x_rowid IN VARCHAR2
590   ) AS
591   /*
592   ||  Created By : cdcruz
593   ||  Created On : 25-JUL-2001
594   ||  Purpose : Handles the DELETE DML logic for the table.
595   ||  Known limitations, enhancements or remarks :
596   ||  Change History :
597   ||  Who             When            What
598   ||  (reverse chronological order - newest change first)
599   */
600   BEGIN
601 
602     before_dml (
603       p_action => 'DELETE',
604       x_rowid => x_rowid
605     );
606 
607     DELETE FROM igs_as_gpc_pe_id_grp
608     WHERE rowid = x_rowid;
609 
610     IF (SQL%NOTFOUND) THEN
611       RAISE NO_DATA_FOUND;
612     END IF;
613 
614   END delete_row;
615 
616 
617 END igs_as_gpc_pe_id_grp_pkg;