DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_HE_SUBMSN_AWD_PKG

Source


1 PACKAGE BODY igs_he_submsn_awd_pkg AS
2 /* $Header: IGSWI49B.pls 120.0 2006/02/06 19:23:14 jtmathew noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_he_submsn_awd%ROWTYPE;
6   new_references igs_he_submsn_awd%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_sub_awd_id                        IN     NUMBER,
12     x_submission_name                   IN     VARCHAR2,
13     x_type                              IN     VARCHAR2,
14     x_key1                              IN     VARCHAR2,
15     x_key2                              IN     VARCHAR2,
16     x_key3                              IN     VARCHAR2,
17     x_award_start_date                  IN     DATE,
18     x_award_end_date                    IN     DATE,
19     x_creation_date                     IN     DATE,
20     x_created_by                        IN     NUMBER,
21     x_last_update_date                  IN     DATE,
22     x_last_updated_by                   IN     NUMBER,
23     x_last_update_login                 IN     NUMBER
24   ) AS
25   /*
26   ||  Created By : [email protected]
27   ||  Created On : 04-DEC-2005
28   ||  Purpose : Initialises the Old and New references for the columns of the table.
29   ||  Known limitations, enhancements or remarks :
30   ||  Change History :
31   ||  Who             When            What
32   ||  (reverse chronological order - newest change first)
33   */
34 
35     CURSOR cur_old_ref_values IS
36       SELECT   *
37       FROM     igs_he_submsn_awd
38       WHERE    rowid = x_rowid;
39 
40   BEGIN
41 
42     l_rowid := x_rowid;
43 
44     -- Code for setting the Old and New Reference Values.
45     -- Populate Old Values.
46     OPEN cur_old_ref_values;
47     FETCH cur_old_ref_values INTO old_references;
48     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
49       CLOSE cur_old_ref_values;
50       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
51       igs_ge_msg_stack.add;
52       app_exception.raise_exception;
53       RETURN;
54     END IF;
55     CLOSE cur_old_ref_values;
56 
57     -- Populate New Values.
58     new_references.sub_awd_id                        := x_sub_awd_id;
59     new_references.submission_name                   := x_submission_name;
60     new_references.type                              := x_type;
61     new_references.key1                              := x_key1;
62     new_references.key2                              := x_key2;
63     new_references.key3                              := x_key3;
64     new_references.award_start_date                  := x_award_start_date;
65     new_references.award_end_date                    := x_award_end_date;
66 
67     IF (p_action = 'UPDATE') THEN
68       new_references.creation_date                   := old_references.creation_date;
69       new_references.created_by                      := old_references.created_by;
70     ELSE
71       new_references.creation_date                   := x_creation_date;
72       new_references.created_by                      := x_created_by;
73     END IF;
74 
75     new_references.last_update_date                  := x_last_update_date;
76     new_references.last_updated_by                   := x_last_updated_by;
77     new_references.last_update_login                 := x_last_update_login;
78 
79   END set_column_values;
80 
81 
82   PROCEDURE check_uniqueness AS
83   /*
84   ||  Created By : [email protected]
85   ||  Created On : 04-DEC-2005
86   ||  Purpose : Handles the Unique Constraint logic defined for the columns.
87   ||  Known limitations, enhancements or remarks :
88   ||  Change History :
89   ||  Who             When            What
90   ||  (reverse chronological order - newest change first)
91   */
92   BEGIN
93 
94     IF ( get_uk_for_validation (
95            new_references.submission_name,
96            new_references.type,
97            new_references.key1,
98            new_references.key2,
99            new_references.key3
100          )
101        ) THEN
102       fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
103       igs_ge_msg_stack.add;
104       app_exception.raise_exception;
105     END IF;
106 
107   END check_uniqueness;
108 
109 
110   PROCEDURE check_parent_existance AS
111   /*
112   ||  Created By : [email protected]
113   ||  Created On : 04-DEC-2005
114   ||  Purpose : Checks for the existance of Parent records.
115   ||  Known limitations, enhancements or remarks :
116   ||  Change History :
117   ||  Who             When            What
118   ||  (reverse chronological order - newest change first)
119   */
120   BEGIN
121 
122     IF (((old_references.submission_name = new_references.submission_name)) OR
123         ((new_references.submission_name IS NULL))) THEN
124       NULL;
125     ELSIF NOT igs_he_submsn_header_pkg.get_pk_for_validation (
126                 new_references.submission_name
127               ) THEN
128       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
129       igs_ge_msg_stack.add;
130       app_exception.raise_exception;
131     END IF;
132 
133   END check_parent_existance;
134 
135 
136   FUNCTION get_pk_for_validation (
137     x_sub_awd_id                        IN     NUMBER
138   ) RETURN BOOLEAN AS
139   /*
140   ||  Created By : [email protected]
141   ||  Created On : 04-DEC-2005
142   ||  Purpose : Validates the Primary Key of 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_submsn_awd
151       WHERE    sub_awd_id = x_sub_awd_id
152       FOR UPDATE NOWAIT;
153 
154     lv_rowid cur_rowid%RowType;
155 
156   BEGIN
157 
158     OPEN cur_rowid;
159     FETCH cur_rowid INTO lv_rowid;
160     IF (cur_rowid%FOUND) THEN
161       CLOSE cur_rowid;
162       RETURN(TRUE);
163     ELSE
164       CLOSE cur_rowid;
165       RETURN(FALSE);
166     END IF;
167 
168   END get_pk_for_validation;
169 
170 
171   FUNCTION get_uk_for_validation (
172     x_submission_name                   IN     VARCHAR2,
173     x_type                              IN     VARCHAR2,
174     x_key1                              IN     VARCHAR2,
175     x_key2                              IN     VARCHAR2,
176     x_key3                              IN     VARCHAR2
177   ) RETURN BOOLEAN AS
178   /*
179   ||  Created By : [email protected]
180   ||  Created On : 04-DEC-2005
181   ||  Purpose : Validates the Unique Keys of the table.
182   ||  Known limitations, enhancements or remarks :
183   ||  Change History :
184   ||  Who             When            What
185   ||  (reverse chronological order - newest change first)
186   */
187     CURSOR cur_rowid IS
188       SELECT   rowid
189       FROM     igs_he_submsn_awd
190       WHERE    submission_name = x_submission_name
191       AND      type = x_type
192       AND      key1 = x_key1
193       AND      ((key2 = x_key2) OR (key2 IS NULL AND x_key2 IS NULL))
194       AND      ((key3 = x_key3) OR (key3 IS NULL AND x_key3 IS NULL))
195       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
196 
197     lv_rowid cur_rowid%RowType;
198 
199   BEGIN
200 
201     OPEN cur_rowid;
202     FETCH cur_rowid INTO lv_rowid;
203     IF (cur_rowid%FOUND) THEN
204       CLOSE cur_rowid;
205         RETURN (true);
206         ELSE
207        CLOSE cur_rowid;
208       RETURN(FALSE);
209     END IF;
210 
211   END get_uk_for_validation ;
212 
213 
214   PROCEDURE get_fk_igs_he_submsn_header (
215     x_submission_name                   IN     VARCHAR2
216   ) AS
217   /*
218   ||  Created By : [email protected]
219   ||  Created On : 04-DEC-2005
220   ||  Purpose : Validates the Foreign Keys for the table.
221   ||  Known limitations, enhancements or remarks :
222   ||  Change History :
223   ||  Who             When            What
224   ||  (reverse chronological order - newest change first)
225   */
226     CURSOR cur_rowid IS
227       SELECT   rowid
228       FROM     igs_he_submsn_awd
229       WHERE   ((submission_name = x_submission_name));
230 
231     lv_rowid cur_rowid%RowType;
232 
233   BEGIN
234 
235     OPEN cur_rowid;
236     FETCH cur_rowid INTO lv_rowid;
237     IF (cur_rowid%FOUND) THEN
238       CLOSE cur_rowid;
239       fnd_message.set_name ('IGS', 'IGS_FOREIGN_KEY_REFERENCE');
240       igs_ge_msg_stack.add;
241       app_exception.raise_exception;
242       RETURN;
243     END IF;
244     CLOSE cur_rowid;
245 
246   END get_fk_igs_he_submsn_header;
247 
248 
249   PROCEDURE before_dml (
250     p_action                            IN     VARCHAR2,
251     x_rowid                             IN     VARCHAR2,
252     x_sub_awd_id                        IN     NUMBER,
253     x_submission_name                   IN     VARCHAR2,
254     x_type                              IN     VARCHAR2,
255     x_key1                              IN     VARCHAR2,
256     x_key2                              IN     VARCHAR2,
257     x_key3                              IN     VARCHAR2,
258     x_award_start_date                  IN     DATE,
259     x_award_end_date                    IN     DATE,
260     x_creation_date                     IN     DATE,
261     x_created_by                        IN     NUMBER,
262     x_last_update_date                  IN     DATE,
263     x_last_updated_by                   IN     NUMBER,
264     x_last_update_login                 IN     NUMBER
265   ) AS
266   /*
267   ||  Created By : [email protected]
268   ||  Created On : 04-DEC-2005
269   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
270   ||            Trigger Handlers for the table, before any DML operation.
271   ||  Known limitations, enhancements or remarks :
272   ||  Change History :
273   ||  Who             When            What
274   ||  (reverse chronological order - newest change first)
275   */
276   BEGIN
277 
278     set_column_values (
279       p_action,
280       x_rowid,
281       x_sub_awd_id,
282       x_submission_name,
283       x_type,
284       x_key1,
285       x_key2,
286       x_key3,
287       x_award_start_date,
288       x_award_end_date,
289       x_creation_date,
290       x_created_by,
291       x_last_update_date,
292       x_last_updated_by,
293       x_last_update_login
294     );
295 
296     IF (p_action = 'INSERT') THEN
297       -- Call all the procedures related to Before Insert.
298       IF ( get_pk_for_validation(
299              new_references.sub_awd_id
300            )
301          ) THEN
302         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
303         igs_ge_msg_stack.add;
304         app_exception.raise_exception;
305       END IF;
306       check_uniqueness;
307       check_parent_existance;
308     ELSIF (p_action = 'UPDATE') THEN
309       -- Call all the procedures related to Before Update.
310       check_uniqueness;
311       check_parent_existance;
312     ELSIF (p_action = 'VALIDATE_INSERT') THEN
313       -- Call all the procedures related to Before Insert.
314       IF ( get_pk_for_validation (
315              new_references.sub_awd_id
316            )
317          ) THEN
318         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
319         igs_ge_msg_stack.add;
320         app_exception.raise_exception;
321       END IF;
322       check_uniqueness;
323     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
324       check_uniqueness;
325     END IF;
326 
327   END before_dml;
328 
329 
330   PROCEDURE insert_row (
331     x_rowid                             IN OUT NOCOPY VARCHAR2,
332     x_sub_awd_id                        IN OUT NOCOPY NUMBER,
333     x_submission_name                   IN     VARCHAR2,
334     x_type                              IN     VARCHAR2,
335     x_key1                              IN     VARCHAR2,
336     x_key2                              IN     VARCHAR2,
337     x_key3                              IN     VARCHAR2,
338     x_award_start_date                  IN     DATE,
339     x_award_end_date                    IN     DATE,
340     x_mode                              IN     VARCHAR2
341   ) AS
342   /*
343   ||  Created By : [email protected]
344   ||  Created On : 04-DEC-2005
345   ||  Purpose : Handles the INSERT DML logic for the table.
346   ||  Known limitations, enhancements or remarks :
347   ||  Change History :
348   ||  Who             When            What
349   ||  (reverse chronological order - newest change first)
350   */
351 
352     x_last_update_date           DATE;
353     x_last_updated_by            NUMBER;
354     x_last_update_login          NUMBER;
355 
356   BEGIN
357 
358     x_last_update_date := SYSDATE;
359     IF (x_mode = 'I') THEN
360       x_last_updated_by := 1;
361       x_last_update_login := 0;
362     ELSIF (x_mode = 'R') THEN
363       x_last_updated_by := fnd_global.user_id;
364       IF (x_last_updated_by IS NULL) THEN
365         x_last_updated_by := -1;
366       END IF;
367       x_last_update_login := fnd_global.login_id;
368       IF (x_last_update_login IS NULL) THEN
369         x_last_update_login := -1;
370       END IF;
371     ELSE
372       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
373       fnd_message.set_token ('ROUTINE', 'IGS_HE_SUBMSN_AWD_PKG.INSERT_ROW');
374       igs_ge_msg_stack.add;
375       app_exception.raise_exception;
376     END IF;
377 
378     x_sub_awd_id := NULL;
379 
380     before_dml(
381       p_action                            => 'INSERT',
382       x_rowid                             => x_rowid,
383       x_sub_awd_id                        => x_sub_awd_id,
384       x_submission_name                   => x_submission_name,
385       x_type                              => x_type,
386       x_key1                              => x_key1,
387       x_key2                              => x_key2,
388       x_key3                              => x_key3,
389       x_award_start_date                  => x_award_start_date,
390       x_award_end_date                    => x_award_end_date,
391       x_creation_date                     => x_last_update_date,
392       x_created_by                        => x_last_updated_by,
393       x_last_update_date                  => x_last_update_date,
394       x_last_updated_by                   => x_last_updated_by,
395       x_last_update_login                 => x_last_update_login
396     );
397 
398     INSERT INTO igs_he_submsn_awd (
399       sub_awd_id,
400       submission_name,
401       type,
402       key1,
403       key2,
404       key3,
405       award_start_date,
406       award_end_date,
407       creation_date,
408       created_by,
409       last_update_date,
410       last_updated_by,
411       last_update_login
412     ) VALUES (
413       igs_he_submsn_awd_s.NEXTVAL,
414       new_references.submission_name,
415       new_references.type,
416       new_references.key1,
417       new_references.key2,
418       new_references.key3,
419       new_references.award_start_date,
420       new_references.award_end_date,
421       x_last_update_date,
422       x_last_updated_by,
423       x_last_update_date,
424       x_last_updated_by,
425       x_last_update_login
426     ) RETURNING ROWID, sub_awd_id INTO x_rowid, x_sub_awd_id;
427 
428   END insert_row;
429 
430 
431   PROCEDURE lock_row (
432     x_rowid                             IN     VARCHAR2,
433     x_sub_awd_id                        IN     NUMBER,
434     x_submission_name                   IN     VARCHAR2,
435     x_type                              IN     VARCHAR2,
436     x_key1                              IN     VARCHAR2,
437     x_key2                              IN     VARCHAR2,
438     x_key3                              IN     VARCHAR2,
439     x_award_start_date                  IN     DATE,
440     x_award_end_date                    IN     DATE
441   ) AS
442   /*
443   ||  Created By : [email protected]
444   ||  Created On : 04-DEC-2005
445   ||  Purpose : Handles the LOCK mechanism for the table.
446   ||  Known limitations, enhancements or remarks :
447   ||  Change History :
448   ||  Who             When            What
449   ||  (reverse chronological order - newest change first)
450   */
451     CURSOR c1 IS
455         key1,
452       SELECT
453         submission_name,
454         type,
456         key2,
457         key3,
458         award_start_date,
459         award_end_date
460       FROM  igs_he_submsn_awd
461       WHERE rowid = x_rowid
462       FOR UPDATE NOWAIT;
463 
464     tlinfo c1%ROWTYPE;
465 
466   BEGIN
467 
468     OPEN c1;
469     FETCH c1 INTO tlinfo;
470     IF (c1%notfound) THEN
471       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
472       igs_ge_msg_stack.add;
473       CLOSE c1;
474       app_exception.raise_exception;
475       RETURN;
476     END IF;
477     CLOSE c1;
478 
479     IF (
480         (tlinfo.submission_name = x_submission_name)
481         AND (tlinfo.type = x_type)
482         AND (tlinfo.key1 = x_key1)
483         AND ((tlinfo.key2 = x_key2) OR ((tlinfo.key2 IS NULL) AND (X_key2 IS NULL)))
484         AND ((tlinfo.key3 = x_key3) OR ((tlinfo.key3 IS NULL) AND (X_key3 IS NULL)))
485         AND (tlinfo.award_start_date = x_award_start_date)
486         AND (tlinfo.award_end_date = x_award_end_date)
487        ) THEN
488       NULL;
489     ELSE
490       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
491       igs_ge_msg_stack.add;
492       app_exception.raise_exception;
493     END IF;
494 
495     RETURN;
496 
497   END lock_row;
498 
499 
500   PROCEDURE update_row (
501     x_rowid                             IN     VARCHAR2,
502     x_sub_awd_id                        IN     NUMBER,
503     x_submission_name                   IN     VARCHAR2,
504     x_type                              IN     VARCHAR2,
505     x_key1                              IN     VARCHAR2,
506     x_key2                              IN     VARCHAR2,
507     x_key3                              IN     VARCHAR2,
508     x_award_start_date                  IN     DATE,
509     x_award_end_date                    IN     DATE,
510     x_mode                              IN     VARCHAR2
511   ) AS
512   /*
513   ||  Created By : [email protected]
514   ||  Created On : 04-DEC-2005
515   ||  Purpose : Handles the UPDATE DML logic for the table.
516   ||  Known limitations, enhancements or remarks :
517   ||  Change History :
518   ||  Who             When            What
519   ||  (reverse chronological order - newest change first)
520   */
521     x_last_update_date           DATE ;
522     x_last_updated_by            NUMBER;
523     x_last_update_login          NUMBER;
524 
525   BEGIN
526 
527     x_last_update_date := SYSDATE;
528     IF (X_MODE = 'I') THEN
529       x_last_updated_by := 1;
530       x_last_update_login := 0;
531     ELSIF (x_mode = 'R') THEN
532       x_last_updated_by := fnd_global.user_id;
533       IF x_last_updated_by IS NULL THEN
534         x_last_updated_by := -1;
535       END IF;
536       x_last_update_login := fnd_global.login_id;
537       IF (x_last_update_login IS NULL) THEN
538         x_last_update_login := -1;
539       END IF;
540     ELSE
541       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
542       fnd_message.set_token ('ROUTINE', 'IGS_HE_SUBMSN_AWD_PKG.UPDATE_ROW');
543       igs_ge_msg_stack.add;
544       app_exception.raise_exception;
545     END IF;
546 
547     before_dml(
548       p_action                            => 'UPDATE',
549       x_rowid                             => x_rowid,
550       x_sub_awd_id                        => x_sub_awd_id,
551       x_submission_name                   => x_submission_name,
552       x_type                              => x_type,
553       x_key1                              => x_key1,
554       x_key2                              => x_key2,
555       x_key3                              => x_key3,
556       x_award_start_date                  => x_award_start_date,
557       x_award_end_date                    => x_award_end_date,
558       x_creation_date                     => x_last_update_date,
559       x_created_by                        => x_last_updated_by,
560       x_last_update_date                  => x_last_update_date,
561       x_last_updated_by                   => x_last_updated_by,
562       x_last_update_login                 => x_last_update_login
563     );
564 
565     UPDATE igs_he_submsn_awd
566       SET
567         submission_name                   = new_references.submission_name,
568         type                              = new_references.type,
569         key1                              = new_references.key1,
570         key2                              = new_references.key2,
571         key3                              = new_references.key3,
572         award_start_date                  = new_references.award_start_date,
573         award_end_date                    = new_references.award_end_date,
574         last_update_date                  = x_last_update_date,
575         last_updated_by                   = x_last_updated_by,
576         last_update_login                 = x_last_update_login
577       WHERE rowid = x_rowid;
578 
579     IF (SQL%NOTFOUND) THEN
580       RAISE NO_DATA_FOUND;
581     END IF;
582 
583   END update_row;
584 
585 
586   PROCEDURE add_row (
587     x_rowid                             IN OUT NOCOPY VARCHAR2,
588     x_sub_awd_id                        IN OUT NOCOPY NUMBER,
589     x_submission_name                   IN     VARCHAR2,
590     x_type                              IN     VARCHAR2,
591     x_key1                              IN     VARCHAR2,
592     x_key2                              IN     VARCHAR2,
593     x_key3                              IN     VARCHAR2,
594     x_award_start_date                  IN     DATE,
595     x_award_end_date                    IN     DATE,
596     x_mode                              IN     VARCHAR2
597   ) AS
598   /*
599   ||  Created By : [email protected]
600   ||  Created On : 04-DEC-2005
601   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
602   ||  Known limitations, enhancements or remarks :
603   ||  Change History :
604   ||  Who             When            What
605   ||  (reverse chronological order - newest change first)
606   */
607     CURSOR c1 IS
608       SELECT   rowid
609       FROM     igs_he_submsn_awd
610       WHERE    sub_awd_id                        = x_sub_awd_id;
611 
612   BEGIN
613 
614     OPEN c1;
615     FETCH c1 INTO x_rowid;
616     IF (c1%NOTFOUND) THEN
617       CLOSE c1;
618 
619       insert_row (
620         x_rowid,
621         x_sub_awd_id,
622         x_submission_name,
623         x_type,
624         x_key1,
625         x_key2,
626         x_key3,
627         x_award_start_date,
628         x_award_end_date,
629         x_mode
630       );
631       RETURN;
632     END IF;
633     CLOSE c1;
634 
635     update_row (
636       x_rowid,
637       x_sub_awd_id,
638       x_submission_name,
639       x_type,
640       x_key1,
641       x_key2,
642       x_key3,
643       x_award_start_date,
644       x_award_end_date,
645       x_mode
646     );
647 
648   END add_row;
649 
650 
651   PROCEDURE delete_row (
652     x_rowid IN VARCHAR2
653   ) AS
654   /*
655   ||  Created By : [email protected]
656   ||  Created On : 04-DEC-2005
657   ||  Purpose : Handles the DELETE DML logic for the table.
658   ||  Known limitations, enhancements or remarks :
659   ||  Change History :
660   ||  Who             When            What
661   ||  (reverse chronological order - newest change first)
662   */
663   BEGIN
664 
665     before_dml (
666       p_action => 'DELETE',
667       x_rowid => x_rowid
668     );
669 
670     DELETE FROM igs_he_submsn_awd
671     WHERE rowid = x_rowid;
672 
673     IF (SQL%NOTFOUND) THEN
674       RAISE NO_DATA_FOUND;
675     END IF;
676 
677   END delete_row;
678 
679 
680 END igs_he_submsn_awd_pkg;