DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_GR_RFMS_BATCH_PKG

Source


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