DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_UC_FORM_QUALS_PKG

Source


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