DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_SL_EDIT_REPORT_PKG

Source


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