DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_DA_CNFG_FTR_PKG

Source


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