DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_USEC_CATEGORY_PKG

Source


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