DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_SCHL_APLY_TO_PKG

Source


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