DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_AP_TAX_PKG

Source


1 PACKAGE BODY igf_ap_tax_pkg AS
2 /* $Header: IGFAI20B.pls 115.7 2002/11/28 13:56:25 nsidana ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igf_ap_tax_all%ROWTYPE;
6   new_references igf_ap_tax_all%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_base_id                           IN     NUMBER      DEFAULT NULL,
12     x_taxes_paid                        IN     NUMBER      DEFAULT NULL,
13     x_agi                               IN     NUMBER      DEFAULT NULL,
14     x_creation_date                     IN     DATE        DEFAULT NULL,
15     x_created_by                        IN     NUMBER      DEFAULT NULL,
16     x_last_update_date                  IN     DATE        DEFAULT NULL,
17     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
18     x_last_update_login                 IN     NUMBER      DEFAULT NULL
19   ) AS
20   /*
21   ||  Created By : brajendr
22   ||  Created On : 01-FEB-2001
23   ||  Purpose : Initialises the Old and New references for the columns of the table.
24   ||  Known limitations, enhancements or remarks :
25   ||  Change History :
26   ||  Who             When            What
27   ||  (reverse chronological order - newest change first)
28   */
29 
30     CURSOR cur_old_ref_values IS
31       SELECT   *
32       FROM     IGF_AP_TAX_ALL
33       WHERE    rowid = x_rowid;
34 
35   BEGIN
36 
37     l_rowid := x_rowid;
38 
39     -- Code for setting the Old and New Reference Values.
40     -- Populate Old Values.
41     OPEN cur_old_ref_values;
42     FETCH cur_old_ref_values INTO old_references;
43     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
44       CLOSE cur_old_ref_values;
45       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
46       igs_ge_msg_stack.add;
47       app_exception.raise_exception;
48       RETURN;
49     END IF;
50     CLOSE cur_old_ref_values;
51 
52     -- Populate New Values.
53     new_references.base_id                           := x_base_id;
54     new_references.taxes_paid                        := x_taxes_paid;
55     new_references.agi                               := x_agi;
56 
57     IF (p_action = 'UPDATE') THEN
58       new_references.creation_date                   := old_references.creation_date;
59       new_references.created_by                      := old_references.created_by;
60     ELSE
61       new_references.creation_date                   := x_creation_date;
62       new_references.created_by                      := x_created_by;
63     END IF;
64 
65     new_references.last_update_date                  := x_last_update_date;
66     new_references.last_updated_by                   := x_last_updated_by;
67     new_references.last_update_login                 := x_last_update_login;
68 
69   END set_column_values;
70 
71 
72   PROCEDURE check_parent_existance AS
73   /*
74   ||  Created By : brajendr
75   ||  Created On : 01-FEB-2001
76   ||  Purpose : Checks for the existance of Parent records.
77   ||  Known limitations, enhancements or remarks :
78   ||  Change History :
79   ||  Who             When            What
80   ||  (reverse chronological order - newest change first)
81   */
82   BEGIN
83 
84     IF (((old_references.base_id = new_references.base_id)) OR
85         ((new_references.base_id IS NULL))) THEN
86       NULL;
87     ELSIF NOT igf_ap_fa_base_rec_pkg.get_pk_for_validation (
88                 new_references.base_id
89               ) THEN
90       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
91       igs_ge_msg_stack.add;
92       app_exception.raise_exception;
93     END IF;
94 
95   END check_parent_existance;
96 
97 
98   FUNCTION get_pk_for_validation (
99     x_base_id                           IN     NUMBER
100   ) RETURN BOOLEAN AS
101   /*
102   ||  Created By : brajendr
103   ||  Created On : 01-FEB-2001
104   ||  Purpose : Validates the Primary Key of the table.
105   ||  Known limitations, enhancements or remarks :
106   ||  Change History :
107   ||  Who             When            What
108   ||  (reverse chronological order - newest change first)
109   */
110     CURSOR cur_rowid IS
111       SELECT   rowid
112       FROM     igf_ap_tax_all
113       WHERE    base_id = x_base_id
114       FOR UPDATE NOWAIT;
115 
116     lv_rowid cur_rowid%RowType;
117 
118   BEGIN
119 
120     OPEN cur_rowid;
121     FETCH cur_rowid INTO lv_rowid;
122     IF (cur_rowid%FOUND) THEN
123       CLOSE cur_rowid;
124       RETURN(TRUE);
125     ELSE
126       CLOSE cur_rowid;
127       RETURN(FALSE);
128     END IF;
129 
130   END get_pk_for_validation;
131 
132 
133   PROCEDURE get_fk_igf_ap_fa_base_rec (
134     x_base_id                           IN     NUMBER
135   ) AS
136   /*
137   ||  Created By : brajendr
138   ||  Created On : 01-FEB-2001
139   ||  Purpose : Validates the Foreign Keys for the table.
140   ||  Known limitations, enhancements or remarks :
141   ||  Change History :
142   ||  Who             When            What
143   ||  masehgal        14-Jun-2002     # 2413695   Changed message to
144   ||                                  'IGF','IGF_AP_TAX_FA_DETAIL_FK'
145   ||  (reverse chronological order - newest change first)
146   */
147     CURSOR cur_rowid IS
148       SELECT   rowid
149       FROM     igf_ap_tax_all
150       WHERE   ((base_id = x_base_id));
151 
152     lv_rowid cur_rowid%RowType;
153 
154   BEGIN
155 
156     OPEN cur_rowid;
157     FETCH cur_rowid INTO lv_rowid;
158     IF (cur_rowid%FOUND) THEN
159       CLOSE cur_rowid;
160       fnd_message.set_name ('IGF','IGF_AP_TAX_FA_DETAIL_FK');
161       igs_ge_msg_stack.add;
162       app_exception.raise_exception;
163       RETURN;
164     END IF;
165     CLOSE cur_rowid;
166 
167   END get_fk_igf_ap_fa_base_rec;
168 
169 
170   PROCEDURE before_dml (
171     p_action                            IN     VARCHAR2,
172     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
173     x_base_id                           IN     NUMBER      DEFAULT NULL,
174     x_taxes_paid                        IN     NUMBER      DEFAULT NULL,
175     x_agi                               IN     NUMBER      DEFAULT NULL,
176     x_creation_date                     IN     DATE        DEFAULT NULL,
177     x_created_by                        IN     NUMBER      DEFAULT NULL,
178     x_last_update_date                  IN     DATE        DEFAULT NULL,
179     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
180     x_last_update_login                 IN     NUMBER      DEFAULT NULL
181   ) AS
182   /*
183   ||  Created By : brajendr
184   ||  Created On : 01-FEB-2001
185   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
186   ||            Trigger Handlers for the table, before any DML operation.
187   ||  Known limitations, enhancements or remarks :
188   ||  Change History :
189   ||  Who             When            What
190   ||  (reverse chronological order - newest change first)
191   */
192   BEGIN
193 
194     set_column_values (
195       p_action,
196       x_rowid,
197       x_base_id,
198       x_taxes_paid,
199       x_agi,
200       x_creation_date,
201       x_created_by,
202       x_last_update_date,
203       x_last_updated_by,
204       x_last_update_login
205     );
206 
207     IF (p_action = 'INSERT') THEN
208       -- Call all the procedures related to Before Insert.
209       IF ( get_pk_for_validation(
210              new_references.base_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       check_parent_existance;
218     ELSIF (p_action = 'UPDATE') THEN
219       -- Call all the procedures related to Before Update.
220       check_parent_existance;
221     ELSIF (p_action = 'VALIDATE_INSERT') THEN
222       -- Call all the procedures related to Before Insert.
223       IF ( get_pk_for_validation (
224              new_references.base_id
225            )
226          ) THEN
227         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
228         igs_ge_msg_stack.add;
229         app_exception.raise_exception;
230       END IF;
231     END IF;
232 
233   END before_dml;
234 
235 
236   PROCEDURE insert_row (
237     x_rowid                             IN OUT NOCOPY VARCHAR2,
238     x_base_id                           IN     NUMBER,
239     x_taxes_paid                        IN     NUMBER,
240     x_agi                               IN     NUMBER,
241     x_mode                              IN     VARCHAR2 DEFAULT 'R'
242   ) AS
243   /*
244   ||  Created By : brajendr
245   ||  Created On : 01-FEB-2001
246   ||  Purpose : Handles the INSERT DML logic for the table.
247   ||  Known limitations, enhancements or remarks :
248   ||  Change History :
249   ||  Who             When            What
250   ||  (reverse chronological order - newest change first)
251   */
252     CURSOR c IS
253       SELECT   rowid
254       FROM     igf_ap_tax_all
255       WHERE    base_id                           = x_base_id;
256 
257     x_last_update_date           DATE;
258     x_last_updated_by            NUMBER;
259     x_last_update_login          NUMBER;
260 
261     l_org_id                     igf_ap_tax_all.org_id%TYPE  DEFAULT igf_aw_gen.get_org_id;
262 
263   BEGIN
264 
265     x_last_update_date := SYSDATE;
266     IF (x_mode = 'I') THEN
267       x_last_updated_by := 1;
268       x_last_update_login := 0;
269     ELSIF (x_mode = 'R') THEN
270       x_last_updated_by := fnd_global.user_id;
271       IF (x_last_updated_by IS NULL) THEN
272         x_last_updated_by := -1;
273       END IF;
274       x_last_update_login := fnd_global.login_id;
275       IF (x_last_update_login IS NULL) THEN
276         x_last_update_login := -1;
277       END IF;
278     ELSE
279       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
280       igs_ge_msg_stack.add;
281       app_exception.raise_exception;
282     END IF;
283 
284     before_dml(
285       p_action                            => 'INSERT',
286       x_rowid                             => x_rowid,
287       x_base_id                           => x_base_id,
288       x_taxes_paid                        => x_taxes_paid,
289       x_agi                               => x_agi,
290       x_creation_date                     => x_last_update_date,
291       x_created_by                        => x_last_updated_by,
292       x_last_update_date                  => x_last_update_date,
293       x_last_updated_by                   => x_last_updated_by,
294       x_last_update_login                 => x_last_update_login
295     );
296 
297     INSERT INTO igf_ap_tax_all (
298       base_id,
299       taxes_paid,
300       agi,
301       creation_date,
302       created_by,
303       last_update_date,
304       last_updated_by,
305       last_update_login,
306       org_id
307     ) VALUES (
308       new_references.base_id,
309       new_references.taxes_paid,
310       new_references.agi,
311       x_last_update_date,
312       x_last_updated_by,
313       x_last_update_date,
314       x_last_updated_by,
315       x_last_update_login,
316       l_org_id
317     );
318 
319     OPEN c;
320     FETCH c INTO x_rowid;
321     IF (c%NOTFOUND) THEN
322       CLOSE c;
323       RAISE NO_DATA_FOUND;
324     END IF;
325     CLOSE c;
326 
327   END insert_row;
328 
329 
330   PROCEDURE lock_row (
331     x_rowid                             IN     VARCHAR2,
332     x_base_id                           IN     NUMBER,
333     x_taxes_paid                        IN     NUMBER,
334     x_agi                               IN     NUMBER
335   ) AS
336   /*
337   ||  Created By : brajendr
338   ||  Created On : 01-FEB-2001
339   ||  Purpose : Handles the LOCK mechanism for the table.
340   ||  Known limitations, enhancements or remarks :
341   ||  Change History :
342   ||  Who             When            What
343   ||  (reverse chronological order - newest change first)
344   */
345     CURSOR c1 IS
346       SELECT
347         taxes_paid,
348         agi,
349         org_id
350       FROM  igf_ap_tax_all
351       WHERE rowid = x_rowid
352       FOR UPDATE NOWAIT;
353 
354     tlinfo c1%ROWTYPE;
355 
356 
357   BEGIN
358 
359     OPEN c1;
360     FETCH c1 INTO tlinfo;
361     IF (c1%notfound) THEN
362       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
363       igs_ge_msg_stack.add;
364       CLOSE c1;
365       app_exception.raise_exception;
366       RETURN;
367     END IF;
368     CLOSE c1;
369 
370     IF (
371         (tlinfo.taxes_paid = x_taxes_paid)
372         AND (tlinfo.agi = x_agi)
373        ) THEN
374       NULL;
375     ELSE
376       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
377       igs_ge_msg_stack.add;
378       app_exception.raise_exception;
379     END IF;
380 
381     RETURN;
382 
383   END lock_row;
384 
385 
386   PROCEDURE update_row (
387     x_rowid                             IN     VARCHAR2,
388     x_base_id                           IN     NUMBER,
389     x_taxes_paid                        IN     NUMBER,
390     x_agi                               IN     NUMBER,
391     x_mode                              IN     VARCHAR2 DEFAULT 'R'
392   ) AS
393   /*
394   ||  Created By : brajendr
395   ||  Created On : 01-FEB-2001
396   ||  Purpose : Handles the UPDATE DML logic for the table.
397   ||  Known limitations, enhancements or remarks :
398   ||  Change History :
399   ||  Who             When            What
400   ||  (reverse chronological order - newest change first)
401   */
402     x_last_update_date           DATE ;
403     x_last_updated_by            NUMBER;
404     x_last_update_login          NUMBER;
405 
406 
407   BEGIN
408 
409     x_last_update_date := SYSDATE;
410     IF (X_MODE = 'I') THEN
411       x_last_updated_by := 1;
412       x_last_update_login := 0;
413     ELSIF (x_mode = 'R') THEN
414       x_last_updated_by := fnd_global.user_id;
415       IF x_last_updated_by IS NULL THEN
416         x_last_updated_by := -1;
417       END IF;
418       x_last_update_login := fnd_global.login_id;
419       IF (x_last_update_login IS NULL) THEN
420         x_last_update_login := -1;
421       END IF;
422     ELSE
423       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
424       igs_ge_msg_stack.add;
425       app_exception.raise_exception;
426     END IF;
427 
428     before_dml(
429       p_action                            => 'UPDATE',
430       x_rowid                             => x_rowid,
431       x_base_id                           => x_base_id,
432       x_taxes_paid                        => x_taxes_paid,
433       x_agi                               => x_agi,
434       x_creation_date                     => x_last_update_date,
435       x_created_by                        => x_last_updated_by,
436       x_last_update_date                  => x_last_update_date,
437       x_last_updated_by                   => x_last_updated_by,
438       x_last_update_login                 => x_last_update_login
439     );
440 
441     UPDATE igf_ap_tax_all
442       SET
443         taxes_paid                        = new_references.taxes_paid,
444         agi                               = new_references.agi,
445         last_update_date                  = x_last_update_date,
446         last_updated_by                   = x_last_updated_by,
447         last_update_login                 = x_last_update_login
448       WHERE rowid = x_rowid;
449 
450     IF (SQL%NOTFOUND) THEN
451       RAISE NO_DATA_FOUND;
452     END IF;
453 
454   END update_row;
455 
456 
457   PROCEDURE add_row (
458     x_rowid                             IN OUT NOCOPY VARCHAR2,
459     x_base_id                           IN     NUMBER,
460     x_taxes_paid                        IN     NUMBER,
461     x_agi                               IN     NUMBER,
462     x_mode                              IN     VARCHAR2 DEFAULT 'R'
463   ) AS
464   /*
465   ||  Created By : brajendr
466   ||  Created On : 01-FEB-2001
467   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
468   ||  Known limitations, enhancements or remarks :
469   ||  Change History :
470   ||  Who             When            What
471   ||  (reverse chronological order - newest change first)
472   */
473     CURSOR c1 IS
474       SELECT   rowid
475       FROM     igf_ap_tax_all
476       WHERE    base_id                           = x_base_id;
477 
478   BEGIN
479 
480     OPEN c1;
481     FETCH c1 INTO x_rowid;
482     IF (c1%NOTFOUND) THEN
483       CLOSE c1;
484 
485       insert_row (
486         x_rowid,
487         x_base_id,
488         x_taxes_paid,
489         x_agi,
490         x_mode
491       );
492       RETURN;
493     END IF;
494     CLOSE c1;
495 
496     update_row (
497       x_rowid,
498       x_base_id,
499       x_taxes_paid,
500       x_agi,
501       x_mode
502     );
503 
504   END add_row;
505 
506 
507   PROCEDURE delete_row (
508     x_rowid IN VARCHAR2
509   ) AS
510   /*
511   ||  Created By : brajendr
512   ||  Created On : 01-FEB-2001
513   ||  Purpose : Handles the DELETE DML logic for the table.
514   ||  Known limitations, enhancements or remarks :
515   ||  Change History :
516   ||  Who             When            What
517   ||  (reverse chronological order - newest change first)
518   */
519   BEGIN
520 
521     before_dml (
522       p_action => 'DELETE',
523       x_rowid => x_rowid
524     );
525 
526     DELETE FROM igf_ap_tax_all
527     WHERE rowid = x_rowid;
528 
529     IF (SQL%NOTFOUND) THEN
530       RAISE NO_DATA_FOUND;
531     END IF;
532 
533   END delete_row;
534 
535 
536 END igf_ap_tax_pkg;