DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_AP_PERS_NOTE_PKG

Source


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