DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_DSCP_ATTR_PKG

Source


1 PACKAGE BODY igs_ad_dscp_attr_pkg AS
2 /* $Header: IGSAIE1B.pls 115.5 2003/01/23 04:44:38 knag ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_ad_dscp_attr%ROWTYPE;
6   new_references igs_ad_dscp_attr%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_discrepancy_attr_id               IN     NUMBER      DEFAULT NULL,
12     x_src_cat_id                        IN     NUMBER      DEFAULT NULL,
13     x_attribute_name                    IN     VARCHAR2    DEFAULT NULL,
14     x_discrepancy_rule_cd               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 : pkpatel
23   ||  Created On : 18-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     IGS_AD_DSCP_ATTR
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.discrepancy_attr_id               := x_discrepancy_attr_id;
55     new_references.src_cat_id                        := x_src_cat_id;
56     new_references.attribute_name                    := x_attribute_name;
57     new_references.discrepancy_rule_cd               := x_discrepancy_rule_cd;
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 : pkpatel
77   ||  Created On : 18-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.src_cat_id,
88            new_references.attribute_name
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_parent_existance AS
100   /*
101   ||  Created By : pkpatel
102   ||  Created On : 18-JUN-2001
103   ||  Purpose : Checks for the existance of Parent 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     IF (((old_references.src_cat_id = new_references.src_cat_id)) OR
112         ((new_references.src_cat_id IS NULL))) THEN
113       NULL;
114     ELSIF NOT igs_ad_source_cat_pkg.get_pk_for_validation (
115                 new_references.src_cat_id
116               ) THEN
117       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
118       igs_ge_msg_stack.add;
119       app_exception.raise_exception;
120     END IF;
121 
122   END check_parent_existance;
123 
124 
125   FUNCTION get_pk_for_validation (
126     x_discrepancy_attr_id               IN     NUMBER
127   ) RETURN BOOLEAN AS
128   /*
129   ||  Created By : pkpatel
130   ||  Created On : 18-JUN-2001
131   ||  Purpose : Validates the Primary Key of the table.
132   ||  Known limitations, enhancements or remarks :
133   ||  Change History :
134   ||  Who             When            What
135   ||  (reverse chronological order - newest change first)
136   */
137     CURSOR cur_rowid IS
138       SELECT   rowid
139       FROM     igs_ad_dscp_attr
140       WHERE    discrepancy_attr_id = x_discrepancy_attr_id
141       FOR UPDATE NOWAIT;
142 
143     lv_rowid cur_rowid%RowType;
144 
145   BEGIN
146 
147     OPEN cur_rowid;
148     FETCH cur_rowid INTO lv_rowid;
149     IF (cur_rowid%FOUND) THEN
150       CLOSE cur_rowid;
151       RETURN(TRUE);
152     ELSE
153       CLOSE cur_rowid;
154       RETURN(FALSE);
155     END IF;
156 
157   END get_pk_for_validation;
158 
159 
160   FUNCTION get_uk_for_validation (
161     x_src_cat_id                        IN     NUMBER,
162     x_attribute_name                    IN     VARCHAR2
163   ) RETURN BOOLEAN AS
164   /*
165   ||  Created By : pkpatel
166   ||  Created On : 18-JUN-2001
167   ||  Purpose : Validates the Unique Keys of the table.
168   ||  Known limitations, enhancements or remarks :
169   ||  Change History :
170   ||  Who             When            What
171   ||  (reverse chronological order - newest change first)
172   */
173     CURSOR cur_rowid IS
174       SELECT   rowid
175       FROM     igs_ad_dscp_attr
176       WHERE    src_cat_id = x_src_cat_id
177       AND      attribute_name = x_attribute_name
178       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
179 
180     lv_rowid cur_rowid%RowType;
181 
182   BEGIN
183 
184     OPEN cur_rowid;
185     FETCH cur_rowid INTO lv_rowid;
186     IF (cur_rowid%FOUND) THEN
187       CLOSE cur_rowid;
188         RETURN (true);
189         ELSE
190        CLOSE cur_rowid;
191       RETURN(FALSE);
192     END IF;
193 
194   END get_uk_for_validation ;
195 
196 
197   PROCEDURE get_fk_igs_ad_source_cat_all (
198     x_src_cat_id                        IN     NUMBER
199   ) AS
200   /*
201   ||  Created By : pkpatel
202   ||  Created On : 18-JUN-2001
203   ||  Purpose : Validates the Foreign Keys for the table.
204   ||  Known limitations, enhancements or remarks :
205   ||  Change History :
206   ||  Who             When            What
207   ||  (reverse chronological order - newest change first)
208   */
209     CURSOR cur_rowid IS
210       SELECT   rowid
211       FROM     igs_ad_dscp_attr
212       WHERE   ((src_cat_id = x_src_cat_id));
213 
214     lv_rowid cur_rowid%RowType;
215 
216   BEGIN
217 
218     OPEN cur_rowid;
219     FETCH cur_rowid INTO lv_rowid;
220     IF (cur_rowid%FOUND) THEN
221       CLOSE cur_rowid;
222       fnd_message.set_name ('IGS', 'IGS_AD_ADDA_ADSC_FK');
223       igs_ge_msg_stack.add;
224       app_exception.raise_exception;
225       RETURN;
226     END IF;
227     CLOSE cur_rowid;
228 
229   END get_fk_igs_ad_source_cat_all;
230 
231 
232   PROCEDURE before_dml (
233     p_action                            IN     VARCHAR2,
234     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
235     x_discrepancy_attr_id               IN     NUMBER      DEFAULT NULL,
236     x_src_cat_id                        IN     NUMBER      DEFAULT NULL,
237     x_attribute_name                    IN     VARCHAR2    DEFAULT NULL,
238     x_discrepancy_rule_cd               IN     VARCHAR2    DEFAULT NULL,
239     x_creation_date                     IN     DATE        DEFAULT NULL,
240     x_created_by                        IN     NUMBER      DEFAULT NULL,
241     x_last_update_date                  IN     DATE        DEFAULT NULL,
242     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
243     x_last_update_login                 IN     NUMBER      DEFAULT NULL
244   ) AS
245   /*
246   ||  Created By : pkpatel
247   ||  Created On : 18-JUN-2001
248   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
249   ||            Trigger Handlers for the table, before any DML operation.
250   ||  Known limitations, enhancements or remarks :
251   ||  Change History :
252   ||  Who             When            What
253   ||  (reverse chronological order - newest change first)
254   */
255   BEGIN
256 
257     set_column_values (
258       p_action,
259       x_rowid,
260       x_discrepancy_attr_id,
261       x_src_cat_id,
262       x_attribute_name,
263       x_discrepancy_rule_cd,
264       x_creation_date,
265       x_created_by,
266       x_last_update_date,
267       x_last_updated_by,
268       x_last_update_login
269     );
270 
271     IF (p_action = 'INSERT') THEN
272       -- Call all the procedures related to Before Insert.
273       IF ( get_pk_for_validation(
274              new_references.discrepancy_attr_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       check_parent_existance;
283     ELSIF (p_action = 'UPDATE') THEN
284       -- Call all the procedures related to Before Update.
285       check_uniqueness;
286       check_parent_existance;
287     ELSIF (p_action = 'VALIDATE_INSERT') THEN
288       -- Call all the procedures related to Before Insert.
289       IF ( get_pk_for_validation (
290              new_references.discrepancy_attr_id
291            )
292          ) THEN
293         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
294         igs_ge_msg_stack.add;
295         app_exception.raise_exception;
296       END IF;
297       check_uniqueness;
298     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
299       check_uniqueness;
300     END IF;
301 
302   END before_dml;
303 
304 
305   PROCEDURE insert_row (
306     x_rowid                             IN OUT NOCOPY VARCHAR2,
307     x_discrepancy_attr_id               IN OUT NOCOPY NUMBER,
308     x_src_cat_id                        IN     NUMBER,
309     x_attribute_name                    IN     VARCHAR2,
310     x_discrepancy_rule_cd               IN     VARCHAR2,
311     x_mode                              IN     VARCHAR2 DEFAULT 'R'
312   ) AS
313   /*
314   ||  Created By : pkpatel
315   ||  Created On : 18-JUN-2001
316   ||  Purpose : Handles the INSERT DML logic for the table.
317   ||  Known limitations, enhancements or remarks :
318   ||  Change History :
319   ||  Who             When            What
320   ||  (reverse chronological order - newest change first)
321   */
322     CURSOR c IS
323       SELECT   rowid
324       FROM     igs_ad_dscp_attr
325       WHERE    discrepancy_attr_id               = x_discrepancy_attr_id;
326 
327     x_last_update_date           DATE;
328     x_last_updated_by            NUMBER;
329     x_last_update_login          NUMBER;
330 
331   BEGIN
332 
333     x_last_update_date := SYSDATE;
334     IF (x_mode = 'I') THEN
335       x_last_updated_by := 1;
336       x_last_update_login := 0;
337     ELSIF (x_mode = 'R') THEN
338       x_last_updated_by := fnd_global.user_id;
339       IF (x_last_updated_by IS NULL) THEN
340         x_last_updated_by := -1;
341       END IF;
342       x_last_update_login := fnd_global.login_id;
343       IF (x_last_update_login IS NULL) THEN
344         x_last_update_login := -1;
345       END IF;
346     ELSE
347       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
348       igs_ge_msg_stack.add;
349       app_exception.raise_exception;
350     END IF;
351 
352     x_discrepancy_attr_id := -1;
353     before_dml(
354       p_action                            => 'INSERT',
355       x_rowid                             => x_rowid,
356       x_discrepancy_attr_id               => x_discrepancy_attr_id,
357       x_src_cat_id                        => x_src_cat_id,
358       x_attribute_name                    => x_attribute_name,
359       x_discrepancy_rule_cd               => x_discrepancy_rule_cd,
360       x_creation_date                     => x_last_update_date,
361       x_created_by                        => x_last_updated_by,
362       x_last_update_date                  => x_last_update_date,
363       x_last_updated_by                   => x_last_updated_by,
364       x_last_update_login                 => x_last_update_login
365     );
366 
367     INSERT INTO igs_ad_dscp_attr (
368       discrepancy_attr_id,
369       src_cat_id,
370       attribute_name,
371       discrepancy_rule_cd,
372       creation_date,
373       created_by,
374       last_update_date,
375       last_updated_by,
376       last_update_login
377     ) VALUES (
378       IGS_AD_DSCP_ATTR_S.NEXTVAL,
379       new_references.src_cat_id,
380       new_references.attribute_name,
381       new_references.discrepancy_rule_cd,
382       x_last_update_date,
383       x_last_updated_by,
384       x_last_update_date,
385       x_last_updated_by,
386       x_last_update_login
387     )RETURNING discrepancy_attr_id INTO x_discrepancy_attr_id;
388 
389     OPEN c;
390     FETCH c INTO x_rowid;
391     IF (c%NOTFOUND) THEN
392       CLOSE c;
393       RAISE NO_DATA_FOUND;
394     END IF;
395     CLOSE c;
396 
397   END insert_row;
398 
399 
400   PROCEDURE lock_row (
401     x_rowid                             IN     VARCHAR2,
402     x_discrepancy_attr_id               IN     NUMBER,
403     x_src_cat_id                        IN     NUMBER,
404     x_attribute_name                    IN     VARCHAR2,
405     x_discrepancy_rule_cd               IN     VARCHAR2
406   ) AS
407   /*
408   ||  Created By : pkpatel
409   ||  Created On : 18-JUN-2001
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         src_cat_id,
419         attribute_name,
420         discrepancy_rule_cd
421       FROM  igs_ad_dscp_attr
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;
440     IF (
437     END IF;
438     CLOSE c1;
439 
441         (tlinfo.src_cat_id = x_src_cat_id)
442         AND (tlinfo.attribute_name = x_attribute_name)
443         AND (tlinfo.discrepancy_rule_cd = x_discrepancy_rule_cd)
444        ) THEN
445       NULL;
446     ELSE
447       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
448       igs_ge_msg_stack.add;
449       app_exception.raise_exception;
450     END IF;
451 
452     RETURN;
453 
454   END lock_row;
455 
456 
457   PROCEDURE update_row (
458     x_rowid                             IN     VARCHAR2,
459     x_discrepancy_attr_id               IN     NUMBER,
460     x_src_cat_id                        IN     NUMBER,
461     x_attribute_name                    IN     VARCHAR2,
462     x_discrepancy_rule_cd               IN     VARCHAR2,
463     x_mode                              IN     VARCHAR2 DEFAULT 'R'
464   ) AS
465   /*
466   ||  Created By : pkpatel
467   ||  Created On : 18-JUN-2001
468   ||  Purpose : Handles the UPDATE DML logic for the table.
469   ||  Known limitations, enhancements or remarks :
470   ||  Change History :
471   ||  Who             When            What
472   ||  (reverse chronological order - newest change first)
473   */
474     x_last_update_date           DATE ;
475     x_last_updated_by            NUMBER;
476     x_last_update_login          NUMBER;
477 
478   BEGIN
479 
480     x_last_update_date := SYSDATE;
481     IF (X_MODE = 'I') THEN
482       x_last_updated_by := 1;
483       x_last_update_login := 0;
484     ELSIF (x_mode = 'R') THEN
485       x_last_updated_by := fnd_global.user_id;
486       IF x_last_updated_by IS NULL THEN
487         x_last_updated_by := -1;
488       END IF;
489       x_last_update_login := fnd_global.login_id;
490       IF (x_last_update_login IS NULL) THEN
491         x_last_update_login := -1;
492       END IF;
493     ELSE
494       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
495       igs_ge_msg_stack.add;
496       app_exception.raise_exception;
497     END IF;
498 
499     before_dml(
500       p_action                            => 'UPDATE',
501       x_rowid                             => x_rowid,
502       x_discrepancy_attr_id               => x_discrepancy_attr_id,
503       x_src_cat_id                        => x_src_cat_id,
504       x_attribute_name                    => x_attribute_name,
505       x_discrepancy_rule_cd               => x_discrepancy_rule_cd,
506       x_creation_date                     => x_last_update_date,
507       x_created_by                        => x_last_updated_by,
508       x_last_update_date                  => x_last_update_date,
509       x_last_updated_by                   => x_last_updated_by,
510       x_last_update_login                 => x_last_update_login
511     );
512 
513     UPDATE igs_ad_dscp_attr
514       SET
515         src_cat_id                        = new_references.src_cat_id,
516         attribute_name                    = new_references.attribute_name,
517         discrepancy_rule_cd               = new_references.discrepancy_rule_cd,
518         last_update_date                  = x_last_update_date,
519         last_updated_by                   = x_last_updated_by,
520         last_update_login                 = x_last_update_login
521       WHERE rowid = x_rowid;
522 
523     IF (SQL%NOTFOUND) THEN
524       RAISE NO_DATA_FOUND;
525     END IF;
526 
527   END update_row;
528 
529 
530   PROCEDURE add_row (
531     x_rowid                             IN OUT NOCOPY VARCHAR2,
532     x_discrepancy_attr_id               IN OUT NOCOPY NUMBER,
533     x_src_cat_id                        IN     NUMBER,
534     x_attribute_name                    IN     VARCHAR2,
535     x_discrepancy_rule_cd               IN     VARCHAR2,
536     x_mode                              IN     VARCHAR2 DEFAULT 'R'
537   ) AS
538   /*
539   ||  Created By : pkpatel
540   ||  Created On : 18-JUN-2001
541   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
542   ||  Known limitations, enhancements or remarks :
543   ||  Change History :
544   ||  Who             When            What
545   ||  (reverse chronological order - newest change first)
546   */
547     CURSOR c1 IS
548       SELECT   rowid
549       FROM     igs_ad_dscp_attr
550       WHERE    discrepancy_attr_id               = x_discrepancy_attr_id;
551 
552   BEGIN
553 
554     OPEN c1;
555     FETCH c1 INTO x_rowid;
556     IF (c1%NOTFOUND) THEN
557       CLOSE c1;
558 
559       insert_row (
560         x_rowid,
561         x_discrepancy_attr_id,
562         x_src_cat_id,
563         x_attribute_name,
564         x_discrepancy_rule_cd,
565         x_mode
566       );
567       RETURN;
568     END IF;
569     CLOSE c1;
570 
571     update_row (
572       x_rowid,
573       x_discrepancy_attr_id,
574       x_src_cat_id,
575       x_attribute_name,
576       x_discrepancy_rule_cd,
577       x_mode
578     );
579 
580   END add_row;
581 
582 
583   PROCEDURE delete_row (
584     x_rowid IN VARCHAR2
585   ) AS
586   /*
587   ||  Created By : pkpatel
588   ||  Created On : 18-JUN-2001
592   ||  Who             When            What
589   ||  Purpose : Handles the DELETE DML logic for the table.
590   ||  Known limitations, enhancements or remarks :
591   ||  Change History :
593   ||  (reverse chronological order - newest change first)
594   */
595   BEGIN
596 
597     before_dml (
598       p_action => 'DELETE',
599       x_rowid => x_rowid
600     );
601 
602     DELETE FROM igs_ad_dscp_attr
603     WHERE rowid = x_rowid;
604 
605     IF (SQL%NOTFOUND) THEN
606       RAISE NO_DATA_FOUND;
607     END IF;
608 
609   END delete_row;
610 
611 
612 END igs_ad_dscp_attr_pkg;