DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_GR_RFMS_ERROR_PKG

Source


1 PACKAGE BODY igf_gr_rfms_error_pkg AS
2 /* $Header: IGFGI07B.pls 115.5 2002/11/28 14:16:43 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igf_gr_rfms_error%ROWTYPE;
6   new_references igf_gr_rfms_error%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_edit_code                         IN     VARCHAR2,
12     x_type                              IN     VARCHAR2,
13     x_message                           IN     VARCHAR2,
14     x_creation_date                     IN     DATE    ,
15     x_created_by                        IN     NUMBER  ,
16     x_last_update_date                  IN     DATE    ,
17     x_last_updated_by                   IN     NUMBER  ,
18     x_last_update_login                 IN     NUMBER
19   ) AS
20   /*
21   ||  Created By : adhawan
22   ||  Created On : 03-JAN-2001
23   ||  Purpose : Initialises the Old and New references for the columns of the table.
24   ||  Known limitations, enhancements or remarks :
25   ||  Change History :
26   ||  Who             When            What
27   ||  (reverse chronological order - newest change first)
28   */
29 
30     CURSOR cur_old_ref_values IS
31       SELECT   *
32       FROM     IGF_GR_RFMS_ERROR
33       WHERE    rowid = x_rowid;
34 
35   BEGIN
36 
37     l_rowid := x_rowid;
38 
39     -- Code for setting the Old and New Reference Values.
40     -- Populate Old Values.
41     OPEN cur_old_ref_values;
42     FETCH cur_old_ref_values INTO old_references;
43     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
44       CLOSE cur_old_ref_values;
45       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
46       igs_ge_msg_stack.add;
47       app_exception.raise_exception;
48       RETURN;
49     END IF;
50     CLOSE cur_old_ref_values;
51 
52     -- Populate New Values.
53     new_references.edit_code                         := x_edit_code;
54     new_references.type                              := x_type;
55     new_references.message                           := x_message;
56 
57     IF (p_action = 'UPDATE') THEN
58       new_references.creation_date                   := old_references.creation_date;
59       new_references.created_by                      := old_references.created_by;
60     ELSE
61       new_references.creation_date                   := x_creation_date;
62       new_references.created_by                      := x_created_by;
63     END IF;
64 
65     new_references.last_update_date                  := x_last_update_date;
66     new_references.last_updated_by                   := x_last_updated_by;
67     new_references.last_update_login                 := x_last_update_login;
68 
69   END set_column_values;
70 
71 
72   FUNCTION get_pk_for_validation (
73     x_edit_code                         IN     VARCHAR2
74   ) RETURN BOOLEAN AS
75   /*
76   ||  Created By : adhawan
77   ||  Created On : 03-JAN-2001
78   ||  Purpose : Validates the Primary Key of the table.
79   ||  Known limitations, enhancements or remarks :
80   ||  Change History :
81   ||  Who             When            What
82   ||  (reverse chronological order - newest change first)
83   */
84     CURSOR cur_rowid IS
85       SELECT   rowid
86       FROM     igf_gr_rfms_error
87       WHERE    edit_code = x_edit_code
88       FOR UPDATE NOWAIT;
89 
90     lv_rowid cur_rowid%RowType;
91 
92   BEGIN
93 
94     OPEN cur_rowid;
95     FETCH cur_rowid INTO lv_rowid;
96     IF (cur_rowid%FOUND) THEN
97       CLOSE cur_rowid;
98       RETURN(TRUE);
99     ELSE
100       CLOSE cur_rowid;
101       RETURN(FALSE);
102     END IF;
103 
104   END get_pk_for_validation;
105 
106 
107   PROCEDURE before_dml (
108     p_action                            IN     VARCHAR2,
109     x_rowid                             IN     VARCHAR2,
110     x_edit_code                         IN     VARCHAR2,
111     x_type                              IN     VARCHAR2,
112     x_message                           IN     VARCHAR2,
113     x_creation_date                     IN     DATE    ,
114     x_created_by                        IN     NUMBER  ,
115     x_last_update_date                  IN     DATE    ,
116     x_last_updated_by                   IN     NUMBER  ,
117     x_last_update_login                 IN     NUMBER
118   ) AS
119   /*
120   ||  Created By : adhawan
121   ||  Created On : 03-JAN-2001
122   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
123   ||            Trigger Handlers for the table, before any DML operation.
124   ||  Known limitations, enhancements or remarks :
125   ||  Change History :
126   ||  Who             When            What
127   ||  (reverse chronological order - newest change first)
128   */
129   BEGIN
130 
131     set_column_values (
132       p_action,
133       x_rowid,
134       x_edit_code,
135       x_type,
136       x_message,
137       x_creation_date,
138       x_created_by,
139       x_last_update_date,
140       x_last_updated_by,
141       x_last_update_login
142     );
143 
144     IF (p_action = 'INSERT') THEN
145       -- Call all the procedures related to Before Insert.
146       IF ( get_pk_for_validation(
147              new_references.edit_code
148            )
149          ) THEN
150         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
151         igs_ge_msg_stack.add;
152         app_exception.raise_exception;
153       END IF;
154     ELSIF (p_action = 'VALIDATE_INSERT') THEN
155       -- Call all the procedures related to Before Insert.
156       IF ( get_pk_for_validation (
157              new_references.edit_code
158            )
159          ) THEN
160         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
161         igs_ge_msg_stack.add;
162         app_exception.raise_exception;
163       END IF;
164     END IF;
165 
166   END before_dml;
167 
168 
169   PROCEDURE insert_row (
170     x_rowid                             IN OUT NOCOPY VARCHAR2,
171     x_edit_code                         IN     VARCHAR2,
172     x_type                              IN     VARCHAR2,
173     x_message                           IN     VARCHAR2,
174     x_mode                              IN     VARCHAR2
175   ) AS
176   /*
177   ||  Created By : adhawan
178   ||  Created On : 03-JAN-2001
179   ||  Purpose : Handles the INSERT DML logic for the table.
180   ||  Known limitations, enhancements or remarks :
181   ||  Change History :
182   ||  Who             When            What
183   ||  (reverse chronological order - newest change first)
184   */
185     CURSOR c IS
186       SELECT   rowid
187       FROM     igf_gr_rfms_error
188       WHERE    edit_code                         = x_edit_code;
189 
190     x_last_update_date           DATE;
191     x_last_updated_by            NUMBER;
192     x_last_update_login          NUMBER;
193     x_request_id                 NUMBER;
194     x_program_id                 NUMBER;
195     x_program_application_id     NUMBER;
196     x_program_update_date        DATE;
197 
198   BEGIN
199 
200     x_last_update_date := SYSDATE;
201     IF (x_mode = 'I') THEN
202       x_last_updated_by := 1;
203       x_last_update_login := 0;
204     ELSIF (x_mode = 'R') THEN
205       x_last_updated_by := fnd_global.user_id;
206       IF (x_last_updated_by IS NULL) THEN
207         x_last_updated_by := -1;
208       END IF;
209       x_last_update_login := fnd_global.login_id;
210       IF (x_last_update_login IS NULL) THEN
211         x_last_update_login := -1;
212       END IF;
213       x_request_id             := fnd_global.conc_request_id;
214       x_program_id             := fnd_global.conc_program_id;
215       x_program_application_id := fnd_global.prog_appl_id;
216 
217       IF (x_request_id = -1) THEN
218         x_request_id             := NULL;
219         x_program_id             := NULL;
220         x_program_application_id := NULL;
221         x_program_update_date    := NULL;
222       ELSE
223         x_program_update_date    := SYSDATE;
224       END IF;
225     ELSE
226       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
227       igs_ge_msg_stack.add;
228       app_exception.raise_exception;
229     END IF;
230 
231     before_dml(
232       p_action                            => 'INSERT',
233       x_rowid                             => x_rowid,
234       x_edit_code                         => x_edit_code,
235       x_type                              => x_type,
236       x_message                           => x_message,
237       x_creation_date                     => x_last_update_date,
238       x_created_by                        => x_last_updated_by,
239       x_last_update_date                  => x_last_update_date,
240       x_last_updated_by                   => x_last_updated_by,
241       x_last_update_login                 => x_last_update_login
242     );
243 
244     INSERT INTO igf_gr_rfms_error (
245       edit_code,
246       type,
247       message,
248       creation_date,
249       created_by,
250       last_update_date,
251       last_updated_by,
252       last_update_login,
253       request_id,
254       program_id,
255       program_application_id,
256       program_update_date
257     ) VALUES (
258       new_references.edit_code,
259       new_references.type,
260       new_references.message,
261       x_last_update_date,
262       x_last_updated_by,
263       x_last_update_date,
264       x_last_updated_by,
265       x_last_update_login ,
266       x_request_id,
267       x_program_id,
268       x_program_application_id,
269       x_program_update_date
270     );
271 
272     OPEN c;
273     FETCH c INTO x_rowid;
274     IF (c%NOTFOUND) THEN
275       CLOSE c;
276       RAISE NO_DATA_FOUND;
277     END IF;
278     CLOSE c;
279 
280   END insert_row;
281 
282 
283   PROCEDURE lock_row (
284     x_rowid                             IN     VARCHAR2,
285     x_edit_code                         IN     VARCHAR2,
286     x_type                              IN     VARCHAR2,
287     x_message                           IN     VARCHAR2
288   ) AS
289   /*
290   ||  Created By : adhawan
291   ||  Created On : 03-JAN-2001
292   ||  Purpose : Handles the LOCK mechanism for the table.
293   ||  Known limitations, enhancements or remarks :
294   ||  Change History :
295   ||  Who             When            What
296   ||  (reverse chronological order - newest change first)
297   */
298     CURSOR c1 IS
299       SELECT
300         type,
301         message
302       FROM  igf_gr_rfms_error
303       WHERE rowid = x_rowid
304       FOR UPDATE NOWAIT;
305 
306     tlinfo c1%ROWTYPE;
307 
308   BEGIN
309 
310     OPEN c1;
311     FETCH c1 INTO tlinfo;
312     IF (c1%notfound) THEN
313       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
314       igs_ge_msg_stack.add;
315       CLOSE c1;
316       app_exception.raise_exception;
317       RETURN;
318     END IF;
319     CLOSE c1;
320 
321     IF (
322         (tlinfo.type = x_type)
323         AND (tlinfo.message = x_message)
324        ) THEN
325       NULL;
326     ELSE
327       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
328       igs_ge_msg_stack.add;
329       app_exception.raise_exception;
330     END IF;
331 
332     RETURN;
333 
334   END lock_row;
335 
336 
337   PROCEDURE update_row (
338     x_rowid                             IN     VARCHAR2,
339     x_edit_code                         IN     VARCHAR2,
340     x_type                              IN     VARCHAR2,
341     x_message                           IN     VARCHAR2,
342     x_mode                              IN     VARCHAR2
343   ) AS
344   /*
345   ||  Created By : adhawan
346   ||  Created On : 03-JAN-2001
347   ||  Purpose : Handles the UPDATE DML logic 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     x_last_update_date           DATE ;
354     x_last_updated_by            NUMBER;
355     x_last_update_login          NUMBER;
356     x_request_id                 NUMBER;
357     x_program_id                 NUMBER;
358     x_program_application_id     NUMBER;
359     x_program_update_date        DATE;
360 
361   BEGIN
362 
363     x_last_update_date := SYSDATE;
364     IF (X_MODE = 'I') THEN
365       x_last_updated_by := 1;
366       x_last_update_login := 0;
367     ELSIF (x_mode = 'R') THEN
368       x_last_updated_by := fnd_global.user_id;
369       IF x_last_updated_by IS NULL THEN
370         x_last_updated_by := -1;
371       END IF;
372       x_last_update_login := fnd_global.login_id;
373       IF (x_last_update_login IS NULL) THEN
374         x_last_update_login := -1;
375       END IF;
376     ELSE
377       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
378       igs_ge_msg_stack.add;
379       app_exception.raise_exception;
380     END IF;
381 
382     before_dml(
383       p_action                            => 'UPDATE',
384       x_rowid                             => x_rowid,
385       x_edit_code                         => x_edit_code,
386       x_type                              => x_type,
387       x_message                           => x_message,
388       x_creation_date                     => x_last_update_date,
389       x_created_by                        => x_last_updated_by,
390       x_last_update_date                  => x_last_update_date,
391       x_last_updated_by                   => x_last_updated_by,
392       x_last_update_login                 => x_last_update_login
393     );
394 
395     IF (x_mode = 'R') THEN
396       x_request_id := fnd_global.conc_request_id;
397       x_program_id := fnd_global.conc_program_id;
398       x_program_application_id := fnd_global.prog_appl_id;
399       IF (x_request_id =  -1) THEN
400         x_request_id := old_references.request_id;
401         x_program_id := old_references.program_id;
402         x_program_application_id := old_references.program_application_id;
403         x_program_update_date := old_references.program_update_date;
404       ELSE
405         x_program_update_date := SYSDATE;
406       END IF;
407     END IF;
408 
409     UPDATE igf_gr_rfms_error
410       SET
411         type                              = new_references.type,
412         message                           = new_references.message,
413         last_update_date                  = x_last_update_date,
414         last_updated_by                   = x_last_updated_by,
415         last_update_login                 = x_last_update_login ,
416         request_id                        = x_request_id,
417         program_id                        = x_program_id,
418         program_application_id            = x_program_application_id,
419         program_update_date               = x_program_update_date
420       WHERE rowid = x_rowid;
421 
422     IF (SQL%NOTFOUND) THEN
423       RAISE NO_DATA_FOUND;
424     END IF;
425 
426   END update_row;
427 
428 
429   PROCEDURE add_row (
430     x_rowid                             IN OUT NOCOPY VARCHAR2,
431     x_edit_code                         IN     VARCHAR2,
432     x_type                              IN     VARCHAR2,
433     x_message                           IN     VARCHAR2,
434     x_mode                              IN     VARCHAR2
435   ) AS
436   /*
437   ||  Created By : adhawan
438   ||  Created On : 03-JAN-2001
439   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
440   ||  Known limitations, enhancements or remarks :
441   ||  Change History :
442   ||  Who             When            What
443   ||  (reverse chronological order - newest change first)
444   */
445     CURSOR c1 IS
446       SELECT   rowid
447       FROM     igf_gr_rfms_error
448       WHERE    edit_code                         = x_edit_code;
449 
450   BEGIN
451 
452     OPEN c1;
453     FETCH c1 INTO x_rowid;
454     IF (c1%NOTFOUND) THEN
455       CLOSE c1;
456 
457       insert_row (
458         x_rowid,
459         x_edit_code,
460         x_type,
461         x_message,
462         x_mode
463       );
464       RETURN;
465     END IF;
466     CLOSE c1;
467 
468     update_row (
469       x_rowid,
470       x_edit_code,
471       x_type,
472       x_message,
473       x_mode
474     );
475 
476   END add_row;
477 
478 
479   PROCEDURE delete_row (
480     x_rowid IN VARCHAR2
481   ) AS
482   /*
483   ||  Created By : adhawan
484   ||  Created On : 03-JAN-2001
485   ||  Purpose : Handles the DELETE DML logic for the table.
486   ||  Known limitations, enhancements or remarks :
487   ||  Change History :
488   ||  Who             When            What
489   ||  (reverse chronological order - newest change first)
490   */
491   BEGIN
492 
493     before_dml (
494       p_action => 'DELETE',
495       x_rowid => x_rowid
496     );
497 
498     DELETE FROM igf_gr_rfms_error
499     WHERE rowid = x_rowid;
500 
501     IF (SQL%NOTFOUND) THEN
502       RAISE NO_DATA_FOUND;
503     END IF;
504 
505   END delete_row;
506 
507 
508 END igf_gr_rfms_error_pkg;