DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_HIER_ACCOUNTS_PKG

Source


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