DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_AW_AWD_RVSN_RSN_PKG

Source


1 PACKAGE BODY igf_aw_awd_rvsn_rsn_pkg AS
2 /* $Header: IGFWI32B.pls 115.7 2002/11/28 14:41:05 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igf_aw_awd_rvsn_rsn_all%ROWTYPE;
6   new_references igf_aw_awd_rvsn_rsn_all%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_rvsn_id                           IN     NUMBER      DEFAULT NULL,
12     x_rvsn_code                         IN     VARCHAR2    DEFAULT NULL,
13     x_descp                             IN     VARCHAR2    DEFAULT NULL,
14     x_active                            IN     VARCHAR2    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 : prchandr
23   ||  Created On : 01-JUN-2001
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     IGF_AW_AWD_RVSN_RSN_ALL
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.rvsn_id                           := x_rvsn_id;
55     new_references.rvsn_code                         := x_rvsn_code;
56     new_references.descp                             := x_descp;
57     new_references.active                            := x_active;
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_uniqueness AS
75   /*
76   ||  Created By : prchandr
77   ||  Created On : 01-JUN-2001
78   ||  Purpose : Handles the Unique Constraint logic defined for the columns.
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 ( get_uk_for_validation (
87            new_references.rvsn_code,
88            new_references.org_id
89          )
90        ) THEN
91       fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
92       igs_ge_msg_stack.add;
93       app_exception.raise_exception;
94     END IF;
95 
96   END check_uniqueness;
97 
98 
99   PROCEDURE check_child_existance IS
100   /*
101   ||  Created By : prchandr
102   ||  Created On : 01-JUN-2001
103   ||  Purpose : Checks for the existance of Child records.
104   ||  Known limitations, enhancements or remarks :
105   ||  Change History :
106   ||  Who             When            What
107   ||  (reverse chronological order - newest change first)
108   */
109   BEGIN
110 
111     igf_aw_award_pkg.get_fk_igf_aw_awd_rvsn_rsn (
112       old_references.rvsn_id
113     );
114 
115     igf_aw_awd_disb_pkg.get_fk_igf_aw_awd_rvsn_rsn (
116       old_references.rvsn_id
117     );
118 
119   END check_child_existance;
120 
121 
122   FUNCTION get_pk_for_validation (
123     x_rvsn_id                           IN     NUMBER
124   ) RETURN BOOLEAN AS
125   /*
126   ||  Created By : prchandr
127   ||  Created On : 01-JUN-2001
128   ||  Purpose : Validates the Primary Key of the table.
129   ||  Known limitations, enhancements or remarks :
130   ||  Change History :
131   ||  Who             When            What
132   ||  (reverse chronological order - newest change first)
133   */
134     CURSOR cur_rowid IS
135       SELECT   rowid
136       FROM     igf_aw_awd_rvsn_rsn_all
137       WHERE    rvsn_id = x_rvsn_id
138       FOR UPDATE NOWAIT;
139 
140     lv_rowid cur_rowid%RowType;
141 
142   BEGIN
143 
144     OPEN cur_rowid;
145     FETCH cur_rowid INTO lv_rowid;
146     IF (cur_rowid%FOUND) THEN
147       CLOSE cur_rowid;
148       RETURN(TRUE);
149     ELSE
150       CLOSE cur_rowid;
151       RETURN(FALSE);
152 
153     END IF;
154 
155   END get_pk_for_validation;
156 
157 
158   FUNCTION get_uk_for_validation (
159     x_rvsn_code                         IN     VARCHAR2,
160     x_org_id                            IN     NUMBER
161   ) RETURN BOOLEAN AS
162   /*
163   ||  Created By : prchandr
164   ||  Created On : 01-JUN-2001
165   ||  Purpose : Validates the Unique Keys of the table.
166   ||  Known limitations, enhancements or remarks :
167   ||  Change History :
168   ||  Who             When            What
169   ||  vvutukur      18-feb-20022     modified org_id check in cur_rowid cursor and selected from igf_aw_awd_rvsn_rsn instead
170   ||                                 of igf_aw_aed_rvsn_rsn_all for bug : 2222272 as part of SWSCR006 Build.
171   ||  adhawan         23-feb-02'      made the primary key incasesensitive by adding the UPPER clause
172   ||  2168913
173   ||  (reverse chronological order - newest change first)
174   */
175 
176     l_org_id     igf_aw_awd_rvsn_rsn_all.org_id%TYPE    DEFAULT igf_aw_gen.get_org_id;
177 
178     CURSOR cur_rowid IS
179       SELECT   rowid
180       FROM     igf_aw_awd_rvsn_rsn
181       WHERE    UPPER(rvsn_code) = UPPER(x_rvsn_code) -- BUG  2168913
182       AND      NVL(org_id,NVL(l_org_id,-99)) = NVL(l_org_id,-99)  --bug 2222272
183       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
184 
185     lv_rowid cur_rowid%RowType;
186 
187   BEGIN
188 
189     OPEN cur_rowid;
190     FETCH cur_rowid INTO lv_rowid;
191     IF (cur_rowid%FOUND) THEN
192       CLOSE cur_rowid;
193         RETURN (true);
194         ELSE
195        CLOSE cur_rowid;
196       RETURN(FALSE);
197     END IF;
198 
199   END get_uk_for_validation ;
200 
201 
202   PROCEDURE before_dml (
203     p_action                            IN     VARCHAR2,
204     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
205     x_rvsn_id                           IN     NUMBER      DEFAULT NULL,
206     x_rvsn_code                         IN     VARCHAR2    DEFAULT NULL,
207     x_descp                             IN     VARCHAR2    DEFAULT NULL,
208     x_active                            IN     VARCHAR2    DEFAULT NULL,
209     x_creation_date                     IN     DATE        DEFAULT NULL,
210     x_created_by                        IN     NUMBER      DEFAULT NULL,
211     x_last_update_date                  IN     DATE        DEFAULT NULL,
212     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
213     x_last_update_login                 IN     NUMBER      DEFAULT NULL
214   ) AS
215   /*
216   ||  Created By : prchandr
217   ||  Created On : 01-JUN-2001
218   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
219   ||            Trigger Handlers for the table, before any DML operation.
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     set_column_values (
228       p_action,
229       x_rowid,
230       x_rvsn_id,
231       x_rvsn_code,
232       x_descp,
233       x_active,
234       x_creation_date,
235       x_created_by,
236       x_last_update_date,
237       x_last_updated_by,
238       x_last_update_login
239     );
240 
241     IF (p_action = 'INSERT') THEN
242       -- Call all the procedures related to Before Insert.
243       IF ( get_pk_for_validation(
244              new_references.rvsn_id
245            )
246          ) THEN
247         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
248         igs_ge_msg_stack.add;
249         app_exception.raise_exception;
250       END IF;
251       check_uniqueness;
252     ELSIF (p_action = 'UPDATE') THEN
253       -- Call all the procedures related to Before Update.
254       check_uniqueness;
255     ELSIF (p_action = 'DELETE') THEN
256       -- Call all the procedures related to Before Delete.
257       check_child_existance;
258     ELSIF (p_action = 'VALIDATE_INSERT') THEN
259       -- Call all the procedures related to Before Insert.
260       IF ( get_pk_for_validation (
261              new_references.rvsn_id
262            )
263          ) THEN
264         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
265         igs_ge_msg_stack.add;
266         app_exception.raise_exception;
267       END IF;
268       check_uniqueness;
269     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
270       check_uniqueness;
271     ELSIF (p_action = 'VALIDATE_DELETE') THEN
272       check_child_existance;
273     END IF;
274 
275   END before_dml;
276 
277 
278   PROCEDURE insert_row (
279     x_rowid                             IN OUT NOCOPY VARCHAR2,
280     x_rvsn_id                           IN OUT NOCOPY NUMBER,
281     x_rvsn_code                         IN     VARCHAR2,
282     x_descp                             IN     VARCHAR2,
283     x_active                            IN     VARCHAR2,
284     x_mode                              IN     VARCHAR2 DEFAULT 'R'
285   ) AS
286   /*
287   ||  Created By : prchandr
288   ||  Created On : 01-JUN-2001
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     igf_aw_awd_rvsn_rsn_all
298       WHERE    rvsn_id                           = x_rvsn_id;
299 
300     x_last_update_date           DATE;
301     x_last_updated_by            NUMBER;
302     x_last_update_login          NUMBER;
303 
304   BEGIN
305 
306     x_last_update_date := SYSDATE;
307     IF (x_mode = 'I') THEN
308       x_last_updated_by := 1;
309       x_last_update_login := 0;
310     ELSIF (x_mode = 'R') THEN
311       x_last_updated_by := fnd_global.user_id;
312       IF (x_last_updated_by IS NULL) THEN
313         x_last_updated_by := -1;
314       END IF;
315       x_last_update_login := fnd_global.login_id;
316       IF (x_last_update_login IS NULL) THEN
317         x_last_update_login := -1;
318       END IF;
319     ELSE
320       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
321       igs_ge_msg_stack.add;
322       app_exception.raise_exception;
323     END IF;
324 
325     SELECT    igf_aw_awd_rvsn_rsn_s.NEXTVAL
326     INTO      x_rvsn_id
327     FROM      dual;
328 
329     new_references.org_id := igs_ge_gen_003.get_org_id;
330 
331     before_dml(
332       p_action                            => 'INSERT',
333       x_rowid                             => x_rowid,
334       x_rvsn_id                           => x_rvsn_id,
335       x_rvsn_code                         => x_rvsn_code,
336       x_descp                             => x_descp,
337       x_active                            => x_active,
338       x_creation_date                     => x_last_update_date,
339       x_created_by                        => x_last_updated_by,
340       x_last_update_date                  => x_last_update_date,
341       x_last_updated_by                   => x_last_updated_by,
342       x_last_update_login                 => x_last_update_login
343     );
344 
345     INSERT INTO igf_aw_awd_rvsn_rsn_all (
346       rvsn_id,
347       rvsn_code,
348       descp,
349       active,
350       org_id,
351       creation_date,
352       created_by,
353       last_update_date,
354       last_updated_by,
355       last_update_login
356     ) VALUES (
357       new_references.rvsn_id,
358       new_references.rvsn_code,
359       new_references.descp,
360       new_references.active,
361       new_references.org_id,
362       x_last_update_date,
363       x_last_updated_by,
364       x_last_update_date,
365       x_last_updated_by,
366       x_last_update_login
367     );
368 
369     OPEN c;
370     FETCH c INTO x_rowid;
371     IF (c%NOTFOUND) THEN
372       CLOSE c;
373       RAISE NO_DATA_FOUND;
374     END IF;
375     CLOSE c;
376 
377   END insert_row;
378 
379 
380   PROCEDURE lock_row (
381     x_rowid                             IN     VARCHAR2,
382     x_rvsn_id                           IN     NUMBER,
383     x_rvsn_code                         IN     VARCHAR2,
384     x_descp                             IN     VARCHAR2,
385     x_active                            IN     VARCHAR2
386   ) AS
387   /*
388   ||  Created By : prchandr
389   ||  Created On : 01-JUN-2001
390   ||  Purpose : Handles the LOCK mechanism for the table.
391   ||  Known limitations, enhancements or remarks :
392   ||  Change History :
393   ||  Who             When            What
394   ||  (reverse chronological order - newest change first)
395   */
396     CURSOR c1 IS
397       SELECT
398         rvsn_code,
399         descp,
400         active
401       FROM  igf_aw_awd_rvsn_rsn_all
402       WHERE rowid = x_rowid
403       FOR UPDATE NOWAIT;
404 
405     tlinfo c1%ROWTYPE;
406 
407   BEGIN
408 
409     OPEN c1;
410     FETCH c1 INTO tlinfo;
411     IF (c1%notfound) THEN
412       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
413       igs_ge_msg_stack.add;
414       CLOSE c1;
415       app_exception.raise_exception;
416       RETURN;
417     END IF;
418     CLOSE c1;
419 
420     IF (
421         (tlinfo.rvsn_code = x_rvsn_code)
422         AND (tlinfo.descp = x_descp)
423         AND (tlinfo.active = x_active)
424        ) THEN
425       NULL;
426     ELSE
427       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
428       igs_ge_msg_stack.add;
429       app_exception.raise_exception;
430     END IF;
431 
432     RETURN;
433 
434   END lock_row;
435 
436 
437   PROCEDURE update_row (
438     x_rowid                             IN     VARCHAR2,
439     x_rvsn_id                           IN     NUMBER,
440     x_rvsn_code                         IN     VARCHAR2,
441     x_descp                             IN     VARCHAR2,
442     x_active                            IN     VARCHAR2,
443     x_mode                              IN     VARCHAR2 DEFAULT 'R'
444   ) AS
445   /*
446   ||  Created By : prchandr
447   ||  Created On : 01-JUN-2001
448   ||  Purpose : Handles the UPDATE DML logic for the table.
449   ||  Known limitations, enhancements or remarks :
450   ||  Change History :
451   ||  Who             When            What
452   ||  (reverse chronological order - newest change first)
453   */
454     x_last_update_date           DATE ;
455     x_last_updated_by            NUMBER;
456     x_last_update_login          NUMBER;
457 
458   BEGIN
459 
460     x_last_update_date := SYSDATE;
461     IF (X_MODE = 'I') THEN
462       x_last_updated_by := 1;
463       x_last_update_login := 0;
464     ELSIF (x_mode = 'R') THEN
465       x_last_updated_by := fnd_global.user_id;
466       IF x_last_updated_by IS NULL THEN
467         x_last_updated_by := -1;
468       END IF;
469       x_last_update_login := fnd_global.login_id;
470       IF (x_last_update_login IS NULL) THEN
471         x_last_update_login := -1;
472       END IF;
473     ELSE
474       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
475       igs_ge_msg_stack.add;
476       app_exception.raise_exception;
477     END IF;
478 
479     before_dml(
480       p_action                            => 'UPDATE',
481       x_rowid                             => x_rowid,
482       x_rvsn_id                           => x_rvsn_id,
483       x_rvsn_code                         => x_rvsn_code,
484       x_descp                             => x_descp,
485       x_active                            => x_active,
486       x_creation_date                     => x_last_update_date,
487       x_created_by                        => x_last_updated_by,
488       x_last_update_date                  => x_last_update_date,
489       x_last_updated_by                   => x_last_updated_by,
490       x_last_update_login                 => x_last_update_login
491     );
492 
493     UPDATE igf_aw_awd_rvsn_rsn_all
494       SET
495         rvsn_code                         = new_references.rvsn_code,
496         descp                             = new_references.descp,
497         active                            = new_references.active,
498         last_update_date                  = x_last_update_date,
499         last_updated_by                   = x_last_updated_by,
500         last_update_login                 = x_last_update_login
501       WHERE rowid = x_rowid;
502 
503     IF (SQL%NOTFOUND) THEN
504       RAISE NO_DATA_FOUND;
505     END IF;
506 
507   END update_row;
508 
509 
510   PROCEDURE add_row (
511     x_rowid                             IN OUT NOCOPY VARCHAR2,
512     x_rvsn_id                           IN OUT NOCOPY NUMBER,
513     x_rvsn_code                         IN     VARCHAR2,
514     x_descp                             IN     VARCHAR2,
515     x_active                            IN     VARCHAR2,
516     x_mode                              IN     VARCHAR2 DEFAULT 'R'
517   ) AS
518   /*
519   ||  Created By : prchandr
520   ||  Created On : 01-JUN-2001
521   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
522   ||  Known limitations, enhancements or remarks :
523   ||  Change History :
524   ||  Who             When            What
525   ||  (reverse chronological order - newest change first)
526   */
527     CURSOR c1 IS
528       SELECT   rowid
529       FROM     igf_aw_awd_rvsn_rsn_all
530       WHERE    rvsn_id                           = x_rvsn_id;
531 
532   BEGIN
533 
534     OPEN c1;
535     FETCH c1 INTO x_rowid;
536     IF (c1%NOTFOUND) THEN
537       CLOSE c1;
538 
539       insert_row (
540         x_rowid,
541         x_rvsn_id,
542         x_rvsn_code,
543         x_descp,
544         x_active,
545         x_mode
546       );
547       RETURN;
548     END IF;
549     CLOSE c1;
550 
551     update_row (
552       x_rowid,
553       x_rvsn_id,
554       x_rvsn_code,
555       x_descp,
556       x_active,
557       x_mode
558     );
559 
560   END add_row;
561 
562 
563   PROCEDURE delete_row (
564     x_rowid IN VARCHAR2
565   ) AS
566   /*
567   ||  Created By : prchandr
568   ||  Created On : 01-JUN-2001
569   ||  Purpose : Handles the DELETE DML logic for the table.
570   ||  Known limitations, enhancements or remarks :
571   ||  Change History :
572   ||  Who             When            What
573   ||  (reverse chronological order - newest change first)
574   */
575   BEGIN
576 
577     before_dml (
578       p_action => 'DELETE',
579       x_rowid => x_rowid
580     );
581 
582     DELETE FROM igf_aw_awd_rvsn_rsn_all
583     WHERE rowid = x_rowid;
584 
585     IF (SQL%NOTFOUND) THEN
586       RAISE NO_DATA_FOUND;
587     END IF;
588 
589   END delete_row;
590 
591 
592 END igf_aw_awd_rvsn_rsn_pkg;