DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_CO_LTR_PARAM_PKG

Source


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