DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_HE_AD_DTL_ALL_PKG

Source


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