DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_AW_DP_TEACH_PRDS_PKG

Source


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