DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_OR_INST_STATS_PKG

Source


1 PACKAGE BODY igs_or_inst_stats_pkg AS
2 /* $Header: IGSOI29B.pls 115.5 2002/11/29 01:44:05 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_or_inst_stats%ROWTYPE;
6   new_references igs_or_inst_stats%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2 ,
11     x_inst_stat_id                      IN     NUMBER   ,
12     x_stat_type_cd                      IN     VARCHAR2 ,
13     x_party_id                          IN     NUMBER   ,
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 : [email protected]
22   ||  Created On : 30-JUL-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     IGS_OR_INST_STATS
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.inst_stat_id                      := x_inst_stat_id;
54     new_references.stat_type_cd                      := x_stat_type_cd;
55     new_references.party_id                          := x_party_id;
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   PROCEDURE check_uniqueness AS
73   /*
74   ||  Created By : [email protected]
75   ||  Created On : 30-JUL-2001
76   ||  Purpose : Handles the Unique Constraint logic defined for the columns.
77   ||  Known limitations, enhancements or remarks :
78   ||  Change History :
79   ||  Who             When            What
80   ||  (reverse chronological order - newest change first)
81   */
82   BEGIN
83 
84     IF ( get_uk_for_validation (
85            new_references.stat_type_cd,
86            new_references.party_id
87          )
88        ) THEN
89       fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
90       igs_ge_msg_stack.add;
91       app_exception.raise_exception;
92     END IF;
93 
94   END check_uniqueness;
95 
96 
97   PROCEDURE check_parent_existance AS
98   /*
99   ||  Created By : [email protected]
100   ||  Created On : 30-JUL-2001
101   ||  Purpose : Checks for the existance of Parent records.
102   ||  Known limitations, enhancements or remarks :
103   ||  Change History :
104   ||  Who             When            What
105   ||  (reverse chronological order - newest change first)
106   */
107   BEGIN
108 
109     IF (((old_references.stat_type_cd = new_references.stat_type_cd)) OR
110         ((new_references.stat_type_cd IS NULL))) THEN
111       NULL;
112     ELSIF NOT igs_lookups_view_pkg.get_pk_for_validation (
113 	            'OR_INST_STAT_TYPE',
114                 new_references.stat_type_cd
115               ) THEN
116       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
117       igs_ge_msg_stack.add;
118       app_exception.raise_exception;
119     END IF;
120 
121   END check_parent_existance;
122 
123 
124   PROCEDURE check_child_existance IS
125   /*
126   ||  Created By : [email protected]
127   ||  Created On : 30-JUL-2001
128   ||  Purpose : Checks for the existance of Child records.
129   ||  Known limitations, enhancements or remarks :
130   ||  Change History :
131   ||  Who             When            What
132   ||  (reverse chronological order - newest change first)
133   */
134   BEGIN
135 
136     igs_or_inst_stat_dtl_pkg.get_fk_igs_or_inst_stats (
137       old_references.inst_stat_id
138     );
139 
140   END check_child_existance;
141 
142 
143   FUNCTION get_pk_for_validation (
144     x_inst_stat_id                      IN     NUMBER
145   ) RETURN BOOLEAN AS
146   /*
147   ||  Created By : [email protected]
148   ||  Created On : 30-JUL-2001
149   ||  Purpose : Validates the Primary Key of the table.
150   ||  Known limitations, enhancements or remarks :
151   ||  Change History :
152   ||  Who             When            What
153   ||  (reverse chronological order - newest change first)
154   */
155     CURSOR cur_rowid IS
156       SELECT   rowid
157       FROM     igs_or_inst_stats
158       WHERE    inst_stat_id = x_inst_stat_id
159       FOR UPDATE NOWAIT;
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       RETURN(TRUE);
170     ELSE
171       CLOSE cur_rowid;
172       RETURN(FALSE);
173     END IF;
174 
175   END get_pk_for_validation;
176 
177 
178   FUNCTION get_uk_for_validation (
179     x_stat_type_cd                      IN     VARCHAR2,
180     x_party_id                          IN     NUMBER
181   ) RETURN BOOLEAN AS
182   /*
183   ||  Created By : [email protected]
184   ||  Created On : 30-JUL-2001
185   ||  Purpose : Validates the Unique Keys of 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_or_inst_stats
194       WHERE    stat_type_cd = x_stat_type_cd
195       AND      party_id = x_party_id
196       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
197 
198     lv_rowid cur_rowid%RowType;
199 
200   BEGIN
201 
202     OPEN cur_rowid;
203     FETCH cur_rowid INTO lv_rowid;
204     IF (cur_rowid%FOUND) THEN
205       CLOSE cur_rowid;
206         RETURN (true);
207         ELSE
208        CLOSE cur_rowid;
209       RETURN(FALSE);
210     END IF;
211 
212   END get_uk_for_validation ;
213 
214 
215   PROCEDURE before_dml (
216     p_action                            IN     VARCHAR2,
217     x_rowid                             IN     VARCHAR2 ,
218     x_inst_stat_id                      IN     NUMBER   ,
219     x_stat_type_cd                      IN     VARCHAR2 ,
220     x_party_id                          IN     NUMBER   ,
221     x_creation_date                     IN     DATE     ,
222     x_created_by                        IN     NUMBER   ,
223     x_last_update_date                  IN     DATE     ,
224     x_last_updated_by                   IN     NUMBER   ,
225     x_last_update_login                 IN     NUMBER
226   ) AS
227   /*
228   ||  Created By : [email protected]
229   ||  Created On : 30-JUL-2001
230   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
231   ||            Trigger Handlers for the table, before any DML operation.
232   ||  Known limitations, enhancements or remarks :
233   ||  Change History :
234   ||  Who             When            What
235   ||  (reverse chronological order - newest change first)
236   */
237   BEGIN
238 
239     set_column_values (
240       p_action,
241       x_rowid,
242       x_inst_stat_id,
243       x_stat_type_cd,
244       x_party_id,
245       x_creation_date,
246       x_created_by,
247       x_last_update_date,
248       x_last_updated_by,
249       x_last_update_login
250     );
251 
252     IF (p_action = 'INSERT') THEN
253       -- Call all the procedures related to Before Insert.
254       IF ( get_pk_for_validation(
255              new_references.inst_stat_id
256            )
257          ) THEN
258         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
259         igs_ge_msg_stack.add;
260         app_exception.raise_exception;
261       END IF;
262       check_uniqueness;
263       check_parent_existance;
264     ELSIF (p_action = 'UPDATE') THEN
265       -- Call all the procedures related to Before Update.
266       check_uniqueness;
267       check_parent_existance;
268     ELSIF (p_action = 'DELETE') THEN
269       -- Call all the procedures related to Before Delete.
270       check_child_existance;
271     ELSIF (p_action = 'VALIDATE_INSERT') THEN
272       -- Call all the procedures related to Before Insert.
273       IF ( get_pk_for_validation (
274              new_references.inst_stat_id
275            )
276          ) THEN
277         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
278         igs_ge_msg_stack.add;
279         app_exception.raise_exception;
280       END IF;
281       check_uniqueness;
282     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
283       check_uniqueness;
284     ELSIF (p_action = 'VALIDATE_DELETE') THEN
285       check_child_existance;
286     END IF;
287 
288   END before_dml;
289 
290 
291   PROCEDURE insert_row (
292     x_rowid                             IN OUT NOCOPY VARCHAR2,
293     x_inst_stat_id                      IN OUT NOCOPY NUMBER,
294     x_stat_type_cd                      IN     VARCHAR2,
295     x_party_id                          IN     NUMBER,
296     x_mode                              IN     VARCHAR2
297   ) AS
298   /*
299   ||  Created By : [email protected]
300   ||  Created On : 30-JUL-2001
301   ||  Purpose : Handles the INSERT DML logic for the table.
302   ||  Known limitations, enhancements or remarks :
303   ||  Change History :
304   ||  Who             When            What
305   ||  (reverse chronological order - newest change first)
306   */
307     CURSOR c IS
308       SELECT   rowid
309       FROM     igs_or_inst_stats
310       WHERE    inst_stat_id                      = x_inst_stat_id;
311 
312     x_last_update_date           DATE;
313     x_last_updated_by            NUMBER;
314     x_last_update_login          NUMBER;
315     x_request_id                 NUMBER;
316     x_program_id                 NUMBER;
317     x_program_application_id     NUMBER;
318     x_program_update_date        DATE;
319 
320   BEGIN
321 
322     x_last_update_date := SYSDATE;
323     IF (x_mode = 'I') THEN
324       x_last_updated_by := 1;
325       x_last_update_login := 0;
326     ELSIF (x_mode = 'R') THEN
327       x_last_updated_by := fnd_global.user_id;
328       IF (x_last_updated_by IS NULL) THEN
329         x_last_updated_by := -1;
330       END IF;
331       x_last_update_login := fnd_global.login_id;
332       IF (x_last_update_login IS NULL) THEN
333         x_last_update_login := -1;
334       END IF;
335       x_request_id             := fnd_global.conc_request_id;
336       x_program_id             := fnd_global.conc_program_id;
337       x_program_application_id := fnd_global.prog_appl_id;
338 
339       IF (x_request_id = -1) THEN
340         x_request_id             := NULL;
341         x_program_id             := NULL;
342         x_program_application_id := NULL;
343         x_program_update_date    := NULL;
344       ELSE
345         x_program_update_date    := SYSDATE;
346       END IF;
347     ELSE
348       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
349       igs_ge_msg_stack.add;
350       app_exception.raise_exception;
351     END IF;
352 
353     SELECT    igs_or_inst_stats_s.NEXTVAL
354     INTO      x_inst_stat_id
355     FROM      dual;
356 
357     before_dml(
358       p_action                            => 'INSERT',
359       x_rowid                             => x_rowid,
360       x_inst_stat_id                      => x_inst_stat_id,
361       x_stat_type_cd                      => x_stat_type_cd,
362       x_party_id                          => x_party_id,
363       x_creation_date                     => x_last_update_date,
364       x_created_by                        => x_last_updated_by,
365       x_last_update_date                  => x_last_update_date,
366       x_last_updated_by                   => x_last_updated_by,
367       x_last_update_login                 => x_last_update_login
368     );
369 
370     INSERT INTO igs_or_inst_stats (
371       inst_stat_id,
372       stat_type_cd,
373       party_id,
374       creation_date,
375       created_by,
376       last_update_date,
377       last_updated_by,
378       last_update_login,
379       request_id,
380       program_id,
381       program_application_id,
382       program_update_date
383     ) VALUES (
384       new_references.inst_stat_id,
385       new_references.stat_type_cd,
386       new_references.party_id,
387       x_last_update_date,
388       x_last_updated_by,
389       x_last_update_date,
390       x_last_updated_by,
391       x_last_update_login ,
392       x_request_id,
393       x_program_id,
394       x_program_application_id,
395       x_program_update_date
396     );
397 
398     OPEN c;
399     FETCH c INTO x_rowid;
400     IF (c%NOTFOUND) THEN
401       CLOSE c;
402       RAISE NO_DATA_FOUND;
403     END IF;
404     CLOSE c;
405 
406   END insert_row;
407 
408 
409   PROCEDURE lock_row (
410     x_rowid                             IN     VARCHAR2,
411     x_inst_stat_id                      IN     NUMBER,
412     x_stat_type_cd                      IN     VARCHAR2,
413     x_party_id                          IN     NUMBER
414   ) AS
415   /*
416   ||  Created By : [email protected]
417   ||  Created On : 30-JUL-2001
418   ||  Purpose : Handles the LOCK mechanism for the table.
419   ||  Known limitations, enhancements or remarks :
420   ||  Change History :
421   ||  Who             When            What
422   ||  (reverse chronological order - newest change first)
423   */
424     CURSOR c1 IS
425       SELECT
426         stat_type_cd,
427         party_id
431 
428       FROM  igs_or_inst_stats
429       WHERE rowid = x_rowid
430       FOR UPDATE NOWAIT;
432     tlinfo c1%ROWTYPE;
433 
434   BEGIN
435 
436     OPEN c1;
437     FETCH c1 INTO tlinfo;
438     IF (c1%notfound) THEN
439       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
440       igs_ge_msg_stack.add;
441       CLOSE c1;
442       app_exception.raise_exception;
443       RETURN;
444     END IF;
445     CLOSE c1;
446 
447     IF (
448         (tlinfo.stat_type_cd = x_stat_type_cd)
449         AND (tlinfo.party_id = x_party_id)
450        ) THEN
451       NULL;
452     ELSE
453       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
454       igs_ge_msg_stack.add;
455       app_exception.raise_exception;
456     END IF;
457 
458     RETURN;
459 
460   END lock_row;
461 
462 
463   PROCEDURE update_row (
464     x_rowid                             IN     VARCHAR2,
465     x_inst_stat_id                      IN     NUMBER,
466     x_stat_type_cd                      IN     VARCHAR2,
467     x_party_id                          IN     NUMBER,
468     x_mode                              IN     VARCHAR2
469   ) AS
470   /*
471   ||  Created By : [email protected]
472   ||  Created On : 30-JUL-2001
473   ||  Purpose : Handles the UPDATE DML logic for the table.
474   ||  Known limitations, enhancements or remarks :
475   ||  Change History :
476   ||  Who             When            What
477   ||  (reverse chronological order - newest change first)
478   */
479     x_last_update_date           DATE ;
480     x_last_updated_by            NUMBER;
481     x_last_update_login          NUMBER;
482     x_request_id                 NUMBER;
483     x_program_id                 NUMBER;
484     x_program_application_id     NUMBER;
485     x_program_update_date        DATE;
486 
487   BEGIN
488 
489     x_last_update_date := SYSDATE;
490     IF (X_MODE = 'I') THEN
491       x_last_updated_by := 1;
492       x_last_update_login := 0;
493     ELSIF (x_mode = 'R') THEN
494       x_last_updated_by := fnd_global.user_id;
495       IF x_last_updated_by IS NULL THEN
496         x_last_updated_by := -1;
497       END IF;
498       x_last_update_login := fnd_global.login_id;
499       IF (x_last_update_login IS NULL) THEN
500         x_last_update_login := -1;
501       END IF;
502     ELSE
503       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
504       igs_ge_msg_stack.add;
505       app_exception.raise_exception;
506     END IF;
507 
508     before_dml(
509       p_action                            => 'UPDATE',
510       x_rowid                             => x_rowid,
511       x_inst_stat_id                      => x_inst_stat_id,
512       x_stat_type_cd                      => x_stat_type_cd,
513       x_party_id                          => x_party_id,
514       x_creation_date                     => x_last_update_date,
515       x_created_by                        => x_last_updated_by,
516       x_last_update_date                  => x_last_update_date,
517       x_last_updated_by                   => x_last_updated_by,
518       x_last_update_login                 => x_last_update_login
519     );
520 
521     IF (x_mode = 'R') THEN
522       x_request_id := fnd_global.conc_request_id;
523       x_program_id := fnd_global.conc_program_id;
524       x_program_application_id := fnd_global.prog_appl_id;
525       IF (x_request_id =  -1) THEN
526         x_request_id := old_references.request_id;
527         x_program_id := old_references.program_id;
528         x_program_application_id := old_references.program_application_id;
529         x_program_update_date := old_references.program_update_date;
530       ELSE
531         x_program_update_date := SYSDATE;
532       END IF;
533     END IF;
534 
535     UPDATE igs_or_inst_stats
536       SET
537         stat_type_cd                      = new_references.stat_type_cd,
538         party_id                          = new_references.party_id,
539         last_update_date                  = x_last_update_date,
540         last_updated_by                   = x_last_updated_by,
541         last_update_login                 = x_last_update_login ,
542         request_id                        = x_request_id,
543         program_id                        = x_program_id,
544         program_application_id            = x_program_application_id,
545         program_update_date               = x_program_update_date
546       WHERE rowid = x_rowid;
547 
548     IF (SQL%NOTFOUND) THEN
549       RAISE NO_DATA_FOUND;
550     END IF;
551 
552   END update_row;
553 
554 
555   PROCEDURE add_row (
556     x_rowid                             IN OUT NOCOPY VARCHAR2,
557     x_inst_stat_id                      IN OUT NOCOPY NUMBER,
558     x_stat_type_cd                      IN     VARCHAR2,
559     x_party_id                          IN     NUMBER,
560     x_mode                              IN     VARCHAR2
561   ) AS
562   /*
563   ||  Created By : [email protected]
564   ||  Created On : 30-JUL-2001
565   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
566   ||  Known limitations, enhancements or remarks :
567   ||  Change History :
568   ||  Who             When            What
569   ||  (reverse chronological order - newest change first)
570   */
571     CURSOR c1 IS
572       SELECT   rowid
573       FROM     igs_or_inst_stats
574       WHERE    inst_stat_id                      = x_inst_stat_id;
575 
576   BEGIN
577 
578     OPEN c1;
579     FETCH c1 INTO x_rowid;
580     IF (c1%NOTFOUND) THEN
581       CLOSE c1;
582 
583       insert_row (
584         x_rowid,
585         x_inst_stat_id,
586         x_stat_type_cd,
587         x_party_id,
588         x_mode
589       );
590       RETURN;
591     END IF;
592     CLOSE c1;
593 
594     update_row (
595       x_rowid,
596       x_inst_stat_id,
597       x_stat_type_cd,
598       x_party_id,
599       x_mode
600     );
601 
602   END add_row;
603 
604 
605   PROCEDURE delete_row (
606     x_rowid IN VARCHAR2
607   ) AS
608   /*
609   ||  Created By : [email protected]
610   ||  Created On : 30-JUL-2001
611   ||  Purpose : Handles the DELETE DML logic for the table.
612   ||  Known limitations, enhancements or remarks :
613   ||  Change History :
614   ||  Who             When            What
615   ||  (reverse chronological order - newest change first)
616   */
617   BEGIN
618 
619     before_dml (
620       p_action => 'DELETE',
621       x_rowid => x_rowid
622     );
623 
624     DELETE FROM igs_or_inst_stats
625     WHERE rowid = x_rowid;
626 
627     IF (SQL%NOTFOUND) THEN
628       RAISE NO_DATA_FOUND;
629     END IF;
630 
631   END delete_row;
632 
633 
634 END igs_or_inst_stats_pkg;