DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_USR_AVAL_PKG

Source


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