DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_F_TYPE_ACCTS_PKG

Source


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