DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_STU_TRN_CMTS_PKG

Source


1 PACKAGE BODY igs_as_stu_trn_cmts_pkg AS
2 /* $Header: IGSDI78B.pls 115.1 2003/10/14 07:58:21 kdande noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_as_stu_trn_cmts%ROWTYPE;
6   new_references igs_as_stu_trn_cmts%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_comment_id                        IN     NUMBER,
12     x_comment_type_code                 IN     VARCHAR2,
13     x_comment_txt                       IN     VARCHAR2,
14     x_person_id                         IN     NUMBER,
15     x_course_cd                         IN     VARCHAR2,
16     x_course_type                       IN     VARCHAR2,
17     x_award_cd                          IN     VARCHAR2,
18     x_load_cal_type                     IN     VARCHAR2,
19     x_load_ci_sequence_number           IN     NUMBER,
20     x_unit_set_cd                       IN     VARCHAR2,
21     x_us_version_number                 IN     NUMBER,
22     x_uoo_id                            IN     NUMBER,
23     x_creation_date                     IN     DATE,
24     x_created_by                        IN     NUMBER,
25     x_last_update_date                  IN     DATE,
26     x_last_updated_by                   IN     NUMBER,
27     x_last_update_login                 IN     NUMBER
28   ) AS
29   /*
30   ||  Created By : [email protected]
31   ||  Created On : 22-SEP-2003
32   ||  Purpose : Initialises the Old and New references for the columns of the table.
33   ||  Known limitations, enhancements or remarks :
34   ||  Change History :
35   ||  Who             When            What
36   ||  (reverse chronological order - newest change first)
37   */
38 
39     CURSOR cur_old_ref_values IS
40       SELECT   *
41       FROM     igs_as_stu_trn_cmts
42       WHERE    rowid = x_rowid;
43 
44   BEGIN
45 
46     l_rowid := x_rowid;
47 
48     -- Code for setting the Old and New Reference Values.
49     -- Populate Old Values.
50     OPEN cur_old_ref_values;
51     FETCH cur_old_ref_values INTO old_references;
52     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
53       CLOSE cur_old_ref_values;
54       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
55       igs_ge_msg_stack.add;
56       app_exception.raise_exception;
57       RETURN;
58     END IF;
59     CLOSE cur_old_ref_values;
60 
61     -- Populate New Values.
62     new_references.comment_id                        := x_comment_id;
63     new_references.comment_type_code                 := x_comment_type_code;
64     new_references.comment_txt                       := x_comment_txt;
65     new_references.person_id                         := x_person_id;
66     new_references.course_cd                         := x_course_cd;
67     new_references.course_type                       := x_course_type;
68     new_references.award_cd                          := x_award_cd;
69     new_references.load_cal_type                     := x_load_cal_type;
70     new_references.load_ci_sequence_number           := x_load_ci_sequence_number;
71     new_references.unit_set_cd                       := x_unit_set_cd;
72     new_references.us_version_number                 := x_us_version_number;
73     new_references.uoo_id                            := x_uoo_id;
74 
75     IF (p_action = 'UPDATE') THEN
76       new_references.creation_date                   := old_references.creation_date;
77       new_references.created_by                      := old_references.created_by;
78     ELSE
79       new_references.creation_date                   := x_creation_date;
80       new_references.created_by                      := x_created_by;
81     END IF;
82 
83     new_references.last_update_date                  := x_last_update_date;
84     new_references.last_updated_by                   := x_last_updated_by;
85     new_references.last_update_login                 := x_last_update_login;
86 
87   END set_column_values;
88 
89 
90   PROCEDURE check_uniqueness AS
91   /*
92   ||  Created By : [email protected]
93   ||  Created On : 22-SEP-2003
94   ||  Purpose : Handles the Unique Constraint logic defined for the columns.
95   ||  Known limitations, enhancements or remarks :
96   ||  Change History :
97   ||  Who             When            What
98   ||  (reverse chronological order - newest change first)
99   */
100   BEGIN
101 
102     IF ( get_uk_for_validation (
103            new_references.comment_type_code,
104            new_references.person_id,
105            new_references.course_cd,
106            new_references.course_type,
107            new_references.award_cd,
108            new_references.load_cal_type,
109            new_references.load_ci_sequence_number,
110            new_references.unit_set_cd,
111            new_references.us_version_number,
112            new_references.uoo_id
113          )
114        ) THEN
115       fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
116       igs_ge_msg_stack.add;
117       app_exception.raise_exception;
118     END IF;
119 
120   END check_uniqueness;
121 
122 
123   PROCEDURE check_parent_existance AS
124   /*
125   ||  Created By : [email protected]
126   ||  Created On : 22-SEP-2003
127   ||  Purpose : Checks for the existance of Parent records.
128   ||  Known limitations, enhancements or remarks :
129   ||  Change History :
130   ||  Who             When            What
131   ||  (reverse chronological order - newest change first)
132   */
133   BEGIN
134 
135     IF (((old_references.load_cal_type = new_references.load_cal_type) AND
136          (old_references.load_ci_sequence_number = new_references.load_ci_sequence_number)) OR
137         ((new_references.load_cal_type IS NULL) OR
138          (new_references.load_ci_sequence_number IS NULL))) THEN
139       NULL;
140     ELSIF NOT igs_ca_inst_pkg.get_pk_for_validation (
141                 new_references.load_cal_type,
142                 new_references.load_ci_sequence_number
143               ) THEN
144       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
145       igs_ge_msg_stack.add;
146       app_exception.raise_exception;
147     END IF;
148 
149     IF (((old_references.unit_set_cd = new_references.unit_set_cd) AND
150          (old_references.us_version_number = new_references.us_version_number)) OR
151         ((new_references.unit_set_cd IS NULL) OR
152          (new_references.us_version_number IS NULL))) THEN
153       NULL;
154     ELSIF NOT igs_en_unit_set_pkg.get_pk_for_validation (
155                 new_references.unit_set_cd,
156                 new_references.us_version_number
157               ) THEN
158       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
159       igs_ge_msg_stack.add;
160       app_exception.raise_exception;
161     END IF;
162 
163     IF (((old_references.award_cd = new_references.award_cd)) OR
164         ((new_references.award_cd IS NULL))) THEN
165       NULL;
166     ELSIF NOT igs_ps_awd_pkg.get_pk_for_validation (
167                 new_references.award_cd
168               ) THEN
169       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
170       igs_ge_msg_stack.add;
171       app_exception.raise_exception;
172     END IF;
173 
174     IF (((old_references.course_type = new_references.course_type)) OR
175         ((new_references.course_type IS NULL))) THEN
176       NULL;
177     ELSIF NOT igs_ps_type_pkg.get_pk_for_validation (
178                 new_references.course_type
179               ) THEN
180       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
181       igs_ge_msg_stack.add;
182       app_exception.raise_exception;
183     END IF;
184 
185     IF (((old_references.uoo_id = new_references.uoo_id)) OR
186         ((new_references.uoo_id IS NULL))) THEN
187       NULL;
188     ELSIF NOT igs_ps_unit_ofr_opt_pkg.get_uk_For_validation (
189                 new_references.uoo_id
190               ) THEN
191       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
192       igs_ge_msg_stack.add;
193       app_exception.raise_exception;
194     END IF;
195 
196     IF (((old_references.person_id = new_references.person_id) AND
197          (old_references.course_cd = new_references.course_cd)) OR
198         ((new_references.person_id IS NULL) OR
199          (new_references.course_cd IS NULL))) THEN
200       NULL;
201     ELSIF NOT igs_en_stdnt_ps_att_pkg.get_pk_for_validation (
202                 new_references.person_id,
203                 new_references.course_cd
204               ) THEN
205       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
206       igs_ge_msg_stack.add;
207       app_exception.raise_exception;
208     END IF;
209 
210   END check_parent_existance;
211 
212 
213   FUNCTION get_pk_for_validation (
214     x_comment_id                        IN     NUMBER
215   ) RETURN BOOLEAN AS
216   /*
217   ||  Created By : [email protected]
218   ||  Created On : 22-SEP-2003
219   ||  Purpose : Validates the Primary Key of the table.
220   ||  Known limitations, enhancements or remarks :
221   ||  Change History :
222   ||  Who             When            What
223   ||  (reverse chronological order - newest change first)
224   */
225     CURSOR cur_rowid IS
226       SELECT   rowid
227       FROM     igs_as_stu_trn_cmts
228       WHERE    comment_id = x_comment_id
229       FOR UPDATE NOWAIT;
230 
231     lv_rowid cur_rowid%RowType;
232 
233   BEGIN
234 
235     OPEN cur_rowid;
236     FETCH cur_rowid INTO lv_rowid;
237     IF (cur_rowid%FOUND) THEN
238       CLOSE cur_rowid;
239       RETURN(TRUE);
240     ELSE
241       CLOSE cur_rowid;
242       RETURN(FALSE);
243     END IF;
244 
245   END get_pk_for_validation;
246 
247 
248   FUNCTION get_uk_for_validation (
249     x_comment_type_code                 IN     VARCHAR2,
250     x_person_id                         IN     NUMBER,
251     x_course_cd                         IN     VARCHAR2,
252     x_course_type                       IN     VARCHAR2,
253     x_award_cd                          IN     VARCHAR2,
254     x_load_cal_type                     IN     VARCHAR2,
255     x_load_ci_sequence_number           IN     NUMBER,
256     x_unit_set_cd                       IN     VARCHAR2,
257     x_us_version_number                 IN     NUMBER,
258     x_uoo_id                            IN     NUMBER
259   ) RETURN BOOLEAN AS
260   /*
261   ||  Created By : [email protected]
262   ||  Created On : 22-SEP-2003
263   ||  Purpose : Validates the Unique Keys of the table.
264   ||  Known limitations, enhancements or remarks :
265   ||  Change History :
266   ||  Who             When            What
267   ||  (reverse chronological order - newest change first)
268   */
269     CURSOR cur_rowid IS
270       SELECT   rowid
271       FROM     igs_as_stu_trn_cmts
272       WHERE    comment_type_code = x_comment_type_code
273       AND      person_id = x_person_id
274       AND      ((course_cd = x_course_cd) OR (course_cd IS NULL AND x_course_cd IS NULL))
275       AND      ((course_type = x_course_type) OR (course_type IS NULL AND x_course_type IS NULL))
276       AND      ((award_cd = x_award_cd) OR (award_cd IS NULL AND x_award_cd IS NULL))
277       AND      ((load_cal_type = x_load_cal_type) OR (load_cal_type IS NULL AND x_load_cal_type IS NULL))
278       AND      ((load_ci_sequence_number = x_load_ci_sequence_number) OR (load_ci_sequence_number IS NULL AND x_load_ci_sequence_number IS NULL))
279       AND      ((unit_set_cd = x_unit_set_cd) OR (unit_set_cd IS NULL AND x_unit_set_cd IS NULL))
280       AND      ((us_version_number = x_us_version_number) OR (us_version_number IS NULL AND x_us_version_number IS NULL))
281       AND      ((uoo_id = x_uoo_id) OR (uoo_id IS NULL AND x_uoo_id IS NULL))
282       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
283 
284     lv_rowid cur_rowid%RowType;
285 
286   BEGIN
287 
288     OPEN cur_rowid;
289     FETCH cur_rowid INTO lv_rowid;
290     IF (cur_rowid%FOUND) THEN
291       CLOSE cur_rowid;
292         RETURN (true);
293         ELSE
294        CLOSE cur_rowid;
295       RETURN(FALSE);
296     END IF;
297 
298   END get_uk_for_validation ;
299 
300 
301   PROCEDURE get_fk_igs_ca_inst (
302     x_cal_type                          IN     VARCHAR2,
303     x_sequence_number                   IN     NUMBER
304   ) AS
305   /*
306   ||  Created By : [email protected]
307   ||  Created On : 22-SEP-2003
308   ||  Purpose : Validates the Foreign Keys for the table.
309   ||  Known limitations, enhancements or remarks :
310   ||  Change History :
311   ||  Who             When            What
312   ||  (reverse chronological order - newest change first)
313   */
314     CURSOR cur_rowid IS
315       SELECT   rowid
316       FROM     igs_as_stu_trn_cmts
317       WHERE   ((load_cal_type = x_cal_type) AND
318                (load_ci_sequence_number = x_sequence_number));
319 
320     lv_rowid cur_rowid%RowType;
321 
322   BEGIN
323 
324     OPEN cur_rowid;
325     FETCH cur_rowid INTO lv_rowid;
326     IF (cur_rowid%FOUND) THEN
327       CLOSE cur_rowid;
328       fnd_message.set_name ('IGS', 'IGS_GE_CHILD_REC_XS');
329       igs_ge_msg_stack.add;
330       app_exception.raise_exception;
331       RETURN;
332     END IF;
333     CLOSE cur_rowid;
334 
335   END get_fk_igs_ca_inst;
336 
337 
338   PROCEDURE get_fk_igs_en_unit_set (
339     x_unit_set_cd                       IN     VARCHAR2,
340     x_version_number                    IN     NUMBER
341   ) AS
342   /*
343   ||  Created By : [email protected]
344   ||  Created On : 22-SEP-2003
345   ||  Purpose : Validates the Foreign Keys for the table.
346   ||  Known limitations, enhancements or remarks :
347   ||  Change History :
348   ||  Who             When            What
349   ||  (reverse chronological order - newest change first)
350   */
351     CURSOR cur_rowid IS
352       SELECT   rowid
353       FROM     igs_as_stu_trn_cmts
354       WHERE   ((unit_set_cd = x_unit_set_cd) AND
355                (us_version_number = x_version_number));
356 
357     lv_rowid cur_rowid%RowType;
358 
359   BEGIN
360 
361     OPEN cur_rowid;
362     FETCH cur_rowid INTO lv_rowid;
363     IF (cur_rowid%FOUND) THEN
364       CLOSE cur_rowid;
365       fnd_message.set_name ('IGS', 'IGS_GE_CHILD_REC_XS');
366       igs_ge_msg_stack.add;
367       app_exception.raise_exception;
368       RETURN;
369     END IF;
370     CLOSE cur_rowid;
371 
372   END get_fk_igs_en_unit_set;
373 
374 
375   PROCEDURE get_fk_igs_ps_awd (
376     x_award_cd                          IN     VARCHAR2
377   ) AS
378   /*
379   ||  Created By : [email protected]
380   ||  Created On : 22-SEP-2003
381   ||  Purpose : Validates the Foreign Keys for the table.
382   ||  Known limitations, enhancements or remarks :
383   ||  Change History :
384   ||  Who             When            What
385   ||  (reverse chronological order - newest change first)
386   */
387     CURSOR cur_rowid IS
388       SELECT   rowid
389       FROM     igs_as_stu_trn_cmts
390       WHERE   ((award_cd = x_award_cd));
391 
392     lv_rowid cur_rowid%RowType;
393 
394   BEGIN
395 
396     OPEN cur_rowid;
397     FETCH cur_rowid INTO lv_rowid;
398     IF (cur_rowid%FOUND) THEN
399       CLOSE cur_rowid;
400       fnd_message.set_name ('IGS', 'IGS_GE_CHILD_REC_XS');
401       igs_ge_msg_stack.add;
402       app_exception.raise_exception;
403       RETURN;
404     END IF;
405     CLOSE cur_rowid;
406 
407   END get_fk_igs_ps_awd;
408 
409 
410   PROCEDURE get_fk_igs_ps_type (
411     x_course_type                       IN     VARCHAR2
412   ) AS
413   /*
414   ||  Created By : [email protected]
415   ||  Created On : 22-SEP-2003
416   ||  Purpose : Validates the Foreign Keys for the table.
417   ||  Known limitations, enhancements or remarks :
418   ||  Change History :
419   ||  Who             When            What
420   ||  (reverse chronological order - newest change first)
421   */
422     CURSOR cur_rowid IS
423       SELECT   rowid
424       FROM     igs_as_stu_trn_cmts
428 
425       WHERE   ((course_type = x_course_type));
426 
427     lv_rowid cur_rowid%RowType;
429   BEGIN
430 
431     OPEN cur_rowid;
432     FETCH cur_rowid INTO lv_rowid;
433     IF (cur_rowid%FOUND) THEN
434       CLOSE cur_rowid;
435       fnd_message.set_name ('IGS', 'IGS_GE_CHILD_REC_XS');
436       igs_ge_msg_stack.add;
437       app_exception.raise_exception;
438       RETURN;
439     END IF;
440     CLOSE cur_rowid;
441 
442   END get_fk_igs_ps_type;
443 
444 
445   PROCEDURE get_ufk_igs_ps_unit_ofr_opt (
446     x_uoo_id                            IN     NUMBER
447   ) AS
448   /*
449   ||  Created By : [email protected]
450   ||  Created On : 22-SEP-2003
451   ||  Purpose : Validates the Foreign Keys for the table.
452   ||  Known limitations, enhancements or remarks :
453   ||  Change History :
454   ||  Who             When            What
455   ||  (reverse chronological order - newest change first)
456   */
457     CURSOR cur_rowid IS
458       SELECT   rowid
459       FROM     igs_as_stu_trn_cmts
460       WHERE   ((uoo_id = x_uoo_id));
461 
462     lv_rowid cur_rowid%RowType;
463 
464   BEGIN
465 
466     OPEN cur_rowid;
467     FETCH cur_rowid INTO lv_rowid;
468     IF (cur_rowid%FOUND) THEN
469       CLOSE cur_rowid;
470       fnd_message.set_name ('IGS', 'IGS_GE_CHILD_REC_XS');
471       igs_ge_msg_stack.add;
472       app_exception.raise_exception;
473       RETURN;
474     END IF;
475     CLOSE cur_rowid;
476 
477   END get_ufk_igs_ps_unit_ofr_opt;
478 
479 
480   PROCEDURE get_fk_igs_en_stdnt_ps_att (
481     x_person_id                         IN     NUMBER,
482     x_course_cd                         IN     VARCHAR2
483   ) AS
484   /*
485   ||  Created By : [email protected]
486   ||  Created On : 22-SEP-2003
487   ||  Purpose : Validates the Foreign Keys for the table.
488   ||  Known limitations, enhancements or remarks :
489   ||  Change History :
490   ||  Who             When            What
491   ||  (reverse chronological order - newest change first)
492   */
493     CURSOR cur_rowid IS
494       SELECT   rowid
495       FROM     igs_as_stu_trn_cmts
496       WHERE   ((course_cd = x_course_cd) AND
497                (person_id = x_person_id));
498 
499     lv_rowid cur_rowid%RowType;
500 
501   BEGIN
502 
503     OPEN cur_rowid;
504     FETCH cur_rowid INTO lv_rowid;
505     IF (cur_rowid%FOUND) THEN
506       CLOSE cur_rowid;
507       fnd_message.set_name ('IGS', 'IGS_GE_CHILD_REC_XS');
508       igs_ge_msg_stack.add;
509       app_exception.raise_exception;
510       RETURN;
511     END IF;
512     CLOSE cur_rowid;
513 
514   END get_fk_igs_en_stdnt_ps_att;
515 
516 
517   PROCEDURE before_dml (
518     p_action                            IN     VARCHAR2,
519     x_rowid                             IN     VARCHAR2,
520     x_comment_id                        IN     NUMBER,
521     x_comment_type_code                 IN     VARCHAR2,
522     x_comment_txt                       IN     VARCHAR2,
523     x_person_id                         IN     NUMBER,
524     x_course_cd                         IN     VARCHAR2,
525     x_course_type                       IN     VARCHAR2,
526     x_award_cd                          IN     VARCHAR2,
527     x_load_cal_type                     IN     VARCHAR2,
528     x_load_ci_sequence_number           IN     NUMBER,
529     x_unit_set_cd                       IN     VARCHAR2,
530     x_us_version_number                 IN     NUMBER,
531     x_uoo_id                            IN     NUMBER,
532     x_creation_date                     IN     DATE,
533     x_created_by                        IN     NUMBER,
534     x_last_update_date                  IN     DATE,
535     x_last_updated_by                   IN     NUMBER,
536     x_last_update_login                 IN     NUMBER
537   ) AS
538   /*
539   ||  Created By : [email protected]
540   ||  Created On : 22-SEP-2003
541   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
542   ||            Trigger Handlers for the table, before any DML operation.
543   ||  Known limitations, enhancements or remarks :
544   ||  Change History :
545   ||  Who             When            What
546   ||  (reverse chronological order - newest change first)
547   */
548   BEGIN
549 
550     set_column_values (
551       p_action,
552       x_rowid,
553       x_comment_id,
554       x_comment_type_code,
555       x_comment_txt,
556       x_person_id,
557       x_course_cd,
558       x_course_type,
559       x_award_cd,
560       x_load_cal_type,
561       x_load_ci_sequence_number,
562       x_unit_set_cd,
563       x_us_version_number,
564       x_uoo_id,
565       x_creation_date,
566       x_created_by,
567       x_last_update_date,
568       x_last_updated_by,
569       x_last_update_login
570     );
571 
572     IF (p_action = 'INSERT') THEN
573       -- Call all the procedures related to Before Insert.
574       IF ( get_pk_for_validation(
575              new_references.comment_id
576            )
577          ) THEN
578         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
579         igs_ge_msg_stack.add;
580         app_exception.raise_exception;
581       END IF;
582       check_uniqueness;
583       check_parent_existance;
584     ELSIF (p_action = 'UPDATE') THEN
585       -- Call all the procedures related to Before Update.
586       check_uniqueness;
587       check_parent_existance;
588     ELSIF (p_action = 'VALIDATE_INSERT') THEN
589       -- Call all the procedures related to Before Insert.
590       IF ( get_pk_for_validation (
594         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
591              new_references.comment_id
592            )
593          ) THEN
595         igs_ge_msg_stack.add;
596         app_exception.raise_exception;
597       END IF;
598       check_uniqueness;
599     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
600       check_uniqueness;
601     END IF;
602 
603     IF (p_action IN ('VALIDATE_INSERT', 'VALIDATE_UPDATE', 'VALIDATE_DELETE')) THEN
604       l_rowid := NULL;
605     END IF;
606 
607   END before_dml;
608 
609 
610   PROCEDURE insert_row (
611     x_rowid                             IN OUT NOCOPY VARCHAR2,
612     x_comment_id                        IN OUT NOCOPY NUMBER,
613     x_comment_type_code                 IN     VARCHAR2,
614     x_comment_txt                       IN     VARCHAR2,
615     x_person_id                         IN     NUMBER,
616     x_course_cd                         IN     VARCHAR2,
617     x_course_type                       IN     VARCHAR2,
618     x_award_cd                          IN     VARCHAR2,
619     x_load_cal_type                     IN     VARCHAR2,
620     x_load_ci_sequence_number           IN     NUMBER,
621     x_unit_set_cd                       IN     VARCHAR2,
622     x_us_version_number                 IN     NUMBER,
623     x_uoo_id                            IN     NUMBER,
624     x_mode                              IN     VARCHAR2
625   ) AS
626   /*
627   ||  Created By : [email protected]
628   ||  Created On : 22-SEP-2003
629   ||  Purpose : Handles the INSERT DML logic for the table.
630   ||  Known limitations, enhancements or remarks :
631   ||  Change History :
632   ||  Who             When            What
633   ||  (reverse chronological order - newest change first)
634   */
635 
636     x_last_update_date           DATE;
637     x_last_updated_by            NUMBER;
638     x_last_update_login          NUMBER;
639 
640   BEGIN
641 
642     x_last_update_date := SYSDATE;
643     IF (x_mode = 'I') THEN
644       x_last_updated_by := 1;
645       x_last_update_login := 0;
646     ELSIF (x_mode = 'R') THEN
647       x_last_updated_by := fnd_global.user_id;
648       IF (x_last_updated_by IS NULL) THEN
649         x_last_updated_by := -1;
650       END IF;
651       x_last_update_login := fnd_global.login_id;
652       IF (x_last_update_login IS NULL) THEN
653         x_last_update_login := -1;
654       END IF;
655     ELSE
656       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
657       fnd_message.set_token ('ROUTINE', 'IGS_AS_STU_TRN_CMTS_PKG.INSERT_ROW');
658       igs_ge_msg_stack.add;
659       app_exception.raise_exception;
660     END IF;
661 
662     x_comment_id := NULL;
663 
664     before_dml(
665       p_action                            => 'INSERT',
666       x_rowid                             => x_rowid,
667       x_comment_id                        => x_comment_id,
668       x_comment_type_code                 => x_comment_type_code,
669       x_comment_txt                       => x_comment_txt,
670       x_person_id                         => x_person_id,
671       x_course_cd                         => x_course_cd,
672       x_course_type                       => x_course_type,
673       x_award_cd                          => x_award_cd,
674       x_load_cal_type                     => x_load_cal_type,
675       x_load_ci_sequence_number           => x_load_ci_sequence_number,
676       x_unit_set_cd                       => x_unit_set_cd,
677       x_us_version_number                 => x_us_version_number,
678       x_uoo_id                            => x_uoo_id,
679       x_creation_date                     => x_last_update_date,
680       x_created_by                        => x_last_updated_by,
681       x_last_update_date                  => x_last_update_date,
682       x_last_updated_by                   => x_last_updated_by,
683       x_last_update_login                 => x_last_update_login
684     );
685 
686     INSERT INTO igs_as_stu_trn_cmts (
687       comment_id,
688       comment_type_code,
689       comment_txt,
690       person_id,
691       course_cd,
692       course_type,
693       award_cd,
694       load_cal_type,
695       load_ci_sequence_number,
696       unit_set_cd,
697       us_version_number,
698       uoo_id,
699       creation_date,
700       created_by,
701       last_update_date,
702       last_updated_by,
703       last_update_login
704     ) VALUES (
705       igs_as_stu_trns_cmts_s.NEXTVAL,
706       new_references.comment_type_code,
707       new_references.comment_txt,
708       new_references.person_id,
709       new_references.course_cd,
710       new_references.course_type,
711       new_references.award_cd,
712       new_references.load_cal_type,
713       new_references.load_ci_sequence_number,
714       new_references.unit_set_cd,
715       new_references.us_version_number,
716       new_references.uoo_id,
717       x_last_update_date,
718       x_last_updated_by,
719       x_last_update_date,
723 
720       x_last_updated_by,
721       x_last_update_login
722     ) RETURNING ROWID, comment_id INTO x_rowid, x_comment_id;
724     l_rowid := NULL;
725 
726   END insert_row;
727 
728 
729   PROCEDURE lock_row (
730     x_rowid                             IN     VARCHAR2,
731     x_comment_id                        IN     NUMBER,
732     x_comment_type_code                 IN     VARCHAR2,
733     x_comment_txt                       IN     VARCHAR2,
734     x_person_id                         IN     NUMBER,
735     x_course_cd                         IN     VARCHAR2,
736     x_course_type                       IN     VARCHAR2,
737     x_award_cd                          IN     VARCHAR2,
738     x_load_cal_type                     IN     VARCHAR2,
739     x_load_ci_sequence_number           IN     NUMBER,
740     x_unit_set_cd                       IN     VARCHAR2,
741     x_us_version_number                 IN     NUMBER,
742     x_uoo_id                            IN     NUMBER
743   ) AS
744   /*
745   ||  Created By : [email protected]
746   ||  Created On : 22-SEP-2003
747   ||  Purpose : Handles the LOCK mechanism for the table.
748   ||  Known limitations, enhancements or remarks :
749   ||  Change History :
750   ||  Who             When            What
751   ||  (reverse chronological order - newest change first)
752   */
753     CURSOR c1 IS
754       SELECT
755         comment_type_code,
756         comment_txt,
757         person_id,
758         course_cd,
759         course_type,
760         award_cd,
761         load_cal_type,
762         load_ci_sequence_number,
763         unit_set_cd,
764         us_version_number,
765         uoo_id
766       FROM  igs_as_stu_trn_cmts
767       WHERE rowid = x_rowid
768       FOR UPDATE NOWAIT;
769 
770     tlinfo c1%ROWTYPE;
771 
772   BEGIN
773 
774     OPEN c1;
775     FETCH c1 INTO tlinfo;
776     IF (c1%notfound) THEN
777       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
778       igs_ge_msg_stack.add;
779       CLOSE c1;
780       app_exception.raise_exception;
781       RETURN;
782     END IF;
783     CLOSE c1;
784 
785     IF (
786         (tlinfo.comment_type_code = x_comment_type_code)
787         AND (tlinfo.comment_txt = x_comment_txt)
788         AND (tlinfo.person_id = x_person_id)
789         AND ((tlinfo.course_cd = x_course_cd) OR ((tlinfo.course_cd IS NULL) AND (X_course_cd IS NULL)))
790         AND ((tlinfo.course_type = x_course_type) OR ((tlinfo.course_type IS NULL) AND (X_course_type IS NULL)))
791         AND ((tlinfo.award_cd = x_award_cd) OR ((tlinfo.award_cd IS NULL) AND (X_award_cd IS NULL)))
792         AND ((tlinfo.load_cal_type = x_load_cal_type) OR ((tlinfo.load_cal_type IS NULL) AND (X_load_cal_type IS NULL)))
793         AND ((tlinfo.load_ci_sequence_number = x_load_ci_sequence_number) OR ((tlinfo.load_ci_sequence_number IS NULL) AND (X_load_ci_sequence_number IS NULL)))
794         AND ((tlinfo.unit_set_cd = x_unit_set_cd) OR ((tlinfo.unit_set_cd IS NULL) AND (X_unit_set_cd IS NULL)))
795         AND ((tlinfo.us_version_number = x_us_version_number) OR ((tlinfo.us_version_number IS NULL) AND (X_us_version_number IS NULL)))
796         AND ((tlinfo.uoo_id = x_uoo_id) OR ((tlinfo.uoo_id IS NULL) AND (X_uoo_id IS NULL)))
797        ) THEN
798       NULL;
799     ELSE
800       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
801       igs_ge_msg_stack.add;
802       app_exception.raise_exception;
803     END IF;
804 
805     RETURN;
806 
807   END lock_row;
808 
809 
810   PROCEDURE update_row (
811     x_rowid                             IN     VARCHAR2,
812     x_comment_id                        IN     NUMBER,
813     x_comment_type_code                 IN     VARCHAR2,
814     x_comment_txt                       IN     VARCHAR2,
815     x_person_id                         IN     NUMBER,
816     x_course_cd                         IN     VARCHAR2,
817     x_course_type                       IN     VARCHAR2,
818     x_award_cd                          IN     VARCHAR2,
819     x_load_cal_type                     IN     VARCHAR2,
820     x_load_ci_sequence_number           IN     NUMBER,
821     x_unit_set_cd                       IN     VARCHAR2,
822     x_us_version_number                 IN     NUMBER,
823     x_uoo_id                            IN     NUMBER,
824     x_mode                              IN     VARCHAR2
825   ) AS
826   /*
827   ||  Created By : [email protected]
828   ||  Created On : 22-SEP-2003
829   ||  Purpose : Handles the UPDATE DML logic for the table.
830   ||  Known limitations, enhancements or remarks :
831   ||  Change History :
832   ||  Who             When            What
833   ||  (reverse chronological order - newest change first)
834   */
835     x_last_update_date           DATE ;
836     x_last_updated_by            NUMBER;
837     x_last_update_login          NUMBER;
838 
839   BEGIN
840 
841     x_last_update_date := SYSDATE;
842     IF (X_MODE = 'I') THEN
843       x_last_updated_by := 1;
844       x_last_update_login := 0;
845     ELSIF (x_mode = 'R') THEN
846       x_last_updated_by := fnd_global.user_id;
847       IF x_last_updated_by IS NULL THEN
848         x_last_updated_by := -1;
849       END IF;
850       x_last_update_login := fnd_global.login_id;
851       IF (x_last_update_login IS NULL) THEN
852         x_last_update_login := -1;
853       END IF;
854     ELSE
855       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
856       fnd_message.set_token ('ROUTINE', 'IGS_AS_STU_TRN_CMTS_PKG.UPDATE_ROW');
857       igs_ge_msg_stack.add;
858       app_exception.raise_exception;
859     END IF;
860 
861     before_dml(
862       p_action                            => 'UPDATE',
863       x_rowid                             => x_rowid,
867       x_person_id                         => x_person_id,
864       x_comment_id                        => x_comment_id,
865       x_comment_type_code                 => x_comment_type_code,
866       x_comment_txt                       => x_comment_txt,
868       x_course_cd                         => x_course_cd,
869       x_course_type                       => x_course_type,
870       x_award_cd                          => x_award_cd,
871       x_load_cal_type                     => x_load_cal_type,
872       x_load_ci_sequence_number           => x_load_ci_sequence_number,
873       x_unit_set_cd                       => x_unit_set_cd,
874       x_us_version_number                 => x_us_version_number,
875       x_uoo_id                            => x_uoo_id,
876       x_creation_date                     => x_last_update_date,
877       x_created_by                        => x_last_updated_by,
878       x_last_update_date                  => x_last_update_date,
879       x_last_updated_by                   => x_last_updated_by,
880       x_last_update_login                 => x_last_update_login
881     );
882 
883     UPDATE igs_as_stu_trn_cmts
884       SET
885         comment_type_code                 = new_references.comment_type_code,
886         comment_txt                       = new_references.comment_txt,
887         person_id                         = new_references.person_id,
888         course_cd                         = new_references.course_cd,
889         course_type                       = new_references.course_type,
890         award_cd                          = new_references.award_cd,
891         load_cal_type                     = new_references.load_cal_type,
892         load_ci_sequence_number           = new_references.load_ci_sequence_number,
893         unit_set_cd                       = new_references.unit_set_cd,
894         us_version_number                 = new_references.us_version_number,
895         uoo_id                            = new_references.uoo_id,
896         last_update_date                  = x_last_update_date,
897         last_updated_by                   = x_last_updated_by,
898         last_update_login                 = x_last_update_login
899       WHERE rowid = x_rowid;
900 
901     IF (SQL%NOTFOUND) THEN
902       RAISE NO_DATA_FOUND;
903     END IF;
904 
905     l_rowid := NULL;
906 
907   END update_row;
908 
909 
910   PROCEDURE add_row (
911     x_rowid                             IN OUT NOCOPY VARCHAR2,
912     x_comment_id                        IN OUT NOCOPY NUMBER,
913     x_comment_type_code                 IN     VARCHAR2,
914     x_comment_txt                       IN     VARCHAR2,
915     x_person_id                         IN     NUMBER,
916     x_course_cd                         IN     VARCHAR2,
917     x_course_type                       IN     VARCHAR2,
918     x_award_cd                          IN     VARCHAR2,
919     x_load_cal_type                     IN     VARCHAR2,
920     x_load_ci_sequence_number           IN     NUMBER,
921     x_unit_set_cd                       IN     VARCHAR2,
922     x_us_version_number                 IN     NUMBER,
923     x_uoo_id                            IN     NUMBER,
924     x_mode                              IN     VARCHAR2
925   ) AS
926   /*
927   ||  Created By : [email protected]
928   ||  Created On : 22-SEP-2003
929   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
930   ||  Known limitations, enhancements or remarks :
931   ||  Change History :
932   ||  Who             When            What
933   ||  (reverse chronological order - newest change first)
934   */
935     CURSOR c1 IS
936       SELECT   rowid
937       FROM     igs_as_stu_trn_cmts
938       WHERE    comment_id                        = x_comment_id;
939 
940   BEGIN
941 
942     OPEN c1;
943     FETCH c1 INTO x_rowid;
944     IF (c1%NOTFOUND) THEN
945       CLOSE c1;
946 
947       insert_row (
948         x_rowid,
949         x_comment_id,
950         x_comment_type_code,
951         x_comment_txt,
952         x_person_id,
953         x_course_cd,
954         x_course_type,
955         x_award_cd,
956         x_load_cal_type,
957         x_load_ci_sequence_number,
958         x_unit_set_cd,
959         x_us_version_number,
960         x_uoo_id,
961         x_mode
962       );
963       RETURN;
964     END IF;
965     CLOSE c1;
966 
967     update_row (
968       x_rowid,
969       x_comment_id,
970       x_comment_type_code,
971       x_comment_txt,
972       x_person_id,
973       x_course_cd,
974       x_course_type,
975       x_award_cd,
976       x_load_cal_type,
977       x_load_ci_sequence_number,
978       x_unit_set_cd,
979       x_us_version_number,
980       x_uoo_id,
981       x_mode
982     );
983 
984   END add_row;
985 
986 
987   PROCEDURE delete_row (
988     x_rowid IN VARCHAR2
989   ) AS
990   /*
991   ||  Created By : [email protected]
992   ||  Created On : 22-SEP-2003
993   ||  Purpose : Handles the DELETE DML logic for the table.
994   ||  Known limitations, enhancements or remarks :
995   ||  Change History :
996   ||  Who             When            What
997   ||  (reverse chronological order - newest change first)
998   */
999   BEGIN
1000 
1001     before_dml (
1002       p_action => 'DELETE',
1003       x_rowid => x_rowid
1004     );
1005 
1006     DELETE FROM igs_as_stu_trn_cmts
1007     WHERE rowid = x_rowid;
1008 
1009     IF (SQL%NOTFOUND) THEN
1010       RAISE NO_DATA_FOUND;
1011     END IF;
1012 
1013     l_rowid := NULL;
1014 
1015   END delete_row;
1016 
1017 
1018 END igs_as_stu_trn_cmts_pkg;