DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_OU_AWD_PKG

Source


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