DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_RSV_EXT_PKG

Source


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