DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_HOLD_REL_OVR_PKG

Source


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