DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_APCTR_RU_PKG

Source


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