DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_CO_S_PERLT_RPTGP_PKG

Source


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