DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_FAC_OVR_WL_PKG

Source


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