DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_USR_ARG_PKG

Source


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