DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_CO_S_LTR_PR_RSTN_PKG

Source


1 PACKAGE BODY igs_co_s_ltr_pr_rstn_pkg AS
2 /* $Header: IGSLI20B.pls 115.5 2002/11/29 01:07:10 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_co_s_ltr_pr_rstn%ROWTYPE;
6   new_references igs_co_s_ltr_pr_rstn%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_s_letter_parameter_type           IN     VARCHAR2    DEFAULT NULL,
12     x_correspondence_type               IN     VARCHAR2    DEFAULT NULL,
13     x_creation_date                     IN     DATE        DEFAULT NULL,
14     x_created_by                        IN     NUMBER      DEFAULT NULL,
15     x_last_update_date                  IN     DATE        DEFAULT NULL,
16     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
17     x_last_update_login                 IN     NUMBER      DEFAULT NULL
18   ) AS
19   /*
20   ||  Created By : [email protected]
21   ||  Created On : 14-DEC-2000
22   ||  Purpose : Initialises the Old and New references for the columns of the table.
23   ||  Known limitations, enhancements or remarks :
24   ||  Change History :
25   ||  Who             When            What
26   ||  (reverse chronological order - newest change first)
27   */
28 
29     CURSOR cur_old_ref_values IS
30       SELECT   *
31       FROM     IGS_CO_S_LTR_PR_RSTN
32       WHERE    rowid = x_rowid;
33 
34   BEGIN
35 
36     l_rowid := x_rowid;
37 
38     -- Code for setting the Old and New Reference Values.
39     -- Populate Old Values.
40     OPEN cur_old_ref_values;
41     FETCH cur_old_ref_values INTO old_references;
42     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
43       CLOSE cur_old_ref_values;
44       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
45       igs_ge_msg_stack.add;
46       app_exception.raise_exception;
47       RETURN;
48     END IF;
49     CLOSE cur_old_ref_values;
50 
51     -- Populate New Values.
52     new_references.s_letter_parameter_type           := x_s_letter_parameter_type;
53     new_references.correspondence_type               := x_correspondence_type;
54 
55     IF (p_action = 'UPDATE') THEN
56       new_references.creation_date                   := old_references.creation_date;
57       new_references.created_by                      := old_references.created_by;
58     ELSE
59       new_references.creation_date                   := x_creation_date;
60       new_references.created_by                      := x_created_by;
61     END IF;
62 
63     new_references.last_update_date                  := x_last_update_date;
64     new_references.last_updated_by                   := x_last_updated_by;
65     new_references.last_update_login                 := x_last_update_login;
66 
67   END set_column_values;
68 
69 
70   PROCEDURE check_parent_existance AS
71   /*
72   ||  Created By : [email protected]
73   ||  Created On : 14-DEC-2000
74   ||  Purpose : Checks for the existance of Parent records.
75   ||  Known limitations, enhancements or remarks :
76   ||  Change History :
77   ||  Who             When            What
78   ||  (reverse chronological order - newest change first)
79   */
80   BEGIN
81 
82     IF (((old_references.correspondence_type = new_references.correspondence_type)) OR
83         ((new_references.correspondence_type IS NULL))) THEN
84       NULL;
85     ELSIF NOT igs_co_type_pkg.get_pk_for_validation (
86                 new_references.correspondence_type
87               ) THEN
88       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
89       igs_ge_msg_stack.add;
90       app_exception.raise_exception;
91     END IF;
92 
93     IF (((old_references.s_letter_parameter_type = new_references.s_letter_parameter_type)) OR
94         ((new_references.s_letter_parameter_type IS NULL))) THEN
95       NULL;
96     ELSIF NOT igs_co_s_ltr_param_pkg.get_pk_for_validation (
97                 new_references.s_letter_parameter_type
98               ) THEN
99       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
100       igs_ge_msg_stack.add;
101       app_exception.raise_exception;
102     END IF;
103 
104   END check_parent_existance;
105 
106 
107   FUNCTION get_pk_for_validation (
108     x_s_letter_parameter_type           IN     VARCHAR2,
109     x_correspondence_type               IN     VARCHAR2
110   ) RETURN BOOLEAN AS
111   /*
112   ||  Created By : [email protected]
113   ||  Created On : 14-DEC-2000
114   ||  Purpose : Validates the Primary Key of the table.
115   ||  Known limitations, enhancements or remarks :
116   ||  Change History :
117   ||  Who             When            What
118   ||  (reverse chronological order - newest change first)
119   */
120     CURSOR cur_rowid IS
121       SELECT   rowid
122       FROM     igs_co_s_ltr_pr_rstn
123       WHERE    s_letter_parameter_type = x_s_letter_parameter_type
124       AND      correspondence_type = x_correspondence_type
125       FOR UPDATE NOWAIT;
126 
127     lv_rowid cur_rowid%RowType;
128 
129   BEGIN
130 
131     OPEN cur_rowid;
132     FETCH cur_rowid INTO lv_rowid;
133     IF (cur_rowid%FOUND) THEN
134       CLOSE cur_rowid;
135       RETURN(TRUE);
136     ELSE
137       CLOSE cur_rowid;
138       RETURN(FALSE);
139     END IF;
140 
141   END get_pk_for_validation;
142 
143 
144   PROCEDURE get_fk_igs_co_type (
145     x_correspondence_type               IN     VARCHAR2
146   ) AS
147   /*
148   ||  Created By : [email protected]
149   ||  Created On : 14-DEC-2000
150   ||  Purpose : Validates the Foreign Keys for the table.
151   ||  Known limitations, enhancements or remarks :
152   ||  Change History :
153   ||  Who             When            What
154   ||  (reverse chronological order - newest change first)
155   */
156     CURSOR cur_rowid IS
157       SELECT   rowid
158       FROM     igs_co_s_ltr_pr_rstn
159       WHERE   ((correspondence_type = x_correspondence_type));
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       fnd_message.set_name ('IGS', 'IGS_CO_CORT_SLPR_FK');
170       igs_ge_msg_stack.add;
171       app_exception.raise_exception;
172       RETURN;
173     END IF;
174     CLOSE cur_rowid;
175 
176   END get_fk_igs_co_type;
177 
178 
179   PROCEDURE get_fk_igs_co_s_ltr_param (
180     x_s_letter_parameter_type           IN     VARCHAR2
181   ) AS
182   /*
183   ||  Created By : [email protected]
184   ||  Created On : 14-DEC-2000
185   ||  Purpose : Validates the Foreign Keys for the table.
186   ||  Known limitations, enhancements or remarks :
187   ||  Change History :
188   ||  Who             When            What
189   ||  (reverse chronological order - newest change first)
190   */
191     CURSOR cur_rowid IS
192       SELECT   rowid
193       FROM     igs_co_s_ltr_pr_rstn
194       WHERE   ((s_letter_parameter_type = x_s_letter_parameter_type));
195 
196     lv_rowid cur_rowid%RowType;
197 
198   BEGIN
199 
200     OPEN cur_rowid;
201     FETCH cur_rowid INTO lv_rowid;
202     IF (cur_rowid%FOUND) THEN
203       CLOSE cur_rowid;
204       fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
205       igs_ge_msg_stack.add;
206       app_exception.raise_exception;
207       RETURN;
208     END IF;
209     CLOSE cur_rowid;
210 
211   END get_fk_igs_co_s_ltr_param;
212 
213 
214   PROCEDURE before_dml (
215     p_action                            IN     VARCHAR2,
216     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
217     x_s_letter_parameter_type           IN     VARCHAR2    DEFAULT NULL,
218     x_correspondence_type               IN     VARCHAR2    DEFAULT NULL,
219     x_creation_date                     IN     DATE        DEFAULT NULL,
220     x_created_by                        IN     NUMBER      DEFAULT NULL,
221     x_last_update_date                  IN     DATE        DEFAULT NULL,
222     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
223     x_last_update_login                 IN     NUMBER      DEFAULT NULL
224   ) AS
225   /*
226   ||  Created By : [email protected]
227   ||  Created On : 14-DEC-2000
228   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
229   ||            Trigger Handlers for the table, before any DML operation.
230   ||  Known limitations, enhancements or remarks :
231   ||  Change History :
232   ||  Who             When            What
233   ||  (reverse chronological order - newest change first)
234   */
235   BEGIN
236 
237     set_column_values (
238       p_action,
239       x_rowid,
240       x_s_letter_parameter_type,
241       x_correspondence_type,
242       x_creation_date,
243       x_created_by,
244       x_last_update_date,
245       x_last_updated_by,
246       x_last_update_login
247     );
248 
249     IF (p_action = 'INSERT') THEN
250       -- Call all the procedures related to Before Insert.
251       IF ( get_pk_for_validation(
252              new_references.s_letter_parameter_type,
253              new_references.correspondence_type
254            )
255          ) THEN
256         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
257         igs_ge_msg_stack.add;
258         app_exception.raise_exception;
259       END IF;
260       check_parent_existance;
261     ELSIF (p_action = 'UPDATE') THEN
262       -- Call all the procedures related to Before Update.
263       check_parent_existance;
264     ELSIF (p_action = 'VALIDATE_INSERT') THEN
265       -- Call all the procedures related to Before Insert.
266       IF ( get_pk_for_validation (
267              new_references.s_letter_parameter_type,
268              new_references.correspondence_type
269            )
270          ) THEN
271         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
272         igs_ge_msg_stack.add;
273         app_exception.raise_exception;
274       END IF;
275     END IF;
276 
277   END before_dml;
278 
279 
280   PROCEDURE insert_row (
281     x_rowid                             IN OUT NOCOPY VARCHAR2,
282     x_s_letter_parameter_type           IN     VARCHAR2,
283     x_correspondence_type               IN     VARCHAR2,
284     x_mode                              IN     VARCHAR2 DEFAULT 'R'
285   ) AS
286   /*
287   ||  Created By : [email protected]
288   ||  Created On : 14-DEC-2000
289   ||  Purpose : Handles the INSERT DML logic for the table.
290   ||  Known limitations, enhancements or remarks :
291   ||  Change History :
292   ||  Who             When            What
293   ||  (reverse chronological order - newest change first)
294   */
295     CURSOR c IS
296       SELECT   rowid
297       FROM     igs_co_s_ltr_pr_rstn
298       WHERE    s_letter_parameter_type           = x_s_letter_parameter_type
299       AND      correspondence_type               = x_correspondence_type;
300 
301     x_last_update_date           DATE;
302     x_last_updated_by            NUMBER;
303     x_last_update_login          NUMBER;
304 
305   BEGIN
306 
307     x_last_update_date := SYSDATE;
308     IF (x_mode = 'I') THEN
309       x_last_updated_by := 1;
310       x_last_update_login := 0;
311     ELSIF (x_mode = 'R') THEN
312       x_last_updated_by := fnd_global.user_id;
313       IF (x_last_updated_by IS NULL) THEN
314         x_last_updated_by := -1;
315       END IF;
316       x_last_update_login := fnd_global.login_id;
317       IF (x_last_update_login IS NULL) THEN
318         x_last_update_login := -1;
319       END IF;
320     ELSE
321       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
322       igs_ge_msg_stack.add;
323       app_exception.raise_exception;
324     END IF;
325 
326     before_dml(
327       p_action                            => 'INSERT',
328       x_rowid                             => x_rowid,
329       x_s_letter_parameter_type           => x_s_letter_parameter_type,
330       x_correspondence_type               => x_correspondence_type,
331       x_creation_date                     => x_last_update_date,
332       x_created_by                        => x_last_updated_by,
333       x_last_update_date                  => x_last_update_date,
334       x_last_updated_by                   => x_last_updated_by,
335       x_last_update_login                 => x_last_update_login
336     );
337 
338     INSERT INTO igs_co_s_ltr_pr_rstn (
339       s_letter_parameter_type,
340       correspondence_type,
341       creation_date,
342       created_by,
343       last_update_date,
344       last_updated_by,
345       last_update_login
346     ) VALUES (
347       new_references.s_letter_parameter_type,
348       new_references.correspondence_type,
349       x_last_update_date,
350       x_last_updated_by,
351       x_last_update_date,
352       x_last_updated_by,
353       x_last_update_login
354     );
355 
356     OPEN c;
357     FETCH c INTO x_rowid;
358     IF (c%NOTFOUND) THEN
359       CLOSE c;
360       RAISE NO_DATA_FOUND;
361     END IF;
362     CLOSE c;
363 
364   END insert_row;
365 
366 
367   PROCEDURE lock_row (
368     x_rowid                             IN     VARCHAR2,
369     x_s_letter_parameter_type           IN     VARCHAR2,
370     x_correspondence_type               IN     VARCHAR2
371   ) AS
372   /*
373   ||  Created By : [email protected]
374   ||  Created On : 14-DEC-2000
375   ||  Purpose : Handles the LOCK mechanism for the table.
376   ||  Known limitations, enhancements or remarks :
377   ||  Change History :
378   ||  Who             When            What
379   ||  (reverse chronological order - newest change first)
380   */
381     CURSOR c1 IS
382       SELECT
383         rowid
384       FROM  igs_co_s_ltr_pr_rstn
385       WHERE rowid = x_rowid
386       FOR UPDATE NOWAIT;
387 
388     tlinfo c1%ROWTYPE;
389 
390   BEGIN
391 
392     OPEN c1;
393     FETCH c1 INTO tlinfo;
394     IF (c1%notfound) THEN
395       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
396       igs_ge_msg_stack.add;
397       CLOSE c1;
398       app_exception.raise_exception;
399       RETURN;
400     END IF;
401     CLOSE c1;
402 
403 
404     RETURN;
405 
406   END lock_row;
407 
408 
409   PROCEDURE delete_row (
410     x_rowid IN VARCHAR2
411   ) AS
412   /*
413   ||  Created By : [email protected]
414   ||  Created On : 14-DEC-2000
415   ||  Purpose : Handles the DELETE DML logic for the table.
416   ||  Known limitations, enhancements or remarks :
417   ||  Change History :
418   ||  Who             When            What
419   ||  (reverse chronological order - newest change first)
420   */
421   BEGIN
422 
423     before_dml (
424       p_action => 'DELETE',
425       x_rowid => x_rowid
426     );
427 
428     DELETE FROM igs_co_s_ltr_pr_rstn
429     WHERE rowid = x_rowid;
430 
431     IF (SQL%NOTFOUND) THEN
432       RAISE NO_DATA_FOUND;
433     END IF;
434 
435   END delete_row;
436 
437 
438 END igs_co_s_ltr_pr_rstn_pkg;