DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_RSV_USEC_PRI_PKG

Source


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