DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_SUA_REF_CDS_PKG

Source


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