DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_UNIT_ACCTS_PKG

Source


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