DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_1098T_BATCHS_PKG

Source


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