DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_NOTIFY_BE_PKG

Source


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