DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_ACCTS_PKG

Source


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